{"version":3,"sources":["components/Features/protected/InterestedParties/styles.module.scss","utils/translations/es.js","components/AppRoot/Navigation/Header/my529LogoColorsTransp.png","components/AppRoot/Navigation/AppTour/WelcomeScreen.svg","components/Features/public/InterestedPartiesActivation/LoginIp/styles.module.scss","components/Features/protected/Accounts/UpcomingTransactions/styles.module.scss","components/Features/protected/TransactionsHub/UpcomingSchedules/styles.module.scss","components/AppRoot/Navigation/Sidenav/ThirtPartyWarningModal/styles.module.scss","components/Features/protected/Home/Overview/image/butterfly.svg","components/Features/protected/Home/AccessCardBanner/AccessCardBanner.png","components/Features/protected/Home/AccessCardBanner/MobileAccessCardBanner.png","components/Features/protected/MyInfo/PhoneNumbersCard/styles.module.scss","components/Features/protected/MyInfo/DeliveryMethodsComp/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/DualPushButtonSwitch/styles.module.scss","components/Features/protected/Payments/GiactRejectionModal/styles.module.scss","components/Features/protected/Payments/AddBankModal/image/BankCheck.svg","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step0WithdrawalType/styles.module.scss","components/Features/protected/Payments/OpenCPScreenshot.png","components/Features/protected/Documents/styles.module.scss","components/Features/protected/PayrollContribution/PayrollTerms/styles.module.scss","components/Features/protected/InterestedParties/LearnMore/styles.module.scss","components/Features/protected/VerifyEmail/ChangeEmailWhileBlocked/styles.module.scss","components/Features/protected/Signup/Welcome/reader.jpg","components/AppRoot/Navigation/AppTour/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step3TermsAndConditions/styles.module.scss","components/Features/protected/Signup/InvestmentOptionStep/styles.module.scss","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/styles.module.scss","components/Features/protected/Accounts/Transactions/OptionChanges/AccountInfo/styles.module.scss","components/Features/public/InterestedPartiesActivation/styles.module.scss","components/Features/protected/Accounts/AccountDetails/CurrentAllocation/styles.module.scss","components/Features/protected/Accounts/AccountDetails/Successors/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/AccountDetailsCard/styles.module.scss","components/AppRoot/Navigation/Header/styles.module.scss","components/AppRoot/Navigation/Sidenav/styles.module.scss","components/Features/protected/Accounts/AccountDetails/ValueDetails/styles.module.scss","components/Features/protected/VerifyEmail/EmailConfirmation.jpg","components/Features/protected/Multifactor/2FAGraphic.png","components/AppRoot/styles.scss","utils/ga/analytics.js","utils/helpers/api_handler.js","components/AppRoot/Navigation/constants.js","components/AppRoot/Navigation/actions.js","utils/helpers/error_handler.js","utils/translations/common.js","utils/translations/en.js","utils/helpers/middleware.js","components/Features/protected/Accounts/constants.js","components/AppRoot/StaticResources/constants.js","components/Features/protected/Accounts/reducer.js","components/Features/protected/Gifting/constants.js","components/Features/protected/Gifting/reducer.js","components/Features/protected/Accounts/Transactions/constants.js","components/Features/protected/Accounts/Transactions/Contributions/constants.js","components/Features/protected/Accounts/Transactions/reducer.js","components/Features/protected/Payments/constants.js","components/Features/protected/Payments/reducer.js","components/AppRoot/Navigation/RequiredAccess.js","components/AppRoot/Navigation/reducer.js","components/Features/protected/Accounts/Transactions/Withdrawals/constants.js","components/AppRoot/StaticResources/reducer.js","components/Features/protected/MyInfo/constants.js","components/Features/protected/MyInfo/reducer.js","components/Features/protected/Multifactor/constants.js","components/Features/protected/Multifactor/reducer.js","components/Features/protected/Accounts/Transactions/OptionChanges/constants.js","components/Features/protected/Accounts/Transactions/OptionChanges/reducer.js","components/Features/protected/Signup/constants.js","components/Features/protected/Signup/reducer.js","components/Features/protected/Documents/constants.js","components/Features/protected/Documents/reducer.js","components/Features/protected/PayrollContribution/constants.js","components/Features/protected/PayrollContribution/reducer.js","components/Features/public/ForgotUsername/constants.js","components/Features/public/ForgotUsername/reducer.js","components/Features/public/RegistrationType/constants.js","components/Features/public/RegistrationType/reducer.js","components/Features/protected/Lpoa/reducer.js","components/Features/protected/InterestedParties/constants.js","components/Features/protected/InterestedParties/reducer.js","components/Features/public/LpoaAccount/constants.js","components/Features/public/LpoaAccount/reducer.js","utils/helpers/timer_real_time.js","reducers.js","utils/config/material_ui_theme.js","utils/translations/LanguageHOC.js","components/AppRoot/Navigation/LogoutWarning.js","components/Features/public/PageNotFound/index.js","components/AppRoot/Navigation/ProtectedRoute.js","components/AppRoot/Navigation/PublicRoute.js","components/AppRoot/StaticResources/actions.js","components/AppRoot/Navigation/Header/index.js","utils/helpers/greeting_generator.js","utils/ga/events.js","components/AppRoot/Navigation/Sidenav/SidenavMenuOption/index.js","components/AppRoot/Navigation/Sidenav/index.js","components/AppRoot/Navigation/NotificationsDrawer/index.js","components/AppRoot/Navigation/AppTour/index.js","components/Features/public/FormWrapper/index.js","components/Features/Banner/index.js","utils/helpers/registered_device_handler.js","components/Features/public/Login/index.js","components/Features/public/ForgotPassword/index.js","components/Features/public/ForgotPassword/actions.js","components/Features/public/ForgotPassword/constants.js","components/Features/public/RegistrationType/FormWrapper/index.js","components/Features/public/RegistrationType/actions.js","utils/helpers/form_validation.js","components/Features/public/RegistrationType/Register/index.js","components/Features/public/ResendEmail/index.js","components/Features/public/ResetPassword/index.js","components/Features/public/ResetPassword/actions.js","components/Features/public/ResetPassword/constants.js","components/Features/public/ValidateEmail/index.js","components/Features/public/ValidateEmail/actions.js","components/Features/public/ValidateEmail/constants.js","components/Features/public/ForgotUsername/index.js","components/Features/public/ForgotUsername/actions.js","components/Features/public/RegistrationType/SetupUser/index.js","components/Features/public/LpoaAccount/actions.js","components/Features/public/LpoaAccount/AccountEdit/FundAllocationsAndFees/index.js","components/Features/public/LpoaAccount/AccountEdit/PersonInput/index.js","components/Features/public/LpoaAccount/AccountEdit/AddressInput/index.js","components/Features/public/LpoaAccount/AccountEdit/AoContactInput/index.js","components/Features/public/LpoaAccount/AccountEdit/AccountSummary/LearnMore/index.js","components/Features/public/LpoaAccount/AccountEdit/AccountSummary/index.js","components/Features/public/LpoaAccount/AccountEdit/index.js","components/Features/public/LpoaAccount/RSAQuestions/index.js","components/Features/public/LpoaAccount/FirstTermsAndConditions/index.js","components/Features/public/LpoaAccount/SecondTermsAndConditions/index.js","components/Features/public/LpoaAccount/index.js","components/Features/protected/InterestedParties/actions.js","components/Features/public/InterestedPartiesActivation/CreateIpAccount/index.js","components/Features/public/InterestedPartiesActivation/LoginIp/index.js","components/Features/public/InterestedPartiesActivation/index.js","components/Features/protected/Accounts/actions.js","utils/helpers/multifactor_handler.js","components/Features/protected/Accounts/Transactions/actions.js","components/Features/protected/Accounts/AccountDetails/BeneContact/BeneContactForm/index.js","components/Features/protected/Accounts/AccountDetails/BeneContact/UpdateBeneAddressModal/index.js","components/Features/protected/Accounts/AccountDetails/BeneContact/index.js","components/Features/protected/Accounts/AccountDetails/CurrentAllocation/AllocationChart/index.js","components/Features/protected/Accounts/TransactionButtons/index.js","components/Features/protected/Accounts/AccountDetails/CurrentAllocation/index.js","components/Features/protected/Accounts/AccountDetails/Details/PrrCalculator/LearnMore/index.js","components/Features/protected/Accounts/AccountDetails/Details/PrrCalculator/index.js","components/Features/protected/Accounts/AccountDetails/Details/index.js","components/Features/protected/Accounts/AccountDetails/PromoCode/index.js","components/Features/protected/Accounts/AccountDetails/Successors/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/actions.js","components/Features/protected/Multifactor/actions.js","components/Features/protected/Accounts/Transactions/OptionChanges/ViewOptionChange/index.js","components/Features/protected/Accounts/UpcomingTransactions/ViewPendingOptionChange/index.js","components/Features/protected/Accounts/UpcomingTransactions/index.js","utils/helpers/data_filters.js","components/Features/protected/Accounts/AccountDetails/TransactionHistory/TransactionDetails/index.js","components/Features/protected/Accounts/AccountDetails/TransactionHistory/index.js","components/Features/protected/Accounts/AccountDetails/ValueDetails/index.js","components/Features/protected/Accounts/AccountDetails/OptionDetails/index.js","components/Features/protected/Accounts/AccountDetails/index.js","utils/components/Search/index.js","components/Features/protected/Accounts/AccountsSummary/index.js","components/Features/protected/Accounts/index.js","components/Features/protected/TransactionsHub/UpcomingSchedules/index.js","components/Features/protected/TransactionsHub/TransactionHistory/TransactionDetails/index.js","components/Features/protected/TransactionsHub/TransactionHistory/index.js","components/Features/protected/TransactionsHub/TransactionButtons/AccountListDialog/index.js","components/Features/protected/TransactionsHub/TransactionButtons/index.js","components/Features/protected/TransactionsHub/index.js","components/Features/protected/MyInfo/actions.js","components/Features/protected/Home/Overview/BalanceGraph/index.js","utils/components/SkeletonLoader/index.js","components/Features/protected/Home/Overview/BalanceByDate/index.js","components/AppRoot/Navigation/Sidenav/ThirtPartyWarningModal/index.js","components/Features/protected/Home/Overview/index.js","components/Features/protected/Home/AccessCardBanner/index.js","components/Features/protected/Home/PaperlessBanner/index.js","components/Features/protected/Home/index.js","components/Features/protected/Lpoa/LearnMore/index.js","components/Features/protected/Lpoa/BeneTable/index.js","components/Features/protected/Lpoa/EditLpoa/LpoaStepper/index.js","components/Features/protected/Lpoa/constants.js","components/Features/protected/Lpoa/EditLpoa/index.js","components/Features/protected/Lpoa/actions.js","components/Features/protected/Lpoa/index.js","components/Features/protected/Gifting/actions.js","components/Features/protected/Gifting/LearnMore/index.js","components/Features/protected/Gifting/Dashboard/index.js","components/Features/protected/Gifting/CircularProgress/index.js","components/Features/protected/Gifting/Manage/index.js","components/Features/protected/MyInfo/PersistentDrawers/index.js","components/Features/protected/MyInfo/AddressCard/index.js","components/Features/protected/MyInfo/EmailCard/index.js","components/Features/protected/MyInfo/PasswordCard/index.js","components/Features/protected/MyInfo/PhoneNumbersCard/index.js","components/Features/protected/MyInfo/UsernameCard/index.js","components/Features/protected/MyInfo/DeliveryMethodsComp/index.js","components/Features/protected/Multifactor/Registration/RegisterPhone/index.js","components/Features/protected/Multifactor/Registration/RegisterAuthenticator/index.js","components/Features/protected/Multifactor/Registration/Register/index.js","components/Features/protected/MyInfo/MultifactorCard/index.js","components/Features/protected/MyInfo/MyInfoToggles/index.js","components/Features/protected/MyInfo/helpers.js","components/Features/protected/MyInfo/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/OptionChangeDetails/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/AccountsInGroupNotice.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/StepComponents/Step1OptionCategory.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/StepComponents/Step2SelectPredefinedOption.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/StepComponents/Step2CreateCustomizedOption.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/TermsAndConditions.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/StepComponents/Step3Submit.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/StepComponents/Step4PrintReview.js","components/Features/protected/Accounts/Transactions/TransactionStepper/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/constants.js","components/Features/protected/Accounts/Transactions/OptionChanges/NewOptions/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/AccountInfo/index.js","components/Features/protected/Accounts/Transactions/OptionChanges/index.js","components/Features/protected/Accounts/Transactions/Transfers/AccountDetailsCard/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/DualPushButtonSwitch/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/typeConstants.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/formatAccountDisplayText.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TargetAccount/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferStepOneContent/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferTermsAndConditions/index.js","components/Features/protected/Accounts/Transactions/Transfers/Transfer/index.js","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/FullBalanceDialog.js","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/OptionChangeDialog.js","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/LearnMore/index.js","components/Features/protected/Accounts/Transactions/Transfers/index.js","components/Features/protected/Payments/actions.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/Step0Amount.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/Step1DateAndBank.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/ReviewDetails.js","components/Features/protected/Accounts/Transactions/Contributions/TermsCondition/index.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/Step2Terms.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/Step3PrintReview.js","components/Features/protected/Accounts/Transactions/Contributions/OneTime/index.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/Step0AmountAndBank.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/Step1Frequency.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/ReviewDetails.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/Step2Terms.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/Step3PrintReview.js","components/Features/protected/Accounts/Transactions/Contributions/Recurring/index.js","components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/Step0AmountAndDate.js","components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/Step1Bank.js","components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/ReviewDetails.js","components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/Step2Terms.js","components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/Step3PrintReview.js","components/Features/protected/Accounts/Transactions/Contributions/Special/index.js","components/Features/protected/Payments/GiactRejectionModal/index.js","components/Features/protected/Payments/AddBankModal/index.js","components/Features/protected/Accounts/Transactions/Contributions/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/AccountsInGroup/index.js","utils/helpers/sanitation.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step0WithdrawalType/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step1Recipient/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step2AmountDate/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/UpdateAgentAddressModal/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/CheckAddress.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/PaymentInfo.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/School.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step2PaymentMethod/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/BankInfo.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step3Print/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step3TermsAndConditions/index.js","components/Features/protected/Accounts/Transactions/SchoolSearch/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/WithdrawalDetails/index.js","components/Features/protected/Accounts/Transactions/Withdrawals/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step1Amount/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step2Recipient/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Review/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step3Terms/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step4Print/index.js","components/Features/protected/Accounts/Transactions/WithdrawalRequests/index.js","components/Features/protected/Accounts/Transactions/index.js","components/Features/protected/Payments/EditBankModal/index.js","components/Features/protected/Payments/BankAccountsLearnMore/index.js","components/Features/protected/Payments/AccessCardsLearnMore/index.js","components/Features/protected/Payments/ValidationStartModal/index.js","components/Features/protected/Payments/ValidationFinishModal/index.js","components/Features/protected/Payments/index.js","components/Features/protected/Documents/actions.js","components/Features/protected/Documents/CertificateEditModal/index.js","components/Features/protected/Documents/index.js","components/Features/protected/PayrollContribution/Instructions/index.js","components/Features/protected/PayrollContribution/PayrollTerms/index.js","components/Features/protected/PayrollContribution/AddNonAgentAccount/index.js","components/Features/protected/PayrollContribution/actions.js","components/Features/protected/PayrollContribution/index.js","components/Features/protected/InterestedParties/AddIp/index.js","components/Features/protected/InterestedParties/DeleteIp/index.js","components/Features/protected/InterestedParties/EditIp/index.js","components/Features/protected/InterestedParties/LearnMore/index.js","components/Features/protected/InterestedParties/index.js","components/Features/protected/VerifyEmail/ChangeEmailWhileBlocked/index.js","components/Features/protected/VerifyEmail/AddMissingEmailWhileBlocked/index.js","components/Features/protected/VerifyEmail/index.js","components/Features/protected/Multifactor/Registration/VerifyIdentity/index.js","components/Features/protected/Multifactor/Registration/Confirmation/index.js","components/Features/protected/Multifactor/Registration/Welcome/index.js","components/Features/protected/Multifactor/index.js","components/Features/protected/Signup/actions.js","components/Features/protected/Signup/AccountOwnerStep/index.js","components/Features/protected/Signup/BeneficiaryStep/index.js","components/Features/protected/Signup/Summary/index.js","components/Features/protected/Signup/ConfirmationStep/index.js","components/Features/protected/Signup/InvestmentOptionStep/index.js","components/Features/protected/Signup/ReviewStep/index.js","components/Features/protected/Signup/TermsConditionsStep/index.js","components/Features/protected/Signup/Welcome/index.js","components/Features/protected/Signup/index.js","components/Features/protected/AddBirthdate/index.js","components/Features/protected/Accounts/Transactions/PreflightLoader/index.js","components/Features/protected/Multifactor/Authentication/index.js","components/Features/protected/Multifactor/AuthyDown/index.js","components/Features/protected/Multifactor/RSA/index.js","utils/helpers/title_handler.js","utils/helpers/error_boundary.js","components/Features/protected/Accounts/AccountDetails/ViewInvestmentPath/index.js","components/AppRoot/Navigation/ScrollToTop.js","components/AppRoot/Navigation/index.js","utils/helpers/state_handler.js","components/AppRoot/index.js","index.js","utils/translations/en.module.css","components/Features/protected/Accounts/AccountDetails/Details/PrrCalculator/styles.module.scss","components/Features/protected/Accounts/AccountDetails/Details/styles.module.scss","components/Features/protected/Lpoa/EditLpoa/styles.module.scss","components/AppRoot/Navigation/NotificationsDrawer/styles.module.scss","components/Features/protected/Home/Overview/BalanceByDate/styles.module.scss","components/Features/protected/MyInfo/PersistentDrawers/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step3Print/styles.module.scss","components/Features/protected/Signup/BeneficiaryStep/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/Step2AmountDate/styles.module.scss","components/Features/protected/Multifactor/Registration/VerifyIdentity/styles.module.scss","components/Features/protected/Home/styles.module.scss","components/Features/protected/Multifactor/Registration/RegisterAuthenticator/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/styles.module.scss","components/Features/protected/Signup/AccountOwnerStep/styles.module.scss","components/Features/protected/Multifactor/RSA/styles.module.scss","components/Features/public/Login/styles.module.scss","components/Features/public/LpoaAccount/styles.module.scss","components/Features/protected/Home/Overview/BalanceGraph/styles.module.scss","components/Features/protected/Lpoa/styles.module.scss","components/Features/protected/Multifactor/Registration/Register/styles.module.scss","components/Features/protected/PayrollContribution/AddNonAgentAccount/styles.module.scss","components/Features/protected/TransactionsHub/TransactionButtons/AccountListDialog/styles.module.scss","components/Features/protected/Signup/Welcome/styles.module.scss","components/Features/protected/TransactionsHub/styles.module.scss","components/Features/public/RegistrationType/FormWrapper/styles.module.scss","components/Features/protected/Accounts/AccountDetails/BeneContact/styles.module.scss","components/Features/protected/Accounts/AccountDetails/Details/PrrCalculator/LearnMore/styles.module.scss","components/Features/protected/Accounts/styles.module.scss","components/Features/protected/Home/PaperlessBanner/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Transfer/styles.module.scss","components/AppRoot/Navigation/styles.module.scss","utils/ga/helpers.js","components/Features/protected/Accounts/AccountDetails/TransactionHistory/styles.module.scss","components/Features/protected/TransactionsHub/TransactionHistory/styles.module.scss","components/Features/protected/MyInfo/MultifactorCard/styles.module.scss","components/Features/protected/Accounts/Transactions/TransactionStepper/styles.module.scss","components/Features/protected/Accounts/Transactions/OptionChanges/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TargetAccount/styles.module.scss","utils/config/_sassconfig.scss","components/Features/protected/Accounts/Transactions/styles.module.scss","components/Features/public/ResendEmail/styles.module.scss","components/Features/public/LpoaAccount/AccountEdit/AccountSummary/LearnMore/styles.module.scss","components/Features/public/LpoaAccount/RSAQuestions/styles.module.scss","components/Features/protected/Accounts/AccountDetails/BeneContact/BeneContactForm/styles.module.scss","components/Features/protected/Accounts/AccountDetails/TransactionHistory/TransactionDetails/styles.module.scss","components/Features/protected/Accounts/AccountDetails/OptionDetails/styles.module.scss","components/Features/protected/TransactionsHub/TransactionHistory/TransactionDetails/styles.module.scss","components/Features/protected/Lpoa/LearnMore/styles.module.scss","components/Features/protected/Lpoa/EditLpoa/LpoaStepper/styles.module.scss","components/Features/protected/Gifting/LearnMore/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/styles.module.scss","components/Features/protected/Payments/AddBankModal/styles.module.scss","components/Features/protected/Accounts/Transactions/Contributions/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step1Amount/styles.module.scss","components/Features/protected/Payments/BankAccountsLearnMore/styles.module.scss","components/Features/protected/Payments/AccessCardsLearnMore/styles.module.scss","components/Features/public/LpoaAccount/AccountEdit/styles.module.scss","components/Features/protected/Multifactor/Authentication/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Transfer/TransferTermsAndConditions/styles.module.scss","components/Features/protected/PayrollContribution/styles.module.scss","components/Features/public/RegistrationType/Register/styles.module.scss","components/Features/protected/Accounts/UpcomingTransactions/ViewPendingOptionChange/styles.module.scss","components/Features/protected/TransactionsHub/TransactionButtons/styles.module.scss","components/Features/protected/Home/AccessCardBanner/styles.module.scss","components/Features/protected/Accounts/Transactions/Contributions/Special/styles.module.scss","components/Features/protected/Accounts/Transactions/OptionChanges/OptionChangeDetails/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Review/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step3Terms/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step4Print/styles.module.scss","components/Features/protected/Payments/ValidationFinishModal/styles.module.scss","components/Features/protected/Signup/ConfirmationStep/styles.module.scss","components/Features/protected/AddBirthdate/styles.module.scss","components/Features/protected/Payments/styles.module.scss","components/Features/protected/Gifting/Manage/styles.module.scss","components/Features/protected/Accounts/Transactions/Contributions/Recurring/styles.module.scss","components/Features/protected/MyInfo/styles.module.scss","components/Features/protected/Accounts/Transactions/Contributions/OneTime/styles.module.scss","components/Features/public/PageNotFound/styles.module.scss","components/Features/public/FormWrapper/styles.module.scss","components/Features/public/ValidateEmail/styles.module.scss","components/Features/public/LpoaAccount/FirstTermsAndConditions/styles.module.scss","components/Features/public/LpoaAccount/SecondTermsAndConditions/styles.module.scss","components/Features/protected/Accounts/AccountDetails/PromoCode/styles.module.scss","utils/components/Search/styles.module.scss","components/Features/protected/MyInfo/AddressCard/styles.module.scss","components/Features/protected/Accounts/Transactions/Transfers/Dialogs/LearnMore/styles.module.scss","components/Features/protected/Accounts/Transactions/Contributions/TermsCondition/styles.module.scss","components/Features/protected/PayrollContribution/Instructions/styles.module.scss","components/Features/protected/InterestedParties/AddIp/styles.module.scss","components/Features/protected/Multifactor/styles.module.scss","components/Features/protected/Signup/ReviewStep/styles.module.scss","components/Features/protected/Signup/TermsConditionsStep/styles.module.scss","components/Features/protected/Signup/styles.module.scss","components/Features/protected/Accounts/Transactions/PreflightLoader/styles.module.scss","components/Features/protected/Multifactor/AuthyDown/styles.module.scss","components/Features/protected/Signup/Summary/styles.module.scss","components/Features/protected/Accounts/AccountsSummary/styles.module.scss","components/Features/protected/Accounts/AccountDetails/styles.module.scss","components/Features/protected/Gifting/Dashboard/styles.module.scss","components/Features/Banner/styles.module.scss","components/Features/public/ForgotPassword/styles.module.scss","components/Features/public/ResetPassword/styles.module.scss","components/Features/public/ForgotUsername/styles.module.scss","components/Features/public/InterestedPartiesActivation/CreateIpAccount/styles.module.scss","components/Features/protected/Accounts/AccountDetails/CurrentAllocation/AllocationChart/styles.module.scss","components/Features/protected/MyInfo/EmailCard/styles.module.scss","components/Features/protected/Multifactor/Registration/RegisterPhone/styles.module.scss","components/Features/protected/Accounts/Transactions/WithdrawalRequests/Step2Recipient/styles.module.scss","components/Features/protected/Documents/CertificateEditModal/styles.module.scss","components/Features/protected/MyInfo/MyInfoToggles/styles.module.scss","components/Features/protected/VerifyEmail/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/WithdrawalDetails/styles.module.scss","components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/styles.module.scss","components/Features/protected/Lpoa/BeneTable/styles.module.scss","components/Features/protected/Home/Overview/styles.module.scss"],"names":["module","exports","buttons","errors","intl_address","unsaved_changes","AccountDetails","head_account_number","head_account_type","head_current_tax_year_contributions","head_earnings","head_investment_option","head_mailing_address","head_netPrincipal","head_other_address","head_physical_address","head_prior_tax_year_contributions","head_remaining_option_changes","head_title","head_title_account_details","head_title_activity_summary","head_title_beneficiary_contact","head_total_value","nav_path","accountId","text_none","AccountOwnerCard","lbl_first_name","lbl_last_name","lbl_middle_name","lbl_utah_resident","msg_residency_saved","Accounts","nav_title","AccountsSummary","head_title_plural","AddressCard","btn_delete","addressType","btn_update","err_postal_code_length","err_required","msg_address_deleted","msg_address_updated","msg_unsaved_changes","text_intl_address","BeneContactCard","default_title","EmailCard","lbl_email","ForgotPassword","btn_cancel","btn_submit","err_password","err_username","msg_success","text_instructions","text_username","ForgotUsername","Header","text_browser_warning","text_mobile_warning","Login","btn_login","lbl_password","lbl_username","msg_you_have_logged_out","nav_forgot_password","nav_forgot_username","MyInfo","head_utah_resident","text_residency_mismatch","Navigation","menu_english","menu_spanish","text_previous_login","menu_log_out","menu_profile","text_version","PageNotFound","btn_back_to_accounts","text_oops","PasswordCard","btn_change_password","err_password_criteria","err_confirm_password","msg_password_updated","lbl_current_password","lbl_new_password","lbl_confirm_password","PhoneNumbersCard","btn_change_phone","lbl_cell","lbl_fax","lbl_home","lbl_other","lbl_work","msg_phone_numbers_updated","ResetPassword","err_password_match","err_password_required","msg_password_changed","text_new_password","text_confirm_password","SuccessorsCard","btn_add_successor","type","btn_change_successor","btn_close","err_age_limits","minAge","maxAge","head_remove_successor","lbl_birth_date","lbl_ssn","lbl_successor","menu_new_successor","msg_successor_added","msg_successor_changed","msg_successor_removed","text_confirm_remove_successor","first","mid","last","text_successor_to_trust","UsernameCard","ValidateEmail","ga","window","stripQuery","queryDimensionIndex","indexFilename","trailingSlash","urlFieldsFilter","fieldsObj","parseUrl","page","urlScrub","pathname","frontendConfig","configureRequest","apiPath","token","sessionStorage","getItem","axios","defaults","headers","common","Authorization","post","api","GETrequest","config","endPoint","get","then","res","catch","err","response","POSTrequest","data","PUTrequest","put","DELETErequest","delete","GETaddress","searchCriteria","length","Promise","reject","GETRecaptchaToken","action","RECAPTCHA_KEY","location","host","includes","process","resolve","grecaptcha","ready","execute","INITIALIZE_STORE","BROWSER_WARNING","USER_LOGIN","CHANGE_USERNAME","VERIFY_RECAPTCHA","LANGUAGE_CHANGE","USER_REGISTRATION","USER_REG_INFO_SYNC","REFRESH_CLAIMS","RESET_CLAIMS","TOGGLE_SIDENAV","TOGGLE_NOTIFICATIONS","SET_NOTIFICATIONS_VIEWED","TWO_FACTOR_PRECONDITION","RSA_PRECONDITION","TOGGLE_2FA_DIALOG","TOGGLE_AUTHYDOWN_DIALOG","TOGGLE_RSA_DIALOG","GET_USER_PREFERENCES","SAVE_USER_PREFERENCES","GET_NOTIFICATIONS","TWO_FACTOR_ROUTE_CHANGE","DISABLE_LEFT_MENU","TOGGLE_SPLASH_HAS_DISPLAYED","REASONS_BLOCKED","TWO_FACTOR_STATUS","RSA_STATUS","MULTIFACTOR_TYPE","TWO_FACTOR_TYPES","NOTIFICATION_TYPES","userLogout","params","scriptToDelete","document","getElementById","parentNode","removeChild","payload","clearStore","changeLanguage","language","meta","verifyRecaptcha","recaptchaToken","Token","refreshClaims","resetClaims","toggleSidenav","isOpen","toggleNotifications","toggle2FADialog","toggleAuthyDownDialog","toggleRSADialog","get2FAPrecondition","isWithdrawal","getRSAPrecondition","saveUserPreferences","preferences","getNotifications","twoFaRouteChange","route","persistClientErrors","error","state","store","getState","minimizedState","session","url","href","browser","vendor","navigator","version","appVersion","StackTrace","JSON","stringify","StateData","console","warn","age_limits","amount_invalid","copy_email","copy_ssn_tin","date_invalid","date_limits","minDate","maxDate","email_invalid","emails_must_match","field_max_length_20","field_max_length_40","no_trailing_leading_spaces","no_spaces_anywhere","password_criteria","passwords_match","phone_number_too_short","postal_code_reqs","required","school_required","select_option","smarty_streets_generic","ssn_length","ssns_tins_must_match","terms_agree","username_min_length","username_with_numbers","alphabetic_and_allowable_characters_only","allowableChars","alpha_numeric_only","alpha_numeric_and_allowable_characters_only","formLabels","address_city","address_postalCode","address_state","address_street1","address_street2","beneUtahTaxPayer","birthdate","clear_state","email","email_confirm","firstName","homePhone","lastName","middleName","password","password_confirm","pin","ssn","tin","username","utahTaxPayer","recaptchaLanguage","fullBalanceWithdrawalNote","msg_available_balance_contribution","English","nav_path_regex","investment_path","action_path","text_name_change_form","AccountOwnerStep","btn_continue","err_copy_ssn","err_phone_number_too_short","err_smarty_streets","err_ssns_must_match","head_account_owner","lbl_birthdate","lbl_clear_state","lbl_firstName","lbl_homePhone","lbl_lastName","lbl_middleName","lbl_ssn_tin","lbl_ssn_tin_confirm","lbl_utah_tax_payer","msg_ao_info_saved","text_what_is_ao","accounts_path","text_account_closed","TransactionsHub","btn_add_account","btn_csa_account","btn_my529_account","head_beneficiary","head_date_opened","head_interested_party","head_market_date","head_total_accts","head_ytd_return","nav_contribution","nav_option_change","nav_transfer","nav_withdrawal","AccessCardsLearnMore","text_faq","question","answer","className","styles","acard_faq_table","acard_faq_th","acard_faq_td","currencyFormatter","title_learn_more","learn_more_footer","AddBankModal","btn_agree","err_invalid_routing","err_copy","err_routing_length","err_accounts_match","err_allowable_chars","head_modal_title","lbl_account_holder","lbl_account_number","lbl_confirm_account_number","lbl_checking","lbl_nickname","lbl_routing","lbl_savings","msg_account_added","text_required_language_1","text_required_language_2","text_required_language_3","text_required_language_4","text_required_language_5","text_permission_bank_account_holder","AddBirthdate","btn_logout","head_incomplete_records","lbl_submit","msg_birthdate_updated","text_incomplete_records","text_support","supportNumber","parse","AddMissingEmailWhileBlocked","text_missing_email1","text_missing_email2","text_missing_email3","err_street1_max_length","AppTour","btn_back","btn_finish","btn_next","btn_skip","head_more_info","head_nav","head_notifications","head_table_menu","head_table_search","head_transactions","head_welcome","text_dont_show","text_more_info","text_nav","text_notifications","text_table_menu","text_table_search","text_transactions1","text_transactions2","text_transactions3","text_transactions4","text_transactions","text_welcome2","text_welcome","BalanceByDate","btn_filter","lbl_date","text_NA","title_account_numbers","title_bene_names","title_investment_options","BankAccountsLearnMore","text_info_1","text_info_2","text_info_bank_hold","ACHBankWithdrawalLanguage","text_info_3","text_info_4","text_info_5","text_info_6","amount","days","text_info_7","text_info_8","BeneContact","btn_add_address","title_update_bene_address","text_no_address","BeneContactForm","btn_change","err_field_required","err_postal_code","msg_address_changed","BeneficiaryStep","lbl_cancel","cancel","lbl_existing_bene","lbl_mailing_is_same_as_ao","lbl_physical_is_same_as_ao","lbl_relationship","msg_bene_info_saved","text_what_is_bene","ComposableSearch","text_search_suggestion","filterTerm","columnTitle","ConfirmationStep","btn_to_home","head_congratulations","text_account_created","text_account_number","text_add_another_account","Contributions","head_title_account_owner","lbl_one_time","lbl_recurring","lbl_special_occasion","msg_contribution_scheduled","msg_contribution_updated","nav_title_edit","nav_title_new","title_duplicate_contribution","ContributionOneTime","err_account_select","err_bankAccount_select","err_step_does_not_exist","lbl_step_labels","ContributionOneTimeStep0","lbl_add_account","lbl_amount","lbl_remove_account","lbl_selected_account","err_amount_min_max","min","max","text_total","ContributionOneTimeStep1","btn_add_bank","lbl_contribution_date","lbl_bank_account","lbl_add_bank","ContributionOneTimeStep2","lbl_read_terms","ContributionOneTimeStep3","text_print_copy","text_timezone","ContributionOneTimeReview","title_account_number","title_amount","title_bank_account","title_bene_name","title_date","title_total","ContributionRecurring","err_end_date_after_start","err_end_date_after_both","err_second_date_required","err_second_date_within_month","text_end_before_next_run","text_next_run","ContributionRecurringStep0","err_amount_between","minAmount","maxAmount","twiceMonthlyMaxAmount","text_add_new_bank","ContributionRecurringStep1","err_max_date","lbl_first_date","isEditing","monthly","lbl_monthly","lbl_option_end_date","lbl_second_date","lbl_twice_monthly","ContributionRecurringStep2","ContributionRecurringStep3","ContributionRecurringReview","text_scheduled_days","day1","day2","title_end_date","title_next_date","title_scheduled_day","ContributionSpecial","ContributionSpecialStep0","lbl_birthday","lbl_occasion","lbl_optional_end_date","lbl_start_date","text_multiple_annual_events","ContributionSpecialStep1","ContributionSpecialStep2","ContributionSpecialStep3","ContributionSpecialReview","title_next_run_date","ContributionTermsConditions","head_review_terms","text_about_special_occasion","text_about_special","text_bad_accounts_warning","text_bad_accounts","text_check","text_check_requirements","text_notes","text_notes_list1","text_notes_list2","text_notes_list3","text_notes_list4_sublists_special","SupportPhoneNumber","text_notes_list4_sublists_non_special","FaxNumber","text_notes_list5","text_authorize","n_a","ChangeEmailWhileBlocked","text_verify_email1","text_verify_email2","text_verify_email3","CurrentAllocation","btn_chart_toggle","btn_list_toggle","head_account_closed","head_no_info","text_actual_percentage","text_make_contribution","text_target_percentage","text_value","title_actual","title_category","title_value","Details","btn_option_change","head_ppr","marketDate","title_see_PPR","Documents","btn_open_pdf","btn_save","lbl_from_name","msg_certificate_updated","msg_interested_party","nav_path_for_certificate","text_edit_certificate","text_no_documents","title_account_type","title_description","title_download","title_document_type","title_quarter","title_view_additional","title_view_document","title_year","title_edit_certificate","btn_cancel_change_email","btn_change_email","btn_confirm_change_email","btn_confirm_submit_email","btn_resend_email","err_different_email","err_emails_must_match","err_valid_email","head_verify_email","head_missing_email","lbl_current_email","lbl_new_email","lbl_new_email_confirm","msg_check_email_to_verify","text_ip_email_visible_to_ao","EditBankModal","btn_save_nickname","title_modal","msg_recaptcha_language","btn_ok","err_email_required","msg_general","msg_request_submitted","GiactRejectionModal","text_not_authenticated","text_rejection_language_1","text_rejection_language_2","text_rejection_language_3","text_rejection_language_4","target","rel","text_giact_address_1","text_giact_address_2","text_giact_address_3","text_giact_address_4","text_rejection_language_5","text_rejection_language_6","text_rejection_language_7","text_rejection_language_8","Gifting","btn_add","btn_done","btn_email","btn_facebook","btn_learn_more","btn_manage","btn_remove","btn_twitter","lbl_account","lbl_account_owner","lbl_beneficiary","lbl_code","lbl_enabled","lbl_disabled","lbl_hide_last_name","lbl_hidden","lbl_inactive","lbl_no_history","lbl_history","lbl_page_views","lbl_manage_gift","lbl_message","lbl_shown","lbl_social","lbl_status","lbl_url","msg_no_beneficiary","msg_email_subject","name","msg_save","learn_more_title","manage_title","text_copy_link","text_enable_gifting","text_hide_last_name","text_learn_more","text_max_aggregate","text_default_message","text_default_email","link","currentYear","annualGiftExclusionAmount","maximumBeneficiaryDeposit","maximumBenficiaryAccountValueForGift","error_message_empty","error_message_allowed_chars","text_input_placeholder","btn_main_menu","Home","btn_list_view","btn_tile_view","head_accounts","head_overview","head_greeting_morning","head_greeting_afternoon","head_greeting_evening","InterestedParties","btn_add_ip","btn_add_ip_read_terms","btn_agree_terms","btn_delete_ip","btn_edit_ip","err_add_ip_terms_agree","err_copy_email","err_select_account","head_account","head_bene_name","head_delete_ip","head_email","head_email_sent","head_interested_parties","head_name","head_opt_name","head_pin","head_read_only","head_status","lbl_email_confirm","msg_ip_added","msg_ip_deleted","msg_ip_edited","text_add_ip_terms","this","text_confirm_delete_ip","emailAddress","text_faq_answers","text_faq_questions","text_setup_ip_access","text_success","InterestedPartiesActivation","btn_create","btn_i_agree","btn_read_terms","err_required_field","err_terms_agree","head_already_have_account","head_create_account","head_login","head_terms","lbl_firstname","lbl_lastname","lbl_password1","lbl_password2","lbl_pin","msg_change_email_when_logged_in","msg_ip_activated","text_terms","text_toggle_password_vis","InvestmentOptionStep","btn_create_ageBased","btn_create_static","btn_details","btn_edit_ageBased","btn_edit_static","err_must_select_opt","head_enrollmentdate_opts","head_customized_opts","head_investment_opt_disclosures","head_static_opts","msg_cannot_select_opt","msg_investment_opt_saved","msg_total_allocations_ageBased","msg_total_allocations_static","text_about_investment_opts","text_customized_details1","text_customized_details2","text_customized_review_performance","text_customized_summary","text_enrollmentdate_details1","text_enrollmentdate_details2","text_enrollmentdate_details3","text_enrollmentdate_summary","text_options_on_mobile","text_static_details1","text_static_details2","text_static_details3","text_static_summary","text_disclosures","programDescription","title_options_on_mobile","btn_create_account","btn_fa_login_link","password_length","username_length","nav_password","nav_username","nav_no_login","nav_setup_user","btn_toggle_password","Lpoa","btn_confirm","btn_edit","btn_add_edit","btn_add_edit_help_txt","btn_revoke","btn_unlink","checkbox_select_bene_alt_text","text_yes","text_no","confirm_correct_lpoa_txt","enter_auth_code_txt","terms_and_conditions_agree_button_label","text_disabled","checkbox_all_alt_text","table_title","error_auth_code_empty","column_labels","modal_title_revoke_benes","modal_body_revoke_benes","modal_title_unlink_lpoa","authorization_code_title","authorization_code_label","missing_lpoa_level","missing_terms_checked","success_lpoa_updated","edit_lpoa_step_labels","edit_level_table","levels","btn_agree_label","title","lpoa_name_label","span_column_3_4_5_6_title","column_titles","online_phone_text","edit_tax_docs","label","level_3_info_bubble","fed_tax_docs_label","state_tax_docs_label","fed_tax_docs_body","state_tax_docs_body","review_title","review_details","lpoaName","level","beneListFormatted","allowFedTax","allowStateTax","terms_and_conditions_title","terms_and_conditions_body","LpoaAccount","try_again_rsa_txt","reject_modal_confirmation","reject_modal_title","btn_reject","btn_print","btn_setup_login","success_lpoa_account_rejected","success_lpoa_account_approved","confirmation_page","your_account_number","first_paragraph","second_paragraph_setup","setupButtonLabel","second_paragraph_login","loginButtonlabel","account_edit","lpoa_review_title","error_lpoa_account_validate","warning_text_above_buttons","account_owner","mailing_adddress","physical_address","contact","beneficiary","succesor","primary","secondary","account_summary","fund_allocations_title1","fund_allocations_title2","fund_allocations_and_fees","select_age_band_title","age_band_dropdown_label","est_expense_ratio_label","my529_admin_asset_fee_label","ext_total_annual_asset_based_fee_label","fees_info_icon_content","programDescriptionLink","application_date_label","type_label","option_label","poa_level_label","poa_levels","status_label","fed_tax_docs_info_icon_checked","fed_tax_docs_info_icon_unchecked","state_tax_docs_info_icon_checked","state_tax_docs_info_icon_unchecked","promo_code_label","ao_contact","relationship_label","email_label","home_phone_label","work_phone_label","other_phone_label","first_terms_and_conditions","content","second_terms_and_conditions","accept_terms_checkbox_label","label_paperless","msg_paperless","Multifactor","btn_another_method","btn_calling","btn_call_again","btn_change_dob","btn_confirm_dob","btn_continue_aa","btn_enter_token","btn_get_started","btn_register","btn_request_code","btn_resend_code","btn_sec_code","btn_sending","btn_send_newpush","btn_submit_answer","btn_submit_code","btn_submit_questions","btn_submit_token","btn_try_again","btn_use_token","btn_use_phone","btn_verify_dob","btn_verify_identity","err_code_required","err_options","err_incorrect_answer","err_invalid_token","err_token_required","err_verification_code_required","lbl_ao_dob","lbl_ao_name","lbl_call","lbl_invalid_code","lbl_question","lbl_my529_token","lbl_other_options","lbl_present_2FA","lbl_phone_number","lbl_remember_device","lbl_registered","lbl_step1","lbl_step2","lbl_step3","lbl_text","lbl_token","lbl_verification_code","msg_apology","msg_authenticator_download","msg_attempts_remaining","msg_token_attempts_remaining","msg_2FA","msg_2FA_explanation","msg_2FA_phone","msg_2FA_reg_method","msg_2FA_unavailable","msg_2FA_down_apology","msg_congratulations","msg_discrepancy","msg_enter_authenticator","msg_enter_token","msg_get_codes","msg_download_authenticator","msg_maintain_security","msg_protection","msg_not_verified","msg_dob_select","msg_enter_seccode","msg_later_prompt","msg_locked_out","msg_scan_qrcode","msg_successful","msg_resend_successful","msg_rsa_select","msg_security_code","fourDigits","msg_we_sent","msg_we_called","msg_send_security_code","msg_unable_verify","authenticator_path","confirmation_path","phone_path","preferred_path","register_path","register_title","register_phonenumber_label","verify_identity_path","verify_identity_title","learn_more_url","Notifications","text_no_notifications","OptionChanges","NewOptions","step_labels","customized_agebased_option_selection_name","customized_static_option_selection_name","empty_category_selection","empty_option_selection","duplicate_option_selection","agree_to_terms","total_allocations_for_each_bracket_100_percent","total_allocations_100_percent","success_message","OptionDetails","Fragment","nav_path_investment","text_custom","text_enrollment_date","text_static","title_portfolio","title_nav","title_see_more_details","title_symbol","title_units","Overview","err_date_past_today","err_start_after_end","err_end_before_start","lbl_bene_account","multipleSelected","lbl_end_date","lbl_filter_1month","lbl_filter_3month","lbl_filter_6month","lbl_filter_YTD","lbl_filter_1year","lbl_filter_all","lbl_filter_custom","lbl_savings_calculator","lbl_total","text_all_selected","text_no_open_accounts","text_see_more","text_select_all","text_something_wrong","title_close_fullscreen","title_open_fullscreen","ProtectedRoute","msg_logged_out_inactivity","msg_logged_out_inactivity_warning","time","title_logged_out_inactivity_warning","PrrCalculator","prr_not_available","subtitle","rate_of_return_txt","start_date_label","end_date_label","btn_calculate","btn_learnmore","btn_back_to_home","Payments","access_card_url_text","btn_apply_now","btn_deposits_received","btn_renew","btn_validate","head_pending_ach","head_remove_account","head_renew_account","msg_removed","msg_renewed","msg_poa_approved","msg_poa_not_approved","text_account_validated","text_account_not_validated","text_account_on_hold","text_access_card_reqs","text_attempts_exceeded","text_bank_hold_language","text_confirm_remove","maskedBankAccountNumber","text_confirm_renew","text_expiration_warning","expirationDate","text_has_pending_transactions","text_lpoa_switch","text_my529_access_card","text_poa_approved","text_poa_not_approved","text_requirements","text_set_up_accounts","title_access_cards","txt_third_party_warning_access_cards","txt_third_party_disclaimer","txt_third_party_warning_access_cards_footer","openCPLink","txt_third_party_warning_for_info","PayrollContribution","btn_instructions","btn_terms","err_invalid_account","err_print","print","err_total_amount","err_total_percent","head_other_accounts","head_own_accounts","lbl_employee","lbl_employer","lbl_my529_account","lbl_pay_period_contribution","lbl_state","lbl_terms_agree","msg_payroll_saved","msg_payroll_updated","text_add_account","text_current_allocations","text_important_bank_info","title_add_account","title_employer","title_payroll_account","title_payroll_account_type","title_payroll_routing","PayrollInstructions","head_instructions","title_how","text_how1","text_how2","text_how3","text_how4","text_how5","title_provide_to_employer","text_provide1","text_provide2","PayrollTerms","text_terms_authorize","text_intl_phone","msg_phone_number_too_short","msg_warning_changing_phone","Preferences","btn_change_delivery_prefs","btn_view_change_statement_delivery","head_balance","head_birthday","head_delivery_method","head_newsletter","head_notification_preferences","head_official_communications","head_promotional","head_title_change_statement_delivery_prefs","head_title_preferences","head_title_statement_delivery","head_tax_forms","lbl_birthday_notifications","lbl_official_communications","lbl_promotional_info","lbl_promotional_information","lbl_options","lbl_tax_documents_online","lbl_tax_forms","msg_preferences_changed","msg_statement_delivery_changed","text_no_accounts","text_will_not_send_material_for_other","text_tax_document_online_only","text_utah_tax_form_changes","PromoCode","btn_enter_code","lbl_promo_code","Register","dropdown_label","err_max_length_20","err_max_length_40","err_username_cannot_match_pass","err_username_min_length","err_username_spaces","err_username_with_numbers","head_individual_account","head_other_account","head_other_account_by_form","text_i_am_new_to_my529","text_i_have_accounts_with_529","text_account_types_requirement","text_about_form104","text_about_individual_account","text_about_institutional_account","text_about_intl_number","text_about_other_account","text_never_opened_account","text_about_ugma_utma_account","text_already_have_account","text_form104","text_form500","text_i_agree","text_institutional_account","text_intl_number","text_read_terms","text_setup_online_access","text_setup_user","text_terms_bullets","text_ugma_utma_account","ResendEmail","head_confirm_email","msg_email_resent","text_check_inbox","text_support_phone","ReviewStep","head_review","text_review","SetupUser","lbl_dob","lbl_repeat_password","msg_agent_not_found","Sidenav","head_need_help","text_fax","text_loading","text_phone","resources","btn_proceed","lbl_program_description","lbl_forms","lbl_performance","lbl_faqs","title_third_party_warning","Signup","btn_delete_application","head_delete_account_application","lbl_ao_step","lbl_bene_step","lbl_confirmation_step","lbl_investment_step","lbl_review_step","lbl_terms_step","msg_application_deleted","text_delete_application_data","SignupWelcome","head_welcome_back","text_child_reading","text_new_welcome","text_steps_remaining","text_steps_to_complete","text_welcome_back","Successors","err_missing_dob","head_title_primary_successor","head_title_secondary_successor","text_successor_info_hide","Summary","lbl_bene_utah_tax_payer","lbl_city","lbl_postalCode","lbl_street1","lbl_street2","text_customized_ageBased","text_customized_static","TermsConditionsStep","msg_account_created","text_terms_intro","text_read_understand_agree","text_terms1","text_terms2","text_terms3","faxNumber","phoneNumber","text_terms4","TemplateTable","msg_exceeded_max_percentage","msg_exceeds_max_allocation","fundName","maximumAllocation","msg_only_whole_numbers","agreementYear","TransactionHistory","btn_export","btn_open","err_from_after_to","err_to_before_from","lbl_from_date","lbl_to_date","text_acct_number","text_bene_name","text_option","text_basis","text_amount","text_date","text_no_transactions","text_tax_year","text_transaction_type","text_view_details","text_milestone","TransactionDetails","text_portfolio","text_units","text_type","text_bank_name","text_bank_account_number","text_bank_account_type","text_card_number","text_payee_name","text_payment_confirmation","Transactions","btn_transactions","preflight_in_progress_message","transactions_path","edit_path","new_path","withdrawal_path","cancel_transaction_modal_message","transactionType","frequency","message","TRANSACTION_TYPES","CONTRIBUTION","FREQUENCY","MONTHLY","TWICE_MONTHLY","SPECIAL_OCCASION","WITHDRAWAL","transaction_title","OPTION_CHANGE","TRANSFER","WITHDRAWAL_REQUEST","transactionhub_account_list_subtitle","preflight_title_suffix","preflightTitleSuffix","editType","transactionId","groupId","path_new","path_edit","path_view","path","ONE_TIME","TransactionStepper","Transfers","err_accountOwnerSingleAccount","err_custodialFromOtherType","typeName","err_custodialToOtherBeneficiary","err_custodialToOtherType","err_deferredEarningsNotConfirmed","err_destinationAccountMissing","err_fullBalanceNotAllocated","err_invalidAmount","err_invalidPercentage","err_maxGroupBalanceExceeded","beneficiaryName","err_noOptionChangesRemaining","err_noRemainingOptionChanges","err_partialBalancePercentUnderMinimum","err_partialBalancePercentOverMax","err_sourceAccountZeroBalance","err_termsNotChecked","err_totalGreaterThanAvailable","err_totalUnderMinimum","head_account_hash","head_account_option","head_available_balance","head_bene","head_option_change","head_opt_change","head_source_status","lbl_destination_account","lbl_transfer_type","lbl_partial_transfer","lbl_source_account","lbl_leave_open","lbl_transfer_types","lbl_radio_amount","lbl_radio_percentage","lbl_step_select","lbl_step_terms","lbl_step_confirm","msg_balance_info","msg_transfer_created","msg_transfer_updated","nav_path_accounts","nav_path_edit","nav_path_new","nav_transfer_title","isNew","title_transfer_type","title_deferred_earning_confirm","title_full_balance","title_option_change_info","title_destination_account","title_source_account","text_deferred_earning","text_terms_read","text_close_status","willClose","text_full_balance_info","form400","form300","text_option_change_info","text_terms_conditions","WithdrawalRequests","err_max_amount","err_min_amount","err_school_required","err_selection_required","head_account_details","head_amount","head_confirmation","head_recipient","lbl_agree_terms","lbl_confirmation","lbl_fbo","lbl_full_balance","lbl_partial_balance","lbl_student_id","msg_withdrawal_requested","text_3rd_party","text_account_num","text_available_balance_info","text_available_for_withdrawal","text_bene","text_current_opt","text_full_balance_note","text_submitted","text_terms_p1","text_terms_p2","text_terms_p3","text_terms_p4","Withdrawals","total_amount_full_balance","total_amount_full_balance_electronic","msg_available_balance","btn_change_agent_address","btn_change_bene_address","btn_add_school","title_edit_withdrawal","title_new_withdrawal","text_ElectronicSchoolPayment","ElectronicSchoolPayment_fee_msg","ElectronicSchoolPayment_electronic_info","ElectronicSchoolPayment_mail_info","ElectronicSchoolPayment_mail_check","tab_labels","onetime","recurring","amnt_with_fee","min_withdrawal","minWithdrawal","exceeds_access_card_capcity","exceeds_total_available","exceeds_individual_available","amount_type","withdrawal_type","max_withdrawal","maxWithdrawal","sell_date_required","sell_date_valid","max_withdrawal_recurring","maxWithdrawalRecurring","start_date_required","start_date_valid","start_date_enabled","numberOfRollingDays","end_date_required","end_date_valid","recipient_required","state_required","postal_code_required","payment_method_required","payment_method_on_hold","ACHBankWithdrawalDelay","payment_type_required","cutoff_warning","date","poa_bank_modal_body","poa_bank_modal_title","step0_amount_date","sellDateText","isRecurring","partial_balance","more_than_max_p_long","more_than_max_p_short","listItem1","html_listItem2_more_than_max","uncollected_funds_text","continue_btn_label","currency_input_label","proportional_amounts","accountNumber","sell_date_label","step3_terms_and_conditions","title_help","p1","text1","text2","p2","p3","p4","text3","agree_btn_label","messages","id","ao_school_address_modal_title","bene_school_address_modal_title","retained_school_address_txt","ugmautma_check_only_txt","withdraw_funds_modal","modal_title","listItem2","p_all_accts_disabled","table_column1_title","table_column2_title","table_column3_title","btn_one_acct_label","btn_all_accts_label_short","btn_all_accts_label_long","check_mailing_text","electronic_request_text","step3_print_and_summary","comment1","comment2","subtitle_payee_bank","subtitle_payee_address","subtitle_schedule","frequency_onetime","sellDate","frequency_recurring","dayOfMonth","end_date_text","endDate","table_note","table_column4_title","table_column5_title","total_amount","totalAmountOf","star_note","print_note","no_payment_accounts_text","onClick","src","lbl_select_method","UpcomingTransactions","menu_cancel","menu_edit","menu_view","msg_error_retrieving_transactions","text_end_date","text_frequency","text_no_upcoming_transactions","text_scheduled_date","text_status","drawer_title_view_pending_option","btn_change_username","err_different_username","err_username_length","lbl_current_username","lbl_new_username","msg_username_changed","msg_email_validated","ValidationFinish","err_full_amount","full_amount","head_validate","lbl_amount1","lbl_amount2","msg_validated","text_exceeded_attempts_error","text_match_error","attemptsRemaining","pluralize","text_validation_instructions","ValidationStart","btn_begin","text_complete_tp_verify","text_step_1","text_step_2","text_step_3","text_step_4","text_step_5","text_step_done","VerifyEmail","head_change_email_address","head_validating_email_while_logged_in","msg_validating_while_logged_in","apiMessages","next","errorMessages","inputMessages","infoMessages","warningMessages","status","push","forEach","msg","MessageType","Message","Field","dispatch","Precondition","notificationShow","updatedAction","warning","info","CHANGE_BENE_ADDRESS","DELETE_BENE_ADDRESS","GET_ACCOUNTS","GET_ACCOUNTS_SUMMARY","GET_BALANCE_HISTORY","GET_SUCCESSORS","GET_TRANSACTION_DETAILS","GET_UPCOMING_TRANSACTIONS","GET_ALL_UPCOMING_TRANSACTIONS","GET_ALL_TRANSACTIONS","ACCOUNT_INVESTMENT_PATH_GET","GET_PRR_DATES","ENVIRONMENT_VARIABLES_GET","PASSWORD_REQUIREMENTS_GET","STATIC_DOCUMENTS_GET","TMX_ENVIRONMENT_VARIABLES_GET","SERVER_DATETIME_GET","WEB_MESSAGES_GET","SET_LOADING_PUBLIC_VARS","BLANK_ADDRESS","AddressId","City","Country","CountryName","PostalCode","State","StreetAddress1","StreetAddress2","StreetAddress3","BANNER_LOCATIONS","LOGIN","HOME","CONTRIBUTIONS_NEW","CONTRIBUTIONS_EDIT","OPTION_CHANGES_NEW","OPTION_CHANGES_EDIT","TRANSFERS_NEW","TRANSFERS_EDIT","WITHDRAWALS_NEW","WITHDRAWALS_EDIT","ADD_ACCOUNT_STEP3","DOCUMENTS","fundUnitsFormatter","Intl","NumberFormat","minimumFractionDigits","initialState","accountList","balanceHistory","isAccountListLoaded","emptyAccount","accountType","addresses","Mailing","Physical","Other","beneficiaryId","netPrincipal","option","optionChangesRemaining","priorContributions","ytdContributions","transactions","grandTotalAllAccounts","groupedAccountsSummary","loadedTransactions","successors","transaction","total","basis","source","payeeName","bankName","bankAccountNumber","bankAccountType","accessCardNumber","transactionDetails","upcomingTransactions","upcomingTransactionsAll","transactionsAll","investmentPath","TemplateName","FundCategories","pRRDates","uiPermissions","canAddInterestedParties","canManageBankAccounts","giftingEnabled","hasCsaFamilyAccount","noBeneAccounts","createUiPermissions","account","permissions","Permissions","WithdrawACH","GiftingEnabled","Status","TaxableEntityProgramAccountId","TypeEnum","AccountsReducer","newState","cloneDeep","alphabetizedAccountList","sort","obj1","obj2","Beneficiary","Name","toUpperCase","map","moneyAllocations","combinedAllocations","combinedPercentageNum","MoneyAllocations","allocation","index","allocationObject","ActualPercentageNum","ActualPercentage","toFixed","Value","ValueNum","allocationDetails","Category","lastAllocation","newAccount","accountCloseDate","CloseDate","dayjs","format","AccountId","accountGroupId","AccountGroupId","accountIsClosed","AccountNumber","Type","accountTypeEnum","agreementDate","AgreementDate","agent","Agent","PhysicalAddress","pick","Object","keys","MailingAddress","OtherAddress","fullName","FirstName","MiddleName","LastName","agentId","AgentId","BeneficiaryId","birthday","Birthdate","age","BeneficiaryAge","csaWizardUrl","CSANewProgramAccountWizardUrl","earnings","Earnings","hasAvailablePromoCodes","HasAvailablePromoCodes","interestedPartyId","InterestedPartyId","fundAllocations","FundAllocations","a","b","Fund","FundId","ticker","StockSymbol","Price","priceNum","Units","unitsNum","NetContributions","Option","OptionId","isCustom","IsCustom","RemainingOptionChanges","ownerEntity","OwnerEntity","primarySuccessor","PrimarySuccessor","birthDate","BirthDate","successorId","SuccessorId","successorType","PreviousYearContributions","programName","ProgramName","secondarySuccessor","SecondarySuccessor","statementDeliveryMethod","StatementDeliveryMethod","taxableEntityProgramAccountId","totalValue","MarketValue","totalValueNum","netAvailable","NetAvailable","netAvailableNum","trans","TransactionId","PostDate","BasisAmount","Amount","taxYear","TaxYear","milestone","Milestone","unrealizedDeferredEarnings","UnrealizedDeferredEarnings","YearToDateContributions","ytdPRR","YearToDatePRR","reduce","groupedAccounts","beneficiaryAge","optionName","totalValueFormatted","accountGroups","group","account1","account2","successorList","find","successor","BeneficiaryName","toString","Transaction","AccessCard","CardNumber","Title","Source","PayeeName","BankAccount","BankName","MaskedBankAccountNumber","BankAccountType","ElectronicSchoolPaymentPaymentId","detail","TransactionDetailId","units","price","updatedAccounts","filter","updatedAddress","idx","findIndex","acc","updatedAccount","indexOf","convert2DCalculatorSchemaTo3D","StartDate","EndDate","GIFTING_LIST_GET","GIFTING_CHANGE_STATUS","GIFTING_CHANGE_NAME_VISIBILITY","UPDATE_GIFT","beneficiaryList","mapGiftingList","beneList","bene","IsActive","Boolean","GiftingReducer","HideLastName","beneficiaryListIndex","HasImage","GiftMessage","GiftCode","GiftCodeId","ACCOUNT_TRANSACTION_PREVIEW","CLOSE_TRANSACTION_LOADER","OPEN_TRANSACTION_LOADER","SET_PREFLIGHT_PARAMS","GET_GROUP_ACCOUNTS","GET_TRANSFER_ACCOUNTS","GET_SCHEDULED_TRANSACTION","GET_PRE_TRANSACTION_DETAILS","GET_CONTRIBUTION_DETAILS","NEXT_RUN_DATE_GET","SET_WITHDRAWAL_SUBMITTED","ANNUAL_EVENT","BIRTHDAY","DISABLED_DATES","YEARLY","groupAccountList","previewDetails","canContinue","preflightAccount","preflightLoaderOpen","preflightTransactionType","destinationAccounts","contributionDetails","contribution","nextRunDates","yearly","selectedTransaction","preTransactionDetails","AccountType","agentName","OptionName","groupAccounts","availableBalance","marketValue","availableForWithdrawalNum","availableForWithdrawal","AllowFullWithdrawal","OptionChangeCreate","totalMarketValue","totalMarketValueNum","totalAvailableBalance","totalAvailableBalanceNumber","totalAvailableForWithdrawalNum","totalAvailableForWithdrawal","AllowPartialWithdrawal","agentAddress","agentAddressChanged","beneficiaryAddress","beneficiaryAddressChanged","schoolAddresses","scheduleRunDates","withdrawalSubmitted","TransactionsReducer","Comments","Percentage","Actions","customAllocation","Schema","scheduledOptionName","NewOption","sheduledOptionId","NewOptionId","groupAccount","currentAccountId","parseInt","currentAccount","AccountInfo","parseFloat","sum","AvailableForWithdrawal","properCase","AgentAddressChanged","line1","Recipient","Line1","line2","Line2","street1","street2","city","Code","postalCode","BeneficiaryAddressChanged","marketValueNumber","availableBalanceNumber","percentageOfTotalValue","SchoolAddresses","address","attn","Department","SchoolName","Address","schoolId","SchoolId","fbo","studentIdNum","StudentId","canContributeAccountList","Contribute","maxBalance","MaximumBeneficiaryDeposit","editDetails","selectedAccount","selectedAccountId","overMaxBalance","some","contributionAmount","bankAccount","agentBankAccounts","BankAccountId","ScheduleDate1","ScheduledDate","ScheduleDate2","occasion","Occasion","selectedAccounts","ScheduleId","InvestmentType","toLowerCase","day","Array","isArray","CHECK_ROUTING_NUMBER","GET_BANK_ACCOUNTS","GET_AGENT_BANK_ACCOUNTS","GET_GROUPED_BANK_ACCOUNTS","GET_ALLOWED_BANK_HOLDERS","GET_ACCESS_CARDS","UPDATE_NICKNAME","routingNumberBank","bankAccounts","groupedBankAccounts","allowedBankHolders","accessCards","PaymentsReducer","$id","RoutingNumber","AllowWithdrawals","IsPendingWithdrawalVerification","VerificationAttemptsRemaining","HasExceededFullVerificationAttempts","IsEligibleForPoa","IsPoaApproved","ExpirationDate","ExpirationWarningDate","HasPendingACHTransactions","GiactResult","Nickname","nameId","userDetails","isBeneficiary","canWithdrawACH","allowedBankHolder","beneIsNotAgent","bankHolder","accountOwner","nickName","ACCESS_ROLE","ROUTE_ACCESS","AccountBlocks","browserLanguage","userLanguage","split","accountBlocked","claims","isAgent_AccessRole","isIpOnly_AccessRole","isNewUser_AccessRole","isValid","localStorage","showBrowserWarning","showMobileWarning","splashHasDisplayed","previousLogin","recaptchaVerified","registrationInfo","EmailAddress","ExternalUserId","UserId","userAccess","sidenavOpen","notificationsOpen","notifications","numberOfNotViewedNotifications","is2FADialogOpen","isAuthyDownDialogOpen","isRSADialogOpen","is2FAPrecondition","isRSAPrecondition","is2FARegistered","is2FABypassed","userPreferences","prev2faRoute","reasonBlocked","disableLeftNavigationMenu","mapClaims","LastLogin","constructClaims","result","claim","m_type","m_value","userAccessDetermine","FULL_BALANCE","RECURRING","ELECTRONIC","MAIL","documents","form102","Location","form104","form500","environmentVars","AccountAccessNoFrontEndActivityTimeout","AddressTypes","LogoutWarningTimeout","MaximumAge","MinimumAccountOwnerAge","RelationshipTypes","SuccessorTypes","SupportEmail","ServerDateTime","TwoFADeviceCookieExpirationInDays","MaximumBenficiaryAccountValueForGift","passwordRequirements","serverDateTime","threatMetrixVars","SessionId","ThreatMetrixUrl","usStates","withdrawalVariables","paymentTypes","recipientTypes","sellDates","startDates","withdrawalTypes","tradeCutoff","tradeCutoffWarningTime","numOfRollingDays","webMessages","values","obj","bannerLocation","loadingPublicVars","StaticResourcesReducer","USStates","unshift","EN","numberOfRollingMonths","DisbursementSignatureGuaranteeRollingDays","MinimumOnlineWithdrawalAmount","DisbursementSignatureGuaranteeAmount","PaymentMethods","RecipientTypes","ValidOneTimeWithdrawalDates","ValidRecurringWithdrawalDates","TradeCutOffTime","TradeCutoffApproachingWarningMinutes","WithdrawalTypes","docs","onlineLPOAGuide","doc","FormType","webMessageTypes","webMessageType","messageType","WebsiteMessages","webMessage","WebsiteMessageURLs","websiteMessageURL","URL","Page","Body","isLoading","AGENT_GET","CHANGE_ADDRESS","GET_DELIVERY_METHODS","CHANGE_DELIVERY_METHODS","CHANGE_EMAIL","CHANGE_PHONE_NUMBERS","DELETE_ADDRESS","PASSWORD_CHANGE","OFFICIAL_NOTIFICATION","TAXFORMS_NOTIFICATION","NEWSLETTER_NOTIFICATION","PROMO_NOTIFICATION","BDAY_NOTIFICATION","UTAH_RESIDENT_CHANGE","notificationTypes","OfficialCommunications","options","display","value","TaxForms","Newsletter","Promotional","BirthdayNotifications","UTRESIDENT","Username","Addresses","PhoneNumbers","Cell","Number","MaskType","Fax","Work","DeliveryMethods","formatPhoneNumbers","numbers","phone","MyInfoReducer","UserName","UtahResident","DEVICE_TOKEN_CREATE","DEVICE_TOKEN_GET","SECURITY_QESTION_GET","SECURITY_QESTIONS_ANSWER","RSA_STATUS_GET","RSA_QESTIONS_GET","RSA_ANSWERS","RSA_VERIFY_BIRTHDAY","TWO_FACTOR_REGISTRATION","TWO_FACTOR_REGISTRATION_UPDATE","TWO_FACTOR_TOKEN","TWO_FACTOR_TOKEN_VERIFICATION","TWO_FACTOR_QRCODES","TWO_FACTOR_PREFERRED_METHOD","TWO_FACTOR_SAVE_METHOD","regMethodTypes","isIdentityVerified","isSecurityQuestionsLockedOut","isRSALockedOut","challengeQuestion","challengeQuestionCount","RSADOB","isDOBValid","RSAQuestionSet","RegistrationInfo","VerificationInfo","QRCodeInfo","preferredInfo","regMethod","deviceToken","MultifactorReducer","IdentityVerified","Question","LockedOut","IsValid","QuestionSetId","Questions","ErrorMessages","GET_PREDEFINED_OPTIONS","GET_NEW_AGE_BASED_SCHEMA","GET_NEW_STATIC_SCHEMA","GET_OPTION_CHANGE_BY_ID","predefinedOptions","newAgeBasedSchema","newStaticSchema","template","optionChangeById","OptionChangesReducer","isStatic","OptionType","isEnrollmentDate","OptionOnlineDescription","UIOption","OptionOnlineLink","CREATE_ACCOUNT","DELETE_APPLICATION","GET_EXISTING_BENEFICIARIES","GET_EXISTING_BENEFICIARY","GET_SIGNUP_APPLICATION","RESET_ACCOUNT_APPLICATION","SAVE_ACCOUNT_OWNER","SAVE_BENEFICIARY","SAVE_CUSTOMIZED_OPTION","SAVE_PREDEFINED_INVESTMENT_OPTION","SAVE_PROMO_CODE","BLANK_BENE_INFO","BeneficiaryBirthdate","BeneficiaryEmail","BeneficiaryFirstName","BeneficiaryIsResident","BeneficiaryLastName","BeneficiaryMailingAddressSameAsOwner","BeneficiaryMiddleName","BeneficiaryPhysicalAddressSameAsOwner","BeneficiarySSN1","BeneficiarySSN2","RelationshipToAccountOwner","encryptedDataExists","accountOwnerInfo","OwnerBirthdate","OwnerEmail","OwnerFirstName","OwnerHomePhone","OwnerIsResident","OwnerLastName","OwnerMiddleName","OwnerSSN1","OwnerSSN2","activeStep","beneficiaryInfo","existingBenesDetails","existingBenesList","investmentInfo","InvestmentOptionId","Template","PromotionalCode","selectedExistingBene","mapAccountOwner","OwnerMailingStreetAddress1","OwnerMailingStreetAddress2","OwnerMailingCity","OwnerMailingPostalCode","OwnerMailingState","OwnerPhysicalStreetAddress1","OwnerPhysicalStreetAddress2","OwnerPhysicalCity","OwnerPhysicalPostalCode","OwnerPhysicalState","mapBeneficiary","BeneficiaryMailingStreetAddress1","BeneficiaryMailingStreetAddress2","BeneficiaryMailingCity","BeneficiaryMailingPostalCode","BeneficiaryMailingState","BeneficiaryPhysicalStreetAddress1","BeneficiaryPhysicalStreetAddress2","BeneficiaryPhysicalCity","BeneficiaryPhysicalPostalCode","BeneficiaryPhysicalState","SignupReducer","AccountData","Owner","benesWithFilteredOpts","acct","validOptions","Options","opt","DOCUMENTS_GET","COUNTRIES_LIST_GET","countries","DocumentsReducer","PAYROLL_GET","PAYROLL_UPDATE","AMOUNT","payrollContributionData","PayrollContributionsReducer","USER_NAME_FORGOT","ForgotUserNameReducer","AGENT_SEARCH","AGENT_UPDATE","REGISTRATION_TYPE","INIT_FORM_ERRORS","SocialSecurityNumber","PasswordOne","PasswordTwo","REGISTRATION_TYPES","updatedAgent","registrationType","SetupUserReducer","authCodeResponse","LpoaReducer","ADD_INTERESTED_PARTY","DELETE_INTERESTED_PARTY","EDIT_INTERESTED_PARTY","GET_INTERESTED_PARTIES","GET_IP_ACTIVATION_INFO","RESEND_INTERESTED_PARTY_EMAIL","activationInfo","interestedParties","InterestedPartiesReducer","deletedIdx","ip","ipId","splice","editedIdx","editedIp","Pin","GET_LPOA_ACCOUNT","APPROVE_LPOA_ACCOUNT","SAVE_TO_REDUX_LPOA_ACCOUNT","PERSON_TYPES","ADDRESS_TYPES","RELATIONSHIPS","newAccountNumber","loginAlreadyExists","applicationInfo","guid","isUtahPayer","zipCode","workPhone","otherPhone","relationship","applicationDate","poaLevel","fedTaxDocs","stateTaxDocs","promoCode","FundInformation","FeeInformation","ExpenseRatio","My529Fee","TotalFee","mapApplicationInfo","normalizeString","str","normalizeBoolean","bool","normalizeNumber","num","normalizeDate","PoaAccountApplicationId","OwnerSSN","OwnerMailingAddress1","OwnerMailingAddress2","OwnerMailingZipCode","OwnerPhysicalAddress1","OwnerPhysicalAddress2","OwnerPhysicalZipCode","OwnerWorkPhone","OwnerOtherPhone","Relationship","BeneficiarySSN","BeneficiaryMailingAddress1","BeneficiaryMailingAddress2","BeneficiaryMailingZipCode","BeneficiaryPhysicalAddress1","BeneficiaryPhysicalAddress2","BeneficiaryPhysicalZipCode","SuccessorFirstName","SuccessorMiddleName","SuccessorLastName","SuccessorBirthdate","SuccessorSSN","SuccessorUtahResident","SuccessorMailingAddress1","SuccessorMailingAddress2","SuccessorMailingCity","SuccessorMailingState","SuccessorMailingZipCode","SuccessorPhysicalAddress1","SuccessorPhysicalAddress2","SuccessorPhysicalCity","SuccessorPhysicalState","SuccessorPhysicalZipCode","SSuccessorFirstName","SSuccessorMiddleName","SSuccessorLastName","SSuccessorBirthDate","SSuccessorSSN","SSuccessorUtahResident","SSuccessorMailingAddress1","SSuccessorMailingAddress2","SSuccessorMailingCity","SSuccessorMailingState","SSuccessorMailingZipCode","SSuccessorPhysicalAddress1","SSuccessorPhysicalAddress2","SSuccessorPhysicalCity","SSuccessorPhysicalState","SSuccessorPhysicalZipCode","Date","AccountTypeName","PoaLevel","CanViewFedTaxDocs","CanViewStateTaxDocs","AgeBands","FirmName","LpoaAccountReducer","cbTick","cbFinish","LoginAlreadyExists","appReducer","combineReducers","accounts","gifting","payments","rawClaims","Claims","mappedClaims","setItem","AccountBlocked","AccountBlock","TwoFactorRegistration","TwoFactorAuthentication","success","pref","userPreference","preferenceIndex","preference","Identifier","notification","ViewedDate","static","Static","myInfo","multifactor","optionChanges","signup","payrollContribution","forgotusername","registrationtype","RegistrationType","lpoaReducer","lpoaAccount","rootReducer","appColors","globalVars","accent","accent2","text","lightHeaderText","linkText","darkPrimary","lightGray","palette","default","main","light","dark","lighten","row","trim","hover","selected","components","MuiButton","defaultProps","color","styleOverrides","contained","backgroundColor","outlined","borderColor","MuiCheckbox","MuiChip","root","deleteIcon","avatar","MuiDialogContent","overflowY","MuiFilledInput","underline","borderBottom","MuiFormControl","variant","margin","MuiIconButton","MuiInput","borderBottomColor","MuiListItem","MuiListItemIcon","MuiMenu","anchorOrigin","vertical","horizontal","MuiRadio","padding","MuiSelect","MuiStepIcon","MuiStepper","MuiTab","indicatorColor","MuiTabs","MuiTextField","MuiTooltip","tooltip","fontSize","typography","fontFamily","breakpoints","xs","sm","md","lg","select","ComposedComponent","Language","props","Spanish","React","Component","connect","dur","elapsedTime","currentTimer","startedAt","startTimer","callbackTick","callbackFinish","duration","now","update","stopTimer","clearTimeout","getRemainingTimeInMs","setTimeout","LogoutWarning","remainingTimeInMs","updateRemainingTime","setState","startWarning","logoutWarningInterval","onTimeout","stopWarning","onCloseContinueWithTimeout","onWarningClose","parseCountdown","secsAll","remainingMins","Math","floor","remainingSecs","round","secsFormatted","prevProps","warningOn","parseWarningMsg","modalTitle","closeButtonLabel","actionButtons","onCloseModal","show","withRouter","LanguageHOC","history","container","shrug","Button","Icon","windowEvents","inactivityWarningOn","inactivityWarningTimer","handleAccountBlocks","to","key","handleRequiredAccess","component","render","requiredAccessRights","inactivityLogout","finally","restartInactivityProcedure","noFrontEndActivityTimeoutInMs","cancelInactivityWarning","e","addEventListener","onload","allNotificationsHide","removeEventListener","rest","logoutWarningTimeoutInMs","PublicRoute","passwordRequirementsGet","getEnvironmentVars","join","getServerDateTime","bowser","Bowser","getParser","userAgent","parsedResult","languageSet","warningMessageCompose","warningType","browserWarningContainer","browserWarningClose","setBrowserWarning","apiCalls","staticDocuments","getStaticDocuments","getWebMessages","setLoadingPublicVars","all","pageTitle","navContainer","navHeader","left","darkerBackground","menuIcon","buttonProps","style","icon","logoHeader","alt","my529LogoColors","height","vertLine","right","notificationIcon","id-","Tooltip","IconButton","aria-label","Badge","badgeContent","warningsCompile","publicNavHeader","greetingGenerator","hour","appTourStepper","step","sendPageView","signupStepper","SidenavMenuOption","showMenuOptions","setMenuOpen","onMenuOptionClick","externalLink","eventLabel","sendClickEvent","open","innerWidth","desktopWidth","onOptionClick","rootMenuOptionIconName","children","visible","disabled","isNested","isSelected","customOnClick","menuOptionClickHandle","List","ListItem","button","ListItemIcon","placement","disableHoverListener","ListItemText","Collapse","in","unmountOnExit","onEntered","setNestedMenuOpen","onExited","marginLeft","muiStyles","overflowX","transition","width","sidenavMini","hasScrollBar","nestedMenuOpen","scrollBarWidth","languageOptionsShow","languageChangeHandle","logOut","menuSelectHandle","renderSidenavContents","supportEmail","sideNavContainer","topMenu","hamburger","greetings","aoName","hide","bottomMenu","divider","Divider","bottom","helpContainer","previousLoginContainer","prevState","windowHeight","size","drawerEl","topMenuEl","hasDrawerScrollBar","firstChild","scrollHeight","clientHeight","hasTopMenuScrollBar","sumOfBarWidths","offsetWidth","clientWidth","sidenavIsVisible","Hidden","mdDown","Drawer","PaperProps","lgUp","SwipeableDrawer","onClose","onOpen","withStyles","sizify","NotificationsDrawer","loading","getIconName","notificationType","redirectAndToggle","setNotificationsViewed","anchor","notificationsTitle","closeIcon","notificationContainer","notificationContainerNotViewed","notificationsText","notificationHeader","iconContainer","fromTime","CreatedDate","fromNow","notificationMessage","notificationStatus","noNotifications","Transition","forwardRef","ref","Slide","direction","isSmallScreen","tabletWidth","loaded","neverShowAgain","showTour","steps","backHandle","closeModalHandle","updatedPreference","tourPreference","dialogContentRender","iconWithText","welcome","welcomeImage","flexDirection","transactionsIcon1","transactionsIcon2","alignItems","neverShowAgainHandle","nextHandle","isMobile","windowWidth","mobileWidth","getUserPreferences","classes","overlay","navCircleLoaded","navCircleHidden","notifCircleLoaded","notifCircleHidden","Dialog","aria-labelledby","BackdropProps","backdrop","dialog","mobilePaperProps","desktopPaperProps","TransitionComponent","transitionDuration","enter","exit","DialogTitle","DialogContent","DialogActions","bottomNav","stepperNav","MobileStepper","backButton","stepperRoot","nextButton","position","skipNav","checked","onChange","minHeight","minWidth","zIndex","iconButtonRoot","paddingBottom","justifyContent","body","logo","Banner","banner","bannerMessages","dangerouslySetInnerHTML","__html","getRegisteredDevice","devicePair","cookie","crumb","substr","setRegisteredDevice","GUID","currentDateFromApi","cookieExpirationInDaysFromApi","newDate","setDate","getDate","expiration","toUTCString","hostName","hostname","formErrors","threatMetrixPreCheck","preventDefault","onFormSubmit","getThreatMetrixVars","createThreatMetrixTag","formValidate","blur","deviceGUID","devicetoken","userLogin","QSI","API","run","unload","load","element","onInputChange","inputName","clonedErrors","recaptchaVerify","warningMessage","tmxScript","createElement","setAttribute","head","appendChild","forgotUsername","forgotPassword","onSubmit","TextField","autoComplete","fullWidth","helperText","errorText","linkContainer","linkDivider","dividerLeft","dividerText","dividerRight","createAccountButton","financialAdvisorLoginButton","recaptcha","inputError","formIsValid","login","autoFocus","goBack","FormWrapper","dropdownOptions","onChangeHandle","setGetRegistrationType","headerContainer","textAlign","marginTop","marginBottom","labelId","FormControlProps","formContainer","otherInfo","firstNameValidator","middleNameValidator","lastNameValidator","socialSecurityNumValidator","phoneNumValidator","street1Validator","test","cityValidator","stateValidator","postalCodeValidator","match","accountOwnerBirthdateValidator","isBefore","subtract","isAfter","beneficiaryBirthdateValidator","beneficiaryRelationshipValidator","calendarValidator","amountValidator","userNameValidator","userName","emailValidator","alphaNumericOnlyValidator","schoolAttnValidator","apiErrors","passwordIsValid","passwordReqsVisible","password1","password2","termsChecked","termsModalOpen","emailError","terms","apiRegistrationInfo","registerUser","onTermsCheck","handleMenuClick","event","menuOpen","currentTarget","scrollTop","documentElement","newAccountSubLanguage","onBlur","onFocus","Accordion","sx","background","boxShadow","expanded","onPasswordCheck","termsAndConditionsContainer","FormHelperText","bull","emailResend","resendEmail","header","mainText","supportText","passwordConfirmation","passwordPassesValidation","postData","qs","search","ignoreQueryPrefix","request","resetPassword","divPadding","showLoader","queryParams","URLSearchParams","validateEmail","loadingContainer","indicatorHeight","isMsgSubmitted","handleInput","val","sendEmail","sendUsername","pageState","isPasswordValid","isPasswordReqsVisible","agentHasEmail","handleCustomInputs","validateAgent","validator","agentSearch","isEmpty","HasLogin","updateAgent","agentUpdate","registerUserSync","apiError","formError","toDate","openTo","mapAccount","accountSummary","ageBands","lpoaFirmName","getLpoaAccount","getRSAPassedCookie","rsaPassedCookie","pop","tippyProps","hideOnClick","interactive","selectedAgeBand","isAgeBased","title1","title2","onAgeBandSelection","sectionTitle","sectionSubTitle","emptySubtitle","ageBand","AgeBandName","fund","Ticker","infoIconByTitle","detailsRow","applicationInfoErrors","personType","onPersonInput","removeIsUtahPayer","FormControlLabel","control","Checkbox","inputProps","AddressInput","US_STATES","onAddressInput","renderNavigationButton","copyAddress","copyButtonLabel","states","formattedValue","onAoContactInput","ao","learnMoreInfoContainer","learnMoreInfoHeader","learnMoreInfo","levelSelectionContainer","rowSpan","colSpan","showLpoaLevelLearnMore","onAccountSummaryInput","learnMoreButton","infoColumn","LearnMore","AccountEdit","apiEditableKeyNames","clearedApplicationInfoErrors","accountLoading","validationLoading","applicationInfoErrorsCleared","findErrorMessageByKey","foundError","clearToastErrorsOnce","updatedApplicationInfoErrors","updatedApplicationInfo","personToCopyTo","keyName","beneAge","diff","setAgeBased","beneficiaryAgeBandIndex","MinimumAge","scrollToTop","onNextHandler","validateLpoaAccount","saveToReduxLpoaAccount","applicationErrorsCleared","updatedApplicationErrors","mapApiErrors","isEqual","rejectLoading","showRejectModalHandler","sectionsContainer","section","sectionItem","aboveButtonsMessage","navButtons","answers","RSA","resetQuestionError","questionId","questionIndex","QuestionId","updatedErrors","handleRadioChoices","parseSelection","choiceId","updatedAnswers","answerIndex","findAnswerIndex","choices","handleCheckboxChoices","choiceIndex","choice","validateForm","hasError","sendRSAAnswers","answerSet","questionSetId","handlePostRSA","selection","questRendered","AnswerType","Choices","ChoiceId","Radio","Text","questionAndAnswer","helpText","HelpText","RadioGroup","FormControl","FormGroup","rsaQuestionsButton","renderRSAQandA","termsCheckedError","onTermsCheckboxClicked","onBackHandler","onSubmitHandler","approveAccountLoading","COMPONENT_NAMES","getRSALoading","postRSALoading","validateAccountLoading","firstAttemptFailed","showRejectModal","failedRSAMessage","setStateShowHandler","componentName","updatedShow","postRSA","handleGetRSA","getRSA","onPOARejectHandler","rejectLpoaAccount","onRejectModalClose","onNextHandlerAccountEdit","onNextHandlerFirstTermsAndConditions","onBackHandlerFirstTermsAndConditions","onBackHandlerSecondTermsAndConditions","approveLpoaAccount","renderAccountCreated","confirmationSecondParagraph","logInOrSetUpButton","accountCreatedContainer","accountCreatedTitle","failedRSA","onConfirm","onModalClose","activateIpAccount","ipInfo","CreateIpAccount","newIp","createIpAccount","redirectToLogin","every","csaPin","showCreateAccountForm","parentStyles","createAccountForm","showFormContainer","hideFormContainer","flexWrap","toggleFormVisibility","LoginIp","ipLogin","ipLoginInfo","showLoginOnly","loginForm","learnMoreOpen","getActivationInfo","loginExistsAndIsRequired","formsContainerLoginOnly","formsContainer","learnMoreBtn","learnMoreContainer","getAccounts","getAccountsSummary","getTransactionDetails","accountInvestmentPathGet","includeZeroAllocations","protectAction","RSAVerification","protectWithdrawal","IsRegistered","openPreflightModal","setPreflightParams","getScheduledTransaction","optionChangeParameter","TransactionType","deleteTransaction","getPreTransactionDetails","getNextRunDate","dates","datePath","formatDate","toISOString","joinedDates","startCase","getSchools","addressSuggestions","autocompleteText","isDeleting","isSaving","addressDelete","deleteBeneAddress","callbackOnAddressChange","accountsGet","addressTabChange","addressChange","addressIsValid","addressValidate","uppercaseAddress","changeBeneAddress","input","cityError","autocompleteSuggestionsGet","suggestions","buttonsCompose","EditAccount","deleteButtonDisabled","changeButtonIsDisabled","errorGet","onAutocompleteAddressSelect","prototype","hasOwnProperty","call","street_line","zipcode","addressToUppercase","field","isReadOnlyAddress","benContactForm","titleContainer","form","Tabs","centered","tabs","Tab","readOnlyAddress","isReadOnly","addressId","UpdateBeneAddressModal","updateAccount","paramAccountId","handleCancel","showChangeAddressModal","hasPrecondition","composeAddress","canEditAddress","isInternationalAddress","missingAddressCompose","startIcon","handleShowChangeAddressModal","beneAddressRowContainer","beneAddressRow","beneAddress","buttonIcons","multiStatus","setLastClicked","isLastClicked","beneContact","textColor","agentActiveFill","material_ui_theme","agentFill","interestedPartyActiveFill","interestedPartyFill","slices","isInterestedParty","activeFill","fill","sliceElements","d3","selectAll","attr","attrTween","slice","interpolateAngle","startAngle","endAngle","interpolateRadius","arcGenerator","innerRadius","outerRadius","padAngle","tween","transitionArcGenerator","isActive","connectorArcGenerator","connectorStartAngle","interpolate","connectorInnerRadius","PI","activeOuterRadius","connectorOuterRadius","pieSelection","chartContainer","allocationChart","visibility","transform","textTransform","y","x","fontWeight","nextProps","allocations","activeIndex","prevActiveIndex","arcs","pie","arc","i","isPreviousActive","activeArcGenerator","pieConnectorPath","connectorPath","dataConnectorPath","arcCentroid","centroid","slicePath","activeInterpolate","prevActiveInterpolate","prevActiveArcGenerator","TransactionButtons","moreMenuAnchorPoints","callToActionRender","callToActionType","preflightCheck","menuClose","isCallToAction","OptionChange","Transfer","Withdraw","WithdrawalRequest","hasAnyAccountPermission","aria-controls","aria-haspopup","Menu","anchorEl","MenuItem","accountHasFunds","onPieEnter","tooltipCompose","isCustomOption","tooltipsContainer","details","tooltipContainer","categoryName","chartCompose","noFundsViewCompose","noFundsViewContainer","closedAccountView","closedHeader","noFundsView","noFundsHeader","makeContributionText","currentAllocation","qa","AccordionSummary","expandIcon","Typography","AccordionDetails","startDate","startDateError","endDateError","pRRInit","pRR","resetErrorsAndPRR","onStartDateInput","onEndDateInput","startDatePlus1Day","add","onCalculateHandler","getPRR","resetStartDate","calculateDates","openAccountDate","previousYear","lastDateOfPreviousYear","getPRRDates","disablePRRButtonInDetails","prrClass","prrArrowIcon","pprNotAvailable","negativeReturn","positiveReturn","onCloseHandler","DialogProps","prrCalculator","dataTILE","labelTILE","rorContainer","rorTitle","ppr","start","end","separator","decimals","decimal","prefix","suffix","onEnd","onStart","NA","prrCalculatorShow","prrButtonDisabled","onClosePrrCalculatorHandler","lastMarketDate","combinedDetails","accountDetails","beneficiaryNameSection","topLabel","scholarshipEntity","openedDate","totalBalance","balance","pprContainer","pprPercentageContainer","pprPercentage","replace","showPromoInput","showSuccessfullyApplied","handleSubmitPromoCode","submitPromoCode","TypeError","promoCodeContainer","promoCodeInput","maxLength","successMessage","blankSuccessor","isExistingSuccessor","newSuccessor","showChangeSuccessor","showRemoveSuccessor","successorLoading","SUCCESSOR_TYPES","Primary","validationRan","rememberIsRemove","rememberSuccessorType","existingSuccessor","modifySuccessorModalCompose","onSuccessorChange","DialogContentProps","modal","includeLeftCancelBtn","formMessage","successorFormCompose","SSN","changedSuccessor","changeSuccessor","getSuccessors","onSuccessorRemove","removeSuccessor","onSuccessorSelect","removeSuccessorModalCompose","data-auto-id","successorsListCompose","datePickerContainer","readOnly","successorsList","concat","tooltipsComposeModifySuccessor","successorRemove","handleShowSuccessorModal","successorEdit","addButtonCompose","addSuccessorContainer","isRemove","showProperty","primarySuccessorName","secondarySuccessorName","successorsContainer","ChangeSuccessor","primarySuccessor2","successorTitle","successorName","secondarySuccessor2","Secondary","getPredefinedOptions","getOptionChangeById","optionChangeId","actionId","getNewAgeBasedSchema","getNewStaticSchema","getRSAStatus","getRSAQuestionSet","rsaAnswers","rsaVerifyBirthday","twoFactorTokenVerification","method","getTwoFactorToken","getPreferredMethod","savePreferredMethod","preferredMethod","ViewOptionChange","pendingOptionChange","breadcrumbs","crumbs","optionChangeName","CurrentOption","stickyHeaderTopOffset","schema","isViewing","hideTemplateName","currentDate","tabIndex","Transaction_container","transactionNavigation","transactionTitle","transactionTableWrapper","transactionTypes","transfers","withdrawals","contributions","showCancelConfirmModal","cancelTransactionLoading","loadingSelectedTransaction","showPendingOptionChange","selectedPendingOptionChange","rememberedFunction","txn","upcomingTransactionsGet","getUpcomingTransactions","editTransaction","optionchanges","viewTransaction","ActionId","OptionChangeId","togglePendingOptionChangeDrawer","upcomingTransactionCancelHandler","accountDetailsStyles","upcomingTransactionsCard","formProps","tableContainer","actions","displayName","onSelect","showIf","CanEdit","protectDeleteAction","CanDelete","columns","rows","emptyMessage","idKey","Frequency","transactionsByDateFilter","dateFilters","isSameOrAfter","isSameOrBefore","accountsByFilter","filters","filteredAccounts","transactionTable","hideOn","customStyle","showTransaction","loadingTransaction","filterDates","isExporting","toggleDetailsDrawer","transactionDetailsShow","foundTransaction","filterTransactions","fieldName","filteredTransactions","handleExportTransactions","getTransactionsExport","canRunExport","file","Blob","createObjectURL","click","renderDateFilter","noTransactions","dateFilterContainer","exportButton","isScholarshipAccount","transactionsCard","iconTitle","onRowClick","contentType","valueDetails","activitySummary","summaryRow","detailTitle","detailText","currentOptionLink","currentOptionType","currentOption","optionDetailsContainer","optionDetails","remainingOptions","maxHeight","lastClicked","closedAccountBanner","accountDetailsCard","Paper","accountTypeInterestedParty","accountDetailsContainer","accountDetailsLeft","transactionBtns","accountDetailsRight","LastMarketDate","showSearchSuggestions","selectedSearchMenuIndex","searchMenuHide","keyPressHandle","dataColumns","keyCode","onSearchSuggestionClick","column","onFilter","searchIsActive","splitTerm","sortColumn","searchTerm","updatedResults","filterData","updateData","fuseConfig","tokenize","findAllMatches","shouldSort","maxPatternLength","minMatchCharLength","threshold","distance","clonedData","results","Fuse","matchedRows","matchingRow","item","searchContainer","hasSearchMenu","debounce","searchMenu","filteredGroupedAccountsList","dashboardAccountList","filteredAccountList","filterList","selectedFilters","searchedAccountList","showFilterList","getFilteredGroupedSummaryList","uniq","updateDataHandler","handleShowFilterList","handleFilterSelect","addAccountButtonRender","calculateTotalSum","initialize","groupedAccountsList","setupFilterList","beneficiaryNames","optionNames","listHeader","isTileView","readyToRenderGroups","buttonAndAcctSummContainer","filterAndSearch","marginRight","Select","multiple","Input","ListSubheader","Search","totalAmtAndAddAcctBtnTILE","totalAmtAndAddAcctBtn","accountsSummaryContainerTILE","accountsSummaryContainer","accountGroup","beneficiaryAccountTypeContainer","accountGroupInfoContainer","beneNameAndTotalContainer","totalContainer","marketDateContainer","accountBorder","accountRow","accountInfoContainerTILE","accountInfoContainer","accountNumberAndOptionContainer","dateOpened","transactionLinks","justifySelf","accountValueContainer","personalRateReturnContainer","accountsContainer","tabsContainer","accountSelector","accountLinks","substring","exact","UpcomingSchedules","getAllUpcomingTransactions","transactionHubStyles","getMSTfromUTC","getAllTransactionsExport","allTransactionsGet","getAllTransactions","hasScholarshipAccount","isOnMobile","handleClose","handleListItemClick","transactionSubtitle","fullScreen","list","subTitle","threeItemRow","threeItemCell","cellValues","accountListOpen","accountsWithPermission","buttonTransactionType","hideButtons","contribute","undefined","optionChange","transfer","withdraw","RequestWithdraw","mapPermissionByTransaction","isCSAWithdrawalRequest","handleOpen","updatedTransactionType","handleClickOpen","transactionButtons","transactionButton","hidden","whiteSpace","colors","agentGet","changeEmail","getStatementDeliveryMethods","BalanceGraph","componentHeight","componentWidth","drawChart","useTransition","graphData","activeDateFilter","accountBeneNames","selectedAccountsCount","maxBalances","accountBalanceHistory","longestDateRangeIndex","p","c","xScale","range","clamp","yScale","formatDay","formatWeek","formatMonth","formatYearBeg","formatYear","is1YearFilter","multiFormat","xTickCount","colorRange","defaultColors","domain","xAxis","scale","ticks","tickFormat","yAxis","line","curve","remove","svg","append","xDomain","d","g","lines","glines","overOneYearTimeframe","useSmallerLine","each","selectedLine","totalLength","node","getTotalLength","delay","ease","mouseG","mousePerLine","on","mouseX","mouseY","invert","roundedDate","startOf","bisectDate","moveTooltipToCenter","abs","pageX","moveTooltipToLeft","longestHistoryLength","dateIndex","selectedBalances","beneFirstName","balanceObject","reverse","tooltipLeftPosition","tooltipLine","html","tooltipLegend","tooltipName","tooltipBalance","isGraphFullscreen","fullscreenGraphContainer","valueGraphContainer","SkeletonLoader","textVariant","skeletonProps","typographyProps","skeleton","Skeleton","skeletonLoader","agentColor","interestedPartyColor","balanceDate","accountListToUse","onDateChange","findBalanceForGivenDate","balanceAsOfGivenDate","isBalanceHistoryLoading","balanceByDateContainer","isLastAccount","displayedOptionName","balanceIsNA","hasNoBalance","borderLeft","beneName","accountValue","dateFilter","onThirdPartyURLClickHandler","thirdPartyURL","thirdParyLinkClick","imageSrc","warningLanguage","footer","maxWidth","buttonType","image","warningTypes","filterDate","activeGraphDateFilter","dateFilteredDashboardAccountList","showCustomDatePickers","customFilterDates","minMaxDates","showBeneDropdown","thirdPartyWarningOn","customDateHandle","filterByCustomDates","accountSelect","selections","newSelections","newGraphData","getMinMaxDates","selectAllIndex","filterGraphData","filteredDashboardAccountList","earliestBalanceDate","latestBalanceDate","hasLimitedData","filterByDateRange","runFilter","renderWarningDisplay","warningText","warningHeader","warningDisplayContainer","butterfly","renderSelectionAccount","accountSelectionMenu","renderDateFilterChips","graphDateFilterContainer","dateFilterChips","isActiveChip","isDisabled","Chip","active","inactive","datePickers","renderBalanceOverTime","isNotMobileView","selectedProps","renderValue","isSelectAll","SelectDisplayProps","aboveGraphContainer","dropdownContainer","accountDropdown","SelectProps","savingsCalulatorButton","toolTipContainer","balanceGraphFullscreenContainer","balanceGraphContainer","formatDashboardAccountList","sortedBalanceHistory","BalanceHistory","second","Balance","dataAvailable","DataAvailable","defaultSelectedAccount","getBalanceHistory","overviewContainer","balanceOverTimeSection","balanceByDateSection","balanceOverTimeFullscreen","AccessCardBanner","isMobileView","onCloseBanner","bannerContainer","imageContainer","bannerImage","mobileAccessCardBannerImage","accessCardBannerImage","closeButton","stopPropagation","paperlessContainer","paperless","paperlessIcon","paperlessLabel","paperlessText","buttonSettings","expansionPanelBar","borderRadius","border","overviewIsExpanded","transactionsIsExpanded","greeting","hasCalledAccounts","userCookieIsSet","isNotPaperless","officialCommunications","newsletter","taxForms","deliveryMethods","DeliveryMethod","promises","setStateOnMount","hasActiveIndividualAccount","accessCardBannerPreference","paperlessBannerPreference","homeContainer","expansionPanelBody","expansionPanelBarSmallScreen","overviewHeading","ownerName","overviewTitle","ownerEmail","homeIsLoading","accountsHeadingContainer","accountsHeading","viewIcon","paddingTop","transactionsAccordion","lpoa","PoaName","BeneficiaryInfo","selectedBeneIds","disableRevoke","onCheckboxClickHandler","selectAllClickHandler","editSelectedBenesHandler","unlinkLpoa","revokeSelectedBenesHandler","openConfirmModalRevokeBene","openConfirmModalUnlinkLpoa","setOpenConfirmModalRevokeBene","setOpenConfirmModalUnlinkLpoa","cancelConfirmModalRevokeBene","cancelConfirmModalUnlinkLpoa","numSelected","rowCount","noSelection","beneId","isItemSelected","dashRow","borderTop","checkbox","FederalTaxDocs","StateTaxDocs","lpoaList","lpoaHeader","lpoaHeaderName","paperContainer","paperTitle","actionHeader","addEditHelpText","indeterminate","LpoaStepper","stepHasError","completed","stepsDisabled","isFirstStep","isLastStep","stepLabels","completedSteps","setStep","handleBack","clearStepErrors","handleNext","verifyStep","newCompleted","handleSubmit","renderButtons","submitStep","onCancel","cancelButton","submitButton","isCompleted","clearStepError","renderStepComponent","stepperContentContainer","stepperSteps","Stepper","orientation","stepper","Step","StepButton","StepLabel","stepperContent","stepperButtons","GET_LPOA","EditLpoa","selectedPoaLevel","selectedPoaLevelError","selectedFedTaxDocs","selectedStateTaxDocs","levelSelectionHandler","onFedTaxDocsClickHandler","onStateTaxDocsClickHandler","onTermsCheckHandler","postLpoa","goBackToLpoaTableAndRefreshLpoa","updatedBeneficiaryInfo","updatedLpoaBody","PoaCode","stepComponent","formsTitle","formsRow","formSelection","formSelectionLabel","taxSelectionSeparator","printButton","review","agreeToTerms","lpoaIsNoLinked","errorAuthCode","authCodeEntryComponent","lpoaListComponent","editLpoaComponent","confirmLpoaNameComponent","post2FAAuthFunction","rememberedEvent","newSelectedBeneIds","selectedIndex","goBackToLpoaTableHandler","refreshLpoa","getLpoaHandler","scrollTo","onAuthCodeCheckHandler","checkAuthCode","onBackToCodeEntryHandler","poa","onLPOACancelHandler","onLPOAConfirmHandler","getLpoa","functionName","revokeAllHandler","allBeneIds","deleteLpoa","codeInput","defaultValue","learnMore","poaName","authCode","includeUnassigned","beneIds","BeneficiaryIds","getGiftingList","updateGift","gift","uploadPercentageCb","onUploadProgress","progressEvent","changeNameVisibility","GiftingDashboard","shouldNavAway","loadingStatusChange","loadingHideLastNameChange","isAggregate","hideLastNameChange","changeStatus","CanEnable","statusText","hideLastName","nameStatusText","giftCode","giftCodeColor","code","acctType","letterSpacing","Switch","statusChange","hideName","manage","renderSkeletonRows","renderBeneficiaryRows","AnnualGiftExclusionAmount","CircularProgressWithLabel","Box","top","CircularProgress","CircularStatic","progress","opacity","ManageGifting","giftUploading","imageDownloading","benesLoading","giftMessage","giftMessageError","originalGiftMessage","historyLoading","showSaveDialog","isValidateImage","validateImageMsg","imageChanged","validateGiftMessage","removeFile","Image","formChanged","shouldCancel","showPercentageUploadProgress","percentage","saveChanges","setBeneficiary","getImageSetBene","getGiftImage","updatedBeneficiary","initializeBeneDetails","tableTitle","GiftId","GifterId","Memo","encodeURI","giftingSiteUrl","giftingLink","cursor","textIndent","clipboard","writeText","files","reader","FileReader","readAsArrayBuffer","arrayBuffer","Uint8Array","blob","webkitURL","entireImage","constructedImage","convertByteArrayToImage","Avatar","Person","onDrop","incomingFile","dropFile","getRootProps","getInputProps","paddingRight","removeButton","encodedURL","manageGifting","empty1","empty2","empty3","picture","renderDropZone","customText","multiline","maxRows","messageLength","empty4","empty5","buildURL","empty6","empty7","user","acctSettings","hideLastNameLabel","hideLastNameInfo","hideLastNameSwitch","hideLastNameStatus","pageviewscode","PageViews","empty8","empty9","social","empty10","empty11","renderHistory","empty12","GiftingSiteUrl","responseType","LeftMenuItem","LeftMenuItems","Row","RightDrawer","PersistentDrawers","rowsOpen","handleDrawerToggle","drawerIndex","onDrawerToggle","preventOpeningDrawers","toggleDrawerByIndex","isDrawerOpen","rowOpen","isOneOpen","Children","toArray","child","toggleDrawerIndex","drawerWidth","isDrawerFullWidth","drawerWidthCalculated","mainMarginRight","leftMenuItems","drawers","transitionTimingFunction","items","itemsIndex","disableGutters","forMobile","leftMenuItem","itemIndex","firstColStyle","col","arrow","rightDrawer","closeButtonArrow","drawerHeaderItem","drawerContent","verifyAddress","areErrors","uppercaseInput","uppercasedAddresses","mapApiErrorsToFormErrors","deleteAddress","addressUpdate","changeAddress","residentCheck","updateButtonIsDisabled","displayUnsavedChangesPrompt","hasTitle","tab","changeEmailModalOpen","emailChangeConfirmed","newEmail","newEmailConfirm","emailConfirm","emailChange","camelCase","currentPassword","inputErrors","newPassword","newPasswordConfirm","passwordUpdate","passwordInputsValidate","passwordChange","handleMouseDownPassword","inputChange","oldpassword","newpassword1","newpassword2","phoneNumbers","phoneErrors","getPhoneNumberError","phoneMatch","verifyPhoneNumbers","phoneNumbersChange","formattedPhoneNumbers","changePhoneNumbers","strippedNumbersOnState","strippedNumbersOnProps","errorsNotCleared","isintl","newUsername","currentUsername","usernameChange","changeUsername","autocomplete","DeliveryMethodsComp","disableChangeButton","onStatementDeliveryPrefChange","modifiedDeliveryMethods","statementDeliveryPrefChange","changeStatementDeliveryMethods","statementDeliveryMethodPrefsModalOpen","renderTableDataRows","preferencesContainer","RegisterPhone","hasVerificationCode","verificationCode","verificationCodeError","actionButton","attemptWarning","sendCodeBtn","callAgainBtn","doAgain","verifyCode","Verified","AlwaysRequired","PreferredMethod","AttemptsRemaining","logout","closeWindow","lastFour","PhoneNumber","sendConfirmMsg","actionType","RegisterAuthenticator","hasSecurityCode","securityCode","securityCodeError","getInitialTwoFactorQRCode","getTwoFactorQRCode","getQRCode","registerType","hideAnotherMethodButton","step1","step1text","step2","step2text","qrcode","ImageUrl","step3","step3text","my529token","isRegisterPhone","isRegisterAuthenticator","handleOptions","handlePhone","regParams","countryCode","verificationMethod","apiCall","onpopstate","hideAuthenticatorButton","renderComponent","auth_container","authenticator","registerPhone","twoFactorRegistration","regInfo","twoFactorRegistrationUpdate","MultifactorCard","isAlwaysRequired","isPhoneDisabled","hasPhoneNumberChanged","originalPhoneNumber","phoneNumberError","isRegisterOpen","isRegisterAuthenticatorOpen","savedFunctionName","alwaysRequired","InputProps","endAdornment","InputAdornment","toggle","toggleRegisteredDevice","OtherOptions","MyInfoToggles","rememberedType","isOfficialNotificationUpdating","isTaxFormUpdating","isNewsletterUpdating","isPromotionalUpdating","isBirthdayUpdating","isSavingUtahResidency","handleNotificationUpdates","notificationApiCall","officialNotificationUpdate","taxFormsNotificationUpdate","newsletterNotificationUpdate","promoNotificationUpdate","bdayNotificationUpdate","utahResidentSave","entries","k","v","hasBlocked","isNotUpdatingAny","residentModalOpen","header_description","dropDownStyle","protectHandleNotificationUpdates","eachDropDown","alignSelf","utahResident","IsOn","DELIVERY_METHODS","addressToString","addressContainer","addressVerLine","addressStreet1","addressComma","addressStreet2","addressStreet3","addressCity","addressStatePostal","addressCountry","displayPrompt","is2FARegisteredAO","rememberedDrawerIndex","tentativeRememberedDrawerIndex","onResidentModalClose","formNotFinished","allFormsNotFinished","showAgentDetail","accountOwnerName","titleWithInfoIcon","contentLighter","phoneContainer","phoneType","phoneVerLine","phoneNum","statementsDeliveryMethod","isAllOnline","isAllMail","statementDeliveryMethodToString","when","OptionChangeDetails","currentOptionName","remainingOptionChanges","detailsTitle","zeroRemainingOptionChanges","AccountsInGroupNotice","Step1OptionCategory","formInputs","optionCategorySelection","Step2SelectPredefinedOption","selectedOptionId","selectedCategory","selectedOption","selectedOptionValue","Step2CreateCustomizedOption","currentSchema","onAllocationChange","TermsAndConditions","termsAndConditions","modalHeader","modalSubheader","Step3Submit","showCustomized","selectedOptionName","isCustomized","Submit_container","Submit_collapsableCustomizedName","ExpandLess","ExpandMore","Step4PrintReview","createdDate","printContainer","pendingOption","pendingOptionName","currentTime","hidePrintBtn","buttonsDisabled","submitLoading","getCompletedStepsToThisStep","handleFinish","finishButton","stepperStepsContainer","renderConfirmModal","NEW_OPTIONS","PREDEFINED_STATIC","PREDEFINED_ENROLLMENTDATE","CUSTOMIZED_AGEBASED","CUSTOMIZED_STATIC","isInitialLoad","stepData","matrixAllocations","calculatorErrors","stepDataScreenshot","showModalWhenMobileAndCustomized","stepDataItem","updatedStepData","clearedFormErrors","saveCategoryNameStep0","isInitialized","useInvestmentPathSchema","useExistingCustomAllocation","getSetInvestmentPath","saveOptionNameStep1","newStepData","hasAnyBracketTotalNot100Error","hasAllocationAmountError","hasBracketTotalSumOver100Error","validateAllocations","populate3DCalculatorSchema","hasNoErrors","fundCategories","categories","categoryIndex","fundIndex","Funds","FundName","MaximumAllocation","postBody","CustomSchema","postNewOptions","currentOptionId","availablePredefinedOptions","Step1OptionCategoryOptions","Step2SelectOptionComponent","staticOptions","enrollmentDateOptions","optionId","category","isEditingStepData","findCategoryByOptionId","initializeFormInputs","newOptions","PropTypes","func","isRequired","updatedCustomSchema","convert3DCalculatorSchemaTo2D","AccountsInGroupNoticeShow","accountsInGroup","acctOwnerBeneRow","acctOwner","ben","acctNumbTotalValRow","acctNum","totalVal","acctTypeAccountsInGroupRow","accountsInGroupInfo","accountsInGroupInfoIcon","openModal","toggleAccountsInGroupNotice","pageNav","accountInfo","optionChangeDetails","newOptionChanges","parentLoading","AccountDetailsCard","sourceAccount","accountDetailsAO","accountDetailsBen","accountDetailsAcctNum","accountDetailsTotalVal","accountDetailsAcctType","accountDetailsAvailableBalance","OptionButton","borderTopRightRadius","borderBottomRightRadius","DualPushButtonSwitch","DualPushButtonSwitch_container","borderTopLeftRadius","borderBottomLeftRadius","TransferTypes","TransferInputTypes","formatAccountDisplayText","noop","TargetAccount","callback","accountOptions","inputFieldType","onAccountChange","canRemove","onRemove","accountError","Transfer_destinationRow","row_0","InputLabelProps","htmlFor","Transfer_numberInput","floatValue","etc","allowNegative","removeIcon","iconPlaceholder","iconProps","onKeyUp","showFullBalanceDialog","onTransferChange","onTargetChange","addTargetAccount","removeTargetAccount","getErrorForInput","amountTotalError","Transfer_stepOneContainer","Transfer_transferTypeContainer","Transfer_transferTypeToggleContainer","Transfer_transferType_radioButtonGroup","transferType","disableRipple","InfoIcon_container","InfoIcon_icon","Transfer_accountsSelection","Transfer_sourceContainer","Transfer_sourceAccountDescription","Transfer_sourceAccountLabel","Transfer_sourceAccountName","Transfer_keepAccountOpenCheckbox","CloseAccount","Transfer_iconContainer","Transfer_destinationColumn","groupLabel","transferInputType","radioLabel","TargetAccounts","targetAccount","rowIndex","accountErrorText","dest","destIndex","Transfer_amountTotal","dollarTotal","percentTotal","disableUnderline","Transfer_addIconContainer","transactionsStyles","addAccountIcon","TransferFromReview","compactedTargets","TransferFrom_reviewContainer","TransferFrom_reviewContainerCompact","Transfer_reviewCloseAccount","Transfer_reviewAccountNumber","Transfer_detailsTitle","desktop","mobile","Transfer_detail","Transfer_reviewBeneficiaryName","Transfer_reviewAccountType","Transfer_reviewAccountOption","Transfer_reviewOptionChange","Transfer_reviewAmount","TransferToReview","TransferTo_reviewContainer","TransferTo_reviewContainerCompact","Transfer_reviewTotalAmount","TransferTermsAndConditions","onTermsToggled","Transfer_termsAndConditions","Transfer_termsCheckbox","stepIndex","isLoadingSubmit","transferSubmitted","isSmallWindow","inputKey","handlePrevStep","handleNextStep","save","goToPreviousPage","stepperCompose","stepperStyle","stepperContentCompose","stepperButtonsCompose","Transfer_stepperContentContainer","cardTitle","Transfer_stepperStepsContainer","Transfer_stepperSteps","Transfer_stepperContent","termsContainer","editing","transferScreenshot","runValidation","showOptionChangeModal","showDeferredEarningsConfirmModal","hasConfirmedDeferredEarnings","hasSeenFullBalanceDialog","showLearnMore","setupState","selectedTransfer","transfersDetailsGet","getTransferAccounts","prepareTransferPayload","targets","transferPayload","TradeDate","TransferId","editTransfer","updateTransfer","createNewTransfer","stateChangeValidationWrapper","stateChanges","transferFormErrors","transferTypeToggle","targetAccountIndex","nextTarget","other","_","newTransferType","onContinue","nextState","totalPercentage","totalAmount","destinationAccountList","totalDestinationGroupPercentage","totatDestinationGroupAmount","allowedTransferAmount","transfersContainer","detailsContainer","getBankAccounts","getAllowedBankHolders","getAccessCards","wordBreak","overflowWrap","contributionEnvironmentVars","amountHandle","removeAccount","addAccount","step0AccountsContainer","accountListDropdown","selAccount","MenuItemProps","amountInput","currencyInput","vals","removeAccountIcon","totalAndErrorsContainer","MinimumOneTimeOnlineContribution","MaximumOneTimeOnlineContribution","totalAmountStep0","val1","val2","bankAccountsLoading","toggleShowAddBank","contributionDateHandle","contributionDatesDisable","bankAccountSelectHandle","agentAccountsFormatted","datePicker","clearable","shouldDisableDate","populatedAccounts","reviewContainer","reviewAccountNumber","reviewBeneficiaryName","reviewBankAccount","reviewDate","reviewAmount","totalAmountStep2","TermsConditions","phoneEnvironmentVars","contributionType","isSpecialContribution","text_notes_list4_sublists","termsConditions_container","termsConditions_modalHeader","termsConditions_modalSubheader","subLine","toggleTermsChecked","TermsCondition","OneTime","CurrentTradeDate","contributionScreenshot","step0ValidationHasRun","step1ValidationHasRun","ValidOneTimeContributionDates","contributionSet","accountUpdatedWithAmount","newSelectedAccounts","validContributionDate","isSame","contributionCreateHandler","contributionCreate","contributionEditHandler","contributionEdit","step0Container","step1Container","defaultAccount","contributionUpdated","renderDuplicateConfirmModal","MinimumRecurringOnlineContribution","MaximumRecurringOnlineContribution","noBankAccount","errorsContainer","MaximumRecurringContributionLeadDays","nextRunDateCompose","step1RadioButtons","step1Date1","step1Date2","slotProps","nextRunDate","reviewInfoAccountNum","reviewInfoBen","reviewInfoSched","reviewInfoNextDate","reviewInfoEndDate","reviewInfoAmount","reviewInfoBankAccount","Recurring","nextRunDateGet","contributionFormat","ValidRecurringContributionDates","nextMinDateGet","momentDate","amountMessage","day1Message","endDateMessage","firstNonDisabledDate","secondNonDisabledDate","clone","occasionSelectionContainer","radioButtonLabel","radioButtonsLabelText","radioButtonsInfoIcon","annualEventDateContainer","step0Birthday","step0AnnualEvent","birthdayContainer","birthdayLabel","nextBdayRunDate","endDateContainer","reviewNextDate","reviewEndDate","Special","matchingAccount","agentAccount","accountUpdatedWithInputData","formattedDate","selectedAccountsWithBirthdays","birthdays","bday","handleCloseGiactRejectionModal","giactText","listStyleType","newBankAccount","accountHolder","routingNumber","accountNumber1","accountNumber2","nickname","showGiactRejectionModal","permissionBankAccountHolderText","inputFormat","checkRoutingNumber","copyPrevent","onpaste","GiactResultTypes","apiNewBankAccountInfo","BankAccountNumber","createAgentBankAccount","createBeneficiaryBankAccount","handleGetBankAccounts","closeModal","Fail","handleShowValidationStart","agentOnly","close","renderRequiredLanguage","AddBank_requiredLanguage","addBankModalContainer","AddBank_formAndCheckContainer","AddBank_accountForm","lineHeight","labelPlacement","onInput","checkImage","AddBank_checkImage","isTabletView","initialLoading","showAddBankModal","duplicateContributionMessage","duplicateContributionModalOpen","ignoreDuplicates","formattedContribution","AccountAmounts","IgnoreDuplicates","ScheduleType","TradeDate2","createContribution","dupeMsgs","duplicateContribution","editContribution","defaultTabGet","onTabChange","updateContributionDetails","getContributionDetails","getAgentBankAccounts","mobileTabStyle","contributionsTabs","newContribution","editedContribution","onProportionalSelect","proportionalDisabled","tableData","optionDescription","sanitizeHTML","withdrawalTypeHandle","withdrawal","withdrawalType","radioButtonLabelGenerate","withdrawalTypeError","availableWithdrawalTypes","withdrawalTypeContainer","Step1Recipient","recipient","recipientHandle","recipientError","school","Step2AmountDate","partialWithdrawalMessageOpen","partialBalanceWithdrawalOnly","fullBalanceWithdrawalOnly","amountType","leaveAccountOpen","proportionalAmounts","withdrawalScreenshot","isProportional","continueButtonHandle","amountTypeHandle","dateHandle","leaveAccountOpenHandle","amountError","amountTypeError","sellDateError","disableStartDates","disableSellDates","nextRunStartDates","availableBalanceIsMoreThanMax","areThereUncollectedFunds","nextRunDateComponent","nextStartDates","nextStartDate","startDateNotChanged","startDateMoment","getNextStartDate","partialBalanceMessage","amountDateContainer","partialBalanceMessaging","partialBalanceOnlyComponent","fullBalanceText","partialAndFullBalanceComponent","leaveAccountOpenCheckbox","propTypes","shape","number","string","array","object","diableDatesMoreThan90Days","UpdateAgentAddressModal","trigger","CheckAddress","accountIsUGMAUTMA","addressChangeMsg","checkRecipient","recipientAddress","onClickUrl","checkNote","checkMailingMessage","checkAddressContainer","rowCentered","PaymentInfo","paymentTypeHandle","noBankAccounts","paymentType","paymentTypeError","paymentAccount","bankAccountError","paymentAccounts","paymentAccountSelectHandle","beneBankAccounts","isCheckOnly","paymentAccountsFormatted","AccessCardId","electronicRequestMessage","schoolError","deliveryType","handleSchoolSearch","isSchoolRetained","ElectronicSchoolDeliveryType","displayBene","renderBeneficiary","displaySchoolAddress","displayMailCheckNotification","renderAddress","IsElectronicSchoolPaymentSchool","handleElectronicSchoolDeliveryType","retainedSchoolAddress","schoolAddressContainer","searchSchools","recipientAddressHandle","street1Error","stateError","postalCodeError","attnError","stateSelectHandle","persist","MenuProps","studentIdNumError","renderElectronicSchoolOption","renderRegularOption","Step2PaymentMethod","isUgmaUtmaAccount","ugmautma","customWithdrawalVariables","BankInfo","recipientName","paymentAccountDisplay","payeeAddress","paymentDeliveryType","actualSellDate","actualStartDateDayOfMonth","actualEndDate","createdTime","isElectronicSchoolPayment","isFullBalance","closeAccount","tableId","pAccount","investmentOption","gAccount","fullMarket","leaveOpen","withdrawalAmount","feeRow","amntRow","totalAmtMsg","amountDataType","displayTotal","summaryContainer","summaryTitle","subSummaryContainer","summarySubtitle","summaryTable","handleTermsChecked","amtDisplayMsg","recipientInfo","reviewType","reviewPayment","termsAndConditionsCheckbox","schools","schoolSelect","ElectronicSchoolPaymentSchoolId","searchOpen","searchPlaceholder","NewWithdrawals","initLoading","withdrawalRequestLoading","duplicateWithdrawalModalOpen","showPrintButtonPage","duplicateWithdrawalMessage","schoolSearchOpen","schoolSearchLoading","smallScreen","step2ValidationHasRun","frequencyChangeDisabled","pendingAmount","poaBank","savingPoaBankAgreement","poaBankModalOpen","validWithdrawalDate","dateNow","withdrawalStateSet","proportionalAmountsSet","individualAvailableForWithdrawal","savePoaBankAgreement","savePOABankSelectionAgreement","cancelPoaBankAgreement","paymentId","selectedPaymentAccount","DoesOwnerNeedNotification","nextStep","currAccount","formattedPostal","startDateChanged","finalTotalAvailableForWithdrawalNum","finalIndividualAvailableForWithdrawal","ElectronicSchoolAmnt","student","ElectronicSchoolInfo","fields","pattern_message","pattern","Capacity","infoMessagesCompose","nextStepHandle","nextIndex","clearWithdrawalByStep","clearedWithdrawalByStep","previousStepHandle","previousIndex","updatedState","getBeneBankAccounts","radioButtonsLabel","getElectronicSchoolPaymentSchool","fafsaId","street3","dateKey","checkDisplayWarning","bank","IsVerified","schoolsGet","agreeButton","handleWithdrawalRequest","setWithdrawalSubmitted","createNewWithdrawal","updateWithdrawal","WithdrawalType","withdrawalBody","ExpenseType","FullBalance","PayeeAddress","PayeeType","Proportional","School","StudentNumber","DayOfMonth","WithdrawalScheduleId","SellDate","onChangeFrequencyHandler","handleCombinePaymentAccounts","CollegeId","allowFullWithdrawalIndividual","allowFullWithdrawalGroup","updatedWithdrawal","WithdrawalScheduleType","FullMarketValue","CustomAmounts","withdrawalToEdit","CloseAccounts","SchoolDepartment","SchoolAddress","NextRunDate","newErrors","checkPartialWithdrawalAllowed","getScheduleRunDates","nextRunStartDatesAction","setEditWithdrawal","prevPropsAccountId","currentAccountPrev","frequencyTabsDisabled","datesPath","scheduleId","bankAccountId","WithdrawalDetails","accountMarketValue","accountAvailableForWithdrawal","showPendingAmount","sourceAccountId","groupAvailableForWithdrawal","cardContentContainerProportional","groupAvailableBalance","groupAvailableBalanceInfo","cardContentContainerNonProportional","currentOpt","marketVal","availableBalanceInfo","redState","accountsInGroupModalOpen","displayWarning","tradeCutoffMinusWarningTime","isBetween","tradeCutoffWarning","withdrawalDetails","newWithdrawals","Step1Amount","withdrawalInfo","IsFullBalance","partialWithdrawalWarningShow","setWithdrawalInfo","amountTypeSet","birthdateHandle","birthdateVerify","authInfo","verifyBirthdate","nextClickHandle","radioContainer","amountAccordion","renderCancelButton","BLANK_SCHOOL","Step2Recipient","PayeeCity","PayeeZipCode","PayeeState","PayeeAddressLine1","PayeeAddressLine2","addressHandle","schoolSearchHandle","renderBackButton","fullBalanceNote","termsError","timestamp","IsRecurring","LastModifiedDate","SessionIdentifier","withdrawalInfoScreenshot","backClickHandle","requestWithdrawal","stepClickHandle","stepperContentGet","loader","alternativeLabel","getGroupAccounts","editNickName","qaIndex","subAnswer","learnMoreInfoText_footer","validationStarted","selectedBankAccount","startMicroDeposits","handleButtonIsLoading","handleValidationStarted","text_complete_to_verify","ValidationFinishModal","validationAmounts","amount1","amount2","validationValues","isValidating","closeForm","handleShowValidationFinish","confirmMicroDeposits","verificationResponse","didNotMatch","validationAttemptsExceeded","validateDepositsText","amountInputs","isNumericFormat","startAdornment","depositAmounts","CardWithTitle","paperProps","PaperTitle","PaperBodyContainer","PaperBodySection","paperBodySection","PaperButtonsContainer","paperButtons","PaperBodyDivider","paperDivider","isMenuView","isLoadingURL","buttonIsLoading","hasBankAccounts","hasAccessCards","showBankAccountsLearnMore","showAccessCardsLearnMore","showEditBankModal","showRenewConfirmModal","showHasPendingTransactionsModal","showNicknameModal","showValidationStartModal","showValidationFinishModal","menuAnchorPoints","addAccountMenuOpen","showAccessCardApplicationThirdPartyWarning","showGeneralThirdPartyWarning","accessCardEligible","accountBeingEdited","accessCardURL","post2FAAction","past2FABankAccount","getGroupedBankAccounts","toggleShowBankAccountsLearnMore","toggleShowAccessCardsLearnMore","handleShowRemoveBankConfirm","post2FABankAccount","handleDeleteBankAccount","deleteBankAccount","handleRenewBankAccount","renewBankAccount","handleApproveLPOA","approvalApiEndpoint","poaApproval","handleAddAccountMenuClose","addAccountMenuAnchor","current","contains","renderLearnMoreButton","forAccessCards","renderNoBankAccounts","noAccounts_container","noAccounts_header","buttons_noAccounts","renderNoAccessCards","noAccounts_disclaimer","handleApplyForAccessCard","renderHasPendingTransactionsModal","getAccessCardURL","renderAccessCardButtons","accessCardLink","renderAccountButtons","isExpiring","lpoaApprovalStatus","lpoaSwitch","handleAccountButtons","renderAccessCardMenu","accessCard","ariaControls","ariaHaspopup","renderAccountMenu","renderBlankAccountCard","accountsOwnerSummary","bankDetailsContainer","bankDetails","renderPaymentAccounts","bankAccountsSummaryContainer","addBankButtonContainer_hasAccounts","bankAccountGroup","renderBankAccountDetailsAndButtons","learnMoreButton_hasAccounts","renderAccessCardDetailsAndButtons","accessCardReqsContainer","accessCardReqs","req","initBankAccounts","owner","validationStatus","validatedStatus","notValidatedStatus","bankHold","paperBottomLabel","AccessCardEligible","manageBankAccountsContainer","bankHoldLanguage","handleShowGiactRejectionModal","OpenCPScreenshot","approval","documentsGet","CertificateEdit","certificateFromName","certificateCustomName","onEditCertificate","saveNameAndOpenDoc","editCertificateText","fromNameInput","blankSelectedCertificate","CertificateCustomName","Url","Format","isDownloading","openCertificateEdit","selectedCertificate","hasInterestedPartyAccounts","containerEl","closeEditCertificateModalHandler","getDocuments","IsInterestedPartyDoc","openPdfStatement","documentType","pdf1099Path","DocumentTypes","downloadAccountDocumentData","statementWindow","write","loadingAnimationHTML","QuarterlyStatement","createStatementPdfToNewWindow","AccountCertificate","createCertificatePdfToNewWindow","FederalTaxForm","pdfData","mapPdfDataFrom1099QData","get1099QPdfBytes","pdfBytes","fileURL","UtahStateTaxForm","pdfTC675HPath","mapPdfDataFromTC675HData","TCFORM_ACCOUNT_TYPE_CODES","INDIVIDUAL","TAXFORMTC675_PATHS","INDIVIDUAL_INSTRUCTIONS","INSTITUTIONAL","INSTITUTIONAL_INSTRUCTIONS","UGMAUTMA","UGMAUTMA_INSTRUCTIONS","getTC675HPdfBytes","downloadLoading","loadingErrorHTML","updateAccountCertificateName","getCountries","canFilter","documentsContainer","elevation","DocumentType","TAXFORM1099_COPY_PATHS","COPY_B_MAIL_INSTRUCTIONS","Supplement","CertificateEditModal","Id","certificateEditHandler","instructionsContainer","instructionsHeader","AddNonAgentAccount","accountToVerify","beneficiaryBirthdate","isAccountVerified","verifiedAccount","verificationFailed","onAccountNumberChange","onVerifyAccount","verifyNonAgentAccount","renderAccountVerification","verifyAccountText","verifyInputs","emptyDiv","renderVerifiedAccount","verifiedAccountDetails","verifyTitle","verifyDetail","handleAddNonAgentAccount","nonAgentAccount","isNewContribution","statementLoading","termsOpen","instructionsOpen","addAccountModalOpen","contributionInputType","payPeriodContributionAmount","payrollData","Employer","PayrollAccountAllocations","EmployerState","showReview","employerHandle","employer","contributionTypeHandle","updateAmountWithPercentages","updatePercentageWithAmounts","payPeriodAmountHandle","getTotalAmount","getTotalPercentage","percentHandle","stateCode","payrollAccount","updatePayroll","EffectiveDate","hasNotOwnedAccounts","renderEmployeeSection","employeeSection","employeeNameSection","employeeName","employerInput","payPeriodContributionInput","decimalScale","fixedDecimalScale","thousandSeparator","stateInput","renderReviewDetails","PayrollBankAccountNumber","PayrollBankAccountType","PayrollRoutingNumber","reviewDetails","currentAllocationText","reviewEmployee","reviewDetail","reviewEmployer","reviewRouting","reviewBankAccountType","renderPayrollAccountList","payrollAccounts","accountNumberHeader","beneficiaryNameHeader","inputsHeader","typeInputButton","payrollAccountRow","inputs","accountListLabels","payrollAccountList","OwnedAccount","renderDollarInputs","renderPercentageInputs","totalRow","differentAccountButton","totalText","editButton","viewStatementHandle","agentMailingAddress","pdfWindow","createPayrollPdfToNewWindow","getPayroll","importantText","buttonsContainer","instructionsButton","updatedPayroll","AddIp","emailAddress1","emailAddress2","showTerms","addIp","newIpInfo","accountIds","newlyAddedIp","handleIpActions","accountIsSelected","validateSelectedAccounts","scrollIntoView","onEmailChange","preventCopy","renderAccountSelection","hideTerms","DeleteIp","deleteIp","selectedIp","EditIp","editIp","selectableAccounts","addModalOpen","deleteModalOpen","editModalOpen","successModalOpen","preIpId","preModalName","modalName","setSelectedAccounts","onAccountSelect","updatedAccountSelections","accountsTableContainer","accountSelection","renderAddIpBtn","renderInfoButtons","infoButtons","resendIpEmail","getInterestedParties","addIpButton","accountsDetail","closeChangeEmailModal","emailSubmit","isResending","validatingEmailWhileLoggedInModalOpen","resendEmailValidation","openChangeEmailModal","validatingEmailWhileLoggedIn","isEmailMissing","containerCard","require","VerifyIdentity","isUnableToVerify","hasRSADOBerror","RSADOBError","isSecurityAnswer","hasSecurityQuestion","securityQuestionError","SecurityAnswer","isRSADOB","hasConfirmedDOB","isRSAQuestions","hasDisplayMessage","displayMessage","questionSet","sendSecurityAnswer","securityQuestionAnswer","incorrectAnswerMsg","getSecurityQuestion","dob","sendRSADOB","renderRSADOB","unparsed","qId","cId","questionsIndex","log","validateRSAForm","transactionid","latestSet","IdentityVerification","getDeviceToken","challengeQuestions","ChallengeQuestions","questionLabel","DOBcontainer","aoNameLabel","aoDOBLabel","aoDOB","datePickerWidth","DOB","isFormValidated","errorMessage","selectedChoice","errorMsg","checkRegisteredDevice","renderSecurityQuestion","Confirmation","Welcome","getExistingBeneficiaries","errorTabStyles","editSsn","autocompleteAddressSelect","hasMailingErrors","mailingError","hasPhysicalErrors","physicalError","hasOtherErrors","setLoadingOn","mappedAccountOwner","saveAccountOwner","getSignupApplication","setLoadingOff","onNextClick","onAddressChange","onEditSsn","apiErrorsModified","errorIndex","ssnCompose","ssnContainer","ssnInputs","utahTaxpayerToggle","infoContainer","addressesContainer","autocompleteProps","stateFormControlProps","textFieldProps","residentContainer","existingBeneficiaryId","addressIsDisabled","shouldCopy","getExistingBeneValue","inputIsDisabled","BENEFICIARY_RELATIONSHIPS","S","onExistingBeneSelect","getExistingBeneficiary","mappedBeneficiary","saveBeneficiary","onRelationshipChange","onBackClick","addressCheckbox","investmentOptionCompose","TemplateType","isEditable","onPromoCodeChange","onStepClick","promoError","showPromoCode","phoneNumbersOnly","investmentOptionContainer","investmentOptionHeader","accountOwnerContainer","accountOwnerHeader","aoNameContainer","fieldContainer","accountOwnerAddress","beneficiaryContainer","beneficiaryHeader","beneNameContainer","LOCATIONS","nextLocation","goToLocation","setLocation","personId","resetAccountApplication","PersonId","enrollmentDateExpanded","customizedExpanded","customizedIsSaving","investmentOptionValue","showCustomizedAgeBased","showCustomizedStatic","showDisclosures","staticExpanded","closeCustomized","setCustomized","continueHandle","saveCustomized","savePredefined","customizedValidate","expandSelection","predefinedEnrollmentDateOptions","predefinedStaticOptions","openCustomized","templateType","optionIsDisabled","IsCustomAgeBased","IsCustomStatic","saveCustomizedOption","savePredefinedInvestmentOption","setOptionId","customAgeBasedOption","customStaticOption","welcomeModalOpen","saveAndCloseCustomizedButtons","customizedButtons","generalInfo","expansionPanelSummaryContent","expansionPanelSummaryRoot","expansionSummaryText","expansionPanelDetails","expandedDetails","enrollmentPerformanceAndDetails","radioButtonContainer","radioLabelContainer","createCustomizedButtons","customizedBtnInfo","customizedOptionsContainer","saveAndContinue","savePromoCode","onAccountCreate","setDisableLeftMenu","createAccount","disable","showNewWelcome","stepsToComplete","scroll","imgContainer","contentContainer","welcomeContainer","stepsContainer","progressContainer","buttonContainer","deleteApplicationModalOpen","closeDeleteModal","deleteApplicationButtonCompose","btn","deleteButton","onDeleteApplication","deleteApplication","birthdateSave","validateBirthdate","saveBirthdate","setBirthdate","support","PreflightLoader","preflightInProgress","transactionPreview","closeTransactionLoader","preflightTitle","preparingModal","preparingMessage","preparingError","displayTypes","Authentication","isDialogOpen","isWorking","regMethodError","isRegisterDevice","hasToken","tokenError","authType","submitPhoneMethod","VerifiedAppCode","registerDevice","displayRSAModal","secondaryBtn","submitPhoneCode","reSubmitPhoneCode","isDomestic","CountryCode","submitAuthenticator","deviceTokenCreate","renderPhoneMethod","renderAuthenticator","renderPhoneAuthenticate","renderMethod","continueInPlace","getTitle","matchingRoute","matcher","RegExp","ErrorBoundary","errorInfo","stack","ViewInvestmentPath","useEffect","unlisten","listen","storedVersion","removeItem","toggleSplashHasDisplayed","featuresContainer","featuresChildrenShiftFull","featuresChildrenShiftMini","featuresChildren","TransactionHub","Manage","legalFooterShiftFull","legalFooterShiftMini","legalFooter","isAppLoading","AppRoot","ThemeProvider","theme","createTheme","StyledEngineProvider","injectFirst","preloadedState","clear","isDevEnv","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","configureStore","reducer","middleware","promise","devTools","subscribe","throttle","serializedState","set","createRoot","eventCategory","eventAction","accountRoute"],"mappings":"yFACAA,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,0BAA0B,OAAS,uBAAuB,IAAM,oBAAoB,aAAe,6BAA6B,KAAO,qBAAqB,IAAM,oBAAoB,OAAS,uBAAuB,SAAW,yBAAyB,QAAU,wBAAwB,MAAQ,sBAAsB,KAAO,qBAAqB,YAAc,4BAA4B,UAAY,0BAA0B,MAAQ,sBAAsB,YAAc,4BAA4B,uBAAyB,yC,mBCC/0B,IAAMC,EACI,aADJA,EAEG,YAFHA,EAGI,aAHJA,EAII,aAJJA,EAKI,aAEJC,EACM,yBAENC,EAAe,4GACfC,EAAkB,8EAExBL,EAAOC,QAAU,CACfK,eAAgB,CACdC,oBAAqB,qBACrBC,kBAAmB,mBACnBC,oCAAqC,6CACrCC,cAAe,eACfC,uBAAwB,wBACxBC,qBAAsB,cACtBC,kBAAmB,oBACnBC,mBAAoB,YACpBC,sBAAuB,eACvBC,kCAAmC,mCACnCC,8BAA+B,+BAC/BC,WAAY,sBACZC,2BAA4B,cAC5BC,4BAA6B,uBAC7BC,+BAAgC,0BAChCC,iBAAkB,kBAClBC,SAjBc,SAiBLC,GAAa,MAAM,gBAAN,OAAuBA,IAC7CC,UAAW,YAEbC,iBAAkB,CAChBR,WAAY,oBACZS,eAAgB,iBAChBC,cAAe,gBACfC,gBAAiB,kBACjBC,kBAAmB,oBACnBC,oBAAqB,mCAEvBC,SAAU,CACRd,WAAY,eACZK,SAAU,eACVU,UAAW,gBAEbC,gBAAiB,CACfhB,WAAY,sBACZiB,kBAAmB,wBAErBC,YAAa,CACXC,WADW,SACAC,GAAe,MAAM,GAAN,OAAUpC,EAAV,YAA4BoC,IACtDC,WAFW,SAEAD,GAAe,MAAM,GAAN,OAAUpC,EAAV,YAA4BoC,IACtDE,uBAAwB,8CACxBC,aAActC,EACde,WAAY,gBACZwB,oBAAqB,uBACrBC,oBAAqB,uBACrBC,oBAAqBvC,EACrBwC,kBAAmBzC,GAErB0C,gBAAiB,CACfT,WAAYnC,EACZqC,WAAYrC,EACZgB,WAAY,0BACZwB,oBAAqB,uBACrBC,oBAAqB,uBACrBC,oBAAqBvC,EACrBwC,kBAAmBzC,GAErB2C,cAAe,kCACfC,UAAW,CACT9B,WAAY,YACZ+B,UAAW,aAEbC,eAAgB,CACdC,WAAYjD,EACZkD,WAAYlD,EACZmD,aAAc,4BACdC,aAAc,4BACdpC,WAAY,sBACZqC,YAAa,2CACbhC,SAAU,sBACViC,kBAAmB,mHACnBC,cAAe,gBAEjBC,eAAgB,CACdxC,WAAY,sBACZK,SAAU,uBAEZoC,OAAQ,CACNC,qBAAsB,sHACtBC,oBAAqB,mHAEvBC,MAAO,CACLC,UAAW,aACXV,aAAc,4BACdC,aAAc,4BACdpC,WAAY,YACZ8C,aAAc,eACdC,aAAc,eACdC,wBAAyB,2BACzBC,oBAAqB,uBACrBC,oBAAqB,uBACrB7C,SAAU,aAEZ8C,OAAQ,CACNnD,WAAY,cACZoD,mBAAoB,oBACpB/C,SAAU,cACVU,UAAW,cACXsC,wBAAyB,iHAE3BC,WAAY,CACVC,aAAc,cACdC,aAAc,iBACdC,oBAAqB,qBACrBC,aAAc,cACdC,aAAc,cACdC,aAAc,eAEhBC,aAAc,CACZC,qBAAsB,uBACtBC,UAAW,+DAEbC,aAAc,CACZC,oBAAqB,sBACrB1C,aAActC,EACdiF,sBAAuB,2CACvBC,qBAAsB,wDACtBC,qBAAsB,wBACtBC,qBAAsB,uBACtBC,iBAAkB,mBAClBC,qBAAsB,2BACtBvE,WAAY,gBAEdwE,iBAAkB,CAChBC,iBAAkB,2BAClBzE,WAAY,oBACZ0E,SAAU,iBACVC,QAAS,UACTC,SAAU,iBACVC,UAAW,kBACXC,SAAU,iBACVC,0BAA2B,6BAC3BrD,oBAAqBvC,GAEvB6F,cAAe,CACbb,qBAAsB,oCACtBD,sBAAuB,6CACvBe,mBAAoB,4BACpBC,sBAAuB,4BACvBlF,WAAY,qBACZmF,qBAAsB,wBACtB9E,SAAU,qBACV+E,kBAAmB,mBACnBC,sBAAuB,2BACvBnD,WAAY,cAGdoD,eAAgB,CACdC,kBADc,SACIC,GAAQ,MAAM,WAAN,OAAkBA,EAAlB,eAC1BC,qBAFc,SAEOD,GAAQ,MAAM,cAAN,OAAqBA,EAArB,eAC7BE,UAAW1G,EACX2G,eAJc,SAICC,EAAQC,GAAU,MAAM,gCAAN,OAAuCD,EAAvC,gBAAqDC,EAArD,MACjCtE,aAActC,EACd6G,sBANc,SAMQN,GAAQ,MAAM,cAAN,OAAqBA,EAArB,eAC9BxF,WAAY,iBACZ+F,eAAgB,8BAChBtF,eAAgB,iBAChBC,cAAe,gBACfC,gBAAiB,kBACjBqF,QAAS,6BACTC,cAAe,gBACfC,mBAAoB,oBACpBC,oBAAqB,uBACrBC,sBAAuB,yBACvBC,sBAAuB,yBACvBC,8BAlBc,SAkBgBC,EAAOC,EAAKC,EAAMjB,GAAQ,MAAM,6BAAN,OAAoCe,EAApC,YAA6CC,EAA7C,YAAoDC,EAApD,eAA+DjB,EAA/D,gBACxDjF,UAAW,WACXmG,wBAAyB,0HAE3BC,aAAc,CACZ3G,WAAY,eACZ+C,aAAc,gBAEhB6D,cAAe,CACbvG,SAAU,wB,qBC9LdvB,EAAOC,QAAU,IAA0B,mD,qBCA3CD,EAAOC,QAAU,IAA0B,2C,qBCC3CD,EAAOC,QAAU,CAAC,cAAgB,gC,qBCAlCD,EAAOC,QAAU,CAAC,eAAiB,iC,qBCAnCD,EAAOC,QAAU,CAAC,eAAiB,iC,qBCAnCD,EAAOC,QAAU,CAAC,MAAQ,wB,qBCD1BD,EAAOC,QAAU,IAA0B,uC,qBCA3CD,EAAOC,QAAU,IAA0B,8C,qBCA3CD,EAAOC,QAAU,IAA0B,oD,qBCC3CD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,QAAU,0B,qBCAtUD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,qBAAuB,uC,qBCAnVD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,+BAAiC,+CAA+C,gCAAkC,kD,qBCA9aD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,4B,qBCDxUD,EAAOC,QAAU,IAA0B,uC,qBCC3CD,EAAOC,QAAU,CAAC,wBAA0B,wCAAwC,wBAA0B,wCAAwC,SAAW,2B,qBCDjKD,EAAOC,QAAU,IAA0B,8C,qBCC3CD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,mBAAqB,mCAAmC,8BAAgC,8CAA8C,sBAAwB,wC,qBCA1dD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,MAAQ,wB,qBCApUD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,4B,qBCAxUD,EAAOC,QAAU,CAAC,aAAe,+B,qBCDjCD,EAAOC,QAAU,IAA0B,oC,oBCC3CD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,QAAU,wBAAwB,gBAAkB,gCAAgC,kBAAoB,kCAAkC,gBAAkB,gCAAgC,kBAAoB,kCAAkC,aAAe,6BAA6B,QAAU,wBAAwB,MAAQ,sBAAsB,UAAY,0BAA0B,WAAa,2BAA2B,QAAU,wBAAwB,aAAe,6BAA6B,kBAAoB,kCAAkC,kBAAoB,oC,oBCAh4BD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,gBAAkB,gCAAgC,UAAY,0BAA0B,cAAgB,8BAA8B,iBAAmB,iCAAiC,aAAe,6BAA6B,mBAAqB,mCAAmC,2BAA6B,6C,oBCAvnBD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,0BAA0B,eAAiB,+BAA+B,gBAAkB,gCAAgC,UAAY,0BAA0B,YAAc,4BAA4B,kBAAoB,kCAAkC,2BAA6B,2CAA2C,wBAA0B,wCAAwC,qBAAuB,qCAAqC,oBAAsB,oCAAoC,WAAa,2BAA2B,kBAAoB,kCAAkC,gCAAkC,kD,4DCA18BD,EAAOC,QAAU,CAAC,WAAa,2BAA2B,mBAAqB,mCAAmC,iBAAmB,iCAAiC,iCAAmC,iDAAiD,2BAA6B,2CAA2C,YAAc,4BAA4B,eAAiB,+BAA+B,oBAAsB,oCAAoC,YAAc,4BAA4B,cAAgB,8BAA8B,eAAiB,+BAA+B,eAAiB,+BAA+B,MAAQ,wB,oBCAtpBD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,sBAAsB,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,0BAA4B,0CAA0C,+BAAiC,+CAA+C,2BAA6B,2CAA2C,kCAAoC,kDAAkD,2BAA6B,2CAA2C,4BAA8B,4CAA4C,iCAAmC,iDAAiD,uBAAyB,uCAAuC,6BAA+B,6CAA6C,wBAA0B,wCAAwC,0BAA4B,0CAA0C,qBAAuB,qCAAqC,YAAc,4BAA4B,aAAe,6BAA6B,+BAAiC,+CAA+C,qCAAuC,qDAAqD,+BAAiC,+CAA+C,uCAAyC,uDAAuD,sBAAwB,sCAAsC,yBAA2B,yCAAyC,2BAA6B,2CAA2C,QAAQ,wB,oBCAtzDD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,eAAiB,+BAA+B,iBAAmB,iCAAiC,oBAAsB,oCAAoC,2BAA6B,2CAA2C,UAAY,0BAA0B,IAAM,oBAAoB,QAAU,wBAAwB,SAAW,yBAAyB,SAAW,yBAAyB,gBAAkB,gCAAgC,oBAAsB,oCAAoC,wBAA0B,wCAAwC,aAAe,+B,oBCAz4BD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,0BAA0B,eAAiB,+BAA+B,wBAA0B,wCAAwC,kBAAoB,kCAAkC,UAAY,0BAA0B,KAAO,qBAAqB,OAAS,uBAAuB,aAAe,6BAA6B,kBAAoB,kCAAkC,kBAAoB,kCAAkC,mBAAqB,qC,oBCAzxBD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,kBAAoB,kCAAkC,iBAAmB,iCAAiC,QAAU,wBAAwB,OAAS,uBAAuB,KAAO,qBAAqB,sBAAwB,sCAAsC,aAAe,6BAA6B,qBAAuB,qCAAqC,YAAc,4BAA4B,aAAe,6BAA6B,qBAAuB,uC,oBCAvxBD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,eAAiB,+BAA+B,cAAgB,8BAA8B,YAAc,4BAA4B,gBAAkB,gCAAgC,cAAgB,8BAA8B,kBAAoB,kCAAkC,oBAAsB,oCAAoC,sBAAwB,sCAAsC,4BAA8B,4CAA4C,8BAAgC,8CAA8C,2BAA6B,2CAA2C,2BAA6B,2CAA2C,6BAA+B,6CAA6C,6BAA+B,6CAA6C,KAAO,qBAAqB,SAAW,yBAAyB,MAAQ,sBAAsB,YAAc,4BAA4B,oBAAsB,oCAAoC,oBAAsB,oCAAoC,iBAAmB,iCAAiC,mBAAqB,qC,oBCAv9CD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,UAAY,0BAA0B,mBAAqB,mCAAmC,QAAU,wBAAwB,kBAAoB,kCAAkC,eAAiB,+BAA+B,iBAAmB,iCAAiC,kBAAoB,kCAAkC,sBAAwB,sCAAsC,uBAAyB,uCAAuC,qBAAuB,qCAAqC,uBAAyB,uCAAuC,+BAAiC,+CAA+C,aAAe,+B,oBCAr+BD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,aAAe,6BAA6B,UAAY,0BAA0B,eAAiB,+BAA+B,gBAAkB,gCAAgC,KAAO,qBAAqB,MAAQ,sBAAsB,SAAW,yBAAyB,iBAAmB,iCAAiC,wBAA0B,wCAAwC,oBAAsB,oCAAoC,iBAAmB,iCAAiC,WAAa,2BAA2B,SAAW,yBAAyB,UAAY,0BAA0B,SAAW,yBAAyB,iBAAmB,mC,oBCA39BD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,iBAAmB,iCAAiC,QAAU,wBAAwB,UAAY,0BAA0B,UAAY,0BAA0B,WAAa,2BAA2B,OAAS,uBAAuB,cAAgB,8BAA8B,uBAAyB,uCAAuC,OAAS,uBAAuB,QAAU,wBAAwB,KAAO,uB,oBCA7tBD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,SAAS,aAAe,6BAA6B,gBAAkB,gCAAgC,YAAc,4BAA4B,WAAa,2BAA2B,WAAa,2BAA2B,YAAc,8B,iECDliBD,EAAOC,QAAU,IAA0B,+C,qBCA3CD,EAAOC,QAAU,IAA0B,wC,qBCC3CD,EAAOC,QAAU,CAAC,QAAU,UAAU,OAAS,UAAU,QAAU,UAAU,MAAQ,UAAU,KAAO,sBAAsB,gBAAkB,sBAAsB,KAAO,UAAU,SAAW,UAAU,YAAc,UAAU,UAAY,UAAU,YAAc,QAAQ,YAAc,QAAQ,aAAe,W,kCCDnT,4CAeM8H,EAAKC,OAAOD,GAElBA,EAAG,SAAU,eAAgB,QAC7BA,EAAG,UAAW,gBACdA,EAAG,UAAW,oBACdA,EAAG,UAAW,kBAAmB,CAC/BE,YAAY,EACZC,oBAAqB,EACrBC,cAAe,aACfC,cAAe,SACfC,gBAAiB,SAACC,EAAWC,GAE3B,OADAD,EAAUE,KAAOC,YAASF,EAASD,EAAUE,MAAME,UAC5CJ,KAGXP,EAAG,OAAQ,a,qKC5BLY,EAAiBX,OAAOW,eAE9B,SAASC,EAAiBC,GACxB,IAAMC,EAAQC,eAAeC,QAAQ,SAIrC,OAHAC,IAAMC,SAASC,QAAQC,OAAOC,cAAgBP,GAAS,UACvDG,IAAMC,SAASC,QAAQC,OAAO,mBAAqB,KACnDH,IAAMC,SAASC,QAAQG,KAAK,gBAAkB,mBACvCX,EAAeY,IAAMV,EAGvB,SAASW,EAAWX,GAAuB,IAAdY,EAAa,uDAAJ,GACrCC,EAAWd,EAAiBC,GAClC,OAAOI,IAAMU,IAAID,EAAUD,GACxBG,MAAK,SAAAC,GAAG,OAAIA,KACZC,OAAM,SAAAC,GAAG,OAAIA,EAAIC,YAGf,SAASC,EAAYpB,EAASqB,GAAoB,IAAdT,EAAa,uDAAJ,GAC5CC,EAAWd,EAAiBC,GAClC,OAAOI,IAAMK,KAAKI,EAAUQ,EAAMT,GAC/BG,MAAK,SAAAC,GAAG,OAAIA,KACZC,OAAM,SAAAC,GAAG,OAAIA,EAAIC,YAGf,SAASG,EAAWtB,EAASqB,GAAoB,IAAdT,EAAa,uDAAJ,GAC3CC,EAAWd,EAAiBC,GAClC,OAAOI,IAAMmB,IAAIV,EAAUQ,EAAMT,GAC9BG,MAAK,SAAAC,GAAG,OAAIA,KACZC,OAAM,SAAAC,GAAG,OAAIA,EAAIC,YAGf,SAASK,EAAcxB,GAAuB,IAAdY,EAAa,uDAAJ,GACxCC,EAAWd,EAAiBC,GAClC,OAAOI,IAAMqB,OAAOZ,EAAUD,GAC3BG,MAAK,SAAAC,GAAG,OAAIA,KACZC,OAAM,SAAAC,GAAG,OAAIA,EAAIC,YAGf,SAASO,EAAWC,GACzB,GAAIA,GAAkBA,EAAeC,OAAS,EAAG,CAC/C,IAAMf,EAAQ,kGAA8Fc,GAC5G,OAAOvB,IAAMU,IAAID,GACdE,MAAK,SAAAC,GAAG,OAAIA,KACZC,OAAM,SAAAC,GAAG,OAAIW,QAAQC,OAAOZ,MAG/B,OAAOW,QAAQC,OAAO,kBAInB,SAASC,EAAkBC,GAChC,IAAMC,EAAgB9C,OAAO+C,SAASC,KAAKC,SAAS,SAAWC,2CAA4CA,2CAC3G,OAAO,IAAIR,SAAQ,SAAAS,GACjBnD,OAAOoD,WAAWC,OAAM,WACtBrD,OAAOoD,WAAWE,QAAQR,EAAe,CAAED,WACxCjB,MAAK,SAAAC,GAAG,OAAIsB,EAAQtB,YCpDtB,IAAM0B,EAAmB,gDAEnBC,EAAkB,+CAElBC,EAAa,0CACbC,EAAkB,+CAOlBC,EAAmB,gDAEnBC,EAAkB,+CAIlBC,EAAoB,iDACpBC,EAAqB,kDAKrBC,EAAiB,8CACjBC,EAAe,4CAEfC,EAAiB,8CACjBC,EAAuB,oDACvBC,EAA2B,wDAE3BC,EAA0B,oEAC1BC,EAAmB,gDAEnBC,EAAoB,iDACpBC,EAA0B,uDAC1BC,EAAoB,iDAEpBC,EAAuB,oDACvBC,EAAwB,qDAExBC,EAAoB,iDAEpBC,EAA0B,uDAI1BC,EAAoB,iDAEpBC,EAA8B,2DAE9BC,EACa,cADbA,EAEgB,kBAFhBA,EAGc,wBAHdA,EAIgB,0BAJhBA,EAKO,kBALPA,EAMG,kBAGHC,EACA,YADAA,GAEF,UAFEA,GAGD,WAHCA,GAIE,cAIFC,GAGF,UAHEA,GAID,WAJCA,GAKA,YAGAC,GACC,MADDA,GAEN,MAFMA,GAGL,gBAGKC,GAIH,SAGGC,GACG,eADHA,GAEF,UAFEA,GAGF,UAHEA,GAIG,eAJHA,GAKA,YALAA,GAMO,mBCvDb,SAASC,GAAWC,GACzB,IAAMtD,EAAWC,EAAY,yBAA0BqD,GAGjDC,EAAiBC,SAASC,eAAe,aAG/C,OAFAF,GAAkBC,SAASC,eAAe,aAAaC,WAAWC,YAAYJ,GAEvE,CACL7G,KAAM6E,EACNqC,QAAS5D,GAqBN,SAAS6D,KACd,MAAO,CACLnH,KAAM6E,GAIH,SAASuC,GAAeC,GAC7B,MAAO,CACLrH,KAAMkF,EACNoC,KAAM,CAAED,aAmCL,SAASE,GAAgBC,GAC9B,IAAMlE,EAAWC,EAAY,aAAc,CAAEkE,MAAOD,IACpD,MAAO,CACLxH,KAAMiF,EACNiC,QAAS5D,EACTgE,KAAM,CAAEE,mBAIL,SAASE,KACd,IAAMpE,EAAWR,EAAW,gCAC5B,MAAO,CACL9C,KAAMqF,EACN6B,QAAS5D,GAIN,SAASqE,KACd,IAAMrE,EAAWR,EAAW,0BAC5B,MAAO,CACL9C,KAAMsF,EACN4B,QAAS5D,GAIN,SAASsE,GAAcC,GAC5B,MAAO,CACL7H,KAAMuF,EACN+B,KAAM,CAAEO,WAIL,SAASC,GAAoBD,GAClC,MAAO,CACL7H,KAAMwF,EACN8B,KAAM,CAAEO,WAYL,SAASE,KACd,MAAO,CACL/H,KAAM4F,GAIH,SAASoC,KACd,MAAO,CACLhI,KAAM6F,GAIH,SAASoC,KACd,MAAO,CACLjI,KAAM8F,GAIH,SAASoC,KAA0C,IAAvBC,EAAsB,wDACjD7E,EAAWR,EAAW,2BAC5B,MAAO,CACL9C,KAAM0F,EACNwB,QAAS5D,EACTgE,KAAM,CAAEa,iBAIL,SAASC,KACd,IAAM9E,EAAWR,EAAW,qBAC5B,MAAO,CACL9C,KAAM2F,EACNuB,QAAS5D,GAYN,SAAS+E,GAAoBC,GAClC,IAAMhF,EAAWG,EAAW,gCAAiC6E,GAC7D,MAAO,CACLtI,KAAMgG,EACNkB,QAAS5D,GAIN,SAASiF,KACd,IAAMjF,EAAWR,EAAW,yBAC5B,MAAO,CACL9C,KAAMiG,EACNiB,QAAS5D,GAIN,SAASkF,GAAiBC,GAC/B,MAAO,CACLzI,KAAMkG,EACNoB,KAAM,CAAEmB,UCjOL,SAASC,GAAoBC,GAElC,IAAMC,EAAQC,GAAMC,WAEdC,EAAiB,CACrBC,QAASJ,EAAMI,QACfC,IAAK3H,OAAO+C,SAAS6E,KACrBC,QAAS,CACPC,OAAQ9H,OAAO+H,UAAUD,OACzBE,QAAShI,OAAO+H,UAAUE,aAIxB3C,EAAS,CACb4C,WAAYC,KAAKC,UAAUf,GAC3BgB,UAAWF,KAAKC,UAAUX,KAGxBH,EAAMI,QAAQ5G,OAASuG,EAAM3I,OAC/BuD,EAAY,SAAUqD,GACnBxD,OAAM,WACLwG,QAAQC,KAAK,gBAAiBjD,M,wBCrBhCpN,GACC,MADDA,GAEG,UAFHA,GAGS,sCAHTA,GAIE,OAJFA,GAKG,QALHA,GAMI,SANJA,GAOI,SAPJA,GAQG,QARHA,GASK,UATLA,GAUM,WAVNA,GAWI,SAXJA,GAYI,SAZJA,GAaE,OAbFA,GAcE,OAdFA,GAgBI,SAhBJA,GAiBQ,aAjBRA,GAkBE,OAlBFA,GAmBA,KAnBAA,GAoBG,QApBHA,GAqBQ,uBArBRA,GAsBM,WAtBNA,GAuBI,SAvBJA,GAwBI,SAxBJA,GAyBI,SAzBJA,GA0BE,OA1BFA,GA2BE,OA3BFA,GA4BI,SA5BJA,GA6Ba,6BA7BbA,GA8BI,SA9BJA,GAgCM,WAhCNA,GAiCE,OAEFC,GAAS,CACbqQ,WADa,SACF1J,EAAQC,GAAU,MAAM,uBAAN,OAA8BD,EAA9B,gBAA4CC,EAA5C,MAC7B0J,eAAgB,wBAChBC,WAAY,gCACZC,aAAc,uDACdC,aAAc,uBACdC,YANa,SAMDC,EAASC,GAAW,MAAM,wBAAN,OAA+BD,EAA/B,gBAA8CC,EAA9C,MAChCC,cAAe,8BACfC,kBAAmB,qBACnBC,oBAAqB,qCACrBC,oBAAqB,qCACrBC,2BAA4B,mDAC5BC,mBAAoB,mCACpBC,kBAAmB,mCACnBC,gBAAiB,wBACjBC,uBAAwB,sCACxBC,iBAAkB,0CAClBC,SAAU,qBACVC,gBAAiB,sDACjBC,cAAe,2BACfC,uBAAwB,kHACxBC,WAAY,2CACZC,qBAAsB,6CACtBC,YAAa,8CACbC,oBAAqB,0CACrBC,sBAAuB,uDACvBC,yCA1Ba,SA0B4BC,GACvC,MAAM,wCAAN,OAA+CA,IAEjDC,mBAAoB,2CACpBC,4CA9Ba,SA8B+BF,GAC1C,MAAM,0CAAN,OAAiDA,KAG/CG,GAAa,CACjBC,aAAc,OACdC,mBAAoB,cACpBC,cAAe,QACfC,gBAAiB,mBACjBC,gBAAiB,mBACjBC,iBAAkB,yBAClBC,UAAW,aACXC,YAAa,cACbC,MAAO,QACPC,cAAe,gBACfC,UAAW,aACXC,UAAW,aACXC,SAAU,YACVC,WAAY,cACZC,SAAU,WACVC,iBAAkB,mBAClBC,IAAK,MACLC,IAAK,yBACLC,IAAK,MACLC,SAAU,WACVC,aAAc,yBAIVxT,GAAe,kGAEfC,GAAkB,0EAClBwT,GAAoB,8QAEpBC,GAA4B,wJAE5BC,GACJ,oCACE,sMACA,4BACE,4BACE,mHADF,+DAGA,4BACE,+GADF,uEAGA,4BACE,iFADF,gE,qBCuzFSC,GAp5FC,CACd1T,eAAgB,CACdiB,SADc,SACLC,GAAa,MAAM,aAAN,OAAoBA,IAC1CyS,eAAgB,mBAChBhS,UAAW,kBACXiS,gBAAiB,kBACjBC,YAAa,WAEfzS,iBAAkB,CAChBR,WAAY,gBACZkT,sBAAuB,yFAEzBC,iBAAkB,CAChBC,aAAcpU,GACdqU,aAAcpU,GAAOwQ,aACrB6D,2BAA4BrU,GAAOqR,uBACnCiD,mBAAoBtU,GAAO0R,uBAC3B6C,oBAAqBvU,GAAO4R,qBAC5B4C,mBAAoB,gBACpBC,cAAerC,GAAWO,UAC1B+B,gBAAiBtC,GAAWQ,YAC5B+B,cAAevC,GAAWW,UAC1B6B,cAAexC,GAAWY,UAC1B6B,aAAczC,GAAWa,SACzB6B,eAAgB1C,GAAWc,WAC3B6B,YAAY,GAAD,OAAK3C,GAAWkB,IAAhB,gBAA2BlB,GAAWmB,KACjDyB,oBAAoB,WAAD,OAAa5C,GAAWkB,IAAxB,gBAAmClB,GAAWmB,KACjE0B,mBAAoB7C,GAAWqB,aAC/ByB,kBAAmB,mCACnBC,gBAAiB,CACf,6CACA,uFACA,gJACA,+DAGJtT,SAAU,CACRd,WAAY,UACZK,SAAU,YACVgU,cAAe,WACftT,UAAW,WACXuT,oBAAqB,qBAEvBC,gBAAiB,CACfvU,WAAY,eACZe,UAAW,eACXV,SAAU,qBAEZW,gBAAiB,CACfwT,gBAAiB,cACjBC,gBAAiB,UACjBC,kBAAmB,gBACnBpV,kBAAmB,gBACnBqV,iBAAkB,cAClBC,iBAAkB,cAClBC,sBAAuB,mBACvBC,iBAAkB,cAClBC,iBAAkB,oBAClB3U,iBAAkB,cAClB4U,gBAAiB,aACjBC,iBAAkB,eAClBC,kBAAmB,gBACnBC,aAAc,WACdC,eAAgB,cAElBC,qBAAsB,CACpBC,SAAU,CACR,CACEC,SAAU,kDACVC,OAAQ,sPAEV,CACED,SAAU,6BACVC,OAAQ,+bAEV,CACED,SAAU,0CACVC,OAAQ,CACN,kHACA,CACE,8IACA,8HACA,qHAIN,CACED,SAAU,0BACVC,OAAQ,CACN,kHACA,8TACA,uZAGJ,CACED,SAAU,8CACVC,OAAQ,0XAEV,CACED,SAAU,sEACVC,OAAQ,uJAEV,CACED,SAAU,mHACVC,OAAQ,2GAEV,CACED,SAAU,yCACVC,OAAQ,6SAEV,CACED,SAAU,sEACVC,OAAQ,CACN,iXACA,oWAGJ,CACED,SAAU,yDACVC,OAAQ,CACN,yTACA,0YAGJ,CACED,SAAU,6DACVC,OAAQ,iQAEV,CACED,SAAU,oEACVC,OAAQ,oHAEV,CACED,SAAU,8EACVC,OAAQ,CACN,mKACA,8MACA,wEAGJ,CACED,SAAU,uCACVC,OAAQ,+HAEV,CACED,SAAU,qCACVC,OAAQ,yTAEV,CACED,SAAU,kDACVC,OAAQ,yNAEV,CACED,SAAU,8EACVC,OAAQ,uQAEV,CACED,SAAU,4EACVC,OAAQ,sEAEV,CACED,SAAU,2DACVC,OACE,oCACE,2HACA,2BAAOC,UAAWC,KAAOC,iBACvB,4BACE,wBAAIF,UAAWC,KAAOE,cAAtB,wBACA,wBAAIH,UAAWC,KAAOE,cAAtB,YAEF,4BACE,wBAAIH,UAAWC,KAAOG,cAAtB,qBACA,wBAAIJ,UAAWC,KAAOG,cAAeC,4BAAkB,QAEzD,4BACE,wBAAIL,UAAWC,KAAOG,cAAtB,qCACA,wBAAIJ,UAAWC,KAAOG,cAAeC,4BAAkB,OAEzD,4BACE,wBAAIL,UAAWC,KAAOG,cAAtB,iCACA,wBAAIJ,UAAWC,KAAOG,cAAeC,4BAAkB,OAEzD,4BACE,wBAAIL,UAAWC,KAAOG,cAAtB,qCACA,wBAAIJ,UAAWC,KAAOG,cAAeC,4BAAkB,OAEzD,4BACE,wBAAIL,UAAWC,KAAOG,cAAtB,sCACA,wBAAIJ,UAAWC,KAAOG,cAAeC,4BAAkB,UAMjE,CACEP,SAAU,yDACVC,OAAQ,uDAEV,CACED,SAAU,6CACVC,OAAQ,yHAEV,CACED,SAAU,kGACVC,OAAQ,kJAEV,CACED,SAAU,iEACVC,OAAQ,oDAEV,CACED,SAAU,kDACVC,OAAQ,sGAEV,CACED,SAAU,iEACVC,OAAQ,4NAEV,CACED,SAAU,+DACVC,OAAQ,CACN,2GACA,CACE,0EACA,yGAEF,4HAGJ,CACED,SAAU,gCACVC,OAAQ,+LAEV,CACED,SAAU,+DACVC,OAAQ,+FAEV,CACED,SAAU,qDACVC,OAAQ,qFAEV,CACED,SAAU,4FACVC,OAAQ,6HAEV,CACED,SAAU,+DACVC,OAAQ,8HAEV,CACED,SAAU,6EACVC,OAAQ,sFAGZO,iBAAkB,eAClBC,kBAAmB,qkBAErBC,aAAc,CACZhU,WAAYjD,GACZkX,UAAWlX,GACXmX,oBAAqB,gCACrBC,SAAU,8CACV7U,aAActC,GAAOuR,SACrB6F,mBAAoB,mCACpBC,mBAAoB,qCACpBC,oBAAqB,iDACrBC,iBAAkB,mBAClBC,mBAAoB,iBACpBC,mBAAoB,iBACpBC,2BAA4B,yBAC5BC,aAAc,WACdC,aAAc,mBACdC,YAAa,iBACbC,YAAa,UACbC,kBAAmB,iBACnBC,yBAA0B,mHAC1BC,yBAA0B,8EAC1BC,yBAA0B,4FAC1BC,yBAA0B,2KAC1BC,yBAA0B,4WAC1BC,oCAAqC,kDAEvCC,aAAc,CACZC,WAAY,UACZC,wBAAyB,qBACzB/D,cAAerC,GAAWO,UAC1B8F,WAAY1Y,GACZ2Y,sBAAuB,sBACvBtX,SAAU,iBACVU,UAAW,sBACX6W,wBAAyB,wDACzBC,aATY,SASCC,GAAiB,OAAOC,KAAM,oEAAD,OAAqED,EAArE,aAAuFA,EAAvF,YAE5CE,4BAA6B,CAC3BC,oBAAqB,kRACrBC,oBAAqB,2GACrBC,oBAAqB,qGAEvBjX,YAAa,CACXC,WADW,SACAC,GAAe,MAAM,GAAN,OAAUpC,GAAV,YAA4BoC,IACtDC,WAFW,SAEAD,GAAe,MAAM,GAAN,OAAUpC,GAAV,YAA4BoC,IACtDE,uBAAwBrC,GAAOsR,iBAC/BhP,aAActC,GAAOuR,SACrB+C,mBAAoBtU,GAAO0R,uBAC3ByH,uBAAwBnZ,GAAOgR,oBAC/BjQ,WAAY,YACZwB,oBAAqB,mBACrBC,oBAAqB,mBACrBE,kBAAmBzC,IAErBmZ,QAAS,CACPC,SAAUtZ,GACVuZ,WAAYvZ,GACZwZ,SAAUxZ,GACVyZ,SAAUzZ,GACV0Z,eAAgB,mBAChBC,SAAU,aACVC,mBAAoB,gBACpBC,gBAAiB,oBACjBC,kBAAmB,2BACnBC,kBAAmB,eACnBC,aAAc,UACdC,eAAgB,oBAChBC,eAAgB,kKAChBC,SAAU,+FACVC,mBAAoB,kFACpBC,gBAAiB,8JACjBC,kBAAmB,2IACnBC,mBAAoB,gBACpBC,mBAAoB,0CACpBC,mBAAoB,iDACpBC,mBAAoB,uJACpBC,kBAAmB,wHACnBC,cAAe,6FACfC,aAAc,iGAEhBC,cAAe,CACbC,WAAY,kBACZC,SAAU,OACVC,QDnQO,MCoQPC,sBAAuB,kBACvBC,iBAAkB,oBAClBC,yBAA0B,sBAE5BC,sBAAuB,CACrBra,WAAY,gBACZsa,YAAa,2GACbC,YAAa,kPACbC,oBAJqB,SAIDC,GAA6B,MAAM,2FAAN,OAAkGA,EAAlG,4EACjDC,YAAa,gHACbC,YAAa,CACX,qDACA,0HACA,+CAEFC,YAAa,mEACbC,YAZqB,SAYTC,EAAQC,GAClB,MAAO,CACL,+DADK,gCAEoBjF,4BAAkBgF,GAFtC,oDAG4BhF,4BAAkBgF,GAH9C,qCAGkFC,EAHlF,iBAMTC,YAAa,+IACbC,YAAa,iGAEfC,YAAa,CACXC,gBAAiB,4BACjBC,0BAA2B,6BAC3BC,gBAHW,SAGKja,GAAe,MAAM,MAAN,OAAaA,EAAb,iCAEjCka,gBAAiB,CACfC,WAAYvc,GACZmC,WAAYnC,GACZwc,mBAAoBvc,GAAOuR,SAC3BiL,gBAAiBxc,GAAOsR,iBACxBgD,mBAAoBtU,GAAO0R,uBAC3ByH,uBAAwBnZ,GAAOgR,oBAC/BjQ,WAAY,sBACZG,+BAAgC,sBAChCub,oBAAqB,mBACrBla,oBAAqB,mBACrBE,oBAAqBvC,GACrBwC,kBAAmBzC,IAErByc,gBAAiB,CACfrD,SAAUtZ,GACVoU,aAAcpU,GACdqU,aAAcpU,GAAOwQ,aACrB6D,2BAA4BrU,GAAOqR,uBACnCiD,mBAAoBtU,GAAO0R,uBAC3B6C,oBAAqBvU,GAAO4R,qBAC5B8D,iBAAkB,cAClBjB,cAAerC,GAAWO,UAC1BgK,WAAYvK,GAAWwK,OACvBlI,gBAAiBtC,GAAWQ,YAC5BiK,kBAAmB,uCACnBlI,cAAevC,GAAWW,UAC1B8B,aAAczC,GAAWa,SACzB6J,0BAA2B,2CAC3BhI,eAAgB1C,GAAWc,WAC3B6J,2BAA4B,4CAC5BC,iBAAkB,gCAClBjI,YAAY,GAAD,OAAK3C,GAAWkB,IAAhB,gBAA2BlB,GAAWmB,KACjDyB,oBAAoB,WAAD,OAAa5C,GAAWkB,IAAxB,gBAAmClB,GAAWmB,KACjE0B,mBAAoB7C,GAAWM,iBAC/BuK,oBAAqB,iCACrBC,kBAAmB,CACjB,6GACA,iDACA,4FACA,4CACA,uJAGJC,iBAAkB,CAChBC,uBADgB,SACOC,EAAYC,GAAe,MAAM,SAAN,OAAgBD,EAAhB,gBAAkCC,KAEtFC,iBAAkB,CAChBC,YAAa,OACbC,qBAAsB,mBACtBC,qBAAsB,yDACtBC,oBAAqB,iBACrBC,yBAA0B,uBAE5BC,cAAe,CACbC,yBAA0B,gBAC1BC,aAAc,WACdC,cAAe,YACfC,qBAAsB,mBACtBC,2BAA4B,0BAC5BC,yBAA0B,wBAC1BC,eAAgB,qBAChBC,cAAe,oBACfC,6BAA8B,kCAEhCC,oBAAqB,CACnB9b,oBAAqBvC,GACrBse,mBAAoB,uCACpBC,uBAAwB,oDACxBC,wBAAyB,uBACzBC,gBAAiB,CAAC,SAAU,sBAAuB,qBAAsB,iBAE3EC,yBAA0B,CACxBC,gBAAiB,cACjBC,WAAY,SACZC,mBAAoB,iBACpBC,qBAAsB,mBACtBC,mBALwB,SAKLC,EAAKC,GAAO,MAAM,2BAAN,OAAkCD,EAAlC,gBAA6CC,EAA7C,MAC/BC,WAAY,UAEdC,yBAA0B,CACxBC,aAAc,mBACdC,sBAAuB,oBACvBC,iBAAkB,eAClBC,aAAc,wBAEhBC,yBAA0B,CACxBC,eAAgB,8DAElBC,yBAA0B,CACxBC,gBAAiB,qDACjBC,cDnYuB,MCqYzBC,0BAA2B,CACzBC,qBAAsB,iBACtBC,aAAc,SACdC,mBAAoB,eACpBC,gBAAiB,mBACjBC,WAAY,OACZC,YAAa,UAEfC,sBAAuB,CACrB7d,oBAAqBvC,GACrBue,uBAAwB,oDACxB8B,yBAA0B,wCAC1BC,wBAAyB,8CACzBC,yBAA0B,2DAC1BC,6BAA8B,yDAC9BhC,wBAAyB,wBACzBC,gBAAiB,CAAC,wBAAyB,yBAA0B,qBAAsB,gBAC3FgC,yBAA0B,mEAC1BC,cAAe,kBAEjBC,2BAA4B,CAC1BvB,aAAc,mBACdwB,mBAF0B,SAEPC,EAAWC,EAAWC,GAAyB,MAAM,2BAAN,OAAkCF,EAAlC,gBAAmDC,EAAnD,kDAAsGD,EAAtG,gBAAuHE,EAAvH,sCAClEnC,WAAY,SACZU,iBAAkB,eAClBR,qBAAsB,mBACtBkC,kBAAmB,0BAErBC,2BAA4B,CAC1BL,mBAD0B,SACPC,EAAWC,EAAWC,GAAyB,MAAM,uCAAN,OAA8CF,EAA9C,gBAA+DC,EAA/D,kDAAkHD,EAAlH,gBAAmIE,EAAnI,sCAClEG,aAAc,yDACdC,eAH0B,SAGXC,EAAWC,GAAW,OAAOD,EAAY,qBAAuBC,EAAU,0BAA4B,oBACrHC,YAAa,UACbC,oBAAqB,oBACrBC,gBAN0B,SAMVJ,GAAa,OAAOA,EAAY,0BAA4B,qBAC5EK,kBAAmB,iBAErBC,2BAA4B,CAC1BjC,eAAgB,8DAElBkC,2BAA4B,CAC1BhC,gBAAiB,qDACjBC,cD/auB,MCibzBgC,4BAA6B,CAC3BC,oBAD2B,SACPR,EAASS,EAAMC,GAAQ,OAAOV,EAAO,iBAAaS,EAAb,oCAA+CA,EAA/C,gBAA2DC,EAA3D,oBACzDjC,qBAAsB,kBACtBC,aAAc,SACdC,mBAAoB,gBACpBC,gBAAiB,oBACjB+B,eAAgB,YAChBC,gBAAiB,0BACjBC,oBAR2B,SAQPb,GAAW,OAAOA,EAAU,iBAAmB,oBAErEc,oBAAqB,CACnB5f,oBAAqBvC,GACrBse,mBAAoB,uCACpBC,uBAAwB,oDACxB8B,yBAA0B,wCAC1B7B,wBAAyB,wBACzBC,gBAAiB,CAAC,gBAAiB,eAAgB,qBAAsB,iBAE3E2D,yBAA0B,CACxBrD,mBADwB,SACLC,EAAKC,GAAO,MAAM,2BAAN,OAAkCD,EAAlC,gBAA6CC,EAA7C,MAC/BN,gBAAiB,cACjBC,WAAY,SACZyD,aAAc,WACdC,aAAc,gBACdC,sBAAuB,oBACvB1D,mBAAoB,iBACpB2D,eAAgB,aAChB1D,qBAAsB,mBACtB2D,4BAA6B,oGAC7B/B,cAAe,iBACfxB,WAAY,UAEdwD,yBAA0B,CACxBtD,aAAc,mBACdE,iBAAkB,eAClBC,aAAc,wBAEhBoD,yBAA0B,CACxBlD,eAAgB,8DAElBmD,yBAA0B,CACxBjD,gBAAiB,qDACjBC,cD3duB,MC6dzBiD,0BAA2B,CACzB/C,qBAAsB,kBACtBC,aAAc,SACdC,mBAAoB,gBACpBC,gBAAiB,oBACjB+B,eAAgB,YAChBc,oBAAqB,iBACrB3C,YAAa,SACb/e,UAAW,QAEb2hB,4BAA6B,CAC3BliB,WAAY,uBACZmiB,kBAAmB,2EACnBC,4BAA6B,wCAC7BC,mBAAoB,CAClB,2LACA,iIACA,0HAEFC,0BAA2B,2KAC3BC,kBAAmB,CACjB,8EACA,4GACA,qDACA,6CAEFC,WAAY,wJAEZC,wBAAyB,CACvB,wBACA,8DACA,8DACA,2IAEFC,WAAY,SACZC,iBAAkB,CAChB,6GACA,sGACA,2IACA,4PACA,0GACA,yMAEFC,iBAAkB,8BAClBC,iBAAkB,4GAClBC,kCAnC2B,YAmCgC,IAAvBC,EAAsB,EAAtBA,mBAClC,MAAO,CACL,sDACA,2FACA,CACE,4GADF,2CAEsCA,EAFtC,QAMJC,sCA7C2B,YA6C+C,IAAlCD,EAAiC,EAAjCA,mBAAoBE,EAAa,EAAbA,UAC1D,MAAO,CACL,sDACA,2FACA,CACE,yGADF,2CAEsCF,EAFtC,iDAGoCE,EAHpC,yEAOJC,iBAAkB,qbAClBC,eAAgB,qaAElBthB,cAAe,8BACfuhB,ID9hBS,MC+hBTC,wBAAyB,CACvBC,mBAAoB,gEACpBC,mBAAoB,2IACpBC,mBAAoB,qGAEtBC,kBAAmB,CACjBC,iBAAkB,aAClBC,gBAAiB,YACjBC,oBAAqB,iBACrBC,aAAc,4BACdC,uBAAwB,SACxBC,uBAAwB,wEACxBC,uBAAwB,SACxBC,WAAY,QACZC,aAAc,SACdC,eAAgB,WAChBC,YAAa,SAEfC,QAAS,CACPC,kBAAmB,uBACnBjlB,oBAAqB,iBACrBC,kBAAmB,eACnBqV,iBAAkB,cAClBpV,oCAAqC,iCACrCqV,iBAAkB,cAClBpV,cAAe,WACfC,uBAAwB,oBACxBC,qBAAsB,UACtBC,kBAAmB,gBACnBC,mBAAoB,QACpB2kB,SAAU,gCACV1kB,sBAAuB,WACvBC,kCAAmC,+BACnCC,8BAA+B,iBAC/BK,iBAhBO,SAgBUokB,GAAc,MAAM,eAAN,OAAsBA,IACrDC,cAAe,+BAEjBC,UAAW,CACTziB,WAAYjD,GACZ2lB,aAAc,WACdC,SAAU5lB,GACVuC,aAActC,GAAOuR,SACrBqU,cAAe,YACfC,wBAAyB,+BACzBC,qBAAsB,mBACtB1kB,SAAU,aACV2kB,yBAA0B,kCAC1BjkB,UAAW,YACXkkB,sBAAuB,6OACvBC,kBAAmB,0BACnBjG,qBAAsB,iBACtBkG,mBAAoB,eACpB/F,gBAAiB,mBACjBgG,kBAAmB,cACnBC,eAAgB,WAChBC,oBAAqB,gBACrBC,cAAe,UACfC,sBAAuB,wBACvBC,oBAAqB,YACrBC,WAAY,OACZC,uBAAwB,4BAE1B7jB,UAAW,CACT8jB,wBAAyB5mB,GACzB6mB,iBAAkB,eAClBC,yBAA0B,2BAC1BC,yBAA0B,2BAC1BC,iBAAkB,4BAClBC,oBAAqB,mCACrBC,sBAAuBjnB,GAAO8Q,kBAC9BxO,aAActC,GAAOuR,SACrB2V,gBAAiBlnB,GAAO6Q,cACxB9P,WAAY,eACZomB,kBAAmB,uBACnBC,mBAAoB,oBACpBC,kBAAmB,gBACnBC,cAAe,YACfC,sBAAuB,gBACvBC,0BAhBS,SAgBiB3O,GAAiB,MAAM,wGAAN,OAA+GA,EAA/G,eAC3CpW,oBAAqBvC,GACrBunB,4BAA6B,0EAC7BpD,mBAAoB,0DACpBC,mBAAoB,6JACpBC,mBAAoB,qGAEtBmD,cAAe,CACbC,kBAAmB5nB,GACnBuX,oBAAqB,iDACrBhV,aAActC,GAAOuR,SACrBqW,YAAa,SACbhQ,aAAc,YAEhB7U,eAAgB,CACdC,WAAYjD,GACZkD,WAAYlD,GACZmD,aAAclD,GAAOuR,SACrBpO,aAAcnD,GAAOuR,SACrBnO,YAAa,uCACbhC,SAAU,mBACVU,UAAW,kBACXuB,kBARc,SAQIwV,GAAiB,MAAM,uJAAN,OAA8JA,IACjMvV,cAAe,WACfukB,uBAAwBnU,IAE1BnQ,eAAgB,CACdnC,SAAU,mBACVU,UAAW,kBACXkB,WAAYjD,GACZ+nB,OAAQ/nB,GACRkD,WAAYlD,GACZmnB,gBAAiBlnB,GAAO6Q,cACxBkX,mBAAoB,4BACpBjlB,UAAW,QACXklB,YATc,SASFnP,GAAiB,MAAM,sIAAN,OAA6IA,IAC1KoP,sBAAuB,uCACvBJ,uBAAwBnU,IAE1BwU,oBAAqB,CACnBzhB,UAAW1G,GACXgB,WAAY,wBACZonB,uBAAwB,4FACxBC,0BAA2B,0KAC3BC,0BAA2B,kNAC3BC,0BAA2B,mDAC3BC,0BAPmB,WAQjB,OACE,gRAAqP,uBAAG9Y,KAAK,2BAA2B+Y,OAAO,SAASC,IAAI,uBAAvD,qBAArP,sCAGJC,qBAAsB,sBACtBC,qBAAsB,kCACtBC,qBAAsB,gBACtBC,qBAAsB,kBACtBC,0BAA2B,+BAC3BC,0BAA2B,wBAC3BC,0BAA2B,qCAC3BC,0BAA2B,kGAE7BC,QAAS,CACPC,QAASppB,GACTiD,WAAY,SACZomB,SAAU,OACVC,UAAW,QACXC,aAAc,WACdC,eAAgBxpB,GAChBypB,WAAY,SACZ1B,OAAQ/nB,GACR0pB,WAAY1pB,GACZ2pB,YAAa,UACbC,YAAa,UACbC,kBAAmB,gBACnBC,gBAAiB,cACjBC,SAAU,OACVC,YAAa,SACbC,aAAc,WACdC,mBAAoB,iBACpBC,WAAY,SACZC,aAAc,WACdC,eAAgB,wBAChBC,YAAa,4BACbC,eAAgB,aAChBC,gBAAiB,cACjBC,YAAa,UACbC,UAAW,QACXC,WAAY,QACZC,WAAY,SACZC,QAAS,MACTC,mBAAoB,8CACpBC,kBA9BO,SA8BWC,GAAQ,MAAM,0EAAN,OAAiFA,EAAjF,MAC1BC,SAAU,2BACVjqB,WAAY,yBACZkqB,iBAAkB,4BAClBC,aAAc,cACd9pB,SAAU,WACVU,UAAW,UACXqpB,eAAgB,2CAChBC,oBAAqB,kCACrBC,oBAAqB,6GACrBC,gBAAiB,6GACjBC,mBAzCO,SAyCYvK,GAAa,MAAM,0DAAN,OAAiEA,EAAjE,kGAChCwK,qBA1CO,SA0CcT,GAAQ,MAAM,sCAAN,OAA6CA,EAA7C,qEAC7BU,mBA3CO,SA2CYV,EAAMW,GAAQ,MAAM,cAAN,OAAqBX,EAArB,wLAAyMW,EAAzM,8CAAmPX,EAAnP,wFAAuUW,IACxWrV,SA5CO,SA4CEsV,EAAaC,EAA2BC,EAA2BC,GAC1E,MAAO,CACL,CACExV,SAAU,kCACVC,OAAQ,2KAEV,CACED,SAAU,6EACVC,OAAQ,i5BAEV,CACED,SAAU,kFACVC,OAAQ,4HAEV,CACED,SAAU,gDACVC,OAAQ,2EAEV,CACED,SAAU,gDACVC,OAAQ,2gBAEV,CACED,SAAU,+EACVC,OAAQ,+KAEV,CACED,SAAU,2CACVC,OAAQ,gPAEV,CACED,SAAU,wGACVC,OAAQ,gpBAEV,CACED,SAAU,gDACVC,OAAQ,4fAEV,CACED,SAAU,6DACVC,OAAQ,uLAEV,CACED,SAAU,oDACVC,OAAO,uOAAD,OAAyOqV,EAAzO,6MAER,CACEtV,SAAU,6DACVC,OAAO,YAAD,OAAcoV,EAAd,6GAA8HE,EAA9H,sJAAqSC,EAArS,6LAER,CACExV,SAAU,wCACVC,OAAQ,sHAEV,CACED,SAAU,wCACVC,OAAQ,oKAEV,CACED,SAAU,mFACVC,OAAQ,0SAEV,CACED,SAAU,4EACVC,OAAQ,8GAEV,CACED,SAAU,6DACVC,OAAQ,waAIdwV,oBAAqB,sBACrBC,4BAA6B,wDAC7BC,uBAAwB,iCAE1BzoB,OAAQ,CACN0oB,cAAe,YACfzoB,qBAAsB,kHACtB0W,mBAAoB,iBAEtBgS,KAAM,CACJC,cAAe,YACfC,cAAe,YACfC,cAAe,WACfC,cAAe,WACfC,sBAAuB,eACvBC,wBAAyB,iBACzBC,sBAAuB,eACvBtrB,SAAU,QACVU,UAAW,QAEb6qB,kBAAmB,CACjBC,WAAY,uBACZC,sBAAuB9sB,GACvB+sB,gBAAiB/sB,GACjB0G,UAAW1G,GACXgtB,cAAe,0BACfC,YAAa,wBACbzD,eAAgB,aAChBzB,OAAQ/nB,GACRgnB,iBAAkB,eAClBpB,SAAU5lB,GACVktB,uBAAwBjtB,GAAO6R,YAC/Bqb,eAAgBltB,GAAOuQ,WACvB0W,sBAAuBjnB,GAAO8Q,kBAC9Bqc,mBAAoB,wCACpBC,aAAc,UACdd,cAAe,WACfe,eAAgB,mBAChBC,eAAgB,gCAChBC,WAAY,QACZC,gBAAiB,aACjBC,wBAAyB,qBACzBC,UAAW,OACXC,cAAe,cACfC,SAAU,MACVC,eAAgB,mBAChBC,YAAa,SACbhrB,UAAWsP,GAAWS,MACtBkb,kBAAmB3b,GAAWU,cAC9Bkb,aAAc,0BACdC,eAAgB,4BAChBC,cAAe,2BACf9sB,SAAU,sBACVU,UAAW,qBACXqsB,kBAlCiB,WAkCK,MAAM,eAAN,OAAsBC,KAAKzI,SAA3B,gmBACtB0I,uBAnCiB,SAmCMC,GAAgB,MAAM,+DAAN,OAAsEA,EAAtE,MACvCC,iBApCiB,WAqCf,MAAO,CAAC,6kBAAD,OACukBH,KAAKrH,iBAD5kB,qSAE2DqH,KAAKrB,cAFhE,qTAGL,qLAHK,iJAIqIqB,KAAKrH,iBAJ1I,4SAKYqH,KAAKpB,YALjB,yVAQTwB,mBAAoB,CAClB,oBACA,uBACA,4DACA,kDACA,4DAEFlD,gBApDiB,WAoDG,MAAM,60BAAN,OAAo1B8C,KAAKxB,WAAz1B,sIACpB6B,qBAAsB,iCACtBC,aAAc,CACZ,8EACA,uNACA,kFAGJC,4BAA6B,CAC3BC,WAAY7uB,GACZ8uB,YAAa9uB,GACbwpB,eAAgBxpB,GAChB+uB,eAAgB/uB,GAChBkF,sBAAuBjF,GAAOmR,kBAC9BnL,mBAAoBhG,GAAOoR,gBAC3B2d,mBAAoB/uB,GAAOuR,SAC3Byd,gBAAiBhvB,GAAO6R,YACxBod,0BAA2B,6BAC3BC,oBAAqB,qBACrBC,WAAY,UACZC,WAAY,uBACZtsB,UAAWsP,GAAWS,MACtBwc,cAAejd,GAAWW,UAC1Buc,aAAcld,GAAWa,SACzBsc,cAAend,GAAWe,SAC1Bqc,cAAepd,GAAWgB,iBAC1Bqc,QAASrd,GAAWiB,IACpBvP,aAAcsO,GAAWoB,SACzBkc,gCAAiC,4CACjCC,iBAAkB,4DAClBvuB,SAAU,4BACVU,UAAW,8BACXwpB,gBAxB2B,WAyBzB,MAAO,CACL,6FADK,iHAEqG8C,KAAKQ,WAF1G,gBAGL,0OAGJgB,WAAY,u7BACZC,yBAA0B9vB,IAE5B+vB,qBAAsB,CACpBzW,SAAUtZ,GACViD,WAAYjD,GACZoU,aAAcpU,GACdgwB,oBAAqB,mBACrBC,kBAAmB,gBACnBC,YAAa,UACbC,kBAAmB,iBACnBC,gBAAiB,cACjBrI,OAAQ/nB,GACR4lB,SAAU5lB,GACVqwB,oBAAqB,uFACrBC,yBAA0B,yBAC1BC,qBAAsB,qBACtBC,gCAAiC,8BACjC/vB,uBAAwB,oBACxBgwB,iBAAkB,iBAClBC,sBAAuB,4DACvBC,yBAA0B,2BAC1BC,+BAAgC,8DAChCC,6BAA8B,wCAC9BC,2BAA4B,qRAC5BC,yBAA0B,iMAC1BC,yBAA0B,6HAC1BC,mCAAoC,mDACpCC,wBAAyB,yGACzBC,6BAA8B,gHAC9BC,6BAA8B,6HAC9BC,6BAA8B,6DAC9BC,4BAA6B,0eAC7BC,uBAAwB,iFACxBC,qBAAsB,0HACtBC,qBAAsB,6HACtBC,qBAAsB,iDACtBC,oBAAqB,yMACrBC,iBAnCoB,SAmCHC,GACf,MAAO,CACL9Y,KAAM,uHAAD,OAAwH8Y,EAAxH,sGACL,gLACA,mOACA,8sBACA9Y,KAAM,sSACN,ktBACA,iJACA,6kBAGJ+Y,wBAAyB,gCAE3BluB,MAAO,CACLmuB,mBAAoB,iBACpBC,kBAAmB,8BACnBnuB,UAAW,SACXV,aAAclD,GAAOuR,SACrBygB,gBAAiB,sDACjB7uB,aAAcnD,GAAOuR,SACrB0gB,gBAAiB,uDACjBpuB,aAAc,WACdC,aAAcsO,GAAWoB,SACzBqU,uBAAwBnU,GACxB3P,wBAAyB,uBACzBmuB,aAAc,WACdC,aAAc,WACdnuB,oBAAqB,mBACrBC,oBAAqB,mBACrBmuB,aAAc,sBACdhxB,SAAU,SACVixB,eAAgB,0BAChBvwB,UAAW,QACXwwB,oBAAqBvyB,IAEvBwyB,KAAM,CACJhJ,eAAgBxpB,GAChByyB,YAAazyB,GACbiD,WAAYjD,GACZwZ,SAAUxZ,GACVkX,UAAWlX,GACXsZ,SAAUtZ,GACV0yB,SAAU1yB,GACV2yB,aAAa,GAAD,OAAK3yB,GAAL,YAAoBA,IAChC4yB,sBAAuB,0KACvBxJ,QAASppB,GACT6yB,WAAY7yB,GACZ8yB,WAAY9yB,GACZ+yB,8BAA+B,qBAC/BC,SAAU,MACVC,QAAS,KACTC,yBAA0B,8CAC1BC,oBAAqB,oMACrBC,wCAAyC,yDACzCC,cAAe,WACfC,sBAAuB,2BACvBC,YAAa,gBACbC,sBAAuB,sCACvBnyB,SAAU,QACVU,UAAW,oBACX0xB,cAAe,CAAC,cAAe,YAAa,SAAU,WACtDvI,iBAAkB,2BAClBK,gBAAiB,0XACjBmI,yBAA0B,iBAC1BC,wBAAyB,gMACzBC,wBAAyB,iBACzBC,yBAA0B,mBAC1BC,yBAA0B,qBAC1B7zB,OAAQ,CACN8zB,mBAAoB,yCACpBC,sBAAuB,6CAEzBC,qBAAsB,mCACtBC,sBAAuB,CACrB,QACA,UAEFC,iBAAkB,CAChBC,OAAQ,CACN,UACA,UACA,WAEFC,gBAAiB,iBACjBC,MAAO,kBACPC,gBAAiB,4BACjBC,0BAA2B,uDAC3BC,cAAe,CACb,6BACA,6BACA,0BACA,4BACA,6BACA,eAEFC,kBAAmB,gBAErBC,cAAe,CACbC,MAAO,gDAETC,oBAAqB,mTACrBC,mBAAoB,SACpBC,qBAAsB,UACtBC,kBApEI,WAqEF,OACE,gEAAqC,kCAArC,gcAGJC,oBAzEI,WA0EF,OACE,6BAAK,iEAAL,oCAA+E,kCAA/E,2kBAGJC,aAAc,SACdC,eA/EI,SA+EWC,EAAUC,EAAOC,EAAmBC,EAAaC,GAC9D,OACE,6BACE,2FAAgE,2BAAIJ,GAApE,KACA,2BAAIA,GAFN,cAE8B,oCAAUC,GAFxC,+CAGE,4BAAKC,GACL,iDAAsB,2BAAIC,GAA1B,IAA2C,2BAAIH,GAA/C,sEACA,iDAAsB,2BAAII,GAA1B,IAA6C,2BAAIJ,GAAjD,oEACA,uNAINK,2BAA4B,uBAC5BC,0BA5FI,SA4FsBN,GACxB,OACE,6BACE,oaACA,yMACA,2IACA,+SACA,4eALF,+FAQE,4BACE,mDACA,2CACA,mEACA,mFAZJ,wEAgBE,4BACE,uEACA,wGACA,4EAGF,+MAtBF,sFAyBE,4BACE,yGACA,+CAAoB,2BAAIA,GAAxB,6GACA,6NACA,+VACA,yYACA,kkBA/BJ,8JAmCE,4BACE,6IACA,2MACA,mEACA,4DACA,gFACA,yHAGF,qYACA,qMACA,kTACA,uQAKRO,YAAa,CACXt0B,SAAU,yBACVU,UAAW,0BACX6zB,kBAAmB,4CACnBC,0BAA2B,uLAC3BC,mBAAoB,6BACpBtc,SAAUxZ,GACV+1B,WAAY/1B,GACZg2B,UAAWh2B,GACXsZ,SAAUtZ,GACVkD,WAAYlD,GACZqpB,SAAUrpB,GACVwpB,eAAgBxpB,GAChB6D,UAAW,QACXoyB,gBAAiB,cACjBC,8BAA+B,qCAC/BC,8BAA+B,oCAC/BC,kBAAmB,CACjBC,oBAAqB,sBACrBC,gBAAiB,uKACjBC,uBAHiB,SAGMC,EAAkB1d,GACvC,MAAM,eAAN,OAAsB0d,EAAtB,+LAA6N1d,EAA7N,iCAEF2d,uBANiB,SAMMC,EAAkB5d,GACvC,MAAM,eAAN,OAAsB4d,EAAtB,kIAAgK5d,EAAhK,kCAGJ6d,aAAc,CACZC,kBAAmB,6BACnBC,4BAA6B,4DAC7BC,2BAA4B,mNAC5BC,cAAe,gBACfC,iBAAkB,kBAClBC,iBAAkB,mBAClBC,QAAS,UACTC,YAAa,cACbC,SAAU,2BACVC,QAAS,UACTC,UAAW,YACXC,gBAAiB,kBACjBC,wBAAyB,mBACzBC,wBAAyB,QAE3BC,0BAA2B,CACzBC,sBAAuB,wCACvBC,wBAAyB,kBACzBC,wBAAyB,+BACzBC,4BAA6B,gCAC7BC,uCAAwC,oCACxCC,uBANyB,SAMFC,GACrB,OACE,qRACkP,uBAAGvoB,KAAMuoB,EAAwBxP,OAAO,SAASC,IAAI,uBAArD,uBADlP,QAMN6O,gBAAiB,CACfW,uBAAwB,mBACxBC,WAAY,OACZC,aAAc,SACdC,gBAAiB,YACjBC,WAAY,CACV,UACA,UACA,WAEFxD,mBAAoB,mBACpBC,qBAAsB,iBACtBwD,aAAc,SACdC,+BAAgC,qcAChCC,iCAAkC,wFAClCC,iCAAkC,olBAClCC,mCAAoC,4HACpCC,iBAAkB,kBAEpBC,WAAY,CACVC,mBAAoB,8BACpBC,YAAa,QACbC,iBAAkB,aAClBC,iBAAkB,aAClBC,kBAAmB,eAErBC,2BAA4B,CAC1B7E,MAAO,kDACP8E,QAF0B,WAGxB,OACE,6BACE,gbAGA,4BACE,8gBAGA,kUAGA,6WAGA,qaAGA,uTAGA,oQAKF,iKAIA,qHAGA,4BACE,qTAGA,8HAGA,iUAGA,sGAGA,mOAGA,2LAGA,2GAGA,mXAGA,g0BAGA,mOA5DJ,wVAsENC,4BAA6B,CAC3B/E,MAAO,mEACP8E,QAF2B,WAGzB,OACE,6BACE,0ZAIA,2NAIA,mSAIA,sjBAIA,gJAGA,4BACE,mDAGA,2CAGA,mEAGA,mFAKF,yHAGA,4BACE,wGAGA,2EAGA,wEAKF,+NAIA,gIAGA,4BACE,uHAGA,uLAGA,2NAGA,uVAGA,yYAGA,gkBAGA,wUAGA,yMAEE,4BACE,qLAGA,qKAGA,2LAGA,kEAGA,2DAGA,+EAGA,oZAGA,oNAGA,sTAON,qFAIA,sSAMNE,4BAA6B,iBAGjCn1B,OAAQ,CACNnD,WAAY,WACZ0B,oBAAqBvC,GACrBkB,SAAU,YACVU,UAAW,WACXw3B,gBAAiB,eACjBC,cAAe,8CAEjBC,YAAa,CACXC,mBAAoB,qBACpBC,YAAa,aACbC,eAAgB,gBAChBC,eAAgB,uBAChB52B,WAAYjD,GACZ85B,gBAAiB,wBACjBC,gBAAiB,6BACjB1Q,SAAUrpB,GACV0yB,SAAU1yB,GACVg6B,gBAAiB,wBACjBC,gBAAiB,cACjBzQ,eAAgBxpB,GAChBwY,WAAY,UACZuP,OAAQ/nB,GACRk6B,aAAcl6B,GACdm6B,iBAAkB,eAClBC,gBAAiB,cACjBxU,SAAU5lB,GACVq6B,aAAc,gBACdC,YAAa,aACbC,iBAAkB,gBAClBC,kBAAmB,gBACnBC,gBAAiB,cACjBC,qBAAsB,mBACtBC,iBAAkB,uBAClBC,cAAe,kBACfC,cAAe,oBACfC,cAAe,yBACfC,eAAgB,uBAChBC,oBAAqB,kBACrBC,kBAAmB,4BACnB14B,aAActC,GAAOuR,SACrB0pB,YAAaj7B,GAAOyR,cACpBypB,qBAAsB,sBACtBC,kBAAmB,2BACnBC,mBAAoB,4BACpB/mB,2BAA4BrU,GAAOqR,uBACnCgqB,+BAAgC,4BAChCC,WAAY,gCACZC,YAAa,2BACbC,SAAU,UACVC,iBAAkB,2BAClB71B,UAAW,gBACX81B,aAAc,WACdC,gBAAiB,gBACjBC,kBAAmB,uBACnBC,gBAAiB,4BACjBC,iBAAkB,eAClBC,oBAAqB,uBACrBC,eAAgB,aAChBC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,UAAW,gBACXC,sBAAuB,gBACvBC,YAAa,kEACbC,2BAA4B,uLAC5BC,uBAAwB,2IACxBC,6BAA8B,2IAC9BC,QAAS,2CACTC,oBAAqB,uOACrBC,cAAe,uFACfC,mBAAoB,2IACpBC,oBAAqB,qDACrBC,qBAAsB,8DACtBC,oBAAqB,mBACrBC,gBAAiB,iEACjBC,wBAAyB,oDACzBC,gBAAiB,sBACjBC,cAAe,qCACfC,2BAA4B,4BAC5BC,sBAAuB,6EACvBC,eAAgB,gIAChBC,iBAAkB,yHAClBC,eAAgB,4FAChBC,kBAAmB,kEACnBC,iBAAkB,yIAClBC,eAAgB,kFAChBC,gBAAiB,kFACjBC,eAAgB,iEAChBC,sBAAuB,uBACvBC,eAAgB,yGAChBC,kBApFW,SAoFOC,GAAc,MAAM,wCAAN,OAA+CA,IAC/EC,YArFW,SAqFCD,GAAc,MAAM,wCAAN,OAA+CA,IACzEE,cAtFW,SAsFGF,GAAc,MAAM,uBAAN,OAA8BA,EAA9B,8BAC5BG,uBAvFW,SAuFYH,GAAc,MAAM,qCAAN,OAA4CA,IACjFI,kBAAmB,wFACnBC,mBAAoB,6CACpBC,kBAAmB,4BACnBr9B,SAAU,eACVU,UAAW,4BACX48B,WAAY,4BACZC,eAAgB,gCAChBC,cAAe,wBACfC,eAAgB,yCAChBC,2BAA4B,qBAC5BC,qBAAsB,+BACtBC,sBAAuB,uBACvBC,eAAgB,oDAElB56B,WAAY,CACVC,aAAc,UACdC,aAAc,aACdE,aAAc,UACdC,aAAc,UACdC,aAAc,WAEhBu6B,cAAe,CACbC,sBAAuB,uCAEzBC,cAAe,CACbC,WAAY,CACV58B,oBAAqBvC,GACrBo/B,YAAa,CAAC,kBAAmB,gBAAiB,qBAAsB,gBACxEC,0CAA2C,qCAC3CC,wCAAyC,kCACzCx/B,OAAQ,CACNy/B,yBAA0B,uCAC1BC,uBAAwB,uCACxBC,2BAA4B,2BAC5BC,eAAgB,8BAChBC,+CAAgD,8DAChDC,8BAA+B,yCAEjCC,gBAAiB,8BACjBjY,OAAQ/nB,GACR8xB,wBAAyB,+BACzBP,uBAAwB,yFAI5B0O,cAAe,CACbx/B,uBADa,SACU+F,GAAQ,OAAO,kBAAC,IAAM05B,SAAP,2BAAmC,uBAAGxwB,KAAK,wCAAwC+Y,OAAO,SAASC,IAAI,uBAAuBliB,KACpKzF,8BAA+B,2BAC/Bo/B,oBAAqB,kBACrBC,YAAa,SACbC,qBAAsB,kBACtBC,YAAa,SACbC,gBAAiB,YACjBC,UAAW,MACXC,uBAAwB,mBACxBC,aAAc,SACdpgB,YAAa,QACbqgB,YAAa,SAEfC,SAAU,CACRC,oBAAqB,4BACrBC,oBAAqB,qCACrBC,qBAAsB,oCACtBC,iBAJQ,SAISC,GAAoB,OAAOA,EAAmB,uBAAyB,uBACxFC,aAAc,WACdC,kBAAmB,UACnBC,kBAAmB,UACnBC,kBAAmB,UACnBC,eAAgB,MAChBC,iBAAkB,SAClBC,eAAgB,MAChBC,kBAAmB,SACnB9e,eAAgB,aAChB+e,uBAAwB,qBACxBC,UAAW,SACXC,kBAAmB,wBACnB3mB,QDnjDO,MCojDP4mB,sBAAuB,2EACvB98B,UAAW,QACX+8B,cAAe,gEACfC,gBAAiB,sBACjBC,qBAAsB,gDACtBC,uBAAwB,wBACxBC,sBAAuB,4BAEzBC,eAAgB,CACdC,0BAA2B,oEAC3BC,kCAFc,SAEoBC,GAAQ,MAAM,+BAAN,OAAsCA,EAAtC,2CAA6EtiC,KACvHuiC,oCAAqC,qBACrC77B,UAAW1G,IAEbwiC,cAAe,CACbtX,iBAAkB,6CAClBuX,kBAAmB,gBACnBlX,gBAHa,WAIX,OACE,6BACE,2BAAG,+GAEH,2iBAEA,2iBAEA,ggBAEA,2cAEA,2BAAG,4FAITjV,SAAU,CACR,CACEC,SAAU,iDACVC,OAAQ,8ZAEV,CACED,SAAU,oFACVC,OACE,kBAAC,WAAD,4aAEE,6BAAM,6BAFR,yfAIE,6BAAM,6BAJR,2PASJ,CACED,SAAU,8CACVC,OAAQ,+QAEV,CACED,SAAU,gEACVC,OAAQ,4PAEV,CACED,SAAU,gHACVC,OAAQ,+TAGZ8d,MAAO,0BACPoO,SAAU,0CACVC,mBAAoB,iBACpBC,iBAAkB,aAClBC,eAAgB,WAChBC,cAAe,YACfC,cAAe,cAEjBl+B,aAAc,CACZm+B,iBAAkB,eAClBjhC,UAAW,iBACXgD,UAAW,2DAEbC,aAAc,CACZC,oBAAqB,kBACrBstB,oBAAqBvyB,GACrBmF,qBAAsB,oDACtBD,sBAAuBjF,GAAOmR,kBAC9B7O,aAActC,GAAOuR,SACrBxQ,WAAY,kBACZuE,qBAAsB,uBACtBF,qBD5oDqB,mBC6oDrBC,iBAAkB,eAClBF,qBAAsB,qBAExB69B,SAAU,CACRC,qBAAsB,sBACtB3jB,aAAc,WACd4jB,cAAe,YACfC,sBAAuB,oBACvB5Z,eAAgB,aAChBzB,OAAQ/nB,GACR0pB,WAAY,SACZ2Z,UAAW,QACXC,aAAc,WACdC,iBAAkB,iDAClBC,oBAAqB,sBACrBC,mBAAoB,qBACpBC,YAAa,mBACbC,YAAa,mBACbC,iBAAkB,wBAClBC,qBAAsB,4BACtBxiC,SAAU,YACVU,UAAW,WACX+hC,uBAAwB,YACxBC,2BAA4B,gBAC5BC,qBArBQ,SAqBavoB,GAA6B,MAAM,aAAN,OAAoBA,EAApB,iCAClDwoB,sBAAuB,CACrB,oDACA,sDACA,mDAEFC,uBAAwB,+BACxBC,wBA5BQ,SA4BgB1oB,GAA6B,MAAM,2FAAN,OAAkGA,EAAlG,4EACrD2oB,oBA7BQ,SA6BYC,GAA2B,MAAM,gDAAN,OAAuDA,EAAvD,MAC/CC,mBA9BQ,SA8BWD,GAA2B,MAAM,0CAAN,OAAiDA,EAAjD,wEAC9CE,wBA/BQ,SA+BgBC,GAAkB,MAAM,yHAAN,OAAgIA,EAAhI,yEAC1CC,8BAA+B,gNAC/BC,iBAAkB,kBAClBC,uBAAwB,yCACxBC,kBAAmB,WACnBC,sBAAuB,eACvBC,kBAAmB,eACnBC,qBAAsB,uBACtBC,mBAAoB,kBACpBC,qCAAsC,gWACtCC,2BAA4B,siBAC5BC,4CA1CQ,SA0CoCC,GAC1C,MAAM,8ZAAN,OAAkaA,EAAla,iJAEFC,iCAAkC,qPAEpCC,oBAAqB,CACnBlc,QAASppB,GACTwV,gBAAiB,kCACjB0B,UAAWlX,GACXiD,WAAYjD,GACZ0yB,SAAU1yB,GACVuZ,WAAYvZ,GACZulC,iBAAkB,aAClB/rB,SAAUxZ,GACVg2B,UAAWh2B,GACXwlC,UAAW,uBACX3E,oBAAqB,4BACrB4E,oBAAqB,kDACrBC,UAAWzlC,GAAO0lC,MAClBpjC,aAActC,GAAOuR,SACrBo0B,iBAAkB,gCAClBC,kBAAmB,kBACnBxlC,oBAAqB,uBACrBsV,iBAAkB,cAClBmwB,oBAAqB,sBACrBC,kBAAmB,kBACnBh/B,eAAgBsL,GAAWO,UAC3BozB,aAAc,WACdC,aAAc,WACdC,kBAAmB,uBACnBC,4BAA6B,0BAC7BC,UAAW,iBACXC,gBAAiB,sCACjBruB,kBAAmB,0BACnBsuB,kBAAmB,gCACnBC,oBAAqB,kCACrBllC,SAAU,WACVU,UAAW,yBACXykC,iBAAkB,uJAClBC,yBAA0B,oEAC1BC,yBAA0B,2UAC1BrnB,WAAY,SACZsnB,kBAAmB,gDACnBzmB,aAAc,SACdE,gBAAiB,mBACjBwmB,eAAgB,WAChBC,sBAAuB,8BACvBC,2BAA4B,4BAC5BC,sBAAuB,0BAEzBC,oBAAqB,CACnBC,kBAAmB,aACnBC,UAAW,qBACXC,UAAW,gHACXC,UAAW,CACT,uBACA,qEACA,oFAEFC,UAAW,6IACXC,UAAW,0BACXC,UAAW,0OACXC,0BAA2B,+CAC3BC,cAAe,4RACfC,cAAe,+FAEjBC,aAAc,CACZtY,WAAY,uBACZQ,WAAY,CACV,6EACA,sEACA,gKACA,mKACA,4PACA,yKACA,sHACA,oHACA,0RACA,+cAEF+X,qBAAsB,6CAExBpiC,iBAAkB,CAChBC,iBAAkB,uBAClBzE,WAAY,gBACZ0E,SAAU,aACVC,QAAS,MACTC,SAAU,aACVC,UAAW,cACXC,SAAU,aACV+hC,gBAAiB,kIACjB9hC,0BAA2B,yBAC3B+hC,2BAA4B7nC,GAAOqR,uBACnCy2B,2BAA4B,6HAE9BC,YAAa,CACXC,0BAA2B,8BAC3BvhC,UAAW1G,GACXkoC,mCAAoC,iCACpC9jC,mBAAoB,gBACpBipB,aAAc,UACd8a,aAAc,UACdxyB,iBAAkB,cAClByyB,cAAe,yBACfC,qBAAsB,kBACtBC,gBAAiB,aACjBC,8BAA+B,2BAC/BC,6BAA8B,2BAC9BC,iBAAkB,cAClBC,2CAA4C,wCAC5CC,uBAAwB,cACxBC,8BAA+B,uBAC/BC,eAAgB,YAChBC,2BAA4B,yBAC5BC,4BAA6B,wFAC7BC,qBAAsB,iFACtBC,4BAA6B,0BAC7BC,YAAa,UACbC,yBAA0B,6BAC1BC,cAAe,uFACfxnC,kBAAmB,kCACnByC,wBAAyB,mKACzBglC,wBAAyB,8CACzBC,+BAAgC,wCAChCC,iBAAkB,sBAClBC,sCAAuC,gFACvCC,8BAA+B,uJAC/BC,2BAA4B,mGAE9BC,UAAW,CACTC,eAAgB,uBAChB1mC,WAAYlD,GACZgvB,mBAAoB/uB,GAAOuR,SAC3Bq4B,eAAgB,aAChBlb,aAAc,yBAEhBmb,SAAU,CACRC,eAAgB,2BAChB7P,aAAc,SACd3H,oBAAqBvyB,GACrBgqC,kBAAmB/pC,GAAO+Q,oBAC1Bi5B,kBAAmBhqC,GAAOgR,oBAC1B/L,sBAAuBjF,GAAOmR,kBAC9BnL,mBAAoBhG,GAAOoR,gBAC3B2d,mBAAoB/uB,GAAOuR,SAC3Byd,gBAAiBhvB,GAAO6R,YACxBo4B,+BAAgC,4CAChCC,wBAAyBlqC,GAAO8R,oBAChCq4B,oBAAqBnqC,GAAOiR,2BAC5Bm5B,0BAA2BpqC,GAAO+R,sBAClCmV,gBAAiBlnB,GAAO6Q,cACxBw5B,wBAAyB,oEACzBC,mBAAoB,oBACpBC,2BAA4B,2BAC5Bnb,WAAY,uBACZtsB,UAAW,QACX6R,cAAevC,GAAWW,UAC1B8B,aAAczC,GAAWa,SACzBsc,cAAend,GAAWe,SAC1Bqc,cAAepd,GAAWgB,iBAC1BtP,aAAcsO,GAAWoB,SACzBqU,uBAAwBnU,GACxBtS,SAAU,YACVU,UAAW,mBACX0oC,uBAAwB,oBACxBC,8BAA+B,6BAC/BC,+BAAgC,qKAChCC,mBAAoB,yCACpBC,8BAA+B,qJAC/BC,iCAAkC,6EAClCC,uBAAwB,wDACxBC,yBAA0B,sEAA2C,gDAA3C,kHAAkL,yDAAlL,iCAC1BC,0BAA2B,qJAC3BC,6BAA8B,kQAC9BC,0BAA2B,2BAC3BC,aAAc,6CACdC,aAAc,wCACdC,aAActrC,GACdurC,2BAA4B,4BAC5BC,iBAAkB,yCAClBC,gBAAiBzrC,GACjB0rC,yBAA0B,uBAC1BC,gBAAiB,qEACjBC,mBAAoB,CAClB,mGACA,0DAEFC,uBAAwB,yBAE1BC,YAAa,CACX9kB,iBAAkB,eAClB+kB,mBAAoB,oCACpBC,iBAAkB,gBAClB3qC,SAAU,gBACVU,UAAW,oBACXkqC,iBAAkB,wGAClBC,mBAPW,SAOQpzB,GAAiB,MAAM,uDAAN,OAA8DA,EAA9D,OAEtC9S,cAAe,CACb9C,WAAY,SACZqvB,oBAAqBvyB,GACrBmF,qBAAsBlF,GAAOuR,SAC7BtM,sBAAuBjF,GAAOmR,kBAC9BnL,mBAAoBhG,GAAOoR,gBAC3BnL,sBAAuBjG,GAAOuR,SAC9BrL,qBAAsB,oBACtB9E,SAAU,kBACVU,UAAW,iBACXsE,sBAAuB,uBACvBD,kBAAmB,gBAErB+lC,WAAY,CACV7yB,SAAUtZ,GACVoU,aAAcpU,GACdosC,YAAa,SACbC,YAAa,CACX,4EACA,8KAGJC,UAAW,CACTjrC,SAAU,cACVU,UAAW,mBACXQ,aAActC,GAAOuR,SACrBvL,mBAAoBhG,GAAOoR,gBAC3BrK,QAASqL,GAAWkB,IACpBg5B,QAAS,gBACTxpC,UAAWsP,GAAWS,MACtBhP,aAAcuO,GAAWe,SACzBo5B,oBAAqB,kBACrBzoC,aAAcsO,GAAWoB,SACzBW,aAAcpU,GACd6uB,WAAY,SACZ4d,oBAAqB,+GACrB3kB,uBAAwBnU,IAE1B+4B,QAAS,CACPj4B,mBAAoB,gBACpBk4B,eAAgB,+BAChBC,SAAU,MACVC,aAAc,aACdC,WAAY,MACZroC,oBAAqB,iBACrBxB,WAAYjD,GACZ+sC,UAAW,CACTC,YAAa,wBACb1Y,MAAO,YACP2Y,wBAAyB,sBACzBC,UAAW,QACXC,gBAAiB,cACjBC,SAAU,OACVC,0BAA2B,2CAC3BhI,iCAAkC,qPAEpCtlB,cD17DuB,MC47DzButB,OAAQ,CACN5mC,UAAW1G,GACXutC,uBAAwB,SACxBC,gCAAiC,8BACjCC,YAAa,gBACbC,cAAe,cACfC,sBAAuB,eACvBC,oBAAqB,aACrBC,gBAAiB,SACjBC,eAAgB,qBAChBC,wBAAyB,uBACzB1sC,SAAU,eACVU,UAAW,cACXisC,6BAA8B,yJAEhCC,cAAe,CACb75B,aAAcpU,GACdi6B,gBAAiB,cACjBjgB,aAAc,UACdk0B,kBAAmB,eACnBC,mBAAoB,gBACpBC,iBAAkB,6DAClBC,qBAAsB,qCACtBC,uBAAwB,oBACxBC,kBAAmB,8FAErBC,WAAY,CACVjoC,kBADU,SACQC,GAAQ,MAAM,OAAN,OAAcA,EAAd,eAC1BC,qBAFU,SAEWD,GAAQ,MAAM,UAAN,OAAiBA,EAAjB,eAC7BE,UAAW1G,GACX2G,eAJU,SAIKC,EAAQC,GAAU,OAAO5G,GAAOqQ,WAAW1J,EAAQC,IAClE4nC,gBAAiB,wGACjBlsC,aAActC,GAAOuR,SACrB1K,sBAPU,SAOYN,GAAQ,MAAM,UAAN,OAAiBA,EAAjB,eAC9BkoC,6BAA8B,oBAC9BC,+BAAgC,sBAChC5nC,eAAgB,0BAChBtF,eAAgB4Q,GAAWW,UAC3BtR,cAAe2Q,GAAWa,SAC1BvR,gBAAiB,cACjBqF,QAASqL,GAAWkB,IACpBtM,cAAe,YACfC,mBAAoB,gBACpBC,oBAAqB,mBACrBC,sBAAuB,qBACvBC,sBAAuB,qBACvBC,8BApBU,SAoBoBC,EAAOC,EAAKC,EAAMjB,GAAQ,MAAM,yBAAN,OAAgCe,EAAhC,YAAyCC,EAAzC,YAAgDC,EAAhD,eAA2DjB,EAA3D,gBACxDjF,UAAW,OACXqtC,yBAA0B,0FAC1BlnC,wBAAyB,mHAE3BmnC,QAAS,CACPp6B,mBAAoB,gBACpBkB,iBAAkB,cAClBlV,uBAAwB,oBACxBC,qBAAsB,kBACtBG,sBAAuB,mBACvBiuC,wBAAyBz8B,GAAWM,iBACpC+B,cAAerC,GAAWO,UAC1BgK,WAAYvK,GAAWwK,OACvBkyB,SAAU18B,GAAWC,aACrBqC,gBAAiBtC,GAAWQ,YAC5B+B,cAAevC,GAAWW,UAC1B6B,cAAexC,GAAWY,UAC1B6B,aAAczC,GAAWa,SACzB6B,eAAgB1C,GAAWc,WAC3B67B,eAAgB38B,GAAWE,mBAC3Bs3B,eAAgB,8BAChB5sB,iBAAkB,gCAClBjI,YAAY,GAAD,OAAK3C,GAAWkB,IAAhB,gBAA2BlB,GAAWmB,KACjD4yB,UAAW/zB,GAAWG,cACtBy8B,YAAa58B,GAAWI,gBACxBy8B,YAAa78B,GAAWK,gBACxBwC,mBAAoB7C,GAAWqB,aAC/By7B,yBAA0B,uBAC1BC,uBAAwB,oBACxBnc,QAAS,KACTD,SAAU,OAEZqc,oBAAqB,CACnB/1B,SAAUtZ,GACV8uB,YAAa9uB,GACbqvB,WAAY,kDACZigB,oBAAqB,mBACrBC,iBAAkB,mZAClBC,2BANmB,SAMQ3d,GAAsB,MAAM,oSAAN,OAA2SA,EAA3S,qIACjD4d,YAAa,CACX,6jBACA,0QACA,6bACA,mZACA,oPACA,oHAEFC,YAAa,CACX,wHACA,yGACA,gSACA,yEACA,4KACA,mFACA,gWACA,oxBACA,8MAEFC,YA1BmB,SA0BPC,EAAWC,GAAe,MAAM,6eAAN,OAAofA,EAApf,qDAA4iBD,EAA5iB,2fACtCE,YAAa,8KAEfC,cAAe,CACbC,4BAA6B,oDAC7BC,2BAFa,SAEcC,EAAUC,GAAqB,MAAM,+BAAN,OAAsCD,EAAtC,0BAAgEC,EAAhE,OAC1DC,uBAAwB,qCACxB1sB,WAJa,SAIF2sB,GACT,MAAO,CACL,oMADK,2IAE0HA,EAF1H,4HAE2PA,EAF3P,KAGL,+DAINC,mBAAoB,CAClBC,WAAY,SACZC,SAAU,OACV3P,oBAAqB,4BACrB4P,kBAAmB,mCACnBC,mBAAoB,kCACpB1vC,WAAY,eACZ2vC,cAAe,YACfC,YAAa,UACbC,iBAAkB,SAClBC,eAAgB,cAChBC,YAAa,SACbC,WAAY,QACZC,YAAa,SACbC,UAAW,OACXC,qBAAsB,6BACtBC,cAAe,WACfC,sBAAuB,mBACvBC,kBAAmB,eACnBC,eAAgB,aAElBC,mBAAoB,CAClBxwC,WAAY,sBACZ6vC,iBAAkB,SAClBC,eAAgB,cAChBC,YAAa,SACbU,eAAgB,YAChBC,WAAY,QACZv3B,SAAU,MACVkF,WAAY,QACZ4xB,YAAa,SACbC,UAAW,OACXG,sBAAuB,mBACvBM,UAAW,OACXC,eAAgB,YAChBC,yBAA0B,SAC1BC,uBAAwB,oBACxBC,iBAAkB,cAClBC,gBAAiB,aACjBC,0BAA2B,kBAE7BC,aAAc,CACZC,iBAAkB,eAClBlvC,WAAYjD,GACZoyC,8BAA+B,2BAC/BC,kBAAmB,eACnBC,UAAW,OACXC,SAAU,MACVC,gBAAiB,cACjBC,iCARY,SAQqBC,EAAiBC,GAChD,IAAIC,EAAO,+CAA2CF,EAA3C,KAgBX,OAdIA,IAAoBrkB,KAAKwkB,kBAAkBC,aAAatsC,KACtDmsC,IAActkB,KAAK0kB,UAAUC,SAAWL,IAActkB,KAAK0kB,UAAUE,cACvEL,EAAU,yEAEHD,IAActkB,KAAK0kB,UAAUG,mBACpCN,EAAU,yEAGLF,IAAoBrkB,KAAKwkB,kBAAkBM,WAAW3sC,MACzDmsC,IAActkB,KAAK0kB,UAAUC,UAC/BJ,EAAU,wEAIPA,GAETQ,kBA3BY,SA2BMV,GAChB,OAAQA,GACN,KAAKrkB,KAAKwkB,kBAAkBC,aAAatsC,KACvC,OAAO6nB,KAAKwkB,kBAAkBC,aAAaxe,MAC7C,KAAKjG,KAAKwkB,kBAAkBQ,cAAc7sC,KACxC,OAAO6nB,KAAKwkB,kBAAkBQ,cAAc/e,MAC9C,KAAKjG,KAAKwkB,kBAAkBS,SAAS9sC,KACnC,OAAO6nB,KAAKwkB,kBAAkBS,SAAShf,MACzC,KAAKjG,KAAKwkB,kBAAkBM,WAAW3sC,KACrC,OAAO6nB,KAAKwkB,kBAAkBM,WAAW7e,MAC3C,KAAKjG,KAAKwkB,kBAAkBU,mBAAmB/sC,KAC7C,OAAO6nB,KAAKwkB,kBAAkBU,mBAAmBjf,QAIvDkf,qCA1CY,SA0CyBd,GACnC,OAAQA,GACN,KAAKrkB,KAAKwkB,kBAAkBC,aAAatsC,KACvC,MAAO,mBACT,KAAK6nB,KAAKwkB,kBAAkBQ,cAAc7sC,KACxC,MAAO,0CACT,KAAK6nB,KAAKwkB,kBAAkBS,SAAS9sC,KACnC,MAAO,mBACT,KAAK6nB,KAAKwkB,kBAAkBM,WAAW3sC,KACrC,MAAO,qBAIbitC,uBAvDY,SAuDWf,GACrB,IAAIgB,EAAuB,gDAC3B,OAAQhB,GACN,KAAKrkB,KAAKwkB,kBAAkBS,SAAS9sC,KACnCktC,EAAuB,6CAI3B,OAAOA,GAETryC,SAjEY,SAiEHC,EAAWoxC,EAAiBiB,EAAUC,EAAeC,GAC5D,OAAQnB,GACN,KAAKrkB,KAAKwkB,kBAAkBS,SAAS9sC,KACnC,MAAiB,QAAbmtC,EACI,aAAN,OAAoBryC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBS,SAASQ,UAE1E,aAAN,OAAoBxyC,EAApB,yBAA8CsyC,EAA9C,YAA+DvlB,KAAKwkB,kBAAkBS,SAASS,UAA/F,SAEF,KAAK1lB,KAAKwkB,kBAAkBQ,cAAc7sC,KACxC,MAAiB,QAAbmtC,EACI,aAAN,OAAoBryC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBQ,cAAcS,UAE/D,SAAbH,EACD,aAAN,OAAoBryC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBQ,cAAcU,WAE/E,aAAN,OAAoBzyC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBQ,cAAcW,WAErF,KAAK3lB,KAAKwkB,kBAAkBC,aAAatsC,KACvC,MAAiB,QAAbmtC,EACI,aAAN,OAAoBryC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBC,aAAagB,UAE9E,aAAN,OAAoBxyC,EAApB,yBAA8CsyC,EAA9C,YAA+DvlB,KAAKwkB,kBAAkBC,aAAaiB,UAAnG,SAEF,KAAK1lB,KAAKwkB,kBAAkBM,WAAW3sC,KACrC,MAAiB,QAAbmtC,EACI,aAAN,OAAoBryC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBM,WAAWc,KAAhF,mBAA+FJ,EAA/F,QAEI,aAAN,OAAoBvyC,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBM,WAAWc,KAAhF,mBAA+FJ,EAA/F,SAEF,KAAKxlB,KAAKwkB,kBAAkBU,mBAAmB/sC,KAC7C,MAAM,aAAN,OAAoBlF,EAApB,yBAA8C+sB,KAAKwkB,kBAAkBU,mBAAmBU,KAAxF,mBAAuGJ,EAAvG,QACF,QAAS,MAAM,aAAN,OAAoBvyC,EAApB,mBAGbyxC,UAAW,CACTC,QAAS,UACTC,cAAe,gBACfiB,SAAU,WACVhB,iBAAkB,oBAEpBL,kBAAmB,CACjBM,WAAY,CACVc,KAAM,cACN3f,MAAO,cACP9tB,KAAM,cAER8sC,SAAU,CACRS,UAAW,YACXD,SAAU,gBACVxf,MAAO,YACP9tB,KAAM,eAER6sC,cAAe,CACbU,UAAW,sBACXD,SAAU,qBACVE,UAAW,sBACX1f,MAAO,iBACP9tB,KAAM,gBAERssC,aAAc,CACZiB,UAAW,gBACXD,SAAU,oBACVxf,MAAO,gBACP9tB,KAAM,gBAER+sC,mBAAoB,CAClBU,KAAM,sBACN3f,MAAO,qBACP9tB,KAAM,uBAIZ2tC,mBAAoB,CAClBj9B,UAAWlX,GACXsZ,SAAUtZ,GACViD,WAAYjD,GACZuZ,WAAYvZ,GACZwZ,SAAUxZ,GACVg2B,UAAWh2B,IAEbo0C,UAAW,CACT1xC,oBAAqBvC,GACrBmZ,SAAUtZ,GACViD,WAAYjD,GACZ0G,UAAW1G,GACX+nB,OAAQ/nB,GACRwZ,SAAUxZ,GACVkD,WAAYlD,GACZg2B,UAAWh2B,GACXuZ,WAAYvZ,GACZ8e,gBAAiB,cACjBu1B,8BAA+B,sDAC/BC,2BAA4B,SAACC,GAAD,gBAAiBA,EAAjB,8DAC5BC,gCAAiC,SAACD,GAAD,gBAAiBA,EAAjB,4DACjCE,yBAA0B,SAACF,GAAD,gBAAiBA,EAAjB,4DAC1BG,iCAAkC,oEAClCC,8BAA+B,kCAC/BC,4BAA6B,iDAC7BC,kBAAmB,wBACnBC,sBAAuB,4BACvBC,4BAA6B,SAACC,EAAiBl5B,GAAlB,8EAA8Fk5B,EAA9F,kCAAuIl5B,EAAvI,MAC7Bm5B,6BAA8B,SAACD,GAAD,4DAAoEA,EAApE,MAC9BE,6BAA8B,gHAC9BC,sCAAuC,iCACvCC,iCAAkC,gCAClCC,6BAA8B,2CAC9BC,oBAAqB,yDACrBC,8BAA+B,6CAC/BC,sBAAuB,gCACvBn1C,oBAAqB,iBACrBo1C,kBAAmB,YACnBhhC,mBAAoB,gBACpBihC,oBAAqB,iBACrBp1C,kBAAmB,eACnBq1C,uBAAwB,oBACxBC,UAAW,cACXtoB,eAAgB,mBAChBuoB,mBAAoB,gBACpBC,gBAAiB,cACjB10C,iBAAkB,cAClB20C,mBAAoB,yBACpBC,wBAAyB,sBACzBC,kBAAmB,uBACnBC,qBAAsB,mBACtBC,mBAAoB,iBACpBC,eAAgB,0BAChBC,mBAAoB,oBACpBC,iBAAkB,aAClBC,qBAAsB,iBACtB5U,UAAW,QACX6U,gBAAiB,yBACjBC,eAAgB,qBAChBC,iBAAkB,wBAClBC,iBArDS,WAsDP,OACE,8PAGG9iC,KAIP+iC,qBAAsB,oBACtBC,qBAAsB,oBACtBC,kBAAmB,YACnBC,cAAe,OACfC,aAAc,MACdC,mBAAoB,SAACC,GAAD,gBAAcA,EAAQ,MAAQ,iBAA9B,cACpBC,oBAAqB,SAAC51B,GAAD,OAAeA,EAAY,0BAA4B,mBAC5E61B,+BAAgC,iCAChCC,mBAAoB,yBACpBC,yBAA0B,uCAC1BC,0BAA2B,kCAC3BC,qBAAsB,+BACtBC,sBAAuB,4IACvB33B,gBAAiB,qDACjB43B,gBAAiB,yDACjBC,kBAAmB,SAACC,GAAD,OAAeA,EAAY,iBAAmB,oBACjE73B,cD5zEuB,KC6zEvB83B,uBA/ES,WAgFP,OACE,6BACE,qIAGA,4BACE,wNAGA,0HAEE,4BACE,2CACA,yCACA,oCACA,sDACA,4EACA,4DAIJ,gQAEE,4BACE,4BACE,4LADF,yDAGA,4BACE,gPADF,qEAGA,4BACE,4EADF,gEAKJ,4SAGA,yKAIF,gNAMNtsB,gBAhIS,SAgIOusB,EAASC,GACvB,OACE,6BACE,8LACkK,uBAAGroC,KAAMooC,EAASrvB,OAAO,SAASC,IAAI,uBAAtC,qCADlK,KAGA,wIAGA,2BACE,mSAIF,2BACE,0ZAIF,2BACE,oOAIF,2BACE,uKAIF,qaACyY,uBAAGhZ,KAAMqoC,EAAStvB,OAAO,SAASC,IAAI,uBAAtC,sCADzY,0CAGA,4YAMNsvB,wBAtKS,WAuKP,OACE,6BACE,yJAGA,gbAKA,oOAMNC,sBAvLS,WAwLP,OACE,6BACE,oDACA,oGAGA,yPAGA,4WAIA,4WAGA,4MAGA,wTAGA,4BACE,wIAGA,yJAGA,gIAQVC,mBAAoB,CAClBx1C,oBAAqBvC,GACrBmZ,SAAUtZ,GACViD,WAAYjD,GACZuZ,WAAYvZ,GACZwZ,SAAUxZ,GACVg2B,UAAWh2B,GACX2G,eAPkB,SAOHC,EAAQC,GAAU,OAAO5G,GAAOqQ,WAAW1J,EAAQC,IAClE2V,mBAAoBvc,GAAOuR,SAC3B2mC,eATkB,SASHl3B,GAAa,MAAM,yBAAN,OAAgCA,IAC5Dm3B,eAVkB,SAUHp3B,GAAa,MAAM,yBAAN,OAAgCA,IAC5DgO,mBAAoB/uB,GAAOuR,SAC3B6mC,oBAAqBp4C,GAAOwR,gBAC5B6mC,uBAAwB,yBACxBC,qBAAsB,kBACtBC,YAAa,SACbC,kBAAmB,sCACnBC,eAAgB,YAChBrpB,WAAY,uBACZspB,gBAAiB34C,GACjB0U,cAAe,yBACfkkC,iBAAkB,eAClBC,QAAS,MACTC,iBAAkB,eAClBC,oBAAqB,kBACrBC,eAAgB,aAChBC,yBAA0B,wBAC1Bl3C,UAAW,sBACXm3C,eAAgB,uDAChBC,iBAAkB,iBAClBC,4BAA6B,CAC3B,wHACA,+FAEFC,8BAA+B,2BAC/BC,UAAW,cACXC,iBAAkB,iBAClB1B,uBAAwB,ySACxB2B,uBAAwB5lC,GACxBkM,gBAAiB,qDACjB25B,eAAgB,yHAChBC,cAAe,CACb,eACA,yYACA,6QAEFC,cAAe,CACb,2BACA,oqBACA,wRAEFC,cAAe,CACb,YACA,gQACA,sWAEFC,cAAe,CACb,qBACA,2FACA,qDACA,2SAEF95B,cDzgFuB,MC2gFzB+5B,YAAa,CACXC,0BAA2B,+BAC3BC,qCAAsC,kEACtCt3C,oBAAqBvC,GACrB85C,sBAJW,SAIWx+B,GACpB,OACE,4IAGE,sHAA4FA,EAA5F,2EAEA,0HAEC5H,KAIPqmC,yBAA0B,uBAC1BC,wBAAyB,6BACzBC,eAAgB,aAChBC,sBAAuB,kBACvBC,qBAAsB,iBACtBzC,uBAAwB,ySACxB0C,6BAA8B,qBAC9BC,gCAAiC,sEACjCC,wCAAyC,CACvC,4PACA,mEAEFC,kCAAmC,CACjC,oRACA,mEAEFC,mCAAoC,aACpCC,WAAY,CACV,WACA,qBAEFrb,YAAa,CACX,kBACA,YACA,CACEsb,QAAS,iCACTC,UAAW,uCAEb,sBAEF76C,OAAQ,CACN86C,cAAe,4EACfC,eAFM,SAESC,GACb,MAAM,yBAAN,OAAgCA,EAAhC,MAEFC,4BAA6B,oDAC7BC,wBAAyB,8CACzBC,6BAA8B,mDAC9BC,YAAa,2BACbC,gBAAiB,+BACjBC,eAVM,SAUSC,GACb,MAAM,kBAAN,OAAyBA,EAAzB,4KAEFC,mBAAoB,yBACpBC,gBAAiB,0BACjBC,yBAfM,SAemBC,GACvB,MAAM,uCAAN,OAA8CA,EAA9C,cAEFC,oBAAqB,0BACrBC,iBAAkB,2BAClBC,mBApBM,SAoBaC,GACjB,MAAM,sDAAN,OAA6DA,EAA7D,oBAEFC,kBAAmB,yBACnBC,eAAgB,2CAChBC,mBAAoB,yBACpB1qC,gBAAiBxR,GAAOwR,gBACxB2qC,eAAgB,qBAChBC,qBAAsB,2BACtBC,wBAAyB,8BACzBC,uBA9BM,SA8BiBC,GAA0B,MAAM,GAAN,OAAUA,EAAV,wDACjDC,sBAAuB,6BAEzBC,eAhFW,SAgFIC,GACb,MAAM,+CAAN,OAAsDA,EAAtD,oDAEFC,oBAAqB,qLACrBC,qBAAsB,4CACtBC,kBAAmB,CACjBC,aADiB,SACJC,GAQX,MAAO,CAJUA,EACf,8KACA,6KALsBA,EACtB,uGACA,2KAQA,+NAGJC,gBAAiB,CACf3oB,MAAO,mEACP4oB,qBAAsB,qFACtBC,sBAAuB,oDACvBC,UAAW,4CACXC,6BALe,SAKc7B,GAC3B,MAAM,kBAAN,OAAyBA,EAAzB,sPAEF8B,uBAAwB,yHAE1BC,mBAAoB,WACpBC,qBAAsB,wBACtBC,qBA3BiB,SA2BIC,EAAe5hC,GAAU,MAAM,WAAN,OAAkB4hC,EAAlB,aAAoC5hC,IAClF6hC,gBAAiB,aAEnBC,2BAA4B,CAC1BtpB,MAAO,uBACPupB,WAAY,yEACZC,GAAI,CACFxpB,MAAO,eACPypB,MAAO,yYACPC,MAAO,6QAETC,GAAI,CACF3pB,MAAO,2BACPypB,MAAO,uqBACPC,MAAO,wRAETE,GAAI,CACF5pB,MAAO,YACPypB,MAAO,gQACPC,MAAO,sWAETG,GAAI,CACF7pB,MAAO,qBACPypB,MAAO,2FACPC,MAAO,qDACPI,MAAO,2SAETC,gBAAiB,0DAEnBC,SAAU,CACR,CACEC,GAAI,WACJD,SAAU,CACR,uGAGJ,CACEC,GAAI,cACJD,SAAU,CACR,gIAGJ,CACEC,GAAI,eACJD,SAAU,CACR,wGAGJ,CACEC,GAAI,IACJD,SAAU,CACR,+IACA,oEAGJ,CACEC,GAAI,IACJD,SAAU,CACR,kIACA,oEAGJ,CACEC,GAAI,IACJD,SAAU,CACR,oRACA,qEAINE,8BAA+B,+BAC/BC,gCAAiC,6BACjCC,4BAA6B,kJAC7BC,wBAAyB,8JACzBC,qBAAsB,CACpBtqB,MAAO,2CACPuqB,YAAa,iBACbf,GAAI,8FACJV,UAAW,oEACX0B,UAAW,6FACXC,qBAAsB,oHACtBC,oBAAqB,iBACrBC,oBAAqB,iBACrBC,oBAAqB,YACrBC,mBAAoB,mBACpBC,0BAA2B,oBAC3BC,yBAA0B,+BAE5BC,mBAAoB,0FACpBC,wBAAyB,yDACzBC,wBAAyB,CACvBlrB,MAAO,sCACPmrB,SAAU,yHACVC,SAAU,uFACVC,oBAAqB,aACrBC,uBAAwB,gBACxBC,kBAAmB,WACnBC,kBAPuB,SAOLC,GAChB,MAAM,eAAN,OAAsBA,IAExBC,oBAVuB,SAUHC,GAClB,MAAM,4BAAN,OAAmCA,IAErCC,cAbuB,SAaTC,GACZ,MAAM,aAAN,OAAoBA,IAEtB5sB,YAAa,oBACb6sB,WAAY,yEACZpB,oBAAqB,UACrBC,oBAAqB,oBACrBC,oBAAqB,cACrBmB,oBAAqB,aACrBC,oBAAqB,qBACrBC,aAvBuB,SAuBVC,GAAiB,MAAM,mBAAN,OAA0BA,IACxDC,UAAW7sC,GACX8sC,WAAY,sDAEdC,yBArOW,SAqOcC,GACvB,OAAO,iNAAsL,uBAAGA,QAASA,EAASC,IAAI,KAAzB,YAAtL,WAETC,kBAAmB,iBAErBC,qBAAsB,CACpB//C,WAAY,wBACZggD,YAAahhD,GACbihD,UAAWjhD,GACXkhD,UAAWlhD,GACXmhD,kCAAmC,mKACnCtQ,iBAAkB,SAClBC,eAAgB,cAChBC,YAAa,SACbE,YAAa,SACbmQ,cAAe,WACflQ,UAAW,OACXmQ,eAAgB,YAChBC,8BAA+B,sCAC/BC,oBAAqB,iBACrBC,YAAa,SACbnQ,sBAAuB,mBACvBoQ,iCAAkC,iCAEpC95C,aAAc,CACZ+5C,oBAAqB,kBACrBC,uBAAwB,8BACxBp/C,aAActC,GAAOuR,SACrBowC,oBAAqB3hD,GAAOgR,oBAC5Bk5B,wBAAyBlqC,GAAO8R,oBAChCq4B,oBAAqBnqC,GAAOiR,2BAC5Bm5B,0BAA2BpqC,GAAO+R,sBAClChR,WAAY,WACZqE,qBD/wFqB,mBCgxFrBw8C,qBAAsB,mBACtBC,iBAAkB,eAClBC,qBAAsB,qBAExBn6C,cAAe,CACbvG,SAAU,kBACVU,UAAW,mBACXigD,oBAAqB,mCAEvBC,iBAAkB,CAChB3oC,SAAUtZ,GACViD,WAAYjD,GACZsjC,aAActjC,GACduC,aAActC,GAAOuR,SACrB0wC,gBAAiBjiD,GAAOkiD,YACxBC,cANgB,SAMF/d,GAA2B,MAAM,YAAN,OAAmBA,EAAnB,oBACzCge,YAAa,gBACbC,YAAa,iBACbC,cAAe,oBACfC,6BAA8B,qKAC9BC,iBAXgB,SAWCC,EAAmBC,GAClC,MAAgB,wLACmKD,EAD5KC,EAAS,+CAIlBC,6BAA8B,yaAEhCC,gBAAiB,CACfC,UAAW9iD,GACXiD,WAAYjD,GACZqpB,SAAUrpB,GACVoiD,cAJe,SAID/d,GAA2B,MAAM,YAAN,OAAmBA,EAAnB,oBACzC0e,wBAAyB,+HACzBC,YAAa,uEACbC,YAAa,6BACbC,YAAa,sGACbC,YAAa,0KACbC,YAAa,0GACbC,eAAgB,qaAElBC,YAAa,CACXz8B,iBAAkB,uBAClBG,iBAAkB,4BAClBu8B,0BAA2B,uBAC3BC,sCAAuC,wBACvCxX,iBAAkB,6BAClByX,+BAAgC,oLAChCpiD,SAAU,gBACVU,UAAW,eACXuiB,mBAAoB,iJACpBC,mBAVW,SAUQzL,GAAiB,MAAM,wNAAN,OAA+NA,EAA/N,MACpC0L,mBAAoB,4FCr5FXk/B,GAAc,SAAAr0C,GAAK,OAAI,SAAAs0C,GAAI,OAAI,SAAAh5C,GAC1C,IAAIA,EAAOwE,MAAX,CAEA,IAAQzB,EAAY/C,EAAZ+C,QAER,GAAIA,EAAS,CACX,IAAMk2C,EAAgB,GAChBC,EAAgB,GAChBC,EAAe,GACfC,EAAkB,GAGxB,GAAIr2C,EAAQs2C,QAAU,KAAOt2C,EAAQs2C,OAAS,IAC5CJ,EAAcK,KAAK,kDACnBn8C,OAAO+C,SAAS6E,KAAOoE,GAAQsY,KAAK/qB,cAEjC,GAAuB,MAAnBqM,EAAQs2C,OACXt2C,EAAQ1D,MAAQ0D,EAAQ1D,KAAKO,OAAS,EACxCmD,EAAQ1D,KAAKk6C,SAAQ,SAAAC,GACnB,OAAQA,EAAIC,aACV,KAAK,EAAGN,EAAaG,KAAKE,EAAIE,SAAU,MACxC,KAAK,EAAGN,EAAgBE,KAAKE,EAAIE,SAAU,MAC3C,KAAK,EACH,IAAKF,EAAIG,MAAO,CACdV,EAAcK,KAAKE,EAAIE,SACvB,MAEG,GAAkB,KAAdF,EAAIG,MAAc,CACzBT,EAAcI,KAAKE,EAAIE,SACvB,WASRT,EAAcK,KAAK,oGAGlB,GAAuB,MAAnBv2C,EAAQs2C,OACf90C,GAAoBvE,GACpBi5C,EAAcK,KAAK,oDACnB50C,EAAMk1C,SAAS52C,WAEZ,GAAuB,MAAnBD,EAAQs2C,OACfJ,EAAcK,KAAK,uBAEhB,GAAuB,MAAnBv2C,EAAQs2C,OACfJ,EAAcK,KAAK,mBAEhB,GAAIv2C,EAAQs2C,OAAS,KAAOt2C,EAAQs2C,OAAS,IAChDJ,EAAcK,KAAK,kHAEhB,GAAuB,MAAnBv2C,EAAQs2C,OACfJ,EAAcK,KAAK,wFAEhB,GAAuB,MAAnBv2C,EAAQs2C,OAAgB,CAE/B,OADsBt2C,EAAQ1D,KAAKw6C,cAEjC,KAAK33C,EAEH,OADAwC,EAAMk1C,SAASh2C,MACR/D,QAAQC,OAAOE,GAExB,KAAKkC,EAEH,OADAwC,EAAMk1C,SAAS91C,MACRjE,QAAQC,OAAOE,GAExB,QAAS,YAGR,IAAuB,MAAnB+C,EAAQs2C,OAEf,OADA30C,EAAMk1C,SAAS/1C,MACRhE,QAAQC,OAAOE,GAEf+C,EAAQs2C,OAAS,KAAOt2C,EAAQs2C,OAAS,KAChDJ,EAAcK,KAAK,wIAGrB,GAAIL,EAAcr5C,OAAS,EAAG,CAC5Bq5C,EAAcM,SAAQ,SAAA/0C,GAAK,OAAIE,EAAMk1C,SAASE,2BAAiBt1C,EAAO,aACtE,IAAMu1C,EAAgB/5C,EAItB,OAHA+5C,EAAcl+C,KAAd,UAAwBmE,EAAOnE,KAA/B,WACAm9C,EAAKe,GACqB,MAA1B/5C,EAAO+C,QAAQs2C,QAA4C,MAA1Br5C,EAAO+C,QAAQs2C,QAAkB90C,GAAoBvE,GAC/EH,QAAQC,OAAOE,GAGxB,GAAIk5C,EAAct5C,OAAS,EAAG,CAC5B,IAAMm6C,EAAgB/5C,EAGtB,OAFA+5C,EAAcl+C,KAAd,UAAwBmE,EAAOnE,KAA/B,WACAm9C,EAAKe,GACEl6C,QAAQC,OAAOE,GAWxB,OARIo5C,EAAgBx5C,OAAS,GAC3Bw5C,EAAgBG,SAAQ,SAAAS,GAAO,OAAIt1C,EAAMk1C,SAASE,2BAAiBE,EAAS,eAG1Eb,EAAav5C,OAAS,GACxBu5C,EAAaI,SAAQ,SAAAU,GAAI,OAAIv1C,EAAMk1C,SAASE,2BAAiBG,EAAM,eAG9DjB,EAAKh5C,GAKZ,OAAOg5C,EAAKh5C,O,sFCxHHk6C,GAAsB,iEAEtBC,GAAsB,iEACtBC,GAAe,0DACfC,GAAuB,kEACvBC,GAAsB,iEACtBC,GAAiB,4DACjBC,GAA0B,qEAC1BC,GAA4B,uEAC5BC,GAAgC,2EAChCC,GAAuB,kEAKvBC,GAA8B,yEAC9BC,GAAgB,2DChBhBC,GAA4B,mEAC5BC,GAA4B,mEAC5BC,GAAuB,8DACvBC,GAAgC,uEAChCC,GAAsB,6DACtBC,GAAmB,0DACnBC,GAA0B,iEAC1BC,GAAgB,CAC3BC,UAAW,GACXC,KAAM,GACNC,QAAS,GACTC,YAAa,GACbC,WAAY,GACZC,MAAO,GACPC,eAAgB,GAChBC,eAAgB,GAChBC,eAAgB,IAILC,GAAmB,CAC9BC,MAAO,oBACPC,KAAM,kBACNC,kBAAmB,0EACnBC,mBAAoB,4EACpBC,mBAAoB,4EACpBC,oBAAqB,8EACrBC,cAAe,kEACfC,eAAgB,oEAChBC,gBAAiB,8FACjBC,iBAAkB,gGAClBC,kBAAmB,4CACnBC,UAAW,wBCRPC,GAAqB,IAAIC,KAAKC,aAAa,QAAS,CAAEC,sBAAuB,IAE7EC,GAAe,CACnBC,YAAa,GACbC,eAAgB,GAChBC,qBAAqB,EACrBC,aAAc,CACZrK,cAAe,EACfsK,YAAa,GACb7wB,YAAa,CACX8wB,UAAW,CACTC,QAASlC,GACTmC,SAAUnC,GACVoC,MAAOpC,IAETqC,cAAe,GAEjBC,aAAc,GACdC,OAAQ,CAAEhK,GAAI,EAAGvzB,KAAM,IACvBw9B,uBAAwB,GACxBC,mBAAoB,GACpBC,iBAAkB,GAClBC,aAAc,IAEhBC,sBAAuB,IACvBC,uBAAwB,GACxBC,mBAAoB,GACpBC,WAAY,GACZC,YAAa,CACXzK,GAAI,EACJb,cAAe,EACf1I,gBAAiB,GACjBuT,OAAQ,GACR5L,KAAM,GACNsM,MAAO,EACPC,MAAO,EACP1iD,KAAM,GACN2iD,OAAQ,GACRC,UAAW,GACXC,SAAU,GACVC,kBAAmB,GACnBC,gBAAiB,GACjBC,iBAAkB,GAClBC,mBAAoB,IAEtBC,qBAAsB,GACtBC,wBAAyB,GACzBC,gBAAiB,GACjBC,eAAgB,CAAEC,aAAc,GAAIC,eAAgB,IACpDC,SAAU,CACRp5C,QAAS,KACTC,QAAS,MAEXo5C,cAAe,CACbC,yBAAyB,EACzBC,uBAAuB,EACvBC,gBAAgB,EAChBC,qBAAqB,EACrBC,gBAAgB,IA6Xb,SAASC,GAAoBC,EAASC,GAC3C,IAAQP,EAAwFO,EAAxFP,wBAAyBC,EAA+DM,EAA/DN,sBAAuBC,EAAwCK,EAAxCL,eAAgBC,EAAwBI,EAAxBJ,oBAkBxE,OAhBKF,IACHM,EAAYN,sBAAwBK,EAAQE,YAAYC,cAGrDP,GAAkBI,EAAQE,YAAYE,iBACzCH,EAAYL,gBAAiB,GAG1BF,IACHO,EAAYP,wBAA6C,SAAnBM,EAAQK,QAG3CR,IACHI,EAAYJ,oBAAgE,IAA1CG,EAAQM,+BAA4D,MAArBN,EAAQO,UAGpFN,EAGMO,OA/Yf,WAAwD,IAA/B57C,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAC/CsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAKu+C,GACH,IAAIkF,EAAgB,CAClBC,yBAAyB,EACzBC,uBAAuB,EACvBC,gBAAgB,EAChBC,qBAAqB,EACrBC,gBAAgB,GAGd1B,EAAwB,EAEtBuC,EAA0BxgD,EAAO+C,QAAQ1D,KAAKohD,MAAK,SAACC,EAAMC,GAI9D,MAHS,UAAMD,EAAKE,YAAYC,KAAKC,eAC5B,UAAMH,EAAKC,YAAYC,KAAKC,gBAEjB,EAAI,KAGpB7D,EAAcuD,EAAwBO,KAAI,SAAAlB,GAE9CP,EAAgBM,GAAoBC,EAASP,GAG7C,IACM0B,EAAmB,GACnBC,EAAsB,GACxBC,EAAwB,EA6B5B,GA5BArB,EAAQsB,iBAAiB5H,SAAQ,SAAC6H,EAAYC,GAC5C,IAAMC,EAAgB,6BACjBF,GADiB,IAEpBxN,GAAIyN,EACJE,oBAAqBH,EAAWI,iBAChCA,iBAAiB,GAAD,QAAoC,IAA9BJ,EAAWI,kBAAwBC,QAAQ,GAAjD,KAChBC,MAAOv1C,4BAAkBi1C,EAAWM,OACpCC,SAAUP,EAAWM,MACrBE,kBAAmB,CAAC,CAClBhO,GAAIyN,EACJG,iBAAiB,GAAD,QAAoC,IAA9BJ,EAAWI,kBAAwBC,QAAQ,GAAjD,KAChBI,SAAUT,EAAWS,SACrBH,MAAOv1C,4BAAkBi1C,EAAWM,WAIpCN,EAAWI,iBApBW,IAsBxBR,EAAiB1H,KAAKgI,IAItBL,EAAoB3H,KAAKgI,GACzBJ,GAAgDE,EAAWI,qBAK3DN,EAhCwB,IAiC1BF,EAAiB1H,KAAK,CACpB1F,GAAI,sBACJ2N,oBAAqBL,EACrBM,iBAAiB,GAAD,QAA8B,IAAxBN,GAA6BO,QAAQ,GAA3C,KAChBG,kBAAmBX,SAGlB,GAAIA,EAAoBrhD,OAAS,EAAG,CACvC,IAAMkiD,EAAiBd,EAAiBA,EAAiBphD,OAAS,GAClEkiD,EAAeF,kBAAf,uBAAuCE,EAAeF,mBAAsBX,GAC5Ea,EAAeP,oBAAsBO,EAAeP,oBAAsBL,EAC1EY,EAAeN,iBAAf,WAA2E,IAArCM,EAAeP,qBAA2BE,QAAQ,GAAxF,KAGF,IAAMM,EAAa,CACjBC,iBAAkBnC,EAAQoC,WAAaC,KAAMrC,EAAQoC,WAAWE,OAAO,cACvExrD,UAAWkpD,EAAQuC,UACnBC,eAAgBxC,EAAQyC,eACxBC,gBAAoC,WAAnB1C,EAAQK,OACzBnN,cAAe8M,EAAQ2C,cACvBnF,YAAawC,EAAQ4C,KACrBC,gBAAiB7C,EAAQO,SACzBuC,cAAeT,KAAMrC,EAAQ+C,eAAeT,OAAO,cACnDU,MAAO,CACLxiC,KAAMw/B,EAAQiD,MAAMjC,MAEtBr0B,YAAa,CACX8wB,UAAW,CACTE,SAAUqC,EAAQe,YAAYmC,gBAAkBC,gBAAKnD,EAAQe,YAAYmC,gBAAiBE,OAAOC,KAAK7H,KAAkBA,GACxHkC,QAASsC,EAAQe,YAAYuC,eAAiBH,gBAAKnD,EAAQe,YAAYuC,eAAgBF,OAAOC,KAAK7H,KAAkBA,GACrHoC,MAAOoC,EAAQe,YAAYwC,aAAeJ,gBAAKnD,EAAQe,YAAYwC,aAAcH,OAAOC,KAAK7H,KAAkBA,IAEjHh7B,KAAMw/B,EAAQe,YAAYC,KAC1BwC,SAAS,GAAD,OAAKxD,EAAQe,YAAY0C,UAAzB,YAAsCzD,EAAQe,YAAY2C,WAA1D,YAAwE1D,EAAQe,YAAY4C,UACpGC,QAAS5D,EAAQe,YAAY8C,QAC7BhG,cAAemC,EAAQe,YAAY+C,cACnCC,SAAU/D,EAAQe,YAAYiD,UAC9BC,IAAKjE,EAAQe,YAAYmD,gBAE3BC,aAAcnE,EAAQoE,8BACtBC,SAAU/3C,4BAAkB0zC,EAAQsE,UACpCC,uBAAwBvE,EAAQwE,uBAChCC,kBAAmBzE,EAAQ0E,kBAE3BC,gBAAiB3E,EAAQ4E,gBAAgBhE,MAAK,SAACiE,EAAGC,GAAJ,OAAUA,EAAEjD,MAAQgD,EAAEhD,SACjEX,KAAI,SAAAK,GAAU,oCACVA,GADU,IAEbxN,GAAIwN,EAAWwD,KAAKC,OACpBtf,SAAU6b,EAAWwD,KAAK/D,KAC1BiE,OAAQ1D,EAAWwD,KAAKG,YACxBC,MAAO74C,4BAAkBi1C,EAAW4D,MAAO,GAC3CC,SAAU7D,EAAW4D,MACrBE,MAAOtI,GAAmBuF,OAAOf,EAAW8D,OAC5CC,SAAU/D,EAAW8D,MACrBxD,MAAOv1C,4BAAkBi1C,EAAWM,YAExCV,mBACArD,aAAcxxC,4BAAkB0zC,EAAQuF,kBACxCxH,OAAQ,CACNhK,GAAIiM,EAAQwF,OAAOC,SACnBjlC,KAAMw/B,EAAQwF,OAAOxE,KACrB0E,SAAU1F,EAAQwF,OAAOG,UAE3B3H,uBAAwBgC,EAAQ4F,uBAChCC,YAAa7F,EAAQ8F,YACrB7F,YAAaD,EAAQE,YACrB6F,iBAAkB/F,EAAQgG,kBAAoB,CAC5ClvD,UAAWkpD,EAAQuC,UACnB0D,UAAWjG,EAAQgG,iBAAiBE,UAAY7D,KAAMrC,EAAQgG,iBAAiBE,WAAa,KAC5F19C,UAAWw3C,EAAQgG,iBAAiBvC,UACpC96C,WAAYq3C,EAAQgG,iBAAiBtC,WACrCh7C,SAAUs3C,EAAQgG,iBAAiBrC,SACnCwC,YAAanG,EAAQgG,iBAAiBI,YACtCC,cAAe,WAEjBpI,mBAAoB3xC,4BAAkB0zC,EAAQsG,2BAC9CC,YAAavG,EAAQwG,YACrBC,mBAAoBzG,EAAQ0G,oBAAsB,CAChD5vD,UAAWkpD,EAAQuC,UACnB0D,UAAWjG,EAAQ0G,mBAAmBR,UAAY7D,KAAMrC,EAAQ0G,mBAAmBR,WAAa,KAChG19C,UAAWw3C,EAAQ0G,mBAAmBjD,UACtC96C,WAAYq3C,EAAQ0G,mBAAmBhD,WACvCh7C,SAAUs3C,EAAQ0G,mBAAmB/C,SACrCwC,YAAanG,EAAQ0G,mBAAmBN,YACxCC,cAAe,aAEjBM,wBAAyB3G,EAAQ4G,wBACjCpN,OAAQwG,EAAQK,OAChBwG,8BAA+B7G,EAAQM,8BACvCwG,WAAYx6C,4BAAkB0zC,EAAQ+G,aACtCC,cAAehH,EAAQ+G,YACvBE,aAAc36C,4BAAkB0zC,EAAQkH,cACxCC,gBAAiBnH,EAAQkH,aACzB/I,aAAc6B,EAAQtY,aAAawZ,KAAI,SAAAkG,GAAK,MAAK,CAC/CrT,GAAIqT,EAAMC,cACVlV,KAAMiV,EAAME,SACZtrD,KAAMorD,EAAMxE,KACZlE,MAAO0I,EAAMG,YACbj2C,OAAQ81C,EAAMI,OACdC,QAASL,EAAMM,QACfC,UAAWP,EAAMQ,cAEnBC,2BAA4B7H,EAAQ8H,2BACpC5J,iBAAkB5xC,4BAAkB0zC,EAAQ+H,yBAC5CC,OAAQhI,EAAQiI,eAKlB,OAFA7J,GAAyB4B,EAAQ+G,YAE1B7E,KAYT,OATAzB,EAASrD,YAAcA,EACvBqD,EAAShB,cAAgBA,EAGzBgB,EAAShB,cAAcK,eAAwC,IAAvB1C,EAAYr9C,OAEpD0gD,EAASrC,sBAAwB9xC,4BAAkB8xC,GACnDqC,EAASnD,qBAAsB,EAExBmD,EAGT,KAAKjG,GAEHiG,EAASpC,uBAAyBz5C,EAAMw4C,YAAY8K,QAAO,SAACC,EAAiBnI,GAC3E,IAAMjM,EAAE,UAAMiM,EAAQrzB,YAAYnM,KAA1B,YAAkCw/B,EAAQxC,YAA1C,YAAyDwC,EAAQwC,gBAuBzE,OAtBA2F,EAAgBpU,GAAMoU,EAAgBpU,IAAO,GAC7CoU,EAAgBpU,GAAI0F,KAAK,CACvB0I,iBAAkBnC,EAAQmC,iBAC1BK,eAAgBxC,EAAQwC,eACxB1rD,UAAWkpD,EAAQlpD,UACnB4rD,gBAAiB1C,EAAQ0C,gBACzBxP,cAAe8M,EAAQ9M,cACvB4P,cAAe9C,EAAQ8C,cACvBtF,YAAawC,EAAQxC,YACrBqF,gBAAiB7C,EAAQ6C,gBACzBhF,cAAemC,EAAQrzB,YAAYkxB,cACnCrT,gBAAiBwV,EAAQrzB,YAAYnM,KACrC4nC,eAAgBpI,EAAQrzB,YAAYs3B,IACpCQ,kBAAmBzE,EAAQyE,kBAC3B4D,WAAYrI,EAAQjC,OAAOv9B,KAC3BqlC,YAAa7F,EAAQ6F,YACrB5F,YAAaD,EAAQC,YACrB6G,WAAY9G,EAAQgH,cACpBsB,oBAAqBtI,EAAQ8G,WAC7BkB,OAAQhI,EAAQgI,SAGXG,IACN,IAEH,IAAMI,EAAgBnF,OAAOC,KAAK5C,EAASpC,wBAU3C,OATAkK,EAAc7O,SAAQ,SAAA8O,GACpB/H,EAASpC,uBAAuBmK,GAAO5H,MAAK,SAAC6H,EAAUC,GAErD,OAAOD,EAAS/F,gBAAkBgG,EAAShG,iBAAmB,EAC1D+F,EAAS/F,gBAAkBgG,EAAShG,gBAAkB,EACpD,QAIHjC,EAGT,KAAK/F,GACH,IAAMiO,EAAgB,GAatB,OAXA/jD,EAAMw4C,YAAY1D,SAAQ,SAAAsG,GACpBA,EAAQ+F,mBAAqB4C,EAAcC,MAAK,SAAAC,GAAS,OAAIA,EAAU1C,cAAgBnG,EAAQ+F,iBAAiBI,gBAClHwC,EAAclP,KAAKuG,EAAQ+F,kBAEzB/F,EAAQyG,qBAAuBkC,EAAcC,MAAK,SAAAC,GAAS,OAAIA,EAAU1C,cAAgBnG,EAAQyG,mBAAmBN,gBACtHwC,EAAclP,KAAKuG,EAAQyG,uBAI/BhG,EAASlC,WAAaoK,EAEflI,EAGT,KAAK7F,GAGH,OAFA6F,EAASvB,qBAAuB/+C,EAAO+C,QAAQ1D,KAExCihD,EAGT,KAAK5F,GAGH,OAFA4F,EAAStB,wBAA0Bh/C,EAAO+C,QAAQ1D,KAE3CihD,EAGT,KAAK3F,GACH,IAAMsE,EAAkBj/C,EAAO+C,QAAQ1D,KAgBvC,OAdAihD,EAASrB,gBAAkBA,EAAgB8B,KAAI,SAAAkG,GAAK,MAAK,CACvDrT,GAAIqT,EAAMC,cACVvwD,UAAWswD,EAAM7E,UACjBrP,cAAekU,EAAMzE,cACrBnY,gBAAiB4c,EAAM0B,gBACvB/K,OAAQqJ,EAAM5B,OACdrT,KAAMiV,EAAME,SAAWF,EAAME,SAAW,GACxCtrD,KAAMorD,EAAMxE,KACZlE,MAAO0I,EAAMG,YACbj2C,OAAQ81C,EAAMI,OACdC,QAASL,EAAMM,QAAUN,EAAMM,QAAQqB,WAAa,GACpDpB,UAAWP,EAAMQ,cAGZnH,EAGT,KAAK9F,GACH,IAAMqO,EAAc7oD,EAAO+C,QAAQ1D,KAC7Bg/C,EAAc,CAClB1nD,UAAWkyD,EAAYzG,UACvBvD,iBAAkBgK,EAAYC,WAAaD,EAAYC,WAAWC,WAAa,GAC/EhW,cAAe8V,EAAYrG,cAC3BnY,gBAAiBwe,EAAYF,gBAC7B/K,OAAQiL,EAAYxD,OACpBzR,GAAIiV,EAAY3B,cAChBlV,KAAM6W,EAAY1B,SAClBtrD,KAAMgtD,EAAYpG,KAClBjE,OAAQqK,EAAYC,WAAaD,EAAYC,WAAWE,MAAQH,EAAYI,OAC5ExK,UAAWoK,EAAYK,UACvB5K,MAAOuK,EAAYxB,OACnB9I,MAAOsK,EAAYzB,YACnB1I,SAAUmK,EAAYM,YAAcN,EAAYM,YAAYC,SAAW,GACvEzK,kBAAmBkK,EAAYM,YAAcN,EAAYM,YAAYE,wBAA0B,GAC/FzK,gBAAiBiK,EAAYM,YAAcN,EAAYM,YAAYG,gBAAkB,GACrFC,iCAAkCV,EAAYU,iCAC9CzK,mBAAoB+J,EAAYhiB,mBAC7Bka,KAAI,SAAAyI,GAAM,MAAK,CACd5V,GAAI4V,EAAOC,oBACXlkB,SAAUikB,EAAO5E,KAAK/D,KACtB6I,MAAO9M,GAAmBuF,OAAOqH,EAAOtE,OACxCyE,MAAOx9C,4BAAkBq9C,EAAOxE,MAAO,GACvCC,SAAUuE,EAAOxE,MACjB7zC,OAAQq4C,EAAOnC,YAOrB,OAJA/G,EAASjC,YAAcA,EAEvBiC,EAASnC,mBAAmB7E,KAAK+E,GAE1BiC,EAGT,KAAKpG,GACH,IAAM0P,EAAkBtJ,EAASrD,YAAY4M,QAAO,SAAAhK,GAAO,OAAIA,EAAQrzB,YAAYkxB,gBAAkB19C,EAAOmD,KAAKu6C,iBAC3GoM,EAAiB9G,gBAAKhjD,EAAO+C,QAAQ1D,KAAM4jD,OAAOC,KAAK7H,KAiB7D,OAfAuO,EAAgB7I,KAAI,SAAAlB,GAClB,IAAMkK,EAAMzJ,EAASrD,YAAY+M,WAAU,SAAAC,GAAG,OAAIA,EAAItzD,YAAckpD,EAAQlpD,aAC5E,OACE2pD,EAASrD,YAAY8M,GAArB,6BACKzJ,EAASrD,YAAY8M,IAD1B,IAEEv9B,YAAY,6BACP8zB,EAASrD,YAAY8M,GAAKv9B,aADpB,IAET8wB,UAAU,6BACLgD,EAASrD,YAAY8M,GAAKv9B,YAAY8wB,WADlC,mBAENt9C,EAAO+C,QAAQ1D,KAAKojD,KAAOqH,WAM/BxJ,EAGT,KAAKnG,GACH,MAAuCn6C,EAAOmD,KAAtC1L,EAAR,EAAQA,YAAaimD,EAArB,EAAqBA,cACfwM,EAAiB5J,EAASrD,YAAYkN,QAAQ7J,EAASrD,YAAYwL,MAAK,SAAA5I,GAAO,OAAIA,EAAQrzB,YAAYkxB,gBAAkBA,MAa/H,OAXA4C,EAASrD,YAAYiN,GAArB,6BACK5J,EAASrD,YAAYiN,IAD1B,IAEE19B,YAAY,6BACP8zB,EAASrD,YAAYiN,GAAgB19B,aAD/B,IAET8wB,UAAU,6BACLgD,EAASrD,YAAYiN,GAAgB19B,YAAY8wB,WAD7C,mBAEN7lD,EAAc4jD,SAKdiF,EAGT,KAAK1F,GAEH,OADA0F,EAASpB,eAAiBkL,wCAA8BpqD,EAAO+C,QAAQ1D,MAChEihD,EAGT,KAAKzF,GAKH,OAJAyF,EAASjB,SAAW,CAClBp5C,QAASjG,EAAO+C,QAAQ1D,KAAKgrD,UAC7BnkD,QAASlG,EAAO+C,QAAQ1D,KAAKirD,SAExBhK,EAGT,KAAKhG,GACH,IAAM4C,EAAiBl9C,EAAO+C,QAAQ1D,KAGtC,OADAihD,EAASpD,eAAiBA,EAAet9C,OAAS,GAAKs9C,EAAet9C,QAAU,GAAKs9C,EAAiB,GAC/FoD,EAGT,QACE,OAAO77C,IChdA8lD,GAAmB,6DACnBC,GAAwB,kEACxBC,GAAiC,2EAEjCC,GAAc,wDCKrB1N,GAAe,CACnB2N,gBAAiB,IAGbC,GAAiB,SAACC,GACtB,OAAIA,GAAYA,EAASjrD,OAAS,EACzBirD,EAAS9J,KAAI,SAAA+J,GAElB,OADAA,EAAKC,SAAWC,QAAQF,EAAKC,UACtBD,KAGJ,IA8CMG,OA3Cf,WAAuD,IAA/BxmD,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAE9CsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MACb,KAAK0uD,GAIH,OAHIvqD,EAAO+C,QAAQ1D,MAAQW,EAAO+C,QAAQ1D,KAAKO,OAAS,IACtD0gD,EAASqK,gBAAkBC,GAAe5qD,EAAO+C,QAAQ1D,OAEpDihD,EAGT,KAAKmK,GACH,MAAoCzqD,EAAO+C,QAAQ1D,KAA3C+iD,EAAR,EAAQA,UAAW8I,EAAnB,EAAmBA,aACbC,EAAuB7K,EAASqK,gBAAgBX,WAAU,SAAAc,GAAI,OAAIA,EAAK1I,YAAcA,KAE3F,OADA9B,EAASqK,gBAAgBQ,GAAsBD,aAAeA,EACvD5K,EAGT,KAAKkK,GACH,MAAgCxqD,EAAO+C,QAAQ1D,KAAvC+iD,EAAR,EAAQA,UAAW2I,EAAnB,EAAmBA,SACbI,EAAuB7K,EAASqK,gBAAgBX,WAAU,SAAAc,GAAI,OAAIA,EAAK1I,YAAcA,KAE3F,OADA9B,EAASqK,gBAAgBQ,GAAsBJ,SAAWA,EACnDzK,EAGT,KAAKoK,GACH,MAA2F1qD,EAAO+C,QAAQ1D,KAAlG+rD,EAAR,EAAQA,SAAUC,EAAlB,EAAkBA,YAAajJ,EAA/B,EAA+BA,UAAWkJ,EAA1C,EAA0CA,SAAUC,EAApD,EAAoDA,WAAYR,EAAhE,EAAgEA,SAAUG,EAA1E,EAA0EA,aACpEC,EAAuB7K,EAASqK,gBAAgBX,WAAU,SAAAc,GAAI,OAAIA,EAAK1I,YAAcA,KAO3F,OANA9B,EAASqK,gBAAgBQ,GAAsBC,SAAWA,EAC1D9K,EAASqK,gBAAgBQ,GAAsBE,YAAcA,EAC7D/K,EAASqK,gBAAgBQ,GAAsBG,SAAWA,EAC1DhL,EAASqK,gBAAgBQ,GAAsBI,WAAaA,EAC5DjL,EAASqK,gBAAgBQ,GAAsBJ,SAAWA,EAC1DzK,EAASqK,gBAAgBQ,GAAsBD,aAAeA,EACvD5K,EAGT,QACE,OAAO77C,ICzDA+mD,GAA8B,2EAC9BC,GAA2B,wEAC3BC,GAA0B,uEAC1BC,GAAuB,oEACvBC,GAAqB,gEACrBC,GAAwB,qEACxBC,GAA4B,yEAI5BC,GAA8B,yEAC9BC,GAA2B,2EAK3BC,GAAoB,oEAIpBC,GAA2B,wECzB3BC,GACF,eADEA,GAEP,QAEOC,GACF,WADEA,GAEP,WAEOC,GAAiB,CAAC,GAAI,GAAI,IAC1BhkB,GAAU,UAGVikB,GAAS,SCsBhBtP,GAAe,CACnBuP,iBAAkB,GAClBC,eAAgB,CACdC,aAAa,EACbn3D,OAAQ,IAEVo3D,iBAAkB,CAChB/1D,UAAW,EACX2rD,eAAgB,GAElBqK,qBAAqB,EACrBC,yBAA0B,GAC1BC,oBAAqB,GACrBC,oBAAqB,CACnBC,aAAc,IAEhBC,aAAc,CACZn2C,QAAS,CACPS,KAAM,GACNC,KAAM,IAER01C,OAAQ,CACNrJ,SAAU,GACVtsC,KAAM,KAGV41C,oBAAqB,GACrBC,sBAAuB,CACrB/K,UAAW,EACXI,cAAe,EACf4K,YAAa,GACb1J,QAAS,IACT2J,UAAW,GACX1J,cAAe,EACftZ,gBAAiB,GACjBijB,WAAY,GACZhI,SAAU,EACViI,cAAe,CACb,CACEC,iBAAkB,KAClBpL,UAAW,EACXqL,YAAa,KACbC,0BAA2B,EAC3BC,uBAAwB,KACxBC,qBAAqB,IAGzBC,oBAAoB,EACpBpI,uBAAwB,EACxBqI,iBAAkB,GAClBC,oBAAqB,EACrBC,sBAAuB,GACvBC,4BAA6B,EAC7BC,+BAAgC,EAChCC,4BAA6B,KAC7BP,qBAAqB,EACrBQ,wBAAwB,EACxBC,aAAc,GACdC,qBAAqB,EACrBC,mBAAoB,GACpBC,2BAA2B,EAC3BC,gBAAiB,IAEnBC,iBAAkB,GAClBC,qBAAqB,GAuPRC,OApPf,WAA4D,IAA/BnqD,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAEnDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK+vD,GAEH,OADAtL,EAASiM,iBAAmBvsD,EAAO+C,QAAQ1D,KACpCihD,EAGT,KAAKkL,GACH,IAAMrsD,EAAWa,EAAO+C,QAAQ1D,KAKhC,OAJAihD,EAASkM,eAAiB,CACxBC,YAAattD,EAASa,EAAOmD,KAAK4kC,iBAClCzyC,OAAQ6J,EAAS0vD,UAEZvO,EAGT,KAAKoL,GAEH,OADApL,EAASqM,qBAAsB,EACxBrM,EAGT,KAAKmL,GAEH,OADAnL,EAASqM,qBAAsB,EACxBrM,EAGT,KAAKqL,GAOH,OALArL,EAASoM,iBAAmB,CAC1B/1D,UAAWqJ,EAAO6/C,QAAQlpD,UAC1B2rD,eAAgBtiD,EAAO6/C,QAAQwC,gBAEjC/B,EAASsM,yBAA2B5sD,EAAO+nC,gBACpCuY,EAGT,KAAKuL,GAeH,OAdAvL,EAASuM,oBAAsB7sD,EAAO+C,QAAQ1D,KAAK0hD,KAAI,SAAAlB,GAAO,MAAK,CACjElpD,UAAWkpD,EAAQuC,UACnBC,eAAgBxC,EAAQyC,eACxBvP,cAAe8M,EAAQ2C,cACvBnF,YAAawC,EAAQ4C,KACrB7E,OAAQiC,EAAQwF,OAChBxC,MAAO,CACLxiC,KAAMw/B,EAAQiD,MAAMjC,MAEtBr0B,YAAa,CACXnM,KAAMw/B,EAAQe,YAAYC,MAE5B8F,WAAYx6C,4BAAkB0zC,EAAQ+G,iBAEjCtG,EAGT,KAAKwL,GACH,IAAIoB,EAAsBltD,EAAO+C,QAAQ1D,KACzC,OAAQW,EAAOmD,KAAKtH,MAClB,IAAK,cACL,IAAK,eACHqxD,EAAoB4B,WAAahwD,eAAIouD,EAAqB,aAAc,GACxE,MACF,IAAK,gBACHA,EAAsB,CACpB9K,UAAW8K,EAAoB6B,QAAQ,GAAG3M,UAC1CE,eAAgB4K,EAAoB5K,eACpC0M,iBAAkB9B,EAAoB6B,QAAQ,GAAGE,OAAS7E,wCAA8B8C,EAAoB6B,QAAQ,GAAGE,QAAU,KACjIC,oBAAqBhC,EAAoB6B,QAAQ,GAAGI,UACpDC,iBAAkBlC,EAAoB6B,QAAQ,GAAGM,aAEnD,MAEF,IAAK,aACHnC,EAAmB,6BACdltD,EAAO+C,QAAQ1D,MADD,IAEjB+iD,UAAWpiD,EAAOmD,KAAKi/C,YAS7B,OADA9B,EAAS4M,oBAAsBA,EACxB5M,EAGT,KAAKyL,GACH,IAAMuD,EAAetvD,EAAO+C,QAAQ1D,KAC9BkwD,EAAmBC,SAASxvD,EAAOmD,KAAKxM,WACxC84D,EAAiBH,EAAaI,YAAYjH,MAAK,SAAA5I,GAAO,OAAIA,EAAQuC,YAAcmN,KAChFrB,EAAiCyB,WAAWL,EAAaI,YAAY3H,QAAO,SAAC6H,EAAK/P,GAAN,OAAkB+P,EAAM/P,EAAQgQ,yBAAwB,GAAGpO,QAAQ,IAwErJ,OAtEAnB,EAAS6M,sBAAwB,CAE/B/K,UAAWqN,EAAerN,UAC1BI,cAAeiN,EAAejN,cAC9B8K,WAAYmC,EAAenC,WAC3BhI,SAAUmK,EAAenK,SAGzB5B,QAAS4L,EAAa5L,QACtB0J,YAAakC,EAAalC,YAC1BC,UAAWyC,qBAAWR,EAAaxM,MAAMjC,MACzCxW,gBAAiBylB,qBAAWR,EAAa1O,YAAYC,MACrD8C,cAAe2L,EAAa1O,YAAY+C,cACxCmK,iBAAkB3hD,4BAAkBmjD,EAAa1I,aACjDmH,oBAAqBuB,EAAa1I,YAClCoH,sBAAuB7hD,4BAAkBmjD,EAAavI,cACtDkH,4BAA6BqB,EAAavI,aAC1C8G,mBAAoByB,EAAazB,mBACjCpI,uBAAwB6J,EAAa7J,uBACrCmI,oBAAqB0B,EAAa1B,oBAClCQ,uBAAwBkB,EAAalB,uBACrCF,iCACAC,4BAA6BhiD,4BAAkB+hD,GAC/CI,oBAAqBgB,EAAaS,oBAClC1B,aAAc,CACZ2B,MAAOF,qBAAWR,EAAaxM,MAAMmN,UAAUC,OAC/CC,MAAOL,qBAAWR,EAAaxM,MAAMmN,UAAUG,MAAO,CAAC,MAAO,MAAO,cACrE/vC,KAAMyvC,qBAAW,GAAD,OAAIR,EAAaxM,MAAMjC,OACvCwP,QAASP,qBAAWR,EAAaxM,MAAMK,eAAevH,eAAgB,CAAC,OACvE0U,QAASR,qBAAWR,EAAaxM,MAAMK,eAAetH,eAAgB,CAAC,OACvE0U,KAAMT,qBAAWR,EAAaxM,MAAMK,eAAe5H,MACnD92C,MAAO,CAAE+rD,KAAMlB,EAAaxM,MAAMK,eAAexH,OACjD8U,WAAYnB,EAAaxM,MAAMK,eAAezH,YAEhD8S,0BAA2Bc,EAAaoB,0BACxCnC,mBAAoB,CAClBluC,KAAMyvC,qBAAW,GAAD,OAAIR,EAAa1O,YAAYC,OAC7CwP,QAASP,qBAAWR,EAAa1O,YAAYuC,eAAevH,eAAgB,CAAC,OAC7E0U,QAASR,qBAAWR,EAAa1O,YAAYuC,eAAetH,eAAgB,CAAC,OAC7E0U,KAAMT,qBAAWR,EAAa1O,YAAYuC,eAAe5H,MACzD92C,MAAO,CAAE+rD,KAAMlB,EAAa1O,YAAYuC,eAAexH,OACvD8U,WAAYnB,EAAa1O,YAAYuC,eAAezH,YAEtD6R,cAAe+B,EAAaI,YAAY3O,KAAI,SAAAlB,GAAO,MAAK,CACtDuC,UAAWvC,EAAQuC,UACnBI,cAAe3C,EAAQ2C,cACvB8K,WAAYzN,EAAQyN,WACpBG,YAAathD,4BAAkB0zC,EAAQ+G,aACvC+J,kBAAmB9Q,EAAQ+G,YAC3B4G,iBAAkBrhD,4BAAkB0zC,EAAQkH,cAC5C6J,uBAAwB/Q,EAAQkH,aAChC8J,uBAAwBhR,EAAQgQ,uBAAyB3B,GAAkC,EAC3FR,0BAA2B7N,EAAQgQ,uBACnClC,uBAAwBxhD,4BAAkB0zC,EAAQgQ,wBAClDjC,oBAAqB/N,EAAQ+N,oBAC7BQ,uBAAwBvO,EAAQuO,2BAElCK,gBAAiBa,EAAawB,gBAAgB/P,KAAI,SAAAgQ,GAAO,MAAK,CAC5DC,KAAMlB,qBAAWiB,EAAQE,YACzB5wC,KAAMyvC,qBAAWiB,EAAQG,YACzBb,QAASP,qBAAWiB,EAAQI,QAAQvV,gBACpC2U,KAAMT,qBAAWiB,EAAQI,QAAQ5V,MACjC92C,MAAO,CAAE+rD,KAAMO,EAAQI,QAAQxV,OAC/B8U,WAAYM,EAAQI,QAAQzV,WAC5B0V,SAAUL,EAAQM,SAASzI,WAC3B0I,IAAI,GAAD,OAAKxB,qBAAW,GAAD,OAAIR,EAAa1O,YAAYC,QAC/C0Q,aAAcR,EAAQS,eAInBlR,EAGT,KAAK0L,GACH,IAAMyF,EAA2BzxD,EAAOi9C,YAAY4M,QAAO,SAAAhK,GAAO,OAAIA,EAAQC,YAAY4R,cACpFC,EAAa3xD,EAAO4xD,0BACpBh7C,EAAY5W,EAAO4W,UACnBi7C,EAAc7xD,EAAOrJ,YAAc2pD,EAAS4M,oBAAoB9K,WAAY9B,EAAS4M,oBACrF4E,EAAkB7O,OAAOC,KAAK2O,GAAajyD,OAAS,GAAM6xD,EAAyBhJ,MAAK,SAAA5I,GAAO,OAAIA,EAAQlpD,YAAck7D,EAAYzP,aAsC3I,OApCA9B,EAASwM,oBAAsB,CAC7BiF,kBAAmB/xD,EAAOrJ,UAC1B86D,yBAA0BA,EAAyB1Q,KAAI,SAAAlB,GAErD,IAAMmS,EAAiB1R,EAASiM,iBAAiB0F,MAAK,SAAA3C,GAAY,OAAIzP,EAAQwC,iBAAmBiN,EAAahN,gBAAkBgN,EAAa1I,aAAe+K,KAC5J,OAAO,6BACF9R,GADL,IAEEuC,UAAWvC,EAAQlpD,UACnBu7D,mBAAoB,EACpB1c,QAAS,GACTwc,sBAGJjF,aAAcn2C,EACT,CACDu7C,YAAanyD,EAAOoyD,kBAAkB3J,MAAK,SAAA0J,GAAW,OAAIA,EAAYE,gBAAkBR,EAAYQ,iBACpG/6C,KAAMu6C,EAAYS,cAAcC,cAChCh7C,KAAMs6C,EAAYW,cAAgBX,EAAYW,cAAcD,cAAgB,GAC5E/c,QAASqc,EAAYvH,QACrBmI,SAAUZ,EAAYa,SACtBC,iBAAkB,CAAC,CACjBh8D,UAAWk7D,EAAYzP,UACvBrP,cAAe+e,EAAgB/e,cAC/BvmB,YAAa,CACXo3B,SAAUkO,EAAgBtlC,YAAYo3B,SACtCvjC,KAAMyxC,EAAgBtlC,YAAYnM,MAEpC6xC,mBAAoBL,EAAYxK,OAChC7R,QAASqc,EAAYvH,SAAW,KAElCrhB,cAAe4oB,EAAYe,WAC3B/2D,KAAMg2D,EAAYgB,iBAAmBxqB,IAAyC,OAA9BwpB,EAAYW,cDzS3C,gBCySoFX,EAAYgB,gBAEjH,IAGCvS,EAGT,KAAK2L,GACH,IAAM9sD,EAAWa,EAAO+C,QAAQ1D,KAC1B2oC,EAAYhoC,EAAOmD,KAAK6kC,UAAU8qB,cAClCC,EAAM/yD,EAAOmD,KAAK4vD,IAAID,cAa5B,OAXI9qB,IAAcK,GAAQyqB,cACxBxS,EAAS0M,aAAan2C,QAAQk8C,GAAO7Q,KAAM/iD,GAGvC6zD,MAAMC,QAAQ9zD,GAChBmhD,EAAS0M,aAAaC,OAAO8F,GAAO5zD,EAAS4hD,KAAI,SAAA/O,GAAI,OAAIkQ,KAAMlQ,MAG/DsO,EAAS0M,aAAaC,OAAO8F,GAAO7Q,KAAM/iD,GAGvCmhD,EAGT,KAAK4L,GAEH,OADA5L,EAASqO,oBAAsB3uD,EAAO+C,QAC/Bu9C,EAGT,QACE,OAAO77C,IChVAyuD,GAAuB,4EACvBC,GAAoB,yEACpBC,GAA0B,+EAC1BC,GAA4B,iFAC5BC,GAA2B,gFAS3BC,GAAmB,wEACnBC,GAAkB,uECFzBxW,GAAe,CACnByW,kBAAmB,GACnBC,aAAc,GACdtB,kBAAmB,GACnBuB,oBAAqB,GACrBC,mBAAoB,GACpBC,YAAa,IA8GAC,OA3Gf,WAAwD,IAA/BrvD,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAE/CsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAKq3D,GAEH,OADA5S,EAASmT,kBAAoBzzD,EAAO+C,QAAQ1D,KAAK+pD,SAC1C9I,EAGT,KAAK6S,GAKH,OAJA7S,EAASoT,aAAe1zD,EAAO+C,QAAQ1D,KAAK0hD,KAAI,SAAAoR,GAAW,oCACtDA,GADsD,IAEzD/I,SAAU+I,EAAY/I,SAAStI,mBAE1BR,EAGT,KAAK8S,GAsBH,OArBA9S,EAAS8R,kBAAoBpyD,EAAO+C,QAAQ1D,KAAK0hD,KAAI,SAAAoR,GAAW,MAAK,CACnE4B,IAAK5B,EAAY4B,IACjB1B,cAAeF,EAAYE,cAC3BjJ,SAAU+I,EAAY/I,SAAStI,cAC/BuI,wBAAyB8I,EAAY9I,wBACrC2K,cAAe7B,EAAY6B,cAC3B1K,gBAAiB6I,EAAY7I,gBAC7B2K,iBAAkB9B,EAAY8B,iBAC9BC,gCAAiC/B,EAAY+B,gCAC7CC,8BAA+BhC,EAAYgC,8BAC3CC,oCAAqCjC,EAAYiC,oCACjDzQ,cAAewO,EAAYxO,cAC3BgF,gBAAiBwJ,EAAYxJ,gBAC7B0L,iBAAkBlC,EAAYkC,iBAC9BC,cAAenC,EAAYmC,cAC3BC,eAAgBpC,EAAYoC,eAC5BC,sBAAuBrC,EAAYqC,sBACnCC,0BAA2BtC,EAAYsC,0BACvCC,YAAavC,EAAYuC,YACzBC,SAAUxC,EAAYwC,aAEjBrU,EAGT,KAAK+S,GAEH,IAAMM,EAAsBlvD,EAAMivD,aAAa3L,QAAO,SAAC4L,EAAqBxB,GAC1E,IAAMyC,EAASzC,EAAYxJ,gBAAZ,UAAiCmH,qBAAWqC,EAAYxJ,iBAAxD,uCAAgH,mBAI/H,OAHAgL,EAAoBiB,GAAUjB,EAAoBiB,IAAW,GAC7DjB,EAAoBiB,GAAQtb,KAAK6Y,GAE1BwB,IACN,IAGH,OADArT,EAASqT,oBAAsBA,EACxBrT,EAGT,KAAKgT,GACH,IAAMM,EAAqB,CACzB,CACEhgB,GAAI5zC,EAAO60D,YAAYpR,QACvBpjC,KAAMrgB,EAAO60D,YAAYx0C,KAAKygC,cAC9BgU,eAAe,IAkBnB,OAdA90D,EAAOi9C,YAAY1D,SAAQ,SAAAsG,GACzB,IAAMkV,EAAiBlV,EAAQC,YAAYE,YACrCgV,EAAoB,CACxBphB,GAAIiM,EAAQrzB,YAAYkxB,cACxBr9B,KAAMw/B,EAAQrzB,YAAY62B,SAASvC,cACnCgU,eAAe,GAEXG,EAAiBj1D,EAAO60D,YAAYpR,UAAY5D,EAAQrzB,YAAYkxB,cACtEqX,GAAkBE,IAAmBrB,EAAmB3B,MAAK,SAAAiD,GAAU,OAAIA,EAAWthB,KAAOohB,EAAkBphB,OACjHggB,EAAmBta,KAAK0b,MAI5B1U,EAASsT,mBAAqBA,EACvBtT,EAGT,KAAKiT,GAEH,OADAjT,EAASuT,YAAc7zD,EAAO+C,QAAQ1D,KAC/BihD,EAGT,KAAKkT,GASH,OARAvQ,OAAOC,KAAK5C,EAASqT,qBAAqBpa,SAAQ,SAAA4b,GACvB7U,EAASqT,oBAAoBwB,GACrC5b,SAAQ,SAAAsG,GACnBA,EAAQwS,gBAAkBryD,EAAOmD,KAAKkvD,gBACxCxS,EAAQ8U,SAAW30D,EAAOmD,KAAKiyD,gBAI9B9U,EAGT,QACE,OAAO77C,I,sBCxHA4wD,GACD,WADCA,GAEC,aAFDA,GAGE,cAGFC,GAAe,CAC1BC,cAAe,CACbF,GACAA,GACAA,IAEF5/D,eAAgB,CACd4/D,GACAA,IAEFl+D,SAAU,CACRk+D,GACAA,IAEFzqD,gBAAiB,CACfyqD,IAEFznD,aAAc,CACZynD,IAEF/8B,SAAU,CACR+8B,IAEFt6C,UAAW,CACTs6C,GACAA,IAEF72C,QAAS,CACP62C,IAEF5zC,KAAM,CACJ4zC,GACAA,IAEFpzC,kBAAmB,CACjBozC,IAEFxtC,KAAM,CACJwtC,IAEFvmC,YAAa,CACXumC,GACAA,IAEF77D,OAAQ,CACN67D,GACAA,IAEFn7D,aAAc,CACZm7D,GACAA,GACAA,IAEF16B,oBAAqB,CACnB06B,IAEF1yB,OAAQ,CACN0yB,GACAA,GACAA,IAEF9tB,aAAc,CACZ8tB,GACAA,IAEF1c,YAAa,CACX0c,GACAA,GACAA,KClDEG,IAAmBr4D,OAAO+H,UAAUuwD,cAAgBt4D,OAAO+H,UAAUhC,UAAUwyD,MAAM,KAAK,GAC1F1Y,GAAe,CACnB2Y,gBAAgB,EAChBC,OAAQ,GACRC,oBAAoB,EACpBC,qBAAqB,EACrBC,sBAAsB,EACtBC,SAAS,EACT9yD,SAAU+yD,aAAa93D,QAAQ,kBAAoB83D,aAAa93D,QAAQ,kBAAoBq3D,GAC5FU,oBAAoB,EACpBC,mBAAmB,EACnBC,oBAAoB,EACpBn4D,MAAO,GACP42D,YAAa,CACX1sD,MAAO,GACPkY,KAAM,GACNg2C,cAAe,GACfhzD,eAAgB,GAChBizD,mBAAmB,GAErBC,iBAAkB,CAChBC,aAAc,GACdC,eAAgB,GAChBC,OAAQ,IAEVC,WAAY,GACZC,aAAa,EACbC,mBAAmB,EACnBC,cAAe,GACfC,+BAAgC,EAChCC,iBAAiB,EACjBC,uBAAuB,EACvBC,iBAAiB,EACjBC,mBAAmB,EACnBC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACftzD,cAAc,EACduzD,gBAAiB,GACjBC,aAAc,GACdC,cAAe,GACfC,2BAA2B,GAwJtB,SAASC,GAAU/B,GACxB,MAAO,CACLf,YAAa,CACXpR,QAASmS,EAAOlS,QAChBv7C,MAAOytD,EAAOY,aACdn2C,KAAMyvC,qBAAW8F,EAAO/U,MAAQ,IAChCwV,cAAeT,EAAOgC,YAKrB,SAASC,GAAgBjC,GAC9B,OAAOA,EAAO7N,QAAO,SAAC+P,EAAQC,GAAT,oBAAC,gBAAwBD,GAAzB,mBAAkCC,EAAMC,OAASD,EAAME,YAAY,IAGnF,SAASC,GAAoB5X,GAClC,OAAIA,EAASuV,mBACJR,GAEA/U,EAASwV,oBACTT,GAEFA,GCvPF,IAQM8C,GAAe,eAKfC,GAAY,YAGZC,GAAa,aACbC,GAAO,OCKdtb,GAAe,CACnBub,UAAW,CACTC,QAAS,CAAEC,SAAU,IACrBC,QAAS,CAAED,SAAU,IACrBE,QAAS,CAAEF,SAAU,KAEvBG,gBAAiB,CACfC,uCAAwC,EACxCC,aAAc,GACdx/C,UAAW,GACXy/C,qBAAsB,EACtBC,WAAY,EACZC,uBAAwB,EACxBC,kBAAmB,GACnBC,eAAgB,GAChB//C,mBAAoB,GACpBggD,aAAc,GACdC,eAAgB,GAChBC,kCAAmC,EACnCC,qCAAsC,GAExCC,qBAAsB,GACtBC,eAAgB,GAChBC,iBAAkB,CAChBC,UAAW,GACXC,gBAAiB,IAEnBC,SAAU,GACVC,oBAAqB,CACnBC,aAAc,GACdC,eAAgB,GAChBC,UAAW,GACXC,WAAY,GACZC,gBAAiB,GACjB7pB,cAAe,EACfO,cAAe,EACfupB,YAAa,GACbC,uBAAwB,EACxBC,iBAAkB,GAGpBC,YAAatX,OAAOuX,OAAOze,IAAkBgM,QAAO,SAAC0S,EAAKC,GAAN,oBAAC,gBAA8BD,GAA/B,mBAAqCC,EAAiB,OAAO,IACjHC,mBAAmB,GA0INC,OAvIf,WAA+D,IAA/Bn2D,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAEtDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MACb,KAAKi/C,GACH,IAAMz7C,EAAOW,EAAO+C,QAAQ1D,KAE5BihD,EAASsY,gBAAkBv5D,EAC3BihD,EAASuZ,SAAWvZ,EAASsY,gBAAgBiC,SAAS9Z,KAAI,SAAAt8C,GAAK,MAAK,CAClE+rD,KAAM/rD,EAAM+rD,KACZ3P,KAAMp8C,EAAMo8C,SAGdP,EAASuZ,SAASiB,QAAQ,CAAEtK,KAAM,GAAI3P,KAAMka,GAAG/oD,gBAAgBhI,kBAE/D,IAAM2pC,EAAWonB,GAAG5rB,YAAYwE,SAC1BqnB,EAAwB37D,EAAK47D,2CAA6C57D,EAAK47D,0CAA4C,GAwDjI,OAvDA3a,EAASwZ,oBAAT,+JACKxZ,EAASwZ,qBADd,IAEEjoB,uBAAwBxyC,EAAKwyC,uBAC7B/gC,0BAA2BzR,EAAKyR,2BAC5BzR,EAAK47D,2CAA6C,CAAEX,iBAAkBj7D,EAAK47D,4CAC3E57D,EAAK67D,+BAAiC,CAAE5qB,cAAejxC,EAAK67D,gCAC5D77D,EAAK87D,sCAAwC,CAAEtqB,cAAexxC,EAAK87D,uCACnE97D,EAAK87D,sCAAwC,CAAElqB,uBAAyB5xC,EAAK87D,qCAAuCH,IACpH37D,EAAK+7D,gBAAkB,CACzBrB,aACE16D,EAAK+7D,eAAera,KAAI,SAAAllD,GAEtB,IAAIwkB,EACJ,OAAQxkB,EAAK20D,MACX,ID/FW,MCgGTnwC,EAAO,4BACP,MACF,IDrGmB,aCsGjBA,EAAO,qBACP,MACF,QACEA,EAAOxkB,EAAKglD,KAEhB,MAAO,CACLjN,GAAI/3C,EAAK20D,KACTnwC,aAIJhhB,EAAKg8D,gBAAkB,CACzBrB,eAAgB36D,EAAKg8D,eAClBxR,QAAO,SAAAhuD,GAAI,MAAkB,MAAdA,EAAK20D,MAA8B,MAAd30D,EAAK20D,MAA8B,MAAd30D,EAAK20D,QAC9DzP,KAAI,SAAAllD,GAAI,MAAK,CACZ+3C,GAAI/3C,EAAK20D,KACTnwC,KAAMxkB,EAAKglD,KACXlN,SAAUA,EAAS8U,MAAK,SAAAxgB,GAAO,OAAIA,EAAQ2L,KAAO/3C,EAAK20D,QAAM7c,eAG/Dt0C,EAAKi8D,6BAA+B,CAAErB,UAAW56D,EAAKi8D,4BAA4Bva,KAAI,SAAA/O,GAAI,OAAIkQ,KAAMlQ,GAAMmQ,OAAO,mBACjH9iD,EAAKk8D,+BAAiC,CAAErB,WAAY76D,EAAKk8D,8BAA8Bxa,KAAI,SAAA/O,GAAI,OAAIkQ,KAAMlQ,GAAMmQ,OAAO,mBACtH9iD,EAAKm8D,iBAAmB,CAAEpB,YAAalY,KAAM7iD,EAAKm8D,iBAAiBrZ,OAAO,sBAC1E9iD,EAAKo8D,sCAAwC,CAAEpB,uBAAwBh7D,EAAKo8D,uCAC5Ep8D,EAAKq8D,iBAAmB,CAC1BvB,gBAAiB96D,EAAKq8D,gBACnB7R,QAAO,SAAAhuD,GAAI,MAAkB,aAAdA,EAAK20D,MAAqC,gBAAd30D,EAAK20D,MAAwC,iBAAd30D,EAAK20D,QAC/EzP,KAAI,SAAAllD,GAAI,MAAK,CACZ+3C,GAAI/3C,EAAK20D,KACTnwC,KAAMxkB,EAAKglD,KACXlN,SAAUA,EAAS8U,MAAK,SAAAxgB,GAAO,OAAIA,EAAQ2L,KAAO/3C,EAAK20D,QAAM7c,eAKrE2M,EAASmZ,eAAiBp6D,EAAKg6D,eAExB/Y,EAGT,KAAKvF,GAEH,OADAuF,EAASkZ,qBAAuBx5D,EAAO+C,QAAQ1D,KACxCihD,EAGT,KAAKtF,GACH,IAAM2gB,EAAO37D,EAAO+C,QAAQ1D,KAU5B,OATAihD,EAASiY,UAAY,CACnBqD,gBAAiBD,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,iCAAjBA,EAAIC,YAA6CrD,SACnFvxC,mBAAoBy0C,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,uBAAjBA,EAAIC,YAAmCrD,SAC5EtrB,QAASwuB,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,yBAAjBA,EAAIC,YAAqCrD,SACnErrB,QAASuuB,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,0BAAjBA,EAAIC,YAAsCrD,SACpED,QAASmD,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,sCAAjBA,EAAIC,YAC9BpD,QAASiD,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,iCAAjBA,EAAIC,YAC9BnD,QAASgD,EAAKlT,MAAK,SAAAoT,GAAG,MAAqB,iCAAjBA,EAAIC,aAEzBxb,EAGT,KAAKrF,GAEH,OADAqF,EAASoZ,iBAAmB15D,EAAO+C,QAAQ1D,KACpCihD,EAGT,KAAKpF,GAEH,OADAoF,EAASmZ,eAAiBz5D,EAAO+C,QAAQ1D,KAClCihD,EAGT,KAAKnF,GACH,IAAM4gB,EAAkB/7D,EAAO+C,QAAQ1D,KAEjC28D,EAAiBhR,QAAQ+Q,IAAoBA,EAAgBn8D,OAAS,GAAKm8D,EAAgBtT,MAAK,SAAAwT,GAAW,MAAyB,qBAArBA,EAAYpb,QAC3H0Z,EAAcvP,QAAQgR,EAAeE,kBAAoBF,EAAeE,gBAAgBt8D,OAAS,GAAKo8D,EAAeE,gBAW3H,OATA5b,EAASia,YAActX,OAAOuX,OAAOze,IAAkBgM,QAAO,SAAC0S,EAAKC,GAAN,oBAAC,gBAA8BD,GAA/B,mBAAqCC,EAAiB,OAAO,IAG3HH,GAAeA,EAAYhhB,SAAQ,SAAA4iB,GACjCA,EAAWC,mBAAmB7iB,SAAQ,SAAA8iB,GACpC/b,EAASia,YAAT,UAAwB8B,EAAkBC,IAA1C,YAAiDD,EAAkBE,OAAUJ,EAAWK,WAIrFlc,EAGT,KAAKlF,GAEH,OADAkF,EAASqa,kBAAoB36D,EAAO+C,QAAQ05D,UACrCnc,EAGT,QACE,OAAO77C,IC/LAi4D,GAAY,qDACZC,GAAiB,0DACjBC,GAAuB,gEACvBC,GAA0B,mEAC1BC,GAAe,wDACfC,GAAuB,gEACvBC,GAAiB,0DACjBC,GAAkB,2DAElBC,GAAwB,iEACxBC,GAAwB,iEACxBC,GAA0B,mEAC1BC,GAAqB,8DACrBC,GAAoB,6DACpBC,GAAuB,gEAQvBC,GAAoB,CAC/BC,uBAAwB,CACtB9zC,MAAO,yBACP+zC,QAAS,CACP,CAAEC,QAAS,cAAeC,MAVL,UAWrB,CAAED,QAAS,gBAAiBC,MAVd,UAalBC,SAAU,CACRl0C,MAAO,WACP+zC,QAAS,CACP,CAAEC,QAAS,cAAeC,MAjBL,UAkBrB,CAAED,QAAS,gBAAiBC,MAjBd,UAoBlBE,WAAY,CACVn0C,MAAO,aACP+zC,QAAS,CACP,CAAEC,QAAS,cAAeC,MAxBL,UAyBrB,CAAED,QAAS,gBAAiBC,MAxBd,QAyBd,CAAED,QAAS,UAAWC,MAxBL,YA2BrBG,YAAa,CACXp0C,MAAO,cACP+zC,QAAS,CACP,CAAEC,QAAS,cAAeC,MAhCL,UAiCrB,CAAED,QAAS,UAAWC,MA/BL,YAkCrBI,sBAAuB,CACrBr0C,MAAO,wBACP+zC,QAAS,CACP,CAAEC,QAAS,cAAeC,MAvCL,UAwCrB,CAAED,QAAS,UAAWC,MAtCL,YAyCrBK,WAAY,CACVt0C,MAAO,eCvCLqzB,GAAe,CACnB6F,MAAO,CACLa,QAAS,EACTwa,SAAU,GACVC,UAAW,CACT3gB,SAAUnC,GACVkC,QAASlC,GACToC,MAAOpC,IAETmb,aAAc,GACdlT,UAAW,GACXE,SAAU,GACVD,WAAY,GACZ6a,aAAc,CACZC,KAAM,CAAE5b,KAAM,OAAQ6b,OAAQ,GAAIC,SAAU,IAC5CC,IAAK,CAAE/b,KAAM,MAAO6b,OAAQ,GAAIC,SAAU,IAC1C98C,KAAM,CAAEghC,KAAM,OAAQ6b,OAAQ,GAAIC,SAAU,IAC5C9gB,MAAO,CAAEgF,KAAM,QAAS6b,OAAQ,GAAIC,SAAU,IAC9CE,KAAM,CAAEhc,KAAM,OAAQ6b,OAAQ,GAAIC,SAAU,KAG9Cd,uBAAwB,OACxBK,WAAY,OACZC,YAAa,OACbF,SAAU,OACVG,sBAAuB,QAEzBU,gBAAiB,IAGZ,SAASC,GAAmBC,GACjC,MAAO,CACLP,KAAMO,EAAQnW,MAAK,SAAAoW,GAAK,MAAmB,SAAfA,EAAMpc,SAAoBzF,GAAa6F,MAAMub,aAAaC,KACtFG,IAAKI,EAAQnW,MAAK,SAAAoW,GAAK,MAAmB,QAAfA,EAAMpc,SAAmBzF,GAAa6F,MAAMub,aAAaI,IACpF/8C,KAAMm9C,EAAQnW,MAAK,SAAAoW,GAAK,MAAmB,SAAfA,EAAMpc,SAAoBzF,GAAa6F,MAAMub,aAAa38C,KACtFg8B,MAAOmhB,EAAQnW,MAAK,SAAAoW,GAAK,MAAmB,UAAfA,EAAMpc,SAAqBzF,GAAa6F,MAAMub,aAAa3gB,MACxFghB,KAAMG,EAAQnW,MAAK,SAAAoW,GAAK,MAAmB,SAAfA,EAAMpc,SAAoBzF,GAAa6F,MAAMub,aAAaK,MAuI3EK,OAnIf,WAAsD,IAA/Br6D,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAE7CsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK6gE,GACH,IAAM7Z,EAAQ7iD,EAAO+C,QAAQ1D,KAsB7B,OArBAihD,EAASuC,MAAQ,CACfsb,UAAW,CACT3gB,SAAUqF,EAAME,gBAAkBC,gBAAKH,EAAME,gBAAiBE,OAAOC,KAAK7H,KAAkBA,GAC5FkC,QAASsF,EAAMM,eAAiBH,gBAAKH,EAAMM,eAAgBF,OAAOC,KAAK7H,KAAkBA,GACzFoC,MAAOoF,EAAMO,aAAeJ,gBAAKH,EAAMO,aAAcH,OAAOC,KAAK7H,KAAkBA,IAErFqI,QAASb,EAAMa,QACf8S,aAAc3T,EAAM2T,aAAe3T,EAAM2T,aAAe,GACxDlT,UAAWT,EAAMS,UACjBE,SAAUX,EAAMW,SAChBD,WAAYV,EAAMU,WAClB6a,aAAcO,GAAmB9b,EAAMub,cACvCF,SAAUrb,EAAMkc,SAEhBtB,uBAAwB5a,EAAM4a,uBAC9BK,WAAYjb,EAAMib,WAClBC,YAAalb,EAAMkb,YACnBF,SAAUhb,EAAMgb,SAChBG,sBAAuBnb,EAAMmb,sBAC7BgB,aAAcnc,EAAMmc,cAEf1e,EAGT,KAAKqc,GACH,IAAM7S,EAAiB9pD,EAAO+C,QAAQ1D,KAStC,OAPAihD,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEsb,UAAU,6BACL7d,EAASuC,MAAMsb,WADX,mBAENrU,EAAerH,KAAOO,gBAAK8G,EAAgB7G,OAAOC,KAAK7H,SAGrDiF,EAGT,KAAKwc,GAKH,OAJAxc,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEE2T,aAAcx2D,EAAO+C,QAAQ1D,OAExBihD,EAGT,KAAKyc,GAKH,OAJAzc,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEub,aAAcO,GAAmB3+D,EAAO+C,QAAQ1D,QAE3CihD,EAGT,KAAK0c,GAQH,OAPA1c,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEsb,UAAU,6BACL7d,EAASuC,MAAMsb,WADX,mBAENn+D,EAAOmD,KAAK1L,YAAc4jD,OAGxBiF,EAGT,KAAKsc,GACL,KAAKC,GAEH,OADAvc,EAASoe,gBAAkB1+D,EAAO+C,QAAQ1D,KAAKq/D,gBACxCpe,EAGT,KAAK4c,GAKH,OAJA5c,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEE4a,uBAAwBz9D,EAAO+C,QAAQ1D,OAElCihD,EAGT,KAAK6c,GAKH,OAJA7c,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEgb,SAAU79D,EAAO+C,QAAQ1D,OAEpBihD,EAGT,KAAK8c,GAKH,OAJA9c,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEib,WAAY99D,EAAO+C,QAAQ1D,OAEtBihD,EAGT,KAAK+c,GAKH,OAJA/c,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEkb,YAAa/9D,EAAO+C,QAAQ1D,OAEvBihD,EAGT,KAAKgd,GAKH,OAJAhd,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEmb,sBAAuBh+D,EAAO+C,QAAQ1D,OAEjCihD,EAGT,KAAKid,GAKH,OAJAjd,EAASuC,MAAT,6BACKvC,EAASuC,OADd,IAEEmc,aAAch/D,EAAO+C,QAAQ1D,OAExBihD,EAGT,QACE,OAAO77C,IChMAw6D,GAAsB,oEACtBC,GAAmB,iEAEnBC,GAAuB,qEACvBC,GAA2B,yEAE3BC,GAAiB,+DACjBC,GAAmB,iEACnBC,GAAc,4DACdC,GAAsB,oEAEtBC,GAA0B,wEAC1BC,GAAiC,+EACjCC,GAAmB,iEACnBC,GAAgC,8EAChCC,GAAqB,mEAErBC,GAA8B,4EAC9BC,GAAyB,uEAEzBC,GACN,MADMA,GAEL,OAFKA,GAGC,aCJRhjB,GAAe,CACnBijB,oBAAoB,EACpBC,8BAA8B,EAC9BC,gBAAgB,EAChBC,kBAAmB,GACnBC,uBAAwB,EACxBC,OAAQ,KACRC,YAAY,EACZC,eAAgB,GAChBC,iBAAkB,GAClBC,iBAAkB,GAClBC,WAAY,GACZC,cAAe,GACfC,UAAW,GACXC,YAAa,IA4IAC,OAzIf,WAA2D,IAA/Bt8D,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAElDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAKojE,GAEH,OADA3e,EAASwgB,YAAc9gE,EAAO+C,QAAQ1D,KAAKiE,MACpCg9C,EAGT,KAAK4e,GACH,IAAMn8D,EAAU/C,EAAO+C,QAAQ1D,KAI/B,OAHI0D,IACFu9C,EAAS2f,mBAAqBjgE,EAAO+C,QAAQ1D,KAAK2hE,kBAE7C1gB,EAQT,KAAK6e,GACH,IAAMp8D,EAAU/C,EAAO+C,QAAQ1D,KAO/B,OANI0D,IACFu9C,EAAS8f,kBAAoBr9D,EAAQk+D,SACrC3gB,EAAS2f,mBAAqBl9D,EAAQi+D,iBACtC1gB,EAAS4f,6BAA+Bn9D,EAAQm+D,UAChD5gB,EAAS+f,yBAA2B/f,EAAS+f,wBAExC/f,EAOT,KAAK8e,GACH,IAAMr8D,EAAU/C,EAAO+C,QAAQ1D,KAM/B,OALI0D,IACFu9C,EAAS4f,6BAA+Bn9D,EAAQm+D,UAChD5gB,EAAS2f,mBAAqBl9D,EAAQi+D,iBACtC1gB,EAAS8f,kBAAoBr9D,EAAQk+D,UAEhC3gB,EAGT,KAAK+e,GACH,IAAMt8D,EAAU/C,EAAO+C,QAAQ1D,KAI/B,OAHI0D,IACFu9C,EAAS6f,eAAoC,cAAnBp9D,EAAQm9C,QAE7BI,EAGT,KAAKkf,GACH,IAAMz8D,EAAU/C,EAAO+C,QAAQ1D,KAK/B,OAJI0D,IACFu9C,EAASigB,WAAax9D,EAAQo+D,QAC9B7gB,EAAS6f,eAAiBp9D,EAAQm+D,WAE7B5gB,EAOT,KAAKgf,GACH,IAAMv8D,EAAU/C,EAAO+C,QAAQ1D,KAW/B,OAVI0D,IACFu9C,EAAS6f,eAAiBp9D,EAAQm+D,UAClC5gB,EAAS0gB,iBAAmBj+D,EAAQi+D,iBACpC1gB,EAASkgB,eAAiB,CACxBY,cAAer+D,EAAQq+D,cACvBla,cAAenkD,EAAQmkD,cACvBma,UAAWt+D,EAAQs+D,UACnBC,cAAev+D,EAAQu+D,gBAGpBhhB,EAQT,KAAKif,GACH,IAAMx8D,EAAU/C,EAAO+C,QAAQ1D,KAO/B,OANI0D,IACFu9C,EAASkgB,eAAea,UAAYt+D,EAAQs+D,UAC5C/gB,EAAS2f,mBAAqBl9D,EAAQi+D,iBACtC1gB,EAAS6f,eAAiBp9D,EAAQm+D,UAClC5gB,EAASkgB,eAAec,cAAgBv+D,EAAQu+D,eAE3ChhB,EAGT,KAAKof,GACL,KAAKD,GAGH,OAFAnf,EAASmgB,iBAAmBzgE,EAAO+C,QAAQ1D,KAC3CihD,EAASmgB,iBAAiBI,UAAY7gE,EAAOmD,KAAK09D,UAC3CvgB,EAGT,KAAKsf,GAEH,OADAtf,EAASogB,iBAAmB1gE,EAAO+C,QAAQ1D,KACpCihD,EAGT,KAAKqf,GACH,OAAOrf,EAGT,KAAKuf,GAEH,OADAvf,EAASqgB,WAAa3gE,EAAO+C,QAAQ1D,KAC9BihD,EAGT,KAAKwf,GAKL,KAAKC,GAEH,OADAzf,EAASsgB,cAAgB5gE,EAAO+C,QAAQ1D,KACjCihD,EAGT,QACE,OAAO77C,IC1KA88D,GAAyB,oFAGzBC,GAA2B,sFAC3BC,GAAwB,mFACxBC,GAA0B,qFCajC1kB,GAAe,CACnB2kB,kBAAmB,GACnBC,kBAAmB,CACjBziB,aAAc,GACdC,eAAgB,IAElByiB,gBAAiB,CACf1iB,aAAc,GACdC,eAAgB,IAElB0iB,SAAU,CACR3iB,aAAc,GACdC,eAAgB,IAElB2iB,iBAAkB,IAiDLC,OA7Cf,WAA6D,IAA/Bv9D,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAEpDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK0lE,GAUH,OATAjhB,EAASqhB,kBAAoB3hE,EAAO+C,QAAQ1D,KAAK0hD,KAAI,SAAAnD,GAAM,MAAK,CAC9D0H,SAAU1H,EAAO0H,SACjBzE,KAAMjD,EAAOiD,KACb0E,SAAU3H,EAAO4H,SACjByc,SAAgC,MAAtBrkB,EAAOskB,aAAuBtkB,EAAO4H,SAC/C2c,iBAAwC,MAAtBvkB,EAAOskB,aAAuBtkB,EAAO4H,SACvD4c,wBAAyBxkB,EAAOykB,SAASD,wBACzCE,iBAAkB1kB,EAAOykB,SAASC,qBAE7BhiB,EAGT,KAAKohB,GACH,IAAMriE,EAAI,6BACLW,EAAO+C,QAAQ1D,MACfW,EAAO+C,QAAQ1D,KAAK0vD,QAAQ,IAKjC,OAHA1vD,EAAK4vD,OAAS5vD,EAAK8vD,UAAU/uD,SAAS,UAAYgqD,wCAA8B/qD,EAAK4vD,QAAU,KAE/F3O,EAASyhB,iBAAmB1iE,EACrBihD,EAGT,KAAKkhB,GAEH,OADAlhB,EAASshB,kBAAoBxX,wCAA8BpqD,EAAO+C,QAAQ1D,MACnEihD,EAGT,KAAKmhB,GAEH,OADAnhB,EAASuhB,gBAAkBzX,wCAA8BpqD,EAAO+C,QAAQ1D,MACjEihD,EAGT,QACE,OAAO77C,ICtEA89D,GAAiB,0DACjBC,GAAqB,8DACrBC,GAA6B,sEAC7BC,GAA2B,oEAC3BC,GAAyB,kEACzBC,GAA4B,qEAC5BC,GAAqB,8DACrBC,GAAmB,4DACnBC,GAAyB,kEACzBC,GAAoC,6EACpCC,GAAkB,2DAElBC,GAAkB,CAC7BC,qBAAsB,GACtBC,iBAAkB,GAClBC,qBAAsB,GACtB1f,cAAe,EACf2f,uBAAuB,EACvBC,oBAAqB,GACrBC,sCAAsC,EACtCC,sBAAuB,GACvBC,uCAAuC,EACvCC,gBAAiB,GACjBC,gBAAiB,GACjBrmB,QAASlC,GACTmC,SAAUnC,GACVwoB,2BAA4B,GAC5BC,qBAAqB,GCXjB9mB,GAAe,CACnBwF,cAAe,EACfuhB,iBAAkB,CAChBD,qBAAqB,EACrBvmB,QAASlC,GACT2oB,eAAgB,GAChBC,WAAY,GACZC,eAAgB,GAChBC,eAAgB,GAChBC,iBAAiB,EACjBC,cAAe,GACfC,gBAAiB,GACjBC,UAAW,GACXC,UAAW,GACXhnB,SAAUnC,IAEZopB,YAAa,EACbC,gBAAiBxB,GACjByB,qBAAsB,GACtBC,kBAAmB,GACnBC,eAAgB,CACdC,mBAAoB,EACpBC,SAAU,CACR5lB,aAAc,GACdC,eAAgB,KAGpB4lB,gBAAiB,GACjBC,qBAAsB,IAyHjB,SAASC,GAAgB7lE,GAC9B,MAAO,CAELykE,oBAAqB9Y,QAAQ3rD,EAAK8lE,4BAClC5nB,QAAS,CACP3B,eAAgBv8C,EAAK8lE,4BAA8B,GACnDtpB,eAAgBx8C,EAAK+lE,4BAA8B,GACnD7pB,KAAMl8C,EAAKgmE,kBAAoB,GAC/B3pB,WAAYr8C,EAAKimE,wBAA0B,GAC3C3pB,MAAOt8C,EAAKkmE,mBAAqB,IAEnCvB,eAAgB3kE,EAAK2kE,gBAAkB,GACvCE,eAAgB7kE,EAAK6kE,gBAAkB,GACvCC,eAAgB9kE,EAAK8kE,gBAAkB,GACvCC,kBAAiB/kE,EAAK+kE,iBAAkB/kE,EAAK+kE,gBAC7CC,cAAehlE,EAAKglE,eAAiB,GACrCC,gBAAiBjlE,EAAKilE,iBAAmB,GACzCC,UAAWllE,EAAKklE,WAAa,GAC7BC,UAAWnlE,EAAKmlE,WAAa,GAC7BhnB,SAAU,CACR5B,eAAgBv8C,EAAKmmE,6BAA+B,GACpD3pB,eAAgBx8C,EAAKomE,6BAA+B,GACpDlqB,KAAMl8C,EAAKqmE,mBAAqB,GAChChqB,WAAYr8C,EAAKsmE,yBAA2B,GAC5ChqB,MAAOt8C,EAAKumE,oBAAsB,KAKjC,SAASC,GAAexmE,GAC7B,MAAO,CAELykE,oBAAqB9Y,QAAQ3rD,EAAKymE,kCAClCvoB,QAAS,CACP3B,eAAgBv8C,EAAKymE,kCAAoC,GACzDjqB,eAAgBx8C,EAAK0mE,kCAAoC,GACzDxqB,KAAMl8C,EAAK2mE,wBAA0B,GACrCtqB,WAAYr8C,EAAK4mE,8BAAgC,GACjDtqB,MAAOt8C,EAAK6mE,yBAA2B,IAEzC/C,qBAAsB9jE,EAAK8jE,sBAAwB,GACnDE,qBAAsBhkE,EAAKgkE,sBAAwB,GACnD1f,cAAetkD,EAAKskD,eAAiB,EACrC2f,wBAAuBjkE,EAAKikE,uBAAwBjkE,EAAKikE,sBACzDC,oBAAqBlkE,EAAKkkE,qBAAuB,GACjDC,qCAAsCnkE,EAAKmkE,uCAAwC,EACnFC,sBAAuBpkE,EAAKokE,uBAAyB,GACrDC,sCAAuCrkE,EAAKqkE,wCAAyC,EACrFC,gBAAiBtkE,EAAKskE,iBAAmB,GACzCC,gBAAiBvkE,EAAKukE,iBAAmB,GACzCpmB,SAAU,CACR5B,eAAgBv8C,EAAK8mE,mCAAqC,GAC1DtqB,eAAgBx8C,EAAK+mE,mCAAqC,GAC1D7qB,KAAMl8C,EAAKgnE,yBAA2B,GACtC3qB,WAAYr8C,EAAKinE,+BAAiC,GAClD3qB,MAAOt8C,EAAKknE,0BAA4B,IAE1C1C,2BAA4BxkE,EAAKwkE,4BAA8B,IAIpD2C,OAnLf,WAAsD,IAA/B/hE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAE7CsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK0mE,GAIH,OAHAjiB,EAASkC,cAAgBxiD,EAAO+C,QAAQ1D,KAAKmjD,cAC7ClC,EAASmkB,WAAa,EAEfnkB,EAGT,KAAKkiB,GACL,KAAKG,GACH,MAAsD3iE,EAAO+C,QAAQ1D,KAA7DonE,EAAR,EAAQA,YAAa7lB,EAArB,EAAqBA,YAAa8lB,EAAlC,EAAkCA,MAAO3B,EAAzC,EAAyCA,SAmBzC,OAlBAzkB,EAASyjB,iBAAmBmB,GAAgBwB,GAC5CpmB,EAASokB,gBAAkBmB,GAAejlB,GAC1CN,EAASukB,eAAT,gBAA+B4B,GAC/B1B,GAAYA,EAAS3lB,eAAex/C,OAAS,IAAM0gD,EAASukB,eAAeE,SAAW3a,wCAA8B2a,IACpHzkB,EAAS0kB,gBAAkByB,EAAYzB,iBAAmB,GAE1D1kB,EAASmkB,WAAa,EAElBnkB,EAASukB,eAAeC,oBAAsBxkB,EAASukB,eAAeE,SACxEzkB,EAASmkB,WAAa,EAEfnkB,EAASokB,gBAAgBnnB,QAAQ3B,eACxC0E,EAASmkB,WAAa,EAEfnkB,EAASyjB,iBAAiBxmB,QAAQ3B,iBACzC0E,EAASmkB,WAAa,GAGjBnkB,EAGT,KAAKmiB,GACH,IAAMkE,EAAwB,GAe9B,OAXA3mE,EAAO+C,QAAQ1D,KAAKk6C,SAAQ,SAAAqtB,GAC1B,IAAMC,EAAeD,EAAKE,QAAQjd,QAAO,SAAAkd,GAAG,MAAwB,MAApBA,EAAI3Z,eACpDwZ,EAAKE,QAAUD,EACfF,EAAsBrtB,KAAKstB,MAG7BtmB,EAASskB,kBAAT,CACE,CAAE/jB,KAAM,kBAAmB8C,cAAe,IAD5C,OAEKgjB,GAGErmB,EAGT,KAAKoiB,GACH,IAAM5X,EAAO9qD,EAAO+C,QAAQ1D,KAAKuhD,YAKjC,OAJAN,EAASqkB,qBAAqB7Z,EAAKnH,eAAnC,gBACKkiB,GAAe/a,IAGbxK,EAGT,KAAKsiB,GAKH,OAJAtiB,EAASmkB,WAAa,EACtBnkB,EAASokB,gBAAkB1nB,GAAa0nB,gBACxCpkB,EAASukB,eAAiB7nB,GAAa6nB,eAEhCvkB,EAGT,KAAKuiB,GAIH,OAHAviB,EAASyjB,iBAAmBmB,GAAgBllE,EAAO+C,QAAQ1D,MAC3DihD,EAASmkB,WAAa,EAEfnkB,EAGT,KAAKwiB,GAIH,OAHAxiB,EAASokB,gBAAkBmB,GAAe7lE,EAAO+C,QAAQ1D,MACzDihD,EAASmkB,WAAa,EAEfnkB,EAGT,KAAKyiB,GAOH,OANAziB,EAASukB,eAAiB,CACxBC,mBAAoB,EACpBC,SAAU3a,wCAA8BpqD,EAAO+C,QAAQ1D,OAEzDihD,EAASmkB,WAAa,EAEfnkB,EAGT,KAAK0iB,GAOH,OANA1iB,EAASukB,eAAiB,CACxBC,mBAAoB9kE,EAAO+C,QAAQ1D,KAAKylE,mBACxCC,SAAU,MAEZzkB,EAASmkB,WAAa,EAEfnkB,EAGT,KAAK2iB,GAGH,OAFA3iB,EAAS0kB,gBAAkBhlE,EAAO+C,QAAQ1D,KAAK2lE,gBAExC1kB,EAGT,QACE,OAAO77C,ICnKAuiE,GAAgB,4DAEhBC,GAAqB,kECI5BjqB,GAAe,CACnBub,UAAW,GACX2O,UAAW,IAyBEC,OAtBf,WAAyD,IAA/B1iE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAEhDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAKmrE,GAEH,OADA1mB,EAASiY,UAAYv4D,EAAO+C,QAAQ1D,KAC7BihD,EAGT,KAAK2mB,GAEH,OADA3mB,EAAS4mB,UAAYlnE,EAAO+C,QAAQ1D,KAC7BihD,EAGT,QACE,OAAO77C,IC5BA2iE,GAAc,oEACdC,GAAiB,uEAGjBC,GAAS,SCEhBtqB,GAAe,CACnBuqB,wBAAyB,IAqBZC,OAlBf,WAAoE,IAA/B/iE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAE3DsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAKurE,GACL,KAAKC,GAEH,OADA/mB,EAASinB,wBAA0BvnE,EAAO+C,QAAQ1D,KAC3CihD,EAGT,QACE,OAAO77C,IC5BAgjE,GAAmB,0DCM1BzqB,GAAe,CACnB1nD,OAAQ,IAmBKoyE,OAhBf,WAA8D,IAA/BjjE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAErDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK4rE,GAEH,OAAOnnB,EAGT,QACE,OAAO77C,ICtBAkjE,GAAe,wDACfC,GAAe,wDACfC,GAAoB,6DAEpBC,GAAmB,CAC9BC,qBAAsB,GACtBhiB,UAAW,GACXgZ,SAAU,GACVvI,aAAc,GACdwR,YAAa,GACbC,YAAa,IAGFC,GACQ,oBADRA,GAEiB,6BCPxBlrB,GAAe,CACnB6F,MAAO,GACPslB,aAAc,GACdC,iBAAkB,IA+BLC,OA5Bf,WAAyD,IAA/B5jE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAEhDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MAEb,KAAK8rE,GACH,IAAQtoE,EAASW,EAAO+C,QAAhB1D,KAER,OADAihD,EAASuC,MAAiB,KAATxjD,EAAc,GAAKA,EAC7BihD,EAGT,KAAKsnB,GACH,IAAQvoE,EAASW,EAAO+C,QAAhB1D,KAER,OADAihD,EAAS6nB,aAAwB,KAAT9oE,EAAc,GAAKA,EACpCihD,EAGT,KAAKunB,GAEH,OADAvnB,EAAS8nB,iBAAmBpoE,EAAO+C,QAC5Bu9C,EAGT,QACE,OAAO77C,IC1BPu4C,GAAe,CACnBsrB,iBAAkB,IAoBLC,OAjBf,WAAoD,IAA/B9jE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAY7C,OARIA,EAAOnE,KAQJ4I,GCvBA+jE,GAAuB,2EAEvBC,GAA0B,8EAC1BC,GAAwB,4EACxBC,GAAyB,6EACzBC,GAAyB,6EACzBC,GAAgC,oFCIvC7rB,GAAe,CACnB8rB,eAAgB,CACdllD,aAAc,IAEhBmlD,kBAAmB,IAuDNC,I,eAAAA,GApDf,WAAiE,IAA/BvkE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAExDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MACb,KAAK2sE,GAGH,OAFAloB,EAASyoB,kBAAkBzvB,KAAKt5C,EAAO+C,QAAQ1D,MAExCihD,EAET,KAAKmoB,GACH,IAAMQ,EAAa3oB,EAASyoB,kBAAkB/e,WAAU,SAAAkf,GAAE,OAAIA,EAAG5kB,oBAAsBkL,SAASxvD,EAAOmD,KAAKgmE,SAG5G,OAFA7oB,EAASyoB,kBAAkBK,OAAOH,EAAY,GAEvC3oB,EAGT,KAAKooB,GACH,IAAMW,EAAY/oB,EAASyoB,kBAAkB/e,WAAU,SAAAkf,GAAE,OAAIA,EAAG5kB,oBAAsBkL,SAASxvD,EAAOmD,KAAKgmE,SAG3G,OAFA7oB,EAASyoB,kBAAkBK,OAAOC,EAAW,EAAGrpE,EAAO+C,QAAQ1D,MAExDihD,EAGT,KAAKqoB,GAEH,OADAroB,EAASyoB,kBAAoB/oE,EAAO+C,QAAQ1D,KACrCihD,EAET,KAAKsoB,GAEH,OADAtoB,EAASwoB,eAAiB9oE,EAAO+C,QAAQ1D,KAClCihD,EAET,KAAKuoB,GACH,IAAMQ,EAAY/oB,EAASyoB,kBAAkB/e,WAAU,SAAAkf,GAAE,OAAIA,EAAG5kB,oBAAsBkL,SAASxvD,EAAO+C,QAAQ1D,KAAKklD,sBAC/G+kB,EAAWhpB,EAASyoB,kBAAkBM,GAS1C,OARAC,EAAQ,6BACHA,GADG,IAEN3gE,IAAK3I,EAAO+C,QAAQ1D,KAAKkqE,IACzBlwB,OAAQr5C,EAAO+C,QAAQ1D,KAAK6gD,SAG9BI,EAASyoB,kBAAkBK,OAAOC,EAAW,EAAGC,GAEzChpB,EAGT,QACE,OAAO77C,IC9DA+kE,GAAmB,8DACnBC,GAAuB,kEAGvBC,GAA6B,wEAE7BtnE,GACC,aADDA,GAEC,aAFDA,GAGS,qBAGTunE,GACP,KADOA,GAEL,OAFKA,GAGQ,YAHRA,GAIU,aAGVC,GACF,iBADEA,GAED,kBAGCC,GAAgB,CAC3B,CAAElM,QAAS,QAASC,MAAO,KAC3B,CAAED,QAAS,aAAcC,MAAO,KAChC,CAAED,QAAS,eAAgBC,MAAO,KAClC,CAAED,QAAS,SAAUC,MAAO,MAC5B,CAAED,QAAS,OAAQC,MAAO,KAC1B,CAAED,QAAS,QAASC,MAAO,MC3BvB5gB,GAAe,CACnB8sB,iBAAkB,EAClBC,oBAAoB,EACpBC,iBAAe,IACbC,KAAM,IADO,gBAEZN,IAFY,IAGXthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,KACXl9C,IAAK,GACLshE,aAAa,GARF,gBASVN,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAdA,gBAgBVP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KArBA,0BAuBF,CACPhiE,MAAO,GACPG,UAAW,GACX8hE,UAAW,GACXC,WAAY,GACZC,aAAc,KA5BL,qBA+BZX,IA/BY,IAgCXthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,KACXl9C,IAAK,GACLshE,aAAa,GArCF,gBAsCVN,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KA3CA,gBA6CVP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAlDA,qBAqDZR,IArDY,IAsDXthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,KACXl9C,IAAK,GACLshE,aAAa,GA3DF,gBA4DVN,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAjEA,gBAmEVP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAxEA,qBA2EZR,IA3EY,IA4EXthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,KACXl9C,IAAK,GACLshE,aAAa,GAjFF,gBAkFVN,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAvFA,gBAyFVP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KA9FA,sCAiGG,CACdI,gBAAiB,GACjB1uE,KAAM,GACN+hD,OAAQ,GACR4sB,SAAU,GACVC,YAAY,EACZC,cAAc,EACdrxB,OAAQ,GACRsxB,UAAW,KAzGA,2BA2GH,GA3GG,2BA4GH,CACR,CACEC,gBAAiB,GACjBC,eAAgB,CACdC,aAAc,EACdC,SAAU,EACVC,SAAU,MAlHH,+BAsHC,IAtHD,KA0HXC,GAAqB,SAACprB,GAAa,IAAD,UACtC,SAASqrB,EAAgBC,GACvB,OAAOA,EAAMA,EAAIviB,WAAa,GAGhC,SAASwiB,EAAiBC,GACxB,OAAOrgB,QAAQqgB,GAGjB,SAASC,EAAgBC,GACvB,OAAOA,GAAY,GAGrB,SAASC,EAAcx5B,GACrB,OAAOA,GAAc,KAGvB,OAAO,EAAP,CACEi4B,KAAMpqB,EAAQ4rB,yBADhB,eAEG9B,IAFH,GAGIthE,UAAW6iE,EAAgBrrB,EAAQqkB,gBACnC17D,WAAY0iE,EAAgBrrB,EAAQykB,iBACpC/7D,SAAU2iE,EAAgBrrB,EAAQwkB,eAClCve,UAAW0lB,EAAc3rB,EAAQmkB,gBACjCp7D,IAAK0iE,EAAgBzrB,EAAQ6rB,UAC7BxB,YAAakB,EAAiBvrB,EAAQukB,kBAR1C,eASKwF,GAAwB,CACvBvZ,QAAS6a,EAAgBrrB,EAAQ8rB,sBACjCrb,QAAS4a,EAAgBrrB,EAAQ+rB,sBACjCrb,KAAM2a,EAAgBrrB,EAAQwlB,kBAC9B5gE,MAAOymE,EAAgBrrB,EAAQ0lB,mBAC/B4E,QAASmB,EAAgBzrB,EAAQgsB,uBAdvC,eAgBKjC,GAAyB,CACxBvZ,QAAS6a,EAAgBrrB,EAAQisB,uBACjCxb,QAAS4a,EAAgBrrB,EAAQksB,uBACjCxb,KAAM2a,EAAgBrrB,EAAQ6lB,mBAC9BjhE,MAAOymE,EAAgBrrB,EAAQ+lB,oBAC/BuE,QAASmB,EAAgBzrB,EAAQmsB,wBArBvC,yBAuBa,CACP7jE,MAAO+iE,EAAgBrrB,EAAQokB,YAC/B37D,UAAWu3C,EAAQskB,eACnBiG,UAAWvqB,EAAQosB,eACnB5B,WAAYxqB,EAAQqsB,gBACpB5B,aAAczqB,EAAQssB,eA5B5B,mBA+BGxC,IA/BH,GAgCIthE,UAAW6iE,EAAgBrrB,EAAQwjB,sBACnC76D,WAAY0iE,EAAgBrrB,EAAQ4jB,uBACpCl7D,SAAU2iE,EAAgBrrB,EAAQ0jB,qBAClCzd,UAAW0lB,EAAc3rB,EAAQsjB,sBACjCv6D,IAAKsiE,EAAgBrrB,EAAQusB,gBAC7BlC,YAAakB,EAAiBvrB,EAAQyjB,wBArC1C,eAsCKsG,GAAwB,CACvBvZ,QAAS6a,EAAgBrrB,EAAQwsB,4BACjC/b,QAAS4a,EAAgBrrB,EAAQysB,4BACjC/b,KAAM2a,EAAgBrrB,EAAQmmB,wBAC9BvhE,MAAOymE,EAAgBrrB,EAAQqmB,yBAC/BiE,QAASmB,EAAgBzrB,EAAQ0sB,6BA3CvC,eA6CK3C,GAAyB,CACxBvZ,QAAS6a,EAAgBrrB,EAAQ2sB,6BACjClc,QAAS4a,EAAgBrrB,EAAQ4sB,6BACjClc,KAAM2a,EAAgBrrB,EAAQwmB,yBAC9B5hE,MAAOymE,EAAgBrrB,EAAQ0mB,0BAC/B4D,QAASmB,EAAgBzrB,EAAQ6sB,8BAlDvC,mBAqDG/C,IArDH,GAsDIthE,UAAW6iE,EAAgBrrB,EAAQ8sB,oBACnCnkE,WAAY0iE,EAAgBrrB,EAAQ+sB,qBACpCrkE,SAAU2iE,EAAgBrrB,EAAQgtB,mBAClC/mB,UAAW0lB,EAAc3rB,EAAQitB,oBACjClkE,IAAKsiE,EAAgBrrB,EAAQktB,cAC7B7C,YAAakB,EAAiBvrB,EAAQmtB,wBA3D1C,eA4DKpD,GAAwB,CACvBvZ,QAAS6a,EAAgBrrB,EAAQotB,0BACjC3c,QAAS4a,EAAgBrrB,EAAQqtB,0BACjC3c,KAAM2a,EAAgBrrB,EAAQstB,sBAC9B1oE,MAAOymE,EAAgBrrB,EAAQutB,uBAC/BjD,QAASmB,EAAgBzrB,EAAQwtB,2BAjEvC,eAmEKzD,GAAyB,CACxBvZ,QAAS6a,EAAgBrrB,EAAQytB,2BACjChd,QAAS4a,EAAgBrrB,EAAQ0tB,2BACjChd,KAAM2a,EAAgBrrB,EAAQ2tB,uBAC9B/oE,MAAOymE,EAAgBrrB,EAAQ4tB,wBAC/BtD,QAASmB,EAAgBzrB,EAAQ6tB,4BAxEvC,mBA2EG/D,IA3EH,GA4EIthE,UAAW6iE,EAAgBrrB,EAAQ8tB,qBACnCnlE,WAAY0iE,EAAgBrrB,EAAQ+tB,sBACpCrlE,SAAU2iE,EAAgBrrB,EAAQguB,oBAClC/nB,UAAW0lB,EAAc3rB,EAAQiuB,qBACjCllE,IAAKsiE,EAAgBrrB,EAAQkuB,eAC7B7D,YAAakB,EAAiBvrB,EAAQmuB,yBAjF1C,eAkFKpE,GAAwB,CACvBvZ,QAAS6a,EAAgBrrB,EAAQouB,2BACjC3d,QAAS4a,EAAgBrrB,EAAQquB,2BACjC3d,KAAM2a,EAAgBrrB,EAAQsuB,uBAC9B1pE,MAAOymE,EAAgBrrB,EAAQuuB,wBAC/BjE,QAASmB,EAAgBzrB,EAAQwuB,4BAvFvC,eAyFKzE,GAAyB,CACxBvZ,QAAS6a,EAAgBrrB,EAAQyuB,4BACjChe,QAAS4a,EAAgBrrB,EAAQ0uB,4BACjChe,KAAM2a,EAAgBrrB,EAAQ2uB,wBAC9B/pE,MAAOymE,EAAgBrrB,EAAQ4uB,yBAC/BtE,QAASmB,EAAgBzrB,EAAQ6uB,6BA9FvC,oCAiGkB,CACdnE,gBAAiBiB,EAAc3rB,EAAQ8uB,MACvC9yE,KAAMqvE,EAAgBrrB,EAAQ+uB,iBAC9BhxB,OAAQstB,EAAgBrrB,EAAQyN,YAChCkd,SAAUc,EAAgBzrB,EAAQgvB,UAClCpE,WAAYW,EAAiBvrB,EAAQivB,mBACrCpE,aAAcU,EAAiBvrB,EAAQkvB,qBACvC11B,OAAQ6xB,EAAgBrrB,EAAQK,QAChCyqB,UAAWO,EAAgBrrB,EAAQ7gB,aAzGvC,yBA2GW6gB,EAAQkE,gBA3GnB,0BA4GYlE,EAAQmvB,UA5GpB,8BA6GgBnvB,EAAQovB,UA7GxB,GA2IaC,ICjRXC,GAAQC,GDiRGF,GA1Bf,WAA2D,IAA/BzqE,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAElDsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MACb,KAAK2tE,GAEH,OADAlpB,EAAS0pB,gBAAkBiB,GAAmBjrE,EAAO+C,QAAQ1D,MACtDihD,EAGT,KAAKopB,GAEH,OADAppB,EAAS0pB,gBAAkBhqE,EAAO+C,QAC3Bu9C,EAGT,KAAKmpB,GAGH,OAFAnpB,EAASwpB,iBAAmB9pE,EAAO+C,QAAQ1D,KAAKmjD,cAChDlC,EAASypB,mBAAqB/pE,EAAO+C,QAAQ1D,KAAKgwE,mBAC3C/uB,EAGT,QACE,OAAO77C,IEnOP6qE,GAAaC,aAAgB,CACjCC,SAAUr4E,GACVs4E,QAASjxD,GACTw/B,aAAczW,GACdmoC,SAAUp3C,GACVw+B,cAAetiC,KACf3vB,QzBUa,WAA0D,IAA/BJ,EAA8B,uDAAtBu4C,GAAch9C,EAAQ,uCAChEsgD,EAAWC,qBAAU97C,GAE3B,OAAQzE,EAAOnE,MACb,KAAK8E,EAEH,OADA2/C,EAAS4V,oBAAsBzxD,EAAMyxD,mBAC9B5V,EAET,KAAKn/C,EACL,KAAKD,EACL,KAAKN,EACL,KAAKC,EACH,IAAM8uE,EAAY3vE,EAAO+C,QAAQ1D,KAAKuwE,OAAS5vE,EAAO+C,QAAQ1D,KAAKuwE,OAAS5vE,EAAO+C,QAAQ1D,KACrFu2D,EAASiC,GAAgB8X,GACzBE,EAAelY,GAAU/B,GAiB/B,OAhBI51D,EAAO+C,QAAQ1D,KAAKiE,OACtBpF,eAAe4xE,QAAQ,QAAS9vE,EAAO+C,QAAQ1D,KAAKiE,OAEtDg9C,EAASqV,eAA2C,SAA1BC,EAAOma,eACjCzvB,EAASmX,cAAgBnX,EAASqV,eAAiBC,EAAOoa,aAAe,GACzE1vB,EAAS0W,gBAAkB1W,EAASmX,gBAAkBv1D,EACtDo+C,EAAS+W,gBAAkBzB,EAAOqa,wBAA0B9tE,EAC5Dm+C,EAASgX,cAAgB1B,EAAOsa,0BAA4B/tE,GAC5Dm+C,EAASsV,OAASA,EAClBtV,EAASuU,YAAcgb,EAAahb,YACpCvU,EAAS0V,SAAU,EACnB1V,EAASuV,mBAAwC,KAAnBD,EAAOlS,QACrCpD,EAASwV,oBAAyC,KAAnBF,EAAOlS,SAA+C,KAA7BkS,EAAOrR,kBAC/DjE,EAASyV,sBAAwBzV,EAASwV,sBAAwBxV,EAASuV,mBAC3EvV,EAASqW,WAAauB,GAAoB5X,GAEnCA,EAGT,KAAKv/C,EAGH,OAFAk1D,aAAa6Z,QAAQ,iBAAkB9vE,EAAOmD,KAAKD,UACnDo9C,EAASp9C,SAAW+yD,aAAa93D,QAAQ,kBAClCmiD,EAET,KAAKt/C,EACH,IAAM3B,EAAOW,EAAO+C,QAAQ1D,KAO5B,OALAihD,EAASiW,iBAAmB,CAC1BC,aAAcn3D,EAAKm3D,aACnBC,eAAgBp3D,EAAKo3D,eACrBC,OAAQr3D,EAAKq3D,QAERpW,EAGT,KAAKr/C,EAEH,OADAq/C,EAASiW,iBAAmBv2D,EAAOmD,KAC5Bm9C,EAGT,KAAKx/C,EAMH,OALAw/C,EAASuU,YAAT,6BACKpwD,EAAMowD,aADX,IAEExxD,eAAgBrD,EAAOmD,KAAKE,eAC5BizD,kBAAmBt2D,EAAO+C,QAAQ1D,KAAK8wE,UAElC7vB,EAGT,KAAKl/C,EAEH,OADAk/C,EAASsW,YAAc52D,EAAOmD,KAAKO,OAC5B48C,EAGT,KAAKj/C,EAEH,OADAi/C,EAASuW,kBAAoB72D,EAAOmD,KAAKO,OAClC48C,EAGT,KAAK7+C,EAEH,OADA6+C,EAAS0W,iBAAmB1W,EAAS0W,gBAC9B1W,EAGT,KAAK5+C,EAEH,OADA4+C,EAAS2W,uBAAyB3W,EAAS2W,sBACpC3W,EAGT,KAAK3+C,EAEH,OADA2+C,EAAS4W,iBAAmB5W,EAAS4W,gBAC9B5W,EAGT,KAAK/+C,EAEH,OADA++C,EAASt8C,aAAehE,EAAOmD,KAAKa,aAC7Bs8C,EAGT,KAAK9+C,EACH,OAAO8+C,EAGT,KAAK1+C,EAMH,OALA0+C,EAASiX,gBAAkBv3D,EAAO+C,QAAQ1D,KAAK0hD,KAAI,SAAAqvB,GAAI,oCAClDA,GADkD,IAErD1uB,MAAsB,SAAf0uB,EAAK1uB,WAGPpB,EAGT,KAAKz+C,EACH,IAAMwuE,EAAc,6BACfrwE,EAAO+C,QAAQ1D,MADA,IAElBqiD,MAAqC,SAA9B1hD,EAAO+C,QAAQ1D,KAAKqiD,QAEvB4uB,EAAkBhwB,EAASiX,gBAAgBvN,WAAU,SAAAumB,GAAU,OAAIA,EAAWC,aAAeH,EAAeG,cAGlH,OADAlwB,EAASiX,gBAAgB+Y,GAAmBD,EACrC/vB,EAGT,KAAKx+C,EACL,KAAKR,EAGH,OAFAg/C,EAASwW,cAAgB92D,EAAO+C,QAAQ1D,KACxCihD,EAASyW,+BAAiC/2D,EAAO+C,QAAQ1D,KAAKwqD,QAAO,SAAA4mB,GAAY,OAAKA,EAAaC,cAAY9wE,OACxG0gD,EAGT,KAAKv+C,EAKH,OAJK/B,EAAOmD,KAAKmB,MAAMlE,SAAS,kBAC9BkgD,EAASkX,aAAex3D,EAAOmD,KAAKmB,OAG/Bg8C,EAGT,KAAKt+C,EAEH,OADAs+C,EAASoX,0BAA4B13D,EAAO+C,QACrCu9C,EAGT,KAAKr+C,EAEH,OADAq+C,EAAS8V,oBAAqB,EACvB9V,EAGT,QACE,OAAO77C,IyBzJXksE,OAAQC,GACRC,OAAQr3E,GACRs3E,YAAahiD,GACbiiD,cAAer8C,GACfs8C,OAAQruC,GACR41B,UAAWx9C,GACXk2D,oBAAqBt2C,GACrBu2C,eAAgBr4E,GAChBs4E,iBAAkBC,GAClBC,YAAa9I,GACbQ,kBAAmBC,GACnBsI,YAAapC,KAGAqC,GAtDK,SAAC9sE,EAAOzE,GA8B1B,OA7BIA,EAAOnE,OAAS6E,IAClB+D,EAAQ,CACNksE,OAAQ,CACN/X,gBAAiBn0D,EAAMksE,OAAO/X,gBAC9BL,UAAW9zD,EAAMksE,OAAOpY,UACxBgC,YAAa91D,EAAMksE,OAAOpW,YAC1BI,kBAAmBl2D,EAAMksE,OAAOhW,kBAChCnB,qBAAsB/0D,EAAMksE,OAAOnX,qBACnCC,eAAgB,GAChBC,iBAAkB,CAChBC,UAAW,GACXC,gBAAiB,IAEnBC,SAAUp1D,EAAMksE,OAAO9W,SACvBC,oBAAqB,CACnBC,aAAc,GACdC,eAAgB,GAChBC,UAAW,GACXC,WAAY,GACZC,gBAAiB,GACjB7pB,cAAe,EACfO,cAAe,EACfupB,YAAa,GACbC,uBAAwB,MAMzBiV,GAAW7qE,EAAOzE,I,mDCtDrBwxE,GAAY,CAChB9kD,QAAS+kD,YAAsB,OAC/BC,OAAQD,WAAqB,OAC7BE,QAASF,YAAsB,OAC/BjtE,MAAOitE,SACPG,KAAMH,QACNI,gBAAiBJ,mBACjBK,SAAUL,YACVM,YAAaN,eACbO,UAAWP,cAGE,IACbQ,QAAS,CACP1zE,OAAQ,CACNmH,KAAM,oBAERwsE,QAAS,CACPC,KAAM,OACNC,MAAO,OACPC,KAAM,QAER3lD,QAAS,CACPylD,KAAMX,GAAU9kD,QAChB0lD,MAAOE,aAAQd,GAAU9kD,QAAS,IAClC2lD,KAAMb,GAAU9kD,SAElBC,UAAW,CACTwlD,KAAMX,GAAUE,OAChBU,MAAOE,aAAQd,GAAUE,OAAQ,KAEnCC,QAAS,CACPQ,KAAMX,GAAUG,QAChBS,MAAOE,aAAQd,GAAUG,QAAS,MAEpCntE,MAAO,CACL2tE,KAAMX,GAAUhtE,OAElBotE,KAAM,CACJO,KAAMX,GAAUI,MAElBC,gBAAiB,CACfM,KAAMX,GAAUK,iBAElBU,IAAK,CACHC,KAAMF,aAAQd,GAAU9kD,QAAS,IACjC+lD,MAAOH,aAAQd,GAAU9kD,QAAS,IAClCgmD,SAAUJ,aAAQd,GAAU9kD,QAAS,MAGzCimD,WAAY,CACVC,UAAW,CACTC,aAAc,CACZC,MAAO,WAETC,eAAgB,CACdC,UAAW,CACTF,MAAO,OACPG,gBAAiBzB,GAAU9kD,QAC3B,UAAW,CACTumD,gBAAiBX,aAAQd,GAAU9kD,QAAS,MAGhDwmD,SAAU,CACRC,YAAa3B,GAAU9kD,WAI7B0mD,YAAa,CACXP,aAAc,CACZC,MAAO,YAGXO,QAAS,CACPR,aAAc,CACZC,MAAOtB,GAAU9kD,SAEnBqmD,eAAgB,CACdO,KAAM,CACJ,UAAW,CACTL,gBAAiBX,aAAQd,GAAU9kD,QAAS,IAC5ComD,MAAO,SAGXS,WAAY,CACVT,MAAO,OACP,UAAW,CACTA,MAAO,uBAGXU,OAAQ,CACNP,gBAAiB,OACjBH,MAAOtB,GAAU9kD,WAIvB+mD,iBAAkB,CAChBV,eAAgB,CACdO,KAAM,CACJI,UAAW,UAIjBC,eAAgB,CACdZ,eAAgB,CACda,UAAW,CACT,WAAY,CACVC,aAAc,QAEhB,0DAA2D,CACzDA,aAAc,WAKtBC,eAAgB,CACdjB,aAAc,CACZkB,QAAS,YAEXhB,eAAgB,CACdO,KAAM,CACJU,OAAQ,WAIdC,cAAe,CACblB,eAAgB,CACdO,KAAM,CACJR,MAAO,uBAIboB,SAAU,CACRnB,eAAgB,CACda,UAAW,CACT,UAAW,CACTO,kBAAmB3C,GAAU9kD,SAE/B,WAAY,CACVmnD,aAAc,gCAEhB,0DAA2D,CACzDA,aAAc,mCAKtBO,YAAa,CACXrB,eAAgB,CACdO,KAAM,CACJ,iBAAkB,CAChBL,gBAAiB,UACjBH,MAAO,cAKfuB,gBAAiB,CACftB,eAAgB,CACdO,KAAM,CACJR,MAAO,aAIbwB,QAAS,CACPzB,aAAc,CACZ0B,aAAc,CACZC,SAAU,MACVC,WAAY,UAIlBC,SAAU,CACR7B,aAAc,CACZC,MAAO,aAETC,eAAgB,CACdO,KAAM,CACJqB,QAAS,SAIfC,UAAW,CACT/B,aAAc,CACZkB,QAAS,aAGbc,YAAa,CACX9B,eAAgB,CACdO,KAAM,CACJ,eAAgB,CACdR,MAAOtB,GAAUE,QAEnB,kBAAmB,CACjBoB,MAAOtB,GAAUE,WAKzBoD,WAAY,CACV/B,eAAgB,CACdO,KAAM,CACJL,gBAAiB,cACjB0B,QAAS,UAIfI,OAAQ,CACNhC,eAAgB,CACdO,KAAM,CACJ,iBAAkB,CAChBR,MAAOtB,GAAU9kD,SAEnBsoD,eAAgB,CACdlC,MAAOtB,GAAU9kD,YAKzBuoD,QAAS,CACPpC,aAAc,CACZmC,eAAgB,YAGpBE,aAAc,CACZrC,aAAc,CACZkB,QAAS,aAGboB,WAAY,CACVpC,eAAgB,CACdqC,QAAS,CACPC,SAAU,WAKlBC,WAAY,CACVC,WAAY,CACV,SACA,UACA,QACA,eAGJC,YAAa,CACXhb,OAAQ,CACNib,GAAI,EACJC,GAAIjE,eAAyBjiB,SAASiiB,gBAA0B,EAChEkE,GAAIlE,eAAyBjiB,SAASiiB,gBAA0B,EAChEmE,GAAInE,gBAA0BjiB,SAASiiB,iBAA2B,K,yFCjPlEoE,GAAS,SAAApxE,GAAK,MAAK,CACvBvB,SAAUuB,EAAMI,QAAQ3B,WAGX,YAAS4yE,GAAoB,IAEpCC,EAFmC,gKAQvC,WACiD,OAAxBryD,KAAKsyD,MAAM9yE,UAAoB+yE,KACtD,OAAO,kBAACH,EAAD,iBAAuBpyD,KAAKsyD,MAA5B,CAAmCpE,KAAMzoE,UAVX,GAElB+sE,IAAMC,WAY7B,OAAOC,kBAAQP,GAARO,CAAgBL,I,UHXrBM,GAAM,EACNC,GAAc,EACdC,GAAe,KACfC,GAAY,KAET,SAASC,GAAWC,EAAcC,EAAgBC,GACvDP,GAAMO,EACNzH,GAASuH,EACTtH,GAAWuH,EACXH,GAAY7H,KAAKkI,MACjBC,KAGK,SAASC,KACdC,aAAaT,IAGR,SAASU,KACd,OAAOZ,GAAMC,GAGf,SAASQ,KACPE,aAAaT,IACbD,GAAc3H,KAAKkI,MAAQL,GAC3BrH,KAEImH,IAAeD,GACjBjH,KAGAmH,GAAeW,WAAWJ,GAjCD,K,IIXRK,G,+MAYnB1yE,MAAQ,CACN2yE,kBAAmB,G,EAGrBC,oBAAsB,WACpB,EAAKC,SAAS,CAAEF,kBAAmBH,Q,EAGrCM,aAAe,WAEb,EAAKD,SAAS,CAAEF,kBAAmB,EAAKpB,MAAMwB,wBAG9Cf,GACE,EAAKY,oBACL,EAAKrB,MAAMyB,UACX,EAAKzB,MAAMwB,wB,EAIfE,YAAc,YACX,EAAK1B,MAAM2B,4BAA8BZ,KAC1C,EAAKf,MAAM4B,iBACX,EAAKN,SAAS,CAAEF,kBAAmB,K,EAGrCS,eAAiB,WACf,IAAMC,EAAU,EAAKrzE,MAAM2yE,kBAAoB,IACzCW,EAAgBC,KAAKC,MAAMH,EAAU,IACrCI,EAAgBF,KAAKG,MAAML,EAA2B,GAAhBC,GAGtCK,GAAiBF,EAAgB,GAAK,IAAM,IAAMA,EACxD,MAAM,GAAN,QAFuBH,EAAgB,GAAK,IAAM,IAAMA,EAExD,YAA2BK,I,yDAG7B,SAAmBC,GACb30D,KAAKsyD,MAAMsC,YAAcD,EAAUC,YACjC50D,KAAKsyD,MAAMsC,UACb50D,KAAK6zD,eAEL7zD,KAAKg0D,iB,kCAIX,WACEX,O,oBAGF,WACE,IAAQK,EAAsB1zD,KAAKjf,MAA3B2yE,kBACR,EAAqE1zD,KAAKsyD,MAAlEuC,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,WAAYC,EAArC,EAAqCA,iBAAkBH,EAAvD,EAAuDA,UAEvD,OACE,kBAAC,QAAD,CACEI,cAAe,CACb,CACE14E,OAAQ0jB,KAAKg0D,YACbztD,MAAOwuD,IAGXE,aAAcj1D,KAAKg0D,YACnBkB,KAAMN,EACN3uD,MAAO6uD,GAEP,6BACGD,EAAgB70D,KAAKm0D,eAAeT,U,GA9EJjB,a,yCCoC5B0C,oBAAWC,IAzBnB,YAAkE,IAA1CC,EAAyC,EAAzCA,QAAyC,IAAhCnH,KAAQnwD,EAAwB,EAAxBA,KAAMvnB,EAAkB,EAAlBA,aACpD,OACE,yBAAK4R,UAAWC,KAAOitE,WACrB,yBAAKltE,UAAWC,KAAOktE,OACpB,yBAEH,uBAAGntE,UAAWC,KAAOk8B,SAClB/tC,EAAaE,WAEhB,kBAAC8+E,GAAA,EAAD,CACEnF,QAAQ,YACR99B,QAAS,kBAAM8iC,EAAQz/B,KAAK73B,EAAK/qB,YAEjC,kBAACyiF,GAAA,EAAD,4BACCj/E,EAAaC,2B,oDCDhBi/E,GAAe,CACnB,QACA,UACA,YACA,YACA,aACA,UAGW5hD,GAAb,+MAyCE/yB,MAAQ,CACN40E,qBAAqB,GA1CzB,EA8CEC,uBAAyB,KA9C3B,EAiDEC,oBAAsB,WACpB,MAA4E,EAAKvD,MAAzEve,EAAR,EAAQA,cAAR,IAAuBma,KAAQhkE,EAA/B,EAA+BA,aAAckhB,EAA7C,EAA6CA,YAAa6pB,EAA1D,EAA0DA,YAE1D,OAAQ8e,GACN,IAAK,GAAI,OACT,KAAKv1D,EACL,KAAKA,EAA2C,OAAO,kBAAC,KAAD,CAAUo3C,MAAI,EAACkgC,GAAI7gC,EAAYjiD,SAAU+iF,IAAK9gC,EAAYjiD,WACjH,KAAKwL,EAEH,OADA,EAAK8zE,MAAM3xE,iBAAiBlH,OAAO+C,SAASrC,UACrC,kBAAC,KAAD,CAAUy7C,MAAI,EAACkgC,GAAI1qD,EAAYp4B,SAAU+iF,IAAK3qD,EAAYp4B,WAEnE,KAAKwL,EAA8B,OAAO,kBAAC,KAAD,CAAUo3C,MAAI,EAACkgC,GAAI5rE,EAAalX,WAC1E,QAAS,SA7Df,EAiEEgjF,qBAAuB,WACrB,MAAwG,EAAK1D,MAArG2D,EAAR,EAAQA,UAAW5jB,EAAnB,EAAmBA,qBAAsB6jB,EAAzC,EAAyCA,OAAQC,EAAjD,EAAiDA,qBAA8Bl3C,EAA/E,EAAuEivC,KAAQjvC,OAAUg0B,EAAzF,EAAyFA,WAEnFwf,EAAYwD,GAAwBC,EAE1C,OAH0BC,EAAqBz5E,SAASu2D,GAI/C,kBAACwf,EAAc,EAAKH,OAEpBjgB,EACA,kBAAC,KAAD,CAAUzc,MAAI,EAACkgC,GAAI72C,EAAOjsC,WAG1B,kBAAC,GAAiB,EAAKs/E,QA7EpC,EAkFE8D,iBAAmB,WACjB,IAAM77E,EAAQC,eAAeC,QAAQ,SAETs5B,EACxB,EAAKu+C,MADPpE,KAAQp6C,eAAkBC,0BAE5B,EAAKu+C,MAAMxzE,WAAW,CAAEvE,UACrB87E,SAAQ,kBAAM,EAAK/D,MAAMl8B,iBAAiBriB,EAA2B,YACxE,EAAKu+C,MAAMhzE,cAzFf,EA4FEg3E,2BAA6B,WAC3B,IAA2BnhB,EAA6C,EAAKmd,MAArEpd,gBAAmBC,uCAC3B,IAAK,EAAKp0D,MAAM40E,oBAAqB,CAEnC,IAAMY,EAAyE,IAAzCphB,EACtCme,aAAa,EAAKsC,wBAClB,EAAKA,uBAAyBpC,YAAW,kBAAM,EAAKI,SAAS,CAAE+B,qBAAqB,MAASY,KAlGnG,EAsGEC,wBAA0B,WACxBlD,aAAa,EAAKsC,wBAClB,EAAKhC,SAAS,CAAE+B,qBAAqB,KAxGzC,wDA2GE,WAAqB,IAAD,OACd31D,KAAKsyD,MAAMhgB,UACbojB,GAAa7/B,SAAQ,SAAA4gC,GAAC,OAAIh9E,OAAOi9E,iBAAiBD,EAAG,EAAKH,+BAC1Dt2D,KAAKs2D,8BAGP78E,OAAOk9E,OAAS,WACd,EAAKrE,MAAMsE,0BAlHjB,kCAsHE,WAAwB,IAAD,OACrBtD,aAAatzD,KAAK41D,wBAClBF,GAAa7/B,SAAQ,SAAA4gC,GAAC,OAAIh9E,OAAOo9E,oBAAoBJ,EAAG,EAAKH,iCAxHjE,oBA2HE,WAAU,IAAD,OACP,EAAoHt2D,KAAKsyD,MAA9Fjd,EAA3B,EAAQH,gBAAmBG,qBAAwB4gB,EAAnD,EAAmDA,UAAW3jB,EAA9D,EAA8DA,QAA9D,IAAuE4b,KAAQp6C,EAA/E,EAA+EA,eAAgBv+B,EAA/F,EAA+FA,MAAYuhF,EAA3G,mBACQnB,EAAwB31D,KAAKjf,MAA7B40E,oBACFoB,EAAkD,IAAvB1hB,EAEjC,OACE,kBAAC,KAAD,iBAAWyhB,EAAUb,EAArB,CAAgCC,OAAQ,WACtC,OAAO5jB,EACL,6BAEG,EAAKujB,sBAEL,EAAKG,uBAEN,kBAAC,GAAD,CACElC,sBAAuBiD,EACvBlC,gBAAiB/gD,EAAeE,kCAChC8gD,WAAYhhD,EAAeI,oCAC3B6gD,iBAAkBjhD,EAAez7B,UACjC67E,eAAgB,EAAKsC,wBACrB5B,UAAWe,EACX5B,UAAW,EAAKqC,iBAChBnC,4BAA4B,KAIhC,kBAAC,KAAD,CACEr+B,MAAI,EACJkgC,GAAI,CAAE37E,SAAU5E,EAAMvC,oBAvJlC,GAAoCw/E,IAAMC,WA+J3BC,sBAhLA,SAAC3xE,GAAD,MAAY,CACzBm0D,gBAAiBn0D,EAAMksE,OAAO/X,gBAC9B5C,QAASvxD,EAAMI,QAAQmxD,QACvBW,WAAYlyD,EAAMI,QAAQ8xD,WAC1Bc,cAAehzD,EAAMI,QAAQ4yD,cAC7B1B,qBAAsBtxD,EAAMI,QAAQkxD,wBA2KP,CAC7Bjc,oCACAwgC,4CACA93E,cACAQ,cACAqB,qBALa+xE,CAMZ0C,GAAYthD,K,wBCjMFkjD,GAAb,gKAWE,WAAU,IAAD,OACP,EAA0Dh3D,KAAKsyD,MAA5CG,EAAnB,EAAQwD,UAA8Bl4D,EAAtC,EAA8BmwD,KAAQnwD,KAAW+4D,EAAjD,mBACA,OACE,kBAAC,KAAD,iBAAWA,EAAX,CAAiBZ,OAAQ,SAAA5D,GACvB,OAAO,EAAKA,MAAMhgB,QAChB,kBAAC,KAAD,CACE1c,MAAI,EACJkgC,GAAI/3D,EAAK/qB,WAGX,kBAACy/E,EAAcH,WArBzB,GAAiCE,IAAMC,WA4BxBC,sBAhCA,SAAC3xE,GAAD,MAAY,CACzBuxD,QAASvxD,EAAMI,QAAQmxD,WA+BM,GAAhBogB,CAAoB0C,GAAY4B,K,2ECpBxC,SAASC,KACd,IAAMx7E,EAAWR,EAAW,wCAC5B,MAAO,CACL9C,KAAMk/C,GACNh4C,QAAS5D,GAIN,SAASy7E,GAAmBn4E,GACjC,MAAO,CACL5G,KAAMi/C,GACN/3C,QAAkBpE,EAAT8D,EAAoB,oBAAD,OAAqBA,EAAOo4E,KAAK,WAA0B,gBAmBpF,SAASC,KACd,IAAM/3E,EAAUpE,EAAW,8BAC3B,MAAO,CACL9C,KAAMq/C,GACNn4C,W,yBChBEg4E,GAASC,KAAOC,UAAU99E,OAAO+H,UAAUg2E,WAAWC,aAiB/CriF,GAAb,+MAgCEsiF,YAAc,WACPnlB,aAAa93D,QAAQ,mBACxB,EAAK63E,MAAM/yE,eAAe,EAAK+yE,MAAM9yE,WAlC3C,sDAsCE,WACE,IAAQnK,EAAyB2qB,KAAKsyD,MAAMpE,KAAK94E,OAAzCC,qBACR,OAAI2qB,KAAKsyD,MAAM9f,oBAA8C,sBAAxB6kB,GAAO/1E,QAAQqb,KAC3CqD,KAAK23D,sBAAsB,UAAWtiF,GAGtC,OA5Cb,mCAgDE,SAAsBuiF,EAAarzC,GAAU,IAAD,OAC1C,OACE,yBAAKn8B,UAAWC,KAAOwvE,yBACrB,8BAAOtzC,GACP,yBACEn8B,UAAWC,KAAOyvE,oBAClBvlC,QAAS,kBAAM,EAAK+/B,MAAMyF,sBAE1B,kBAACtC,GAAA,EAAD,CAAMrtE,UAAU,kBAAhB,aAxDV,+BA8DE,WAAqB,IAAD,OACZ4vE,EAAW,GAEZh4D,KAAKsyD,MAAM2F,gBAAgBz0D,oBAC9Bw0D,EAASpiC,KAAK51B,KAAKsyD,MAAM4F,sBAGtBl4D,KAAKsyD,MAAMhgB,SAA0C,IAA/BtyC,KAAKsyD,MAAMnc,SAASj6D,QAC7C87E,EAASpiC,KAAK51B,KAAKsyD,MAAM4E,sBAG3Bc,EAASpiC,KAAK51B,KAAKsyD,MAAM6F,kBAEzBn4D,KAAKsyD,MAAM8F,sBAAqB,GAChCj8E,QAAQk8E,IAAIL,GACT38E,MAAK,kBAAM,EAAKi3E,MAAM8F,sBAAqB,MAC3C78E,OAAM,kBAAM,EAAK+2E,MAAM8F,sBAAqB,MAE/Cp4D,KAAK03D,gBAhFT,oBAmFE,WAAU,IAAD,OACP,EASI13D,KAAKsyD,MARPhgB,EADF,EACEA,QACAL,EAFF,EAEEA,eACAqmB,EAHF,EAGEA,UACAplB,EAJF,EAIEA,YACAC,EALF,EAKEA,kBACAE,EANF,EAMEA,+BACAjB,EAPF,EAOEA,oBACA8b,EARF,EAQEA,KAGF,OAAKjc,GAAkBK,EAEnB,yBAAKlqD,UAAS,UAAKC,KAAOkwE,aAAZ,iBACZ,4BAAQnwE,UAAWC,KAAOmwE,WACxB,yBAAKpwE,UAAWC,KAAOowE,MACrB,yBAAKrwE,UAAWC,KAAOqwE,kBACrB,yBAAKtwE,UAAWC,KAAOswE,UACrB,kBAAC,iBAAD,CACEC,YAAa,CAAEC,MAAO,CAAEzJ,MAAO,SAC/B0J,KAAK,OACLvmC,QAAS,kBAAM,EAAK+/B,MAAMvyE,eAAemzD,IACzCjtC,MAAOioD,EAAK94E,OAAO0oB,iBAGvB,yBAAK1V,UAAWC,KAAO0wE,WAAYC,IAAI,QAAQxmC,IAAKymC,KAAiBC,OAAO,UAE9E,yBAAK9wE,UAAWC,KAAO8wE,WACvB,wBAAI/wE,UAAWC,KAAOiwE,WACnBA,KAGHlmB,GACA,yBAAKhqD,UAAWC,KAAO+wE,OACrB,yBAAKhxE,UAAWC,KAAOgxE,iBAAkBC,MAAI,oBAC3C,kBAACC,GAAA,EAAD,CAAStzD,MAAOioD,EAAK94E,OAAO2W,oBAC1B,kBAACytE,GAAA,EAAD,CACEC,aAAYvL,EAAK94E,OAAO2W,mBACxBwmC,QAAS,kBAAM,EAAK+/B,MAAMryE,qBAAqBkzD,IAC/C0lB,MAAO,CAAEzJ,MAAO,SAEhB,kBAACsK,GAAA,EAAD,CAAOC,aAActmB,EAAgC+b,MAAM,SACzD,kBAACqG,GAAA,EAAD,4BAQbz1D,KAAK45D,mBAMR,yBAAKxxE,UAAU,eACb,4BAAQA,UAAWC,KAAOwxE,iBACxB,wBAAIzxE,UAAWC,KAAOiwE,WACnBA,IAKJt4D,KAAK45D,uBApJhB,GAA4BnH,aA2JbC,sBA1KA,SAAC3xE,GAAD,MAAY,CACzBm0D,gBAAiBn0D,EAAMksE,OAAO/X,gBAC9B5C,QAASvxD,EAAMI,QAAQmxD,QACvBL,eAAgBlxD,EAAMI,QAAQ8wD,eAC9BzyD,SAAUuB,EAAMI,QAAQ3B,SACxBgzD,mBAAoBzxD,EAAMI,QAAQqxD,mBAClCC,kBAAmB1xD,EAAMI,QAAQsxD,kBACjC0D,SAAUp1D,EAAMksE,OAAO9W,SACvB8hB,gBAAiBl3E,EAAMksE,OAAOpY,UAC9B3B,YAAanyD,EAAMI,QAAQ+xD,YAC3BC,kBAAmBpyD,EAAMI,QAAQgyD,kBACjCE,+BAAgCtyD,EAAMI,QAAQkyD,+BAC9CjB,oBAAqBrxD,EAAMI,QAAQixD,uBA8JN,CAC7B8kB,sBACAgB,mBD1KK,WACL,IAAM74E,EAAUpE,EAAW,UAC3B,MAAO,CACL9C,KAAMm/C,GACNj4C,YCuKF84E,eD3JK,WACL,MAAO,CACLhgF,KAAMs/C,GACNp4C,QAASpE,EAAW,qBCyJtBm9E,qBDrJK,SAA8Brf,GACnC,MAAO,CACL5gE,KAAMu/C,GACNr4C,QAAS,CAAE05D,eCmJbx5D,kBACAw4E,kBjDjJK,WACL,MAAO,CACL5/E,KAAM8E,IiDgJR8C,iBACAE,wBARayyE,CASZ0C,GAAYhgF,KCtNR,SAAS0kF,KACd,IAAQ/7D,EAAStY,GAATsY,KACFg8D,EAAOv7B,OAAQC,OAAO,MAE5B,OAAIs7B,GAAQ,GAAKA,EAAO,GACfh8D,EAAKK,sBAEL27D,GAAQ,IAAMA,EAAO,GACrBh8D,EAAKM,wBAEL07D,GAAQ,IAAMA,EAAO,EACrBh8D,EAAKO,2BADT,E,qHCLA,SAAS07D,GAAeC,GAC7BC,aAAa,kBAAD,OAAmBD,IAG1B,SAASE,GAAcF,GAC5BC,aAAa,qBAAD,OAAsBD,ICU7B,IAAMG,GAAb,+MAqBEr5E,MAAQ,CACNs5E,iBAAiB,GAtBrB,EAqCEC,YAAc,WACZ,IAAMD,GAAmB,EAAKt5E,MAAMs5E,gBACpC,EAAKzG,SAAS,CAAEyG,qBAvCpB,4DAyBE,SAAsB/8D,EAAMi9D,EAAmBC,EAAc79D,GD5BxD,IAA2B89D,EC6B1Bn9D,EACF0C,KAAKsyD,MAAM+C,QAAQz/B,KAAKt4B,GAEjBk9D,IDhCqBC,ECiCV99D,EDhCtB+9D,aAAe,uBAAwBD,GCiCnChhF,OAAOkhF,KAAKH,EAAc,SAAU,wBAEtCD,GAAqBA,IACrB9gF,OAAOmhF,WAAa9uB,SAAS+uB,kBAAiB76D,KAAKsyD,MAAMvyE,eAAc,KAlC3E,oBA0CE,WAAU,IAAD,OACCs6E,EAAoBr6D,KAAKjf,MAAzBs5E,gBACR,EAcIr6D,KAAKsyD,MAbPpf,EADF,EACEA,YACA4nB,EAFF,EAEEA,cACAx9D,EAHF,EAGEA,KACAy9D,EAJF,EAIEA,uBACAC,EALF,EAKEA,SACAr+D,EANF,EAMEA,KACAs+D,EAPF,EAOEA,QAEEz+E,EATJ,EAQE64E,QACE74E,SAEFg+E,EAXF,EAWEA,aACAjoC,EAZF,EAYEA,QACA2oC,EAbF,EAaEA,SAGIC,EAAW7zB,QAAQ0zB,GACnBI,EAAa99D,IAAS9gB,EAASrC,SAEjCkhF,EAAgB9oC,EAMpB,OALK8oC,IACHA,EAAgBF,EACZ,kBAAM,EAAKb,eACX,kBAAM,EAAKgB,sBAAsBh+D,EAAMw9D,EAAeN,EAAc79D,KAGxE,kBAAC4+D,GAAA,EAAD,CAAM1C,MAAO,CAAE5H,QAAS,MACtB,kBAACuK,GAAA,EAAD,CACEjpC,QAAS8oC,EACTI,QAAM,EACN5C,MAAOoC,EAAU,GAAK,CAAEhhB,QAAS,QACjC+U,SAAUoM,EACVF,SAAUA,GAETH,GACC,kBAACW,GAAA,EAAD,KACE,kBAACnC,GAAA,EAAD,CACEtzD,MAAOtJ,EACPg/D,UAAU,QACVC,qBAAsB1oB,EACtB6iB,IAAKp5D,GAEL,kBAAC84D,GAAA,EAAD,KAAOsF,KAIZ7nB,GAAe,kBAAC2oB,GAAA,EAAD,CAAc7yD,QAASrM,IACtCw+D,GAAY,kBAAC1F,GAAA,EAAD,KAAO4E,EAAkB,cAAgB,gBAEvDc,GACC,kBAACW,GAAA,EAAD,CACEC,GAAI1B,EACJ2B,eAAa,EACbC,UAAW,kBAAM,EAAK3J,MAAM4J,kBAAkB,EAAKn7E,MAAMs5E,kBACzD8B,SAAU,kBAAM,EAAK7J,MAAM4J,kBAAkB,EAAKn7E,MAAMs5E,mBAExD,yBAAKxB,MAAO,CAAEuD,WAAY,UACvBpB,SArGf,GAAuCvI,aAA1B2H,GAgBJjL,aAAe,CACpB8L,SAAS,EACTC,UAAU,GA4FC/F,oBAAWiF,I,qBC7EpBiC,GAAY,CAChBnpB,YAAa,CACXopB,UAAW,UACXC,WAAY,eACZC,MAAO,SAETC,YAAa,CACXH,UAAW,SACXC,WAAY,mBAIHl+C,GAAb,+MA4EEt9B,MAAQ,CACN27E,cAAc,EACdC,gBAAgB,EAChBC,eAAgB,EAChBC,qBAAqB,GAhFzB,EAmFEC,qBAAuB,SAACt9E,GACtB,EAAK8yE,MAAM/yE,eAAeC,GAC1B,EAAK8yE,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKnwD,KAAK/qB,UAC7C,EAAK4gF,SAAS,CAAEiJ,qBAAqB,IACrCpjF,OAAOmhF,WAAa9uB,SAAS+uB,kBAAiB,EAAKvI,MAAMvyE,eAAc,IAvF3E,EA0FEg9E,OAAS,WACP,IAAQ7O,EAAS,EAAKoE,MAAdpE,KACF3zE,EAAQC,eAAeC,QAAQ,SACrC,EAAK63E,MAAMxzE,WAAW,CAAEvE,UACrB87E,SAAQ,kBAAM,EAAK/D,MAAMl8B,iBAAiB83B,EAAK34E,MAAMI,wBAAyB,cACjF,EAAK28E,MAAMhzE,aACX,EAAKgzE,MAAMvyE,eAAc,IAhG7B,EAmGEi9E,iBAAmB,SAAAp3C,GACjBnsC,OAAOmhF,WAAa9uB,SAAS+uB,kBAAiB,EAAKvI,MAAMvyE,eAAc,GACvE,EAAKuyE,MAAM+C,QAAQz/B,KAAKhQ,IArG5B,EAwGEq3C,sBAAwB,WACtB,MAwBI,EAAK3K,MAvBP/wC,EADF,EACEA,UACAC,EAFF,EAEEA,YACA07C,EAHF,EAGEA,aACAhqB,EAJF,EAIEA,YAJF,IAKEtX,cAAiBC,EALnB,EAKmBA,wBAAyBC,EAL5C,EAK4CA,sBAAuBC,EALnE,EAKmEA,eAAgBE,EALnF,EAKmFA,eALnF,IAMEiyB,KACEj4E,EAPJ,EAOIA,WACAooC,EARJ,EAQIA,QACAvoC,EATJ,EASIA,OACArC,EAVJ,EAUIA,SACAmhC,EAXJ,EAWIA,SACAvd,EAZJ,EAYIA,UACAyD,EAbJ,EAaIA,QACAiD,EAdJ,EAcIA,KACAQ,EAfJ,EAeIA,kBACA4F,EAhBJ,EAgBIA,KACA8S,EAjBJ,EAiBIA,oBAEFk6B,EAnBF,EAmBEA,YACA0D,EApBF,EAoBEA,UACA5B,EArBF,EAqBEA,WACAlzD,EAtBF,EAsBEA,cACAi0D,EAvBF,EAuBEA,0BAGF,OACE,kBAAC,IAAMniC,SAAP,KAEE,yBAAKzpB,UAAWC,KAAO80E,kBACrB,yBAAK/0E,UAAWC,KAAO+0E,QAASltC,GAAG,WACjC,yBAAK9nC,UAAWC,KAAOg1E,WACrB,kBAAC,GAAD,CACE1gE,KAAM,GACN41B,QAAS,kBAAMxyC,GAAemzD,IAC9B6nB,uBAAuB,OACvBh7E,cAAeA,EACfmzD,YAAaA,KAIjB,yBAAK9qD,UAAWC,KAAOi1E,WACrB,yBAAKl1E,UAAW8qD,EAAc7qD,KAAOk1E,OAASl1E,KAAOm1E,MACnD,sCAAQ1D,KAAR,MACA,2BAAI3oB,EAAYx0C,QAIpB,kBAAC,GAAD,CACEA,KAAMoB,EAAKrqB,UACX4pB,KAAMS,EAAK/qB,SACX+nF,uBAAuB,OACvBE,QAASrpB,GAAa7zC,KAAKrhB,SAASu2D,GACpClzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAMlpB,EAASC,UACf4pB,KAAM7pB,EAAST,SACf+nF,uBAAuB,SACvBE,QAASrpB,GAAan+D,SAASiJ,SAASu2D,GACxClzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAM,eACNW,KAAM,oBACNy9D,uBAAuB,eACvBE,QAASrpB,GAAa1qD,gBAAgBxK,SAASu2D,KAAgBhX,EAC/Dl8C,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAMtF,EAAU3jB,UAChB4pB,KAAMjG,EAAUrkB,SAChB+nF,uBAAuB,cACvBE,QAASrpB,GAAav6C,UAAU3a,SAASu2D,GACzClzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAMiY,EAASlhC,UACf4pB,KAAMsX,EAAS5hC,SACf+nF,uBAAuB,kBACvBE,QAASrpB,GAAah9B,SAASl4B,SAASu2D,IAAenX,EACvD/7C,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAM7B,EAAQpnB,UACd4pB,KAAMxC,EAAQ9nB,SACd+nF,uBAAuB,gBACvBE,QAASrpB,GAAa92C,QAAQpe,SAASu2D,IAAelX,EACtDh8C,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAMsa,EAAoBvjC,UAC1B4pB,KAAM2Z,EAAoBjkC,SAC1B+nF,uBAAuB,yBACvBE,QAASrpB,GAAa36B,oBAAoBv6B,SAASu2D,GACnDlzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAMwH,EAAKzwB,UACX4pB,KAAM6G,EAAKnxB,SACX+nF,uBAAuB,QACvBE,QAASrpB,GAAaztC,KAAKznB,SAASu2D,GACpClzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAGZ,kBAAC,GAAD,CACEr3C,KAAM4B,EAAkB7qB,UACxB4pB,KAAMiB,EAAkBvrB,SACxB+nF,uBAAuB,yBACvBE,QAASrpB,GAAarzC,kBAAkB7hB,SAASu2D,IAAepX,EAChE97C,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,KAId,yBAAK5rD,UAAWC,KAAOo1E,YACrB,yBAAKr1E,UAAWC,KAAOq1E,SACrB,kBAACC,GAAA,EAAD,OAGF,kBAAC,GAAD,CACEhhE,KAAM1mB,EAAWI,aACjBk8C,QAAS,EAAKwqC,OACdhC,uBAAuB,qBACvBh7E,cAAeA,EACfmzD,YAAaA,IAGf,kBAAC,GAAD,CACEv2C,KAAM7mB,EAAOpC,UACb4pB,KAAMxnB,EAAO9C,SACb+nF,uBAAuB,WACvBE,QAASrpB,GAAa7zC,KAAKrhB,SAASu2D,GACpClzD,cAAeA,EACfmzD,YAAaA,EACbgoB,SAAUlnB,IAyBZ,kBAAC,GAAD,CACEr3C,KAAM0hB,EAAQK,UAAUzY,MACxB80D,uBAAuB,OACvB7nB,YAAaA,EACbgpB,kBAAmB,SAACS,GAAD,OAAoB,EAAK/I,SAAS,CAAE+I,oBACvD58E,cAAeA,GAEf,kBAAC,GAAD,CACE4c,KAAM0hB,EAAQK,UAAUE,wBACxB47C,aAAc3lB,EAAUrxC,mBAAqBqxC,EAAUrxC,mBAAqB,GAC5Eu3D,uBAAuB,UACvB7nB,YAAaA,EACbnzD,cAAeA,IAEjB,kBAAC,GAAD,CACE4c,KAAM0hB,EAAQK,UAAUG,UACxB27C,aAAa,iDACbO,uBAAuB,aACvB7nB,YAAaA,EACbnzD,cAAeA,IAEjB,kBAAC,GAAD,CACE4c,KAAM0hB,EAAQK,UAAUI,gBACxB07C,aAAa,4CACbO,uBAAuB,aACvB7nB,YAAaA,EACbnzD,cAAeA,IAEjB,kBAAC,GAAD,CACE4c,KAAM0hB,EAAQK,UAAUK,SACxBy7C,aAAa,yBACbO,uBAAuB,kBACvB7nB,YAAaA,EACbnzD,cAAeA,KAInB,yBAAKqI,UAAW8qD,EAAc7qD,KAAOu1E,OAASv1E,KAAOm1E,MACnD,yBAAKp1E,UAAWC,KAAOw1E,eACrB,yBAAKz1E,UAAWC,KAAO5G,SACrB,4BAAKxL,EAAWM,aAAhB,IAA+BkD,OAAOiI,aAExC,4BAAK28B,EAAQC,gBACb,yBAAKl2B,UAAWC,KAAOu1E,QACrB,2BAAG,uBAAGv8E,KAAI,iBAAY67E,IAAiBA,IACvC,2BAAI7+C,EAAQI,WAAZ,OAA8B+C,EAAc,uBAAGngC,KAAI,cAASmgC,IAAgBA,GAAmBnD,EAAQG,cACvG,2BAAIH,EAAQE,SAAZ,OAA4BgD,GAAwBlD,EAAQG,eAE7D2yB,EAAYwB,eACX,yBAAKvqD,UAAWC,KAAOy1E,wBACrB,4BAAKz/C,EAAQjoC,oBAAb,KACA,2BAAI+6D,EAAYwB,cAAhB,IAAgCt0B,EAAQ3sB,sBApV5D,yDAgWE,SAAmBijE,EAAWoJ,GAC5B,MAAgD/9D,KAAKsyD,MAA7Cpf,EAAR,EAAQA,YAAqB8qB,EAA7B,EAAqBC,KAAQD,aACvBE,EAAWj/E,SAASC,eAAe,UACnCi/E,EAAYl/E,SAASC,eAAe,WACpCk/E,EAAqB92B,QAAQ42B,IAAaA,EAASG,WAAWC,aAAeJ,EAASG,WAAWE,aACjGC,EAAsBl3B,QAAQ62B,IAAcA,EAAUG,aAAeH,EAAUI,aAC/E7B,EAAe0B,GAAsBI,EAE3C,GACER,IAAiBrJ,EAAUsJ,KAAKD,cAC7B9qB,IAAgByhB,EAAUzhB,aAC1BwpB,IAAiB18D,KAAKjf,MAAM27E,cAC5BqB,EAAUpB,iBAAmB38D,KAAKjf,MAAM47E,eAC3C,CACA,IAEM8B,GAFuBP,EAAWA,EAASG,WAAWK,YAAcR,EAASG,WAAWM,YAAc,IAC9ER,EAAYA,EAAUO,YAAcP,EAAUQ,YAAc,GAEpF/B,EAAiB6B,EAAiB,EAAIA,EAAiBz+D,KAAKjf,MAAM67E,eACxE58D,KAAK4zD,SAAS,CAAE8I,eAAcE,sBAlXpC,oBAsXE,WAAU,IAAD,OACP,EAAiD58D,KAAKsyD,MAA9CrgB,EAAR,EAAQA,eAAgBK,EAAxB,EAAwBA,QAASY,EAAjC,EAAiCA,YAC3B0rB,GAAoB3sB,GAAkBK,GAAWY,EAEvD,OACGjB,GAAkBK,GACnB,kBAAC,IAAMzgC,SAAP,KACE,kBAACgtD,GAAA,EAAD,CAAQC,QAAM,GACZ,kBAACC,GAAA,EAAD,CACEC,WAAY,CAAEnG,MAAO+F,EAAmBvC,GAAUnpB,YAAb,6BAAgCmpB,GAAUI,aAA1C,IAAuDD,MAAOx8D,KAAKjf,MAAM27E,aAAX,UAA6B,GAAK18D,KAAKjf,MAAM67E,eAA7C,MAAkE,UACrK1sC,GAAG,SACHmgC,QAAS/d,EAAU,YAAc,cAEhCtyC,KAAKi9D,0BAIV,kBAAC4B,GAAA,EAAD,CAAQI,MAAI,GACV,kBAACC,GAAA,EAAD,CACEvE,KAAMznB,EACNisB,QAAS,kBAAM,EAAK7M,MAAMvyE,eAAc,IACxCq/E,OAAQ,kBAAM,EAAK9M,MAAMvyE,eAAc,KAEtCigB,KAAKi9D,+BA7YlB,GAA6BxK,aAqZd0C,gBAAWkK,aAAWhD,GAAXgD,CAAsB3M,mBAhbjC,SAAC3xE,GAAD,MAAY,CACzBkxD,eAAgBlxD,EAAMI,QAAQ8wD,eAC9BrW,cAAe76C,EAAM+qE,SAASlwB,cAC9Bra,UAAWxgC,EAAMksE,OAAO/X,gBAAgBt/C,UACxC08C,QAASvxD,EAAMI,QAAQmxD,QACvB9yD,SAAUuB,EAAMI,QAAQ3B,SACxBgiC,YAAazgC,EAAMksE,OAAO/X,gBAAgBx/C,mBAC1CwnE,aAAcn8E,EAAMksE,OAAO/X,gBAAgBQ,aAC3CxC,YAAanyD,EAAMI,QAAQ+xD,YAC3BD,WAAYlyD,EAAMI,QAAQ8xD,WAC1B9B,YAAapwD,EAAMI,QAAQgwD,YAC3B0D,UAAW9zD,EAAMksE,OAAOpY,UAAY9zD,EAAMksE,OAAOpY,UAAY,GAC7Db,0BAA2BjzD,EAAMI,QAAQ6yD,6BAoaqB,CAC9Dz0D,kBACAD,cACA82C,oCACAr2C,iBACAjB,eAL8C4zE,CAM7C4M,iBAAOlK,GAAY/2C,Q,qBClcTkhD,GAAb,+MAcEx+E,MAAQ,CACNy+E,SAAS,GAfb,EAkBEC,YAAc,SAAAC,GACZ,OAAQA,GACN,KAAK7gF,GAAiC,MAAO,eAC7C,KAAKA,GAA4B,MAAO,gBACxC,KAAKA,GAA4B,MAAO,iBACxC,KAAKA,GAAiC,MAAO,kBAC7C,KAAKA,GAA8B,MAAO,cAC1C,KAAKA,GAAqC,MAAO,yBAEjD,QAAS,MAAO,KA3BtB,EA+BE8gF,kBAAoB,SAACv+E,GAGnB,EAAKwyE,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMsN,yBACRvkF,MAAK,WAEJ,OADA,EAAKu4E,SAAS,CAAE4L,SAAS,IAClB,EAAKlN,MAAMryE,qBAAoB,MAEvC5E,MAAK,WAEJ,OAA+B,IAA3B+F,EAAIqlD,QAAQ,YAAgD,IAA5BrlD,EAAIqlD,QAAQ,aAC9ChtD,OAAOkhF,KAAKv5E,EAAK,SAAU,YACpB,MAGA,EAAKkxE,MAAM+C,QAAQz/B,KAAKx0C,OA/CzC,EAoDEnB,oBAAsB,SAACD,GAEhBA,EAUH,EAAKsyE,MAAMryE,oBAAoBD,IAR/B,EAAK4zE,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMsN,yBACRvkF,MAAK,WACJ,EAAKu4E,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMryE,oBAAoBD,QA5DzC,6CAmEE,WAAU,IAAD,OACCw/E,EAAYx/D,KAAKjf,MAAjBy+E,QACR,EAIIx/D,KAAKsyD,MAHPlf,EADF,EACEA,cACAD,EAFF,EAEEA,kBACQriC,EAHV,EAGEo9C,KAAQp9C,cAGV,OACE,kBAACouD,GAAA,EAAD,CACEW,OAAO,QACPlF,KAAMxnB,EACNgsB,QAAS,kBAAM,EAAKl/E,qBAAoB,IACxCm/E,OAAQ,kBAAM,EAAKn/E,qBAAoB,KAEvC,kBAAC,iBAAD,CAAgBi1E,KAAMsK,GACpB,6BACE,yBAAKp3E,UAAWC,KAAOy3E,oBACrB,8CACA,yBAAK13E,UAAWC,KAAO03E,WACrB,kBAAC,iBAAD,CACEjH,KAAK,QACLvmC,QAAS,kBAAM,EAAKtyC,qBAAoB,QAI9C,kBAAC09E,GAAA,EAAD,MACA,6BACGvqB,EAAcl3D,OAAS,EACtBk3D,EAAc/V,KAAI,SAAA0vB,GAChB,IAAM+L,EAAO,EAAK2G,YAAY1S,EAAahuB,MAC3C,MAAO,CACL,yBACEg3B,IAAKhJ,EAAaznB,MAClBl9C,UAAS,UAAKC,KAAO23E,sBAAZ,YAAsCjT,EAAaC,WAAqD,GAAxC3kE,KAAO43E,gCAChF1tC,QAAS,kBAAM,EAAKotC,kBAAkB5S,EAAanU,OAEnD,yBAAKxwD,UAAWC,KAAO63E,mBACrB,yBAAK93E,UAAWC,KAAO83E,oBACrB,yBAAK/3E,UAAWC,KAAO+3E,eACrB,kBAAC3K,GAAA,EAAD,CAAM9D,SAAS,WAAWmH,IAE5B,8BACE,0BAAM1wE,UAAWC,KAAOq3E,kBAAmB3S,EAAahuB,MAD1D,MACyE,0BAAM32C,UAAWC,KAAOg4E,UAAW7hC,KAAMuuB,EAAauT,aAAaC,aAG9I,yBAAKn4E,UAAWC,KAAOm4E,qBAAsBzT,EAAaznB,OAC1D,yBAAKl9C,UAAWC,KAAOo4E,oBAAqB1T,EAAavwB,UAG7D,kBAACmhC,GAAA,EAAD,CAAS5H,IAAI,gBAEZ,yBAAK3tE,UAAWC,KAAOq4E,iBAAkB5vD,EAAcC,+BAvH5E,GAAyCyhD,IAAMC,WAiIhC0C,gBAAWzC,mBAtIX,SAAC3xE,GAAD,MAAY,CACzBoyD,kBAAmBpyD,EAAMI,QAAQgyD,kBACjCC,cAAeryD,EAAMI,QAAQiyD,iBAoIW,CACxCnzD,uBACA2/E,uBtDFK,WACL,IAAMnkF,EAAWC,EAAY,+BAC7B,MAAO,CACLvD,KAAMyF,EACNyB,QAAS5D,KsDJai3E,CAGvB0C,GAAYmK,M,mFCnGToB,GAAanO,IAAMoO,YAAW,SAAoBtO,EAAOuO,GAC7D,OAAO,kBAACC,GAAA,EAAD,eAAOC,UAAU,KAAKF,IAAKA,GAASvO,OAShCtnE,GAAb,+MA2CEjK,MAAQ,CACNggE,WAAY,EACZigB,cAAevnF,OAAOmhF,YAAc9uB,SAASm1B,gBAC7CC,QAAQ,EACRC,gBAAgB,EAChBC,UAAU,EACVC,MAAO,CACL,EAAK/O,MAAMpE,KAAKljE,QAAQW,aACxB,EAAK2mE,MAAMpE,KAAKljE,QAAQM,SACxB,EAAKgnE,MAAMpE,KAAKljE,QAAQO,mBACxB,EAAK+mE,MAAMpE,KAAKljE,QAAQU,kBACxB,EAAK4mE,MAAMpE,KAAKljE,QAAQS,kBACxB,EAAK6mE,MAAMpE,KAAKljE,QAAQQ,gBACxB,EAAK8mE,MAAMpE,KAAKljE,QAAQK,iBAxD9B,EA4DEi2E,WAAa,WACX,EAAK1N,SAAS,CAAE7S,WAAY,EAAKhgE,MAAMggE,WAAa,KA7DxD,EAgEEwgB,iBAAmB,WAOjB,GANA,EAAK3N,SAAS,CAAEwN,UAAU,IAEtB,EAAKrgF,MAAMggE,aAAe,EAAKhgE,MAAMsgF,MAAMnlF,OAAS,GACtD89E,GAAe,UAGb,EAAKj5E,MAAMogF,eAAgB,CAC7B,IAAMK,EAAiB,6BAClB,EAAKlP,MAAMmP,gBADO,IAErBzjC,OAAO,IAGT,EAAKs0B,MAAM9xE,oBAAoBghF,KA7ErC,EAiFEE,oBAAsB,WACpB,MAAsC,EAAK3gF,MAAnCggE,EAAR,EAAQA,WAAYigB,EAApB,EAAoBA,cACZh2E,EAAY,EAAKsnE,MAAMpE,KAAvBljE,QAER,OAAQ+1D,GACN,KAAK,EACH,OACE,yBAAK34D,UAAWC,KAAOs5E,cACrB,yBAAKnvC,IAAKovC,KAASx5E,UAAWC,KAAOw5E,aAAc7I,IAAKhuE,EAAQW,eAChE,yBAAKktE,MAAO,CAAE5e,QAAS,OAAQ6nB,cAAe,WAC5C,2BAAI92E,EAAQwB,cACZ,2BAAIxB,EAAQuB,iBAIpB,KAAK,EACH,OACE,yBAAKnE,UAAWC,KAAOs5E,eACnBX,GAAiB,kBAACvL,GAAA,EAAD,aACnB,2BAAIzqE,EAAQc,WAGlB,KAAK,EACH,OACE,yBAAK1D,UAAWC,KAAOs5E,eACnBX,GAAiB,kBAACvL,GAAA,EAAD,sBACnB,2BAAIzqE,EAAQe,qBAGlB,KAAK,EACH,OACE,6BACE,6BAAMf,EAAQsB,mBACd,yBAAKlE,UAAWC,KAAOs5E,cACrB,yBAAKv5E,UAAWC,KAAO05E,mBAAmB,kBAACvM,GAAA,EAAD,CAAQpG,MAAM,WAAWpkE,EAAQkB,qBAC3E,2BAAIlB,EAAQmB,qBAGd,yBAAK/D,UAAWC,KAAOs5E,cACrB,yBAAKv5E,UAAWC,KAAO25E,mBACrB,kBAACxM,GAAA,EAAD,CAAQpG,MAAM,UAAUyJ,MAAO,CAAE5e,QAAS,OAAQgoB,WAAY,WAC3Dj3E,EAAQU,kBACT,kBAAC+pE,GAAA,EAAD,8BAGJ,2BAAIzqE,EAAQoB,sBAIpB,KAAK,EACH,OACE,yBAAKhE,UAAWC,KAAOs5E,cACrB,kBAAClM,GAAA,EAAD,eACA,2BAAIzqE,EAAQiB,oBAGlB,KAAK,EACH,OACE,yBAAK7D,UAAWC,KAAOs5E,cACrB,kBAAClM,GAAA,EAAD,kBACA,2BAAIzqE,EAAQgB,kBAGlB,KAAK,EACH,OACE,yBAAK5D,UAAWC,KAAOs5E,cACrB,kBAAClM,GAAA,EAAD,aACA,2BAAIzqE,EAAQa,iBAGlB,QAAS,SAvJf,EA2JEq2E,qBAAuB,WACrB,EAAKtO,SAAS,CAAEuN,gBAAiB,EAAKpgF,MAAMogF,kBA5JhD,EA+JEgB,WAAa,WACP,EAAKphF,MAAMggE,aAAe,EAAKhgE,MAAMsgF,MAAMnlF,OAAS,GACtD89E,GAAe,UACf,EAAKuH,qBAGLvH,GAAe,EAAKj5E,MAAMggE,WAAa,GACvC,EAAK6S,SAAS,CAAE7S,WAAY,EAAKhgE,MAAMggE,WAAa,MAtK1D,wDA0KE,WAAqB,IAAD,OAClB,EAA0D/gD,KAAKsyD,MAAvDpgB,EAAR,EAAQA,OAAQuvB,EAAhB,EAAgBA,eACVW,EADN,EAAgCnE,KAAQoE,YACTv2B,SAASw2B,gBAEV,SAA1BpwB,EAAOma,gBAAoE,IAAvC9sB,OAAOC,KAAKiiC,GAAgBvlF,QAClE8jB,KAAKsyD,MAAMiQ,qBACRlnF,MAAK,WAEA+mF,EACF,EAAKxO,SAAS,CAAEwN,UAAU,IAG1B,EAAKxN,SAAS,CAAEwN,SAAU,EAAK9O,MAAMmP,eAAezjC,aAtLhE,oBA4LE,WACE,MAAuEh+B,KAAKjf,MAApEggE,EAAR,EAAQA,WAAYigB,EAApB,EAAoBA,cAAeG,EAAnC,EAAmCA,eAAgBC,EAAnD,EAAmDA,SAAUC,EAA7D,EAA6DA,MAC7D,EAAuCrhE,KAAKsyD,MAApCkQ,EAAR,EAAQA,QAAiBx3E,EAAzB,EAAiBkjE,KAAQljE,QAEzB,OACE,oCACGo2E,GACC,oCACE,yBAAKh5E,UAAWC,KAAOo6E,SAErB,yBAAKr6E,UAA0B,IAAf24D,EAAmB14D,KAAOq6E,gBAAkBr6E,KAAOs6E,iBAAiB,kBAAClN,GAAA,EAAD,cAGpF,yBAAKrtE,UAA0B,IAAf24D,EAAmB14D,KAAOu6E,kBAAoBv6E,KAAOw6E,mBAAmB,kBAACpN,GAAA,EAAD,wBAG1F,kBAACqN,GAAA,EAAD,CACEC,kBAAiB1B,EAAMtgB,GACvBiiB,cAAe,CAAER,QAAS,CAAE5S,KAAM4S,EAAQS,WAC1CT,QAAS,CAAE5S,KAAM4S,EAAQU,QACzBvI,MAAM,EACNqE,WAAY,CAAEwD,QAAS,CAAE5S,KAAMoR,EAAgBwB,EAAQW,iBAAmBX,EAAQY,oBAClFC,oBAAqB1C,GACrB2C,mBAAoB,CAAEC,MAAO,IAAKC,KAAM,MAExC,kBAACC,GAAA,EAAD,CAAar7E,UAAWC,KAAO4d,OAAQo7D,EAAMtgB,IAE7C,kBAAC2iB,GAAA,EAAD,CAAet7E,UAAWC,KAAO0iB,SAC9B/K,KAAK0hE,uBAGR,kBAACiC,GAAA,EAAD,CAAev7E,UAAWC,KAAOu7E,WAC/B,yBAAKx7E,UAAWC,KAAOw7E,YACrB,kBAACC,GAAA,EAAD,CACE/iB,WAAYA,EACZgjB,WACE,kBAACvO,GAAA,EAAD,CACEpG,MAAM,UACNiB,QAAQ,OACR99B,QAASvyB,KAAKshE,WACdpG,SAAyB,IAAfna,GAEM,IAAfA,GAAoB,kBAAC0U,GAAA,EAAD,4BACL,IAAf1U,GAAoB/1D,EAAQC,UAGjCu3E,QAAS,CAAE5S,KAAM4S,EAAQwB,aACzBC,WACE,kBAACzO,GAAA,EAAD,CACEpG,MAAM,UACN78B,QAASvyB,KAAKmiE,YAEbphB,IAAesgB,EAAMnlF,OAAS,EAAI8O,EAAQE,WAAaF,EAAQG,SAChE,kBAACsqE,GAAA,EAAD,8BAGJyO,SAAS,SACT7C,MAAOA,EAAMnlF,OACbm0E,QAAQ,UAIZ,yBAAKjoE,UAAWC,KAAO87E,SACrB,kBAAC,WAAD,CACEC,QAASjD,EACT/R,MAAM,UACN7oD,MAAOvb,EAAQY,eACfy4E,SAAUrkE,KAAKkiE,uBAGjB,kBAAC1M,GAAA,EAAD,CACEpG,MAAM,UACN78B,QAASvyB,KAAKuhE,iBACdlR,QAAQ,QAEPrlE,EAAQI,mBAvQ7B,GAA6BonE,IAAMC,WAqRpB0C,gBAAWkK,cA3TR,iBAAO,CACvB4D,SAAU,CACR1T,gBAAiB,eAEnB6T,kBAAmB,CACjBkB,UAAW,QACXC,SAAU,SAEZrB,OAAQ,CACNsB,OAAQ,mBAEVC,eAAgB,CACdrV,MAAO,QAET+T,iBAAkB,CAChBvF,OAAQ,MACR8G,cAAe,OACfpU,OAAQ,MACR4T,SAAU,WACV1H,MAAO,QAETwH,YAAa,CACXzU,gBAAiB,OACjBtV,QAAS,OACT0qB,eAAgB,mBAmSMtF,CAAsB3M,mBA3RjC,SAAA3xE,GAAK,MAAK,CACvB0gF,eAAgB1gF,EAAMI,QAAQ0yD,gBAAgB33D,OAAS,EAAI6E,EAAMI,QAAQ0yD,gBAAgB9O,MAAK,SAAA2nB,GAAI,MAAwB,eAApBA,EAAKI,cAA+B,GAC1I5a,OAAQnxD,EAAMI,QAAQ+wD,OACtBzY,oBAAqB14C,EAAM+qE,SAASryB,uBAwR0B,CAC9D8oC,mBvDrJK,WACL,IAAM9mF,EAAWR,EAAW,iCAC5B,MAAO,CACL9C,KAAM+F,EACNmB,QAAS5D,IuDkJX+E,wBAF8CkyE,CAG7C4M,iBAAOlK,GAAYpqE,Q,+BC1TPoqE,WAxBR,YAAoC,IAAb4F,EAAY,EAAZA,SAC5B,OACE,yBAAK5yE,UAAWC,KAAOitE,WACrB,6BACE,yBAAKltE,UAAWC,KAAOu8E,MACrB,uBACEx8E,UAAWC,KAAOw8E,KAClBxjF,KAAK,yBACL+Y,OAAO,QACPC,IAAI,uBAEJ,kBAAC,YAAD,CAAW6+D,OAAO,UAEnB8B,Q,qBCWI8J,OA3BR,SAAgBxS,GACrB,OAAIA,EAAM4C,KAEN,yBAAK9sE,UAAWC,KAAO08E,QACrB,yBAAK38E,UAAWC,KAAO28E,gBACpB1S,EAAMsS,KAEL,yBAAKK,yBAbKL,EAaiCtS,EAAMsS,KAZpD,CAAEM,OAAQN,MAcPtS,EAAM0I,WAMP,KArBU,IAAC4J,GCLf,SAASO,KACd,IACMC,EADanmF,SAASomF,OAAOrzB,MAAM,KACXjN,MAAK,SAAAugC,GAAK,OAAIA,EAAM5oF,SAAS,aAC3D,OAAO0oF,EAAaA,EAAWG,OAAOH,EAAW3+B,QAAQ,KAAO,EAAG2+B,EAAWlpF,QAAU,GAGnF,SAASspF,GAAoBC,EAAMC,EAAoBC,GAC5D,IAAMC,EAAU,IAAI3a,KAAKya,GACzBE,EAAQC,QAAQD,EAAQE,UAAYH,GACpC,IAAMI,EAAaH,EAAQI,cACrBC,EAAWhnF,SAASzC,SAAS0pF,SAE/BjnF,SAASomF,OADA,cAAbY,EACI,iBAA4BR,EAA5B,qBAA6CM,EAA7C,8BACA,iBAA4BN,EAA5B,qBAA6CM,EAA7C,gD,yBCmCOxwF,GAAb,+MAiDEwL,MAAQ,CACNqE,SAAU,GACVL,SAAU,GACVohF,WAAY,GACZ3G,SAAS,EACTz2B,aAAa,GAtDjB,EAwEEq9B,qBAAuB,SAAC3P,GACtBA,EAAE4P,iBAEG,EAAK/T,MAAMtc,iBAAiBC,UAW/B,EAAKqwB,gBAVL,EAAK1S,SAAS,CAAE4L,SAAS,IAEzB,EAAKlN,MAAMiU,sBACRlrF,MAAK,WACJ,EAAKmrF,wBACL,EAAKF,kBAEN/qF,OAAM,kBAAM,EAAK+qF,oBAnF1B,EA0FEG,aAAe,WACb,IAAIN,EAAa,GAEZ,EAAKplF,MAAMqE,WACd+gF,EAAW/gF,SAAW,EAAKktE,MAAMpE,KAAK34E,MAAMR,cAGzC,EAAKgM,MAAMgE,WACdohF,EAAWphF,SAAW,EAAKutE,MAAMpE,KAAK34E,MAAMT,cAG1C,EAAKiM,MAAMqE,UAAY,EAAKrE,MAAMgE,WACpCohF,EAAa,IAGX,EAAKplF,MAAMgE,SAAS7I,OAAS,KAC/BiqF,EAAWphF,SAAW,EAAKutE,MAAMpE,KAAK34E,MAAMquB,iBAG1C,EAAK7iB,MAAMqE,SAASlJ,OAAS,MAC/BiqF,EAAW/gF,SAAW,EAAKktE,MAAMpE,KAAK34E,MAAMsuB,iBAG9C,IAAMyuC,EAA6C,IAAnC/S,OAAOC,KAAK2mC,GAAYjqF,OAOxC,OALA,EAAK03E,SAAS,CACZuS,aACA3G,QAASltB,IAGJA,GAxHX,EA2HEg0B,aAAe,WAGb,GAFA,EAAKhU,MAAMsE,uBAEP,EAAK6P,eAAgB,CACvBxnF,SAASC,eAAe,iBAAiBwnF,OACzCznF,SAASC,eAAe,iBAAiBwnF,OACzC,IAAMC,EAAaxB,KAEbpmF,EAAS,CACbqG,SAAU,EAAKrE,MAAMqE,SACrBL,SAAU,EAAKhE,MAAMgE,SACrBkxD,UAAW,EAAKqc,MAAMtc,iBAAiBC,UACvC2wB,YAAaD,GAGf,EAAK/S,SAAS,CAAE4L,SAAS,IAEzB,EAAKlN,MAAMuU,UAAU9nF,GAClB1D,MAAK,WACJ,IACE4D,SAASomF,OAAS,iBAClB5rF,OAAOqtF,IAAIC,IAAIC,MACfvtF,OAAOqtF,IAAIC,IAAIE,SACfxtF,OAAOqtF,IAAIC,IAAIG,OACfztF,OAAOqtF,IAAIC,IAAIC,MAEjB,MAAOlmF,QAIRvF,OAAM,SAACE,GACN,IAAIsJ,EAAW,GACXK,EAAW,GAEX3J,EAAS4D,QAAQ1D,KAAKO,OAAS,GACjCT,EAAS4D,QAAQ1D,KAAKk6C,SAAQ,SAAAsxC,GACN,aAAlBA,EAAQlxC,QACVlxC,EAAWoiF,EAAQnxC,SAEC,aAAlBmxC,EAAQlxC,QACV7wC,EAAW+hF,EAAQnxC,YAKzB,EAAK49B,SAAS,CAAE4L,SAAS,EAAO2G,WAAY,CAAEphF,WAAUK,mBAxKlE,EA6KEgiF,cAAgB,SAACC,EAAWntB,GAAW,IAAD,EAC9BotB,EAAezqC,qBAAU,EAAK97C,MAAMolF,YAEtCjsB,EAAMh+D,OAAS,GAAK,EAAK6E,MAAMolF,WAAWkB,KAC5CC,EAAaD,GAAa,IAG5B,EAAKzT,UAAL,oBACGyT,EAAYntB,GADf,4BAEcotB,GAFd,KApLJ,EA0LEC,gBAAkB,WAChB,EAAK3T,SAAS,CAAE4L,SAAS,IACzBnjF,EAAkB,SACfhB,MAAK,SAAAd,GACJ,GAAIA,IAAU,EAAK+3E,MAAM3yE,eACvB,OAAO,EAAK2yE,MAAM5yE,gBAAgBnF,GAC/Bc,MAAK,SAACI,GACL,IAAK,EAAK62E,MAAM1f,kBAAmB,CACjC,IAAM40B,EAAiB/rF,EAAS4D,QAAQ1D,KAAK,eAAe,GAC5D,EAAKi4E,SAAS,CAAE7qB,aAAa,IAC7B,EAAKupB,MAAMl8B,iBAAiBoxC,EAAgB,kBAKrDnR,SAAQ,kBAAM,EAAKzC,SAAS,CAAE4L,SAAS,QAzM9C,4DA+DE,WAEE,IAAMiI,EAAYxoF,SAASyoF,cAAc,UACzCD,EAAUE,aAAa,OAAQ,mBAC/BF,EAAUE,aAAa,MAAO3nE,KAAKsyD,MAAMtc,iBAAiBE,iBAC1DuxB,EAAUE,aAAa,KAAM,aAC7B1oF,SAAS2oF,KAAKC,YAAYJ,KArE9B,+BA4ME,WACEznE,KAAKunE,oBA7MT,oBAgNE,WAAU,IAAD,OACP,EAA8CvnE,KAAKjf,MAA3ColF,EAAR,EAAQA,WAAY3G,EAApB,EAAoBA,QAASz2B,EAA7B,EAA6BA,YAC7B,EASI/oC,KAAKsyD,MARPrb,EADF,EACEA,kBACAJ,EAFF,EAEEA,YAFF,IAGEqX,KACE34E,MACEuuB,EALN,EAKMA,aAAcC,EALpB,EAKoBA,aAActuB,EALlC,EAKkCA,aAAciuB,EALhD,EAKgDA,mBAAoBC,EALpE,EAKoEA,kBAC9DnuB,EANN,EAMMA,UAAW9B,EANjB,EAMiBA,UAAWgC,EAN5B,EAM4BA,aAAc+jB,EAN1C,EAM0CA,uBAIpCquE,EAAiB,kBAAC,aAAD,CAAYhS,GAAI0J,EAAU,GAAKx/D,KAAKsyD,MAAMpE,KAAK/4E,eAAenC,SAAU+iF,IAAI,sBAAsBhyD,GACnHgkE,EAAiB,kBAAC,aAAD,CAAYjS,GAAI0J,EAAU,GAAKx/D,KAAKsyD,MAAMpE,KAAKv5E,eAAe3B,SAAU+iF,IAAI,sBAAsBjyD,GAEzH,OACE,6BACE,kBAAC,GAAD,CAAQoxD,KAAM5tB,QAAQuP,EAAYxe,GAAiBC,QAASssC,KAAM/tB,EAAYxe,GAAiBC,SAC/F,kBAAC,GAAD,CACE0vC,SAAUhoE,KAAKomE,qBACfngE,MAAOvyB,GAEP,kBAAC,iBAAD,CAAgBwhF,KAAMsK,GAAWvoB,EAAmBulB,MAAM,QACxD,0BACEp0E,UAAU,gBACV4/E,SAAUhoE,KAAKomE,sBAEf,kBAAC6B,GAAA,EAAD,CACEC,aAAa,MACbhN,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAW/gF,UAC1B+iF,WAAS,EACTC,WAAYjC,EAAW/gF,SACvB8qC,GAAG,gBACH3pB,MAAO7wB,EACP2uF,SAAU,SAAC5N,GAAD,OAAO,EAAK2Q,cAAc,WAAY3Q,EAAEr8D,OAAO8/C,QACzDA,MAAOl6C,KAAKjf,MAAMqE,SAClBirE,QAAQ,WAEV,kBAAC,gBAAD,CACE6X,aAAa,MACbhN,SAAUsE,EACV6I,UAAWlC,EAAWphF,SACtBojF,WAAS,EACTj4C,GAAG,gBACH3pB,MAAO9wB,EACP4uF,SAAU,SAAC5N,GAAD,OAAO,EAAK2Q,cAAc,WAAY3Q,EAAEr8D,OAAO8/C,QACzDA,MAAOl6C,KAAKjf,MAAMgE,SAClBsrE,QAAQ,WAEV,yBAAKjoE,UAAWC,KAAOozE,QACrB,kBAACjG,GAAA,EAAD,CACE0F,SAAUnyB,GAAey2B,EACzB2I,WAAS,EACThwF,KAAK,SACLk4E,QAAQ,aAEP76E,IAIL,yBAAK4S,UAAWC,KAAOigF,eAAvB,eACeR,EADf,OACmCC,GAGnC,yBAAK3/E,UAAWC,KAAOkgF,aACrB,yBAAKngF,UAAWC,KAAOmgF,aAAa,kBAAC7K,GAAA,EAAD,OACpC,yBAAKv1E,UAAWC,KAAOogF,aAAvB,MACA,yBAAKrgF,UAAWC,KAAOqgF,cAAc,kBAAC/K,GAAA,EAAD,QAGvC,yBAAKv1E,UAAWC,KAAOsgF,qBACrB,kBAACnT,GAAA,EAAD,CACE2S,WAAS,EACT9X,QAAQ,OACRjB,MAAM,UACN78B,QAAS,kBAAM,EAAK+/B,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKzyC,SAASzoC,YAE/D0wB,IAGL,yBAAKtb,UAAWC,KAAOugF,6BACrB,kBAACpT,GAAA,EAAD,CACEpG,MAAM,UACN+Y,WAAS,EACT9mF,KAAK,6BACLgZ,IAAI,sBACJD,OAAO,SACPi2D,QAAQ,QAEP1sD,OAOX,yBAAKvb,UAAWC,KAAOwgF,WAAvB,IACE,2BAAIn+E,KAAM+O,UAlTpB,GAA2Bg5D,aAyTZ0C,gBAAWzC,mBAlUX,SAAC3xE,GAAD,MAAY,CACzBpB,eAAgBoB,EAAMI,QAAQgwD,YAAYxxD,eAC1CizD,kBAAmB7xD,EAAMI,QAAQgwD,YAAYyB,kBAC7CnoD,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,mBAC5CsgD,iBAAkBj1D,EAAMksE,OAAOjX,iBAC/BiB,kBAAmBl2D,EAAMksE,OAAOhW,kBAChCJ,YAAa91D,EAAMksE,OAAOpW,eA4Tc,CACxC+f,4CACA2P,oBX1UK,WACL,MAAO,CACLpuF,KAAMo/C,GACNl4C,QAASpE,EAAW,wCWwUtBm7C,oCACAywC,U3DzUK,SAAmB9nF,GACxB,IAAMtD,EAAWC,EAAY,wBAAyBqD,GACtD,MAAO,CACL5G,KAAM+E,EACNmC,QAAS5D,I2DsUXiE,oBALwBgzE,CAMvB0C,GAAY7/E,M,yBClVFZ,GAAb,+MA0BEoM,MAAQ,CACNy+E,SAAS,EACTp6E,SAAU,GACV0jF,WAAY,GACZ//B,aAAa,GA9BjB,EAiCE09B,aAAe,WACb,IAAIsC,GAAc,EACdD,EAAa,GAajB,OAXI,EAAK/nF,MAAMqE,SAASlJ,OAAS,EAC/B4sF,EAAa,EAAKxW,MAAMpE,KAAKv5E,eAAeI,aAG5Cg0F,GAAc,EAGhB,EAAKnV,SAAS,CACZkV,eAGKC,GAhDX,EAmDEzC,aAAe,SAAC7P,GACdA,EAAE4P,iBAEE,EAAKI,iBACP,EAAK7S,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMyV,eAAe,CAAEiB,MAAO,EAAKjoF,MAAMqE,WAC3C/J,MAAK,WACJ,EAAKi3E,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAK34E,MAAMvC,UAC9C,EAAKs/E,MAAMl8B,iBAAiB,EAAKk8B,MAAMpE,KAAKv5E,eAAeK,YAAa,cAEzEuG,OAAM,kBAAM,EAAKq4E,SAAS,CAAE4L,SAAS,SA7D9C,EAiEE+H,gBAAkB,WAChBlrF,EAAkB,kBACfhB,MAAK,SAAAd,GACAA,IAAU,EAAK+3E,MAAM3yE,gBACvB,EAAK2yE,MAAM5yE,gBAAgBnF,GACxBc,MAAK,SAACI,GACL,IAAK,EAAK62E,MAAM1f,kBAAmB,CACjC,IAAM40B,EAAiB/rF,EAAS4D,QAAQ1D,KAAK,eAAe,GAC5D,EAAKi4E,SAAS,CAAE7qB,aAAa,IAC7B,EAAKupB,MAAMl8B,iBAAiBoxC,EAAgB,mBA1E5D,wDAiFE,WACExnE,KAAKunE,oBAlFT,oBAqFE,WAAU,IAAD,OACP,EAGIvnE,KAAKsyD,MAAMpE,KAAKv5E,eAFlBC,EADF,EACEA,WAAYC,EADd,EACcA,WAAYnB,EAD1B,EAC0BA,UAAWuB,EADrC,EACqCA,kBACnCC,EAFF,EAEEA,cAAeukB,EAFjB,EAEiBA,uBAEjB,EAAuDuG,KAAKjf,MAApDy+E,EAAR,EAAQA,QAASz2B,EAAjB,EAAiBA,YAAa+/B,EAA9B,EAA8BA,WAAY1jF,EAA1C,EAA0CA,SAC1C,OACE,kBAAC,IAAMysB,SAAP,KACE,kBAAC,GAAD,CAAa5L,MAAOvyB,GAClB,0BACE0U,UAAU,gBACV4/E,SAAUhoE,KAAKsmE,cAEf,2BAAIrxF,EAAkB+qB,KAAKsyD,MAAM7nE,gBACjC,kBAACw9E,GAAA,EAAD,CACE5D,SAAU,SAAC5N,GAAD,OAAO,EAAK7C,SAAS,CAAExuE,SAAUqxE,EAAEr8D,OAAO8/C,MAAO4uB,WAAY,MACvE5uB,MAAO90D,EACPmhB,MAAOrxB,EACPizF,WAAS,EACTc,WAAS,EACT/N,SAAUsE,EACV1+E,MAAOwmD,QAAQwhC,GACfV,WAAYU,EACZzY,QAAQ,WAEV,yBAAKjoE,UAAWC,KAAO1W,SACrB,kBAAC6jF,GAAA,EAAD,CACEnF,QAAQ,OACRjB,MAAM,UACNyJ,MAAO,CAAE2D,MAAO,OAChBjqC,QAAS,kBAAM,EAAK+/B,MAAM+C,QAAQ6T,UAClChO,SAAUsE,GAET5qF,GAEH,kBAAC,iBAAD,CAAgBsgF,KAAMsK,EAAShD,MAAM,OACnC,kBAAChH,GAAA,EAAD,CACEr9E,KAAK,SACLk4E,QAAQ,YACR6K,SAAUsE,GAAWz2B,EACrBo/B,WAAS,GAERtzF,OAOX,yBAAKuT,UAAWC,KAAOwgF,WAAvB,IACE,2BAAIn+E,KAAM+O,UAvIpB,GAAoCg5D,aA8IrB0C,gBAAWzC,mBApJX,SAAC3xE,GAAD,MAAY,CACzBpB,eAAgBoB,EAAMI,QAAQgwD,YAAYxxD,eAC1CizD,kBAAmB7xD,EAAMI,QAAQgwD,YAAYyB,kBAC7CnoD,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,sBAiJJ,CACxC0gC,oCACA2xC,eCvKK,SAAwBhpF,GAE7B,MAAO,CACL5G,KCT2B,qDDU3BkH,QAHe3D,EAAY,iCAAkCqD,KDuK/DW,oBAHwBgzE,CAIvB0C,GAAYzgF,M,yBGnJFw0F,GAAb,+MAqCEC,gBAAkB,CAChB,CACElvB,MAAOsK,GACPvK,QAAS,EAAKqY,MAAMpE,KAAKzyC,SAASW,wBAEpC,CACE89B,MAAOsK,GACPvK,QAAS,EAAKqY,MAAMpE,KAAKzyC,SAASY,gCA5CxC,EAgDEgtD,eAAiB,SAAC3kB,GAChB,EAAK4N,MAAMgX,uBAAuB5kB,GAE9BA,IAAqBF,GACvB,EAAK8N,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKjwC,UAAUjrC,UAElD,EAAKs/E,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKzyC,SAASzoC,WAtDvD,6CAyDE,WACE,MAKIgtB,KAAKsyD,MAJP0I,EADF,EACEA,SACAnmB,EAFF,EAEEA,UACQp5B,EAHV,EAGEyyC,KAAQzyC,SACRipC,EAJF,EAIEA,iBAGF,OACE,yBAAKt8D,UAAWC,KAAOitE,WACrB,6BACE,yBAAKltE,UAAWC,KAAOu8E,MACrB,yBAAKx8E,UAAWC,KAAOkhF,iBACrB,uBACEnhF,UAAWC,KAAOw8E,KAClBxjF,KAAK,yBACL+Y,OAAO,QACPC,IAAI,uBAEJ,kBAAC,YAAD,OAEF,6BACE,4BAAKohB,EAASS,oBAEd,2BAAIT,EAASkB,4BAIjB,yBAAKk8C,MAAO,CAAE2Q,UAAW,SAAUC,UAAW,MAAOC,aAAc,QACjE,kBAAC,WAAD,CACEC,QAAS,qBACTpjE,MAAOkV,EAASC,eAChBw+B,MAAOwK,EACP2f,SAAUrkE,KAAKqpE,eACfrvB,QAASh6C,KAAKopE,gBACdQ,iBAAkB,CAAE/Q,MAAO,CAAE2D,MAAO,MAAO+H,SAAU,QAASiF,UAAW,YAI7E,yBAAKphF,UAAWC,KAAOwhF,eACpB7O,GAGH,yBAAK5yE,UAAWC,KAAOyhF,WACrB,4BAAKruD,EAASU,4BAEd,2BAAIV,EAASa,gCACb,2BAAG,gCAASb,EAASyB,4BAArB,MAA6DzB,EAASgB,kCACtE,uBAAGp7B,KAAMwzD,EAAUC,QAAQC,SAAU36C,OAAO,SAASC,IAAI,uBAAuBohB,EAASsB,cAEzF,2BAAG,gCAAStB,EAAS+B,wBAArB,MAAyD/B,EAASoB,8BAClE,uBAAGx7B,KAAMwzD,EAAUG,QAAQD,SAAU36C,OAAO,SAASC,IAAI,uBAAuBohB,EAASc,oBAEzF,4BAAKd,EAAS0B,kBACd,2BAAI1B,EAASiB,wBACb,uBAAGr7B,KAAMwzD,EAAUI,QAAQF,SAAU36C,OAAO,SAASC,IAAI,uBAAuBohB,EAASuB,eAI3F,yBAAK50B,UAAWC,KAAOwgF,WAAvB,IACE,2BAAIn+E,KAAM+wB,EAAShiB,iCArHjC,GAAiC+4D,IAAMC,WA+HxB0C,gBAAWzC,mBApIX,SAAC3xE,GAAD,MAAY,CACzB2jE,iBAAkB3jE,EAAM0sE,iBAAiB/I,iBACzC7P,UAAW9zD,EAAMksE,OAAOpY,aAkIgB,CACxCy0B,uBCpIK,SAAgC5kB,GACrC,MAAO,CACLvsE,KAAMgsE,GACN9kE,QAASqlE,KDgIagO,CAEvB0C,GAAY+T,MEtIR,SAASY,GAAmB7vB,GACjC,OAAKA,EAGDA,EAAMh+D,OAAS,GACVuJ,GAAe9C,oBAEjB,GALE8C,GAAetC,SAQnB,SAAS6mF,GAAoB9vB,GAClC,OAAIA,EAAMh+D,OAAS,GACVuJ,GAAe9C,oBAEjB,GAGF,SAASsnF,GAAkB/vB,GAChC,OAAKA,EAGDA,EAAMh+D,OAAS,GACVuJ,GAAe7C,oBAEjB,GALE6C,GAAetC,SAQnB,SAAS+mF,GAA2BhwB,GACzC,OAAKA,EAGDA,EAAMh+D,OAAS,GAAKg+D,EAAMh+D,OAAS,EAC9BuJ,GAAelC,WAEjB,GALEkC,GAAetC,SAQnB,SAASgnF,GAAkBjwB,GAChC,OAAKA,EAGDA,EAAMh+D,OAAS,GACVuJ,GAAexC,uBAEjB,GALEwC,GAAetC,SAQnB,SAASinF,GAAiBlwB,GAE/B,OAAKA,EADgB,0BAIHmwB,KAAKnwB,GAGnBA,EAAMh+D,OAAS,GACVuJ,GAAe7C,oBAEjB,GALE6C,GAAe1B,4CAA4C,iBAH3D0B,GAAetC,SAWnB,SAASmnF,GAAcpwB,GAE5B,OAAKA,EADa,oBAIHmwB,KAAKnwB,GAGb,GAFEz0D,GAAe7B,yCAAyC,WAHxD6B,GAAetC,SAQnB,SAASonF,GAAerwB,GAC7B,OAAKA,EAGE,GAFEz0D,GAAetC,SAKnB,SAASqnF,GAAoBtwB,GAElC,OAAKA,EAGAA,EAAMuwB,MAJa,uDAOjB,GAFEhlF,GAAevC,iBAHfuC,GAAetC,SAQnB,SAASunF,GAA+BxwB,EAAO3hE,EAAQC,GAC5D,OAAK0hE,GAILA,EAAQ1b,KAAM0b,GAET1b,KAAM0b,GAAO5H,UAIT9T,KAAM0b,GAAOywB,SAASnsC,OAAQosC,SAASpyF,EAAQ,UACtDgmD,KAAM0b,GAAO2wB,QAAQrsC,OAAQosC,SAASryF,EAAQ,SAEvCkN,GAAexD,WAAW1J,EAAQC,GAGpC,GATEiN,GAAepD,cANfoD,GAAetC,SAkBnB,SAAS2nF,GAA8B5wB,EAAO1hE,GAGnD,OAAK0hE,GAILA,EAAQ1b,KAAM0b,GAET1b,KAAM0b,GAAO5H,UAGT9T,KAAM0b,GAAOywB,SAASnsC,OAAQosC,SAASpyF,EAAQ,UACtDgmD,KAAM0b,GAAO2wB,QAAQrsC,OAAQosC,SAZhB,EAYiC,SAEvCnlF,GAAexD,WAdT,EAc4BzJ,GAEpC,GAPEiN,GAAepD,cANfoD,GAAetC,SAgBnB,SAAS4nF,GAAiC7wB,GAC/C,OAAKA,EAGE,GAFEz0D,GAAetC,SAKnB,SAAS6nF,GAAkB9wB,EAAO33D,EAASC,GAChD,OAAK03D,GAILA,EAAQ1b,KAAM0b,GACT1b,KAAM0b,GAAO5H,UAGT/vD,GAAWC,IAAYg8C,KAAM0b,GAAO2wB,QAAQrsC,KAAMh8C,GAAU,QAAUg8C,KAAM0b,GAAOywB,SAASnsC,KAAMj8C,GAAU,QAC5GkD,GAAenD,YAAYk8C,KAAMj8C,GAASk8C,OAAO,cAAeD,KAAMh8C,GAASi8C,OAAO,eAExF,GALEh5C,GAAepD,cALfoD,GAAetC,SAanB,SAAS8nF,GAAgB/wB,EAAOvnD,EAAWC,GAChD,OAAKsnD,EAGIvnD,GAAaC,IAAcsnD,EAAQtnD,GAAasnD,EAAQvnD,GACxDlN,GAAevD,eAEjB,GALEuD,GAAevD,eAQnB,SAASgpF,GAAkBC,GAChC,OAAKA,EAGDA,EAASjvF,OAAS,GAAKivF,EAASjvF,OAAS,EACpCuJ,GAAe/B,oBAEpBynF,EAASjvF,OAAS,GACbuJ,GAAe7C,oBAEpBuoF,EAASV,MAAM,YACVhlF,GAAe9B,sBAEpBwnF,EAASV,MAAM,aACVhlF,GAAe5C,2BAEjB,GAdE4C,GAAetC,SAiBnB,SAASioF,GAAe3mF,GAE7B,OAAKA,EAGDA,EAAMgmF,MAAM,OACPhlF,GAAe3C,mBALL,iDAOHunF,KAAK5lF,GAGd,GAFEgB,GAAehD,cANfgD,GAAetC,SAWnB,SAASkoF,GAA0B5jB,GAGxC,MAFkC,iBAEJ4iB,KAAK5iB,GAC1BhiE,GAAe3B,mBAEjB,GAGF,SAASwnF,GAAoB7jB,GAGlC,MAF+B,2BAEJ4iB,KAAK5iB,GACvBhiE,GAAe1B,4CAA4C,sBAE3D0jE,EAAIvrE,OAAS,GACbuJ,GAAe7C,oBAEjB,G,8CCrLI64B,GAAb,+MA6DE16B,MAAQ,CACNwqF,UAAW,GACXpF,WAAY,GACZ3G,SAAS,EACTgM,iBAAiB,EACjBC,qBAAqB,EACrB54B,iBAAkB,CAChBpuD,MAAO,GACPE,UAAW,GACXE,SAAU,GACV6mF,UAAW,GACXC,UAAW,GACXvmF,SAAU,IAEZwmF,cAAc,EACdC,gBAAgB,GA5EpB,EA+EEpF,aAAe,WACb,IAAMN,EAAa,GACnB,EAAuI,EAAKplF,MAApIwqF,EAAR,EAAQA,UAAWC,EAAnB,EAAmBA,gBAAnB,IAAoC34B,iBAAoBpuD,EAAxD,EAAwDA,MAAOE,EAA/D,EAA+DA,UAAWE,EAA1E,EAA0EA,SAAU6mF,EAApF,EAAoFA,UAAWC,EAA/F,EAA+FA,UAAWvmF,EAA1G,EAA0GA,SAAYwmF,EAAtH,EAAsHA,aAC9GnwD,EAAa,EAAK62C,MAAMpE,KAAxBzyC,SAGJr2B,EAASqlF,MAAM,eACjBtE,EAAW/gF,SAAWq2B,EAASM,qBAE7B32B,EAASqlF,MAAM,cACjBtE,EAAW/gF,SAAWq2B,EAASO,2BAE7B52B,IAAasmF,IACfvF,EAAW/gF,SAAWq2B,EAASI,gCAE5Bz2B,IACH+gF,EAAW/gF,SAAWq2B,EAAS9a,oBAE7Bvb,EAASlJ,OAAS,KACpBiqF,EAAW/gF,SAAWq2B,EAASG,mBAE7Bx2B,EAASlJ,OAAS,IACpBiqF,EAAW/gF,SAAWq2B,EAASK,yBAG5Bn3B,IACHwhF,EAAWxhF,UAAY82B,EAAS9a,oBAE9Bhc,EAAUzI,QAAU,KACtBiqF,EAAWxhF,UAAY82B,EAASE,mBAE7B92B,IACHshF,EAAWthF,SAAW42B,EAAS9a,oBAE7B9b,EAAS3I,QAAU,KACrBiqF,EAAWthF,SAAW42B,EAASG,mBAG5Bn3B,IACH0hF,EAAW1hF,MAAQg3B,EAAS9a,oBAE9B,IAAMmrE,EAAaV,GAAe3mF,GAkDlC,OAjDIA,GAASqnF,IACX3F,EAAW1hF,MAAQqnF,GAGhBN,IACHrF,EAAWuF,UAAYjwD,EAAS5kC,uBAE7B60F,IACHvF,EAAWuF,UAAYjwD,EAAS9a,oBAE7BgrE,IACHxF,EAAWwF,UAAYlwD,EAAS9a,oBAE9B+qE,IAAcC,IAChBxF,EAAWwF,UAAYlwD,EAAS7jC,oBAG7Bg0F,IACHzF,EAAW4F,MAAQtwD,EAAS7a,iBAG1B2qE,EAAUrvF,OAAS,GACrBqvF,EAAU11C,SAAQ,SAAA/0C,GACI,iBAAhBA,EAAMm1C,QACRkwC,EAAW1hF,MAAQ3D,EAAMk1C,SAEP,cAAhBl1C,EAAMm1C,QACRkwC,EAAWxhF,UAAY7D,EAAMk1C,SAEX,aAAhBl1C,EAAMm1C,QACRkwC,EAAWthF,SAAW/D,EAAMk1C,SAEV,gBAAhBl1C,EAAMm1C,QACRkwC,EAAWuF,UAAY5qF,EAAMk1C,SAEX,gBAAhBl1C,EAAMm1C,QACRkwC,EAAWwF,UAAY7qF,EAAMk1C,SAEX,aAAhBl1C,EAAMm1C,OAAwC,aAAhBn1C,EAAMm1C,QACtCkwC,EAAW/gF,SAAWtE,EAAMk1C,YAKlC,EAAK49B,SAAS,CACZ2X,UAAW,GACXpF,eAGwC,IAAnC5mC,OAAOC,KAAK2mC,GAAYjqF,QA1KnC,EA6KEoqF,aAAe,SAAA7P,GAGb,GAFAA,EAAE4P,iBAEE,EAAKI,eAAgB,CACvB,EAAK7S,SAAS,CAAE4L,SAAS,IACzB,IAAQ3sB,EAAqB,EAAK9xD,MAA1B8xD,iBAEFm5B,EAAsB,CAC1Bl5B,aAAcD,EAAiBpuD,MAC/Bm7C,UAAWiT,EAAiBluD,UAC5Bm7C,SAAU+S,EAAiBhuD,SAC3By/D,YAAazR,EAAiB64B,UAC9BnnB,YAAa1R,EAAiB84B,UAC9BtwB,SAAUxI,EAAiBztD,UAG7B,EAAKktE,MAAM2Z,aAAaD,GACrB3wF,MAAK,WACJ,EAAKu4E,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKzwC,YAAYzqC,aAErDuI,OAAM,SAAA3J,GACL,EAAKgiF,SAAS,CACZ2X,UAAW35F,EAAOyN,QAAQ1D,KAC1B6jF,SAAS,IACR,kBAAM,EAAKiH,uBAtMxB,EA2MEW,cAAgB,SAAA3Q,GACd,EAAK7C,SAAS,CACZuS,WAAW,6BACN,EAAKplF,MAAMolF,YADN,mBAEP1P,EAAEr8D,OAAOuC,KAAO,KAEnBk2C,iBAAiB,6BACZ,EAAK9xD,MAAM8xD,kBADA,mBAEb4jB,EAAEr8D,OAAOuC,KAAO85D,EAAEr8D,OAAO8/C,WAnNlC,EAwNEgyB,aAAe,WACb,EAAKtY,SAAS,CACZuS,WAAW,6BACN,EAAKplF,MAAMolF,YADN,IAER4F,MAAQ,EAAKhrF,MAAM6qF,aAAoB,EAAK7qF,MAAMolF,WAAW4F,MAA3B,KAEpCH,cAAe,EAAK7qF,MAAM6qF,gBA9NhC,EAkOErE,gBAAkB,WAChBlrF,EAAkB,YACfhB,MAAK,SAAAd,GACAA,IAAU,EAAK+3E,MAAM3yE,gBACvB,EAAK2yE,MAAM5yE,gBAAgBnF,GACxBc,MAAK,SAACI,GACL,IAAK,EAAK62E,MAAM1f,kBAAmB,CACjC,IAAM40B,EAAiB/rF,EAAS4D,QAAQ1D,KAAK,eAAe,GAC5D,EAAK22E,MAAMl8B,iBAAiBoxC,EAAgB,mBA1O5D,EAiPE2E,gBAAkB,SAACC,GACjB,EAAKxY,SAAS,CAAEyY,SAAUD,EAAME,iBAlPpC,wDAqPE,WAjQArtF,SAAS2lF,KAAK2H,UAAY,EAC1BttF,SAASutF,gBAAgBD,UAAY,EAkQY,IAA3CvsE,KAAKsyD,MAAMxc,qBAAqB55D,QAClC8jB,KAAKsyD,MAAM2E,0BAEbj3D,KAAKsyD,MAAMsE,uBACX52D,KAAKunE,oBA3PT,oBA8PE,WAAU,IAAD,OACP,EAKIvnE,KAAKsyD,MAJPxc,EADF,EACEA,qBACAlD,EAFF,EAEEA,kBACA8R,EAHF,EAGEA,iBACQjpC,EAJV,EAIEyyC,KAAQzyC,SAGV,EAOIzb,KAAKjf,MANPolF,EADF,EACEA,WACA3G,EAFF,EAEEA,QACAiM,EAHF,EAGEA,oBACA54B,EAJF,EAIEA,iBACA+4B,EALF,EAKEA,aACAC,EANF,EAMEA,eAGF,OACE,oCACGrM,EACC,kBAAC,iBAAD,CAAgBtK,KAAMsK,EAAShD,MAAM,SAErC,kBAAC,GAAD,KACG9X,IAAqBF,IACpB,oCACE,yBAAKp8D,UAAWC,KAAOokF,uBACpBhxD,EAASmB,2BAEZ,0BAAMorD,SAAUhoE,KAAKsmE,cACnB,kBAAC2B,GAAA,EAAD,CACEC,aAAa,aACbhN,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAWxhF,WAC1B0rE,QAAQ,SACR8X,WAAS,EACTC,WAAYjC,EAAWxhF,UACvB4hB,MAAOkV,EAASl1B,cAChBoW,KAAK,YACL0nE,SAAUrkE,KAAKonE,cACfltB,MAAOrH,EAAiBluD,YAE1B,kBAACsjF,GAAA,EAAD,CACEC,aAAa,cACbhN,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAWthF,UAC1BwrE,QAAQ,SACR8X,WAAS,EACTC,WAAYjC,EAAWthF,SACvB0hB,MAAOkV,EAASh1B,aAChBkW,KAAK,WACL0nE,SAAUrkE,KAAKonE,cACfltB,MAAOrH,EAAiBhuD,WAE1B,kBAACojF,GAAA,EAAD,CACEC,aAAa,QACbhN,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAW1hF,OAC1B4rE,QAAQ,SACR8X,WAAS,EACTC,WAAYjC,EAAW1hF,MACvB8hB,MAAOkV,EAAS/mC,UAChBioB,KAAK,QACL0nE,SAAUrkE,KAAKonE,cACfltB,MAAOrH,EAAiBpuD,QAE1B,kBAACwjF,GAAA,EAAD,CACEC,aAAa,WACbhN,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAW/gF,UAC1BirE,QAAQ,SACR8X,WAAS,EACTC,WAAYjC,EAAW/gF,SACvBmhB,MAAOkV,EAAS/lC,aAChBinB,KAAK,WACL0nE,SAAUrkE,KAAKonE,cACfltB,MAAOrH,EAAiBztD,WAG1B,kBAAC,gBAAD,CACE8iF,aAAa,eACbhN,SAAUsE,EACVnP,QAAQ,SACR8X,WAAS,EACTE,UAAWlC,EAAWuF,UACtBnlE,MAAOkV,EAASta,cAChBxE,KAAK,YACL+vE,OAAQ,kBAAM,EAAK9Y,SAAS,CAAE6X,qBAAqB,KACnDpH,SAAUrkE,KAAKonE,cACfuF,QAAS,kBAAM,EAAK/Y,SAAS,CAAE6X,qBAAqB,KACpDvxB,MAAOrH,EAAiB64B,YAG1B,yBAAK7S,MAAO,CAAE2D,MAAO,SACnB,kBAACoQ,GAAA,EAAD,CACEC,GAAI,CACFC,WAAY,OACZC,UAAW,QAEbC,SAAUvB,GAEV,kBAAC,gBAAD,CACEvD,aAAa,eACbhN,SAAUsE,EACVnP,QAAQ,SACR8X,WAAS,EACTE,UAAWlC,EAAWwF,UACtBplE,MAAOkV,EAASra,cAChBzE,KAAK,YACL0nE,SAAUrkE,KAAKonE,cACfltB,MAAOrH,EAAiB84B,YAE1B,yBAAKvjF,UAAWC,KAAOytD,sBACrB,kBAAC,uBAAD,CACE/wD,SAAU8tD,EAAiB64B,UAC3B51B,qBAAsBA,EACtBm3B,gBAAiB,SAAAzB,GAAe,OAAI,EAAK5X,SAAS,CAAE4X,0BAM5D,yBAAKpjF,UAAWC,KAAO6kF,6BACrB,kBAAC1X,GAAA,EAAD,CACEnF,QAAQ,OACRjB,MAAM,UACN78B,QAAS,kBAAM,EAAKqhC,SAAS,CAAEiY,gBAAgB,MAE9CpwD,EAAS2B,iBAEZ,kBAAC,WAAD,CACEgnD,QAASwH,EACT9qF,MAAOqlF,EAAW4F,MAClBxlE,MAAOkV,EAASwB,aAChBonD,SAAUrkE,KAAKksE,aACf9c,MAAM,YAEP+W,EAAW4F,OAAS,kBAACoB,GAAA,EAAD,CAAgBrsF,MAAOwmD,QAAQ6+B,EAAW4F,QAAS5F,EAAW4F,QAGrF,yBAAK3jF,UAAWC,KAAO1W,SACrB,6BACE,kBAAC6jF,GAAA,EAAD,CACE0F,SAAUsE,IAAY5sB,EACtBu1B,WAAS,EACThwF,KAAK,SACLk4E,QAAQ,aAEP50C,EAAS5P,mBAU1B,kBAAC,QAAD,CACEopD,aAAc,kBAAM,EAAKrB,SAAS,CAAEiY,gBAAgB,KACpD3W,KAAM2W,EACN5lE,MAAOwV,EAASza,YAEhB,4BAAKya,EAAS8B,mBAAmB8f,KAAI,SAAA+vC,GAAI,OAAI,wBAAIrX,IAAKqX,GAAOA,OAL/D,UA3ZR,GAA8B5a,IAAMC,WAwarB0C,gBAAYzC,mBAhbZ,SAAC3xE,GAAD,MAAY,CACzB2jE,iBAAkB3jE,EAAM0sE,iBAAiB/I,iBACzC5O,qBAAsB/0D,EAAMksE,OAAOnX,qBACnCn2D,eAAgBoB,EAAMI,QAAQgwD,YAAYxxD,eAC1CizD,kBAAmB7xD,EAAMI,QAAQgwD,YAAYyB,kBAC7CnoD,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,sBA2aH,CACzCkhE,4CACAxgC,oCACA6gC,2BACAgV,alEnYK,SAAsBp5B,GAC3B,IAAMp3D,EAAWC,EAAY,yBAA0Bm3D,GACvD,MAAO,CACL16D,KAAMmF,EACN+B,QAAS5D,IkEgYXiE,oBALyBgzE,CAMxB0C,GAAY35C,M,qBC/cFgC,GAAb,+MAoBE4vD,YAAc,WACZ,MAAoD,EAAK/a,MAAjDzf,EAAR,EAAQA,iBAA0Bp1B,EAAlC,EAA0BywC,KAAQzwC,YAC9Bo1B,EAAiBE,gBAAkBF,EAAiBG,QACtD,EAAKsf,MAAMgb,YAAYz6B,GACpBx3D,MAAK,WACJ,EAAKi3E,MAAMl8B,iBAAiB3Y,EAAYE,iBAAkB,eAzBpE,wDA8BE,WACE,MAAmC3d,KAAKsyD,MAAMzf,iBAAtCE,EAAR,EAAQA,eAAgBC,EAAxB,EAAwBA,OACnBD,GAAmBC,GACtBhzC,KAAKsyD,MAAM+C,QAAQz/B,KAAK51B,KAAKsyD,MAAMpE,KAAKnwD,KAAK/qB,YAjCnD,oBAqCE,WACE,MAAiDgtB,KAAKsyD,MAA9C7nE,EAAR,EAAQA,cAAuBgzB,EAA/B,EAAuBywC,KAAQzwC,YAC/B,OACE,yBAAKr1B,UAAWC,KAAOitE,WACrB,kBAAC,GAAD,KACE,wBAAIltE,UAAWC,KAAOklF,QAAS9vD,EAAYC,oBAC3C,uBAAGt1B,UAAWC,KAAOmlF,UAAW/vD,EAAYG,kBAC5C,yBAAKx1B,UAAWC,KAAOozE,QACrB,kBAACjG,GAAA,EAAD,CACE2S,WAAS,EACT51C,QAASvyB,KAAKqtE,YACdhd,QAAQ,aAEP5yC,EAAY9kB,mBAGjB,uBAAGvQ,UAAWC,KAAOolF,aAAchwD,EAAYI,mBAAmBpzB,UArD5E,GAAiC+nE,IAAMC,WA6DxBC,sBAnEA,SAAC3xE,GAAD,MAAY,CACzB8xD,iBAAkB9xD,EAAMI,QAAQ0xD,iBAChCpoD,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,sBAiEf,CAC7B0gC,oCACAk3C,YnE0BK,SAAqBz6B,GAE1B,MAAO,CACL16D,KDzFqC,yDC0FrCkH,QAHe3D,EAAY,wCAAyCm3D,MmE7BzD6f,CAGZ0C,GAAY33C,K,8CC1DF9lC,GAAb,+MAwBEoJ,MAAQ,CACNy+E,SAAS,EACTz6E,SAAU,GACV2oF,qBAAsB,GACtBvH,WAAY,GACZoF,UAAW,GACXoC,0BAA0B,GA9B9B,EAyEErH,aAAe,SAAC7P,GAEd,GADAA,EAAE4P,iBACE,EAAKI,eAAgB,CACvBxnF,SAASC,eAAe,YAAYwnF,OACpCznF,SAASC,eAAe,mBAAmBwnF,OAE3C,IAAMkH,EAAW,CACf19C,GAAI29C,KAAGnjF,MAAM,EAAK4nE,MAAM91E,SAASsxF,OAAQ,CAAEC,mBAAmB,IAAQC,QACtEtC,UAAW,EAAK3qF,MAAMgE,SACtB4mF,UAAW,EAAK5qF,MAAM2sF,sBAGxB,EAAK9Z,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAM2b,cAAcL,GACtBvyF,MAAK,WACJ,EAAKi3E,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAK34E,MAAMvC,UAC9C,EAAKs/E,MAAMl8B,iBAAiB,EAAKk8B,MAAMpE,KAAKv2E,cAAcG,qBAAsB,cAEjFyD,OAAM,SAAAE,GAAQ,OAAI,EAAKm4E,SAAS,CAC/B2X,UAAW9vF,EAAS4D,QAAQ1D,KAC5B6jF,SAAS,IACR,kBAAM,EAAKiH,uBA9FtB,EAkGEW,cAAgB,SAACC,EAAWntB,GAAW,IAAD,EACpC,EAAK0Z,UAAL,oBACGyT,EAAYntB,GADf,yDAGO,EAAKn5D,MAAMolF,YAHlB,mBAIKkB,EAAY,MAJjB,KAnGJ,mDAiCE,WACE,IAAMlB,EAAa,GACnB,EAAoGnmE,KAAKsyD,MAAMpE,KAAKv2E,cAA5Gb,EAAR,EAAQA,qBAAsBD,EAA9B,EAA8BA,sBAAuBe,EAArD,EAAqDA,mBAAoBC,EAAzE,EAAyEA,sBACjE0zF,EAAcvrE,KAAKjf,MAAnBwqF,UAkCR,OAhCKvrE,KAAKjf,MAAMgE,WACdohF,EAAWphF,SAAWlN,GAGnBmoB,KAAKjf,MAAM2sF,uBACdvH,EAAWuH,qBAAuB52F,GAGhCkpB,KAAKjf,MAAM2sF,sBAAwB1tE,KAAKjf,MAAMgE,WAAaib,KAAKjf,MAAM2sF,uBACxEvH,EAAWuH,qBAAuB91F,GAEhCooB,KAAKjf,MAAMgE,WAAaib,KAAKjf,MAAM4sF,2BACrCxH,EAAWphF,SAAWlO,GAGpB00F,EAAUrvF,OAAS,GAErBqvF,EAAU11C,SAAQ,SAAA/0C,GACI,cAAhBA,EAAMm1C,MACRkwC,EAAWphF,SAAWjE,EAAMk1C,QAEL,cAAhBl1C,EAAMm1C,QACbkwC,EAAWuH,qBAAuB5sF,EAAMk1C,YAK9Ch2B,KAAK4zD,SAAS,CACZuS,aACAoF,UAAW,KAG6B,IAAnChsC,OAAOC,KAAK2mC,GAAYjqF,SAtEnC,+BA4GE,WAAqB,IAAD,OAC6B,IAA3C8jB,KAAKsyD,MAAMxc,qBAAqB55D,SAClC8jB,KAAK4zD,SAAS,CAAE4L,SAAS,IACsB,IAA3Cx/D,KAAKsyD,MAAMxc,qBAAqB55D,QAClC8jB,KAAKsyD,MAAM2E,0BACRZ,SAAQ,kBAAM,EAAKzC,SAAS,CAAE4L,SAAS,UAjHlD,oBAsHE,WAAU,IAAD,OACP,EAA8Ex/D,KAAKsyD,MAAMpE,KAAKv2E,cAAtF9C,EAAR,EAAQA,WAAYlC,EAApB,EAAoBA,WAAYqF,EAAhC,EAAgCA,sBAAuBD,EAAvD,EAAuDA,kBAEvD,OACE,kBAAC,GAAD,CAAakuB,MAAOtzB,GAClB,kBAAC,iBAAD,CACEuiF,KAAMl1D,KAAKjf,MAAMy+E,QACjBhD,MAAM,QAEN,0BACEp0E,UAAU,gBACV4/E,SAAUhoE,KAAKsmE,cAEf,kBAAC,gBAAD,CACEp2C,GAAG,WACHm0C,SAAU,SAAC5N,GAAD,OAAO,EAAK2Q,cAAc,WAAY3Q,EAAEr8D,OAAO8/C,QACzD3zC,MAAOxuB,EACPswF,UAAWroE,KAAKjf,MAAMolF,WAAWphF,SACjCojF,WAAS,EACTjN,SAAUl7D,KAAKjf,MAAMy+E,QACrB0I,aAAa,eACb7X,QAAQ,WAEV,kBAAC,gBAAD,CACEngC,GAAG,kBACHm0C,SAAU,SAAC5N,GAAD,OAAO,EAAK2Q,cAAc,uBAAwB3Q,EAAEr8D,OAAO8/C,QACrE3zC,MAAOvuB,EACPqwF,UAAWroE,KAAKjf,MAAMolF,WAAWuH,qBACjCvF,WAAS,EACTjN,SAAUl7D,KAAKjf,MAAMy+E,QACrB0I,aAAa,eACb7X,QAAQ,WAEV,yBAAKjoE,UAAWC,KAAO6lF,YACrB,kBAAC,uBAAD,CACEp4B,qBAAsB91C,KAAKsyD,MAAMxc,qBACjC/wD,SAAUib,KAAKjf,MAAMgE,SACrBkoF,gBAAiB,SAAA36B,GAAO,OAAI,EAAKshB,SAAS,CAAE+Z,yBAA0Br7B,QAG1E,yBAAKlqD,UAAWC,KAAO1W,SACrB,kBAAC6jF,GAAA,EAAD,CACEnF,QAAQ,OACRjB,MAAM,UACNyJ,MAAO,CAAE2D,MAAO,OAChBjqC,QAAS,kBAAM,EAAK+/B,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAK34E,MAAMvC,WAC7DkoF,SAAUl7D,KAAKjf,MAAMy+E,SALvB,UASA,kBAAChK,GAAA,EAAD,CACEr9E,KAAK,SACLk4E,QAAQ,YACR6K,SAAUl7D,KAAKjf,MAAMy+E,QACrB3G,MAAO,CAAE2D,MAAO,QAEf3nF,WA9KjB,GAAmC49E,aAwLpB0C,gBAAWzC,mBA5LX,SAAC3xE,GAAD,MAAY,CACzB+0D,qBAAsB/0D,EAAMksE,OAAOnX,wBA2LK,CACxCm4B,cCjNK,SAAuBlvF,GAE5B,MAAO,CACL5G,KCP0B,mDDQ1BkH,QAHe3D,EAAY,gCAAiCqD,KDiN9Dk4E,2BACA7gC,qCAHwBs8B,CAIvB0C,GAAYz9E,M,yBGrMF4B,GAAb,+MAcEwH,MAAQ,CACNotF,YAAY,GAfhB,wDAkBE,WAAqB,IAAD,OAClB,EAAiCnuE,KAAKsyD,MAAMpE,KAApC30E,EAAR,EAAQA,cAAehE,EAAvB,EAAuBA,MACjB64F,EAAc,IAAIC,gBAAgB50F,OAAO+C,SAASsxF,OAAO1+B,eAAeh0D,IAAI,WAC7EgzF,GAIH5a,YAAW,WACT,EAAKI,SAAS,CAAEua,YAAY,MAC3B,KAEHnuE,KAAKsyD,MAAMgc,cAAcF,GACtB/yF,MAAK,WACJ,EAAKi3E,MAAMl8B,iBAAiB78C,EAAco6C,oBAAqB,WAC/D,EAAK2+B,MAAM+C,QAAQz/B,KAAKrgD,EAAMvC,aAE/BuI,OAAM,WACL,EAAK+2E,MAAM+C,QAAQz/B,KAAKrgD,EAAMvC,cAblCgtB,KAAKsyD,MAAM+C,QAAQz/B,KAAKrgD,EAAMvC,UAiBhCgtB,KAAKsyD,MAAMsE,yBAvCf,oBAyCE,WACE,OACE52D,KAAKjf,MAAMotF,YACT,yBAAK/lF,UAAWC,KAAOitE,WACrB,yBAAKltE,UAAWC,KAAOkmF,kBACrB,wBAAInmF,UAAWC,KAAOk8B,QAASwxC,IAAI,KAAnC,uBADF,IAEE,kBAAC,iBAAD,CAAgBA,IAAI,IAAIb,KAAMl1D,KAAKjf,MAAMotF,WAAYK,gBAAgB,OAAOhS,MAAM,OAAOtD,OAAO,eA/C5G,GAAmC1G,IAAMC,WAwD1B0C,gBAAWzC,kBAAQ,KAAM,CACtCkE,4CACAxgC,oCACAk4C,cCtEK,SAAuB/nB,GAG5B,MAAO,CACLpuE,KCP0B,8DDQ1BkH,QAJe3D,EAAY,gCAAiC,CAAEw0C,GAAIq2B,ODkE5CmM,CAIvB0C,GAAY77E,M,yBG9CFpE,GAAb,+MA2BE4L,MAAQ,CACNy+E,SAAS,EACTz2B,aAAa,EACb0lC,gBAAgB,EAChBhqF,MAAO,GACP0hF,WAAY,IAhChB,EAmCEuI,YAAc,SAAA/xE,GAAI,OAAI,SAAA85D,GACpB,IAAMkY,EAAMlY,EAAEr8D,OAAO8/C,MACrB,GAAIy0B,EAAK,CAAC,IAAD,EACDvG,EAAa,EAAK9V,MAAMpE,KAAK/4E,eAAeT,UAClD,EAAKk/E,UAAL,oBACGj3D,EAAOgyE,GADV,4BAEEvG,GAFF,4BAGc,IAHd,SAOA,EAAKxU,SAAL,gBAAiBj3D,EAAOgyE,MA9C9B,EAkDEC,UAAY,SAAAnY,GACVA,EAAE4P,iBACF,IAAQ5hF,EAAU,EAAK1D,MAAf0D,MACFqnF,EAAaV,GAAe3mF,GAClC,GAAIqnF,EAAY,CACd,IAAM3F,EAAatpC,qBAAU,EAAK97C,MAAMolF,YACxCA,EAAW1hF,MAAQqnF,EACnB,EAAKlY,SAAS,CAAEuS,oBAGhB,EAAKvS,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMuc,aAAa,CAAE/7B,aAAcruD,IACrCpJ,MAAK,WACJ,EAAKu4E,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMl8B,iBAAiB,EAAKk8B,MAAMpE,KAAK/4E,eAAe0kB,sBAAuB,eAhE5F,EAqEE0tE,gBAAkB,WAChBlrF,EAAkB,kBACfhB,MAAK,SAAAd,GACAA,IAAU,EAAK+3E,MAAM3yE,gBACvB,EAAK2yE,MAAM5yE,gBAAgBnF,GACxBc,MAAK,SAACI,GACL,IAAK,EAAK62E,MAAM1f,kBAAmB,CACjC,IAAM40B,EAAiB/rF,EAAS4D,QAAQ1D,KAAK,eAAe,GAC5D,EAAKi4E,SAAS,CAAE7qB,aAAa,IAC7B,EAAKupB,MAAMl8B,iBAAiBoxC,EAAgB,mBA9E5D,wDAqFE,WACExnE,KAAKunE,oBAtFT,oBAyFE,WAAU,IAAD,OACSpyF,EAAqB6qB,KAAKsyD,MAAlCpE,KAAQ/4E,eAChB,EAAoD6qB,KAAKjf,MAAjDy+E,EAAR,EAAQA,QAASz2B,EAAjB,EAAiBA,YAAao9B,EAA9B,EAA8BA,WAAY1hF,EAA1C,EAA0CA,MACpC2jF,EAAajC,EAAW1hF,MAAQ0hF,EAAW1hF,MAAQ,GACzD,OACE,kBAAC,IAAMotB,SAAP,KACE,kBAAC,GAAD,CAAa5L,MAAO9wB,EAAezB,WACjC,kBAAC,iBAAD,CACEwhF,KAAMsK,EACNhD,MAAM,QAEN,2BAAIrnF,EAAeykB,YAAYoG,KAAKsyD,MAAM7nE,gBAC1C,0BAAMu9E,SAAUhoE,KAAK4uE,WACnB,kBAAC3G,GAAA,EAAD,CACE/tB,MAAOz1D,EACP8hB,MAAOpxB,EAAeT,UACtByzF,WAAS,EACTc,WAAS,EACT/N,SAAUsE,EACV6E,SAAUrkE,KAAK0uE,YAAY,SAC3B5tF,MAAOwmD,QAAQ6+B,EAAW1hF,OAC1B2jF,WAAYA,EACZ/X,QAAQ,WAEV,yBAAKjoE,UAAWC,KAAO1W,SACrB,kBAAC6jF,GAAA,EAAD,CACEnF,QAAQ,OACRjB,MAAM,UACNyJ,MAAO,CAAE2D,MAAO,OAChBjqC,QAAS,kBAAM,EAAK+/B,MAAM+C,QAAQ6T,UAClChO,SAAUsE,GAETrqF,EAAeP,YAElB,kBAAC4gF,GAAA,EAAD,CACEr9E,KAAK,SACLk4E,QAAQ,YACR6K,SAAUsE,GAAWz2B,EACrBo/B,WAAS,GAERhzF,EAAeN,gBAO1B,yBAAKuT,UAAWC,KAAOwgF,WAAvB,IACE,2BAAIn+E,KAAMvV,EAAeskB,+BAzInC,GAAoCg5D,aAgJrB0C,gBAAWzC,mBAtJX,SAAC3xE,GAAD,MAAY,CACzBpB,eAAgBoB,EAAMI,QAAQgwD,YAAYxxD,eAC1CizD,kBAAmB7xD,EAAMI,QAAQgwD,YAAYyB,kBAC7CnoD,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,sBAmJJ,CACxC0gC,oCACAy4C,aC7KK,SAAsB/7B,GAC3B,IAAMr3D,EAAWC,EAAY,iCAAkCo3D,GAC/D,MAAO,CACL36D,KAAM4rE,GACN1kE,QAAS5D,ID0KXiE,oBAHwBgzE,CAIvB0C,GAAYjgF,MErIF8oC,GAAb,+MA0CEl9B,MAAQ,CACNy+E,SAAS,EACTsP,UAAW,EACXzqB,qBAAsB,GACtBhiB,UAAW,GACXgZ,SAAU,GACVvI,aAAc,GACdwR,YAAa,GACbC,YAAa,GACbwqB,iBAAiB,EACjBC,uBAAuB,EACvBC,eAAe,EACflmC,aAAa,EACbo9B,WAAY/hB,IAvDhB,EA0DEsqB,YAAc,SAAA/xE,GAAI,OAAI,SAAA85D,GAAM,IAAD,EACjB0P,EAAetpC,qBAAU,EAAK97C,OAA9BolF,WACRA,EAAWxpE,GAAQ,GACnB,EAAKi3D,UAAL,oBAAiBj3D,EAAO85D,EAAEr8D,OAAO8/C,OAAjC,4BAAwCisB,GAAxC,MA7DJ,EAgEE+I,mBAAqB,SAAAzY,GAAM,IAAD,EAChB0P,EAAetpC,qBAAU,EAAK97C,OAA9BolF,WACRA,EAAW1P,EAAEr8D,OAAOuC,MAAQ,GAC5B,EAAKi3D,UAAL,oBAAiB6C,EAAEr8D,OAAOuC,KAAO85D,EAAEr8D,OAAO8/C,OAA1C,4BAAiDisB,GAAjD,KAnEJ,EAsEEgJ,cAAgB,SAAA1Y,GACdA,EAAE4P,iBACF,MAAwD,EAAKtlF,MAArDsjE,EAAR,EAAQA,qBAAsBhiB,EAA9B,EAA8BA,UAAW8jC,EAAzC,EAAyCA,WACzC,EAAoE,EAAK7T,MAAjEhd,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,uBAAgCt3B,EAApD,EAA4CiwC,KAAQjwC,UAIpD,GAHAkoD,EAAW9hB,qBAAuB+qB,GAAqC/qB,GACvE8hB,EAAW9jC,UAAY+sC,GAAyC/sC,EAAWkT,EAAwBD,GAE/F/V,OAAOuX,OAAOqvB,GAAY53B,MAAK,SAAAztD,GAAK,MAAc,KAAVA,KAC1C,EAAK8yE,SAAS,CAAEuS,mBAEb,CACH,IAAMpnF,EAAS,CACbslE,uBACAhiB,UAAW7D,KAAM6D,GAAW5D,OAAO,eAErC,EAAKm1B,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAM+c,YAAYtwF,GACpB1D,MAAK,WACJ,EAAKu4E,SAAS,CAAE4L,SAAS,IACzB,IAAQrgC,EAAU,EAAKmzB,MAAfnzB,MACJmwC,mBAAQnwC,IACV,EAAKy0B,SAAS,CAAEvP,qBAAsB,GAAIhiB,UAAW,KACrD,EAAKiwB,MAAMl8B,iBAAiBnY,EAAUG,oBAAqB,UAGpC,IAAnB+gB,EAAMowC,SACJpwC,EAAM2T,aACR,EAAK8gB,SAAS,CAAEkb,UAAW,EAAGh8B,aAAc3T,EAAM2T,eAGlD,EAAK8gB,SAAS,CAAEkb,UAAW,EAAGG,eAAe,IAI/C,EAAK3c,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAK/4E,eAAenC,eAxGrE,EA+GEw8F,YAAc,SAAA/Y,GACZA,EAAE4P,iBACF,MAA0GxpC,qBAAU,EAAK97C,OAAjHs6D,EAAR,EAAQA,SAAUgJ,EAAlB,EAAkBA,qBAAsBhiB,EAAxC,EAAwCA,UAAWyQ,EAAnD,EAAmDA,aAAcwR,EAAjE,EAAiEA,YAAaC,EAA9E,EAA8EA,YAAa4hB,EAA3F,EAA2FA,WAC3EloD,EAAgB,EAAKq0C,MAA7BpE,KAAQjwC,UAShB,GARAkoD,EAAW9qB,SAAW+zB,GAA4B/zB,GAClD8qB,EAAWrzB,aAAes8B,GAAyBt8B,GACnDqzB,EAAW7hB,YAA8B,KAAhBA,EAAqBrmC,EAAU/pC,aAAe,GACvEiyF,EAAW5hB,YAA8B,KAAhBA,EACrBD,IAAgBC,EACdtmC,EAAUrmC,mBACV,GACFqmC,EAAU/pC,aACVqrD,OAAOuX,OAAOqvB,GAAY53B,MAAK,SAAAztD,GAAK,MAAc,KAAVA,KAC1C,EAAK8yE,SAAS,CAAEuS,mBAEb,CACH,IAAMpnF,EAAS,CACbs8D,WACAvI,eACAwR,cACAC,cACAF,uBACAhiB,UAAW7D,KAAM6D,GAAW5D,OAAO,eAErC,EAAKm1B,SAAS,CAAE4L,SAAS,IACzB,EAAKlN,MAAMmd,YAAY1wF,GACpB1D,MAAK,WACJ,EAAKi3E,MAAMod,iBAAiB,EAAKpd,MAAM7N,cACvC,EAAK6N,MAAM+C,QAAQz/B,KAAK,EAAK08B,MAAMpE,KAAKzwC,YAAYzqC,aAErDuI,OAAM,SAAA3J,GACL,IAAM25F,EAAY35F,EAAOyN,QAAQ1D,KAC7B2zD,MAAMC,QAAQg8B,IAChBA,EAAU11C,SAAQ,SAAA85C,GACZpwC,OAAOC,KAAK2mC,GAAY53B,MAAK,SAAAqhC,GAAS,OAAIA,IAAcD,EAAS15C,WACnEkwC,EAAWwJ,EAAS15C,OAAS05C,EAAS35C,YAG1C,EAAK49B,SAAS,CAAE4L,SAAS,EAAO2G,iBAGhC,EAAK7T,MAAMl8B,iBAAiBm1C,EAAW,SACvC,EAAK3X,SAAS,CAAE4L,SAAS,EAAO2G,WAAY/hB,WAzJxD,EA+JEmjB,gBAAkB,WAChBlrF,EAAkB,oBACfhB,MAAK,SAAAd,GACAA,IAAU,EAAK+3E,MAAM3yE,gBACvB,EAAK2yE,MAAM5yE,gBAAgBnF,GACxBc,MAAK,SAACI,GACL,IAAK,EAAK62E,MAAM1f,kBAAmB,CACjC,IAAM40B,EAAiB/rF,EAAS4D,QAAQ1D,KAAK,eAAe,GAC5D,EAAKi4E,SAAS,CAAE7qB,aAAa,IAC7B,EAAKupB,MAAMl8B,iBAAiBoxC,EAAgB,mBAxK5D,wDA+KE,WAAqB,IAAD,OAC6B,IAA3CxnE,KAAKsyD,MAAMxc,qBAAqB55D,SAClC8jB,KAAK4zD,SAAS,CAAE4L,SAAS,IACzBx/D,KAAKsyD,MAAM2E,0BACR57E,MAAK,kBAAM,EAAKu4E,SAAS,CAAE4L,SAAS,OACpCjkF,OAAM,kBAAM,EAAKq4E,SAAS,CAAE4L,SAAS,QAE1Cx/D,KAAKunE,oBAtLT,oBAyLE,WAAU,IAAD,OACP,EAGIvnE,KAAKsyD,MAFPhd,EADF,EACEA,WAAYC,EADd,EACcA,uBACJt3B,EAFV,EAEEiwC,KAAQjwC,UAAa63B,EAFvB,EAEuBA,qBAGvB,EAGI91C,KAAKjf,MAFPy+E,EADF,EACEA,QAAS2G,EADX,EACWA,WAAY9hB,EADvB,EACuBA,qBAAsBhiB,EAD7C,EAC6CA,UAAWgZ,EADxD,EACwDA,SAAUvI,EADlE,EACkEA,aAAcm8B,EADhF,EACgFA,cAC9E3qB,EAFF,EAEEA,YAAaC,EAFf,EAEeA,YAAayqB,EAF5B,EAE4BA,sBAAuBjmC,EAFnD,EAEmDA,YAAa+lC,EAFhE,EAEgEA,UAGhE,OACE,oCACGtP,EACC,kBAAC,iBAAD,CAAgBtK,KAAMsK,EAAShD,MAAM,SAErC,kBAAC,GAAD,KACiB,IAAdsS,GAEC,0BACE5+C,GAAG,WACH83C,SAAUhoE,KAAKmvE,eAEf,kBAAC,WAAD,CACEjU,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAW9hB,sBAC1BgkB,UAAWlC,EAAW9hB,qBACtB8jB,WAAS,EACT5hE,MAAK,UAAK0X,EAAUtlC,QAAf,OACL0rF,SAAU,gBAAGnqB,EAAH,EAAGA,MAAH,OAAe,EAAKg1B,mBAAmB,CAAE90E,OAAQ,CAAEuC,KAAM,uBAAwBu9C,YAC3FA,MAAOmK,EACPgM,QAAQ,WAEV,kBAAC,aAAD,CACEvvE,MAAOwmD,QAAQ6+B,EAAW9jC,WAC1B8lC,WAAS,EACTC,WAAYjC,EAAW9jC,UACvBguB,QAAQ,SACR0F,IAAI,YACJxvD,MAAK,UAAK0X,EAAUC,QAAf,MACL17B,QAASg8C,OAAQosC,SAASr1B,EAAwB,QAClDhzD,QAASi8C,OAAQosC,SAASt1B,EAAY,QACtC+uB,SAAU,SAAA5N,GAAC,OAAI,EAAKyY,mBAAmB,CAAE90E,OAAQ,CAAEuC,KAAM,YAAau9C,MAAOuc,EAAIA,EAAEoZ,SAAWpZ,MAC9FqZ,OAAO,OACP51B,MAAO7X,GAAa,KACpB64B,SAAUsE,IAEZ,kBAAChK,GAAA,EAAD,CACEtlC,GAAG,eACHmgC,QAAQ,YACRjB,MAAM,UACNyJ,MAAO,CAAE4Q,UAAW,QACpBtxF,KAAK,SACL+iF,SAAUsE,GAAWz2B,EACrBo/B,WAAS,GAERlqD,EAAUl4B,eAMF,IAAd+oF,GACC,0BACE5+C,GAAG,SACH83C,SAAUhoE,KAAKwvE,aAEf,kBAACvH,GAAA,EAAD,CACE/M,SAAUsE,EACV1+E,MAAOwmD,QAAQ6+B,EAAW9qB,UAC1B8sB,WAAS,EACTC,WAAYjC,EAAW9qB,SACvB90C,MAAK,UAAK0X,EAAUvoC,aAAf,MACL2uF,SAAUrkE,KAAK0uE,YAAY,YAC3Bx0B,MAAOmB,EACPgV,QAAQ,WAEV,kBAAC4X,GAAA,EAAD,CACEnnF,MAAOwmD,QAAQ6+B,EAAWrzB,cAC1Bq1B,WAAS,EACTC,WAAYjC,EAAWrzB,aACvB5iB,GAAG,eACH3pB,MAAK,UAAK0X,EAAUvpC,UAAf,MACLioB,KAAK,eACL0nE,SAAUrkE,KAAK0uE,YAAY,gBAC3Bx0B,MAAOpH,EACPooB,SAAU+T,EACV5e,QAAQ,WAEV,kBAAC,gBAAD,CACE8X,WAAS,EACTE,UAAWlC,EAAW7hB,YACtB/9C,MAAK,UAAK0X,EAAUxoC,aAAf,MACLknB,KAAK,cACLgwE,QAAS,kBAAM,EAAK/Y,SAAS,CAAEob,uBAAuB,KACtDtC,OAAQ,kBAAM,EAAK9Y,SAAS,CAAEob,uBAAuB,KACrD3K,SAAUrkE,KAAK0uE,YAAY,eAC3Bx0B,MAAOoK,EACP+L,QAAQ,WAEV,kBAACuc,GAAA,EAAD,CACEC,GAAI,CACFE,UAAW,QAEbC,SAAUgC,GAEV,kBAAC,gBAAD,CACEnW,MAAO,CAAE6Q,aAAc,QACvBvB,WAAS,EACTE,UAAWlC,EAAW5hB,YACtBh+C,MAAK,UAAK0X,EAAUE,oBAAf,MACLxhB,KAAK,cACL0nE,SAAUrkE,KAAK0uE,YAAY,eAC3Bx0B,MAAOqK,EACP8L,QAAQ,WAEV,kBAAC,uBAAD,CACEtrE,SAAUu/D,EACVxO,qBAAsBA,EACtBm3B,gBAAiB,SAAC8B,GAAD,OAAqB,EAAKnb,SAAS,CAAEmb,wBAG1D,kBAACvZ,GAAA,EAAD,CACEtlC,GAAG,aACHmgC,QAAQ,YACRjB,MAAM,UACNyJ,MAAO,CAAE4Q,UAAW,QACpBtxF,KAAK,SACL+iF,SAAUsE,EACV2I,WAAS,GAERlqD,EAAUzd,mBA5T7B,GAA+BiyD,aAsUhB0C,gBAAYzC,mBAlVZ,SAAC3xE,GAAD,MAAY,CACzBu0D,WAAYv0D,EAAMksE,OAAO/X,gBAAgBI,WACzCC,uBAAwBx0D,EAAMksE,OAAO/X,gBAAgBK,uBACrDO,qBAAsB/0D,EAAMksE,OAAOnX,qBACnC3W,MAAOp+C,EAAM0sE,iBAAiBtuB,MAC9BslB,aAAc1jE,EAAM0sE,iBAAiBhJ,aACrCh6D,cAAe1J,EAAMksE,OAAO/X,gBAAgBx/C,mBAC5C/V,eAAgBoB,EAAMI,QAAQgwD,YAAYxxD,eAC1CizD,kBAAmB7xD,EAAMI,QAAQgwD,YAAYyB,kBAC7CiC,UAAW9zD,EAAMksE,OAAOpY,aAyUiB,CACzCze,oCACA6gC,2BACAoY,YZjXK,SAAqBtwF,GAC1B,IAAMM,EAAU3D,EAAY,gCAAiCqD,GAC7D,MAAO,CACL5G,KAAM8rE,GACN5kE,YY8WFowF,YZ1WK,SAAqB1wF,GAC1B,IAAMM,EAAU3D,EAAY,6BAA8BqD,GAC1D,MAAO,CACL5G,KAAM+rE,GACN7kE,YYuWFqwF,iB5EnRK,SAA0B78B,GAC/B,MAAO,CACL16D,KAAMoF,EACNkC,KAAMozD,I4EiRRnzD,oBANyBgzE,CAOxB0C,GAAYn3C,MC1WT8xD,GAAa,SAACzpB,EAAiBC,GACnC,MAAO,CACLwB,wBAAyBxB,EACzB/F,eAAgB8F,EAAgBL,IAAiBthE,UACjDi8D,gBAAiB0F,EAAgBL,IAAiBnhE,WAClD67D,cAAe2F,EAAgBL,IAAiBphE,SAChDy7D,eAAgBgG,EAAgBL,IAAiB7jB,UACjD4lB,SAAU1B,EAAgBL,IAAiB/gE,IAC3Cw7D,gBAAiB4F,EAAgBL,IAAiBO,YAClDyB,qBAAsB3B,EAAgBL,IAAiBC,IAAuBvZ,QAC9Eub,qBAAsB5B,EAAgBL,IAAiBC,IAAuBtZ,QAC9E+U,iBAAkB2E,EAAgBL,IAAiBC,IAAuBrZ,KAC1EgV,kBAAmByE,EAAgBL,IAAiBC,IAAuBnlE,MAC3EonE,oBAAqB7B,EAAgBL,IAAiBC,IAAuBO,QAC7E2B,sBAAuB9B,EAAgBL,IAAiBC,IAAwBvZ,QAChF0b,sBAAuB/B,EAAgBL,IAAiBC,IAAwBtZ,QAChFoV,kBAAmBsE,EAAgBL,IAAiBC,IAAwBrZ,KAC5EqV,mBAAoBoE,EAAgBL,IAAiBC,IAAwBnlE,MAC7EunE,qBAAsBhC,EAAgBL,IAAiBC,IAAwBO,QAC/ElG,WAAY+F,EAAgBL,IAAiBp9C,QAAQpkB,MACrDg8D,eAAgB6F,EAAgBL,IAAiBp9C,QAAQjkB,UACzD2jE,eAAgBjC,EAAgBL,IAAiBp9C,QAAQ69C,UACzD8B,gBAAiBlC,EAAgBL,IAAiBp9C,QAAQ89C,WAC1D8B,aAAcnC,EAAgBL,IAAiBp9C,QAAQ+9C,aACvDjH,qBAAsB2G,EAAgBL,IAAmBthE,UACzDo7D,sBAAuBuG,EAAgBL,IAAmBnhE,WAC1D+6D,oBAAqByG,EAAgBL,IAAmBphE,SACxD46D,qBAAsB6G,EAAgBL,IAAmB7jB,UACzDsmB,eAAgBpC,EAAgBL,IAAmB/gE,IACnD06D,sBAAuB0G,EAAgBL,IAAmBO,YAC1DmC,2BAA4BrC,EAAgBL,IAAmBC,IAAuBvZ,QACtFic,2BAA4BtC,EAAgBL,IAAmBC,IAAuBtZ,QACtF0V,uBAAwBgE,EAAgBL,IAAmBC,IAAuBrZ,KAClF2V,wBAAyB8D,EAAgBL,IAAmBC,IAAuBnlE,MACnF8nE,0BAA2BvC,EAAgBL,IAAmBC,IAAuBO,QACrFqC,4BAA6BxC,EAAgBL,IAAmBC,IAAwBvZ,QACxFoc,4BAA6BzC,EAAgBL,IAAmBC,IAAwBtZ,QACxF+V,wBAAyB2D,EAAgBL,IAAmBC,IAAwBrZ,KACpFgW,yBAA0ByD,EAAgBL,IAAmBC,IAAwBnlE,MACrFioE,2BAA4B1C,EAAgBL,IAAmBC,IAAwBO,QACvFwC,mBAAoB3C,EAAgBL,IAAgCthE,UACpEukE,oBAAqB5C,EAAgBL,IAAgCnhE,WACrEqkE,kBAAmB7C,EAAgBL,IAAgCphE,SACnEukE,mBAAoB9C,EAAgBL,IAAgC7jB,UACpEinB,aAAc/C,EAAgBL,IAAgC/gE,IAC9DqkE,yBAA0BjD,EAAgBL,IAAgCC,IAAuBvZ,QACjG6c,yBAA0BlD,EAAgBL,IAAgCC,IAAuBtZ,QACjG6c,qBAAsBnD,EAAgBL,IAAgCC,IAAuBrZ,KAC7F6c,sBAAuBpD,EAAgBL,IAAgCC,IAAuBnlE,MAC9F4oE,wBAAyBrD,EAAgBL,IAAgCC,IAAuBO,QAChGmD,0BAA2BtD,EAAgBL,IAAgCC,IAAwBvZ,QACnGkd,0BAA2BvD,EAAgBL,IAAgCC,IAAwBtZ,QACnGkd,sBAAuBxD,EAAgBL,IAAgCC,IAAwBrZ,KAC/Fkd,uBAAwBzD,EAAgBL,IAAgCC,IAAwBnlE,MAChGipE,yBAA0B1D,EAAgBL,IAAgCC,IAAwBO,QAClGwD,oBAAqB3D,EAAgBL,IAAkCthE,UACvEulE,qBAAsB5D,EAAgBL,IAAkCnhE,WACxEqlE,mBAAoB7D,EAAgBL,IAAkCphE,SACtEulE,oBAAqB9D,EAAgBL,IAAkC7jB,UACvEioB,cAAe/D,EAAgBL,IAAkC/gE,IACjEqlE,0BAA2BjE,EAAgBL,IAAkCC,IAAuBvZ,QACpG6d,0BAA2BlE,EAAgBL,IAAkCC,IAAuBtZ,QACpG6d,sBAAuBnE,EAAgBL,IAAkCC,IAAuBrZ,KAChG6d,uBAAwBpE,EAAgBL,IAAkCC,IAAuBnlE,MACjG4pE,yBAA0BrE,EAAgBL,IAAkCC,IAAuBO,QACnGmE,2BAA4BtE,EAAgBL,IAAkCC,IAAwBvZ,QACtGke,2BAA4BvE,EAAgBL,IAAkCC,IAAwBtZ,QACtGke,uBAAwBxE,EAAgBL,IAAkCC,IAAwBrZ,KAClGke,wBAAyBzE,EAAgBL,IAAkCC,IAAwBnlE,MACnGiqE,0BAA2B1E,EAAgBL,IAAkCC,IAAwBO,QACrGwE,KAAM3E,EAAgB0pB,eAAenpB,gBACrCqE,gBAAiB5E,EAAgB0pB,eAAe73F,KAChDyxD,WAAY0c,EAAgB0pB,eAAe91C,OAC3CixB,SAAU7E,EAAgB0pB,eAAelpB,SACzCsE,kBAAmB9E,EAAgB0pB,eAAejpB,WAClDsE,oBAAqB/E,EAAgB0pB,eAAehpB,aACpDxqB,OAAQ8pB,EAAgB0pB,eAAer6C,OACvC21B,SAAUhF,EAAgB2pB,SAC1B1kB,SAAUjF,EAAgB4pB,eAoBvB,SAASC,GAAe5pB,GAC7B,IAAMlnE,EAAUpE,EAAW,gBAAD,OAAiBsrE,GAAQ,CAAE3rE,QAAS,CAAE,oBAAqBw1F,QACrF,MAAO,CACLj4F,KAAM2tE,GACNzmE,WAsCJ,IAAM+wF,GAAqB,WACzB,IAAI/K,EAAS,GAEPgL,EADUpxF,SAASomF,OAAOrzB,MAAM,KACNjN,MAAK,SAAAsgC,GAAM,OAAIA,EAAO3oF,SAAS,sBAE/D,OADI2zF,IAAiBhL,EAASgL,EAAgBr+B,MAAM,KAAKs+B,OAClDjL,G,oBChJHkL,GAAa,CACjBC,aAAa,EACbC,aAAa,GA2GArb,MAxGf,gKAcE,WACE,MAAwCp1D,KAAKsyD,MAArCoe,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,WAEzB,EASI3wE,KAAKsyD,MARPhM,EADF,EACEA,gBACAsqB,EAFF,EAEEA,OACAC,EAHF,EAGEA,OACAC,EAJF,EAIEA,mBACAlnE,EALF,EAKEA,uBAEiBP,EAPnB,EAME6kD,KACE5mD,YAAe+B,0BAInB,OACE,kBAAC,WAAD,KACGsnE,GAAc,6BACb,yBAAKvoF,UAAWC,KAAO0oF,cAAe1nE,EAA0BC,uBAChE,yBAAKlhB,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBAC/D,kBAAC,WAAD,CACErH,iBAAkB,CAAEvZ,QAAS,UAC7B9pD,MAAO8C,EAA0BE,wBACjC86D,SAAUyM,EACV92B,QAASsM,EAAgB2pB,SAAS5yC,KAAI,SAAC6zC,EAASvzC,GAAV,MAAqB,CAAEsc,QAASi3B,EAAQC,YAAaj3B,MAAOvc,MAClGuc,MAAOw2B,KAIX,yBAAKtoF,UAAWC,KAAO0oF,cAAeH,GACtC,yBAAKxoF,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBAE7B,KAAjC3qB,EAAgB4pB,cAAuB5pB,EAAgB2pB,SAASS,GAAiBxpB,gBAAgB7pB,KAAI,SAAC+zC,EAAMzzC,GAC3G,OACE,kBAACsqC,GAAA,EAAD,CACElS,IAAG,UAAKqb,EAAKj0C,KAAV,YAAkBQ,GACrBu9B,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO6qE,EAAKj0C,KACZ+c,MAAK,UAAKk3B,EAAKC,OAAV,YAAoBD,EAAKhmC,iBAKpC,yBAAKhjD,UAAWC,KAAO0oF,cACpBF,EACD,0BAAMzoF,UAAWC,KAAOipF,iBACtB,kBAAC,WAAD,CACE/sD,QAASlb,EAA0BM,uBAAuBC,GAC1D2mE,WAAYA,OAIlB,yBAAKnoF,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBAE/D,yBAAK7oF,UAAWC,KAAOkpF,YACrB,kBAACtJ,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO8C,EAA0BG,wBACjC0wC,MAAOoM,EAAgB2pB,SAASS,GAAiBvpB,eAAeC,gBAIpE,yBAAKh/D,UAAWC,KAAOkpF,YACrB,kBAACtJ,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO8C,EAA0BI,4BACjCywC,MAAOoM,EAAgB2pB,SAASS,GAAiBvpB,eAAeE,YAIpE,yBAAKj/D,UAAWC,KAAOkpF,YACrB,kBAACtJ,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO8C,EAA0BK,uCACjCwwC,MAAOoM,EAAgB2pB,SAASS,GAAiBvpB,eAAeG,iBA/F5E,GAA4CmL,c,qBCkG7B2C,MArGf,gKAWE,WACE,MAQIp1D,KAAKsyD,MAPPkf,EADF,EACEA,sBACAlrB,EAFF,EAEEA,gBACAmrB,EAHF,EAGEA,WACAxrE,EAJF,EAIEA,MACAoO,EALF,EAKEA,SACAq9D,EANF,EAMEA,cACAC,EAPF,EAOEA,kBAGF,OACE,kBAAC,WAAD,KACE,yBAAKvpF,UAAWC,KAAO0oF,cAAe9qE,GACrCoO,EAAW,yBAAKjsB,UAAWC,KAAO2oF,iBAAkB38D,GAAkB,yBAAKjsB,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBACtI,kBAAChJ,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY9sF,WACjD0rE,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY9sF,UAC9C4hB,MAAO,aACP89D,SAAU,SAAC5N,GAAD,OAAOib,EAAcjb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY,cAC3Dv3B,MAAOoM,EAAgBmrB,GAAY9sF,YAErC,kBAACsjF,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY3sF,YACjDurE,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY3sF,WAC9CyhB,MAAO,cACP89D,SAAU,SAAC5N,GAAD,OAAOib,EAAcjb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY,eAC3Dv3B,MAAOoM,EAAgBmrB,GAAY3sF,aAErC,kBAACmjF,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY5sF,UACjDwrE,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY5sF,SAC9C0hB,MAAO,YACP89D,SAAU,SAAC5N,GAAD,OAAOib,EAAcjb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY,aAC3Dv3B,MAAOoM,EAAgBmrB,GAAY5sF,WAErC,kBAAC,aAAD,CACEqjF,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAYrvC,WACjD+lC,WAAS,EACTC,WAAYoJ,EAAsBC,GAAYrvC,UAC9CiuB,QAAQ,SACR0F,IAAI,YACJxvD,MAAO,gBAIP89D,SAAU,SAAAnqB,GAAK,OAAIw3B,EAAcx3B,EAAOu3B,EAAY,cACpD3B,OAAO,OACP51B,MAAOoM,EAAgBmrB,GAAYrvC,YAErC,kBAAC,WAAD,CACE8lC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAYvsF,KACjDmjF,UAAWmJ,EAAsBC,GAAYvsF,IAC7CmrE,QAAQ,SACR0F,IAAI,MACJxvD,MAAO,yBACP89D,SAAU,gBAAGnqB,EAAH,EAAGA,MAAH,OAAew3B,EAAcx3B,EAAOu3B,EAAY,QAC1Dv3B,MAAOoM,EAAgBmrB,GAAYvsF,OAEnCysF,GACA,kBAACC,GAAA,EAAD,CACEC,QACE,kBAACC,GAAA,EAAD,CACE1iB,MAAM,UACN2iB,WAAY,CAAE,aAAc,kBAC5Bx/C,QAAS,kBAAMm/C,GAAeprB,EAAgBmrB,GAAYjrB,YAAairB,EAAY,gBACnFrN,QAAS9d,EAAgBmrB,GAAYjrB,cAGzCjgD,MAAO,+BA3FnB,GAAiCksD,cCKpBuf,GAAb,gKAcE,WACE,MAWIhyE,KAAKsyD,MAVP2f,EADF,EACEA,UACAT,EAFF,EAEEA,sBACAlrB,EAHF,EAGEA,gBACArgD,EAJF,EAIEA,MACAoO,EALF,EAKEA,SACAo9D,EANF,EAMEA,WACA19F,EAPF,EAOEA,YACAm+F,EARF,EAQEA,eACAC,EATF,EASEA,uBACAC,EAVF,EAUEA,YAGIC,EAAkBZ,IAAexrB,GAAkB,sBAAwB,wBAEjF,OACE,kBAAC,WAAD,KACE,yBAAK79D,UAAWC,KAAO0oF,cAAe9qE,GACrCoO,EAAW,yBAAKjsB,UAAWC,KAAO2oF,iBAAkB38D,GAAkB,yBAAKjsB,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBACtI,kBAAChJ,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY19F,GAAa44D,SAC9D0jB,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY19F,GAAa44D,QAC3DpmC,MAAO,mBACP89D,SAAU,SAAC5N,GAAD,OAAOyb,EAAezb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY19F,EAAa,YACzEmmE,MAAOoM,EAAgBmrB,GAAY19F,GAAa44D,UAElD,kBAACs7B,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY19F,GAAa64D,SAC9DyjB,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY19F,GAAa64D,QAC3DrmC,MAAO,mBACP89D,SAAU,SAAC5N,GAAD,OAAOyb,EAAezb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY19F,EAAa,YACzEmmE,MAAOoM,EAAgBmrB,GAAY19F,GAAa64D,UAElD,kBAACq7B,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBC,GAAY19F,GAAa84D,MAC9DwjB,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBC,GAAY19F,GAAa84D,KAC3DtmC,MAAO,OACP89D,SAAU,SAAC5N,GAAD,OAAOyb,EAAezb,EAAEr8D,OAAO8/C,MAAOu3B,EAAY19F,EAAa,SACzEmmE,MAAOoM,EAAgBmrB,GAAY19F,GAAa84D,OAElD,kBAAC,gBAAD,CACEq7B,aAAa,MACbG,UAAWmJ,EAAsBC,GAAY19F,GAAagN,MAC1DonF,WAAS,EACTyB,iBAAkB,CAAEvZ,QAAS,UAC7B0F,IAAI,QACJsO,SAAU,SAAAnqB,GAAK,OAAIg4B,EAAeh4B,EAAOu3B,EAAY19F,EAAa,UAClEu+F,OAAQL,EACR/3B,MAAOoM,EAAgBmrB,GAAY19F,GAAagN,QAElD,kBAAC,WAAD,CACEmnF,aAAa,MACbG,UAAWmJ,EAAsBC,GAAY19F,GAAa0yE,QAC1D4J,QAAQ,SACRgU,SAAU,SAAAnqB,GAAK,OAAIg4B,EAAeh4B,EAAMq4B,eAAezjB,OAAQ2iB,EAAY19F,EAAa,YACxFwyB,MAAM,cACN2zC,MAAOoM,EAAgBmrB,GAAY19F,GAAa0yE,UAElD,yBAAKr+D,UAAWC,KAAO+pF,aACpBD,EAAuBE,GAAiB,kBAAMD,EAAYX,EAAY19F,KAAc,cAnF/F,GAAkC0+E,aA4FnBC,sBAhGA,SAAC3xE,GAAD,MAAY,CACzBkxF,UAAWlxF,EAAMksE,OAAO9W,YA+FK,GAAhBuc,CAAoB0C,GAAY4c,KCrBhC5c,MA5Ef,gKAYE,WACE,MAOIp1D,KAAKsyD,MANPkf,EADF,EACEA,sBACAlrB,EAFF,EAEEA,gBACArgD,EAHF,EAGEA,MACAoO,EAJF,EAIEA,SACAm+D,EALF,EAKEA,iBACuBhoE,EANzB,EAME0jD,KAAQ5mD,YAAekD,WAGzB,OACE,kBAAC,WAAD,KACE,yBAAKpiB,UAAWC,KAAO0oF,cAAe9qE,GACrCoO,EAAW,yBAAKjsB,UAAWC,KAAO2oF,iBAAkB38D,GAAkB,yBAAKjsB,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBACtI,kBAAChJ,GAAA,EAAD,CACEC,aAAa,MACbpnF,MAAOwmD,QAAQkqC,EAAsBiB,GAAG5pE,QAAQpkB,OAChD4rE,QAAQ,SACR8X,WAAS,EACTC,WAAYoJ,EAAsBiB,GAAG5pE,QAAQpkB,MAC7C8hB,MAAOiE,EAAWE,YAClB25D,SAAU,SAAC5N,GAAD,OAAO+b,EAAiB/b,EAAEr8D,OAAO8/C,MAAO,UAClDA,MAAOoM,EAAgBmsB,GAAG5pE,QAAQpkB,QAEpC,kBAAC,mBAAD,CACEyjF,aAAa,MACb3hE,MAAOiE,EAAWG,iBAClB0lD,QAAQ,SACRgU,SAAU,gBAAGkO,EAAH,EAAGA,eAAH,OAAwBC,EAAiBD,EAAgB,cACnEr4B,MAAOoM,EAAgBmsB,GAAG5pE,QAAQjkB,UAClCujF,WAAS,EACTE,UAAWmJ,EAAsBiB,GAAG5pE,QAAQjkB,YAE9C,kBAAC,mBAAD,CACEsjF,aAAa,MACb3hE,MAAOiE,EAAWI,iBAClBylD,QAAQ,SACRgU,SAAU,gBAAGkO,EAAH,EAAGA,eAAH,OAAwBC,EAAiBD,EAAgB,cACnEr4B,MAAOoM,EAAgBmsB,GAAG5pE,QAAQ69C,UAClCyhB,WAAS,EACTE,UAAWmJ,EAAsBiB,GAAG5pE,QAAQ69C,YAE9C,kBAAC,mBAAD,CACEwhB,aAAa,MACb3hE,MAAOiE,EAAWK,kBAClBwlD,QAAQ,SACRgU,SAAU,gBAAGkO,EAAH,EAAGA,eAAH,OAAwBC,EAAiBD,EAAgB,eACnEr4B,MAAOoM,EAAgBmsB,GAAG5pE,QAAQ89C,WAClCwhB,WAAS,EACTE,UAAWmJ,EAAsBiB,GAAG5pE,QAAQ89C,aAE9C,kBAAC,WAAD,CACEijB,iBAAkB,CAAEvZ,QAAS,UAC7B9pD,MAAOiE,EAAWC,mBAClB45D,SAAU,SAAAnqB,GAAK,OAAIs4B,EAAiBt4B,EAAO,iBAC3CF,QAASmM,GACTjM,MAAOoM,EAAgBmsB,GAAG5pE,QAAQ+9C,oBApE5C,GAAoC6L,c,qBC0ErB2C,WAjFR,YAA6D,IAAlCuF,EAAiC,EAAjCA,KAAMwE,EAA2B,EAA3BA,QAAiBh7D,EAAU,EAAlB+pD,KAAQ/pD,KAEvD,OACE,kBAAC46D,GAAA,EAAD,CAAQc,OAAO,SAASlF,KAAMA,EAAMwE,QAASA,GAC3C,yBAAK/2E,UAAS,UAAKC,KAAOqqF,uBAAZ,iBACZ,yBAAKtqF,UAAWC,KAAO03E,WACrB,kBAAC,iBAAD,CAAgBjH,KAAK,QAAQvmC,QAAS4sC,KAExC,wBAAI/2E,UAAWC,KAAOsqF,qBAAsBxuE,EAAKtH,kBACjD,yBAAKzU,UAAWC,KAAOuqF,eACrB,yBAAKxqF,UAAWC,KAAOwqF,yBACrB,yBAAKha,MAAO,CAAEyD,UAAW,SAAzB,IACE,+BACE,+BACE,4BACE,wBAAIwW,QAAS,GAAI3uE,EAAK2B,iBAAiBM,cAAc,IACrD,wBAAI0sE,QAAS,GAAI3uE,EAAK2B,iBAAiBM,cAAc,IACrD,wBAAI2sE,QAAS,GAAI5uE,EAAK2B,iBAAiBK,4BAEzC,4BACE,4BAAKhC,EAAK2B,iBAAiBM,cAAc,IACzC,4BAAKjC,EAAK2B,iBAAiBM,cAAc,IACzC,4BAAKjC,EAAK2B,iBAAiBM,cAAc,IACzC,4BAAKjC,EAAK2B,iBAAiBM,cAAc,MAG7C,+BACE,4BACE,4BACGjC,EAAK2B,iBAAiBC,OAAO,IAEhC,4BAAK5B,EAAK2B,iBAAiBO,mBAC3B,4BAAKlC,EAAKS,SACV,4BAAKT,EAAKS,SACV,4BAAKT,EAAKS,SACV,4BAAKT,EAAKS,UAEZ,4BACE,4BACGT,EAAK2B,iBAAiBC,OAAO,IAEhC,4BAAK5B,EAAK2B,iBAAiBO,mBAC3B,4BAAKlC,EAAKQ,UACV,4BAAKR,EAAKQ,UACV,4BAAKR,EAAKQ,UACV,4BAAKR,EAAKS,UAEZ,4BACE,4BACGT,EAAK2B,iBAAiBC,OAAO,IAEhC,4BAAK5B,EAAK2B,iBAAiBO,mBAC3B,4BAAKlC,EAAKQ,UACV,4BAAKR,EAAKQ,UACV,4BAAKR,EAAKQ,UACV,4BACGR,EAAKQ,SACN,kBAAC,WAAD,CAAU4f,QAASpgB,EAAKqC,kCCqG/B4uD,MApJf,+MAYEr0E,MAAQ,CACNiyF,wBAAwB,GAb5B,6CAgBE,WAAU,IAAD,OACCA,EAA2BhzE,KAAKjf,MAAhCiyF,uBAER,EASIhzE,KAAKsyD,MARPhM,EADF,EACEA,gBACAkrB,EAFF,EAEEA,sBACAvrE,EAHF,EAGEA,MACAgtE,EAJF,EAIEA,sBACAd,EALF,EAKEA,uBALF,IAMEjkB,KACE5mD,YAAe4B,EAPnB,EAOmBA,gBAAiB/N,EAPpC,EAOoCA,eAIpC,OACE,kBAAC,WAAD,KACE,yBAAK/S,UAAWC,KAAO0oF,cAAe9qE,GACtC,yBAAK7d,UAAWC,KAAO2oF,iBAAiB,yBAAK5oF,UAAWC,KAAO4oF,iBAE/D,kBAAChJ,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO2C,EAAgBW,uBACvBqwC,MAAO1b,KAAM8nB,EAAgB0pB,eAAenpB,iBAAiBpoB,OAAO,gBAGtE,kBAACwpC,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO2C,EAAgBY,WACvBowC,MAAOoM,EAAgB0pB,eAAe73F,OAGxC,kBAAC8vF,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO2C,EAAgBa,aACvBmwC,MAAOoM,EAAgB0pB,eAAe91C,SAGxC,yBAAK9xC,UAAWC,KAAOkpF,YACrB,kBAAC,WAAD,CACEhrE,MAAO2C,EAAgBc,gBACvB4/D,iBAAkB,CAAEvZ,QAAS,UAC7BgU,SAAU,SAAAnqB,GAAK,OAAI+4B,EAAsB/4B,EAAO,aAChDF,QAAS,CACP,CACEC,QAAS/wC,EAAgBe,WAAW,GACpCiwC,MAAO,GAET,CACED,QAAS/wC,EAAgBe,WAAW,GACpCiwC,MAAO,GAET,CACED,QAAS/wC,EAAgBe,WAAW,GACpCiwC,MAAO,IAGXmuB,UAAWmJ,EAAsBxB,eAAelpB,SAChD5M,MAAOoM,EAAgB0pB,eAAelpB,WAExC,yBAAK1+D,UAAWC,KAAO6qF,iBACpBf,EAAuBh3E,GAAgB,kBAAM,EAAKy4D,SAAS,CAAEof,wBAAwB,MAAS,UAInG,yBAAK5qF,UAAWC,KAAOkpF,YACrB,kBAACK,GAAA,EAAD,CACEC,QACE,kBAACC,GAAA,EAAD,CACE1iB,MAAM,UACN2iB,WAAY,CAAE,aAAc7oE,EAAgBzC,oBAC5C8rB,QAAS,kBAAM0gD,GAAuB3sB,EAAgB0pB,eAAejpB,WAAY,eACjFqd,QAAS9d,EAAgB0pB,eAAejpB,aAG5CxgD,MAAO2C,EAAgBzC,qBAEzB,yBAAKre,UAAWC,KAAO8qF,YACrB,kBAAC,WAAD,CAAU5uD,QAAS+hC,EAAgB0pB,eAAejpB,WAAa79C,EAAgBiB,+BAAiCjB,EAAgBkB,qCAIpI,yBAAKhiB,UAAWC,KAAOkpF,YACrB,kBAACK,GAAA,EAAD,CACEC,QACE,kBAACC,GAAA,EAAD,CACE1iB,MAAM,UACN2iB,WAAY,CAAE,aAAc7oE,EAAgBxC,sBAC5C6rB,QAAS,kBAAM0gD,GAAuB3sB,EAAgB0pB,eAAehpB,aAAc,iBACnFod,QAAS9d,EAAgB0pB,eAAehpB,eAG5CzgD,MAAO2C,EAAgBxC,uBAEzB,yBAAKte,UAAWC,KAAO8qF,YACrB,kBAAC,WAAD,CAAU5uD,QAAS+hC,EAAgB0pB,eAAehpB,aAAe99C,EAAgBmB,iCAAmCnB,EAAgBoB,uCAIxI,kBAAC29D,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO2C,EAAgBgB,aACvBgwC,MAAOoM,EAAgB0pB,eAAer6C,SAGvC2wB,EAAgB0pB,eAAe/oB,WAC9B,kBAACghB,GAAA,EAAD,CACE/M,UAAU,EACV7K,QAAQ,SACR8X,WAAS,EACT5hE,MAAO2C,EAAgBqB,iBACvB2vC,MAAOoM,EAAgB0pB,eAAe/oB,YAI1C,kBAACmsB,GAAD,CACEjU,QAAS,kBAAM,EAAKvL,SAAS,CAAEof,wBAAwB,KACvDrY,KAAMqY,SA5IhB,GAAoCvgB,cCgBvB4gB,GAAb,yNAkBEC,oBAAsB,CACpB,iBACA,kBACA,gBACA,iBACA,WACA,kBACA,uBACA,uBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,qBACA,uBACA,aACA,iBACA,iBACA,kBACA,eACA,uBACA,wBACA,sBACA,uBACA,iBACA,wBACA,6BACA,6BACA,yBACA,0BACA,4BACA,8BACA,8BACA,0BACA,2BACA,6BACA,qBACA,sBACA,oBACA,qBACA,eACA,wBACA,2BACA,2BACA,uBACA,wBACA,0BACA,4BACA,4BACA,wBACA,yBACA,2BACA,sBACA,uBACA,qBACA,sBACA,gBACA,yBACA,4BACA,4BACA,wBACA,yBACA,2BACA,6BACA,6BACA,yBACA,0BACA,4BACA,WACA,oBACA,uBA1FJ,EA6FEC,8BA7FF,oBA8FKttB,IA9FL,GA+FMthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,GACXl9C,IAAK,GACLshE,YAAa,IApGnB,eAqGON,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KA1GjB,eA4GOP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAjHjB,yBAmHe,CACPhiE,MAAO,GACPG,UAAW,GACX8hE,UAAW,GACXC,WAAY,GACZC,aAAc,KAxHtB,mBA2HKX,IA3HL,GA4HMthE,UAAW,GACXG,WAAY,GACZD,SAAU,GACVu9C,UAAW,GACXl9C,IAAK,GACLshE,YAAa,IAjInB,eAkION,GAAwB,CACvBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KAvIjB,eAyIOP,GAAyB,CACxBvZ,QAAS,GACTC,QAAS,GACTC,KAAM,GACN9rD,MAAO,GACP0lE,QAAS,KA9IjB,mBAiJKR,IAjJL,GAkJMthE,UA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","file":"static/js/main.fe30a257.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2WdSL\",\"header\":\"styles_header__1UaQg\",\"row\":\"styles_row__1S15v\",\"emailAddress\":\"styles_emailAddress__37Se2\",\"name\":\"styles_name___0l4w\",\"pin\":\"styles_pin__3fA2o\",\"status\":\"styles_status__3iXad\",\"accounts\":\"styles_accounts__1gDty\",\"actions\":\"styles_actions__1gSv8\",\"label\":\"styles_label__1nyCK\",\"data\":\"styles_data__1N_6A\",\"addIpButton\":\"styles_addIpButton__vAzPI\",\"ipButtons\":\"styles_ipButtons__3jLmU\",\"newIp\":\"styles_newIp__dHk_D\",\"infoButtons\":\"styles_infoButtons__2UNf_\",\"accountsTableContainer\":\"styles_accountsTableContainer__1flh1\"};","/* eslint-disable brace-style */\n// This file does not need to be maintained. It is only for development testing purposes.\nconst buttons = {\n cancel: 'SPA Cancel',\n close: 'SPA Close',\n delete: 'SPA Delete',\n submit: 'SPA Submit',\n update: 'SPA Update',\n};\nconst errors = {\n required: 'SPA Field is required.'\n};\nconst intl_address = 'SPA Do you have an international address? If so, please submit form 500, Account Information Change';\nconst unsaved_changes = 'SPA Are you sure you want to leave? There are unsaved changes on this page.';\n\nmodule.exports = {\n AccountDetails: {\n head_account_number: 'SPA Account Number',\n head_account_type: 'SPA Account Type',\n head_current_tax_year_contributions: 'SPA Current Tax Year to Date Contributions',\n head_earnings: 'SPA Earnings',\n head_investment_option: 'SPA Investment Option',\n head_mailing_address: 'SPA Mailing',\n head_netPrincipal: 'SPA Net Principal',\n head_other_address: 'SPA Other',\n head_physical_address: 'SPA Physical',\n head_prior_tax_year_contributions: 'SPA Prior Tax Year Contributions',\n head_remaining_option_changes: 'SPA Remaining Option Changes',\n head_title: 'SPA Account Details',\n head_title_account_details: 'SPA Details',\n head_title_activity_summary: 'SPA Activity Summary',\n head_title_beneficiary_contact: 'SPA Beneficiary Contact',\n head_total_value: 'SPA Total Value',\n nav_path(accountId) { return `/es/accounts/${accountId}`; }, // Will need some clarification on what needs to be translated\n text_none: 'SPA None',\n },\n AccountOwnerCard: {\n head_title: 'SPA Account Owner',\n lbl_first_name: 'SPA First Name',\n lbl_last_name: 'SPA Last Name',\n lbl_middle_name: 'SPA Middle Name',\n lbl_utah_resident: 'SPA Utah Resident',\n msg_residency_saved: 'SPA Utah resident status saved.',\n },\n Accounts: {\n head_title: 'SPA Accounts',\n nav_path: '/es/accounts',\n nav_title: 'SPA Accounts',\n },\n AccountsSummary: {\n head_title: 'SPA Account Summary',\n head_title_plural: 'SPA Accounts Summary'\n },\n AddressCard: {\n btn_delete(addressType) { return `${buttons.delete} ${addressType}`; },\n btn_update(addressType) { return `${buttons.update} ${addressType}`; },\n err_postal_code_length: 'SPA Postal code must be 5 or 9 digits long.',\n err_required: errors.required,\n head_title: 'SPA Addresses',\n msg_address_deleted: 'SPA Address deleted.',\n msg_address_updated: 'SPA Address updated.',\n msg_unsaved_changes: unsaved_changes,\n text_intl_address: intl_address,\n },\n BeneContactCard: {\n btn_delete: buttons.delete,\n btn_update: buttons.update,\n head_title: 'SPA Beneficiary Contact',\n msg_address_deleted: 'SPA Address deleted.',\n msg_address_updated: 'SPA Address updated.',\n msg_unsaved_changes: unsaved_changes,\n text_intl_address: intl_address,\n },\n default_title: 'SPA my529 Account Access Portal',\n EmailCard: {\n head_title: 'SPA Email',\n lbl_email: 'SPA Email',\n },\n ForgotPassword: {\n btn_cancel: buttons.cancel,\n btn_submit: buttons.submit,\n err_password: 'SPA Password is required.',\n err_username: 'SPA Username is required.',\n head_title: 'SPA Forgot Password',\n msg_success: 'SPA Request submitted. Check your email.',\n nav_path: '/es/forgot-password',\n text_instructions: 'SPA If the provided username is found, password reset instructions will be sent to the associated email address.',\n text_username: 'SPA Username',\n },\n ForgotUsername: {\n head_title: '/es/forgot-username',\n nav_path: '/es/forgot-username',\n },\n Header: {\n text_browser_warning: 'SPA You are currently using a browser that is not supported. For the best experience, please use Chrome or Firefox.',\n text_mobile_warning: 'SPA Mobile browsing of this website is currently in beta. For full functionality, please use a desktop browser.'\n },\n Login: {\n btn_login: 'SPA Log In',\n err_password: 'SPA Password is required.',\n err_username: 'SPA Username is required.',\n head_title: 'SPA Login',\n lbl_password: 'SPA Password',\n lbl_username: 'SPA Username',\n msg_you_have_logged_out: 'SPA You have logged out.',\n nav_forgot_password: 'SPA Forgot Password?',\n nav_forgot_username: 'SPA Forgot Username?',\n nav_path: '/es/login',\n },\n MyInfo: {\n head_title: 'SPA My Info',\n head_utah_resident: 'SPA Utah Resident',\n nav_path: '/es/my-info',\n nav_title: 'SPA My Info',\n text_residency_mismatch: 'SPA The selected state does not match your declared Utah residency status. Are you sure you wish to continue?',\n },\n Navigation: {\n menu_english: 'SPA English',\n menu_spanish: 'SPA Español',\n text_previous_login: 'SPA Previous Login',\n menu_log_out: 'SPA Log out',\n menu_profile: 'SPA Profile',\n text_version: 'SPA Version'\n },\n PageNotFound: {\n btn_back_to_accounts: 'SPA Back to Accounts',\n text_oops: \"SPA Oops! Looks like you reached a page that doesn't exist.\", // eslint-disable-line\n },\n PasswordCard: {\n btn_change_password: 'SPA Update Password',\n err_required: errors.required,\n err_password_criteria: 'SPA Password does not meet requirements.',\n err_confirm_password: 'SPA Confirmed password does not match above password.',\n msg_password_updated: 'SPA Password updated.',\n lbl_current_password: 'SPA Current Password',\n lbl_new_password: 'SPA New Password',\n lbl_confirm_password: 'SPA Confirm New Password',\n head_title: 'SPA Password',\n },\n PhoneNumbersCard: {\n btn_change_phone: 'SPA Update Phone Numbers',\n head_title: 'SPA Phone Numbers',\n lbl_cell: 'SPA Cell Phone',\n lbl_fax: 'SPA Fax',\n lbl_home: 'SPA Home Phone',\n lbl_other: 'SPA Other Phone',\n lbl_work: 'SPA Work Phone',\n msg_phone_numbers_updated: 'SPA Phone numbers updated.',\n msg_unsaved_changes: unsaved_changes,\n },\n ResetPassword: {\n err_confirm_password: 'SPA Confirm Password is required.',\n err_password_criteria: 'SPA Password does not meet criteria below.',\n err_password_match: 'SPA Passwords must match.',\n err_password_required: 'SPA Password is required.',\n head_title: 'SPA Reset Password',\n msg_password_changed: 'SPA Password changed.',\n nav_path: '/es/reset-password',\n text_new_password: 'SPA New Password',\n text_confirm_password: 'SPA Confirm new password',\n btn_submit: 'SPA Submit',\n\n },\n SuccessorsCard: {\n btn_add_successor(type) { return `SPA Add ${type} Successor`; },\n btn_change_successor(type) { return `SPA Change ${type} Successor`; },\n btn_close: buttons.close,\n err_age_limits(minAge, maxAge) { return `SPA Age must must be between ${minAge} and ${maxAge}.`; }, // Will require explanation\n err_required: errors.required,\n head_remove_successor(type) { return `SPA Remove ${type} Successor`; },\n head_title: 'SPA Successors',\n lbl_birth_date: 'SPA Successor Date of Birth',\n lbl_first_name: 'SPA First name',\n lbl_last_name: 'SPA Last name',\n lbl_middle_name: 'SPA Middle Name',\n lbl_ssn: 'SPA Social Security Number',\n lbl_successor: 'SPA Successor',\n menu_new_successor: 'SPA New Successor',\n msg_successor_added: 'SPA Successor added.',\n msg_successor_changed: 'SPA Successor changed.',\n msg_successor_removed: 'SPA Successor removed.',\n text_confirm_remove_successor(first, mid, last, type) { return `SPA Do you want to remove ${first} ${mid} ${last} as ${type} successor?`; },\n text_none: 'SPA None',\n text_successor_to_trust: 'SPA To designate or change the successor to a trust or institution, you must complete and submit Form 515 to my529.',\n },\n UsernameCard: {\n head_title: 'SPA Username',\n lbl_username: 'SPA Username',\n },\n ValidateEmail: {\n nav_path: '/es/validate-email',\n },\n};","module.exports = __webpack_public_path__ + \"static/media/my529LogoColorsTransp.015e2964.png\";","module.exports = __webpack_public_path__ + \"static/media/WelcomeScreen.33a90c43.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"linkContainer\":\"styles_linkContainer__1VV9o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tableContainer\":\"styles_tableContainer__37m2U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tableContainer\":\"styles_tableContainer__2N_yr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"styles_image__1bUT9\"};","module.exports = __webpack_public_path__ + \"static/media/butterfly.6c79d007.svg\";","module.exports = __webpack_public_path__ + \"static/media/AccessCardBanner.0dab8bb5.png\";","module.exports = __webpack_public_path__ + \"static/media/MobileAccessCardBanner.3808988c.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"warning\":\"styles_warning__34WEK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"preferencesContainer\":\"styles_preferencesContainer__1IeYC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"DualPushButtonSwitch_container\":\"styles_DualPushButtonSwitch_container__f77QU\",\"DualPushButtonSwitch_radioGroup\":\"styles_DualPushButtonSwitch_radioGroup__VJIQN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"giactText\":\"styles_giactText__djgtn\"};","module.exports = __webpack_public_path__ + \"static/media/BankCheck.d58fc349.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"withdrawalTypeContainer\":\"styles_withdrawalTypeContainer__axiS_\",\"partialBalanceMessaging\":\"styles_partialBalanceMessaging__1zUp6\",\"sellDate\":\"styles_sellDate__2TifI\"};","module.exports = __webpack_public_path__ + \"static/media/OpenCPScreenshot.6ac31abe.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"documentsContainer\":\"styles_documentsContainer__jWmZs\",\"TableToolbar_toolbarContainer\":\"styles_TableToolbar_toolbarContainer__2p8n5\",\"TableToolbar_iconMenu\":\"styles_TableToolbar_iconMenu__2nQBv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"terms\":\"styles_terms__1jdOJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1564X\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"emailAddress\":\"styles_emailAddress__LrtKt\"};","module.exports = __webpack_public_path__ + \"static/media/reader.fae202b5.jpg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"overlay\":\"styles_overlay__5PKpb\",\"navCircleHidden\":\"styles_navCircleHidden__29Mma\",\"notifCircleHidden\":\"styles_notifCircleHidden__1mJXJ\",\"navCircleLoaded\":\"styles_navCircleLoaded__1rs5u\",\"notifCircleLoaded\":\"styles_notifCircleLoaded__x2AW6\",\"iconWithText\":\"styles_iconWithText__rOvWL\",\"content\":\"styles_content__1cujm\",\"title\":\"styles_title__2CijA\",\"bottomNav\":\"styles_bottomNav__3clPl\",\"stepperNav\":\"styles_stepperNav__3byZs\",\"skipNav\":\"styles_skipNav__1jq5l\",\"welcomeImage\":\"styles_welcomeImage__1DEKX\",\"transactionsIcon1\":\"styles_transactionsIcon1__3eRtC\",\"transactionsIcon2\":\"styles_transactionsIcon2__2hQWt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"reviewContainer\":\"styles_reviewContainer__2DPY_\",\"recipient\":\"styles_recipient__30rlu\",\"recipientInfo\":\"styles_recipientInfo__3A97i\",\"recipientAddress\":\"styles_recipientAddress__2IdMg\",\"detailsTitle\":\"styles_detailsTitle__mY2FZ\",\"termsAndConditions\":\"styles_termsAndConditions__3Ksmp\",\"termsAndConditionsCheckbox\":\"styles_termsAndConditionsCheckbox__1WD3T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2Q85E\",\"stepperButtons\":\"styles_stepperButtons__2yViB\",\"expandedDetails\":\"styles_expandedDetails__14s8i\",\"formError\":\"styles_formError__jrg5K\",\"generalInfo\":\"styles_generalInfo__2Z8Du\",\"customizedButtons\":\"styles_customizedButtons__29qty\",\"customizedOptionsContainer\":\"styles_customizedOptionsContainer__2k-5a\",\"createCustomizedButtons\":\"styles_createCustomizedButtons__b5SnA\",\"radioButtonContainer\":\"styles_radioButtonContainer__kfxS7\",\"radioLabelContainer\":\"styles_radioLabelContainer__UNbhE\",\"radioLabel\":\"styles_radioLabel__2GIY1\",\"customizedBtnInfo\":\"styles_customizedBtnInfo__2QRc6\",\"enrollmentPerformanceAndDetails\":\"styles_enrollmentPerformanceAndDetails__3e5MJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"newOptions\":\"styles_newOptions__3IjiB\",\"termsAndConditions\":\"styles_termsAndConditions__2dp1j\",\"Submit_container\":\"styles_Submit_container__29GQp\",\"Submit_collapsableCustomizedName\":\"styles_Submit_collapsableCustomizedName__uDaHT\",\"termsAndConditionsCheckbox\":\"styles_termsAndConditionsCheckbox__16BWR\",\"modalHeader\":\"styles_modalHeader__1c2lL\",\"modalSubheader\":\"styles_modalSubheader__2J-gj\",\"selectedOptionValue\":\"styles_selectedOptionValue__TN4mb\",\"currentTime\":\"styles_currentTime__p49FI\",\"pendingOption\":\"styles_pendingOption__qZcbG\",\"selectedOption\":\"styles_selectedOption__1q7oK\",\"printContainer\":\"styles_printContainer__3zSuH\",\"print\":\"styles_print__ajdeO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"styles_error__9fI5V\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"Transfer_stepOneContainer\":\"styles_Transfer_stepOneContainer__30h5E\",\"Transfer_transferTypeContainer\":\"styles_Transfer_transferTypeContainer__1sC7v\",\"Transfer_accountsSelection\":\"styles_Transfer_accountsSelection__3ge-K\",\"Transfer_sourceAccountDescription\":\"styles_Transfer_sourceAccountDescription__27OU5\",\"Transfer_sourceAccountName\":\"styles_Transfer_sourceAccountName__2hBoF\",\"Transfer_sourceAccountLabel\":\"styles_Transfer_sourceAccountLabel__MVZuX\",\"Transfer_keepAccountOpenCheckbox\":\"styles_Transfer_keepAccountOpenCheckbox__1Pt_O\",\"Transfer_iconContainer\":\"styles_Transfer_iconContainer__2hDAC\",\"Transfer_fullBalanceInfoIcon\":\"styles_Transfer_fullBalanceInfoIcon__3af_f\",\"Transfer_inputContainer\":\"styles_Transfer_inputContainer__CX4vy\",\"Transfer_addIconContainer\":\"styles_Transfer_addIconContainer__3bmUq\",\"Transfer_amountTotal\":\"styles_Transfer_amountTotal__997cK\",\"dollarTotal\":\"styles_dollarTotal__1wgFn\",\"percentTotal\":\"styles_percentTotal__2BL80\",\"DualPushButtonSwitch_container\":\"styles_DualPushButtonSwitch_container__HW9oy\",\"Transfer_transferTypeToggleContainer\":\"styles_Transfer_transferTypeToggleContainer__2C02V\",\"Transfer_optionChangeIndicator\":\"styles_Transfer_optionChangeIndicator__38kij\",\"Transfer_transferType_radioButtonGroup\":\"styles_Transfer_transferType_radioButtonGroup__2w7W3\",\"Transfer_sourceColumn\":\"styles_Transfer_sourceColumn__GULuY\",\"Transfer_sourceContainer\":\"styles_Transfer_sourceContainer__21ZuN\",\"Transfer_destinationColumn\":\"styles_Transfer_destinationColumn__ft4jR\",\"row-0\":\"styles_row-0__1PcVz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"accountDetails\":\"styles_accountDetails__N6WCc\",\"acctOwnerBeneRow\":\"styles_acctOwnerBeneRow__H1VeR\",\"acctNumbTotalValRow\":\"styles_acctNumbTotalValRow__1y-S_\",\"acctTypeAccountsInGroupRow\":\"styles_acctTypeAccountsInGroupRow__BmymD\",\"acctOwner\":\"styles_acctOwner__2sYCL\",\"ben\":\"styles_ben__2oYFK\",\"acctNum\":\"styles_acctNum__239d9\",\"totalVal\":\"styles_totalVal__1ZNld\",\"acctType\":\"styles_acctType__GLWnY\",\"accountsInGroup\":\"styles_accountsInGroup__2fgFG\",\"accountsInGroupInfo\":\"styles_accountsInGroupInfo__3TE18\",\"accountsInGroupInfoIcon\":\"styles_accountsInGroupInfoIcon__rURPm\",\"detailsTitle\":\"styles_detailsTitle__1a183\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__5WGH3\",\"formsContainer\":\"styles_formsContainer__1_6me\",\"formsContainerLoginOnly\":\"styles_formsContainerLoginOnly__1JspZ\",\"createAccountForm\":\"styles_createAccountForm__3-HXs\",\"loginForm\":\"styles_loginForm__2gizT\",\"logo\":\"styles_logo__2Rs89\",\"button\":\"styles_button__7xS00\",\"learnMoreBtn\":\"styles_learnMoreBtn__3dbo1\",\"hideFormContainer\":\"styles_hideFormContainer__3dVEG\",\"showFormContainer\":\"styles_showFormContainer__pfrjc\",\"learnMoreContainer\":\"styles_learnMoreContainer__7b0Jm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"tooltipsContainer\":\"styles_tooltipsContainer__2OUqW\",\"tooltipContainer\":\"styles_tooltipContainer__2-s64\",\"tooltip\":\"styles_tooltip__1Xlei\",\"header\":\"styles_header__3_qt3\",\"data\":\"styles_data__1OBiw\",\"categoryNameContainer\":\"styles_categoryNameContainer__355KV\",\"categoryName\":\"styles_categoryName__2cYhN\",\"noFundsViewContainer\":\"styles_noFundsViewContainer__2Pefg\",\"noFundsView\":\"styles_noFundsView__3AVot\",\"closedHeader\":\"styles_closedHeader__2f9Gr\",\"makeContributionText\":\"styles_makeContributionText__2DL6e\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"successorTitle\":\"styles_successorTitle__2--gF\",\"successorName\":\"styles_successorName__8T3Dh\",\"buttonIcons\":\"styles_buttonIcons__iWXf9\",\"successorRemove\":\"styles_successorRemove__ZDNMl\",\"successorEdit\":\"styles_successorEdit__1pItX\",\"primarySuccessor2\":\"styles_primarySuccessor2__1FKpp\",\"secondarySuccessor2\":\"styles_secondarySuccessor2__3v3Wj\",\"addSuccessorContainer\":\"styles_addSuccessorContainer__Q0jHA\",\"primarySuccessorActionIcons\":\"styles_primarySuccessorActionIcons__3fxVN\",\"secondarySuccessorActionIcons\":\"styles_secondarySuccessorActionIcons__2RSuS\",\"primarySuccessorDoubleIcon\":\"styles_primarySuccessorDoubleIcon__eASvk\",\"primarySuccessorSingleIcon\":\"styles_primarySuccessorSingleIcon__2vniZ\",\"secondarySuccessorDoubleIcon\":\"styles_secondarySuccessorDoubleIcon__2EWH_\",\"secondarySuccessorSingleIcon\":\"styles_secondarySuccessorSingleIcon__3cAId\",\"form\":\"styles_form__7pRR2\",\"checkbox\":\"styles_checkbox__3xKty\",\"modal\":\"styles_modal__3tSXd\",\"formMessage\":\"styles_formMessage__1g3e6\",\"datePickerContainer\":\"styles_datePickerContainer__3S0HS\",\"successorsContainer\":\"styles_successorsContainer__2nP0K\",\"primarySuccessor\":\"styles_primarySuccessor__1BPkT\",\"secondarySuccessor\":\"styles_secondarySuccessor__2RnPt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3Yu8Z\",\"accountDetailsCard\":\"styles_accountDetailsCard___v4Rm\",\"loading\":\"styles_loading__iknPG\",\"optionDetailsCard\":\"styles_optionDetailsCard__1YJmI\",\"accountDetails\":\"styles_accountDetails__1K7Ta\",\"accountDetailsAO\":\"styles_accountDetailsAO__19ekX\",\"accountDetailsBen\":\"styles_accountDetailsBen__KUh0G\",\"accountDetailsAcctNum\":\"styles_accountDetailsAcctNum__2_EpF\",\"accountDetailsTotalVal\":\"styles_accountDetailsTotalVal__3wRYd\",\"accountDetailsOption\":\"styles_accountDetailsOption__F7J2a\",\"accountDetailsAcctType\":\"styles_accountDetailsAcctType__2Cie6\",\"accountDetailsAvailableBalance\":\"styles_accountDetailsAvailableBalance__3298i\",\"detailsTitle\":\"styles_detailsTitle__2CQzz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"navContainer\":\"styles_navContainer__3VvB4\",\"navHeader\":\"styles_navHeader__jYN53\",\"navHeaderShift\":\"styles_navHeaderShift__3niPu\",\"publicNavHeader\":\"styles_publicNavHeader__W8KtR\",\"left\":\"styles_left__3HJTh\",\"right\":\"styles_right__2OILH\",\"menuIcon\":\"styles_menuIcon__3QZX3\",\"darkerBackground\":\"styles_darkerBackground__1OXmy\",\"browserWarningContainer\":\"styles_browserWarningContainer__3e4T0\",\"browserWarningClose\":\"styles_browserWarningClose__1i2me\",\"notificationIcon\":\"styles_notificationIcon__27kdP\",\"logoHeader\":\"styles_logoHeader__3cnt1\",\"vertLine\":\"styles_vertLine__tYnwe\",\"pageTitle\":\"styles_pageTitle__1IJql\",\"sideLogo\":\"styles_sideLogo__2HkWN\",\"languageSelector\":\"styles_languageSelector__1GuCn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"sideNavContainer\":\"styles_sideNavContainer__3-_km\",\"topMenu\":\"styles_topMenu__3uagt\",\"hamburger\":\"styles_hamburger__29yUc\",\"greetings\":\"styles_greetings__3sE5W\",\"bottomMenu\":\"styles_bottomMenu__2l-k8\",\"bottom\":\"styles_bottom__33miY\",\"helpContainer\":\"styles_helpContainer__2aM0k\",\"previousLoginContainer\":\"styles_previousLoginContainer__1BuGk\",\"aoName\":\"styles_aoName__3hvPS\",\"version\":\"styles_version__NZYVB\",\"hide\":\"styles_hide__2wsXC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"valueDetails\":\"styles_valueDetails__zymNW\",\"activitySummary\":\"styles_activitySummary__FMwVJ\",\"detailTitle\":\"styles_detailTitle__2oQBv\",\"detailText\":\"styles_detailText__1CfLD\",\"summaryRow\":\"styles_summaryRow__3X65P\",\"buttonIcons\":\"styles_buttonIcons__f8NRS\"};","module.exports = __webpack_public_path__ + \"static/media/EmailConfirmation.f4ce9b6f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/2FAGraphic.77884859.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\"};","/*\n*\n* GA Helpers\n*\n*/\n\n// Google Analytics using Autotrack plugin\n// https://github.com/googleanalytics/autotrack#readme\n\nimport 'autotrack/lib/plugins/event-tracker';\nimport 'autotrack/lib/plugins/url-change-tracker';\nimport 'autotrack/lib/plugins/clean-url-tracker';\n\nimport { urlScrub } from './helpers';\n\nconst ga = window.ga;\n\nga('create', 'UA-2899718-1', 'auto');\nga('require', 'eventTracker');\nga('require', 'urlChangeTracker');\nga('require', 'cleanUrlTracker', {\n stripQuery: true,\n queryDimensionIndex: 1,\n indexFilename: 'index.html',\n trailingSlash: 'remove',\n urlFieldsFilter: (fieldsObj, parseUrl) => {\n fieldsObj.page = urlScrub(parseUrl(fieldsObj.page).pathname);\n return fieldsObj;\n },\n});\nga('send', 'pageview');","\nimport axios from 'axios';\nconst frontendConfig = window.frontendConfig;\n\nfunction configureRequest(apiPath) {\n const token = sessionStorage.getItem('token');\n axios.defaults.headers.common.Authorization = token || 'no~auth';\n axios.defaults.headers.common['Accept-Language'] = 'en'; // TRANSLATIONS remove line to activate API calls with language header\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n return frontendConfig.api + apiPath;\n}\n\nexport function GETrequest(apiPath, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.get(endPoint, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function POSTrequest(apiPath, data, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.post(endPoint, data, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function PUTrequest(apiPath, data, config = {}) {\n const endPoint = configureRequest(apiPath);\n return axios.put(endPoint, data, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function DELETErequest(apiPath, config = {}) { \n const endPoint = configureRequest(apiPath);\n return axios.delete(endPoint, config)\n .then(res => res)\n .catch(err => err.response);\n}\n\nexport function GETaddress(searchCriteria) {\n if (searchCriteria && searchCriteria.length > 2) {\n const endPoint = `https://us-autocomplete-pro.api.smartystreets.com/lookup?key=3795161896457999660&search=${searchCriteria}`;\n return axios.get(endPoint)\n .then(res => res)\n .catch(err => Promise.reject(err));\n }\n else {\n return Promise.reject('short-criteria');\n }\n}\n\nexport function GETRecaptchaToken(action) { // Gets a new recaptcha token from Google. \"action\" is a string that should describe the page for analytics.\n const RECAPTCHA_KEY = window.location.host.includes('qareg') ? process.env.REACT_APP_QAREG_RECAPTCHA_KEY : process.env.REACT_APP_PROD_RECAPTCHA_KEY;\n return new Promise(resolve => {\n window.grecaptcha.ready(() => {\n window.grecaptcha.execute(RECAPTCHA_KEY, { action })\n .then(res => resolve(res));\n });\n });\n}","/*\n *\n * Sessions constants\n *\n */\nexport const INITIALIZE_STORE = 'App_Root/components/Sessions/INITIALIZE_STORE';\n\nexport const BROWSER_WARNING = 'App_Root/components/Sessions/BROWSER_WARNING';\n\nexport const USER_LOGIN = 'App_Root/components/Sessions/USER_LOGIN';\nexport const CHANGE_USERNAME = 'App_Root/components/Sessions/CHANGE_USERNAME';\n\nexport const TOKEN_VALIDATE = 'App_Root/components/Sessions/TOKEN_VALIDATE';\nexport const TOKEN_VALIDATE_INTERVAL_ID_SET = 'App_Root/components/Sessions/TOKEN_VALIDATE_INTERVAL_ID_SET';\nexport const TOKEN_VALIDATE_INTERVAL_ID_CLEAR = 'App_Root/components/Sessions/TOKEN_VALIDATE_INTERVAL_ID_CLEAR';\nexport const SESSION_END_WARNING_TIMER_ID_SET = 'App_Root/components/Sessions/SESSION_END_WARNING_TIMER_ID_SET';\nexport const SESSION_END_WARNING_TIMER_ID_CLEAR = 'App_Root/components/Sessions/SESSION_END_WARNING_TIMER_ID_CLEAR';\nexport const VERIFY_RECAPTCHA = 'App_Root/components/Sessions/VERIFY_RECAPTCHA';\n\nexport const LANGUAGE_CHANGE = 'App_Root/components/Sessions/LANGUAGE_CHANGE';\n\nexport const RESEND_EMAIL_VALIDATION = 'App_Root/components/Sessions/RESEND_EMAIL_VALIDATION';\n\nexport const USER_REGISTRATION = 'App_Root/components/Sessions/USER_REGISTRATION';\nexport const USER_REG_INFO_SYNC = 'App_Root/components/Sessions/USER_REG_INFO_SYNC';\nexport const RESEND_REGISTRATION_EMAIL = 'App_Root/components/Sessions/RESEND_REGISTRATION_EMAIL';\n\nexport const NEW_ACCOUNT_CREATED = 'App_Root/components/Sessions/NEW_ACCOUNT_CREATED';\n\nexport const REFRESH_CLAIMS = 'App_Root/components/Sessions/REFRESH_CLAIMS';\nexport const RESET_CLAIMS = 'App_Root/components/Sessions/RESET_CLAIMS';\n\nexport const TOGGLE_SIDENAV = 'App_Root/components/Sessions/TOGGLE_SIDENAV';\nexport const TOGGLE_NOTIFICATIONS = 'App_Root/components/Sessions/TOGGLE_NOTIFICATIONS';\nexport const SET_NOTIFICATIONS_VIEWED = 'App_Root/components/Sessions/SET_NOTIFICATIONS_VIEWED';\n\nexport const TWO_FACTOR_PRECONDITION = 'App_Root/components/Sessions/TWO_FACTOR_PRECONDITION_PRECONDITION';\nexport const RSA_PRECONDITION = 'App_Root/components/Sessions/RSA_PRECONDITION';\n\nexport const TOGGLE_2FA_DIALOG = 'App_Root/components/Sessions/TOGGLE_2FA_DIALOG';\nexport const TOGGLE_AUTHYDOWN_DIALOG = 'App_Root/components/Sessions/TOGGLE_AUTHYDOWN_DIALOG';\nexport const TOGGLE_RSA_DIALOG = 'App_Root/components/Sessions/TOGGLE_RSA_DIALOG';\n\nexport const GET_USER_PREFERENCES = 'App_Root/components/Sessions/GET_USER_PREFERENCES';\nexport const SAVE_USER_PREFERENCES = 'App_Root/components/Sessions/SAVE_USER_PREFERENCES';\n\nexport const GET_NOTIFICATIONS = 'App_Root/components/Sessions/GET_NOTIFICATIONS';\n\nexport const TWO_FACTOR_ROUTE_CHANGE = 'App_Root/components/Sessions/TWO_FACTOR_ROUTE_CHANGE';\n\nexport const SAVE_BIRTHDATE = 'App_Root/components/Sessions/SAVE_BIRTHDATE';\n\nexport const DISABLE_LEFT_MENU = 'App_Root/components/Sessions/DISABLE_LEFT_MENU';\n\nexport const TOGGLE_SPLASH_HAS_DISPLAYED = 'App_Root/components/Sessions/TOGGLE_SPLASH_HAS_DISPLAYED';\n\nexport const REASONS_BLOCKED = {\n MISSING_EMAIL_REQUIRED: 'EmailOnFile',\n EMAIL_VALIDATION_REQUIRED: 'EmailValidation',\n TWO_FACTOR_REGISTRATION: 'TwoFactorRegistration',\n TWO_FACTOR_AUTHENTICATION: 'TwoFactorAuthentication',\n RSA_VERIFICATION: 'RSAVerification',\n NO_BIRTHDATE: 'BirthdateOnFile',\n};\n\nexport const TWO_FACTOR_STATUS = {\n COMPLETED: 'Completed',\n PENDING: 'Pending',\n BYPASSED: 'Bypassed',\n UNAVAILABLE: 'Unavailable',\n REQUIRED: 'Required'\n};\n\nexport const RSA_STATUS = {\n LOCKED: 'LockedOut',\n AVAILABLE: 'Available',\n PENDING: 'Pending',\n BYPASSED: 'Bypassed',\n COMPLETED: 'Completed',\n};\n\nexport const MULTIFACTOR_TYPE = {\n TWO_FACTOR: '2FA',\n RSA: 'RSA',\n AUTH: 'AUTHENTICATED',\n};\n\nexport const TWO_FACTOR_TYPES = {\n REGISTRATION: 'registrations',\n AUTHENTICATION: 'authentication',\n PROTECTED: 'protected',\n UPDATE: 'update'\n};\n\nexport const NOTIFICATION_TYPES = {\n CONTRIBUTION: 'Contribution',\n GIFTING: 'Gifting',\n ACCOUNT: 'Account',\n BANK_ACCOUNT: 'Bank Account',\n DOCUMENTS: 'Documents',\n INTERESTED_PARTY: 'Interested Party',\n};","import {\n GETrequest,\n POSTrequest,\n PUTrequest,\n} from 'utils/helpers/api_handler';\nimport {\n BROWSER_WARNING,\n INITIALIZE_STORE,\n LANGUAGE_CHANGE,\n RESEND_EMAIL_VALIDATION,\n USER_LOGIN,\n CHANGE_USERNAME,\n USER_REGISTRATION,\n USER_REG_INFO_SYNC,\n RESEND_REGISTRATION_EMAIL,\n VERIFY_RECAPTCHA,\n REFRESH_CLAIMS,\n RESET_CLAIMS,\n TOGGLE_SIDENAV,\n TOGGLE_NOTIFICATIONS,\n SET_NOTIFICATIONS_VIEWED,\n TOGGLE_2FA_DIALOG,\n TOGGLE_AUTHYDOWN_DIALOG,\n TOGGLE_RSA_DIALOG,\n TOGGLE_SPLASH_HAS_DISPLAYED,\n TWO_FACTOR_PRECONDITION,\n RSA_PRECONDITION,\n GET_USER_PREFERENCES,\n SAVE_USER_PREFERENCES,\n GET_NOTIFICATIONS,\n TWO_FACTOR_ROUTE_CHANGE,\n SAVE_BIRTHDATE,\n DISABLE_LEFT_MENU\n} from './constants';\n\n////////////////////////////////// LOGIN //////////////////////////////////\nexport function userLogin(params) {\n const response = POSTrequest('/authentication/login', params);\n return {\n type: USER_LOGIN,\n payload: response\n };\n}\n\n////////////////////////////////// LOGOUT //////////////////////////////////\nexport function userLogout(params) {\n const response = POSTrequest('/authentication/logout', params);\n\n // deletes the previously created TMX script so that a new one can be created with a correct SessionId\n const scriptToDelete = document.getElementById('tmxScript');\n scriptToDelete && document.getElementById('tmxScript').parentNode.removeChild(scriptToDelete); // if user's session times out, there may not be a scriptToDelete which causes an ugly error\n\n return {\n type: INITIALIZE_STORE,\n payload: response\n };\n}\n\n////////////////////////////////// CHANGE USERNAME WITH NEW SESSION //////////////////////////////////\nexport function changeUsername(username, password) {\n const response = PUTrequest('/agents/username', { username, password });\n\n return {\n type: CHANGE_USERNAME,\n payload: response\n };\n}\n\n////////////////////////////////// SESSION MGMT //////////////////////////////////\nexport function setBrowserWarning() {\n return {\n type: BROWSER_WARNING,\n };\n}\n\nexport function clearStore() {\n return {\n type: INITIALIZE_STORE\n };\n}\n\nexport function changeLanguage(language) {\n return {\n type: LANGUAGE_CHANGE,\n meta: { language }\n };\n}\n\nexport function resendEmailValidation() {\n const response = PUTrequest('/agents/resendEmailValidation');\n return {\n type: RESEND_EMAIL_VALIDATION,\n payload: response,\n };\n}\n\nexport function registerUser(registrationInfo) {\n const response = POSTrequest('/SimpleSignup/Register', registrationInfo);\n return {\n type: USER_REGISTRATION,\n payload: response\n };\n}\n\nexport function registerUserSync(registrationInfo) {\n return {\n type: USER_REG_INFO_SYNC,\n meta: registrationInfo\n };\n}\n\nexport function resendEmail(registrationInfo) {\n const response = POSTrequest('/SimpleSignup/ResendConfirmationEmail', registrationInfo);\n return {\n type: RESEND_REGISTRATION_EMAIL,\n payload: response\n };\n}\n\nexport function verifyRecaptcha(recaptchaToken) {\n const response = POSTrequest('/Recaptcha', { Token: recaptchaToken });\n return {\n type: VERIFY_RECAPTCHA,\n payload: response,\n meta: { recaptchaToken }\n };\n}\n\nexport function refreshClaims() { // This only refreshes claims, not the token. The token that is returned is the same as the existing session.\n const response = GETrequest('/authentication/ClaimRefresh');\n return {\n type: REFRESH_CLAIMS,\n payload: response,\n };\n}\n\nexport function resetClaims() {\n const response = GETrequest('/authentication/claims');\n return {\n type: RESET_CLAIMS,\n payload: response,\n };\n}\n\nexport function toggleSidenav(isOpen) {\n return {\n type: TOGGLE_SIDENAV,\n meta: { isOpen }\n };\n}\n\nexport function toggleNotifications(isOpen) {\n return {\n type: TOGGLE_NOTIFICATIONS,\n meta: { isOpen }\n };\n}\n\nexport function setNotificationsViewed() {\n const response = POSTrequest('/agents/notificationsviewed');\n return {\n type: SET_NOTIFICATIONS_VIEWED,\n payload: response,\n };\n}\n\nexport function toggle2FADialog() {\n return {\n type: TOGGLE_2FA_DIALOG\n };\n}\n\nexport function toggleAuthyDownDialog() {\n return {\n type: TOGGLE_AUTHYDOWN_DIALOG,\n };\n}\n\nexport function toggleRSADialog() {\n return {\n type: TOGGLE_RSA_DIALOG,\n };\n}\n\nexport function get2FAPrecondition(isWithdrawal = false) {\n const response = GETrequest('/TwoFactor/precondition');\n return {\n type: TWO_FACTOR_PRECONDITION,\n payload: response,\n meta: { isWithdrawal }\n };\n}\n\nexport function getRSAPrecondition() {\n const response = GETrequest('/RSA/precondition');\n return {\n type: RSA_PRECONDITION,\n payload: response\n };\n}\n\nexport function getUserPreferences() {\n const response = GETrequest('/UserRegistration/Preferences');\n return {\n type: GET_USER_PREFERENCES,\n payload: response\n };\n}\n\nexport function saveUserPreferences(preferences) {\n const response = PUTrequest('/UserRegistration/Preferences', preferences);\n return {\n type: SAVE_USER_PREFERENCES,\n payload: response\n };\n}\n\nexport function getNotifications() {\n const response = GETrequest('/agents/Notifications');\n return {\n type: GET_NOTIFICATIONS,\n payload: response\n };\n}\n\nexport function twoFaRouteChange(route) {\n return {\n type: TWO_FACTOR_ROUTE_CHANGE,\n meta: { route }\n };\n}\n\nexport function saveBirthdate(birthdate) {\n const response = PUTrequest('/agents/birthdate', birthdate);\n return {\n type: SAVE_BIRTHDATE,\n payload: response\n };\n}\n\nexport function toggleSplashHasDisplayed() {\n return {\n type: TOGGLE_SPLASH_HAS_DISPLAYED,\n };\n}\n\n////////////////////////////////// NAVIGATION MENU //////////////////////////////////\nexport function setDisableLeftMenu(disable) {\n return {\n type: DISABLE_LEFT_MENU,\n payload: disable\n };\n}","import { POSTrequest } from './api_handler';\nimport { store } from 'src/index';\n\nexport function persistClientErrors(error) {\n\n const state = store.getState();\n\n const minimizedState = {\n session: state.session,\n url: window.location.href,\n browser: {\n vendor: window.navigator.vendor,\n version: window.navigator.appVersion,\n }\n };\n\n const params = {\n StackTrace: JSON.stringify(error),\n StateData: JSON.stringify(minimizedState),\n };\n\n if (state.session.token || error.type) {\n POSTrequest('/error', params)\n .catch(() => {\n console.warn('Client Error:', params); //eslint-disable-line no-console\n });\n }\n}","// Keep common labels, buttons and messages in this file\nimport React from 'react';\n\nconst buttons = {\n add: 'Add',\n agree: 'I Agree',\n agree_terms: 'I agree to the terms and conditions',\n back: 'Back',\n begin: 'Begin',\n cancel: 'Cancel',\n change: 'Change',\n close: 'Close',\n confirm: 'Confirm',\n continue: 'Continue',\n create: 'Create',\n delete: 'Delete',\n done: 'Done',\n edit: 'Edit',\n filter: 'Filter',\n finish: 'Finish',\n learn_more: 'Learn More',\n next: 'Next',\n ok: 'OK',\n print: 'Print',\n read_terms: 'Terms and conditions',\n register: 'register',\n reject: 'Reject',\n remove: 'Remove',\n revoke: 'Revoke',\n save: 'Save',\n skip: 'Skip',\n submit: 'Submit',\n toggle_password: 'Toggle password visibility',\n unlink: 'Unlink',\n update: 'Update',\n validate: 'Validate',\n view: 'View',\n};\nconst errors = {\n age_limits(minAge, maxAge) { return `Age must be between ${minAge} and ${maxAge}.`; }, // eslint-disable-line\n amount_invalid: 'Enter a valid amount.',\n copy_email: 'Please type email to confirm.',\n copy_ssn_tin: 'Please type Social Security Number / TIN to confirm.',\n date_invalid: 'Select a valid date.',\n date_limits(minDate, maxDate) { return `Date must be between ${minDate} and ${maxDate}.`; }, // eslint-disable-line\n email_invalid: 'Email address is not valid.',\n emails_must_match: 'Emails must match.',\n field_max_length_20: 'Field cannot exceed 20 characters.',\n field_max_length_40: 'Field cannot exceed 40 characters.',\n no_trailing_leading_spaces: 'Field cannot contain leading or trailing spaces.',\n no_spaces_anywhere: 'This field cannot contain spaces',\n password_criteria: 'Password does not meet criteria.',\n passwords_match: 'Passwords must match.',\n phone_number_too_short: 'Phone number needs to be 10 digits.',\n postal_code_reqs: 'Postal code must be 5 or 9 digits long.',\n required: 'Field is required.',\n school_required: 'School is required. Click the button to select one.',\n select_option: 'Please select an option.',\n smarty_streets_generic: 'Address validation has stopped working. You may be sending too many requests, or your address may be malformed.',\n ssn_length: 'Social security number must be 9 digits.',\n ssns_tins_must_match: 'Social Security Numbers / TINs must match.',\n terms_agree: 'You must agree to the terms and conditions.',\n username_min_length: 'Username must be at least 6 characters.',\n username_with_numbers: 'Username cannot have more than 3 consecutive digits.',\n alphabetic_and_allowable_characters_only(allowableChars) {\n return `Allowable characters: alphabetic and ${allowableChars}`;\n },\n alpha_numeric_only: 'Please use only alphanumeric characters.',\n alpha_numeric_and_allowable_characters_only(allowableChars) {\n return `Allowable characters: alphanumeric and ${allowableChars}`;\n },\n};\nconst formLabels = {\n address_city: 'City',\n address_postalCode: 'Postal Code',\n address_state: 'State',\n address_street1: 'Street Address 1',\n address_street2: 'Street Address 2',\n beneUtahTaxPayer: 'Utah taxpayer/resident',\n birthdate: 'Birth Date',\n clear_state: 'Clear State',\n email: 'Email',\n email_confirm: 'Confirm Email',\n firstName: 'First Name',\n homePhone: 'Home Phone',\n lastName: 'Last Name',\n middleName: 'Middle Name',\n password: 'Password',\n password_confirm: 'Confirm Password',\n pin: 'Pin',\n ssn: 'Social Security Number',\n tin: 'TIN',\n username: 'Username',\n utahTaxPayer: 'I am a Utah tax payer',\n};\n\nconst mountain_time_zone = 'MT';\nconst intl_address = 'Do you have an international address? If so, please submit form 500, Account Information Change';\nconst current_password = 'Current password';\nconst unsaved_changes = 'Are you sure you want to leave? There are unsaved changes on this page.';\nconst recaptchaLanguage = 'This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.';\nconst NA = 'N/A';\nconst fullBalanceWithdrawalNote = '*If this is a full-balance withdrawal, the actual amount will be based on the market closing price of your account when the transaction is completed.';\n\nconst msg_available_balance_contribution = (\n <>\n

All gift contributions to my529 accounts are subject to a hold, regardless of whether they are contributed directly from a bank account, from a debit card or by check.

\n \n \n);\n\nexport {\n buttons,\n errors,\n formLabels,\n mountain_time_zone,\n intl_address,\n current_password,\n unsaved_changes,\n recaptchaLanguage,\n NA,\n fullBalanceWithdrawalNote,\n msg_available_balance_contribution,\n};","/* eslint-disable brace-style */\nimport React, { Fragment } from 'react';\nimport parse from 'html-react-parser';\nimport {\n buttons,\n errors,\n formLabels,\n intl_address,\n recaptchaLanguage,\n current_password,\n unsaved_changes,\n NA,\n fullBalanceWithdrawalNote,\n mountain_time_zone,\n msg_available_balance_contribution\n} from './common';\nimport { currencyFormatter } from '@frontend/common';\n\nimport styles from './en.module.css';\n\n/* eslint-disable quotes */\nconst English = {\n AccountDetails: {\n nav_path(accountId) { return `/accounts/${accountId}`; }, // Will need some clarification on what needs to be translated\n nav_path_regex: /(accounts)\\/\\d+/g,\n nav_title: 'Account Details',\n investment_path: 'investment-path',\n action_path: 'actions',\n },\n AccountOwnerCard: {\n head_title: 'Account Owner',\n text_name_change_form: 'To change the account owner name, please submit form 500, Account Information Change.',\n },\n AccountOwnerStep: {\n btn_continue: buttons.continue,\n err_copy_ssn: errors.copy_ssn_tin,\n err_phone_number_too_short: errors.phone_number_too_short,\n err_smarty_streets: errors.smarty_streets_generic,\n err_ssns_must_match: errors.ssns_tins_must_match,\n head_account_owner: 'Account Owner',\n lbl_birthdate: formLabels.birthdate,\n lbl_clear_state: formLabels.clear_state,\n lbl_firstName: formLabels.firstName,\n lbl_homePhone: formLabels.homePhone,\n lbl_lastName: formLabels.lastName,\n lbl_middleName: formLabels.middleName,\n lbl_ssn_tin: `${formLabels.ssn} / ${formLabels.tin}`,\n lbl_ssn_tin_confirm: `Confirm ${formLabels.ssn} / ${formLabels.tin}`,\n lbl_utah_tax_payer: formLabels.utahTaxPayer,\n msg_ao_info_saved: 'Account owner information saved.',\n text_what_is_ao: [\n 'The account owner must be age 18 or older.',\n 'This person must have a valid U.S.Social Security or Taxpayer Identification Number.',\n 'The account owner is the person who controls this account(designates the beneficiary, directs all investments, receives all statements, etc).',\n 'There can only be one account owner on each my529 account.',\n ],\n },\n Accounts: {\n head_title: 'Summary',\n nav_path: '/accounts',\n accounts_path: 'accounts',\n nav_title: 'Accounts',\n text_account_closed: 'Account closed on',\n },\n TransactionsHub: {\n head_title: 'Transactions',\n nav_title: 'Transactions',\n nav_path: '/transactions-hub',\n },\n AccountsSummary: {\n btn_add_account: 'Add Account',\n btn_csa_account: 'Account',\n btn_my529_account: 'my529 Account',\n head_account_type: 'Account Type:',\n head_beneficiary: 'Beneficiary',\n head_date_opened: 'Date Opened',\n head_interested_party: 'Interested Party',\n head_market_date: 'Market Date',\n head_total_accts: 'Grand Total as of',\n head_total_value: 'Total Value',\n head_ytd_return: 'YTD Return',\n nav_contribution: 'Contribution',\n nav_option_change: 'Option Change',\n nav_transfer: 'Transfer',\n nav_withdrawal: 'Withdrawal',\n },\n AccessCardsLearnMore: {\n text_faq: [\n {\n question: 'What is my529 Access Discover® Prepaid Card?',\n answer: 'The my529 Access Card is a convenient way for account owners and beneficiaries to use money withdrawn from their my529 account to pay for qualified education expenses. my529 Access Card is a prepaid card issued by Central Bank of Kansas City.',\n },\n {\n question: 'Why use my529 Access Card?',\n answer: 'The my529 Access Card creates convenience and control for the account owner. Each transaction where the my529 Access Card is used will appear on the Card Services monthly statement, making the my529 Access Card a central place to track qualified education expenses. The my529 Access Card is designed to limit merchants who offer products and services such as alcohol, gambling, or adult entertainment to protect against nonqualified purchases.'\n },\n {\n question: 'What can my529 Access Card be used for?',\n answer: [\n 'The card can be used to pay qualified education expenses, which include, but are not limited to, the following:',\n [\n 'Mandatory fees, books, supplies and equipment required for the beneficiary to enroll and attend an eligible higher educational institution.',\n 'Computers, peripheral equipment, software and internet access while enrolled in an eligible higher educational institution.',\n 'Expenses for services for a special needs beneficiary to enroll and attend an eligible educational institution.'\n ]\n ]\n },\n {\n question: 'How does the card work?',\n answer: [\n 'my529 Access Card can be used at select merchants for in-store and online purchases where Discover is accepted.',\n 'my529 Access Card is funded from the my529 account directly. Once approved and set up, the account owner can add money to the my529 Access Card to pay for qualified education expenses. The account owner has sole control of these accounts and is the only person able to request a withdrawal from their my529 account.',\n 'Account owners have the ability to withdraw funds from their my529 accounts and add those funds to their my529 Access Card. Once funds are transferred to the card, they are considered withdrawn from my529 and are no longer invested in the account owners’ my529 accounts. Per IRS rules, funds must be spent within the same period as the expense was incurred to be considered a qualified withdrawal.',\n ],\n },\n {\n question: 'Can I use my529 Access Card to pay tuition?',\n answer: 'Yes. However, please be aware that your college will likely charge a fee that is a percentage of the transaction amount for using the card to pay tuition. Contact Card Services to explore other options—such as bill pay or e-check via electronic funds transfer direct debit—to pay tuition using your my529 Access Card. You can reach Card Services at 1.844.545.0805.',\n },\n {\n question: 'How do I transfer money from my my529 account to my529 Access Card?',\n answer: 'Once you’re approved, your my529 Access Card will be one of the available online withdrawal options you can choose from in your my529 account.',\n },\n {\n question: 'What if I transfer more money than I need to my my529 Access Card? Can I have it reinvested in my my529 account?',\n answer: 'No. Once funds are transferred to the my529 Card, they cannot be reversed or transferred back to my529.',\n },\n {\n question: 'Who can apply for a my529 Access Card?',\n answer: 'Applicants must have a beneficiary who is 17 years or older, a physical domestic (U.S.) address, and an active my529 individual or institutional account that has been open for 6 months. Applicants must also register with an email address that is not already in use within the Card Services system.',\n },\n {\n question: 'Once I have been approved, how do I activate my my529 Access Card? ',\n answer: [\n 'Once an account owner has applied and been approved for the my529 Access Card, they will receive a virtual card. However, it may take up to two days before the card is linked to their my529 account and ready for use. The card requires no activation. Account owners are able to withdraw and transfer funds to their card as soon as it is linked to their my529 account.',\n 'If a secondary card is requested for a beneficiary, the beneficiary will automatically receive both a virtual and a physical card. An account owner has the option to request a physical card. Physical my529 Access Cards will require activation by calling Card Services at 1.844.545.0805, or by logging in to Card Services at http://my529accesscard.com.'\n ]\n },\n {\n question: 'What if I have my529 accounts for other beneficiaries?',\n answer: [\n 'A person who owns my529 accounts for multiple beneficiaries only needs a single my529 Access Card account. The account owner would receive a primary my529 Access Card and has the option to request a secondary card for each my529 beneficiary. Account owners may have one card with a maximum of 10 beneficiaries.',\n 'All withdrawals from the owner’s my529 accounts will go to the primary my529 Access Card. Funds could then be transferred to the secondary card accounts by logging in to Card Services. Each card will have the cardholder’s (either account owner or beneficiary) name on it. Only the my529 account owner can fund the beneficiary cards. Beneficiaries cannot move funds between cards.',\n ],\n },\n {\n question: 'What is the status of funds moved to my my529 Access Card?',\n answer: 'When funds are transferred from the my529 account to your my529 Access Card, it is the same as making a withdrawal from your my529 account. Money that is transferred to your my529 Access Card is no longer invested and is considered withdrawn from my529.',\n },\n {\n question: 'Does the beneficiary build credit by having a my529 Access Card? ',\n answer: 'No, the my529 Access Card is a prepaid card and does not build credit for the beneficiary or the account holder.',\n },\n {\n question: 'Are there any fees beyond the established my529 program fees for this card?',\n answer: [\n 'Card Services charges a $1 Monthly Maintenance Fee after a nine (9) month grace period. The fee is assessed on the last day of the month after the grace period.',\n 'A $1 PIN Purchase Fee also applies. The PIN Purchase Fee of $1 occurs when the card is used to make a purchase and the PIN is entered. Consult the Fee Schedule for more information and complete details.',\n 'my529 Card accounts with a balance of $0 will not be charged a fee.'\n ]\n },\n {\n question: 'Are there any merchant restrictions?',\n answer: 'my529 Access Card restricts usage at certain businesses, such as those that offer alcohol, gambling or adult entertainment.',\n },\n {\n question: 'What if my card is lost or stolen?',\n answer: 'Always keep your PIN in a safe place and never write it on the card. If your card or PIN is lost or stolen, contact Card Services immediately at 1.844.545.0805. Your card is protected by Discover’s Zero Liability Policy. Conditions and exceptions apply, see the Cardholder Agreement for complete details.',\n },\n {\n question: 'What if my my529 Access Card account is closed?',\n answer: 'If a my529 Access Card account is closed for any reason, you will be notified and any debit card withdrawal schedules from the my529 account will be canceled. This includes both one-time and recurring withdrawals.',\n },\n {\n question: 'If my my529 account is closed, what happens to funds remaining on the card?',\n answer: 'All funds added to a my529 Access Card are available for use to pay for qualified education expenses until they have been exhausted. Per IRS rules, funds must be spent within the same period as the expense was incurred to be considered a qualified withdrawal.',\n },\n {\n question: 'Are there limits for how much can be transferred to a my529 Access Card? ',\n answer: 'Yes, the my529 Access Card has a maximum balance limit of $75,000.'\n },\n {\n question: 'Are there transaction limits for the my529 Access Card? ',\n answer: (\n <>\n Yes. The following chart outlines the daily transaction limits for the my529 Access Card.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Card Activity LimitsMaximum
Purchases - Daily{currencyFormatter(15000)}
Purchases (Point-of-sale) - Daily{currencyFormatter(10000)}
Purchases (Signature) - Daily{currencyFormatter(10000)}
Bill Payment (Electronic) - Daily{currencyFormatter(30000)}
Bill Payment (Paper Check) - Daily{currencyFormatter(30000)}
\n \n )\n },\n {\n question: 'Does my529 Access Card come with overdraft protection?',\n answer: 'No, the card does not include overdraft protection.'\n },\n {\n question: 'Will my funds be ready to use immediately?',\n answer: 'No. It takes 1-3 business days for funds to be available after a withdrawal request is submitted online at my529.org.',\n },\n {\n question: 'Can I set up recurring withdrawals from my my529 account to my Access Card? How does that work?',\n answer: 'Yes, you may set up recurring monthly withdrawals. This option will be available during the online withdrawal process from your my529 account.',\n },\n {\n question: 'Can a my529 Access Card be used to withdraw funds from an ATM?',\n answer: 'No. The card cannot be used for ATM withdrawals.',\n },\n {\n question: 'Where do I find my my529 Access Card statement?',\n answer: 'Log in to Card Services at http://my529accesscard.com to view or download your monthly statements.',\n },\n {\n question: 'Can I use my529 Access Card to pay for nonqualified expenses? ',\n answer: 'Yes, but if you take a withdrawal to pay for nonqualified expenses with a my529 Access Card, you will be subject to taxes and penalties as outlined by the Internal Revenue Service regarding the use of 529 plan funds.',\n },\n {\n question: 'Whom should I notify if I need to update my mailing address?',\n answer: [\n 'It is important to remember that you need to update two different accounts: my529 and my529 Access Card.',\n [\n 'Contact my529 at 1.800.418.2551 or log in to your account at my529.org.',\n 'Log in to your my529 Card through Card Services at http://my529accesscard.com or call 1.844.545.0805.'\n ],\n 'Please note: updating your information in one location doesn’t automatically update your information in the other.'\n ],\n },\n {\n question: 'Who receives the 1099-Q form?',\n answer: 'Transferring money to a my529 Access Card is a withdrawal from your my529 account. The account owner will receive a 1099-Q form for all withdrawals from a my529 account within a tax year.',\n },\n {\n question: 'Whom do I call if I have a question about my529 Access Card?',\n answer: 'Contact Card Services at 1.844.545.0805 with all questions regarding the my529 Access Card.',\n },\n {\n question: 'I see this is a Discover Card. Where can I use it?',\n answer: 'The my529 Access Card is accepted at select merchants where Discover is accepted.',\n },\n {\n question: 'Am I able to log in to my account at Discover.com to check my my529 Access Card balance? ',\n answer: 'No. Log in to Card Services at http://my529accesscard.com or call 1.844.545.0805 to check your my529 Access Card balance.',\n },\n {\n question: 'Will Card Services be able to view my my529 account balance?',\n answer: 'No. Card Services will not have any information regarding the account owner’s my529 account balances or transactions.',\n },\n {\n question: 'Is there a Discover rewards program associated with the my529 Access Card?',\n answer: 'No. There are no Discover rewards programs associated with the my529 Access Card.',\n },\n ],\n title_learn_more: 'Access Cards',\n learn_more_footer: 'The my529 Access Discover® Prepaid Card is issued by Central Bank of Kansas City, Member FDIC. Discover and the Discover acceptance mark are service marks used by Central Bank of Kansas City under license from Discover Financial Services. Certain fees, terms, and conditions are associated with the approval, maintenance, and use of the Card. You should consult your Cardholder Agreement and Fee Schedule at http://my529accesscard.com. If you have any questions regarding the Card or such fees, terms, and conditions, you can contact us 24/7/365 toll-free at 1-844-545-0805.',\n },\n AddBankModal: {\n btn_cancel: buttons.cancel,\n btn_agree: buttons.agree,\n err_invalid_routing: 'Enter a valid routing number.',\n err_copy: 'Please type bank account number to confirm.',\n err_required: errors.required,\n err_routing_length: 'Routing number must be 9 digits.',\n err_accounts_match: 'Bank Account Numbers do not match.',\n err_allowable_chars: \"Allowable characters: alphanumeric and .,':#/-\",\n head_modal_title: 'Add Bank Account',\n lbl_account_holder: 'Account Holder',\n lbl_account_number: 'Account Number',\n lbl_confirm_account_number: 'Confirm Account Number',\n lbl_checking: 'Checking',\n lbl_nickname: 'Account Nickname',\n lbl_routing: 'Routing Number',\n lbl_savings: 'Savings',\n msg_account_added: 'Account added.',\n text_required_language_1: 'The linked account must be a checking or savings account at a bank or credit union located in the United States.',\n text_required_language_2: 'You must own the linked account and your name must be in the account title.',\n text_required_language_3: 'my529 will verify the information you provide with the appropriate financial institution.',\n text_required_language_4: 'Please note that my529 does not accept every bank or financial institution. If you receive a \"Not Accepted\" message, please try an account from a different institution.',\n text_required_language_5: 'I authorize my529 to initiate, and my financial institution to honor, electronic payments from my linked account. This authority pertains to the linked bank account listed above. The information I have provided is accurate. I understand that rejected transactions or insufficient funds could cause fees to be assessed by my529 and/or my financial institution.',\n text_permission_bank_account_holder: 'This account cannot fund online contributions.',\n },\n AddBirthdate: {\n btn_logout: 'Log Out',\n head_incomplete_records: 'Incomplete Records',\n lbl_birthdate: formLabels.birthdate,\n lbl_submit: buttons.submit,\n msg_birthdate_updated: 'Birth date updated.',\n nav_path: '/add-birthdate',\n nav_title: 'Birth Date Required',\n text_incomplete_records: 'Please enter the date of birth for the account owner:',\n text_support(supportNumber) { return parse(`If you are experiencing difficulties, call my529 at ${supportNumber}.`); },\n },\n AddMissingEmailWhileBlocked: {\n text_missing_email1: 'In an ongoing effort to provide the best possible service, please add an email address. After submitting the information, my529 will send an email to the address you provided that contains a validation link. If you do not receive the email, please check your spam folder.',\n text_missing_email2: 'After you receive the message, click on the link provided in the email and follow the prompts to log in.',\n text_missing_email3: 'For the security of your account, you will be logged out while you verify your new email address.',\n },\n AddressCard: {\n btn_delete(addressType) { return `${buttons.delete} ${addressType}`; },\n btn_update(addressType) { return `${buttons.change} ${addressType}`; },\n err_postal_code_length: errors.postal_code_reqs,\n err_required: errors.required,\n err_smarty_streets: errors.smarty_streets_generic,\n err_street1_max_length: errors.field_max_length_40,\n head_title: 'Addresses',\n msg_address_deleted: 'Address deleted.',\n msg_address_updated: 'Address updated.',\n text_intl_address: intl_address,\n },\n AppTour: {\n btn_back: buttons.back,\n btn_finish: buttons.finish,\n btn_next: buttons.next,\n btn_skip: buttons.skip,\n head_more_info: 'More Information',\n head_nav: 'Navigation',\n head_notifications: 'Notifications',\n head_table_menu: 'Tables - Row Menu',\n head_table_search: 'Tables - Search & Filter',\n head_transactions: 'Transactions',\n head_welcome: 'Welcome',\n text_dont_show: 'Do not show again',\n text_more_info: \"When additional information is available about a term or feature, you'll see an icon like the one below. Simply hover over the icon to reveal more information.\",\n text_nav: 'Left hand main navigation can be expanded to find all the familiar pieces of Login at my529.',\n text_notifications: 'Right hand notifications can be expanded to see that you are always up to date.',\n text_table_menu: \"You'll see a lot of data tables throughout the application. Often times, each row will have a menu that can be used to view more details or take an action.\",\n text_table_search: 'Data tables will often have the ability to search/filter the data. That is done by clicking on the Search icon and typing a search term.',\n text_transactions1: 'Contributions',\n text_transactions2: 'Click a button to perform a transaction',\n text_transactions3: 'Click the Transactions menu to see all options',\n text_transactions4: \"Close this website tour, and click an account number to view that account's detail. In the bottom right corner of the page, notice this action icon.\",\n text_transactions: 'Transactions can be accessed multiple ways. After closing this website tour, scroll down to see one of these options:',\n text_welcome2: 'Complete this tour to see where to find your information and how to perform a transaction.',\n text_welcome: 'The my529 account you created to support a journey toward a higher education has a new smile.',\n },\n BalanceByDate: {\n btn_filter: 'Filter Accounts',\n lbl_date: 'Date',\n text_NA: NA,\n title_account_numbers: 'Account Numbers',\n title_bene_names: 'Beneficiary Names',\n title_investment_options: 'Investment Options',\n },\n BankAccountsLearnMore: {\n head_title: 'Bank Accounts',\n text_info_1: 'Electronic contributions can be submitted without completing the bank verification process on this page.',\n text_info_2: 'The account owner bank accounts are linked to your my529 accounts and may be used for contributions immediately. The bank accounts may require verification before they can be used to receive electronic withdrawals from your my529 accounts.',\n text_info_bank_hold(ACHBankWithdrawalLanguage) { return `You will not be able to make a withdrawal to a newly linked bank account from my529 for ${ACHBankWithdrawalLanguage} business days after linking the bank account. Please plan accordingly.`; },\n text_info_3: 'The following types of withdrawals must be done by submitting a completed Withdrawal Request form (form 300):',\n text_info_4: [\n 'Rollover to another 529 plan or to an ABLE account',\n 'Withdrawals to international educational institutions and account owner/agents and beneficiaries with foreign addresses',\n 'Withdrawals requiring a signature guarantee',\n ],\n text_info_5: 'A signature guarantee is required on your withdrawal request for',\n text_info_6(amount, days) {\n return [\n 'an account ownership change in the previous 10 calendar days',\n `withdrawal request of ${currencyFormatter(amount)} or more`,\n `multiple withdrawals equaling ${currencyFormatter(amount)} or more within a rolling ${days}-day period`,\n ];\n },\n text_info_7: 'UGMA/UTMA accounts are not eligible for electronic withdrawals because withdrawal checks need to be noted when sourced from UGMA/UTMA funds.',\n text_info_8: 'Qualified withdrawals of K-12 tuition expenses will be distributed only to the account owner.',\n },\n BeneContact: {\n btn_add_address: 'Click here to add address',\n title_update_bene_address: 'Update Beneficiary Address',\n text_no_address(addressType) { return `No ${addressType} address has been provided.`; },\n },\n BeneContactForm: {\n btn_change: buttons.change,\n btn_delete: buttons.delete,\n err_field_required: errors.required,\n err_postal_code: errors.postal_code_reqs,\n err_smarty_streets: errors.smarty_streets_generic,\n err_street1_max_length: errors.field_max_length_40,\n head_title: 'Beneficiary Contact',\n head_title_beneficiary_contact: 'Beneficiary Contact',\n msg_address_changed: 'Address changed.',\n msg_address_deleted: 'Address deleted.',\n msg_unsaved_changes: unsaved_changes,\n text_intl_address: intl_address,\n },\n BeneficiaryStep: {\n btn_back: buttons.back,\n btn_continue: buttons.continue,\n err_copy_ssn: errors.copy_ssn_tin,\n err_phone_number_too_short: errors.phone_number_too_short,\n err_smarty_streets: errors.smarty_streets_generic,\n err_ssns_must_match: errors.ssns_tins_must_match,\n head_beneficiary: 'Beneficiary',\n lbl_birthdate: formLabels.birthdate,\n lbl_cancel: formLabels.cancel,\n lbl_clear_state: formLabels.clear_state,\n lbl_existing_bene: 'New Account For Existing Beneficiary',\n lbl_firstName: formLabels.firstName,\n lbl_lastName: formLabels.lastName,\n lbl_mailing_is_same_as_ao: 'Mailing address is same as Account Owner',\n lbl_middleName: formLabels.middleName,\n lbl_physical_is_same_as_ao: 'Physical address is same as Account Owner',\n lbl_relationship: 'Relationship to Account Owner',\n lbl_ssn_tin: `${formLabels.ssn} / ${formLabels.tin}`,\n lbl_ssn_tin_confirm: `Confirm ${formLabels.ssn} / ${formLabels.tin}`,\n lbl_utah_tax_payer: formLabels.beneUtahTaxPayer,\n msg_bene_info_saved: 'Beneficiary information saved.',\n text_what_is_bene: [\n 'The beneficiary is the person whose qualified education expenses are expected to be paid from the account.',\n 'You may name only one beneficiary per account.',\n 'The beneficiary must have a valid U.S. Social Security or Taxpayer Identification Number.',\n 'You may name yourself as the beneficiary.',\n 'The person designated as a beneficiary has no independent claim, right, or access to any funds in an account solely by virtue of such designation.',\n ],\n },\n ComposableSearch: {\n text_search_suggestion(filterTerm, columnTitle) { return `Find \"${filterTerm}\" in ${columnTitle}`; },\n },\n ConfirmationStep: {\n btn_to_home: 'Home',\n head_congratulations: 'Congratulations!',\n text_account_created: 'You have successfully completed creating your account.',\n text_account_number: 'Account Number',\n text_add_another_account: 'Add Another Account',\n },\n Contributions: {\n head_title_account_owner: 'Account Owner',\n lbl_one_time: 'One-Time',\n lbl_recurring: 'Recurring',\n lbl_special_occasion: 'Special Occasion',\n msg_contribution_scheduled: 'Contribution scheduled.',\n msg_contribution_updated: 'Contribution updated.',\n nav_title_edit: 'Edit Contributions',\n nav_title_new: 'New Contributions',\n title_duplicate_contribution: 'Create Duplicate Contribution?',\n },\n ContributionOneTime: {\n msg_unsaved_changes: unsaved_changes,\n err_account_select: 'Select an account or remove the row.',\n err_bankAccount_select: 'Select an existing bank account or add a new one.',\n err_step_does_not_exist: 'Step does not exist!',\n lbl_step_labels: ['Amount', 'Date & Bank Account', 'Terms & Conditions', 'Print Review'], //TODO: Removed 'Contribution' from date step. Confirm this is ok. Better on mobile\n },\n ContributionOneTimeStep0: {\n lbl_add_account: 'Add account',\n lbl_amount: 'Amount',\n lbl_remove_account: 'Remove account',\n lbl_selected_account: 'Selected Account',\n err_amount_min_max(min, max) { return `Enter an amount between ${min} and ${max}.`; },\n text_total: 'Total:',\n },\n ContributionOneTimeStep1: {\n btn_add_bank: 'Add Bank Account',\n lbl_contribution_date: 'Contribution Date',\n lbl_bank_account: 'Bank Account',\n lbl_add_bank: 'Add new bank account',\n },\n ContributionOneTimeStep2: {\n lbl_read_terms: 'I have read and understand the above terms and conditions.',\n },\n ContributionOneTimeStep3: {\n text_print_copy: 'Please print a copy of this page for your records.',\n text_timezone: mountain_time_zone,\n },\n ContributionOneTimeReview: {\n title_account_number: 'Account Number',\n title_amount: 'Amount',\n title_bank_account: 'Bank Account',\n title_bene_name: 'Beneficiary Name',\n title_date: 'Date',\n title_total: 'Total:',\n },\n ContributionRecurring: {\n msg_unsaved_changes: unsaved_changes,\n err_bankAccount_select: 'Select an existing bank account or add a new one.',\n err_end_date_after_start: 'End date must occur after start date.',\n err_end_date_after_both: 'End date must occur after both start dates.',\n err_second_date_required: 'Second date is required for twice monthly contributions.',\n err_second_date_within_month: 'Date must occur within 1 month after first start date.',\n err_step_does_not_exist: 'Step does not exists.',\n lbl_step_labels: ['Amount & Bank Account', 'Contribution Frequency', 'Terms & Conditions', 'Print Review'],\n text_end_before_next_run: 'Recurring contribution is scheduled to end before next run date.',\n text_next_run: 'Next run date:',\n },\n ContributionRecurringStep0: {\n btn_add_bank: 'Add Bank Account',\n err_amount_between(minAmount, maxAmount, twiceMonthlyMaxAmount) { return `Enter an amount between ${minAmount} and ${maxAmount} for monthly contributions, or between ${minAmount} and ${twiceMonthlyMaxAmount} for twice monthly contributions.`; },\n lbl_amount: 'Amount',\n lbl_bank_account: 'Bank Account',\n lbl_selected_account: 'Selected Account',\n text_add_new_bank: 'Add a new bank account',\n },\n ContributionRecurringStep1: {\n err_amount_between(minAmount, maxAmount, twiceMonthlyMaxAmount) { return `Go back and enter an amount between ${minAmount} and ${maxAmount} for monthly contributions, or between ${minAmount} and ${twiceMonthlyMaxAmount} for twice monthly contributions.`; },\n err_max_date: 'Date must occur within 1 month after first start date.',\n lbl_first_date(isEditing, monthly) { return isEditing ? 'Next Scheduled Day' : monthly ? 'Contribution Start Date' : 'First Start Date'; }, // eslint-disable-line\n lbl_monthly: 'Monthly',\n lbl_option_end_date: 'Optional End Date',\n lbl_second_date(isEditing) { return isEditing ? 'Following Scheduled Day' : 'Second Start Date'; },\n lbl_twice_monthly: 'Twice Monthly',\n },\n ContributionRecurringStep2: {\n lbl_read_terms: 'I have read and understand the above terms and conditions.',\n },\n ContributionRecurringStep3: {\n text_print_copy: 'Please print a copy of this page for your records.',\n text_timezone: mountain_time_zone,\n },\n ContributionRecurringReview: {\n text_scheduled_days(monthly, day1, day2) { return monthly ? `On the ${day1} of every month` : `On the ${day1} and ${day2} of every month`; },\n title_account_number: 'Account Number:',\n title_amount: 'Amount',\n title_bank_account: 'Bank Account:',\n title_bene_name: 'Beneficiary Name:',\n title_end_date: 'End Date:',\n title_next_date: 'Next Contribution Date:',\n title_scheduled_day(monthly) { return monthly ? 'Scheduled Day:' : 'Scheduled Days:'; }\n },\n ContributionSpecial: {\n msg_unsaved_changes: unsaved_changes,\n err_account_select: 'Select an account or remove the row.',\n err_bankAccount_select: 'Select an existing bank account or add a new one.',\n err_end_date_after_start: 'End date must occur after start date.',\n err_step_does_not_exist: 'Step does not exists.',\n lbl_step_labels: ['Amount & Date', 'Bank Account', 'Terms & Conditions', 'Print Review'],\n },\n ContributionSpecialStep0: {\n err_amount_min_max(min, max) { return `Enter an amount between ${min} and ${max}.`; },\n lbl_add_account: 'Add account',\n lbl_amount: 'Amount',\n lbl_birthday: 'Birthday',\n lbl_occasion: 'Occasion Type',\n lbl_optional_end_date: 'Optional End Date',\n lbl_remove_account: 'Remove account',\n lbl_start_date: 'Start Date',\n lbl_selected_account: 'Selected Account',\n text_multiple_annual_events: 'To create multiple annual event contributions, complete this contribution and repeat the process.',\n text_next_run: 'Next run date:',\n text_total: 'Total:'\n },\n ContributionSpecialStep1: {\n btn_add_bank: 'Add Bank Account',\n lbl_bank_account: 'Bank Account',\n lbl_add_bank: 'Add new bank account',\n },\n ContributionSpecialStep2: {\n lbl_read_terms: 'I have read and understand the above terms and conditions.',\n },\n ContributionSpecialStep3: {\n text_print_copy: 'Please print a copy of this page for your records.',\n text_timezone: mountain_time_zone,\n },\n ContributionSpecialReview: {\n title_account_number: 'Account Number:',\n title_amount: 'Amount',\n title_bank_account: 'Bank Account:',\n title_bene_name: 'Beneficiary Name:',\n title_end_date: 'End Date:',\n title_next_run_date: 'Next Run Date:',\n title_total: 'Total:',\n text_none: 'None',\n },\n ContributionTermsConditions: {\n head_title: 'Terms and Conditions',\n head_review_terms: 'Please review the following Terms and Conditions regarding contributions',\n text_about_special_occasion: 'About Special Occasion Contributions:',\n text_about_special: [\n 'You may initiate annual contributions for birthdays, holidays, or other special occasions by entering a dollar amount and date (when applicable) when you want the transaction to occur.',\n 'Contributions will occur every year on the date selected (or the next business day if the date falls on a holiday or weekend).',\n 'One week prior to the scheduled contribution day, my529 will send you an email reminder of the upcoming contributions.',\n ],\n text_bad_accounts_warning: 'Warning: The following types of accounts cannot be used to fund online contributions. Requests to do so will be rejected and may incur reject fees and/or market losses:',\n text_bad_accounts: [\n 'Brokerage and mutual fund accounts (such as Vanguard, Charles Schwab, etc.)',\n 'Accounts drawn on credit unions that do not clear their own checks (they use third-party routing numbers)',\n 'Savings accounts with restricted access privileges',\n 'Bank accounts with UGMA/UTMA designations',\n ],\n text_check: 'Although online contributions may not be made from the accounts listed above, checks drawn from those accounts may be submitted, as long as they are:',\n /* eslint-disable quotes */\n text_check_requirements: [\n 'Made payable to my529',\n 'Sent to my529, PO Box 145100, Salt Lake City, UT 84114-5100',\n \"Marked with the beneficiary's name and my529 account number\",\n \"Checks drawn from bank accounts with UGMA/UTMA designations must be contributed to a my529 UGMA/UTMA account in the beneficiary's name.\",\n ],\n text_notes: 'Notes:',\n text_notes_list1: [\n 'A separate transaction will appear on your bank statement for each my529 account receiving a contribution.',\n 'Your my529 quarterly statement will reflect the contribution(s). This is your contribution receipt.',\n 'The funds will normally be debited from the bank account within three business days after the contribution appears in the my529 account.',\n 'my529 UGMA/UTMA accounts may not be funded with an online contribution schedule. Instead, to set up or change automated contributions to an UGMA/UTMA account, please submit the Scheduled Electronic Contributions Authorization/Change form (form 200).',\n 'You will receive an email confirming the setup, change, or cancellation of their contribution schedule.',\n 'Please ensure that funds are available on the agreed-upon contribution day(s). Returned transactions or insufficient funds could cause fees to be assessed by my529 and/or the financial institution.',\n ],\n text_notes_list2: 'Cancellation Instructions: ',\n text_notes_list3: 'This authorization is to remain in full effect until the end date (if applicable) or until the following:',\n text_notes_list4_sublists_special({ SupportPhoneNumber }) {\n return [\n 'The bank account(s) specified above are deleted; or',\n 'my529 is notified of the revocation of this authorization by doing one of the following:',\n [\n 'logging into Account Access at my529.org and using the online account feature to manage Contributions; or',\n `contacting my529 by telephone at ${SupportPhoneNumber}.`,\n ]\n ];\n },\n text_notes_list4_sublists_non_special({ SupportPhoneNumber, FaxNumber }) {\n return [\n 'The bank account(s) specified above are deleted; or',\n 'my529 is notified of the revocation of this authorization by doing one of the following:',\n [\n 'logging into Account Access at my529.org and using the online account feature to manage Contributions;',\n `contacting my529 by telephone at ${SupportPhoneNumber}; or`,\n `submitting Form 200 via fax to ${FaxNumber} or via U.S. Mail to PO Box 145100, Salt Lake City, UT 84114-5100.`\n ]\n ];\n },\n text_notes_list5: 'To cancel or make changes to this contribution, your online request must be received before the close of market trading with the New York Stock Exchange (NYSE) (normally 2:00 p.m. MT), on the business day of the scheduled contribution. This contribution may not be cancelled or changed after that deadline. Any other revocation will not be effective until my529 has had a reasonable opportunity to act on the termination notification.',\n text_authorize: \"I authorize my529 to initiate, and my financial institution to honor, an electronic payment in the amount(s) specified above from the account owner's bank account. This authority pertains to the account(s) listed above. The information I have provided is accurate. I understand that rejected transactions or insufficient funds could cause fees to be assessed by my529 and/or the account owner's financial institution.\",\n },\n default_title: 'my529 Account Access Portal',\n n_a: NA,\n ChangeEmailWhileBlocked: {\n text_verify_email1: 'If the email address shown here is incorrect, correct it now.',\n text_verify_email2: 'An email message will be sent to the new email address that contains a link that you are required to click on for verification purposes.',\n text_verify_email3: 'For the security of your account, you will be logged out while you verify your new email address.',\n },\n CurrentAllocation: {\n btn_chart_toggle: 'View Chart',\n btn_list_toggle: 'View List',\n head_account_closed: 'Account Closed',\n head_no_info: 'No information to display',\n text_actual_percentage: 'Actual',\n text_make_contribution: 'Please make a contribution into the account to view more information.',\n text_target_percentage: 'Target',\n text_value: 'Value',\n title_actual: 'Actual',\n title_category: 'Category',\n title_value: 'Value',\n },\n Details: {\n btn_option_change: 'Create Option Change',\n head_account_number: 'Account Number',\n head_account_type: 'Account Type',\n head_beneficiary: 'Beneficiary',\n head_current_tax_year_contributions: 'Current Tax Year Contributions',\n head_date_opened: 'Date Opened',\n head_earnings: 'Earnings',\n head_investment_option: 'Investment Option',\n head_mailing_address: 'Mailing',\n head_netPrincipal: 'Net Principal',\n head_other_address: 'Other',\n head_ppr: 'Personal Rate of Return (YTD)',\n head_physical_address: 'Physical',\n head_prior_tax_year_contributions: 'Prior Tax Year Contributions',\n head_remaining_option_changes: 'Option Changes',\n head_total_value(marketDate) { return `Total as of ${marketDate}`; },\n title_see_PPR: 'See Personal Rate of Return',\n },\n Documents: {\n btn_cancel: buttons.cancel,\n btn_open_pdf: 'Open PDF',\n btn_save: buttons.save,\n err_required: errors.required,\n lbl_from_name: 'From Name',\n msg_certificate_updated: 'Account Certificate Updated.',\n msg_interested_party: 'Interested Party',\n nav_path: '/documents',\n nav_path_for_certificate: '?document=Account%20Certificate',\n nav_title: 'Documents',\n text_edit_certificate: 'Your beneficiary\\'s certificate will include your name as the person who established their account. If you would like to customize the name to something other than your full name to appear (e.g., \"Grandma and Grandpa\"), enter it here.',\n text_no_documents: 'No documents to display',\n title_account_number: 'Account Number',\n title_account_type: 'Account Type',\n title_bene_name: 'Beneficiary Name',\n title_description: 'Description',\n title_download: 'Download',\n title_document_type: 'Document Type',\n title_quarter: 'Quarter',\n title_view_additional: 'View Additional Pages',\n title_view_document: 'Statement',\n title_year: 'Year',\n title_edit_certificate: 'Edit Account Certificate',\n },\n EmailCard: {\n btn_cancel_change_email: buttons.cancel,\n btn_change_email: 'Change Email',\n btn_confirm_change_email: 'Change email and log out',\n btn_confirm_submit_email: 'Submit email and log out',\n btn_resend_email: 'Resend Verification Email',\n err_different_email: 'Email address is same as current',\n err_emails_must_match: errors.emails_must_match,\n err_required: errors.required,\n err_valid_email: errors.email_invalid,\n head_title: 'Change Email',\n head_verify_email: 'Change Email Address',\n head_missing_email: 'Add Email Address',\n lbl_current_email: 'Current Email',\n lbl_new_email: 'New Email',\n lbl_new_email_confirm: 'Confirm Email',\n msg_check_email_to_verify(supportNumber) { return `Please check your email for a message to verify your changed email address. Contact my529 support at ${supportNumber} for help.`; },\n msg_unsaved_changes: unsaved_changes,\n text_ip_email_visible_to_ao: 'Any changes of the email address will be viewable by the account owner.',\n text_verify_email1: 'Are you sure you want to change your email address to: ',\n text_verify_email2: 'If you confirm, an email message will be sent to the above address that contains a link that you are required to click on to verify the new email address.',\n text_verify_email3: 'For the security of your account, you will be logged out while you verify your new email address.',\n },\n EditBankModal: {\n btn_save_nickname: buttons.save,\n err_allowable_chars: \"Allowable characters: alphanumeric and .,':#/-\",\n err_required: errors.required,\n title_modal: 'Rename',\n lbl_nickname: 'Nickname'\n },\n ForgotPassword: {\n btn_cancel: buttons.cancel,\n btn_submit: buttons.submit,\n err_password: errors.required,\n err_username: errors.required,\n msg_success: 'Request submitted. Check your email.',\n nav_path: '/forgot-password',\n nav_title: 'Forgot Password',\n text_instructions(supportNumber) { return `If the username is found, password reset instructions will be sent to the associated email address. If you have any questions, please call my529 at ${supportNumber}`; },\n text_username: 'Username',\n msg_recaptcha_language: recaptchaLanguage\n },\n ForgotUsername: {\n nav_path: '/forgot-username',\n nav_title: 'Forgot Username',\n btn_cancel: buttons.cancel,\n btn_ok: buttons.ok,\n btn_submit: buttons.submit,\n err_valid_email: errors.email_invalid,\n err_email_required: 'You must provide an Email',\n lbl_email: 'Email',\n msg_general(supportNumber) { return `If the email is in the system, an email with your username will be sent to you. If you are experiencing difficulties call my529 at ${supportNumber}`; },\n msg_request_submitted: 'Request submitted. Check your email.',\n msg_recaptcha_language: recaptchaLanguage\n },\n GiactRejectionModal: {\n btn_close: buttons.close,\n head_title: 'Authentication Failed',\n text_not_authenticated: 'Our verification process was not able to authenticate your financial institution account.',\n text_rejection_language_1: 'Please ensure that the name at the financial institution matches your name exactly and that you are not attempting to use a bank account associated with a third party.',\n text_rejection_language_2: 'Account verification services are provided by GIACT Systems, LLC and are based on information provided by financial institutions. my529 does not have information regarding the specific reasons for a decline.',\n text_rejection_language_3: 'How Do I Correct Information GIACT Has About Me?',\n text_rejection_language_4() {\n return (\n

If information reflected within your bank or credit union Disclosure of Consumer Report Information is inaccurate, you may initiate a dispute at no cost by calling GIACT Systems toll-free at 833.802.8092 from 8:30 a.m. to 5 p.m. CT, emailing support@giact.com, or writing to GIACT Systems at:

\n );\n },\n text_giact_address_1: 'GIACT Systems, LLC.',\n text_giact_address_2: 'Attention: Consumer Resolutions',\n text_giact_address_3: 'P.O. Box 1116',\n text_giact_address_4: 'Allen, TX 75013',\n text_rejection_language_5: 'For more information, visit ',\n text_rejection_language_6: 'Additional Questions?',\n text_rejection_language_7: 'You may contact my529 by emailing ',\n text_rejection_language_8: ' or by calling our office toll-free at 800.418.2551 on business days from 7 a.m. to 5 p.m. MT.',\n },\n Gifting: {\n btn_add: buttons.add,\n btn_cancel: 'cancel',\n btn_done: 'save',\n btn_email: 'email',\n btn_facebook: 'facebook',\n btn_learn_more: buttons.learn_more,\n btn_manage: 'manage',\n btn_ok: buttons.ok,\n btn_remove: buttons.remove,\n btn_twitter: 'twitter',\n lbl_account: 'account',\n lbl_account_owner: 'account owner',\n lbl_beneficiary: 'beneficiary',\n lbl_code: 'code',\n lbl_enabled: 'Active',\n lbl_disabled: 'Inactive',\n lbl_hide_last_name: 'Hide Last Name',\n lbl_hidden: 'Hidden',\n lbl_inactive: 'Inactive',\n lbl_no_history: 'No Gifts Received Yet',\n lbl_history: 'History of Gifts Received',\n lbl_page_views: 'page views',\n lbl_manage_gift: 'manage gift',\n lbl_message: 'message',\n lbl_shown: 'Shown',\n lbl_social: 'Share',\n lbl_status: 'status',\n lbl_url: 'url',\n msg_no_beneficiary: 'Beneficiary\\'s have not been configured yet.',\n msg_email_subject(name) { return `Family and friends: Looking for a meaningful BIRTHDAY/HOLIDAY gift for ${name}?`; },\n msg_save: 'Your changes were saved.',\n head_title: ' Beneficiary Gift Code',\n learn_more_title: 'Gifting Program Dashboard',\n manage_title: 'Manage Gift',\n nav_path: '/gifting',\n nav_title: 'Gifting',\n text_copy_link: 'Gifting link was copied to the clipboard',\n text_enable_gifting: 'Enable gifting to generate URL.',\n text_hide_last_name: 'This option hides the account owner and beneficiary middle & last name(s) from the public gifting website.',\n text_learn_more: 'You can have my529 set up Gift Codes for you to allow family and friends to contribute to your account(s).',\n text_max_aggregate(maxAmount) { return `The maximum aggregated balance for this beneficiary of ${maxAmount} has been met; no additional contributions can be accepted at this time for this beneficiary.`; },\n text_default_message(name) { return `Hi, thank you for your interest in ${name}'s education. Your contribution will help make dreams come true.`; },\n text_default_email(name, link) { return `I save for ${name}'s future qualified college expenses with my529, a 529 college savings program. Because many of you give gifts for birthdays and holidays, I'd like to pass along this link, ${link} which allows you to contribute to ${name}'s college savings account. Thank you for considering a gift for the future! ${link}`; },\n text_faq(currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift) {\n return [\n {\n question: 'What is the my529 Gift Program?',\n answer: 'The my529 Gift Program is a simple and convenient service that allows account owners to invite family and friends to contribute to their my529 college savings account.'\n },\n {\n question: 'How do I invite family and friends to participate in my529\\'s Gift Program?',\n answer: 'To give family and friends the opportunity to contribute to your my529 account, please enroll in my529\\'s Gift Program through Account Access and select Gift Program. When you enroll, you will receive a unique gift code and a URL that links to your personal gift page. When shared with family and friends, the gift code and link ensure the proper deposit of any gift contributions, without disclosing your personal my529 account information. Anyone with your gift code will be able to access your gift page. As the account owner, you decide with whom you\\'d like to share the link. You may share this gift code or link by email, in person, by phone, or by mail. my529 also provides links and default messages to share your gift page using Twitter and Facebook. You may copy and use the URL on your other social media sites as well. You may also turn off access to your page in your my529 Gift Program dashboard.'\n },\n {\n question: 'Do friends and family need to have a my529 account to contribute to my account?',\n answer: 'No. Anyone may contribute to your my529 account as long as he or she has your my529 gift code or link to your gift page.'\n },\n {\n question: 'What if I don\\'t have someone\\'s email address?',\n answer: 'You may also pass along your gift code in person, by mail, or by phone.'\n },\n {\n question: 'How will my friends and family give the gift?',\n answer: 'They may give a gift in three ways: by using a debit card; by making an electronic funds transfer from their bank or credit union; or by mailing a check. When making a debit card contribution, they will provide a debit card number and will be assessed a service fee. When contributing via electronic funds transfer, they will provide a routing number and account number through the secure gift page. When making a payment by mail, they will print a deposit slip found on the gift page and mail it with a check to my529.'\n },\n {\n question: 'When people give gifts, do they have access to my my529 account information?',\n answer: 'No. When someone gives a gift, the gift code or gift link ensures that the funds will be directed to your my529 account without sharing your account number in the process.'\n },\n {\n question: 'How will I know if I\\'ve received a gift?',\n answer: 'my529 will notify you by email when a gift posts to your account. You will be able to view the gift online in Account Access usually within three days after it has posted to your account, and it will be included in your account balance.'\n },\n {\n question: 'May I specify my unborn baby as a beneficiary on my account to receive gifts before the baby is born?',\n answer: 'Because a U.S. Social Security Number is required for all beneficiaries, your unborn baby cannot yet be named as the beneficiary on the account. You may, however, name yourself as the beneficiary until the baby is born. When your baby is born, simply change the beneficiary on your account to your baby\\'s name using a Beneficiary Change/Correction form (form 510). The new beneficiary must be a \"member of the family\" of the current beneficiary, as defined in the my529 Program Description. Please note that contributions made to accounts before the baby\\'s birth, to a beneficiary age 19 or older, do not qualify for the Utah state income tax credit.'\n },\n {\n question: 'May I return a gift made to my my529 account?',\n answer: 'No. Gifts made to a my529 account are considered \\'completed\\' gifts. Once gift funds are invested in your my529 account, they blend with other contributions. Any withdrawal is treated as a distribution from your account. Returning a gift would be considered a \"nonqualified withdrawal,\" subject to taxes and a 10 percent federal penalty tax on any earnings. To return a gift, you may want to withdraw money from a different type of account, your checking or savings account, for example, to avoid taxes.'\n },\n {\n question: 'What if I have a question about a gift made to my account?',\n answer: 'You may contact my529 toll-free at 800.418.2551 or by email at info@my529.org. Representatives are available to answer questions on regular business days from 7 a.m. to 5 p.m. MT.'\n },\n {\n question: 'Do I owe taxes on gifts made to my my529 account?',\n answer: `You should not owe taxes on gifts made to your my529 account, but people who make large gifts to your account may owe gift taxes. A gift tax or generation skipping transfer (GST) tax may occur for someone making gifts more than ${annualGiftExclusionAmount} per year to any one person. Anyone giving large monetary gifts should consult a tax advisor before sending the contributions to my529. my529 does not provide tax advice to the person giving the gift.`\n },\n {\n question: 'Does the gift count toward my my529 account balance limit?',\n answer: `Yes. For ${currentYear}, my529 will accept contributions until all my529 account balances for the same beneficiary total ${maximumBeneficiaryDeposit}, above which additional contributions are not allowed. However, there is a separate limit for gifts. When the account balance has reached ${maximumBenficiaryAccountValueForGift}, any gift contribution will be returned to the person who made it. Please see the my529 Program Description, downloadable at my529.org, for more information about contribution limits.`\n },\n {\n question: 'When are gift contributions invested?',\n answer: 'If the contribution is received in good order, it will be posted to your my529 account within three business days.'\n },\n {\n question: 'How are gift contributions allocated?',\n answer: 'Gift contributions will be allocated according to the investment option and/or allocations that you, as the account owner, have selected for your my529 account.'\n },\n {\n question: 'Are there any fees associated with giving a gift through the my529 Gift Program?',\n answer: 'There is a service fee charged per debit card transaction by J.P. Morgan as a third-party debit card processor. The fee covers the cost of securely processing debit card contributions. There are no fees associated with online bank account contributions or contributions made by sending a check.'\n },\n {\n question: 'Will the unique gift code and URL that links to my gift page ever expire?',\n answer: 'No. Both the unique gift code and URL will be active as long as you participate in the my529 Gift Program.'\n },\n {\n question: 'Are gift contributions available for immediate withdrawal?',\n answer: 'If your account ownership with my529 is less than six months old, gift contributions made online using a bank account or using a check by mail are held for 20 business days. If your account ownership has been established for at least six months, online gift contributions are held for at least seven business days. Gift Program contributions made by debit card cannot be withdrawn until 45 business days after deposit.'\n }\n ];\n },\n error_message_empty: 'Message is required',\n error_message_allowed_chars: \"Allowable characters: alphanumeric and !?()$.,:;-='\\\\\",\n text_input_placeholder: 'Type your custom message here'\n },\n Header: {\n btn_main_menu: 'Main menu',\n text_browser_warning: 'You are currently using a browser that is not supported. For the best experience, please use Chrome or Firefox.',\n text_notifications: 'Notifications',\n },\n Home: {\n btn_list_view: 'List view',\n btn_tile_view: 'Tile view',\n head_accounts: 'Accounts',\n head_overview: 'Overview',\n head_greeting_morning: 'Good Morning',\n head_greeting_afternoon: 'Good Afternoon',\n head_greeting_evening: 'Good Evening',\n nav_path: '/home',\n nav_title: 'Home',\n },\n InterestedParties: {\n btn_add_ip: 'Add Interested Party',\n btn_add_ip_read_terms: buttons.read_terms,\n btn_agree_terms: buttons.agree_terms,\n btn_close: buttons.close,\n btn_delete_ip: 'Delete Interested Party',\n btn_edit_ip: 'Edit Interested Party',\n btn_learn_more: 'Learn More',\n btn_ok: buttons.ok,\n btn_resend_email: 'Resend email',\n btn_save: buttons.save,\n err_add_ip_terms_agree: errors.terms_agree,\n err_copy_email: errors.copy_email,\n err_emails_must_match: errors.emails_must_match,\n err_select_account: 'You must select at least one account.',\n head_account: 'Account',\n head_accounts: 'Accounts',\n head_bene_name: 'Beneficiary Name',\n head_delete_ip: 'Delete this Interested Party?',\n head_email: 'Email',\n head_email_sent: 'Email Sent',\n head_interested_parties: 'Interested Parties',\n head_name: 'Name',\n head_opt_name: 'Option Name',\n head_pin: 'Pin',\n head_read_only: 'Read-Only Access',\n head_status: 'Status',\n lbl_email: formLabels.email,\n lbl_email_confirm: formLabels.email_confirm,\n msg_ip_added: 'Interested Party added.',\n msg_ip_deleted: 'Interested Party deleted.',\n msg_ip_edited: 'Interested Party edited.',\n nav_path: '/interested-parties',\n nav_title: 'Interested Parties',\n text_add_ip_terms() { return `By clicking ${this.btn_save}, I understand that I am allowing my interested party to view, download, transmit to their third-party agent(s), and/or instruct my529 to transmit to my interested party's third - party agent the following information related to the my529 account(s) designated above: (1) the account number, (2) account owner and beneficiary names and contact information, (3) primary and secondary successor names, (4) transaction history, (5) investment options, (6) account balances, and(7) quarterly statements.I also understand that this does not give my interested party permission to make changes to the account.`; },\n text_confirm_delete_ip(emailAddress) { return `Are you sure you want to remove Interested Party access for ${emailAddress}?`; },\n text_faq_answers() {\n return [\n `Once you add an interested party, a request will be sent to them using the email address you provide. The interested party will be prompted to enter a PIN. The PIN will be provided to you during the setup process and will be shown next to the interested party's email address and name. You will need to communicate the PIN to the interested party before they will be able to set up access to your accounts. The email request to the interested party will be valid for 10 days from the time you set it up. Should that time expire before the interested party signs up, you may click the \"${this.btn_resend_email}\" button and a new email will be sent to them. At that time, a new PIN will also be generated and the previous email and PIN will be invalid. As before, you will need to communicate the new PIN to the interested party.`,\n `If the email address you entered is incorrect, click on the \"${this.btn_delete_ip}\" button that appears on the row associated with the interested party. After you delete the interested party, the information associated with the account(s) will no longer be available for the interested party to view. The interested party may still log on but will be unable to view any of your accounts.`,\n 'To change the email address associated with the interested party, delete the interested party and add them again with the new email address, following the same process as before.',\n `For security purposes, if the interested party forgets their password, they will need you to resend the email request by clicking the \"${this.btn_resend_email}\" button. A new email will be sent to them, and a new PIN will be generated. You will need to communicate the new PIN to them, and they will be able to re-establish their interested party access by responding to the request and entering a new user name, password, and PIN.`,\n `Click on the \"${this.btn_edit_ip}\" button on the row associated with the interested party. Check or uncheck the boxes to add or remove the accounts from their view and then click \"Save.\" The change will take place immediately without notifying the interested party. If you want to remove all access, click the \"Delete\" link on the row associated with the interested party.`,\n ];\n },\n text_faq_questions: [\n 'How does it work?',\n 'Wrong email address?',\n 'Need to change the email address of the interested party?',\n 'Did the interested party forget their password?',\n 'Need to add or remove accounts from an interested party?',\n ],\n text_learn_more() { return `You may grant online read-only access to interested parties. An interested party can be a family member, or anyone to whom you would like to grant read-only access to one or more of your my529 accounts. You are in control of this feature and can turn it on or off to selected individuals at your discretion. Interested party access does not give permission to modify the account but will allow the interested party, for the account(s) you designate, to view, download, transmit to their third-party agent(s), and/or instruct my529 to transmit to their third-party agent: (1) the account number, (2) account owner and beneficiary names and contact information, (3) primary and secondary successor names, (4) transaction history, (5) investment options, (6) account balances, and (7) quarterly statements. To add an interested party, click the ${this.btn_add_ip} button. You may only set up one interested party at a time, but may set up multiple interested parties by repeating the process.`; },\n text_setup_ip_access: 'Set up Interested Party access',\n text_success: [\n 'The interested party has been sent an email requesting their participation.',\n 'Upon accepting your request, the interested party will need to enter the PIN provided below to validate his/her setup. You, the account owner, are responsible for providing the interested party the following PIN:',\n 'The email request to the interested party will be valid for the next 10 days.',\n ],\n },\n InterestedPartiesActivation: {\n btn_create: buttons.create,\n btn_i_agree: buttons.agree_terms,\n btn_learn_more: buttons.learn_more,\n btn_read_terms: buttons.read_terms,\n err_password_criteria: errors.password_criteria,\n err_password_match: errors.passwords_match,\n err_required_field: errors.required,\n err_terms_agree: errors.terms_agree,\n head_already_have_account: 'I already have an account.',\n head_create_account: 'Create an account.',\n head_login: 'Log in.',\n head_terms: 'Terms and Conditions',\n lbl_email: formLabels.email,\n lbl_firstname: formLabels.firstName,\n lbl_lastname: formLabels.lastName,\n lbl_password1: formLabels.password,\n lbl_password2: formLabels.password_confirm,\n lbl_pin: formLabels.pin,\n lbl_username: formLabels.username,\n msg_change_email_when_logged_in: 'You can change your email once logged in.',\n msg_ip_activated: 'Your Interested Party access is activated. Please log in.',\n nav_path: '/activate-interestedparty',\n nav_title: 'Interested Party Activation',\n text_learn_more() {\n return [\n 'If you are a my529 Account Owner, log in to also become an Interested Party on an account.',\n `If you do not have a my529 account and would like to gain Interested Party access to an account, click ${this.btn_create} to sign up.`,\n 'An Interested Party is a person who is granted permission by an Account Owner to have online, read-only access to view certain account information. The Interested Party cannot make changes to the account or initiate transactions.'\n ];\n },\n text_terms: 'By establishing interested party account access, I understand I am being allowed access to information that account owners may consider sensitive. As an interested party I can view, download, transmit to my third-party agent(s), and/or instruct my529 to transmit to my third-party agent: (1) the account number, (2) account owner and beneficiary names and contact information, (3) primary and secondary successor names, (4) transaction history, (5) investment options, (6) account balances, and (7) quarterly statements. I understand that this does not give me permission to make changes to the account. I understand that I can only access this information electronically. I understand that the account owner controls my access rights. I understand I do not have permission to make changes to the account. I also understand that if an account owner/agent is changed on an account that the interested party access to that account will be terminated.',\n text_toggle_password_vis: buttons.toggle_password,\n },\n InvestmentOptionStep: {\n btn_back: buttons.back,\n btn_cancel: buttons.cancel,\n btn_continue: buttons.continue,\n btn_create_ageBased: 'Create Age-Based',\n btn_create_static: 'Create Static',\n btn_details: 'Details',\n btn_edit_ageBased: 'Edit Age-Based',\n btn_edit_static: 'Edit Static',\n btn_ok: buttons.ok,\n btn_save: buttons.save,\n err_must_select_opt: 'Investment Option is required. Click each investment type to read about the options.',\n head_enrollmentdate_opts: 'Enrollment Date Option',\n head_customized_opts: 'Customized Options',\n head_investment_opt_disclosures: 'Investment Option Selection',\n head_investment_option: 'Investment Option',\n head_static_opts: 'Static Options',\n msg_cannot_select_opt: 'Investment plan is already in use and cannot be selected.',\n msg_investment_opt_saved: 'Investment option saved.',\n msg_total_allocations_ageBased: 'The Total Allocations for each age bracket must equal 100%.',\n msg_total_allocations_static: 'The Total Allocation must equal 100%.',\n text_about_investment_opts: 'my529 offers Target Enrollment Date, Static, and Customized investment options that use underlying funds managed by The Vanguard Group, Dimensional Fund Advisors, Pacific Investment Management Company (PIMCO), and FDIC-insured accounts held at Sallie Mae Bank and U.S. Bank.',\n text_customized_details1: 'Customized options can be age-based or static. Age-based option allocations change based on the age of the beneficiary. Rebalances and reallocations occur on the beneficiary’s birthday.',\n text_customized_details2: 'The Internal Revenue Service allows you to make two option changes in a calendar year without triggering tax consequences.',\n text_customized_review_performance: 'Review performance returns for customized funds.',\n text_customized_summary: 'You can build your own investment option by selecting from a menu of available funds offered by my529.',\n text_enrollmentdate_details1: 'Allocations in the portfolios automatically adjust over time based on a preset quarterly allocation schedule.',\n text_enrollmentdate_details2: 'The Internal Revenue Service allows you to make two option changes in a calendar year without triggering tax consequences.',\n text_enrollmentdate_details3: 'Review performance returns for the enrollment date option.',\n text_enrollmentdate_summary: 'Target Enrollment Date portfolios take into consideration the target year your beneficiary would enroll in school and begin taking withdrawals to pay for qualified education expenses. The portfolios gradually shift over time to a more conservative investment allocation as the target enrollment date draws near. Depending on your investment risk tolerance, a more aggressive or more conservative portfolio can be selected regardless of the beneficiary’s anticipated enrollment year.',\n text_options_on_mobile: 'Customized options on a mobile is not available. Please use a desktop instead.',\n text_static_details1: 'It is a good idea to review your static option periodically, especially if your investment objective changes over time.',\n text_static_details2: 'The Internal Revenue Service allows you to make two option changes in a calendar year without triggering tax consequences.',\n text_static_details3: 'Review performance returns for static options.',\n text_static_summary: 'In the Static options, money remains in the same investment allocation without changing over time. The target allocation remains the same until you decide to change to a different investment option.',\n text_disclosures(programDescription) {\n return [\n parse(`For complete details about the investment options, please see the my529 Program Description. You may choose only one investment option for each my529 account.`),\n 'Please select your investment option carefully. The Internal Revenue Service (IRS) limits the number of investment option changes to two per calendar year for a beneficiary.',\n \"All of your future contributions are invested in the investment option you select for your account. To change the investment of contributions in the future, you must instruct my529 to change your account's investment option.\",\n 'The Target Enrollment Date investment option has 12 portfolios with asset allocations that consider the target year the account beneficiary will begin taking withdrawals to pay for qualified education expenses. Over time, the portfolios gradually shift to a more conservative investment allocation as the target enrollment year draws closer. The Enrolled portfolio is the most conservative. The other portfolios are listed by year, with the latest Target Enrollment Date portfolio being the most aggressive. The account owner has the flexibility to select any portfolio based on their investment preference (more aggressive or more conservative), regardless of the beneficiary’s anticipated year of enrollment.',\n parse(\"Static options are available for a wide range of investment objectives. Please see Static Investment options for specifics. Investments do not change unless you submit an investment option change.\"),\n \"If you select a Customized Age-Based or Customized Static investment option, you can build your own option from a menu of investments offered by my529. Each investment you select for your customized investment option must have an allocation of at least 1 percent, using only whole percentages. If you have questions regarding how your particular financial situation and investment goals fit with your customized allocation, you should consult with your own financial advisor before choosing to invest in a customized investment option. Customized options will rebalance annually on the beneficiary's birthday (or next available business day) or advance the option to the next age bracket based on the beneficiary's age.\",\n \"Changing the investment allocation of a Customized Age-Based or Customized Static investment option is considered an investment option change.\",\n \"Some investment options include an allocation to the FDIC-insured accounts held in trust by my529 at Sallie Mae Bank and U.S. Bank. Money in the FDIC-insured accounts is insured by the FDIC on a pass-through basis to each account owner up to $250,000 at each bank. The amount of FDIC insurance provided to an account owner is based on the total of (1) the value of an account owner's investment in the FDIC-insured accounts at each bank plus (2) the value of other accounts (if any) owned by the account owner and held at each bank, as determined by the banks and by FDIC regulations.\",\n ];\n },\n title_options_on_mobile: 'Customized Options on Mobile',\n },\n Login: {\n btn_create_account: 'Create Account',\n btn_fa_login_link: 'Log In As Financial Advisor',\n btn_login: 'Log In',\n err_password: errors.required,\n password_length: 'Password can have a maximum length of 40 characters',\n err_username: errors.required,\n username_length: 'Username can have a maximum length of 128 characters',\n lbl_password: 'Password',\n lbl_username: formLabels.username,\n msg_recaptcha_language: recaptchaLanguage,\n msg_you_have_logged_out: 'You have logged out.',\n nav_password: 'password',\n nav_username: 'username',\n nav_forgot_password: 'Forgot Password?',\n nav_forgot_username: 'Forgot Username?',\n nav_no_login: \"Don't have a login?\",\n nav_path: '/login',\n nav_setup_user: 'Setup username/password',\n nav_title: 'Login',\n btn_toggle_password: buttons.toggle_password,\n },\n Lpoa: {\n btn_learn_more: buttons.learn_more,\n btn_confirm: buttons.confirm,\n btn_cancel: buttons.cancel,\n btn_next: buttons.next,\n btn_agree: buttons.agree,\n btn_back: buttons.back,\n btn_edit: buttons.edit,\n btn_add_edit: `${buttons.add}/${buttons.edit}`,\n btn_add_edit_help_txt: \"In order to add a financial advisor to you account(s), please select which account(s) you wish the grant limited power of attorney access to and then click 'Add/Edit'.\",\n btn_add: buttons.add,\n btn_revoke: buttons.revoke,\n btn_unlink: buttons.unlink,\n checkbox_select_bene_alt_text: 'Select Beneficiary',\n text_yes: 'Yes',\n text_no: 'No',\n confirm_correct_lpoa_txt: 'Please confirm if this is the correct LPOA:',\n enter_auth_code_txt: \"Grant your financial advisor limited power of attorney for any of your my529 accounts. Please contact your financial advisor to obtain your advisor's my529 LPOA Authorization Code and enter it.\",\n terms_and_conditions_agree_button_label: 'I have read and understand these terms and conditions.',\n text_disabled: 'Inactive',\n checkbox_all_alt_text: 'Select all Beneficiaries',\n table_title: 'Beneficiaries',\n error_auth_code_empty: 'Please enter the authorization code',\n nav_path: '/lpoa',\n nav_title: 'Power of Attorney',\n column_labels: ['BENEFICIARY', 'POA LEVEL', '1099-Q', 'TC-675H'],\n learn_more_title: 'Authorization Code Entry',\n text_learn_more: \"Complete the following steps to grant your financial advisor limited power of attorney for one or more of your my529 accounts. You must obtain your financial advisor's my529 LPOA Authorization Code in order to complete this request. Financial advisors may contact the my529 Professional Services Team at 888.529.1886 for information about obtaining limited power of attorney.\",\n modal_title_revoke_benes: 'Please Confirm',\n modal_body_revoke_benes: 'Once revoked, the power of attorney cannot be reestablished without submitting a new Limited Power of Attorney Authorization request. Are you sure you want to revoke this power of attorney?',\n modal_title_unlink_lpoa: 'Please Confirm',\n authorization_code_title: 'Authorize Access',\n authorization_code_label: 'Authorization Code',\n errors: {\n missing_lpoa_level: 'Please select the authorization level.',\n missing_terms_checked: 'Please check the terms before you submit.',\n },\n success_lpoa_updated: 'Power of Attorney options saved.',\n edit_lpoa_step_labels: [\n 'Level',\n 'Review',\n ],\n edit_level_table: {\n levels: [\n 'Level 1',\n 'Level 2',\n 'Level 3',\n ],\n btn_agree_label: 'Agree to Terms',\n title: 'Level Selection',\n lpoa_name_label: 'Authorized Representative',\n span_column_3_4_5_6_title: 'Intitate Transactions Online or with Applicable Form',\n column_titles: [\n 'Select Authorization Level',\n 'Obtain Account Information',\n 'Automated Contributions',\n 'Investment Option Changes',\n 'Transfers Between Accounts',\n 'Withdrawals',\n ],\n online_phone_text: 'Online/Phone',\n },\n edit_tax_docs: {\n label: 'Click to Disallow Federal or State Tax Forms',\n },\n level_3_info_bubble: 'Withdrawal checks may be payable only to the account owner, the beneficiary, or an eligible educational institution. my529 will not issue checks to other parties. Account owners can link a bank account to receive electronic deposits from my529 account withdrawals intitiated online by financial advisors.',\n fed_tax_docs_label: '1099-Q',\n state_tax_docs_label: 'TC-675H',\n fed_tax_docs_body() {\n return (\n
Check the box at left if you do NOT grant the LPOA entity/individual access to copies of your 1099-Q tax forms, which are generated and issued by my529, for the accounts you have granted the LPOA entity/individual authority over. This selection will remain in effect until this Limited Power of Attorney Authorization is either (1) revoked or (2) my529 receives, for the designated accounts, a Limited Power of Attorney Authorization form with a different selection in this box.
\n );\n },\n state_tax_docs_body() {\n return (\n
For Utah residents/taxpayers only: Check the box at left if you do NOT grant the LPOA entity/individual access to copies of your TC-675H tax forms, which are generated and issued by my529. Please note that form TC-675H contains aggregated information about contributions, withdrawals, and transfers for ALL accounts you own (not just the accounts you have granted the LPOA entity/individual authority over). This selection will remain in effect until this Limited Power of Attorney Authorization is either (1) revoked or (2) my529 receives, for any account you own, a Limited Power of Attorney Authorization form with a different selection in this box.
\n );\n },\n review_title: 'Review',\n review_details(lpoaName, level, beneListFormatted, allowFedTax, allowStateTax) {\n return (\n
\n

You are about to grant a limited power of attorney (LPOA) to {lpoaName}.

\n {lpoaName} will have Level {level} authority over the following beneficiaries:\n \n

You have chosen to {allowFedTax} {lpoaName} access to you federal tax documents regarding your my529 account.

\n

You have chosen to {allowStateTax} {lpoaName} access to you state tax documents regarding your my529 account.

\n

Granting limited power of attorney will set your quarterly statement and official communication delivery method to online for all beneficiary accounts included in this authorization.

\n
\n );\n },\n terms_and_conditions_title: 'Terms and Conditions',\n terms_and_conditions_body(lpoaName) {\n return (\n
\n

By granting this limited power of attorney, you are designating an entity/individual to act as your attorney-in-fact, agent, and authorized representative to act in your name and on your behalf for the limited purposes that are specified therein. However, you will continue to control the account(s) and may perform any of the actions you grant the entity/individual permission to perform.

\n

You may also revoke any limited power of attorney on file with my529 and grant a new entity a limited power of attorney for the same accounts through this online process.

\n

Your limited power of attorney will continue in effect until it is revoked or terminated as specified below.

\n

The authority granted by you under this limited power of attorney may not be assigned or delegated by the authorized entity/individual to another entity/individual, but an entity may designate the person(s) within the entity to assist in the performance of this authority.

\n

When a limited power of attorney is granted to an entity, the entity can transmit to its third-party agent(s), and/or instruct my529 to transmit to the entity's third-party agent(s), your financial data, including the following: (1) the account number; (2) account owner and beneficiary names and contact information; (3) primary and secondary successor names; (4) transaction history; (5) investment options; (6) account balances; and (7) quarterly statements.

\n\n The LPOA entity/individual may not change, add, or delete the following account information:\n \n\n The LPOA entity/individual may not take any of the following actions:\n \n\n

Withdrawals may only be sent to the account owner, the beneficiary, or an eligible educational institution. my529 will not issue withdrawals to an LPOA entity or other parties.

\n\n By executing this limited power of attorney, I understand, agree, and certify that:\n \n\n This limited power of attorney will remain in effect for my selected my529 beneficiaries until it is revoked or terminated by any of the following actions:\n \n\n

In addition, this limited power of attorney will also remain in effect for my selected my529 beneficiaries in the event of a merger or sale of my designated LPOA entity. When a merger or sale of my designated LPOA entity occurs, I must affirmatively notify my529 of my desire to revoke or terminate this limited power of attorney on behalf of the new entity.

\n

If I become disabled, incapacitated, or incompetent after signing this form, this limited power of attorney will continue in effect until it is revoked or terminated.

\n

Revocation or termination of the limited power of attorney due to my death, court determination, or any other reason will not take effect until my529 receives written notification of the revocation or termination and has had a reasonable amount of time to act on such notice.

\n

my529 cannot and does not provide legal, financial, or tax advice. Accordingly, you should consult your legal advisor if you have any questions concerning the consequences of granting this limited power of attorney authorization.

\n
\n );\n },\n },\n LpoaAccount: {\n nav_path: '/poaaccountapplication',\n nav_title: 'POA Account Application',\n try_again_rsa_txt: 'Authentication failure. Please try again.',\n reject_modal_confirmation: 'Are you sure you wish to reject this account application? Rejecting the account application will end this account application session and this account will not be created at my529.',\n reject_modal_title: 'Reject Account Application',\n btn_next: buttons.next,\n btn_reject: buttons.reject,\n btn_print: buttons.print,\n btn_back: buttons.back,\n btn_submit: buttons.submit,\n btn_done: buttons.done,\n btn_learn_more: buttons.learn_more,\n btn_login: 'Login',\n btn_setup_login: 'Setup Login',\n success_lpoa_account_rejected: 'POA account successfully rejected.',\n success_lpoa_account_approved: 'New account successfully created.',\n confirmation_page: {\n your_account_number: 'Your account number',\n first_paragraph: 'Please keep this account number for your records. You and your financial advisor will receive a confirmation email confirming your new account has been established.',\n second_paragraph_setup(setupButtonLabel, supportNumber) {\n return `By clicking ${setupButtonLabel}, you will be prompted to establish your online access. You will need your social security number and date of birth. Should you have any questions, please contact my529 by calling ${supportNumber} or emailing info@my529.org.`;\n },\n second_paragraph_login(loginButtonlabel, supportNumber) {\n return `By clicking ${loginButtonlabel}, you will be prompted to establish your online access. Should you have any questions, please contact my529 by calling ${supportNumber} or emailing info@my529.org.`;\n }\n },\n account_edit: {\n lpoa_review_title: 'Account Application Review',\n error_lpoa_account_validate: 'There are some form errors. Please scroll up to fix them.',\n warning_text_above_buttons: 'By clicking NEXT, you certify that you have reviewed all information above and that it is correct. Should you find an error, please update the information, or click REJECT and contact your financial advisor.',\n account_owner: 'Account Owner',\n mailing_adddress: 'Mailing Address',\n physical_address: 'Physical Address',\n contact: 'Contact',\n beneficiary: 'Beneficiary',\n succesor: 'Successor Account Owners',\n primary: 'Primary',\n secondary: 'Secondary',\n account_summary: 'Account Summary',\n fund_allocations_title1: 'Fund Allocations',\n fund_allocations_title2: 'Fees',\n },\n fund_allocations_and_fees: {\n select_age_band_title: 'Select Age Band to see Funds and Fees',\n age_band_dropdown_label: 'Select Age Band',\n est_expense_ratio_label: 'Est. Underlying Fund Expense',\n my529_admin_asset_fee_label: 'my529 Adminstrative Asset Fee',\n ext_total_annual_asset_based_fee_label: 'Est. Total Annual Asset-Based Fee',\n fees_info_icon_content(programDescriptionLink) {\n return (\n
\n The fees at my529 vary depending on your specific investment option. Please note that the underlying fund expense for Enrollment Date options will vary slightly as allocations shift over time. For more information on my529’s fees, read the Program Description. {/* eslint-disable-line */}\n
\n );\n },\n },\n account_summary: {\n application_date_label: 'Application Date',\n type_label: 'Type',\n option_label: 'Option',\n poa_level_label: 'POA Level',\n poa_levels: [\n 'Level 1',\n 'Level 2',\n 'Level 3',\n ],\n fed_tax_docs_label: 'Federal Tax Docs',\n state_tax_docs_label: 'State Tax Docs',\n status_label: 'Status',\n fed_tax_docs_info_icon_checked: 'Your designated limited power of attorney (LPOA) advisor will have access to copies of your 1099-Q tax forms, which are generated and issued by my529, for the accounts you have granted the LPOA entity authority over. This selection will remain in effect until this Limited Power of Attorney Authorization is either (1) revoked or (2) my529 receives for the designated account a Limited Power of Attorney Authorization form with a different selection.',\n fed_tax_docs_info_icon_unchecked: 'Your designated LPOA advisor will not have access to copies of your 1099-Q tax forms.',\n state_tax_docs_info_icon_checked: 'For Utah residents/taxpayers only: Your designated LPOA advisor will have access to copies of your TC-675H tax forms, which are generated and issued by my529. Please note that form TC-675H contains aggregated information about contributions, withdrawals, and transfers for ALL accounts you own (not just the accounts you have granted the LPOA authority over). This selection will remain in effect until this Limited Power of Attorney Authorization is either (1) revoked or (2) my529 receives for the designated account a Limited Power of Attorney Authorization form with a different selection.',\n state_tax_docs_info_icon_unchecked: 'For Utah residents/taxpayers only: Your designated LPOA advisor will not have access to copies of your TC-675H tax forms.',\n promo_code_label: 'Promotion Code',\n },\n ao_contact: {\n relationship_label: 'Relationship to Beneficiary',\n email_label: 'Email',\n home_phone_label: 'Home Phone',\n work_phone_label: 'Work Phone',\n other_phone_label: 'Other Phone',\n },\n first_terms_and_conditions: {\n title: 'TERMS AND CONDITIONS OF my529 ACCOUNT AGREEMENT',\n content() {\n return (\n
\n

\n This Account Agreement is entered into by and between my529 and the Account Owner/Agent effective the date all application materials and information have been completed and submitted to my529.org. and the Account Owner/Agent clicks the appropriate button, indicating his or her agreement with the terms herein. All capitalized terms used herein shall have the meanings used in the Program Description.\n

\n
    \n
  1. \n This Account Agreement is subject to, and incorporates by reference, the policies* adopted by the Utah Board of Higher Education acting in its capacity as the Utah Education Savings Board of Trustees and statutes governing my529 codified as UCA 53B-8a. Any amendments to statutes and regulations shall automatically amend this Agreement, and any changes to the policies, including investment allocations and fees, shall amend this Agreement after adoption by the Utah Board of Higher Education.\n
  2. \n
  3. \n This Account Agreement, the Program Description, future updates to the Program Description, and the policies adopted by the Utah Board of Higher Education constitute the entire Agreement between you and my529. No person is authorized to make oral or written modifications to this Agreement.\n
  4. \n
  5. \n This Account Agreement shall be governed by and construed in accordance with the laws of the state of Utah without regard to any conflict of law principles. Any action or proceeding arising from or relating to this Account Agreement shall be brought in state or federal court in the state of Utah, venue shall be in Salt Lake County.\n
  6. \n
  7. \n There may be both federal and state tax consequences to opening or contributing to a my529 account. Advice should be sought from a qualified tax advisor. my529 does not provide legal, financial, or tax advice. Accordingly, you should consult your own tax or financial advisor concerning your particular tax or financial situation or if you have any questions concerning opening an account.\n
  8. \n
  9. \n If you are not a Utah taxpayer or resident, you should consider whether the state in which you or the beneficiary resides or pays taxes offers a 529 program. That program may offer state tax or other benefits to its taxpayers or residents that may not be available through my529.\n
  10. \n
  11. \n If my529 determines that there has been any material misrepresentation related to this Account Agreement or an account, the account may be cancelled and the account money returned to you, less any applicable fees and penalties.\n
  12. \n
\n\n

\n *For copies of the relevant Utah Board of Higher Education policies, call my529 toll-free at 800.418.2551 or email info@my529.org.\n

\n\n

\n By signing below, I hereby apply for an individual account with my529. I certify that:\n

\n
    \n
  1. \n I am opening the individual account to provide for the qualified higher education expenses of the beneficiary identified in section 3. Each contribution to my account will be for that purpose, and I will not make any contributions in excess of limitations established by my529.\n
  2. \n
  3. \n I am at least age 18, and have a valid U.S. Social Security or Taxpayer Identification Number.\n
  4. \n
  5. \n I understand that my529 may collect nonpublic personal information about me from third parties to verify my identity or prevent fraud. This personal information may include, among other things, my name and address, U.S. Social Security or Taxpayer Identification Number, and date of birth.\n
  6. \n
  7. \n I have the power and authority to sign and open an account with my529.\n
  8. \n
  9. \n I have received, read, understand, and agree to all the terms and conditions in the Program Description and this Account Agreement and will retain a copy of this Account Agreement for my records.\n
  10. \n
  11. \n The information I have provided on this form—and all future information I will provide with respect to my account—is true, complete, and correct.\n
  12. \n
  13. \n I understand the account will be opened based on the information I provide.\n
  14. \n
  15. \n I understand the value of my account may vary depending on market conditions and the performance of the investment option I select. I understand that the account balance may be more or less than the total amount contributed to the account. I understand opening an account involves investment risk, including the possible loss of principal.\n
  16. \n
  17. \n I understand my investments are not insured or guaranteed by the State of Utah, my529, the Utah Board of Higher Education, the Utah Education Savings Board of Trustees, or any other state or federal government agency (except to the extent noted below regarding FDIC insurance), or any of the employees or directors of any such entities. I understand investments in the FDIC-insured accounts are insured by the FDIC up to the maximum amount set by federal law. Insurance coverage is based on the total of my investments in the FDIC-insured accounts at each of Sallie Mae Bank and U.S. Bank (the Banks) plus other accounts I hold at each of the Banks. It is my responsibility to determine how my my529 investments would be aggregated with other accounts at each Bank for purposes of the FDIC insurance.\n
  18. \n
  19. \n I have looked into the 529 plan(s) in the state in which I pay taxes, as well as the state in which my beneficiary pays taxes, to see if they offer me tax or other benefits not offered by my529.\n
  20. \n
\n\n I have read, understand, and agree to the Terms and Conditions of the my529 Account Agreement. By clicking, Accept Terms, I hereby confirm my intent to enter into a contract with my529 to establish an account. I have read, understand, and retained a copy of the Program Description, and will retain a copy of this document for my records.\n
\n );\n },\n },\n second_terms_and_conditions: {\n title: 'TERMS AND CONDITIONS FOR LIMITED POWER OF ATTORNEY AUTHORIZATION',\n content() {\n return (\n
\n

\n By granting this limited power of attorney, you are designating an entity to act as your attorney-in-fact, agent, and authorized representative to act in your name and on your behalf for the limited purposes that are specified therein. However, you will continue to control the account(s) and may perform any of the actions you grant the entity/individuals permission to perform.\n

\n\n

\n You may also revoke any limited power of attorney authority on file with my529 and grant a new entity limited power of attorney authority for the same accounts through this online process.\n

\n\n

\n The authority granted by you under this limited power of attorney agreement may not be assigned or delegated by the authorized entity to another entity, but an entity may designate the person(s) within the entity to assist in the performance of this authority.\n

\n\n

\n When a limited power of attorney authority is granted to an entity, the entity can transmit to its third-party agents(s), and/or instruct my529 to transmit to the entity’s third-party agent(s), your financial data including the following: (1) the account number, (2)account owner and beneficiary names and contact information, (3) primary and secondary successor names, (4) transaction history, (5) investment options, (6) account balances, (7) quarterly statement, (8) Federal Tax Form 1099-Q and (9) Utah State Tax Form TC-675H.\n

\n\n

\n The limited power of attorney entity/individual may not change, add, or delete the following account information:\n

\n \n\n

\n The limited power of attorney entity/individual may not take any of the following actions:\n

\n \n\n

\n Disbursements may be sent only to account owner, beneficiary, or an eligible educational institution, my529 will not issue disbursements to a limited power of attorney entity or other parties.\n

\n\n

\n By executing this limited power of attorney authorization, I understand, agree, and certify that:\n

\n \n\n

\n I have read and understand these terms and conditions.\n

\n\n

\n By clicking Accept Terms, I hereby confirm my intent to enter into a contract with my529 to grant limited power of attorney authorization. I have read and understood the Terms and Conditions, and I have retained a copy of the Program Description for my records.\n

\n
\n );\n },\n accept_terms_checkbox_label: 'Accept Terms',\n },\n },\n MyInfo: {\n head_title: 'Settings',\n msg_unsaved_changes: unsaved_changes,\n nav_path: '/settings',\n nav_title: 'Settings',\n label_paperless: 'Go Paperless',\n msg_paperless: 'Adjust your settings to go paperless today'\n },\n Multifactor: {\n btn_another_method: 'use another method',\n btn_calling: 'calling...',\n btn_call_again: 'call me again',\n btn_change_dob: 'change date of birth',\n btn_cancel: buttons.cancel,\n btn_confirm_dob: 'confirm date of birth',\n btn_continue_aa: 'continue to account access',\n btn_done: buttons.done,\n btn_edit: buttons.edit,\n btn_enter_token: 'enter a security code',\n btn_get_started: 'get started',\n btn_learn_more: buttons.learn_more,\n btn_logout: 'log out',\n btn_ok: buttons.ok,\n btn_register: buttons.register,\n btn_request_code: 'request code',\n btn_resend_code: 'resend code',\n btn_save: buttons.save,\n btn_sec_code: 'Security Code',\n btn_sending: 'sending...',\n btn_send_newpush: 'send new push',\n btn_submit_answer: 'submit answer',\n btn_submit_code: 'submit code',\n btn_submit_questions: 'submit questions',\n btn_submit_token: 'submit security code',\n btn_try_again: 'try again later',\n btn_use_token: 'use authenticator',\n btn_use_phone: 'use text or phone call',\n btn_verify_dob: 'verify date of birth',\n btn_verify_identity: 'verify identity',\n err_code_required: 'Security code is required',\n err_required: errors.required,\n err_options: errors.select_option,\n err_incorrect_answer: 'Answer is incorrect',\n err_invalid_token: 'Security code is invalid',\n err_token_required: 'Security code is required',\n err_phone_number_too_short: errors.phone_number_too_short,\n err_verification_code_required: 'Security code is required',\n lbl_ao_dob: 'Account Owner/Agent Birthdate',\n lbl_ao_name: 'Account Owner/Agent Name',\n lbl_call: 'Call Me',\n lbl_invalid_code: 'Security code is invalid',\n lbl_other: 'Authenticator',\n lbl_question: 'Question',\n lbl_my529_token: 'Security Code',\n lbl_other_options: 'Authenticator Option',\n lbl_present_2FA: 'Present 2-factor at login',\n lbl_phone_number: 'Phone Number',\n lbl_remember_device: 'Remember this device',\n lbl_registered: 'Registered',\n lbl_step1: 'Step 1:',\n lbl_step2: 'Step 2:',\n lbl_step3: 'Step 3:',\n lbl_text: 'Text Me',\n lbl_token: 'Security Code',\n lbl_verification_code: 'Security Code',\n msg_apology: 'We apologize for the inconvenience, but there is a discrepancy.',\n msg_authenticator_download: 'To receive a security code (token), install an authenticator app such as Google Authenticator or Microsoft Authenticator on your phone. Download an app from your phone\\'s app store.',\n msg_attempts_remaining: 'Warning: You have one more attempt to validate your security code before you will be logged out of the website. Security code is invalid',\n msg_token_attempts_remaining: 'Warning: You have one more attempt to validate your security code before you will be logged out of the website. Security code is invalid',\n msg_2FA: 'my529 requires two factor authentication',\n msg_2FA_explanation: 'Two Factor Authentication (2FA) adds a layer of protection to your account. It combines something you know, such as a username and password, with something you have, such as a device through which you can access a security code.',\n msg_2FA_phone: 'Please enter the 10 digit US phone number you would like to use to register for 2FA.',\n msg_2FA_reg_method: 'Choose a registration method you would like to use. You have the option to change this method in your account settings after logging in.',\n msg_2FA_unavailable: 'Two factor authentication is currently unavailable',\n msg_2FA_down_apology: 'We apologize for any inconvenience. Please try again later.',\n msg_congratulations: 'Congratulations!',\n msg_discrepancy: 'We apologize for the inconvenience, but there is a discrepancy',\n msg_enter_authenticator: 'Enter a security code from your authenticator app',\n msg_enter_token: 'Enter security code',\n msg_get_codes: 'Get code from an authenticator app',\n msg_download_authenticator: 'Download autheticator app',\n msg_maintain_security: 'To maintain the security of your account, we need to verify your identity.',\n msg_protection: 'For your protection, you must answer questions to verify your identity and prevent fraudulent activity on your my529 account.',\n msg_not_verified: 'The computer you are using is not registered with the my529. Verify your identity by answering the following question.',\n msg_dob_select: 'Please select your birth date below. my529 may use a third party to verify your identity.',\n msg_enter_seccode: 'Enter the my529 security code you see in your authenticator app',\n msg_later_prompt: 'When you are later prompted to use 2FA you will be required to enter a security code, or an authenticator app generated security code.',\n msg_locked_out: 'For security purposes, you have been locked out of your account for 30 minutes.',\n msg_scan_qrcode: 'Scan the QR image or enter the code below the image into your authenticator app',\n msg_successful: 'You have successfully registered for two factor authentication',\n msg_resend_successful: 'Resent successfully!',\n msg_rsa_select: 'Please select an answer for each question and click Submit Answers. You must answer all the questions.',\n msg_security_code(fourDigits) { return `We sent a security code to (***) ***-${fourDigits}`; },\n msg_we_sent(fourDigits) { return `We sent a security code to (***) ***-${fourDigits}`; },\n msg_we_called(fourDigits) { return `We called (***) ***-${fourDigits} with a verification code`; },\n msg_send_security_code(fourDigits) { return `Send a security code to (***) ***-${fourDigits}`; },\n msg_unable_verify: 'You are unable to verify your identity at this time. Please try again after 24 hours.',\n authenticator_path: '/multifactor/register/authenticator-method',\n confirmation_path: '/multifactor/confirmation',\n nav_path: '/multifactor',\n nav_title: 'Two Factor Authentication',\n phone_path: '/multifactor/phone-method',\n preferred_path: '/multifactor/preferred-method',\n register_path: '/multifactor/register',\n register_title: 'Register for Two Factor Authentication',\n register_phonenumber_label: 'Enter Phone Number',\n verify_identity_path: '/multifactor/verify-identity',\n verify_identity_title: 'Verify Your Identity',\n learn_more_url: 'https://my529.org/faq-two-factor-authentication/',\n },\n Navigation: {\n menu_english: 'English',\n menu_spanish: 'Español',\n menu_log_out: 'Log out',\n menu_profile: 'Profile',\n text_version: 'Version',\n },\n Notifications: {\n text_no_notifications: 'You currently have no notifications',\n },\n OptionChanges: {\n NewOptions: {\n msg_unsaved_changes: unsaved_changes,\n step_labels: ['Option Category', 'Select Option', 'Terms & Conditions', 'Print Review'],\n customized_agebased_option_selection_name: 'Customized Age-Based Option Change',\n customized_static_option_selection_name: 'Customized Static Option Change',\n errors: {\n empty_category_selection: 'Option category should not be empty.',\n empty_option_selection: 'Selected Option should not be empty.',\n duplicate_option_selection: 'No change has been made.',\n agree_to_terms: 'You have to agree to terms.',\n total_allocations_for_each_bracket_100_percent: 'The Total Allocations for each age bracket must equal 100%.',\n total_allocations_100_percent: 'The Total Allocation must equal 100%.',\n },\n success_message: 'Option changed successfully',\n btn_ok: buttons.ok,\n title_options_on_mobile: 'Customized Options on Mobile',\n text_options_on_mobile: 'Customized Option change on a mobile is not available. Please use a desktop instead.',\n\n },\n },\n OptionDetails: {\n head_investment_option(type) { return Investment Option: {type}; },\n head_remaining_option_changes: 'Remaining Option Changes',\n nav_path_investment: 'investment-path',\n text_custom: 'Custom',\n text_enrollment_date: 'Enrollment Date',\n text_static: 'Static',\n title_portfolio: 'Portfolio',\n title_nav: 'NAV',\n title_see_more_details: 'See More Details',\n title_symbol: 'Symbol',\n title_total: 'Total',\n title_units: 'Units',\n },\n Overview: {\n err_date_past_today: 'Date cannot be past today',\n err_start_after_end: 'Start Date must be before End Date',\n err_end_before_start: 'End Date must be after Start Date',\n lbl_bene_account(multipleSelected) { return multipleSelected ? 'Beneficiary Accounts' : 'Beneficiary Account'; },\n lbl_end_date: 'End Date',\n lbl_filter_1month: '1 Month',\n lbl_filter_3month: '3 Month',\n lbl_filter_6month: '6 Month',\n lbl_filter_YTD: 'YTD',\n lbl_filter_1year: '1 Year',\n lbl_filter_all: 'All',\n lbl_filter_custom: 'Custom',\n lbl_start_date: 'Start Date',\n lbl_savings_calculator: 'Savings Calculator',\n lbl_total: 'Total:',\n text_all_selected: 'All Accounts Selected',\n text_NA: NA,\n text_no_open_accounts: 'There are no open accounts. Please open an account to view this section.',\n text_oops: 'Oops!',\n text_see_more: 'To see more data, please make a contribution to your account.',\n text_select_all: 'Select All Accounts',\n text_something_wrong: 'Something went wrong. Please try again later.',\n title_close_fullscreen: 'Close Fullscreen View',\n title_open_fullscreen: 'Open Graph to Fullscreen'\n },\n ProtectedRoute: {\n msg_logged_out_inactivity: 'Your session has expired. You have been automatically logged out.',\n msg_logged_out_inactivity_warning(time) { return `Your session will expire in ${time}. If you wish to continue click ${buttons.close}`; },\n title_logged_out_inactivity_warning: 'Inactivity Warning',\n btn_close: buttons.close,\n },\n PrrCalculator: {\n learn_more_title: 'Personal Rate of Return Footer/Disclosure:',\n prr_not_available: 'Not Available',\n text_learn_more() {\n return (\n
\n

Performance returns for time periods longer than 365 days have been annualized.

\n\n

The Personal Rate of Return produced by this calculator (Personal Rate of Return) is a dollar-weighted calculation methodology (also known as Internal Rate of Return) used to measure the actual performance of an account, including the impact of the timing and dollar amount of deposits and withdrawals (i.e., cash flows). The formula used by my529 considers any activity in the account, including cash flows, dividends, interest and fees. It can be used to answer the fundamental question of how an investment is performing.

\n\n

The Personal Rate of Return should not be confused with performance returns posted by my529 for its investment options or returns for underlying funds. The performance returns posted for my529's investment options and for the underlying funds use a time-weighted calculation that normalizes returns by not considering cash flows. Performance reported for my529 investment options may differ significantly from the Personal Rate of Return of an account due to the unique transaction activity that occurred within the account.

\n\n

Year-to-date (YTD) performance returns are calculated from either the beginning of the calendar year or the opening date of the account, if the account was opened after the beginning of the year. The earliest date that may be selected is the account opening date, or January 1, 2005, whichever is later. If an account was not funded on the opening date, the calculation will use the funding date as the beginning date. Performance may be calculated up to the previous trading date.

\n\n

The Personal Rate of Return should not be used in making investment decisions. It is provided by my529 as a courtesy for informational purposes only with respect to the unique transaction activity that occurred within your account. You should consider other factors like your time horizon, risk tolerance, investment objectives, personal financial situation, and tax implications before making changes to your investment option.

\n\n

Past performance is not a guarantee of future performance.

\n
\n );\n },\n text_faq: [\n {\n question: 'How was my Personal Rate of Return calculated?',\n answer: 'Your Personal Rate of Return was determined using a dollar-weighted rate of return calculation. This calculation is based on a number of factors, including changes in the value of the my529 units you own, dividends and interest earned, fees paid and the dollar amount and timing of your contribution(s) and/or withdrawal(s). This type of calculation is also sometimes referred to as an Internal Rate of Return.',\n },\n {\n question: 'What is the difference between dollar-weighted and time-weighted rates of return?',\n answer: (\n \n A dollar-weighted rate of return is used to evaluate the combined investment decisions of an investment manager and an individual investor. The dollar-weighted Personal Rate of Return measures the performance of the underlying investments, including dividends, interest and fees, and also considers the impact of the relative dollar amount and timing of the contribution(s) and withdrawal(s) that an account owner makes.\n

\n In contrast, a time-weighted rate of return is commonly used to evaluate the performance of a fund or an investment manager. This rate of return measures the performance of the underlying investments, including dividends, interest and fees, but seeks to exclude or minimize the impact of the dollar amount and timing of contributions and withdrawals. The exclusion of cash flows normalizes the returns to allow for easier comparison of the investment manager's performance and other investment options.\n

\n Investment Option Performance published on my529.org is calculated using a time-weighted rate of return, whereas the account specific Personal Rates of Return within Account Access are calculated using a personal (dollar-weighted) rate of return.\n
\n ),\n },\n {\n question: 'How will withdrawals affect my performance?',\n answer: 'Withdrawals are not treated as a decline in your return, but will decrease the investment option value used to calculate your return. The dollar-weighted methodology, or Personal Rate of Return, takes into account the timing and size of contributions and withdrawals.',\n },\n {\n question: 'What time frame can I select for the Personal Rate of Return?',\n answer: 'The Personal Rate of Return can be calculated from any time period beginning as far back as January 1, 2005, or account opening (whichever is later) and ending as recently as the previous trading day. Account performance data is calculated nightly.',\n },\n {\n question: 'What does it mean when the Personal Rate of Return for time periods longer than 365 days has been annualized?',\n answer: 'A Personal Rate of Return for any time period longer than 365 days has been annualized, or calculated as the equivalent annual return an investment received over the selected period. Returns for a time period less than 365 days, on the other hand, have not been annualized to prevent any projection of performance.',\n },\n ],\n title: 'Personal Rate of Return',\n subtitle: 'Calculate your personal rate of return.',\n rate_of_return_txt: 'Rate of return',\n start_date_label: 'Start Date',\n end_date_label: 'End Date',\n btn_calculate: 'Calculate',\n btn_learnmore: 'Learn More',\n },\n PageNotFound: {\n btn_back_to_home: 'Back to Home',\n nav_title: 'Page Not Found',\n text_oops: \"Oops! Looks like you reached a page that doesn't exist.\", // eslint-disable-line\n },\n PasswordCard: {\n btn_change_password: 'Change Password',\n btn_toggle_password: buttons.toggle_password,\n err_confirm_password: 'Confirmed password does not match above password.',\n err_password_criteria: errors.password_criteria,\n err_required: errors.required,\n head_title: 'Change Password',\n lbl_confirm_password: 'Confirm New Password',\n lbl_current_password: current_password,\n lbl_new_password: 'New Password',\n msg_password_updated: 'Password changed.',\n },\n Payments: {\n access_card_url_text: 'my529AccessCard.com',\n btn_add_bank: 'Add Bank',\n btn_apply_now: 'Apply Now',\n btn_deposits_received: 'Deposits Received',\n btn_learn_more: 'Learn More',\n btn_ok: buttons.ok,\n btn_remove: 'Remove',\n btn_renew: 'Renew',\n btn_validate: 'Validate',\n head_pending_ach: 'Pending Electronic Funds Transfer Transactions',\n head_remove_account: 'Remove Bank Account',\n head_renew_account: 'Renew Bank Account',\n msg_removed: 'Account removed.',\n msg_renewed: 'Account renewed.',\n msg_poa_approved: 'LPOA is now approved.',\n msg_poa_not_approved: 'LPOA is now not approved.',\n nav_path: '/payments',\n nav_title: 'Payments',\n text_account_validated: 'Validated',\n text_account_not_validated: 'Not Validated',\n text_account_on_hold(ACHBankWithdrawalLanguage) { return `On Hold - ${ACHBankWithdrawalLanguage} business day hold in effect`; },\n text_access_card_reqs: [\n 'An open my529 Individual or Institutional account',\n 'An account beneficiary who is at least 17 years old',\n 'A domestic (U.S.) address for the account owner',\n ],\n text_attempts_exceeded: 'Validation Attempts Exceeded',\n text_bank_hold_language(ACHBankWithdrawalLanguage) { return `You will not be able to make a withdrawal to a newly linked bank account from my529 for ${ACHBankWithdrawalLanguage} business days after linking the bank account. Please plan accordingly.`; },\n text_confirm_remove(maskedBankAccountNumber) { return `Are you sure you want to remove bank account ${maskedBankAccountNumber}?`; },\n text_confirm_renew(maskedBankAccountNumber) { return `You have selected to keep bank account ${maskedBankAccountNumber} active for future use with your my529 account(s). Is this correct?`; },\n text_expiration_warning(expirationDate) { return `Please click the Renew link to confirm that you want to keep the bank account active, otherwise it will be removed on ${expirationDate} and will no longer be available for use with your my529 account(s).`; },\n text_has_pending_transactions: 'This bank account is being used for scheduled electronic funds transfer contributions or withdrawals. Please cancel all contribution or withdrawal schedules that use this bank account number and try again.',\n text_lpoa_switch: 'LPOA Withdrawal',\n text_my529_access_card: 'my529 Access Discover® Prepaid Card',\n text_poa_approved: 'Approved',\n text_poa_not_approved: 'Not Approved',\n text_requirements: 'Requirements',\n text_set_up_accounts: 'Set up bank accounts',\n title_access_cards: 'My Access Cards',\n txt_third_party_warning_access_cards: 'By clicking the blue button, you will be directed to the Open-CP portal, a third-party website where you can apply for the my529 Access Discover® Prepaid Card (see image below). The website, www.my529-ch.open-cp.com/signup, is operated by Central Payments. my529 is not responsible for and has no control over the content of third-party websites.',\n txt_third_party_disclaimer: 'The my529 Access Discover® Prepaid Card is issued by Central Bank of Kansas City, Member FDIC. Discover and the Discover acceptance mark are service marks used by Central Bank of Kansas City under license from Discover Financial Services. Certain fees, terms, and conditions are associated with the approval, maintenance, and use of the Card. You should consult your Cardholder Agreement and Fee Schedule. If you have any questions regarding the Card or such fees, terms, and conditions, you can contact us 24/7/365 toll-free at 1-844-545-0805.',\n txt_third_party_warning_access_cards_footer(openCPLink) {\n return `The my529 Access Discover® Prepaid Card is issued by Central Bank of Kansas City, Member FDIC. Discover and the Discover acceptance mark are service marks used by Central Bank of Kansas City under license from Discover Financial Services. Certain fees, terms, and conditions are associated with the approval, maintenance, and use of the Card. You should consult your Cardholder Agreement and Fee Schedule at ${openCPLink}. If you have any questions regarding the Card or such fees, terms, and conditions, you can contact us 24/7/365 toll-free at 1-844-545-0805.`;\n },\n txt_third_party_warning_for_info: 'By clicking the blue button, you will be directed to a third-party website. The content of the third-party website is for information purposes only. my529 is not responsible for and has no control over the content of the third-party website.',\n },\n PayrollContribution: {\n btn_add: buttons.add,\n btn_add_account: 'Contribute to Different Account',\n btn_agree: buttons.agree,\n btn_cancel: buttons.cancel,\n btn_edit: buttons.edit,\n btn_finish: buttons.finish,\n btn_instructions: 'Learn More',\n btn_next: buttons.next,\n btn_print: buttons.print,\n btn_terms: 'Terms and Conditions',\n err_date_past_today: 'Date cannot be past today',\n err_invalid_account: 'Invalid account number or beneficiary birthdate',\n err_print: errors.print,\n err_required: errors.required,\n err_total_amount: 'Amount must be greater than 0',\n err_total_percent: 'Must total 100%',\n head_account_number: 'my529 Account Number',\n head_beneficiary: 'Beneficiary',\n head_other_accounts: 'Accounts Others Own',\n head_own_accounts: 'My Own Accounts',\n lbl_birth_date: formLabels.birthdate,\n lbl_employee: 'Employee',\n lbl_employer: 'Employer',\n lbl_my529_account: 'my529 Account Number',\n lbl_pay_period_contribution: 'Pay Period Contribution',\n lbl_state: 'Employer State',\n lbl_terms_agree: 'I agree to the terms and conditions',\n msg_account_added: 'Account has been added.',\n msg_payroll_saved: 'Payroll direct deposit saved.',\n msg_payroll_updated: 'Payroll direct deposit updated.',\n nav_path: '/payroll',\n nav_title: 'Payroll Direct Deposit',\n text_add_account: 'You may add a my529 account to receive your regular payroll direct deposit if you know the my529 account number and the beneficiary\\'s date of birth.',\n text_current_allocations: 'The account allocation(s) of your current payroll direct deposit:',\n text_important_bank_info: 'Important: The bank account information provided above is strictly to fund the above-named employee\\'s my529 account(s) through the means of payroll direct deposit. Any other use of this information is prohibited. The user of this information is liable for losses incurred by its fraudulent use or dissemination.',\n text_total: 'Total:',\n title_add_account: 'Add Payroll Direct Deposit to Another Account',\n title_amount: 'Amount',\n title_bene_name: 'Beneficiary Name',\n title_employer: 'Employer',\n title_payroll_account: 'Payroll Bank Account Number',\n title_payroll_account_type: 'Payroll Bank Account Type',\n title_payroll_routing: 'Payroll Routing Number',\n },\n PayrollInstructions: {\n head_instructions: 'Learn More',\n title_how: 'How can I sign up?',\n text_how1: 'To sign up for after-tax payroll direct deposit with my529, you\\'ll need to provide the following information:',\n text_how2: [\n 'Your employer\\'s name',\n 'The total amount to be deducted from your paycheck each pay period',\n 'The dollar amount of percentage of your contribution to go to each my529 account',\n ],\n text_how3: 'Once you agree to the terms, you will be provided with a routing number and bank account number to give to your employer.',\n text_how4: 'How can I make changes?',\n text_how5: 'You may make any needed changes to your employer name and allocations. Changes to your payroll direct deposit amount or cancellation of your contribution will not take place until you contact your employer with the new information.',\n title_provide_to_employer: 'Provide payroll information to your employer',\n text_provide1: 'Don\\'t forget this step! To activate your contribution, you or your employer will need to set up my529 payroll direct deposit as an additional direct deposit from your paycheck as allowed by your employer. The confirmation you print contains the required direct deposit information.',\n text_provide2: 'Changes or cancellation of my529 payroll direct deposit must be done through your employer.',\n },\n PayrollTerms: {\n head_terms: 'Terms and Conditions',\n text_terms: [\n 'my529 UGMA/UTMA accounts may not be funded through payroll direct deposit.',\n 'The above amount will be deducted from my paycheck each pay period.',\n 'If I no longer wish to participate in payroll direct deposit or I no longer own any accounts with my529, I must stop payroll direct deposit with my employer.',\n 'This request revokes and replaces any previous my529 payroll direct deposit request that I have submitted. It will remain in effect until cancelled or replaced.',\n 'my529 will apply the funds received from my employer according to the current percentages on record with my529. I also acknowledge that any changes I make that affect the ownership or status of my my529 account(s) will change my current percentages.',\n 'Each pay period my employer will reduce my after-tax compensation by the total amount shown above and remit such amount to my529 for deposit into my my529 account(s).',\n 'This payroll direct deposit amount will not be invested with my529 until my529 receives the funds from my employer.',\n 'I have read the my529 Program Description and considered all investment objectives, risks, charges, and expenses.',\n 'Investments are not guaranteed by my529, the State Board of Regents, the Utah Higher Education Assistance Authority (UHEAA), or any other state or federal agency. However, FDIC insurance is provided for the FDIC-insured accounts. I understand that my investment could lose value.',\n 'Non-account Owner Contributors: As a reminder, when you authorize payroll direct deposit, you agree to the following: Only the my529 account owner may receive Utah income tax benefits for money contributed to a my529 account. If you are not the my529 account owner of the account to which you are contributing, you will not receive the Utah income tax benefit and you will not have any control over the money contributed to the my529 account.',\n ],\n text_terms_authorize: 'I understand and authorize the following:',\n },\n PhoneNumbersCard: {\n btn_change_phone: 'Change Phone Numbers',\n head_title: 'Phone Numbers',\n lbl_cell: 'Cell Phone',\n lbl_fax: 'Fax',\n lbl_home: 'Home Phone',\n lbl_other: 'Other Phone',\n lbl_work: 'Work Phone',\n text_intl_phone: 'Do you have an international phone number? If so, please call us at 800.418.2551 or submit form 500, Account Information Change',\n msg_phone_numbers_updated: 'Phone numbers updated.',\n msg_phone_number_too_short: errors.phone_number_too_short,\n msg_warning_changing_phone: 'Warning: Changing a phone number here will not change the phone number you have registered for two factor authentication.',\n },\n Preferences: {\n btn_change_delivery_prefs: 'Change Delivery Preferences',\n btn_close: buttons.close,\n btn_view_change_statement_delivery: 'View/Change Statement Delivery',\n head_utah_resident: 'Utah Resident',\n head_account: 'Account',\n head_balance: 'Balance',\n head_beneficiary: 'Beneficiary',\n head_birthday: 'Birthday Notifications',\n head_delivery_method: 'Delivery Method',\n head_newsletter: 'Newsletter',\n head_notification_preferences: 'Notification Preferences',\n head_official_communications: ' Official Communications',\n head_promotional: 'Promotional',\n head_title_change_statement_delivery_prefs: 'Change Statement Delivery Preferences',\n head_title_preferences: 'Preferences',\n head_title_statement_delivery: 'Quarterly Statements',\n head_tax_forms: 'Tax Forms',\n lbl_birthday_notifications: 'Birthday Notifications',\n lbl_official_communications: 'Includes Program Description releases, important my529 announcements, or plan changes',\n lbl_promotional_info: 'my529 will not send you promotional materials for other companies or products.',\n lbl_promotional_information: 'Promotional Information',\n lbl_options: 'Options',\n lbl_tax_documents_online: 'Tax Documents online only?',\n lbl_tax_forms: 'Tax documents designated for the beneficiary will be mailed to their address on file',\n lbl_utah_resident: 'Do you require a Utah tax form?',\n text_residency_mismatch: 'The selected state does not match your declared Utah residency status. Please check that your mailing address and/or the checkbox for Utah Resident are correct.',\n msg_preferences_changed: 'Notification delivery successfully changed.',\n msg_statement_delivery_changed: 'Quarterly Statement Delivery changed.',\n text_no_accounts: 'No accounts on file',\n text_will_not_send_material_for_other: 'my529 will not send you promotional material for other companies or products.',\n text_tax_document_online_only: \"If a tax document is designated to go to the beneficiary of the account, the tax document will still be mailed to the beneficiary's address on file.\",\n text_utah_tax_form_changes: 'This option is required if you are a Utah Resident or plan to file for a Utah state tax credit.',\n },\n PromoCode: {\n btn_enter_code: 'Enter promotion code',\n btn_submit: buttons.submit,\n err_required_field: errors.required,\n lbl_promo_code: 'Promo Code',\n text_success: 'Promo code successful',\n },\n Register: {\n dropdown_label: 'Select Registration Type',\n btn_register: 'Create',\n btn_toggle_password: buttons.toggle_password,\n err_max_length_20: errors.field_max_length_20,\n err_max_length_40: errors.field_max_length_40,\n err_password_criteria: errors.password_criteria,\n err_password_match: errors.passwords_match,\n err_required_field: errors.required,\n err_terms_agree: errors.terms_agree,\n err_username_cannot_match_pass: 'Username and password cannot be the same.',\n err_username_min_length: errors.username_min_length,\n err_username_spaces: errors.no_trailing_leading_spaces,\n err_username_with_numbers: errors.username_with_numbers,\n err_valid_email: errors.email_invalid,\n head_individual_account: 'Never opened a my529 account? Start here and open your first one!',\n head_other_account: 'Registration Type',\n head_other_account_by_form: 'Accounts Created by Form',\n head_terms: 'terms and conditions',\n lbl_email: 'Email',\n lbl_firstName: formLabels.firstName,\n lbl_lastName: formLabels.lastName,\n lbl_password1: formLabels.password,\n lbl_password2: formLabels.password_confirm,\n lbl_username: formLabels.username,\n msg_recaptcha_language: recaptchaLanguage,\n nav_path: '/register',\n nav_title: 'New Registration',\n text_i_am_new_to_my529: 'I am new to my529',\n text_i_have_accounts_with_529: 'I have accounts with my529',\n text_account_types_requirement: 'These account types require that the account be created by filling out a form and sending it to my529. Once received you will be able to setup online access here.',\n text_about_form104: 'UGMA/UTMA Account Agreement (Form 104)',\n text_about_individual_account: 'If you are an adult (age 18+), register below to begin opening an Individual account. This is the most common my529 account type that people open.',\n text_about_institutional_account: 'Owned by an institution such as a trust, corporation or other organization',\n text_about_intl_number: 'Do you have an international address or phone number?',\n text_about_other_account: Never opened a my529 account? Select I am new to my529 to create a new account with my529. Already have an account or sent forms and just want online access? Select I have accounts with my529 to setup your online access.,\n text_never_opened_account: 'If you are an adult (age 18+), register below to begin opening an Individual account. This is the most common my529 account type that people open.',\n text_about_ugma_utma_account: 'In a Uniformed Gift to Minors Act/Uniformed Transfers to Minors Act (UGMA/UTMA) account, the minor beneficiary is also the account owner, but an agent is appointed for the account. Contributions are an irrevocable, permanent gift to the minor beneficiary.',\n text_already_have_account: 'Already have an account?',\n text_form104: 'Institutional Account Agreement (Form 102)',\n text_form500: 'Account Information Change (Form 500)',\n text_i_agree: buttons.agree_terms,\n text_institutional_account: 'Institutional 529 Account',\n text_intl_number: 'International address or phone number?',\n text_read_terms: buttons.read_terms,\n text_setup_online_access: 'Set up online access',\n text_setup_user: 'Already have an account or sent forms and just want online access?',\n text_terms_bullets: [\n 'my529 will use and store information you provide us to contact you or market to you about my529.',\n 'my529 will not sell your information to third parties.',\n ],\n text_ugma_utma_account: 'UGMA/UTMA 529 Account',\n },\n ResendEmail: {\n btn_resend_email: 'Resend Email',\n head_confirm_email: 'Please confirm your email address',\n msg_email_resent: 'Email resent.',\n nav_path: '/resend-email',\n nav_title: 'Welcome To my529!',\n text_check_inbox: 'Check your inbox for a confirmation email. Click the link in your email to confirm the email address.',\n text_support_phone(supportNumber) { return `Didn't receive an email from us? Contact support at ${supportNumber}.`; }\n },\n ResetPassword: {\n btn_submit: 'Submit',\n btn_toggle_password: buttons.toggle_password,\n err_confirm_password: errors.required,\n err_password_criteria: errors.password_criteria,\n err_password_match: errors.passwords_match,\n err_password_required: errors.required,\n msg_password_changed: 'Password changed.',\n nav_path: '/reset-password',\n nav_title: 'Reset Password',\n text_confirm_password: 'Confirm new password',\n text_new_password: 'New Password',\n },\n ReviewStep: {\n btn_back: buttons.back,\n btn_continue: buttons.continue,\n head_review: 'Review',\n text_review: [\n 'Please validate your information is correct before creating your account.',\n 'my529 will attempt to verify your identity using an identity verification company. In the event that my529 needs more information to verify your ID, we will contact you.',\n ],\n },\n SetupUser: {\n nav_path: '/setup-user',\n nav_title: 'New Registration',\n err_required: errors.required,\n err_password_match: errors.passwords_match,\n lbl_ssn: formLabels.ssn,\n lbl_dob: 'Date of Birth',\n lbl_email: formLabels.email,\n lbl_password: formLabels.password,\n lbl_repeat_password: 'Repeat Password',\n lbl_username: formLabels.username,\n btn_continue: buttons.continue,\n btn_create: 'create',\n msg_agent_not_found: 'The account information you provided was not found in our system. Please re-enter the requested information.',\n msg_recaptcha_language: recaptchaLanguage,\n },\n Sidenav: {\n head_account_owner: 'Account Owner',\n head_need_help: 'Need help? Contact my529 at:',\n text_fax: 'f: ',\n text_loading: 'Loading...',\n text_phone: 'p: ',\n text_previous_login: 'Previous Login',\n btn_cancel: buttons.cancel,\n resources: {\n btn_proceed: 'Click here to proceed',\n title: 'Resources',\n lbl_program_description: 'Program Description',\n lbl_forms: 'Forms',\n lbl_performance: 'Performance',\n lbl_faqs: 'FAQs',\n title_third_party_warning: 'You are about to leave the my529 website',\n txt_third_party_warning_for_info: 'By clicking the blue button, you will be directed to a third-party website. The content of the third-party website is for information purposes only. my529 is not responsible for and has no control over the content of the third-party website.',\n },\n text_timezone: mountain_time_zone,\n },\n Signup: {\n btn_close: buttons.close,\n btn_delete_application: 'Delete',\n head_delete_account_application: 'Delete Account Application?',\n lbl_ao_step: 'Account Owner',\n lbl_bene_step: 'Beneficiary',\n lbl_confirmation_step: 'Confirmation',\n lbl_investment_step: 'Investment',\n lbl_review_step: 'Review',\n lbl_terms_step: 'Terms & Conditions',\n msg_application_deleted: 'Application deleted.',\n nav_path: '/add-account',\n nav_title: 'Add Account',\n text_delete_application_data: 'Are you sure you want to delete your account application, including beneficiary information and investment option information? This cannot be undone.',\n },\n SignupWelcome: {\n btn_continue: buttons.continue,\n btn_get_started: 'Get Started',\n head_welcome: 'Welcome',\n head_welcome_back: 'Welcome back',\n text_child_reading: 'Child reading',\n text_new_welcome: 'You are ready to set up your new account and start saving.',\n text_steps_remaining: 'Steps remaining for account setup:',\n text_steps_to_complete: 'Steps to complete',\n text_welcome_back: \"Let's finish getting your account set up and get you on the road of saving for the future.\",\n },\n Successors: {\n btn_add_successor(type) { return `Add ${type} Successor`; },\n btn_change_successor(type) { return `Change ${type} Successor`; },\n btn_close: buttons.close,\n err_age_limits(minAge, maxAge) { return errors.age_limits(minAge, maxAge); },\n err_missing_dob: 'We apologize for the inconvenience, but there is a discrepancy. Please contact my529 at 800.418.2551.',\n err_required: errors.required,\n head_remove_successor(type) { return `Remove ${type} Successor`; },\n head_title_primary_successor: 'Primary Successor',\n head_title_secondary_successor: 'Secondary Successor',\n lbl_birth_date: 'Successor Date of Birth',\n lbl_first_name: formLabels.firstName,\n lbl_last_name: formLabels.lastName,\n lbl_middle_name: 'Middle Name',\n lbl_ssn: formLabels.ssn,\n lbl_successor: 'Successor',\n menu_new_successor: 'New Successor',\n msg_successor_added: 'Successor added.',\n msg_successor_changed: 'Successor changed.',\n msg_successor_removed: 'Successor removed.',\n text_confirm_remove_successor(first, mid, last, type) { return `Do you want to remove ${first} ${mid} ${last} as ${type} successor?`; },\n text_none: 'None',\n text_successor_info_hide: 'In an effort to protect data confidentiality, the SSN and Birth Year are not displayed.',\n text_successor_to_trust: 'To designate or change the successor to a trust or institution, you must complete and submit Form 515 to my529.',\n },\n Summary: {\n head_account_owner: 'Account Owner',\n head_beneficiary: 'Beneficiary',\n head_investment_option: 'Investment Option',\n head_mailing_address: 'Mailing Address',\n head_physical_address: 'Physical Address',\n lbl_bene_utah_tax_payer: formLabels.beneUtahTaxPayer,\n lbl_birthdate: formLabels.birthdate,\n lbl_cancel: formLabels.cancel,\n lbl_city: formLabels.address_city,\n lbl_clear_state: formLabels.clear_state,\n lbl_firstName: formLabels.firstName,\n lbl_homePhone: formLabels.homePhone,\n lbl_lastName: formLabels.lastName,\n lbl_middleName: formLabels.middleName,\n lbl_postalCode: formLabels.address_postalCode,\n lbl_promo_code: 'Promotional Code (optional)',\n lbl_relationship: 'Relationship to Account Owner',\n lbl_ssn_tin: `${formLabels.ssn} / ${formLabels.tin}`,\n lbl_state: formLabels.address_state,\n lbl_street1: formLabels.address_street1,\n lbl_street2: formLabels.address_street2,\n lbl_utah_tax_payer: formLabels.utahTaxPayer,\n text_customized_ageBased: 'Customized Age-Based',\n text_customized_static: 'Customized Static',\n text_no: 'No',\n text_yes: 'Yes',\n },\n TermsConditionsStep: {\n btn_back: buttons.back,\n btn_i_agree: buttons.agree,\n head_terms: 'Terms and Conditions of my529 Account Agreement',\n msg_account_created: 'Account created.',\n text_terms_intro: 'This Account Agreement is entered into by and between my529 and the Account Owner / Agent effective the date all application materials and information have been completed and submitted to the Web site and the Account Owner / Agent clicks the appropriate button hereon to indicate its agreement with the terms herein. All capitalized terms used herein shall have the meanings used in the Terms of Use.',\n text_read_understand_agree(programDescription) { return `
I have read, understand, and agree to the Terms and Conditions of my529 Account Agreement. By clicking \"I Agree\" below where indicated, I hereby confirm my intent to enter into a contract with my529 to establish an account. I have read, understand, and retained a copy of the Program Description and will retain a copy of this document for my records.
`; },\n text_terms1: [\n 'This Account Agreement is subject to, and incorporates by reference, the operating procedures and policies adopted by the Utah State Board of Regents, acting in its capacity as the Utah Higher Education Assistance Authority, and statutes governing the Utah Educational Savings Plan Trust codified as UCA 53B-8a. Any amendments to statutes and regulations shall automatically amend this Agreement and any changes to operating procedures and policies, including investment allocations and fees, shall amend this Agreement after adoption by the Utah State Board of Regents.',\n 'This Account Agreement, the Program Description, and the program rules adopted by the Utah State Board of Regents constitute the entire agreement between the account owner and my529. No person is authorized to make oral or written modifications to this Agreement.',\n 'This Agreement shall be deemed to be performed in Salt Lake City, Utah, and the laws of the State of Utah shall govern the terms and conditions of the Agreement. Accounts shall be governed in accordance with the laws of the State of Utah and applicable federal law, including 26 U.S.C. Section 529, as amended. The venue for any action arising from or relating to an account shall be in state or federal court located in Salt Lake City, Utah.',\n 'There may be both federal and state tax consequences to opening or contributing to a my529 account. Advice should be sought from a qualified tax advisor. my529 cannot and does not provide legal, financial, or tax advice. Accordingly, you should consult your own tax or financial advisor concerning your particular tax or financial situation or if you have any questions concerning opening an account.',\n 'If my529 determines that there has been any material misrepresentation related to this Account Agreement or an account, the account may be cancelled and the account money returned to the account owner, less any applicable fees and penalties.',\n 'As the account owner, I warrant and represent to my529 the following as a condition to establishing the account:',\n ],\n text_terms2: [\n 'I am opening the account to provide for the qualified higher education expenses of the beneficiary I have identified.',\n 'I am at least 18 years of age and have a valid U.S. Social Security or Taxpayer Identification number.',\n 'I understand that my529 may collect non-public personal information about me from third parties to verify my identity or prevent fraud. This personal information may include, among other things, my name and address, Social Security or Taxpayer Identification number, and date of birth.',\n 'I have the power and authority to sign and open an account with my529.',\n 'The information I have provided to complete the Account Agreement -- and all future information I will provide with respect to my account is true, complete, and correct.',\n 'I understand that the account will be opened based on the information I provide.',\n 'I understand that the value of my account may vary depending on market conditions and the performance of the investment option I select. I understand that the account balance may be more or less than the total amount contributed to the account. I understand that opening an account involves investment risk, including the possible loss of principal.',\n \"I understand that my investments are not insured or guaranteed by the State of Utah, my529, the Utah State Board of Regents, the Utah Higher Education Assistance Authority, or any other state or federal government agency (except to the extent noted below regarding FDIC insurance), or any of the employees or directors of any such entities. I understand that investments in my529's FDIC-insured accounts are insured by the FDIC up to the maximum amount set by federal law. Insurance coverage is subject to the total of my investments in my529's FDIC-insured accounts plus other accounts I hold at Sallie Mae Bank and U.S. Bank (Banks). It is my responsibility to determine how my my529 investments would be aggregated with other accounts at the Bank for purposes of the FDIC insurance.\",\n 'I have looked into the 529 plan in the state in which I pay taxes, as well as the state in which my beneficiary pays taxes, to see if it offers tax or other benefits to me that are not offered by my529.',\n ],\n text_terms3(faxNumber, phoneNumber) { return `I hereby authorize my529 to debit a scheduled contribution from my checking or savings account. This authorization is to remain in full effect until the above end date (if applicable) or until the following: (1) I delete the bank account(s) specified above or (2) I notify my529 of the revocation of this authorization by doing one of the following: (i) logging into Account Access at my529.org and use the online account feature Manage Contributions; (ii) contacting my529 by telephone at ${phoneNumber}; or (iii) submitting Form 200 via fax to ${faxNumber} or via U.S. Mail to PO Box 145100, Salt Lake City, UT 84114-5100. I understand that any revocation will not be effective until my529 has had a reasonable opportunity to act on the termination notification. If the bank account is owned jointly, I certify that I am authorized to initiate this transaction. I understand that rejected transactions or insufficient funds could cause fees to be assessed by my529 and/or my financial institution. (Applicable if I have signed up for online contribution(s).)`; },\n text_terms4: 'I understand that my account notification preferences have been set to online delivery. These settings can be changed at any time in my online login on the Settings page.',\n },\n TemplateTable: {\n msg_exceeded_max_percentage: 'The total percentage invested cannot exceed 100%.',\n msg_exceeds_max_allocation(fundName, maximumAllocation) { return `The percentage invested for ${fundName} cannot exceed ${maximumAllocation}%.`; },\n msg_only_whole_numbers: 'Only whole numbers can be entered.',\n text_notes(agreementYear) {\n return [\n '* An investment allocation to this fund may not exceed 25 percent in the account. Therefore, the total underlying fund expense will reflect the weighted allocation to the underlying investment.',\n `† The total underlying fund expense reflects a fee waiver pursuant to a Fee Waiver Agreement in effect through February 28, ${agreementYear}. The total underlying fund expense may increase if the Fee Waiver Agreement is not extended beyond February 28, ${agreementYear}.`,\n 'Note: All numbers are rounded to the third decimal place.'\n ];\n },\n },\n TransactionHistory: {\n btn_export: 'Export',\n btn_open: 'Open',\n err_date_past_today: 'Date cannot be past today',\n err_from_after_to: 'From Date must be before To Date',\n err_to_before_from: 'To Date must be after From Date',\n head_title: 'Transactions',\n lbl_from_date: 'From Date',\n lbl_to_date: 'To Date',\n text_acct_number: 'Acct #',\n text_bene_name: 'Beneficiary',\n text_option: 'Option',\n text_basis: 'Basis',\n text_amount: 'Amount',\n text_date: 'Date',\n text_no_transactions: 'No transactions to display',\n text_tax_year: 'Tax Year',\n text_transaction_type: 'Transaction Type',\n text_view_details: 'View Details',\n text_milestone: 'Milestone',\n },\n TransactionDetails: {\n head_title: 'Transaction Details',\n text_acct_number: 'Acct #',\n text_bene_name: 'Beneficiary',\n text_option: 'Option',\n text_portfolio: 'Portfolio',\n text_units: 'Units',\n text_nav: 'NAV',\n text_total: 'Total',\n text_amount: 'Amount',\n text_date: 'Date',\n text_transaction_type: 'Transaction Type',\n text_type: 'Type',\n text_bank_name: 'Bank Name',\n text_bank_account_number: 'Number',\n text_bank_account_type: 'Bank Account Type',\n text_card_number: 'Card Number',\n text_payee_name: 'Payee Name',\n text_payment_confirmation: 'Confirmation #',\n },\n Transactions: {\n btn_transactions: 'Transactions',\n btn_cancel: buttons.cancel,\n preflight_in_progress_message: 'Preparing Transaction...',\n transactions_path: 'transactions',\n edit_path: 'edit',\n new_path: 'new',\n withdrawal_path: 'withdrawals',\n cancel_transaction_modal_message(transactionType, frequency) {\n let message = `Are you sure you want to cancel this ${transactionType}?`;\n\n if (transactionType === this.TRANSACTION_TYPES.CONTRIBUTION.type) {\n if (frequency === this.FREQUENCY.MONTHLY || frequency === this.FREQUENCY.TWICE_MONTHLY) {\n message = 'Are you sure you want to cancel these recurring monthly contributions?';\n }\n else if (frequency === this.FREQUENCY.SPECIAL_OCCASION) {\n message = 'Are you sure you want to cancel these recurring yearly contributions?';\n }\n }\n else if (transactionType === this.TRANSACTION_TYPES.WITHDRAWAL.type) {\n if (frequency === this.FREQUENCY.MONTHLY) {\n message = 'Are you sure you want to cancel these recurring monthly withdrawals?';\n }\n }\n\n return message;\n },\n transaction_title(transactionType) {\n switch (transactionType) {\n case this.TRANSACTION_TYPES.CONTRIBUTION.type:\n return this.TRANSACTION_TYPES.CONTRIBUTION.title;\n case this.TRANSACTION_TYPES.OPTION_CHANGE.type:\n return this.TRANSACTION_TYPES.OPTION_CHANGE.title;\n case this.TRANSACTION_TYPES.TRANSFER.type:\n return this.TRANSACTION_TYPES.TRANSFER.title;\n case this.TRANSACTION_TYPES.WITHDRAWAL.type:\n return this.TRANSACTION_TYPES.WITHDRAWAL.title;\n case this.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type:\n return this.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.title;\n default: // do nothing;\n }\n },\n transactionhub_account_list_subtitle(transactionType) {\n switch (transactionType) {\n case this.TRANSACTION_TYPES.CONTRIBUTION.type:\n return 'Who is this for?';\n case this.TRANSACTION_TYPES.OPTION_CHANGE.type:\n return 'Which account would you like to change?';\n case this.TRANSACTION_TYPES.TRANSFER.type:\n return 'Move funds from.';\n case this.TRANSACTION_TYPES.WITHDRAWAL.type:\n return 'Who is this for?';\n default: // do nothing;\n }\n },\n preflight_title_suffix(transactionType) {\n let preflightTitleSuffix = ' cannot be performed on this account because:';\n switch (transactionType) {\n case this.TRANSACTION_TYPES.TRANSFER.type:\n preflightTitleSuffix = ' cannot be made from this account because:';\n break;\n default: // do nothing\n }\n return preflightTitleSuffix;\n },\n nav_path(accountId, transactionType, editType, transactionId, groupId) {\n switch (transactionType) {\n case this.TRANSACTION_TYPES.TRANSFER.type: {\n if (editType === 'new') {\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.TRANSFER.path_new}`;\n }\n return `/accounts/${accountId}/transactions/${transactionId}/${this.TRANSACTION_TYPES.TRANSFER.path_edit}/edit`;\n }\n case this.TRANSACTION_TYPES.OPTION_CHANGE.type: {\n if (editType === 'new') {\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.OPTION_CHANGE.path_new}`;\n }\n else if (editType === 'edit') {\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.OPTION_CHANGE.path_edit}`;\n }\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.OPTION_CHANGE.path_view}`;\n }\n case this.TRANSACTION_TYPES.CONTRIBUTION.type: {\n if (editType === 'new') {\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.CONTRIBUTION.path_new}`;\n }\n return `/accounts/${accountId}/transactions/${transactionId}/${this.TRANSACTION_TYPES.CONTRIBUTION.path_edit}/edit`;\n }\n case this.TRANSACTION_TYPES.WITHDRAWAL.type: {\n if (editType === 'new') {\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.WITHDRAWAL.path}/groups/${groupId}/new`;\n }\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.WITHDRAWAL.path}/groups/${groupId}/edit`;\n }\n case this.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type:\n return `/accounts/${accountId}/transactions/${this.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.path}/groups/${groupId}/new`;\n default: return `/accounts/${accountId}/transactions`; // returns base route of Transactions component\n }\n },\n FREQUENCY: {\n MONTHLY: 'Monthly',\n TWICE_MONTHLY: 'Twice-Monthly',\n ONE_TIME: 'One-Time',\n SPECIAL_OCCASION: 'Special Occasion',\n },\n TRANSACTION_TYPES: {\n WITHDRAWAL: {\n path: 'withdrawals',\n title: 'Withdrawals',\n type: 'Withdrawal',\n },\n TRANSFER: {\n path_edit: 'transfers',\n path_new: 'transfers/new',\n title: 'Transfers',\n type: 'TransferOut',\n },\n OPTION_CHANGE: {\n path_edit: 'option-changes/edit',\n path_new: 'option-changes/new',\n path_view: 'option-changes/view',\n title: 'Option Changes',\n type: 'OptionChange',\n },\n CONTRIBUTION: {\n path_edit: 'contributions',\n path_new: 'contributions/new',\n title: 'Contributions',\n type: 'Contribution',\n },\n WITHDRAWAL_REQUEST: {\n path: 'withdrawal-requests',\n title: 'Request Withdrawal',\n type: 'WithdrawalRequest',\n }\n },\n },\n TransactionStepper: {\n btn_agree: buttons.agree,\n btn_back: buttons.back,\n btn_cancel: buttons.cancel,\n btn_finish: buttons.finish,\n btn_next: buttons.next,\n btn_print: buttons.print,\n },\n Transfers: {\n msg_unsaved_changes: unsaved_changes,\n btn_back: buttons.back,\n btn_cancel: buttons.cancel,\n btn_close: buttons.close,\n btn_ok: buttons.ok,\n btn_next: buttons.next,\n btn_submit: buttons.submit,\n btn_print: buttons.print,\n btn_finish: buttons.finish,\n lbl_add_account: 'Add account',\n err_accountOwnerSingleAccount: 'There is only one account under this Account Owner.',\n err_custodialFromOtherType: (typeName) => `${typeName} Accounts cannot be transferred from other account types.`,\n err_custodialToOtherBeneficiary: (typeName) => `${typeName} Accounts cannot be transferred to other Beneficiaries.`,\n err_custodialToOtherType: (typeName) => `${typeName} Accounts cannot be transferred to other account types.`,\n err_deferredEarningsNotConfirmed: 'You must confirm deferred earnings to do a full transfer balance.',\n err_destinationAccountMissing: 'Destination account is missing.',\n err_fullBalanceNotAllocated: 'Full Balance Transfers must be 100% allocated.',\n err_invalidAmount: 'Enter a valid amount.',\n err_invalidPercentage: 'Enter a valid percentage.',\n err_maxGroupBalanceExceeded: (beneficiaryName, amount) => `The maximum amount allowed for transfer to accounts for which ${beneficiaryName} is the beneficiary is ${amount}.`,\n err_noOptionChangesRemaining: (beneficiaryName) => `No Option Changes Remaining for Beneficiary ${beneficiaryName}.`,\n err_noRemainingOptionChanges: 'The maximum number of option changes allowed per calendar year has already been reached for this beneficiary.',\n err_partialBalancePercentUnderMinimum: 'Total must be greater than 0%.',\n err_partialBalancePercentOverMax: 'Total must be less than 100%.',\n err_sourceAccountZeroBalance: 'Source Account has no funds to transfer.',\n err_termsNotChecked: 'I have read and understand these terms and conditions.',\n err_totalGreaterThanAvailable: 'Total must be less than Available Balance.',\n err_totalUnderMinimum: 'Total must be at least $1.00.',\n head_account_number: 'Account Number',\n head_account_hash: 'Account #',\n head_account_owner: 'Account Owner',\n head_account_option: 'Account Option',\n head_account_type: 'Account Type',\n head_available_balance: 'Available Balance',\n head_bene: 'Beneficiary',\n head_bene_name: 'Beneficiary Name',\n head_option_change: 'Option Change',\n head_opt_change: 'Opt. Change',\n head_total_value: 'Total Value',\n head_source_status: 'Source Account Status:',\n lbl_destination_account: 'Destination Account',\n lbl_transfer_type: 'Transfer Type Toggle',\n lbl_partial_transfer: 'Partial Transfer',\n lbl_source_account: 'Source Account',\n lbl_leave_open: 'Leave this account open',\n lbl_transfer_types: 'Amount/Percentage',\n lbl_radio_amount: 'Amount ($)',\n lbl_radio_percentage: 'Percentage (%)',\n lbl_total: 'Total',\n lbl_step_select: 'Select Transfer Amount',\n lbl_step_terms: 'Terms & Conditions',\n lbl_step_confirm: 'Transfer Confirmation',\n msg_balance_info() {\n return (\n
\n The available balance is the current total value of the account minus pending transactions out of the account - such as withdrawals, transfers, contribution reversals, contributions that have not cleared the bank, or fees.\n\n {msg_available_balance_contribution}\n
\n );\n },\n msg_transfer_created: 'Transfer created.',\n msg_transfer_updated: 'Transfer updated.',\n nav_path_accounts: '/accounts',\n nav_path_edit: 'edit',\n nav_path_new: 'new',\n nav_transfer_title: (isNew) => `${isNew ? 'New' : 'Edit Scheduled'} Transfer`,\n title_transfer_type: (isEditing) => isEditing ? 'Edit Scheduled Transfer' : 'Create Transfer',\n title_deferred_earning_confirm: 'Deferred Earnings Confirmation',\n title_full_balance: 'Full Balance Transfers',\n title_option_change_info: 'Investment Option Change Information',\n title_destination_account: 'Transfer to Destination Account',\n title_source_account: 'Transfer from Source Account',\n text_deferred_earning: 'A full balance transfer from this account will result in a loss of deferred earnings from this account. Are you sure you wish to proceed?',\n text_print_copy: 'Please print a copy of this page for your records.',\n text_terms_read: 'I have read and understand these Terms and Conditions.',\n text_close_status: (willClose) => willClose ? 'Will Be Closed' : 'Will Remain Open',\n text_timezone: mountain_time_zone,\n text_full_balance_info() {\n return (\n
\n

\n You have selected a full-balance transfer of the my529 account shown above. The following will result:\n

\n \n

\n If the account owner/agent contributes to this account through payroll direct deposit and is closing the account, they must notify their employer to discontinue contributions.\n

\n
\n );\n },\n text_learn_more(form400, form300) {\n return (\n
\n

\n Only transfers between accounts where you are the owner/agent can be done online. To make a transfer to an account owned by another person, please complete the Internal Transfer form (form 400).\n

\n

\n UGMA/UTMA funds cannot be transferred to an account of another beneficiary or to a non-UGMA/UTMA account.\n

\n

\n \n Transferring funds between two or more my529 accounts where the account owner/agent, beneficiary, and account type are the same is considered an investment option change. You may change your investment option only twice per calendar year per beneficiary.\n \n

\n

\n \n If after making a transfer, you want to change the investment option for those same accounts, you may do so without incurring a second option change as long as you make the change before the close of market trading on the New York Stock Exchange (NYSE), normally 2:00 p.m. MT, on that day. You also must make any changes or cancellations before the close of market trading.\n \n

\n

\n \n If you make your transfer after the close of market trading, or on a weekend or holiday, any additional changes or cancellations must be received by 2:00 p.m., MT, the following business day.\n \n

\n

\n \n If you have questions about investment option changes, please review the Program Description before proceeding with this transfer.\n \n

\n

\n Transferring funds to a beneficiary who is not a member of the family of the current beneficiary is not an allowable transfer and is viewed as a nonqualified withdrawal by the IRS, with the earnings subject to both federal and state income taxes and a 10 percent federal penalty tax. If you wish to transfer between accounts where the beneficiaries are not family members, please complete a Withdrawal Request form (form 300) indicating a nonqualified withdrawal.\n

\n

\n For Utah taxpayers, transfers from an account where the beneficiary was younger than age 19 at the time the account was established to an account where the beneficiary was age 19 or older when the account was opened will be subject to recapture of previous years' Utah state income tax benefits and/or disallow Utah state income tax benefits for the current year.\n

\n
\n );\n },\n text_option_change_info() {\n return (\n
\n

\n This transfer will count as one of the two total investment option changes allowed per beneficiary for this calendar year.\n

\n

\n If, after making this transfer, you want to change the investment option for the same beneficiary's accounts of the same account type,\n you may do so without incurring a second option change as long as you make the change before the close of market trading on the New York Stock Exchange (NYSE),\n normally 2:00 p.m. MT. You also must make any changes or cancellations before the close of market trading.\n

\n

\n If you make a transfer request after the close of market trading, or on a weekend or holiday, any additional changes or cancellations must be received by 2:00 p.m. MT, the following business day.\n

\n
\n );\n },\n text_terms_conditions() {\n return (\n
\n

Terms and Conditions

\n

\n Please review the following Terms and Conditions regarding transfers\n

\n

\n I understand that a transfer between my529 accounts with the same account owner, beneficiary, and account type is considered an investment option change, which may only be done twice each calendar year per beneficiary.\n

\n

\n {/* eslint-disable-next-line react/no-unescaped-entities */}\n I understand that if I want to change the investment option for the same beneficiary's accounts of the same account type, I may do so without incurring a second option change as long as I make the change before the close of market trading on the New York Stock Exchange (NYSE), normally 2:00 p.m. MT, on the same day as the transfer.\n

\n

\n I understand that if I make my transfer request after the close of market trading, or on a weekend or holiday, any additional changes or cancellations must be received by 2:00 p.m. MT, the following business day. I may not cancel or change my transfer request after that deadline without it being counted as one of my option changes.\n

\n

\n I certify that the beneficiaries on the source and destination accounts involved in this transfer are family members, as defined by Section 529 of the Internal Revenue Code.\n

\n

\n I understand if I am a Utah taxpayer that if I am transferring money from an account held by a beneficiary who was younger than age 19 at the time the beneficiary was designated on the account, to an account where the beneficiary was age 19 or older when designated on the account:\n

\n \n
\n );\n },\n },\n WithdrawalRequests: {\n msg_unsaved_changes: unsaved_changes,\n btn_back: buttons.back,\n btn_cancel: buttons.cancel,\n btn_finish: buttons.finish,\n btn_next: buttons.next,\n btn_print: buttons.print,\n err_age_limits(minAge, maxAge) { return errors.age_limits(minAge, maxAge); },\n err_field_required: errors.required,\n err_max_amount(maxAmount) { return `Maximum withdrawal is ${maxAmount}`; },\n err_min_amount(minAmount) { return `Minimum withdrawal is ${minAmount}`; },\n err_required_field: errors.required,\n err_school_required: errors.school_required,\n err_selection_required: 'Selection is required.',\n head_account_details: 'Account Details',\n head_amount: 'Amount',\n head_confirmation: 'Withdrawal Confirmation and Summary',\n head_recipient: 'Recipient',\n head_terms: 'Terms and Conditions',\n lbl_agree_terms: buttons.agree_terms,\n lbl_birthdate: 'Beneficiary Birth Date',\n lbl_confirmation: 'Confirmation',\n lbl_fbo: 'FBO',\n lbl_full_balance: 'Full Balance',\n lbl_partial_balance: 'Partial Balance',\n lbl_student_id: 'Student ID',\n msg_withdrawal_requested: 'Withdrawal requested.',\n nav_title: 'Withdrawal Requests',\n text_3rd_party: 'my529 may use a third party to verify your identity.',\n text_account_num: 'Account Number',\n text_available_balance_info: [\n 'Withdrawals can be made only from contributed funds that have posted to your account(s) for at least 7 business days.',\n 'The Available Balance is the current total value of the account minus pending transactions.',\n ],\n text_available_for_withdrawal: 'Available For Withdrawal',\n text_bene: 'Beneficiary',\n text_current_opt: 'Current Option',\n text_full_balance_info: 'Your withdrawal request will result in a zero balance, so my529 will close your account(s) and cancel any automated contributions. Please contact your employer to cancel automated payroll direct deposit. If you would like your zero-balance account(s) to remain open, please check the box below.',\n text_full_balance_note: fullBalanceWithdrawalNote,\n text_print_copy: 'Please print a copy of this page for your records.',\n text_submitted: 'Congratulations! Your online withdrawal request has been submitted. my529 will send you an email confirmation shortly.',\n text_terms_p1: [\n 'Use of Funds',\n 'I understand my529 is not responsible for tracking the use of funds withdrawn from my529 accounts or determining their eligibility as qualified higher education expenses (including K-12 tuition expenses). I understand that I am responsible for maintaining adequate records, such as receipts and other documentation, for qualified higher education expenses (including K-12 tuition expenses).',\n 'Federal law mandates that total withdrawals from all qualified tuition plans, such as my529, to pay for K-12 tuition expenses cannot exceed $10,000 annually per beneficiary from all 529 accounts. I understand that I am responsible for adhering to the federal limit.',\n ],\n text_terms_p2: [\n 'Nonqualified Withdrawals',\n \"I understand that any amount of this withdrawal used for nonqualified higher education expenses will make that amount a nonqualified withdrawal. I understand that the earnings portion of nonqualified withdrawals will be subject to federal and applicable state income taxes (including any recapture of Utah state income tax credit or deduction previously claimed), as well as an additional 10 percent federal penalty tax. Withdrawals due to the beneficiary's death, disability, scholarship(up to the amount of the scholarship), or U.S.Service academy attendance are exempt from the penalty tax(but are still subject to income tax on the earnings portion of that withdrawal).\",\n 'If any part or all of this withdrawal becomes nonqualified, I understand that either I or the beneficiary, as applicable, will be responsible for reporting the withdrawal on an income tax return for the tax year of the withdrawal and for paying any related taxes or penalties.',\n ],\n text_terms_p3: [\n 'Tax Forms',\n 'I understand that my529 will send IRS Form 1099-Q in January each year after a withdrawal is issued from an account. This form states the total amount, principal, and earnings portion of all withdrawals in a calendar year, for each payee, as applicable.',\n 'In addition, I understand that Utah taxpayer/resident account owners will receive a TC-675H tax form each year. This form states the following information for an account owner: total qualifying contributions to count toward a Utah state income tax credit, or deduction, total withdrawals made, and total amount transferred to an nonqualified beneficiary.',\n ],\n text_terms_p4: [\n 'Request Submission',\n 'I certify that the information entered for this withdrawal request is true and accurate.',\n 'I authorize my529 to make my requested withdrawal.',\n 'If the account is an UGMA/UTMA account, I certify that I am the custodian of the account and the withdrawal request is necessary for the welfare and benefit of the beneficiary. If the account is owned by a trust, corporation, or other entity, I certify that I am authorized to act on its behalf.',\n ],\n text_timezone: mountain_time_zone,\n },\n Withdrawals: {\n total_amount_full_balance: 'Total Amount of Full Balance',\n total_amount_full_balance_electronic: 'Total Amount of Full Balance (less $3.50 Electronic School Fee)',\n msg_unsaved_changes: unsaved_changes,\n msg_available_balance(ACHBankWithdrawalLanguage) {\n return (\n
\n Withdrawals can be made only from contributed funds that have posted to your account(s) for at least 7 days.\n\n

You will not be able to make a withdrawal to a newly linked bank account from my529 for {ACHBankWithdrawalLanguage} business days after linking the bank account. Please plan accordingly.

\n\n

The Available Balance is the current total value of the account minus pending transactions.

\n\n {msg_available_balance_contribution}\n
\n );\n },\n btn_change_agent_address: 'Change Agent Address',\n btn_change_bene_address: 'Change Beneficiary Address',\n btn_add_school: 'Add School',\n title_edit_withdrawal: 'Edit Withdrawal',\n title_new_withdrawal: 'New Withdrawal',\n text_full_balance_info: 'Your withdrawal request will result in a zero balance, so my529 will close your account(s) and cancel any automated contributions. Please contact your employer to cancel automated payroll direct deposit. If you would like your zero-balance account(s) to remain open, please check the box below.',\n text_ElectronicSchoolPayment: 'Electronic Payment',\n ElectronicSchoolPayment_fee_msg: 'Electronic Payment ($3.50 fee for expedited payment to the school.)',\n ElectronicSchoolPayment_electronic_info: [\n 'Secure electronic payments arrive at the school within approximately 2-3 business days. The expedited service costs $3.50 per transaction, and my529 adds the fee to the requested withdrawal amount. Track your payment status on the Transactions page.',\n 'my529 will send the tax forms in January of the following year.'\n ],\n ElectronicSchoolPayment_mail_info: [\n 'my529 sends checks directly to the school. Please allow 2-3 weeks for processing and delivery. Withdrawal checks are made payable to the eligible educational institution. The check stub includes the beneficiary’s name and student ID (if provided by the account owner).',\n 'my529 will send the tax forms in January of the following year.'\n ],\n ElectronicSchoolPayment_mail_check: 'Mail Check',\n tab_labels: [\n 'One Time',\n 'Recurring Monthly',\n ],\n step_labels: [\n 'Withdrawal Type',\n 'Recipient',\n {\n onetime: 'Amount, Sell Date & Pay Method',\n recurring: 'Amount, Start/End Date & Pay Method',\n },\n 'Terms & Conditions',\n ],\n errors: {\n amnt_with_fee: 'Withdrawal + Electronic Payment fee exceeds individual available balance.',\n min_withdrawal(minWithdrawal) {\n return `Minimum withdrawal is ${minWithdrawal}.`;\n },\n exceeds_access_card_capcity: 'Withdrawal exceeds my529 Access Card max balance.',\n exceeds_total_available: 'Withdrawal exceeds total available balance.',\n exceeds_individual_available: 'Withdrawal exceeds individual available balance.',\n amount_type: 'Amount type is required.',\n withdrawal_type: 'Withdrawal type is required.',\n max_withdrawal(maxWithdrawal) {\n return `Withdrawals of ${maxWithdrawal} or more require a Signature Guarantee. Visit https://my529.org to complete and submit Withdrawal Request Form 300, which includes a section for a Signature Guarantee.`;\n },\n sell_date_required: 'Sell Date is required.',\n sell_date_valid: 'Sell Date is not valid.',\n max_withdrawal_recurring(maxWithdrawalRecurring) {\n return `Recurring withdrawals cannot exceed ${maxWithdrawalRecurring} or more.`;\n },\n start_date_required: 'Start Date is required.',\n start_date_valid: 'Start Date is not valid.',\n start_date_enabled(numberOfRollingDays) {\n return `Start Date can be only between the 1st and 28th or ${numberOfRollingDays} days from now.`;\n },\n end_date_required: 'End Date is not valid.',\n end_date_valid: 'End Date should be after the start date.',\n recipient_required: 'Recipient is required.',\n school_required: errors.school_required,\n state_required: 'State is required.',\n postal_code_required: 'Postal code is required.',\n payment_method_required: 'Payment method is required.',\n payment_method_on_hold(ACHBankWithdrawalDelay) { return `${ACHBankWithdrawalDelay} business day hold in effect for this bank account.`; },\n payment_type_required: 'Payment type is required.',\n },\n cutoff_warning(date) {\n return `The withdrawal request must be submitted by ${date} MT to be eligible for today's trading session.`;\n },\n poa_bank_modal_body: 'The selected bank account was set up by a user with Power of Attorney on your my529 accounts. Please verify that this is the desired destination bank account for your withdrawal.',\n poa_bank_modal_title: 'Bank Account created by Power of Attorney',\n step0_amount_date: {\n sellDateText(isRecurring) {\n const allow23DaysText = isRecurring ?\n 'Please allow 2-3 days for the trade to settle when considering which day to schedule the withdrawal.' :\n 'Please allow 2-3 days for the trade to settle – plus mailing time for check requests of up to 2 weeks – when considering which day to schedule the withdrawal.';\n const dateInfo = isRecurring ?\n 'The Start Date is the day on which my529 will submit an order to sell units of your investment for your withdrawal. Withdrawn funds will not be available on the Sell Date.' :\n 'The Sell Date is the day on which my529 will submit an order to sell units of your investment for your withdrawal. Withdrawn funds will not be available on the Sell Date.';\n\n return [\n dateInfo,\n allow23DaysText,\n 'If the markets are closed to trading on the selected day due to a holiday, weekend or other event, the sell order will be submitted the next business day. my529 offers no guarantee regarding the timing of transactions.'\n ];\n },\n partial_balance: {\n title: 'Only a partial balance withdrawal can be performed at this time.',\n more_than_max_p_long: 'A full balance withdrawal is not allowed for one or more of the following reasons:',\n more_than_max_p_short: 'A full balance withdrawal is not allowed because:',\n listItem1: 'Another transaction is already scheduled.',\n html_listItem2_more_than_max(maxWithdrawal) {\n return `Withdrawals of ${maxWithdrawal} or more require a Signature Guarantee. Visit https://my529.org to complete and submit Withdrawal Request Form 300, which includes a section for a Signature Guarantee.`;\n },\n uncollected_funds_text: 'Withdrawals can be made only from contributed funds that have posted to your account(s) for at least 7 business days.',\n },\n continue_btn_label: 'Continue',\n currency_input_label: 'Amount to withdraw...',\n proportional_amounts(accountNumber, amount) { return `Account ${accountNumber}: ${amount}`; },\n sell_date_label: 'Sell Date',\n },\n step3_terms_and_conditions: {\n title: 'Terms and Conditions',\n title_help: 'Please review the following Terms and Conditions regarding withdrawals',\n p1: {\n title: 'Use of Funds',\n text1: 'I understand my529 is not responsible for tracking the use of funds withdrawn from my529 accounts or determining their eligibility as qualified higher education expenses (including K-12 tuition expenses). I understand that I am responsible for maintaining adequate records, such as receipts and other documentation, for qualified higher education expenses (including K-12 tuition expenses).',\n text2: 'Federal law mandates that total withdrawals from all qualified tuition plans, such as my529, to pay for K-12 tuition expenses cannot exceed $10,000 annually per beneficiary from all 529 accounts. I understand that I am responsible for adhering to the federal limit.',\n },\n p2: {\n title: 'Nonqualified Withdrawals',\n text1: \"I understand that any amount of this withdrawal used for nonqualified higher education expenses will make that amount a nonqualified withdrawal. I understand that the earnings portion of nonqualified withdrawals will be subject to federal and applicable state income taxes (including any recapture of Utah state income tax credit or deduction previously claimed), as well as an additional 10 percent federal penalty tax. Withdrawals due to the beneficiary's death, disability, scholarship (up to the amount of the scholarship), or U.S. Service academy attendance are exempt from the penalty tax (but are still subject to income tax on the earnings portion of that withdrawal).\",\n text2: 'If any part or all of this withdrawal becomes nonqualified, I understand that either I or the beneficiary, as applicable, will be responsible for reporting the withdrawal on an income tax return for the tax year of the withdrawal and for paying any related taxes or penalties.',\n },\n p3: {\n title: 'Tax Forms',\n text1: 'I understand that my529 will send IRS Form 1099-Q in January each year after a withdrawal is issued from an account. This form states the total amount, principal, and earnings portion of all withdrawals in a calendar year, for each payee, as applicable.',\n text2: 'In addition, I understand that Utah taxpayer/resident account owners will receive a TC-675H tax form each year. This form states the following information for an account owner: total qualifying contributions to count toward a Utah state income tax credit, or deduction, total withdrawals made, and total amount transferred to an nonqualified beneficiary.',\n },\n p4: {\n title: 'Request Submission',\n text1: 'I certify that the information entered for this withdrawal request is true and accurate.',\n text2: 'I authorize my529 to make my requested withdrawal.',\n text3: 'If the account is an UGMA/UTMA account, I certify that I am the custodian of the account and the withdrawal request is necessary for the welfare and benefit of the beneficiary. If the account is owned by a trust, corporation, or other entity, I certify that I am authorized to act on its behalf.',\n },\n agree_btn_label: 'I have read and understand these Terms and Conditions.',\n },\n messages: [\n {\n id: 'HigherEd',\n messages: [\n \"All withdrawn money will be used to pay for the beneficiary's qualified higher education expenses.\" // eslint-disable-line quotes\n ]\n },\n {\n id: 'K-12Tuition',\n messages: [\n \"All withdrawn money will be used to pay for the beneficiary’s qualified K-12 tuition expenses, up to $10,000 per year.\" // eslint-disable-line quotes\n ]\n },\n {\n id: 'NonQualified',\n messages: [\n 'The money will not be used to pay for qualified higher education expenses or K-12 tuition expenses.'\n ]\n },\n {\n id: 'P',\n messages: [\n 'The account owner/agent will receive IRS Form 1099-Q. If the account owner is also a Utah taxpayer/resident, they will receive Form TC-675H.',\n 'my529 will send the tax forms in January of the following year.'\n ]\n },\n {\n id: 'B',\n messages: [\n 'The beneficiary will receive IRS Form 1099-Q. If the account owner is a Utah taxpayer/resident, they will receive Form TC-675H.',\n 'my529 will send the tax forms in January of the following year.'\n ]\n },\n {\n id: 'I',\n messages: [\n \"my529 sends checks directly to the school. Please allow 2-3 weeks for processing and delivery. Withdrawal checks are made payable to the eligible educational institution. The check stub includes the beneficiary’s name and student ID (if provided by the account owner).\", // eslint-disable-line quotes\n 'my529 will send the tax forms in January of the following year.'\n ]\n }\n ],\n ao_school_address_modal_title: 'Update Account Owner Address',\n bene_school_address_modal_title: 'Update Beneficiary Address',\n retained_school_address_txt: 'Important: The information below was entered by you in a previous withdrawal submitted to this school. Please update the information as needed.',\n ugmautma_check_only_txt: 'UGMA/UTMA accounts are not eligible for withdrawals by Electronic Withdrawal, because withdrawal checks need to be noted when sourced from UGMA/UTMA funds.',\n withdraw_funds_modal: {\n title: 'Withdrawing Funds from Multiple Accounts',\n modal_title: 'Withdraw Funds',\n p1: 'There are two ways to withdraw funds if you own multiple accounts for the same beneficiary:',\n listItem1: 'You may select one account and the amount you wish to withdraw or',\n listItem2: 'You may withdraw funds proportionally from all displayed accounts for the same beneficiary',\n p_all_accts_disabled: 'The FROM ALL DISPLAYED ACCOUNTS button is disabled since there is at least one account with $0 available balance.',\n table_column1_title: 'Account Number',\n table_column2_title: 'Current option',\n table_column3_title: 'Available',\n btn_one_acct_label: 'From one account',\n btn_all_accts_label_short: 'From all accounts',\n btn_all_accts_label_long: 'From all displayed accounts',\n },\n check_mailing_text: 'A check will be mailed in 3-5 business days. Please allow up to two weeks for delivery.',\n electronic_request_text: 'Most requests can be completed within 3 business days.',\n step3_print_and_summary: {\n title: 'Withdrawal Confirmation and Summary',\n comment1: 'Congratulations! Your online withdrawal request has been submitted. my529 will send you an email confirmation shortly.',\n comment2: 'Your withdrawal will be reflected on your account activity within 2-3 business days.',\n subtitle_payee_bank: 'Payee Bank',\n subtitle_payee_address: 'Payee Address',\n subtitle_schedule: 'Schedule',\n frequency_onetime(sellDate) {\n return `One Time on ${sellDate}`;\n },\n frequency_recurring(dayOfMonth) {\n return `Recurring monthly on the ${dayOfMonth}`;\n },\n end_date_text(endDate) {\n return `Ending on ${endDate}`;\n },\n table_title: 'Withdrawal Amount',\n table_note: 'Funds will be withdrawn proportionally from all accounts listed below:',\n table_column1_title: 'Account',\n table_column2_title: 'Investment option',\n table_column3_title: 'Full Market',\n table_column4_title: 'Leave Open',\n table_column5_title: 'Withdrawal Amount*',\n total_amount(totalAmountOf) { return `Total Amount of ${totalAmountOf}`; },\n star_note: fullBalanceWithdrawalNote,\n print_note: 'Please print a copy of this page for your records.',\n },\n no_payment_accounts_text(onClick) {\n return

There are other electronic methods that can be added for withdrawals. To add other electronic methods, or to verify an existing bank account for electronic withdrawals, visit the Payments page.

; // eslint-disable-line\n },\n lbl_select_method: 'Select Method',\n },\n UpcomingTransactions: {\n head_title: 'Upcoming Transactions',\n menu_cancel: buttons.cancel,\n menu_edit: buttons.edit,\n menu_view: buttons.view,\n msg_error_retrieving_transactions: 'An error occurred while attempting to retrieve Upcoming Transactions. Please try refreshing the page, or contact my529 if you continue to experience this issue.',\n text_acct_number: 'Acct #',\n text_bene_name: 'Beneficiary',\n text_option: 'Option',\n text_amount: 'Amount',\n text_end_date: 'End Date',\n text_date: 'Date',\n text_frequency: 'Frequency',\n text_no_upcoming_transactions: 'No upcoming transactions to display',\n text_scheduled_date: 'Scheduled Date',\n text_status: 'Status',\n text_transaction_type: 'Transaction Type',\n drawer_title_view_pending_option: 'Pending Option Change Details',\n },\n UsernameCard: {\n btn_change_username: 'Change Username',\n err_different_username: 'Username is same as current',\n err_required: errors.required,\n err_username_length: errors.field_max_length_40,\n err_username_min_length: errors.username_min_length,\n err_username_spaces: errors.no_trailing_leading_spaces,\n err_username_with_numbers: errors.username_with_numbers,\n head_title: 'Username',\n lbl_current_password: current_password,\n lbl_current_username: 'Current Username',\n lbl_new_username: 'New Username',\n msg_username_changed: 'Username changed.',\n },\n ValidateEmail: {\n nav_path: '/validate-email',\n nav_title: 'Validating Email',\n msg_email_validated: 'Email validated. Please log in.',\n },\n ValidationFinish: {\n btn_back: buttons.back,\n btn_cancel: buttons.cancel,\n btn_validate: buttons.validate,\n err_required: errors.required,\n err_full_amount: errors.full_amount,\n head_validate(maskedBankAccountNumber) { return `Validate ${maskedBankAccountNumber} For Withdrawal`; },\n lbl_amount1: 'First Deposit',\n lbl_amount2: 'Second Deposit',\n msg_validated: 'Account validated',\n text_exceeded_attempts_error: 'The number of attempts to enter the correct verification amounts has been exceeded. Please go back to the Payments page and initiate another verification deposit.',\n text_match_error(attemptsRemaining, pluralize) {\n return pluralize ?\n `The amounts entered did not match the amounts deposited in your bank account. Please confirm the amounts by checking with your banking establishment then try again. You have ${attemptsRemaining} attempts remaining.` :\n `The amounts entered did not match the amounts deposited in your bank account. Please confirm the amounts by checking with your banking establishment then try again. You have ${attemptsRemaining} attempt remaining.`;\n },\n text_validation_instructions: 'To activate a bank account to receive electronic withdrawals from your my529 account(s), you must first verify your bank account by entering the amounts of two deposits placed by my529 into your bank account. If the amounts do not appear in your bank account\\'s transaction history, please make sure you have allowed at least three business days for the amounts to post. Look for two small deposits originating from my529.',\n },\n ValidationStart: {\n btn_begin: buttons.begin,\n btn_cancel: buttons.cancel,\n btn_done: buttons.done,\n head_validate(maskedBankAccountNumber) { return `Validate ${maskedBankAccountNumber} For Withdrawal`; },\n text_complete_tp_verify: 'Complete the following process to verify your bank account for receipt of electronic withdrawals from your my529 account(s).',\n text_step_1: 'my529 will deposit two small, random amounts into your bank account.',\n text_step_2: 'After three business days:',\n text_step_3: 'Check your bank accounts transaction history and note the two amounts that were deposited by my529.',\n text_step_4: 'Return to this web page and enter the two amounts in the fields provided. This action verifies your bank account for receipt of withdrawals from your my529 account(s).',\n text_step_5: 'To authorize my529 to deposit the two verification amounts into your bank account, please click \\'Begin\\'',\n text_step_done: 'We received your request to verify this bank account for receipt of electronic withdrawals from your my529 accounts(s). my529 will deposit two small, random amounts into your bank account. Please allow three business days for the amounts, originating from my529, to post to your bank account. Note the amounts and return to this web page to input them in the fields provided, thus completing the verification process.',\n },\n VerifyEmail: {\n btn_change_email: 'Change Email Address',\n btn_resend_email: 'Resend Verification Email',\n head_change_email_address: 'Change Email Address',\n head_validating_email_while_logged_in: 'Validating Your Email',\n msg_email_resent: 'Verification Email Resent.',\n msg_validating_while_logged_in: 'It looks like you are trying to validate your email in a window you are already logged into. To validate your email, copy and paste the validation link into a new window or tab.',\n nav_path: '/verify-email',\n nav_title: 'Verify Email',\n text_verify_email1: 'Please verify your email address. A message containing a confirmation link was sent to the above email address. Click on the link to continue.',\n text_verify_email2(supportNumber) { return `If you did not receive the confirmation message, please check your spam folders. You can also resend the email by clicking the button below. If you continue to experience issues, contact the my529 support team at ${supportNumber}.`; },\n text_verify_email3: 'If the email address displayed above is incorrect, click the button above to change it.',\n },\n};\n\nexport default English;\n","import { notificationShow } from '@frontend/common';\nimport {\n clearStore,\n toggleAuthyDownDialog,\n toggle2FADialog,\n toggleRSADialog\n} from 'components/AppRoot/Navigation/actions';\nimport { REASONS_BLOCKED } from 'components/AppRoot/Navigation/constants';\nimport { persistClientErrors } from './error_handler';\nimport English from 'utils/translations/en.js';\n\n/*\n*\n* Middleware\n*\n*/\nexport const apiMessages = store => next => action => { // eslint-disable-line\n if (action.error) return; // ignore extra actions with error set as true\n\n const { payload } = action;\n\n if (payload) {\n const errorMessages = [];\n const inputMessages = [];\n const infoMessages = [];\n const warningMessages = [];\n\n // Handler for API error codes\n if (payload.status >= 299 && payload.status < 400) { // Redirection\n errorMessages.push('A temporary redirect was issued by the server.');\n window.location.href = English.Home.nav_path;\n }\n else if (payload.status === 400) { // payload.data may be an array of messages.\n if (payload.data && payload.data.length > 0) {\n payload.data.forEach(msg => {\n switch (msg.MessageType) {\n case 0: infoMessages.push(msg.Message); break;\n case 1: warningMessages.push(msg.Message); break;\n case 2: {\n if (!msg.Field) {\n errorMessages.push(msg.Message);\n break;\n }\n else if (msg.Field !== '') {\n inputMessages.push(msg.Message);\n break;\n }\n break;\n }\n default: break;\n }\n });\n }\n else {\n errorMessages.push('A bad request or invalid credentials were provided. No messages were provided. Status: 400.');\n }\n }\n else if (payload.status === 401) { // Likely invalid token\n persistClientErrors(action); // currently returning a 401, but leaving this in hopes the back end can turn on logging for unauthenticated user for a short time\n errorMessages.push('Your session has timed out. Please log in again.');\n store.dispatch(clearStore());\n }\n else if (payload.status === 403) { // Likely user doesn't have needed Claim/Permission\n errorMessages.push('Access denied.');\n }\n else if (payload.status === 404) {\n errorMessages.push('Not found.');\n }\n else if (payload.status > 404 && payload.status < 409) { // race condition\n errorMessages.push('You are attempting an action that is not allowed. Contact my529 if you continue to experience this issue.');\n }\n else if (payload.status === 409) {\n errorMessages.push('You are attempting to modify a record that is in the process of being modified.');\n }\n else if (payload.status === 412) {\n const reasonBlocked = payload.data.Precondition;\n switch (reasonBlocked) {\n case REASONS_BLOCKED.TWO_FACTOR_AUTHENTICATION: {\n store.dispatch(toggle2FADialog());\n return Promise.reject(action);\n }\n case REASONS_BLOCKED.RSA_VERIFICATION: {\n store.dispatch(toggleRSADialog());\n return Promise.reject(action);\n }\n default: return;\n }\n }\n else if (payload.status === 460) { // Authy is down\n store.dispatch(toggleAuthyDownDialog());\n return Promise.reject(action);\n }\n else if (payload.status > 460 && payload.status < 600) { // send the GUID to the API so it can persist the GUID into the WebErrorLog table\n errorMessages.push('There was an issue communicating with the server. Please try again later, or contact my529 if you continue to experience this issue.');\n }\n\n if (errorMessages.length > 0) {\n errorMessages.forEach(error => store.dispatch(notificationShow(error, 'error')));\n const updatedAction = action;\n updatedAction.type = `${action.type}_ERRORS`;\n next(updatedAction);\n action.payload.status !== 400 && action.payload.status !== 401 && persistClientErrors(action); // Don't log common 400s, and 401 is already being logged above so that we access their user info before store gets cleared\n return Promise.reject(action);\n }\n\n if (inputMessages.length > 0) {\n const updatedAction = action;\n updatedAction.type = `${action.type}_ERRORS`;\n next(updatedAction);\n return Promise.reject(action);\n }\n\n if (warningMessages.length > 0) {\n warningMessages.forEach(warning => store.dispatch(notificationShow(warning, 'warning')));\n }\n\n if (infoMessages.length > 0) {\n infoMessages.forEach(info => store.dispatch(notificationShow(info, 'warning')));\n }\n\n return next(action);\n }\n\n // Non-async actions\n else {\n return next(action);\n }\n};\n","/*\n*\n* Accounts Constants\n*\n*/\nexport const CHANGE_BENE_ADDRESS = 'src/components/Features/protected/Accounts/CHANGE_BENE_ADDRESS';\nexport const CHANGE_SUCCESSOR = 'src/components/Features/protected/Accounts/CHANGE_SUCCESSOR';\nexport const DELETE_BENE_ADDRESS = 'src/components/Features/protected/Accounts/DELETE_BENE_ADDRESS';\nexport const GET_ACCOUNTS = 'src/components/Features/protected/Accounts/GET_ACCOUNTS';\nexport const GET_ACCOUNTS_SUMMARY = 'src/components/Features/protected/Accounts/GET_ACCOUNTS_SUMMARY';\nexport const GET_BALANCE_HISTORY = 'src/components/Features/protected/Accounts/GET_BALANCE_HISTORY';\nexport const GET_SUCCESSORS = 'src/components/Features/protected/Accounts/GET_SUCCESSORS';\nexport const GET_TRANSACTION_DETAILS = 'src/components/Features/protected/Accounts/GET_TRANSACTION_DETAILS';\nexport const GET_UPCOMING_TRANSACTIONS = 'src/components/Features/protected/Accounts/GET_UPCOMING_TRANSACTIONS';\nexport const GET_ALL_UPCOMING_TRANSACTIONS = 'src/components/Features/protected/Accounts/GET_ALL_UPCOMING_TRANSACTIONS';\nexport const GET_ALL_TRANSACTIONS = 'src/components/Features/protected/Accounts/GET_ALL_TRANSACTIONS';\nexport const GET_TRANSACTIONS_EXPORT = 'src/components/Features/protected/Accounts/GET_TRANSACTIONS_EXPORT';\nexport const GET_ALL_TRANSACTIONS_EXPORT = 'src/components/Features/protected/Accounts/GET_ALL_TRANSACTIONS_EXPORT';\nexport const REMOVE_SUCCESSOR = 'src/components/Features/protected/Accounts/REMOVE_SUCCESSOR';\nexport const TRANSFER_DELETE = 'src/components/Features/protected/Accounts/TRANSFER_DELETE';\nexport const ACCOUNT_INVESTMENT_PATH_GET = 'src/components/Features/protected/Accounts/ACCOUNT_INVESTMENT_PATH_GET';\nexport const GET_PRR_DATES = 'src/components/Features/protected/Accounts/GET_PRR_DATES';\nexport const GET_PRR = 'src/components/Features/protected/Accounts/GET_PRR';\nexport const SUBMIT_PROMO_CODE = 'src/components/Features/protected/Accounts/SUBMIT_PROMO_CODE';","/*\n*\n* StaticResources Constants\n*\n*/\nexport const ENVIRONMENT_VARIABLES_GET = 'src/components/AppRoot/StaticResources/ENVIRONMENT_VARIABLES_GET';\nexport const PASSWORD_REQUIREMENTS_GET = 'src/components/AppRoot/StaticResources/PASSWORD_REQUIREMENTS_GET';\nexport const STATIC_DOCUMENTS_GET = 'src/components/AppRoot/StaticResources/STATIC_DOCUMENTS_GET';\nexport const TMX_ENVIRONMENT_VARIABLES_GET = 'src/components/AppRoot/StaticResources/TMX_ENVIRONMENT_VARIABLES_GET';\nexport const SERVER_DATETIME_GET = 'src/components/AppRoot/StaticResources/SERVER_DATETIME_GET';\nexport const WEB_MESSAGES_GET = 'src/components/AppRoot/StaticResources/WEB_MESSAGES_GET';\nexport const SET_LOADING_PUBLIC_VARS = 'src/components/AppRoot/StaticResources/SET_LOADING_PUBLIC_VARS';\nexport const BLANK_ADDRESS = {\n AddressId: '',\n City: '',\n Country: '',\n CountryName: '',\n PostalCode: '',\n State: '',\n StreetAddress1: '',\n StreetAddress2: '',\n StreetAddress3: '',\n};\n// hardcoded banners - the value has to match exactly `${URL}/${Page}` from WebsiteMessage api \n// add/remove when needed\nexport const BANNER_LOCATIONS = {\n LOGIN: '/login/Login Page',\n HOME: '/home/Home Page',\n CONTRIBUTIONS_NEW: '/accounts/{accountid}/transactions/contributions/new/Contribution (New)',\n CONTRIBUTIONS_EDIT: '/accounts/{accountid}/transactions/contributions/edit/Contribution (Edit)',\n OPTION_CHANGES_NEW: '/accounts/{accountid}/transactions/option-changes/new/Option Change (New)',\n OPTION_CHANGES_EDIT: '/accounts/{accountid}/transactions/option-changes/edit/Option Change (Edit)',\n TRANSFERS_NEW: '/accounts/{accountid}/transactions/transfers/new/Transfer (New)',\n TRANSFERS_EDIT: '/accounts/{accountid}/transactions/transfers/edit/Transfer (Edit)',\n WITHDRAWALS_NEW: '/accounts/{accountid}/transactions/withdrawals/groups/{accountgroupid}/new/Withdrawal (New)',\n WITHDRAWALS_EDIT: '/accounts/{accountid}/transactions/withdrawals/groups/{accountgroupid}/edit/Withdrawal (Edit)',\n ADD_ACCOUNT_STEP3: '/add-account/Simple Sign-up Page - Step 3',\n DOCUMENTS: '/documents/Documents',\n};\n","/*\n*\n* Accounts Reducers\n*\n*/\nimport { cloneDeep, pick } from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n CHANGE_BENE_ADDRESS,\n DELETE_BENE_ADDRESS,\n GET_ACCOUNTS,\n GET_ACCOUNTS_SUMMARY,\n GET_SUCCESSORS,\n GET_TRANSACTION_DETAILS,\n GET_UPCOMING_TRANSACTIONS,\n GET_ALL_UPCOMING_TRANSACTIONS,\n GET_ALL_TRANSACTIONS,\n ACCOUNT_INVESTMENT_PATH_GET,\n GET_PRR_DATES,\n GET_BALANCE_HISTORY,\n} from './constants';\nimport { BLANK_ADDRESS } from 'components/AppRoot/StaticResources/constants';\nimport {\n currencyFormatter,\n} from '@frontend/common';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\n// formatter for Fund Units since it should include commas and decimal should at 5 places\nconst fundUnitsFormatter = new Intl.NumberFormat('en-US', { minimumFractionDigits: 5 });\n\nconst initialState = {\n accountList: [],\n balanceHistory: [],\n isAccountListLoaded: false,\n emptyAccount: {\n accountNumber: 0,\n accountType: '',\n beneficiary: {\n addresses: {\n Mailing: BLANK_ADDRESS,\n Physical: BLANK_ADDRESS,\n Other: BLANK_ADDRESS,\n },\n beneficiaryId: 0\n },\n netPrincipal: '',\n option: { id: 0, name: '' },\n optionChangesRemaining: '',\n priorContributions: '',\n ytdContributions: '',\n transactions: []\n },\n grandTotalAllAccounts: '0',\n groupedAccountsSummary: {},\n loadedTransactions: [],\n successors: [],\n transaction: {\n id: 0,\n accountNumber: 0,\n beneficiaryName: '',\n option: '',\n date: '',\n total: 0,\n basis: 0,\n type: '',\n source: '',\n payeeName: '',\n bankName: '',\n bankAccountNumber: '',\n bankAccountType: '',\n accessCardNumber: '',\n transactionDetails: [],\n },\n upcomingTransactions: [],\n upcomingTransactionsAll: [],\n transactionsAll: [],\n investmentPath: { TemplateName: '', FundCategories: [] },\n pRRDates: {\n minDate: null,\n maxDate: null,\n },\n uiPermissions: {\n canAddInterestedParties: false,\n canManageBankAccounts: false,\n giftingEnabled: false,\n hasCsaFamilyAccount: false, // allows user to create a new CSA family account if they already have this account type\n noBeneAccounts: false, // this can be that AO either has no accounts yet or thery were all closed and passed 13 months\n }\n};\n\nfunction AccountsReducer(state = initialState, action) {\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case GET_ACCOUNTS: {\n let uiPermissions = {\n canAddInterestedParties: false,\n canManageBankAccounts: false,\n giftingEnabled: false,\n hasCsaFamilyAccount: false,\n noBeneAccounts: false,\n };\n\n let grandTotalAllAccounts = 0;\n\n const alphabetizedAccountList = action.payload.data.sort((obj1, obj2) => { // alphabetizes account list by bene first name\n const id1 = `${obj1.Beneficiary.Name.toUpperCase()}`;\n const id2 = `${obj2.Beneficiary.Name.toUpperCase()}`;\n\n return id1 < id2 ? -1 : 1;\n });\n\n const accountList = alphabetizedAccountList.map(account => {\n\n uiPermissions = createUiPermissions(account, uiPermissions);\n\n // map through allocations and combine any parts that are below 2%\n const minPercentageToShow = 0.02; // min to show allocation in own slice is more than 2%\n const moneyAllocations = [];\n const combinedAllocations = [];\n let combinedPercentageNum = 0;\n account.MoneyAllocations.forEach((allocation, index) => {\n const allocationObject = {\n ...allocation,\n id: index,\n ActualPercentageNum: allocation.ActualPercentage,\n ActualPercentage: `${(allocation.ActualPercentage * 100).toFixed(2)}%`,\n Value: currencyFormatter(allocation.Value),\n ValueNum: allocation.Value,\n allocationDetails: [{\n id: index,\n ActualPercentage: `${(allocation.ActualPercentage * 100).toFixed(2)}%`,\n Category: allocation.Category,\n Value: currencyFormatter(allocation.Value),\n }],\n };\n\n if (allocation.ActualPercentage > minPercentageToShow) {\n // push this allocation object into moneyAllocations array\n moneyAllocations.push(allocationObject);\n }\n else {\n // if below 2%, put into combined array to use later\n combinedAllocations.push(allocationObject);\n combinedPercentageNum = combinedPercentageNum + allocation.ActualPercentage;\n }\n });\n\n // add in combined allocations that were each below 2%\n if (combinedPercentageNum > minPercentageToShow) { // make a single combined slice, if the combined totals over 2% together\n moneyAllocations.push({\n id: 'combinedAllocations',\n ActualPercentageNum: combinedPercentageNum,\n ActualPercentage: `${(combinedPercentageNum * 100).toFixed(2)}%`,\n allocationDetails: combinedAllocations,\n });\n }\n else if (combinedAllocations.length > 0) { // if combined total is still smaller than 2%, combine into the next smallest (last) allocation\n const lastAllocation = moneyAllocations[moneyAllocations.length - 1];\n lastAllocation.allocationDetails = [...lastAllocation.allocationDetails, ...combinedAllocations];\n lastAllocation.ActualPercentageNum = lastAllocation.ActualPercentageNum + combinedPercentageNum;\n lastAllocation.ActualPercentage = `${(lastAllocation.ActualPercentageNum * 100).toFixed(2)}%`;\n }\n\n const newAccount = {\n accountCloseDate: account.CloseDate && dayjs(account.CloseDate).format('MM/DD/YYYY'),\n accountId: account.AccountId,\n accountGroupId: account.AccountGroupId,\n accountIsClosed: account.Status === 'Closed',\n accountNumber: account.AccountNumber,\n accountType: account.Type,\n accountTypeEnum: account.TypeEnum,\n agreementDate: dayjs(account.AgreementDate).format('MM/DD/YYYY'),\n agent: {\n name: account.Agent.Name,\n },\n beneficiary: {\n addresses: {\n Physical: account.Beneficiary.PhysicalAddress ? pick(account.Beneficiary.PhysicalAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS,\n Mailing: account.Beneficiary.MailingAddress ? pick(account.Beneficiary.MailingAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS,\n Other: account.Beneficiary.OtherAddress ? pick(account.Beneficiary.OtherAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS,\n },\n name: account.Beneficiary.Name,\n fullName: `${account.Beneficiary.FirstName} ${account.Beneficiary.MiddleName} ${account.Beneficiary.LastName}`,\n agentId: account.Beneficiary.AgentId,\n beneficiaryId: account.Beneficiary.BeneficiaryId,\n birthday: account.Beneficiary.Birthdate,\n age: account.Beneficiary.BeneficiaryAge\n },\n csaWizardUrl: account.CSANewProgramAccountWizardUrl,\n earnings: currencyFormatter(account.Earnings),\n hasAvailablePromoCodes: account.HasAvailablePromoCodes,\n interestedPartyId: account.InterestedPartyId,\n // eslint-disable-next-line id-length\n fundAllocations: account.FundAllocations.sort((a, b) => b.Value - a.Value)\n .map(allocation => ({\n ...allocation,\n id: allocation.Fund.FundId,\n fundName: allocation.Fund.Name,\n ticker: allocation.Fund.StockSymbol,\n Price: currencyFormatter(allocation.Price, 4),\n priceNum: allocation.Price,\n Units: fundUnitsFormatter.format(allocation.Units),\n unitsNum: allocation.Units,\n Value: currencyFormatter(allocation.Value),\n })),\n moneyAllocations,\n netPrincipal: currencyFormatter(account.NetContributions),\n option: {\n id: account.Option.OptionId,\n name: account.Option.Name,\n isCustom: account.Option.IsCustom,\n },\n optionChangesRemaining: account.RemainingOptionChanges,\n ownerEntity: account.OwnerEntity,\n permissions: account.Permissions,\n primarySuccessor: account.PrimarySuccessor && {\n accountId: account.AccountId,\n birthDate: account.PrimarySuccessor.BirthDate ? dayjs(account.PrimarySuccessor.BirthDate) : null,\n firstName: account.PrimarySuccessor.FirstName,\n middleName: account.PrimarySuccessor.MiddleName,\n lastName: account.PrimarySuccessor.LastName,\n successorId: account.PrimarySuccessor.SuccessorId,\n successorType: 'primary',\n },\n priorContributions: currencyFormatter(account.PreviousYearContributions),\n programName: account.ProgramName,\n secondarySuccessor: account.SecondarySuccessor && {\n accountId: account.AccountId,\n birthDate: account.SecondarySuccessor.BirthDate ? dayjs(account.SecondarySuccessor.BirthDate) : null,\n firstName: account.SecondarySuccessor.FirstName,\n middleName: account.SecondarySuccessor.MiddleName,\n lastName: account.SecondarySuccessor.LastName,\n successorId: account.SecondarySuccessor.SuccessorId,\n successorType: 'secondary',\n },\n statementDeliveryMethod: account.StatementDeliveryMethod,\n status: account.Status,\n taxableEntityProgramAccountId: account.TaxableEntityProgramAccountId,\n totalValue: currencyFormatter(account.MarketValue),\n totalValueNum: account.MarketValue,\n netAvailable: currencyFormatter(account.NetAvailable),\n netAvailableNum: account.NetAvailable,\n transactions: account.Transactions.map(trans => ({\n id: trans.TransactionId,\n date: trans.PostDate,\n type: trans.Type,\n basis: trans.BasisAmount,\n amount: trans.Amount,\n taxYear: trans.TaxYear,\n milestone: trans.Milestone,\n })),\n unrealizedDeferredEarnings: account.UnrealizedDeferredEarnings,\n ytdContributions: currencyFormatter(account.YearToDateContributions),\n ytdPRR: account.YearToDatePRR,\n };\n\n grandTotalAllAccounts += account.MarketValue;\n\n return newAccount;\n });\n\n newState.accountList = accountList;\n newState.uiPermissions = uiPermissions;\n\n // add UI permission when no accounts\n newState.uiPermissions.noBeneAccounts = accountList.length === 0;\n\n newState.grandTotalAllAccounts = currencyFormatter(grandTotalAllAccounts);\n newState.isAccountListLoaded = true;\n\n return newState;\n }\n\n case GET_ACCOUNTS_SUMMARY: {\n // TODO: this might make sense to merge with the above get accounts but might break some stuff\n newState.groupedAccountsSummary = state.accountList.reduce((groupedAccounts, account) => { // Groups accounts by account group ID\n const id = `${account.beneficiary.name}_${account.accountType}_${account.accountGroupId}`;\n groupedAccounts[id] = groupedAccounts[id] || [];\n groupedAccounts[id].push({\n accountCloseDate: account.accountCloseDate,\n accountGroupId: account.accountGroupId,\n accountId: account.accountId,\n accountIsClosed: account.accountIsClosed,\n accountNumber: account.accountNumber,\n agreementDate: account.agreementDate,\n accountType: account.accountType,\n accountTypeEnum: account.accountTypeEnum,\n beneficiaryId: account.beneficiary.beneficiaryId,\n beneficiaryName: account.beneficiary.name,\n beneficiaryAge: account.beneficiary.age,\n interestedPartyId: account.interestedPartyId,\n optionName: account.option.name,\n ownerEntity: account.ownerEntity,\n permissions: account.permissions,\n totalValue: account.totalValueNum,\n totalValueFormatted: account.totalValue,\n ytdPRR: account.ytdPRR,\n });\n\n return groupedAccounts;\n }, {});\n\n const accountGroups = Object.keys(newState.groupedAccountsSummary);\n accountGroups.forEach(group => {\n newState.groupedAccountsSummary[group].sort((account1, account2) => {\n // Sort by Open accounts first, then show Closed accounts\n return account1.accountIsClosed < account2.accountIsClosed ? -1\n : account1.accountIsClosed > account2.accountIsClosed ? 1\n : 0;\n });\n });\n\n return newState;\n }\n\n case GET_SUCCESSORS: {\n const successorList = [];\n\n state.accountList.forEach(account => {\n if (account.primarySuccessor && !successorList.find(successor => successor.successorId === account.primarySuccessor.successorId)) {\n successorList.push(account.primarySuccessor);\n }\n if (account.secondarySuccessor && !successorList.find(successor => successor.successorId === account.secondarySuccessor.successorId)) {\n successorList.push(account.secondarySuccessor);\n }\n });\n\n newState.successors = successorList;\n\n return newState;\n }\n\n case GET_UPCOMING_TRANSACTIONS: {\n newState.upcomingTransactions = action.payload.data;\n\n return newState;\n }\n\n case GET_ALL_UPCOMING_TRANSACTIONS: {\n newState.upcomingTransactionsAll = action.payload.data;\n\n return newState;\n }\n\n case GET_ALL_TRANSACTIONS: {\n const transactionsAll = action.payload.data;\n\n newState.transactionsAll = transactionsAll.map(trans => ({\n id: trans.TransactionId,\n accountId: trans.AccountId,\n accountNumber: trans.AccountNumber,\n beneficiaryName: trans.BeneficiaryName,\n option: trans.Option,\n date: trans.PostDate ? trans.PostDate : '',\n type: trans.Type,\n basis: trans.BasisAmount,\n amount: trans.Amount,\n taxYear: trans.TaxYear ? trans.TaxYear.toString() : '',\n milestone: trans.Milestone,\n }));\n\n return newState;\n }\n\n case GET_TRANSACTION_DETAILS: {\n const Transaction = action.payload.data;\n const transaction = {\n accountId: Transaction.AccountId,\n accessCardNumber: Transaction.AccessCard ? Transaction.AccessCard.CardNumber : '',\n accountNumber: Transaction.AccountNumber,\n beneficiaryName: Transaction.BeneficiaryName,\n option: Transaction.Option,\n id: Transaction.TransactionId,\n date: Transaction.PostDate,\n type: Transaction.Type,\n source: Transaction.AccessCard ? Transaction.AccessCard.Title : Transaction.Source, // when access card object exists, use its title rather than the source name\n payeeName: Transaction.PayeeName,\n total: Transaction.Amount,\n basis: Transaction.BasisAmount,\n bankName: Transaction.BankAccount ? Transaction.BankAccount.BankName : '',\n bankAccountNumber: Transaction.BankAccount ? Transaction.BankAccount.MaskedBankAccountNumber : '',\n bankAccountType: Transaction.BankAccount ? Transaction.BankAccount.BankAccountType : '',\n ElectronicSchoolPaymentPaymentId: Transaction.ElectronicSchoolPaymentPaymentId,\n transactionDetails: Transaction.TransactionDetails\n .map(detail => ({\n id: detail.TransactionDetailId,\n fundName: detail.Fund.Name,\n units: fundUnitsFormatter.format(detail.Units),\n price: currencyFormatter(detail.Price, 4),\n priceNum: detail.Price,\n amount: detail.Amount,\n })),\n };\n newState.transaction = transaction;\n // remember already loaded transaction\n newState.loadedTransactions.push(transaction);\n\n return newState;\n }\n\n case CHANGE_BENE_ADDRESS: {\n const updatedAccounts = newState.accountList.filter(account => account.beneficiary.beneficiaryId === action.meta.beneficiaryId); // sometimes there are multiple accounts for single beneficiary, and addresses should be same for all beneficiary's accounts\n const updatedAddress = pick(action.payload.data, Object.keys(BLANK_ADDRESS));\n\n updatedAccounts.map(account => {\n const idx = newState.accountList.findIndex(acc => acc.accountId === account.accountId);\n return (\n newState.accountList[idx] = {\n ...newState.accountList[idx],\n beneficiary: {\n ...newState.accountList[idx].beneficiary,\n addresses: {\n ...newState.accountList[idx].beneficiary.addresses,\n [action.payload.data.Type]: updatedAddress\n }\n }\n }\n );\n });\n return newState;\n }\n\n case DELETE_BENE_ADDRESS: {\n const { addressType, beneficiaryId } = action.meta;\n const updatedAccount = newState.accountList.indexOf(newState.accountList.find(account => account.beneficiary.beneficiaryId === beneficiaryId));\n\n newState.accountList[updatedAccount] = {\n ...newState.accountList[updatedAccount],\n beneficiary: {\n ...newState.accountList[updatedAccount].beneficiary,\n addresses: {\n ...newState.accountList[updatedAccount].beneficiary.addresses,\n [addressType]: BLANK_ADDRESS\n }\n }\n };\n\n return newState;\n }\n\n case ACCOUNT_INVESTMENT_PATH_GET: {\n newState.investmentPath = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case GET_PRR_DATES: {\n newState.pRRDates = {\n minDate: action.payload.data.StartDate,\n maxDate: action.payload.data.EndDate,\n };\n return newState;\n }\n\n case GET_BALANCE_HISTORY: {\n const balanceHistory = action.payload.data;\n // only persistently store balance history if account list is equal to or less than 10 accounts. this is needed to limit stored data\n newState.balanceHistory = balanceHistory.length > 0 && balanceHistory.length <= 10 ? balanceHistory : [];\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport function createUiPermissions(account, permissions) {\n const { canAddInterestedParties, canManageBankAccounts, giftingEnabled, hasCsaFamilyAccount } = permissions;\n\n if (!canManageBankAccounts) {\n permissions.canManageBankAccounts = account.Permissions.WithdrawACH;\n }\n\n if (!giftingEnabled && account.Permissions.GiftingEnabled) {\n permissions.giftingEnabled = true;\n }\n\n if (!canAddInterestedParties) {\n permissions.canAddInterestedParties = account.Status === 'Open';\n }\n\n if (!hasCsaFamilyAccount) {\n permissions.hasCsaFamilyAccount = account.TaxableEntityProgramAccountId !== 0 && account.TypeEnum === 'I';\n }\n\n return permissions;\n}\n\nexport default AccountsReducer;","export const GIFTING_LIST_GET = 'src/components/Features/protected/Gifting/GIFTING_LIST_GET';\nexport const GIFTING_CHANGE_STATUS = 'src/components/Features/protected/Gifting/GIFTING_CHANGE_STATUS';\nexport const GIFTING_CHANGE_NAME_VISIBILITY = 'src/components/Features/protected/Gifting/GIFTING_CHANGE_NAME_VISIBILITY';\nexport const GET_GIFT_IMAGE = 'src/components/Features/protected/Gifting/GET_GIFT_IMAGE';\nexport const UPDATE_GIFT = 'src/components/Features/protected/Gifting/UPDATE_GIFT';\n","import { cloneDeep } from 'lodash';\n\nimport {\n GIFTING_LIST_GET,\n GIFTING_CHANGE_STATUS,\n UPDATE_GIFT,\n GIFTING_CHANGE_NAME_VISIBILITY,\n} from './constants';\n\nconst initialState = {\n beneficiaryList: [],\n};\n\nconst mapGiftingList = (beneList) => {\n if (beneList && beneList.length > 0) {\n return beneList.map(bene => {\n bene.IsActive = Boolean(bene.IsActive);\n return bene;\n });\n }\n return [];\n};\n\nfunction GiftingReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n case GIFTING_LIST_GET: {\n if (action.payload.data && action.payload.data.length > 0) {\n newState.beneficiaryList = mapGiftingList(action.payload.data);\n }\n return newState;\n }\n \n case GIFTING_CHANGE_NAME_VISIBILITY: {\n const { AccountId, HideLastName } = action.payload.data;\n const beneficiaryListIndex = newState.beneficiaryList.findIndex(bene => bene.AccountId === AccountId);\n newState.beneficiaryList[beneficiaryListIndex].HideLastName = HideLastName;\n return newState;\n }\n\n case GIFTING_CHANGE_STATUS: {\n const { AccountId, IsActive } = action.payload.data;\n const beneficiaryListIndex = newState.beneficiaryList.findIndex(bene => bene.AccountId === AccountId);\n newState.beneficiaryList[beneficiaryListIndex].IsActive = IsActive;\n return newState;\n }\n\n case UPDATE_GIFT: {\n const { HasImage, GiftMessage, AccountId, GiftCode, GiftCodeId, IsActive, HideLastName } = action.payload.data;\n const beneficiaryListIndex = newState.beneficiaryList.findIndex(bene => bene.AccountId === AccountId);\n newState.beneficiaryList[beneficiaryListIndex].HasImage = HasImage;\n newState.beneficiaryList[beneficiaryListIndex].GiftMessage = GiftMessage;\n newState.beneficiaryList[beneficiaryListIndex].GiftCode = GiftCode;\n newState.beneficiaryList[beneficiaryListIndex].GiftCodeId = GiftCodeId;\n newState.beneficiaryList[beneficiaryListIndex].IsActive = IsActive;\n newState.beneficiaryList[beneficiaryListIndex].HideLastName = HideLastName;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default GiftingReducer;","/*\n*\n* Transactions Constants\n*\n*/\nexport const ACCOUNT_TRANSACTION_PREVIEW = 'app/Features/protected/Accounts/Transactions/ACCOUNT_TRANSACTION_PREVIEW';\nexport const CLOSE_TRANSACTION_LOADER = 'app/Features/protected/Accounts/Transactions/CLOSE_TRANSACTION_LOADER';\nexport const OPEN_TRANSACTION_LOADER = 'app/Features/protected/Accounts/Transactions/OPEN_TRANSACTION_LOADER';\nexport const SET_PREFLIGHT_PARAMS = 'app/Features/protected/Accounts/Transactions/SET_PREFLIGHT_PARAMS';\nexport const GET_GROUP_ACCOUNTS = 'src/components/Features/protected/Accounts/GET_GROUP_ACCOUNTS';\nexport const GET_TRANSFER_ACCOUNTS = 'app/Features/protected/Accounts/Transactions/GET_TRANSFER_ACCOUNTS';\nexport const GET_SCHEDULED_TRANSACTION = 'app/Features/protected/Accounts/Transactions/GET_SCHEDULED_TRANSACTION';\nexport const TRANSACTION_DELETE = 'src/components/Features/protected/Accounts/TRANSACTION_DELETE';\nexport const TRANSFER_CREATE = 'app/Features/protected/Accounts/Transactions/TRANSFER_CREATE';\nexport const TRANSFER_UPDATE = 'app/Features/protected/Accounts/Transactions/TRANSFER_UPDATE';\nexport const GET_PRE_TRANSACTION_DETAILS = 'app/Features/protected/Accounts/Transactions/GET_OPTION_CHANGE_DETAILS';\nexport const GET_CONTRIBUTION_DETAILS = 'src/components/Features/protected/Contributions/GET_CONTRIBUTION_DETAILS';\nexport const CONTRIBUTION_CREATE = 'src/components/Features/protected/Contributions/CONTRIBUTION_CREATE';\nexport const CONTRIBUTION_EDIT = 'src/components/Features/protected/Contributions/CONTRIBUTION_EDIT';\nexport const CONTRIBUTION_GET = 'src/components/Features/protected/Contributions/CONTRIBUTION_GET';\nexport const SCHEDULE_RUN_DATES_GET = 'pp/Features/protected/Accounts/Transactions/SCHEDULE_RUN_DATES_GET';\nexport const NEXT_RUN_DATE_GET = 'src/components/Features/protected/Contributions/NEXT_RUN_DATE_GET';\nexport const WITHDRAWAL_CREATE = 'app/Features/protected/Accounts/Transactions/WITHDRAWAL_CREATE';\nexport const WITHDRAWAL_UPDATE = 'app/Features/protected/Accounts/Transactions/WITHDRAWAL_UPDATE';\nexport const SCHOOLS_GET = 'app/Features/protected/Accounts/Transactions/SCHOOLS_GET';\nexport const SET_WITHDRAWAL_SUBMITTED = 'app/Features/protected/Accounts/Transactions/SET_WITHDRAWAL_SUBMITTED';\nexport const BIRTHDATE_VERIFY = 'app/Features/protected/Accounts/Transactions/BIRTHDATE_VERIFY';\nexport const REQUEST_WITHDRAWAL = 'app/Features/protected/Accounts/Transactions/REQUEST_WITHDRAWAL';\nexport const GET_ELECTRONICPAYMENT_SCHOOL = 'app/Features/protected/Accounts/Transactions/GET_ELECTRONICPAYMENT_SCHOOL';","export const ANNUAL_EVENT = {\n display: 'Annual Event',\n id: 'Other'\n};\nexport const BIRTHDAY = {\n display: 'Birthday',\n id: 'Birthday'\n};\nexport const DISABLED_DATES = [29, 30, 31];\nexport const MONTHLY = 'Monthly';\nexport const ONE_TIME = 'One-Time';\nexport const TWICE_MONTHLY = 'Twice Monthly';\nexport const YEARLY = 'Yearly';\nexport const SPECIAL = 'Special';\nexport const NON_SPECIAL = 'Non-Special';","/*\n*\n* Transactions Reducers\n*\n*/\nimport {\n cloneDeep,\n get,\n} from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n GET_GROUP_ACCOUNTS,\n ACCOUNT_TRANSACTION_PREVIEW,\n CLOSE_TRANSACTION_LOADER,\n OPEN_TRANSACTION_LOADER,\n GET_PRE_TRANSACTION_DETAILS,\n SET_PREFLIGHT_PARAMS,\n GET_TRANSFER_ACCOUNTS,\n GET_SCHEDULED_TRANSACTION,\n GET_CONTRIBUTION_DETAILS,\n NEXT_RUN_DATE_GET,\n SET_WITHDRAWAL_SUBMITTED,\n} from './constants';\nimport {\n MONTHLY,\n TWICE_MONTHLY,\n} from './Contributions/constants';\nimport {\n currencyFormatter,\n properCase,\n} from '@frontend/common';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nconst initialState = {\n groupAccountList: [],\n previewDetails: {\n canContinue: false,\n errors: []\n },\n preflightAccount: {\n accountId: 0,\n AccountGroupId: 0,\n },\n preflightLoaderOpen: false,\n preflightTransactionType: '',\n destinationAccounts: [],\n contributionDetails: {\n contribution: {},\n },\n nextRunDates: {\n monthly: {\n day1: '',\n day2: '',\n },\n yearly: {\n birthday: [],\n day1: '',\n },\n },\n selectedTransaction: {},\n preTransactionDetails: {\n AccountId: 0,\n AccountNumber: 0,\n AccountType: '',\n AgentId: 123,\n agentName: '',\n BeneficiaryId: 0,\n beneficiaryName: '',\n OptionName: '',\n OptionId: 0,\n groupAccounts: [\n {\n availableBalance: '$0',\n AccountId: 0,\n marketValue: '$0',\n availableForWithdrawalNum: 0,\n availableForWithdrawal: '$0',\n AllowFullWithdrawal: false,\n }\n ],\n OptionChangeCreate: false,\n RemainingOptionChanges: 0,\n totalMarketValue: '',\n totalMarketValueNum: 0,\n totalAvailableBalance: '',\n totalAvailableBalanceNumber: 0,\n totalAvailableForWithdrawalNum: 0,\n totalAvailableForWithdrawal: '$0',\n AllowFullWithdrawal: false,\n AllowPartialWithdrawal: false,\n agentAddress: {},\n agentAddressChanged: false,\n beneficiaryAddress: {},\n beneficiaryAddressChanged: false,\n schoolAddresses: [],\n },\n scheduleRunDates: [],\n withdrawalSubmitted: false,\n};\n\nfunction TransactionsReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case GET_GROUP_ACCOUNTS: {\n newState.groupAccountList = action.payload.data;\n return newState;\n }\n\n case ACCOUNT_TRANSACTION_PREVIEW: {\n const response = action.payload.data;\n newState.previewDetails = {\n canContinue: response[action.meta.transactionType],\n errors: response.Comments,\n };\n return newState;\n }\n\n case OPEN_TRANSACTION_LOADER: {\n newState.preflightLoaderOpen = true;\n return newState;\n }\n\n case CLOSE_TRANSACTION_LOADER: {\n newState.preflightLoaderOpen = false;\n return newState;\n }\n\n case SET_PREFLIGHT_PARAMS: {\n // modify account fields per preflight needs\n newState.preflightAccount = {\n accountId: action.account.accountId,\n AccountGroupId: action.account.accountGroupId,\n };\n newState.preflightTransactionType = action.transactionType;\n return newState;\n }\n\n case GET_TRANSFER_ACCOUNTS: {\n newState.destinationAccounts = action.payload.data.map(account => ({\n accountId: account.AccountId,\n accountGroupId: account.AccountGroupId,\n accountNumber: account.AccountNumber,\n accountType: account.Type,\n option: account.Option,\n agent: {\n name: account.Agent.Name,\n },\n beneficiary: {\n name: account.Beneficiary.Name,\n },\n totalValue: currencyFormatter(account.MarketValue)\n }));\n return newState;\n }\n\n case GET_SCHEDULED_TRANSACTION: {\n let selectedTransaction = action.payload.data;\n switch (action.meta.type) {\n case 'Transfer In':\n case 'Transfer Out':\n selectedTransaction.Percentage = get(selectedTransaction, 'Percentage', 0);\n break;\n case 'Option Change': {\n selectedTransaction = {\n AccountId: selectedTransaction.Actions[0].AccountId,\n AccountGroupId: selectedTransaction.AccountGroupId,\n customAllocation: selectedTransaction.Actions[0].Schema ? convert2DCalculatorSchemaTo3D(selectedTransaction.Actions[0].Schema) : null,\n scheduledOptionName: selectedTransaction.Actions[0].NewOption,\n sheduledOptionId: selectedTransaction.Actions[0].NewOptionId,\n };\n break;\n }\n case 'Withdrawal': {\n selectedTransaction = {\n ...action.payload.data,\n AccountId: action.meta.AccountId,\n };\n break;\n }\n case 'Contribution':\n default:\n break;\n }\n newState.selectedTransaction = selectedTransaction;\n return newState;\n }\n\n case GET_PRE_TRANSACTION_DETAILS: {\n const groupAccount = action.payload.data;\n const currentAccountId = parseInt(action.meta.accountId);\n const currentAccount = groupAccount.AccountInfo.find(account => account.AccountId === currentAccountId);\n const totalAvailableForWithdrawalNum = parseFloat(groupAccount.AccountInfo.reduce((sum, account) => sum + account.AvailableForWithdrawal, 0).toFixed(2));\n\n newState.preTransactionDetails = {\n // selected account found from group account info\n AccountId: currentAccount.AccountId,\n AccountNumber: currentAccount.AccountNumber,\n OptionName: currentAccount.OptionName,\n OptionId: currentAccount.OptionId,\n\n // group account\n AgentId: groupAccount.AgentId,\n AccountType: groupAccount.AccountType,\n agentName: properCase(groupAccount.Agent.Name),\n beneficiaryName: properCase(groupAccount.Beneficiary.Name),\n BeneficiaryId: groupAccount.Beneficiary.BeneficiaryId,\n totalMarketValue: currencyFormatter(groupAccount.MarketValue),\n totalMarketValueNum: groupAccount.MarketValue,\n totalAvailableBalance: currencyFormatter(groupAccount.NetAvailable),\n totalAvailableBalanceNumber: groupAccount.NetAvailable,\n OptionChangeCreate: groupAccount.OptionChangeCreate,\n RemainingOptionChanges: groupAccount.RemainingOptionChanges,\n AllowFullWithdrawal: groupAccount.AllowFullWithdrawal,\n AllowPartialWithdrawal: groupAccount.AllowPartialWithdrawal,\n totalAvailableForWithdrawalNum,\n totalAvailableForWithdrawal: currencyFormatter(totalAvailableForWithdrawalNum),\n agentAddressChanged: groupAccount.AgentAddressChanged,\n agentAddress: {\n line1: properCase(groupAccount.Agent.Recipient.Line1),\n line2: properCase(groupAccount.Agent.Recipient.Line2, ['C/O', 'FBO', 'UGMA/UTMA']),\n name: properCase(`${groupAccount.Agent.Name}`),\n street1: properCase(groupAccount.Agent.MailingAddress.StreetAddress1, ['PO']),\n street2: properCase(groupAccount.Agent.MailingAddress.StreetAddress2, ['PO']),\n city: properCase(groupAccount.Agent.MailingAddress.City),\n state: { Code: groupAccount.Agent.MailingAddress.State },\n postalCode: groupAccount.Agent.MailingAddress.PostalCode,\n },\n beneficiaryAddressChanged: groupAccount.BeneficiaryAddressChanged,\n beneficiaryAddress: {\n name: properCase(`${groupAccount.Beneficiary.Name}`),\n street1: properCase(groupAccount.Beneficiary.MailingAddress.StreetAddress1, ['PO']),\n street2: properCase(groupAccount.Beneficiary.MailingAddress.StreetAddress2, ['PO']),\n city: properCase(groupAccount.Beneficiary.MailingAddress.City),\n state: { Code: groupAccount.Beneficiary.MailingAddress.State },\n postalCode: groupAccount.Beneficiary.MailingAddress.PostalCode,\n },\n groupAccounts: groupAccount.AccountInfo.map(account => ({\n AccountId: account.AccountId,\n AccountNumber: account.AccountNumber,\n OptionName: account.OptionName,\n marketValue: currencyFormatter(account.MarketValue),\n marketValueNumber: account.MarketValue,\n availableBalance: currencyFormatter(account.NetAvailable),\n availableBalanceNumber: account.NetAvailable,\n percentageOfTotalValue: account.AvailableForWithdrawal / totalAvailableForWithdrawalNum || 0,\n availableForWithdrawalNum: account.AvailableForWithdrawal,\n availableForWithdrawal: currencyFormatter(account.AvailableForWithdrawal),\n AllowFullWithdrawal: account.AllowFullWithdrawal,\n AllowPartialWithdrawal: account.AllowPartialWithdrawal,\n })),\n schoolAddresses: groupAccount.SchoolAddresses.map(address => ({\n attn: properCase(address.Department),\n name: properCase(address.SchoolName),\n street1: properCase(address.Address.StreetAddress1),\n city: properCase(address.Address.City),\n state: { Code: address.Address.State },\n postalCode: address.Address.PostalCode,\n schoolId: address.SchoolId.toString(),\n fbo: `${properCase(`${groupAccount.Beneficiary.Name}`)}`,\n studentIdNum: address.StudentId,\n })),\n };\n\n return newState;\n }\n\n case GET_CONTRIBUTION_DETAILS: {\n const canContributeAccountList = action.accountList.filter(account => account.permissions.Contribute);\n const maxBalance = action.MaximumBeneficiaryDeposit;\n const isEditing = action.isEditing;\n const editDetails = action.accountId === newState.selectedTransaction.AccountId ? newState.selectedTransaction : false;\n const selectedAccount = Object.keys(editDetails).length > 0 && (canContributeAccountList.find(account => account.accountId === editDetails.AccountId));\n\n newState.contributionDetails = {\n selectedAccountId: action.accountId,\n canContributeAccountList: canContributeAccountList.map(account => {\n // check if accountGroup is over the max balance amount. If so, it will be marked and disabled in contribution account selection dropdown\n const overMaxBalance = newState.groupAccountList.some(groupAccount => account.accountGroupId === groupAccount.AccountGroupId && groupAccount.MarketValue >= maxBalance);\n return {\n ...account,\n AccountId: account.accountId,\n contributionAmount: 0,\n endDate: '',\n overMaxBalance,\n };\n }),\n contribution: isEditing\n ? ({\n bankAccount: action.agentBankAccounts.find(bankAccount => bankAccount.BankAccountId === editDetails.BankAccountId),\n day1: editDetails.ScheduleDate1.ScheduledDate,\n day2: editDetails.ScheduleDate2 ? editDetails.ScheduleDate2.ScheduledDate : '',\n endDate: editDetails.EndDate,\n occasion: editDetails.Occasion,\n selectedAccounts: [{\n accountId: editDetails.AccountId,\n accountNumber: selectedAccount.accountNumber,\n beneficiary: {\n birthday: selectedAccount.beneficiary.birthday,\n name: selectedAccount.beneficiary.name,\n },\n contributionAmount: editDetails.Amount,\n endDate: editDetails.EndDate || '',\n }],\n transactionId: editDetails.ScheduleId,\n type: editDetails.InvestmentType === MONTHLY && editDetails.ScheduleDate2 !== null ? TWICE_MONTHLY : editDetails.InvestmentType,\n })\n : {},\n };\n\n return newState;\n }\n\n case NEXT_RUN_DATE_GET: {\n const response = action.payload.data;\n const frequency = action.meta.frequency.toLowerCase();\n const day = action.meta.day.toLowerCase();\n\n if (frequency === MONTHLY.toLowerCase()) {\n newState.nextRunDates.monthly[day] = dayjs(response);\n }\n else {\n if (Array.isArray(response)) {\n newState.nextRunDates.yearly[day] = response.map(date => dayjs(date));\n }\n else {\n newState.nextRunDates.yearly[day] = dayjs(response);\n }\n }\n return newState;\n }\n\n case SET_WITHDRAWAL_SUBMITTED: {\n newState.withdrawalSubmitted = action.payload;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default TransactionsReducer;","/*\n*\n* Payments Constants\n*\n*/\nexport const CHECK_ROUTING_NUMBER = 'src/components/Features/protected/ManageBankAccounts/CHECK_ROUTING_NUMBER';\nexport const GET_BANK_ACCOUNTS = 'src/components/Features/protected/ManageBankAccounts/GET_BANK_ACCOUNTS';\nexport const GET_AGENT_BANK_ACCOUNTS = 'src/components/Features/protected/ManageBankAccounts/GET_AGENT_BANK_ACCOUNTS';\nexport const GET_GROUPED_BANK_ACCOUNTS = 'src/components/Features/protected/ManageBankAccounts/GET_GROUPED_BANK_ACCOUNTS';\nexport const GET_ALLOWED_BANK_HOLDERS = 'src/components/Features/protected/ManageBankAccounts/GET_ALLOWED_BANK_HOLDERS';\nexport const DELETE_BANK_ACCOUNT = 'src/components/Features/protected/ManageBankAccounts/DELETE_BANK_ACCOUNT';\nexport const RENEW_BANK_ACCOUNT = 'src/components/Features/protected/ManageBankAccounts/RENEW_BANK_ACCOUNT';\nexport const CREATE_AGENT_BANK_ACCOUNT = 'src/components/Features/protected/ManageBankAccounts/CREATE_AGENT_BANK_ACCOUNT';\nexport const CREATE_BENEFICIARY_BANK_ACCOUNT = 'src/components/Features/protected/ManageBankAccounts/CREATE_BENEFICIARY_BANK_ACCOUNT';\nexport const POA_APPROVAL = 'src/components/Features/protected/ManageBankAccounts/POA_APPROVAL';\nexport const START_MIRCO_DEPOSITS = 'src/components/Features/protected/ManageBankAccounts/START_MIRCO_DEPOSITS';\nexport const CONFIRM_MIRCO_DEPOSITS = 'src/components/Features/protected/ManageBankAccounts/CONFIRM_MIRCO_DEPOSITS';\nexport const SAVE_POA_BANK_SELECTION = 'src/components/Features/protected/ManageBankAccounts/SAVE_POA_BANK_SELECTION';\nexport const GET_ACCESS_CARDS = 'src/components/Features/protected/ManageBankAccounts/GET_ACCESS_CARDS';\nexport const UPDATE_NICKNAME = 'src/components/Features/protected/ManageBankAccounts/UPDATE_NICKNAME';\nexport const GET_ACCESS_CARD_URL = 'src/components/Features/protected/ManageBankAccounts/GET_ACCESS_CARD_URL';\n","/*\n*\n* Payments Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport { properCase } from '@frontend/common';\nimport {\n CHECK_ROUTING_NUMBER,\n GET_BANK_ACCOUNTS,\n GET_AGENT_BANK_ACCOUNTS,\n GET_GROUPED_BANK_ACCOUNTS,\n GET_ALLOWED_BANK_HOLDERS,\n GET_ACCESS_CARDS,\n UPDATE_NICKNAME,\n} from './constants';\n\nconst initialState = {\n routingNumberBank: '',\n bankAccounts: [],\n agentBankAccounts: [],\n groupedBankAccounts: {},\n allowedBankHolders: [],\n accessCards: [],\n};\n\nfunction PaymentsReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case CHECK_ROUTING_NUMBER: {\n newState.routingNumberBank = action.payload.data.BankName;\n return newState;\n }\n\n case GET_BANK_ACCOUNTS: {\n newState.bankAccounts = action.payload.data.map(bankAccount => ({\n ...bankAccount,\n BankName: bankAccount.BankName.toUpperCase(),\n }));\n return newState;\n }\n\n case GET_AGENT_BANK_ACCOUNTS: {\n newState.agentBankAccounts = action.payload.data.map(bankAccount => ({\n $id: bankAccount.$id,\n BankAccountId: bankAccount.BankAccountId,\n BankName: bankAccount.BankName.toUpperCase(),\n MaskedBankAccountNumber: bankAccount.MaskedBankAccountNumber,\n RoutingNumber: bankAccount.RoutingNumber,\n BankAccountType: bankAccount.BankAccountType,\n AllowWithdrawals: bankAccount.AllowWithdrawals,\n IsPendingWithdrawalVerification: bankAccount.IsPendingWithdrawalVerification,\n VerificationAttemptsRemaining: bankAccount.VerificationAttemptsRemaining,\n HasExceededFullVerificationAttempts: bankAccount.HasExceededFullVerificationAttempts,\n BeneficiaryId: bankAccount.BeneficiaryId,\n BeneficiaryName: bankAccount.BeneficiaryName,\n IsEligibleForPoa: bankAccount.IsEligibleForPoa,\n IsPoaApproved: bankAccount.IsPoaApproved,\n ExpirationDate: bankAccount.ExpirationDate,\n ExpirationWarningDate: bankAccount.ExpirationWarningDate,\n HasPendingACHTransactions: bankAccount.HasPendingACHTransactions,\n GiactResult: bankAccount.GiactResult,\n Nickname: bankAccount.Nickname,\n }));\n return newState;\n }\n\n case GET_GROUPED_BANK_ACCOUNTS: {\n // group bank accounts by owner and beneficiaries\n const groupedBankAccounts = state.bankAccounts.reduce((groupedBankAccounts, bankAccount) => {\n const nameId = bankAccount.BeneficiaryName ? `${properCase(bankAccount.BeneficiaryName)}'s Bank Accounts - Withdrawals Only` : 'My Bank Accounts';\n groupedBankAccounts[nameId] = groupedBankAccounts[nameId] || [];\n groupedBankAccounts[nameId].push(bankAccount);\n\n return groupedBankAccounts;\n }, {});\n\n newState.groupedBankAccounts = groupedBankAccounts;\n return newState;\n }\n\n case GET_ALLOWED_BANK_HOLDERS: {\n const allowedBankHolders = [\n {\n id: action.userDetails.agentId,\n name: action.userDetails.name.toUpperCase(),\n isBeneficiary: false,\n },\n ];\n\n action.accountList.forEach(account => {\n const canWithdrawACH = account.permissions.WithdrawACH;\n const allowedBankHolder = {\n id: account.beneficiary.beneficiaryId,\n name: account.beneficiary.fullName.toUpperCase(),\n isBeneficiary: true,\n };\n const beneIsNotAgent = action.userDetails.agentId !== account.beneficiary.beneficiaryId;\n if (canWithdrawACH && beneIsNotAgent && !allowedBankHolders.some(bankHolder => bankHolder.id === allowedBankHolder.id)) {\n allowedBankHolders.push(allowedBankHolder);\n }\n });\n\n newState.allowedBankHolders = allowedBankHolders;\n return newState;\n }\n\n case GET_ACCESS_CARDS: {\n newState.accessCards = action.payload.data;\n return newState;\n }\n\n case UPDATE_NICKNAME: {\n Object.keys(newState.groupedBankAccounts).forEach(accountOwner => {\n const bankAccountGroup = newState.groupedBankAccounts[accountOwner];\n bankAccountGroup.forEach(account => {\n if (account.BankAccountId === action.meta.BankAccountId) {\n account.Nickname = action.meta.nickName;\n }\n });\n });\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default PaymentsReducer;","/*\n*\n* Required Access\n* Use this file to store access rights for all protected routes.\n* Simple Signup user should not have access to any route other than /signup (and be able to log out)\n*\n*/\n\nexport const ACCESS_ROLE = {\n IS_AGENT: 'IS_AGENT', // Agent but can also have Interested Party accounts\n IS_IP_ONLY: 'IS_IP_ONLY', // Interested Party only\n IS_NEW_USER: 'IS_NEW_USER', // Is a new user with no accounts\n};\n\nexport const ROUTE_ACCESS = {\n AccountBlocks: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ACCESS_ROLE.IS_NEW_USER\n ],\n AccountDetails: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n Accounts: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n TransactionsHub: [\n ACCESS_ROLE.IS_AGENT,\n ],\n AddBirthdate: [\n ACCESS_ROLE.IS_AGENT, // only agents should be affected by this\n ],\n Payments: [\n ACCESS_ROLE.IS_AGENT,\n ],\n Documents: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n Gifting: [\n ACCESS_ROLE.IS_AGENT,\n ],\n Home: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n InterestedParties: [\n ACCESS_ROLE.IS_AGENT,\n ],\n Lpoa: [\n ACCESS_ROLE.IS_AGENT,\n ],\n Multifactor: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n MyInfo: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ],\n PageNotFound: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ACCESS_ROLE.IS_NEW_USER,\n ],\n PayrollContribution: [\n ACCESS_ROLE.IS_AGENT\n ],\n Signup: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ACCESS_ROLE.IS_NEW_USER,\n ],\n Transactions: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY, // allows CSA IPs to request withdrawals\n ],\n VerifyEmail: [\n ACCESS_ROLE.IS_AGENT,\n ACCESS_ROLE.IS_IP_ONLY,\n ACCESS_ROLE.IS_NEW_USER,\n ],\n};\n","import { cloneDeep } from 'lodash';\nimport { properCase } from '@frontend/common';\nimport {\n BROWSER_WARNING,\n USER_LOGIN,\n LANGUAGE_CHANGE,\n USER_REGISTRATION,\n USER_REG_INFO_SYNC,\n VERIFY_RECAPTCHA,\n REFRESH_CLAIMS,\n RESET_CLAIMS,\n TOGGLE_SIDENAV,\n TOGGLE_NOTIFICATIONS,\n SET_NOTIFICATIONS_VIEWED,\n TOGGLE_2FA_DIALOG,\n TOGGLE_AUTHYDOWN_DIALOG,\n TOGGLE_RSA_DIALOG,\n TOGGLE_SPLASH_HAS_DISPLAYED,\n TWO_FACTOR_PRECONDITION,\n RSA_PRECONDITION,\n GET_USER_PREFERENCES,\n SAVE_USER_PREFERENCES,\n GET_NOTIFICATIONS,\n CHANGE_USERNAME,\n TWO_FACTOR_ROUTE_CHANGE,\n REASONS_BLOCKED, // constants\n DISABLE_LEFT_MENU,\n TWO_FACTOR_STATUS,\n} from './constants';\n\nimport { ACCESS_ROLE } from './RequiredAccess';\n\nconst browserLanguage = (window.navigator.userLanguage || window.navigator.language).split('-')[0];\nconst initialState = {\n accountBlocked: false,\n claims: {},\n isAgent_AccessRole: false,\n isIpOnly_AccessRole: false,\n isNewUser_AccessRole: false,\n isValid: false,\n language: localStorage.getItem('my529-language') ? localStorage.getItem('my529-language') : browserLanguage,\n showBrowserWarning: true,\n showMobileWarning: true,\n splashHasDisplayed: false,\n token: '',\n userDetails: {\n email: '',\n name: '',\n previousLogin: '',\n recaptchaToken: '',\n recaptchaVerified: false,\n },\n registrationInfo: {\n EmailAddress: '',\n ExternalUserId: '',\n UserId: '',\n },\n userAccess: '',\n sidenavOpen: false,\n notificationsOpen: false,\n notifications: [],\n numberOfNotViewedNotifications: 0,\n is2FADialogOpen: false,\n isAuthyDownDialogOpen: false,\n isRSADialogOpen: false,\n is2FAPrecondition: false,\n isRSAPrecondition: false,\n is2FARegistered: false,\n is2FABypassed: true,\n isWithdrawal: false,\n userPreferences: [],\n prev2faRoute: '',\n reasonBlocked: '',\n disableLeftNavigationMenu: false,\n};\n\nexport default function NavigationReducer(state = initialState, action) {\n const newState = cloneDeep(state);\n\n switch (action.type) {\n case BROWSER_WARNING:\n newState.showBrowserWarning = !state.showBrowserWarning;\n return newState;\n\n case RESET_CLAIMS:\n case REFRESH_CLAIMS:\n case USER_LOGIN:\n case CHANGE_USERNAME: {\n const rawClaims = action.payload.data.Claims ? action.payload.data.Claims : action.payload.data;\n const claims = constructClaims(rawClaims);\n const mappedClaims = mapClaims(claims);\n if (action.payload.data.Token) {\n sessionStorage.setItem('token', action.payload.data.Token);\n }\n newState.accountBlocked = claims.AccountBlocked === 'True';\n newState.reasonBlocked = newState.accountBlocked ? claims.AccountBlock : '';\n newState.is2FADialogOpen = newState.reasonBlocked === REASONS_BLOCKED.TWO_FACTOR_AUTHENTICATION;\n newState.is2FARegistered = claims.TwoFactorRegistration === TWO_FACTOR_STATUS.COMPLETED;\n newState.is2FABypassed = claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.BYPASSED;\n newState.claims = claims;\n newState.userDetails = mappedClaims.userDetails;\n newState.isValid = true;\n newState.isAgent_AccessRole = claims.AgentId !== '';\n newState.isIpOnly_AccessRole = claims.AgentId === '' && claims.InterestedPartyId !== '';\n newState.isNewUser_AccessRole = !newState.isIpOnly_AccessRole && !newState.isAgent_AccessRole;\n newState.userAccess = userAccessDetermine(newState);\n\n return newState;\n }\n\n case LANGUAGE_CHANGE:\n localStorage.setItem('my529-language', action.meta.language);\n newState.language = localStorage.getItem('my529-language');\n return newState;\n\n case USER_REGISTRATION: {\n const data = action.payload.data;\n\n newState.registrationInfo = {\n EmailAddress: data.EmailAddress,\n ExternalUserId: data.ExternalUserId,\n UserId: data.UserId\n };\n return newState;\n }\n\n case USER_REG_INFO_SYNC: {\n newState.registrationInfo = action.meta;\n return newState;\n }\n\n case VERIFY_RECAPTCHA: {\n newState.userDetails = {\n ...state.userDetails,\n recaptchaToken: action.meta.recaptchaToken,\n recaptchaVerified: action.payload.data.success,\n };\n return newState;\n }\n\n case TOGGLE_SIDENAV: {\n newState.sidenavOpen = action.meta.isOpen;\n return newState;\n }\n\n case TOGGLE_NOTIFICATIONS: {\n newState.notificationsOpen = action.meta.isOpen;\n return newState;\n }\n\n case TOGGLE_2FA_DIALOG: {\n newState.is2FADialogOpen = !newState.is2FADialogOpen;\n return newState;\n }\n\n case TOGGLE_AUTHYDOWN_DIALOG: {\n newState.isAuthyDownDialogOpen = !newState.isAuthyDownDialogOpen;\n return newState;\n }\n\n case TOGGLE_RSA_DIALOG: {\n newState.isRSADialogOpen = !newState.isRSADialogOpen;\n return newState;\n }\n\n case TWO_FACTOR_PRECONDITION: {\n newState.isWithdrawal = action.meta.isWithdrawal;\n return newState;\n }\n\n case RSA_PRECONDITION: {\n return newState;\n }\n \n case GET_USER_PREFERENCES: {\n newState.userPreferences = action.payload.data.map(pref => ({\n ...pref,\n Value: pref.Value === 'true',\n }));\n\n return newState;\n }\n \n case SAVE_USER_PREFERENCES: {\n const userPreference = {\n ...action.payload.data,\n Value: action.payload.data.Value === 'true',\n };\n const preferenceIndex = newState.userPreferences.findIndex(preference => preference.Identifier === userPreference.Identifier);\n \n newState.userPreferences[preferenceIndex] = userPreference; // replace preference with update\n return newState;\n }\n\n case GET_NOTIFICATIONS: \n case SET_NOTIFICATIONS_VIEWED: {\n newState.notifications = action.payload.data;\n newState.numberOfNotViewedNotifications = action.payload.data.filter(notification => !notification.ViewedDate).length;\n return newState;\n }\n\n case TWO_FACTOR_ROUTE_CHANGE: {\n if (!action.meta.route.includes('/multifactor')) { // TODO will need to pull in translated routes to reducers\n newState.prev2faRoute = action.meta.route;\n }\n\n return newState;\n }\n\n case DISABLE_LEFT_MENU: {\n newState.disableLeftNavigationMenu = action.payload;\n return newState;\n }\n\n case TOGGLE_SPLASH_HAS_DISPLAYED: {\n newState.splashHasDisplayed = true;\n return newState;\n }\n \n default: \n return state;\n }\n}\n\n/****************** HELPER METHODS ******************/\nexport function mapClaims(claims) {\n return {\n userDetails: {\n agentId: claims.AgentId,\n email: claims.EmailAddress,\n name: properCase(claims.Name || ''),\n previousLogin: claims.LastLogin,\n }\n };\n}\n\nexport function constructClaims(claims) {\n return claims.reduce((result, claim) => ({ ...result, [claim.m_type]: claim.m_value }), {});\n}\n\nexport function userAccessDetermine(newState) {\n if (newState.isAgent_AccessRole) {\n return ACCESS_ROLE.IS_AGENT;\n }\n else if (newState.isIpOnly_AccessRole) {\n return ACCESS_ROLE.IS_IP_ONLY;\n }\n return ACCESS_ROLE.IS_NEW_USER;\n}\n","export const ACCOUNT_TYPE_UGMA_UTMA = 'UGMA/UTMA';\r\nexport const ACCESS_CARD_PAYMENT = 'AccessCard';\r\nexport const ACCOUNT_OWNER = 'P';\r\nexport const BENEFICIARY = 'B';\r\nexport const ACH_PAYMENT = 'Ach';\r\nexport const CHECK_PAYMENT = 'Check';\r\nexport const ELECTRONICSCHOOL_PAYMENT = 'ElectronicSchoolPayment';\r\nexport const K12_ED = 'K-12Tuition';\r\nexport const FULL_BALANCE = 'Full Balance';\r\nexport const HIGHER_ED = 'HigherEd';\r\nexport const NONQUALIFIED = 'Nonqualified';\r\nexport const ONE_TIME = 'One-Time';\r\nexport const MONTHLY = 'Monthly';\r\nexport const RECURRING = 'Recurring';\r\nexport const PARTIAL_BALANCE = 'Partial Balance';\r\nexport const SCHOOL = 'I';\r\nexport const ELECTRONIC = 'electronic';\r\nexport const MAIL = 'mail';\r\nexport const ELECTRONICSCHOOL = 'ElectronicSchool';","/* eslint-disable newline-per-chained-call */\n/*\n*\n* StaticResources Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport dayjs from 'dayjs';\nimport {\n ENVIRONMENT_VARIABLES_GET,\n PASSWORD_REQUIREMENTS_GET,\n STATIC_DOCUMENTS_GET,\n TMX_ENVIRONMENT_VARIABLES_GET,\n SERVER_DATETIME_GET,\n WEB_MESSAGES_GET,\n SET_LOADING_PUBLIC_VARS,\n BANNER_LOCATIONS,\n} from './constants';\n\nimport { default as EN } from 'utils/translations/en';\nimport { ACCESS_CARD_PAYMENT, ACH_PAYMENT } from 'components/Features/protected/Accounts/Transactions/Withdrawals/constants';\n\nconst initialState = {\n documents: {\n form102: { Location: '' },\n form104: { Location: '' },\n form500: { Location: '' },\n },\n environmentVars: {\n AccountAccessNoFrontEndActivityTimeout: 0,\n AddressTypes: [],\n FaxNumber: '',\n LogoutWarningTimeout: 0,\n MaximumAge: 0,\n MinimumAccountOwnerAge: 0,\n RelationshipTypes: {},\n SuccessorTypes: [],\n SupportPhoneNumber: '',\n SupportEmail: '',\n ServerDateTime: '',\n TwoFADeviceCookieExpirationInDays: 0,\n MaximumBenficiaryAccountValueForGift: 0,\n },\n passwordRequirements: [],\n serverDateTime: '',\n threatMetrixVars: {\n SessionId: '',\n ThreatMetrixUrl: '',\n },\n usStates: [],\n withdrawalVariables: {\n paymentTypes: [],\n recipientTypes: [],\n sellDates: [],\n startDates: [],\n withdrawalTypes: [],\n minWithdrawal: 0,\n maxWithdrawal: 0,\n tradeCutoff: {},\n tradeCutoffWarningTime: 0,\n numOfRollingDays: 0,\n },\n // needs to be initialized to empty strings\n webMessages: Object.values(BANNER_LOCATIONS).reduce((obj, bannerLocation) => ({ ...obj, [bannerLocation]: '' }), {}),\n loadingPublicVars: false,\n};\n\nfunction StaticResourcesReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n case ENVIRONMENT_VARIABLES_GET: {\n const data = action.payload.data;\n\n newState.environmentVars = data;\n newState.usStates = newState.environmentVars.USStates.map(state => ({\n Code: state.Code,\n Name: state.Name\n }));\n // add clear state item at index 0\n newState.usStates.unshift({ Code: '', Name: EN.BeneficiaryStep.lbl_clear_state });\n\n const messages = EN.Withdrawals.messages;\n const numberOfRollingMonths = data.DisbursementSignatureGuaranteeRollingDays && data.DisbursementSignatureGuaranteeRollingDays / 30;\n newState.withdrawalVariables = {\n ...newState.withdrawalVariables,\n ACHBankWithdrawalDelay: data.ACHBankWithdrawalDelay,\n ACHBankWithdrawalLanguage: data.ACHBankWithdrawalLanguage,\n ...(data.DisbursementSignatureGuaranteeRollingDays && { numOfRollingDays: data.DisbursementSignatureGuaranteeRollingDays }),\n ...(data.MinimumOnlineWithdrawalAmount && { minWithdrawal: data.MinimumOnlineWithdrawalAmount }),\n ...(data.DisbursementSignatureGuaranteeAmount && { maxWithdrawal: data.DisbursementSignatureGuaranteeAmount }),\n ...(data.DisbursementSignatureGuaranteeAmount && { maxWithdrawalRecurring: (data.DisbursementSignatureGuaranteeAmount / numberOfRollingMonths) }), // maximum divided by 3 for 90 days period\n ...(data.PaymentMethods && {\n paymentTypes:\n data.PaymentMethods.map(type => {\n // need to do a different mapping for Osprey withdrawals names\n let name;\n switch (type.Code) {\n case ACH_PAYMENT:\n name = 'Electronic Funds Transfer';\n break;\n case ACCESS_CARD_PAYMENT:\n name = 'my529 Access Card ';\n break;\n default:\n name = type.Name;\n }\n return {\n id: type.Code,\n name,\n };\n })\n }),\n ...(data.RecipientTypes && {\n recipientTypes: data.RecipientTypes\n .filter(type => type.Code === 'P' || type.Code === 'B' || type.Code === 'I')\n .map(type => ({\n id: type.Code,\n name: type.Name,\n messages: messages.find(message => message.id === type.Code).messages\n }))\n }),\n ...(data.ValidOneTimeWithdrawalDates && { sellDates: data.ValidOneTimeWithdrawalDates.map(date => dayjs(date).format('YYYY-MM-DD')) }),\n ...(data.ValidRecurringWithdrawalDates && { startDates: data.ValidRecurringWithdrawalDates.map(date => dayjs(date).format('YYYY-MM-DD')) }),\n ...(data.TradeCutOffTime && { tradeCutoff: dayjs(data.TradeCutOffTime).format('YYYY-MM-DD HH:mm') }), // eslint-disable-line\n ...(data.TradeCutoffApproachingWarningMinutes && { tradeCutoffWarningTime: data.TradeCutoffApproachingWarningMinutes }),\n ...(data.WithdrawalTypes && {\n withdrawalTypes: data.WithdrawalTypes\n .filter(type => type.Code === 'HigherEd' || type.Code === 'K-12Tuition' || type.Code === 'NonQualified')\n .map(type => ({\n id: type.Code,\n name: type.Name,\n messages: messages.find(message => message.id === type.Code).messages\n }))\n }),\n };\n\n newState.serverDateTime = data.ServerDateTime;\n\n return newState;\n }\n\n case PASSWORD_REQUIREMENTS_GET: {\n newState.passwordRequirements = action.payload.data;\n return newState;\n }\n\n case STATIC_DOCUMENTS_GET: {\n const docs = action.payload.data;\n newState.documents = {\n onlineLPOAGuide: docs.find(doc => doc.FormType === 'OnlineLpoaAuthorizationGuide').Location,\n programDescription: docs.find(doc => doc.FormType === 'ProgramDescription').Location,\n form400: docs.find(doc => doc.FormType === 'InternalTransfer-400').Location,\n form300: docs.find(doc => doc.FormType === 'WithdrawalRequest-300').Location,\n form102: docs.find(doc => doc.FormType === 'InstitutionalAccountAgreement-102'),\n form104: docs.find(doc => doc.FormType === 'UgmaUtmaAccountAgreement-104'),\n form500: docs.find(doc => doc.FormType === 'AccountInformationChange-500'),\n };\n return newState;\n }\n\n case TMX_ENVIRONMENT_VARIABLES_GET: {\n newState.threatMetrixVars = action.payload.data;\n return newState;\n }\n\n case SERVER_DATETIME_GET: {\n newState.serverDateTime = action.payload.data;\n return newState;\n }\n\n case WEB_MESSAGES_GET: {\n const webMessageTypes = action.payload.data;\n // get only website message type messages\n const webMessageType = Boolean(webMessageTypes) && webMessageTypes.length > 0 && webMessageTypes.find(messageType => messageType.Name === 'WEBSITE MESSAGES');\n const webMessages = Boolean(webMessageType.WebsiteMessages) && webMessageType.WebsiteMessages.length > 0 && webMessageType.WebsiteMessages;\n // initialize all banners to empty strings each time api is called\n newState.webMessages = Object.values(BANNER_LOCATIONS).reduce((obj, bannerLocation) => ({ ...obj, [bannerLocation]: '' }), {});\n\n // distribute messages between banner locations (if exists will overwrite empty string)\n webMessages && webMessages.forEach(webMessage => {\n webMessage.WebsiteMessageURLs.forEach(websiteMessageURL => {\n newState.webMessages[`${websiteMessageURL.URL}/${websiteMessageURL.Page}`] = webMessage.Body;\n });\n });\n\n return newState;\n }\n\n case SET_LOADING_PUBLIC_VARS: {\n newState.loadingPublicVars = action.payload.isLoading;\n return newState;\n }\n\n default: {\n return state;\n }\n }\n\n}\n\nexport default StaticResourcesReducer;","/*\n*\n* MyInfo Constants\n*\n*/\nexport const AGENT_GET = 'src/components/Features/protected/MyInfo/AGENT_GET';\nexport const CHANGE_ADDRESS = 'src/components/Features/protected/MyInfo/CHANGE_ADDRESS';\nexport const GET_DELIVERY_METHODS = 'src/components/Features/protected/MyInfo/GET_DELIVERY_METHODS';\nexport const CHANGE_DELIVERY_METHODS = 'src/components/Features/protected/MyInfo/CHANGE_DELIVERY_METHODS';\nexport const CHANGE_EMAIL = 'src/components/Features/protected/MyInfo/CHANGE_EMAIL';\nexport const CHANGE_PHONE_NUMBERS = 'src/components/Features/protected/MyInfo/CHANGE_PHONE_NUMBERS';\nexport const DELETE_ADDRESS = 'src/components/Features/protected/MyInfo/DELETE_ADDRESS';\nexport const PASSWORD_CHANGE = 'src/components/Features/protected/MyInfo/PASSWORD_CHANGE';\n\nexport const OFFICIAL_NOTIFICATION = 'src/components/Features/protected/MyInfo/OFFICIAL_NOTIFICATION';\nexport const TAXFORMS_NOTIFICATION = 'src/components/Features/protected/MyInfo/TAXFORMS_NOTIFICATION';\nexport const NEWSLETTER_NOTIFICATION = 'src/components/Features/protected/MyInfo/NEWSLETTER_NOTIFICATION';\nexport const PROMO_NOTIFICATION = 'src/components/Features/protected/MyInfo/PROMO_NOTIFICATION';\nexport const BDAY_NOTIFICATION = 'src/components/Features/protected/MyInfo/BDAY_NOTIFICATION';\nexport const UTAH_RESIDENT_CHANGE = 'src/components/Features/protected/MyInfo/UTAH_RESIDENT_CHANGE';\n\nexport const ONLINE_ONLY = 'Online';\nexport const MAIL = 'Mail';\nexport const OPT_OUT = 'OptOut';\nexport const MAIL_ONLINE = 'Mail + Online';\nexport const BLOCKED = 'Blocked';\n\nexport const notificationTypes = {\n OfficialCommunications: {\n title: 'OfficialCommunications',\n options: [\n { display: 'Online Only', value: ONLINE_ONLY },\n { display: 'Mail + Online', value: MAIL },\n ]\n },\n TaxForms: {\n title: 'TaxForms',\n options: [ \n { display: 'Online Only', value: ONLINE_ONLY },\n { display: 'Mail + Online', value: MAIL },\n ],\n },\n Newsletter: {\n title: 'Newsletter',\n options: [ \n { display: 'Online Only', value: ONLINE_ONLY },\n { display: 'Mail + Online', value: MAIL },\n { display: 'Opt Out', value: OPT_OUT },\n ],\n },\n Promotional: {\n title: 'Promotional',\n options: [\n { display: 'Online Only', value: ONLINE_ONLY },\n { display: 'Opt Out', value: OPT_OUT },\n ],\n },\n BirthdayNotifications: {\n title: 'BirthdayNotifications',\n options: [\n { display: 'Online Only', value: ONLINE_ONLY },\n { display: 'Opt Out', value: OPT_OUT },\n ] \n },\n UTRESIDENT: {\n title: 'UTRESIDENT',\n },\n};","/*\n*\n* MyInfo Reducers\n*\n*/\nimport { cloneDeep, pick } from 'lodash';\n\nimport {\n AGENT_GET,\n CHANGE_ADDRESS,\n GET_DELIVERY_METHODS,\n CHANGE_DELIVERY_METHODS,\n CHANGE_EMAIL,\n CHANGE_PHONE_NUMBERS,\n DELETE_ADDRESS,\n\n OFFICIAL_NOTIFICATION,\n TAXFORMS_NOTIFICATION,\n NEWSLETTER_NOTIFICATION,\n PROMO_NOTIFICATION,\n BDAY_NOTIFICATION,\n UTAH_RESIDENT_CHANGE,\n} from './constants';\n\nimport { BLANK_ADDRESS } from 'components/AppRoot/StaticResources/constants';\n\nconst initialState = {\n agent: {\n AgentId: 0,\n Username: '',\n Addresses: {\n Physical: BLANK_ADDRESS,\n Mailing: BLANK_ADDRESS,\n Other: BLANK_ADDRESS\n },\n EmailAddress: '',\n FirstName: '',\n LastName: '',\n MiddleName: '',\n PhoneNumbers: {\n Cell: { Type: 'Cell', Number: '', MaskType: '' },\n Fax: { Type: 'Fax', Number: '', MaskType: '' },\n Home: { Type: 'Home', Number: '', MaskType: '' },\n Other: { Type: 'Other', Number: '', MaskType: '' },\n Work: { Type: 'Work', Number: '', MaskType: '' },\n },\n \n OfficialCommunications: 'None',\n Newsletter: 'None',\n Promotional: 'None',\n TaxForms: 'None',\n BirthdayNotifications: 'None',\n },\n DeliveryMethods: []\n};\n\nexport function formatPhoneNumbers(numbers) {\n return {\n Cell: numbers.find(phone => phone.Type === 'Cell') || initialState.agent.PhoneNumbers.Cell,\n Fax: numbers.find(phone => phone.Type === 'Fax') || initialState.agent.PhoneNumbers.Fax,\n Home: numbers.find(phone => phone.Type === 'Home') || initialState.agent.PhoneNumbers.Home,\n Other: numbers.find(phone => phone.Type === 'Other') || initialState.agent.PhoneNumbers.Other,\n Work: numbers.find(phone => phone.Type === 'Work') || initialState.agent.PhoneNumbers.Work,\n };\n}\n\nfunction MyInfoReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case AGENT_GET: {\n const agent = action.payload.data;\n newState.agent = {\n Addresses: {\n Physical: agent.PhysicalAddress ? pick(agent.PhysicalAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS,\n Mailing: agent.MailingAddress ? pick(agent.MailingAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS,\n Other: agent.OtherAddress ? pick(agent.OtherAddress, Object.keys(BLANK_ADDRESS)) : BLANK_ADDRESS\n },\n AgentId: agent.AgentId,\n EmailAddress: agent.EmailAddress ? agent.EmailAddress : '',\n FirstName: agent.FirstName,\n LastName: agent.LastName,\n MiddleName: agent.MiddleName,\n PhoneNumbers: formatPhoneNumbers(agent.PhoneNumbers),\n Username: agent.UserName,\n \n OfficialCommunications: agent.OfficialCommunications,\n Newsletter: agent.Newsletter,\n Promotional: agent.Promotional,\n TaxForms: agent.TaxForms,\n BirthdayNotifications: agent.BirthdayNotifications,\n UtahResident: agent.UtahResident,\n };\n return newState;\n }\n\n case CHANGE_ADDRESS: {\n const updatedAddress = action.payload.data;\n\n newState.agent = {\n ...newState.agent,\n Addresses: {\n ...newState.agent.Addresses,\n [updatedAddress.Type]: pick(updatedAddress, Object.keys(BLANK_ADDRESS))\n }\n };\n return newState;\n }\n\n case CHANGE_EMAIL: {\n newState.agent = {\n ...newState.agent,\n EmailAddress: action.payload.data\n };\n return newState;\n }\n\n case CHANGE_PHONE_NUMBERS: {\n newState.agent = {\n ...newState.agent,\n PhoneNumbers: formatPhoneNumbers(action.payload.data),\n };\n return newState;\n }\n\n case DELETE_ADDRESS: {\n newState.agent = {\n ...newState.agent,\n Addresses: {\n ...newState.agent.Addresses,\n [action.meta.addressType]: BLANK_ADDRESS\n }\n };\n return newState;\n }\n\n case GET_DELIVERY_METHODS:\n case CHANGE_DELIVERY_METHODS: {\n newState.DeliveryMethods = action.payload.data.DeliveryMethods;\n return newState;\n }\n\n case OFFICIAL_NOTIFICATION: {\n newState.agent = {\n ...newState.agent,\n OfficialCommunications: action.payload.data\n };\n return newState;\n }\n\n case TAXFORMS_NOTIFICATION: {\n newState.agent = {\n ...newState.agent,\n TaxForms: action.payload.data\n };\n return newState;\n }\n\n case NEWSLETTER_NOTIFICATION: {\n newState.agent = {\n ...newState.agent,\n Newsletter: action.payload.data\n };\n return newState;\n }\n\n case PROMO_NOTIFICATION: {\n newState.agent = {\n ...newState.agent,\n Promotional: action.payload.data\n };\n return newState;\n }\n\n case BDAY_NOTIFICATION: {\n newState.agent = {\n ...newState.agent,\n BirthdayNotifications: action.payload.data\n };\n return newState;\n }\n\n case UTAH_RESIDENT_CHANGE: {\n newState.agent = {\n ...newState.agent,\n UtahResident: action.payload.data\n };\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default MyInfoReducer;","\nexport const DEVICE_TOKEN_CREATE = 'src/components/Features/protected/Multifactor/DEVICE_TOKEN_CREATE';\nexport const DEVICE_TOKEN_GET = 'src/components/Features/protected/Multifactor/DEVICE_TOKEN_GET';\n\nexport const SECURITY_QESTION_GET = 'src/components/Features/protected/Multifactor/SECURITY_QESTION_GET';\nexport const SECURITY_QESTIONS_ANSWER = 'src/components/Features/protected/Multifactor/SECURITY_QESTIONS_ANSWER';\n\nexport const RSA_STATUS_GET = 'src/components/Features/protected/Multifactor/RSA_STATUS_GET';\nexport const RSA_QESTIONS_GET = 'src/components/Features/protected/Multifactor/RSA_QESTIONS_GET';\nexport const RSA_ANSWERS = 'src/components/Features/protected/Multifactor/RSA_ANSWERS';\nexport const RSA_VERIFY_BIRTHDAY = 'src/components/Features/protected/Multifactor/RSA_VERIFY_BIRTHDAY';\n\nexport const TWO_FACTOR_REGISTRATION = 'src/components/Features/protected/Multifactor/TWO_FACTOR_REGISTRATION';\nexport const TWO_FACTOR_REGISTRATION_UPDATE = 'src/components/Features/protected/Multifactor/TWO_FACTOR_REGISTRATION_UPDATE';\nexport const TWO_FACTOR_TOKEN = 'src/components/Features/protected/Multifactor/TWO_FACTOR_TOKEN';\nexport const TWO_FACTOR_TOKEN_VERIFICATION = 'src/components/Features/protected/Multifactor/TWO_FACTOR_TOKEN_VERIFICATION';\nexport const TWO_FACTOR_QRCODES = 'src/components/Features/protected/Multifactor/TWO_FACTOR_QRCODES';\n\nexport const TWO_FACTOR_PREFERRED_METHOD = 'src/components/Features/protected/Multifactor/TWO_FACTOR_PREFERRED_METHOD';\nexport const TWO_FACTOR_SAVE_METHOD = 'src/components/Features/protected/Multifactor/TWO_FACTOR_SAVE_METHOD';\n\nexport const regMethodTypes = {\n SMS: 'SMS',\n CALL: 'CALL',\n INAPPTOKEN: 'INAPPTOKEN'\n};","import { cloneDeep } from 'lodash';\n\nimport {\n DEVICE_TOKEN_CREATE,\n DEVICE_TOKEN_GET,\n SECURITY_QESTION_GET,\n SECURITY_QESTIONS_ANSWER,\n RSA_STATUS_GET,\n RSA_VERIFY_BIRTHDAY,\n RSA_QESTIONS_GET,\n RSA_ANSWERS,\n TWO_FACTOR_REGISTRATION,\n TWO_FACTOR_REGISTRATION_UPDATE,\n TWO_FACTOR_TOKEN_VERIFICATION,\n TWO_FACTOR_TOKEN,\n TWO_FACTOR_QRCODES,\n TWO_FACTOR_PREFERRED_METHOD,\n TWO_FACTOR_SAVE_METHOD\n} from './constants';\n\nconst initialState = {\n isIdentityVerified: false,\n isSecurityQuestionsLockedOut: false,\n isRSALockedOut: false,\n challengeQuestion: '',\n challengeQuestionCount: 0,\n RSADOB: null,\n isDOBValid: false,\n RSAQuestionSet: {},\n RegistrationInfo: {},\n VerificationInfo: {},\n QRCodeInfo: {},\n preferredInfo: {},\n regMethod: '',\n deviceToken: ''\n};\n\nfunction MultifactorReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case DEVICE_TOKEN_CREATE: {\n newState.deviceToken = action.payload.data.Token;\n return newState;\n }\n\n case DEVICE_TOKEN_GET: {\n const payload = action.payload.data;\n if (payload) {\n newState.isIdentityVerified = action.payload.data.IdentityVerified;\n }\n return newState;\n }\n\n /*\n If the users fails all 4 attempts at the Security Questions and closes tab or logs out before attempting to answer RSA, \n if the user logs in again within 30 min, they will be taken straight to RSA questions. If they log back in after \n 30 min the will start the identity verification process from the beginning (check for device id -> security questions -> RSA).\n */\n case SECURITY_QESTION_GET: {\n const payload = action.payload.data;\n if (payload) {\n newState.challengeQuestion = payload.Question;\n newState.isIdentityVerified = payload.IdentityVerified;\n newState.isSecurityQuestionsLockedOut = payload.LockedOut;\n newState.challengeQuestionCount = ++newState.challengeQuestionCount;\n }\n return newState;\n }\n\n /*\n Incorrect answer: identity verified = false, locked out false, and new challengeQuestion\n correct answer: identity verified = true, locked out = false, and challengeQuestion would be null wrong answer AND locked out: \n */\n case SECURITY_QESTIONS_ANSWER: {\n const payload = action.payload.data;\n if (payload) {\n newState.isSecurityQuestionsLockedOut = payload.LockedOut;\n newState.isIdentityVerified = payload.IdentityVerified;\n newState.challengeQuestion = payload.Question;\n }\n return newState;\n }\n\n case RSA_STATUS_GET: {\n const payload = action.payload.data;\n if (payload) {\n newState.isRSALockedOut = payload.Status === 'LockedOut';\n }\n return newState;\n }\n\n case RSA_VERIFY_BIRTHDAY: {\n const payload = action.payload.data;\n if (payload) {\n newState.isDOBValid = payload.IsValid;\n newState.isRSALockedOut = payload.LockedOut;\n }\n return newState;\n }\n\n /*\n If IdentityVerified is false = locked out and try again in 24 hours\n But, in reality they can try again right away. \n */\n case RSA_QESTIONS_GET: {\n const payload = action.payload.data;\n if (payload) {\n newState.isRSALockedOut = payload.LockedOut;\n newState.IdentityVerified = payload.IdentityVerified;\n newState.RSAQuestionSet = {\n QuestionSetId: payload.QuestionSetId,\n TransactionId: payload.TransactionId,\n Questions: payload.Questions,\n ErrorMessages: payload.ErrorMessages,\n };\n }\n return newState;\n }\n\n /*\n IdentityVerified true or false. (LockedOut is irrelevant in this case)\n - true, done with idenity verifiction\n - false, get more questions in this payload OR no questions (no questions, means you failed)\n */\n case RSA_ANSWERS: {\n const payload = action.payload.data;\n if (payload) {\n newState.RSAQuestionSet.Questions = payload.Questions;\n newState.isIdentityVerified = payload.IdentityVerified;\n newState.isRSALockedOut = payload.LockedOut;\n newState.RSAQuestionSet.ErrorMessages = payload.ErrorMessages;\n }\n return newState;\n }\n\n case TWO_FACTOR_REGISTRATION_UPDATE:\n case TWO_FACTOR_REGISTRATION: {\n newState.RegistrationInfo = action.payload.data;\n newState.RegistrationInfo.regMethod = action.meta.regMethod;\n return newState;\n }\n\n case TWO_FACTOR_TOKEN_VERIFICATION: {\n newState.VerificationInfo = action.payload.data;\n return newState;\n }\n\n case TWO_FACTOR_TOKEN: {\n return newState;\n }\n\n case TWO_FACTOR_QRCODES: {\n newState.QRCodeInfo = action.payload.data;\n return newState;\n }\n\n case TWO_FACTOR_PREFERRED_METHOD: {\n newState.preferredInfo = action.payload.data;\n return newState;\n }\n\n case TWO_FACTOR_SAVE_METHOD: {\n newState.preferredInfo = action.payload.data;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default MultifactorReducer;","export const GET_PREDEFINED_OPTIONS = 'app/Features/protected/Accounts/Transactions/OptionChanges/GET_PREDEFINED_OPTIONS';\nexport const POST_NEW_OPTION = 'app/Features/protected/Accounts/Transactions/OptionChanges/POST_NEW_OPTION';\nexport const DELETE_TRANSACTION = 'app/Features/protected/Accounts/Transactions/OptionChanges/DELETE_TRANSACTION';\nexport const GET_NEW_AGE_BASED_SCHEMA = 'app/Features/protected/Accounts/Transactions/OptionChanges/GET_NEW_AGE_BASED_SCHEMA';\nexport const GET_NEW_STATIC_SCHEMA = 'app/Features/protected/Accounts/Transactions/OptionChanges/GET_NEW_STATIC_SCHEMA';\nexport const GET_OPTION_CHANGE_BY_ID = 'app/Features/protected/Accounts/Transactions/OptionChanges/GET_OPTION_CHANGE_BY_ID';","/*\n*\n* OptionChanges Reducers\n*\n*/\nimport {\n GET_PREDEFINED_OPTIONS,\n GET_NEW_AGE_BASED_SCHEMA,\n GET_NEW_STATIC_SCHEMA,\n GET_OPTION_CHANGE_BY_ID,\n} from './constants';\n\nimport {\n cloneDeep,\n} from 'lodash';\n\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nconst initialState = {\n predefinedOptions: [],\n newAgeBasedSchema: {\n TemplateName: '',\n FundCategories: [],\n },\n newStaticSchema: {\n TemplateName: '',\n FundCategories: [],\n },\n template: {\n TemplateName: '',\n FundCategories: [],\n },\n optionChangeById: {},\n};\n\n\nfunction OptionChangesReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case GET_PREDEFINED_OPTIONS: {\n newState.predefinedOptions = action.payload.data.map(option => ({\n OptionId: option.OptionId,\n Name: option.Name,\n isCustom: option.IsCustom,\n isStatic: option.OptionType === 'S' && !option.IsCustom,\n isEnrollmentDate: option.OptionType === 'T' && !option.IsCustom,\n OptionOnlineDescription: option.UIOption.OptionOnlineDescription,\n OptionOnlineLink: option.UIOption.OptionOnlineLink,\n }));\n return newState;\n }\n\n case GET_OPTION_CHANGE_BY_ID: {\n const data = {\n ...action.payload.data,\n ...action.payload.data.Actions[0],\n };\n data.Schema = data.NewOption.includes('Custom') ? convert2DCalculatorSchemaTo3D(data.Schema) : null;\n\n newState.optionChangeById = data;\n return newState;\n }\n\n case GET_NEW_AGE_BASED_SCHEMA: {\n newState.newAgeBasedSchema = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n case GET_NEW_STATIC_SCHEMA: {\n newState.newStaticSchema = convert2DCalculatorSchemaTo3D(action.payload.data);\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default OptionChangesReducer;","/*\n*\n* Signup Constants\n*\n*/\nimport { BLANK_ADDRESS } from 'components/AppRoot/StaticResources/constants';\n\nexport const CREATE_ACCOUNT = 'src/components/Features/protected/Signup/CREATE_ACCOUNT';\nexport const DELETE_APPLICATION = 'src/components/Features/protected/Signup/DELETE_APPLICATION';\nexport const GET_EXISTING_BENEFICIARIES = 'src/components/Features/protected/Signup/GET_EXISTING_BENEFICIARIES';\nexport const GET_EXISTING_BENEFICIARY = 'src/components/Features/protected/Signup/GET_EXISTING_BENEFICIARY';\nexport const GET_SIGNUP_APPLICATION = 'src/components/Features/protected/Signup/GET_SIGNUP_APPLICATION';\nexport const RESET_ACCOUNT_APPLICATION = 'src/components/Features/protected/Signup/RESET_ACCOUNT_APPLICATION';\nexport const SAVE_ACCOUNT_OWNER = 'src/components/Features/protected/Signup/SAVE_ACCOUNT_OWNER';\nexport const SAVE_BENEFICIARY = 'src/components/Features/protected/Signup/SAVE_BENEFICIARY';\nexport const SAVE_CUSTOMIZED_OPTION = 'src/components/Features/protected/Signup/SAVE_CUSTOMIZED_OPTION';\nexport const SAVE_PREDEFINED_INVESTMENT_OPTION = 'src/components/Features/protected/Signup/SAVE_PREDEFINED_INVESTMENT_OPTION';\nexport const SAVE_PROMO_CODE = 'src/components/Features/protected/Signup/SAVE_PROMO_CODE';\n\nexport const BLANK_BENE_INFO = {\n BeneficiaryBirthdate: '',\n BeneficiaryEmail: '',\n BeneficiaryFirstName: '',\n BeneficiaryId: 0,\n BeneficiaryIsResident: false,\n BeneficiaryLastName: '',\n BeneficiaryMailingAddressSameAsOwner: false,\n BeneficiaryMiddleName: '',\n BeneficiaryPhysicalAddressSameAsOwner: false,\n BeneficiarySSN1: '',\n BeneficiarySSN2: '',\n Mailing: BLANK_ADDRESS,\n Physical: BLANK_ADDRESS,\n RelationshipToAccountOwner: '',\n encryptedDataExists: false,\n};","/*\n*\n* Signup Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n BLANK_BENE_INFO,\n CREATE_ACCOUNT,\n DELETE_APPLICATION,\n GET_EXISTING_BENEFICIARIES,\n GET_EXISTING_BENEFICIARY,\n GET_SIGNUP_APPLICATION,\n RESET_ACCOUNT_APPLICATION,\n SAVE_ACCOUNT_OWNER,\n SAVE_BENEFICIARY,\n SAVE_CUSTOMIZED_OPTION,\n SAVE_PREDEFINED_INVESTMENT_OPTION,\n SAVE_PROMO_CODE,\n} from './constants';\nimport { BLANK_ADDRESS } from 'components/AppRoot/StaticResources/constants';\nimport { convert2DCalculatorSchemaTo3D } from '@frontend/common';\n\nconst initialState = {\n AccountNumber: 0,\n accountOwnerInfo: {\n encryptedDataExists: false,\n Mailing: BLANK_ADDRESS,\n OwnerBirthdate: '',\n OwnerEmail: '',\n OwnerFirstName: '',\n OwnerHomePhone: '',\n OwnerIsResident: false,\n OwnerLastName: '',\n OwnerMiddleName: '',\n OwnerSSN1: '',\n OwnerSSN2: '',\n Physical: BLANK_ADDRESS,\n },\n activeStep: -1,\n beneficiaryInfo: BLANK_BENE_INFO,\n existingBenesDetails: {},\n existingBenesList: [],\n investmentInfo: {\n InvestmentOptionId: 0,\n Template: {\n TemplateName: '',\n FundCategories: [],\n },\n },\n PromotionalCode: '',\n selectedExistingBene: {},\n};\n\nfunction SignupReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case CREATE_ACCOUNT: {\n newState.AccountNumber = action.payload.data.AccountNumber;\n newState.activeStep = 5; // if the user refreshes the page after creating an account, they will remain on the confirmation step\n\n return newState;\n }\n\n case DELETE_APPLICATION:\n case GET_SIGNUP_APPLICATION: {\n const { AccountData, Beneficiary, Owner, Template } = action.payload.data;\n newState.accountOwnerInfo = mapAccountOwner(Owner);\n newState.beneficiaryInfo = mapBeneficiary(Beneficiary);\n newState.investmentInfo = { ...AccountData };\n Template && Template.FundCategories.length > 0 && (newState.investmentInfo.Template = convert2DCalculatorSchemaTo3D(Template));\n newState.PromotionalCode = AccountData.PromotionalCode || '';\n\n newState.activeStep = 0; // Defaults to AO page\n\n if (newState.investmentInfo.InvestmentOptionId || newState.investmentInfo.Template) {\n newState.activeStep = 3; // Goes to Review page\n }\n else if (newState.beneficiaryInfo.Mailing.StreetAddress1) { // if Mailing StreetAddress1 is populated, info has already been saved\n newState.activeStep = 2; // Goes to Investment Option\n }\n else if (newState.accountOwnerInfo.Mailing.StreetAddress1) { // if Mailing StreetAddress1 is populated, info has already been saved\n newState.activeStep = 1; // Goes to Beneficiary\n }\n\n return newState;\n }\n\n case GET_EXISTING_BENEFICIARIES: {\n const benesWithFilteredOpts = [];\n\n // Removes options that are not associated with an Individual account type because no two options can be the same for shared Individual accounts.\n // However, if there are two different account types for the same AO/bene pair, those shared accounts can also share an investment option.\n action.payload.data.forEach(acct => {\n const validOptions = acct.Options.filter(opt => opt.AccountType === 'I');\n acct.Options = validOptions;\n benesWithFilteredOpts.push(acct);\n });\n\n newState.existingBenesList = [\n { Name: 'New Beneficiary', BeneficiaryId: 0 }, // TODO we'll need to figure out translations in reducers eventually\n ...benesWithFilteredOpts\n ];\n\n return newState;\n }\n\n case GET_EXISTING_BENEFICIARY: {\n const bene = action.payload.data.Beneficiary;\n newState.existingBenesDetails[bene.BeneficiaryId] = { // Beneficiaries fetched from API are saved to existingBenesDetails object by their BeneficiaryId. Then they can be easily retrieved from the store by BeneficiaryId without making an add'l API call\n ...mapBeneficiary(bene),\n };\n\n return newState;\n }\n\n case RESET_ACCOUNT_APPLICATION: {\n newState.activeStep = 1;\n newState.beneficiaryInfo = initialState.beneficiaryInfo;\n newState.investmentInfo = initialState.investmentInfo;\n\n return newState;\n }\n\n case SAVE_ACCOUNT_OWNER: {\n newState.accountOwnerInfo = mapAccountOwner(action.payload.data);\n newState.activeStep = 1; // Goes to Beneficiary Step\n\n return newState;\n }\n\n case SAVE_BENEFICIARY: {\n newState.beneficiaryInfo = mapBeneficiary(action.payload.data);\n newState.activeStep = 2; // Goes to Investment Option\n\n return newState;\n }\n\n case SAVE_CUSTOMIZED_OPTION: {\n newState.investmentInfo = {\n InvestmentOptionId: 0,\n Template: convert2DCalculatorSchemaTo3D(action.payload.data),\n };\n newState.activeStep = 3; // Goes to Review page\n\n return newState;\n }\n\n case SAVE_PREDEFINED_INVESTMENT_OPTION: {\n newState.investmentInfo = {\n InvestmentOptionId: action.payload.data.InvestmentOptionId,\n Template: null,\n };\n newState.activeStep = 3; // Goes to Review page\n\n return newState;\n }\n\n case SAVE_PROMO_CODE: {\n newState.PromotionalCode = action.payload.data.PromotionalCode;\n\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport function mapAccountOwner(data) {\n return {\n // if data has null value, it will be set to a default value - empty string or boolean\n encryptedDataExists: Boolean(data.OwnerMailingStreetAddress1),\n Mailing: {\n StreetAddress1: data.OwnerMailingStreetAddress1 || '',\n StreetAddress2: data.OwnerMailingStreetAddress2 || '',\n City: data.OwnerMailingCity || '',\n PostalCode: data.OwnerMailingPostalCode || '',\n State: data.OwnerMailingState || '',\n },\n OwnerBirthdate: data.OwnerBirthdate || '',\n OwnerFirstName: data.OwnerFirstName || '',\n OwnerHomePhone: data.OwnerHomePhone || '',\n OwnerIsResident: data.OwnerIsResident ? data.OwnerIsResident : false, // ensures property is always saved as boolean\n OwnerLastName: data.OwnerLastName || '',\n OwnerMiddleName: data.OwnerMiddleName || '',\n OwnerSSN1: data.OwnerSSN1 || '',\n OwnerSSN2: data.OwnerSSN2 || '',\n Physical: {\n StreetAddress1: data.OwnerPhysicalStreetAddress1 || '',\n StreetAddress2: data.OwnerPhysicalStreetAddress2 || '',\n City: data.OwnerPhysicalCity || '',\n PostalCode: data.OwnerPhysicalPostalCode || '',\n State: data.OwnerPhysicalState || '',\n }\n };\n}\n\nexport function mapBeneficiary(data) {\n return {\n // if data has null value, it will be set to empty string\n encryptedDataExists: Boolean(data.BeneficiaryMailingStreetAddress1),\n Mailing: {\n StreetAddress1: data.BeneficiaryMailingStreetAddress1 || '',\n StreetAddress2: data.BeneficiaryMailingStreetAddress2 || '',\n City: data.BeneficiaryMailingCity || '',\n PostalCode: data.BeneficiaryMailingPostalCode || '',\n State: data.BeneficiaryMailingState || '',\n },\n BeneficiaryBirthdate: data.BeneficiaryBirthdate || '',\n BeneficiaryFirstName: data.BeneficiaryFirstName || '',\n BeneficiaryId: data.BeneficiaryId || 0,\n BeneficiaryIsResident: data.BeneficiaryIsResident ? data.BeneficiaryIsResident : false,\n BeneficiaryLastName: data.BeneficiaryLastName || '',\n BeneficiaryMailingAddressSameAsOwner: data.BeneficiaryMailingAddressSameAsOwner || false,\n BeneficiaryMiddleName: data.BeneficiaryMiddleName || '',\n BeneficiaryPhysicalAddressSameAsOwner: data.BeneficiaryPhysicalAddressSameAsOwner || false,\n BeneficiarySSN1: data.BeneficiarySSN1 || '',\n BeneficiarySSN2: data.BeneficiarySSN2 || '',\n Physical: {\n StreetAddress1: data.BeneficiaryPhysicalStreetAddress1 || '',\n StreetAddress2: data.BeneficiaryPhysicalStreetAddress2 || '',\n City: data.BeneficiaryPhysicalCity || '',\n PostalCode: data.BeneficiaryPhysicalPostalCode || '',\n State: data.BeneficiaryPhysicalState || '',\n },\n RelationshipToAccountOwner: data.RelationshipToAccountOwner || '',\n };\n}\n\nexport default SignupReducer;","/*\n*\n* Documents Constants\n*\n*/\nexport const DOCUMENTS_GET = 'src/components/Features/protected/Documents/DOCUMENTS_GET';\nexport const ACCOUNT_DOCUMENT_DOWNLOAD_DATA = 'src/components/Features/protected/Documents/ACCOUNT_DOCUMENT_DOWNLOAD_DATA';\nexport const COUNTRIES_LIST_GET = 'src/components/Features/protected/Documents/COUNTRIES_LIST_GET,';\nexport const ACCOUNT_CERTIFICATE_NAME = 'src/components/Features/protected/Documents/ACCOUNT_CERTIFICATE_NAME';\n\nexport const PDF_FILE = 'PDF';\nexport const HTML_FILE = 'HTML';","/*\n*\n* Documents Reducers\n*\n*/\nimport { cloneDeep, } from 'lodash';\nimport {\n DOCUMENTS_GET,\n COUNTRIES_LIST_GET,\n} from './constants';\n\nconst initialState = {\n documents: [],\n countries: []\n};\n\nfunction DocumentsReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case DOCUMENTS_GET: {\n newState.documents = action.payload.data;\n return newState;\n }\n\n case COUNTRIES_LIST_GET: {\n newState.countries = action.payload.data;\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default DocumentsReducer;","/*\n*\n* PayrollContribution Constants\n*\n*/\nexport const PAYROLL_GET = 'src/components/Features/protected/PayrollContribution/PAYROLL_GET';\nexport const PAYROLL_UPDATE = 'src/components/Features/protected/PayrollContribution/PAYROLL_UPDATE';\nexport const NON_AGENT_ACCOUNT_VERIFY = 'src/components/Features/protected/PayrollContribution/NON_AGENT_ACCOUNT_VERIFY';\n\nexport const AMOUNT = 'Amount';\nexport const PERCENTAGE = 'Percentage';","/*\n*\n* PayrollContribution Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n PAYROLL_GET, \n PAYROLL_UPDATE,\n} from './constants';\n\nconst initialState = {\n payrollContributionData: {},\n};\n\nfunction PayrollContributionsReducer(state = initialState, action) {\n \n const newState = cloneDeep(state);\n\n switch (action.type) {\n \n case PAYROLL_GET:\n case PAYROLL_UPDATE: {\n newState.payrollContributionData = action.payload.data;\n return newState;\n }\n\n default:\n return state;\n }\n\n}\n\nexport default PayrollContributionsReducer;","export const USER_NAME_FORGOT = 'AppRoot/Features/public/ForgotUsername/USER_NAME_FORGOT';","import { cloneDeep } from 'lodash';\n\nimport {\n USER_NAME_FORGOT,\n} from './constants';\n\nconst initialState = {\n errors: [],\n};\n\nfunction ForgotUserNameReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n \n case USER_NAME_FORGOT: {\n // debugger; // eslint-disable-line\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default ForgotUserNameReducer;","export const AGENT_SEARCH = 'AppRoot/Features/public/RegistrationType/AGENT_SEARCH';\nexport const AGENT_UPDATE = 'AppRoot/Features/public/RegistrationType/AGENT_UPDATE';\nexport const REGISTRATION_TYPE = 'AppRoot/Features/public/RegistrationType/REGISTRATION_TYPE';\n\nexport const INIT_FORM_ERRORS = {\n SocialSecurityNumber: '',\n BirthDate: '',\n UserName: '',\n EmailAddress: '',\n PasswordOne: '',\n PasswordTwo: '',\n};\n\nexport const REGISTRATION_TYPES = {\n I_AM_NEW_TO_MY529: 'I am new to my529',\n I_HAVE_ACCOUNTS_WITH_MY529: 'I have accounts with my529'\n};","import { cloneDeep } from 'lodash';\n\nimport {\n AGENT_SEARCH,\n AGENT_UPDATE,\n REGISTRATION_TYPE,\n} from './constants';\n\nconst initialState = {\n agent: {},\n updatedAgent: {},\n registrationType: '',\n};\n\nfunction SetupUserReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) {\n\n case AGENT_SEARCH: {\n const { data } = action.payload;\n newState.agent = data === '' ? {} : data;\n return newState;\n }\n\n case AGENT_UPDATE: {\n const { data } = action.payload;\n newState.updatedAgent = data === '' ? {} : data;\n return newState;\n }\n\n case REGISTRATION_TYPE: {\n newState.registrationType = action.payload;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default SetupUserReducer;","/*\n*\n* Lpoa Reducers\n*\n*/\n\n// import { cloneDeep } from 'lodash';\n\n// import {\n// CHECK_AUTH_CODE\n// } from './constants';\n\nconst initialState = {\n authCodeResponse: ''\n};\n\nfunction LpoaReducer(state = initialState, action) {\n \n // const newState = cloneDeep(state);\n\n switch (action.type) {\n \n // case CHECK_AUTH_CODE: {\n // newState.authCodeResponse = action.payload.data;\n // return newState;\n // }\n\n default:\n return state;\n }\n\n}\n\nexport default LpoaReducer;","/*\n*\n* InterestedParties Constants\n*\n*/\nexport const ADD_INTERESTED_PARTY = 'src/components/Features/protected/InterestedParties/ADD_INTERESTED_PARTY';\nexport const CREATE_INTERESTED_PARTY = 'src/components/Features/protected/InterestedParties/CREATE_INTERESTED_PARTY';\nexport const DELETE_INTERESTED_PARTY = 'src/components/Features/protected/InterestedParties/DELETE_INTERESTED_PARTY';\nexport const EDIT_INTERESTED_PARTY = 'src/components/Features/protected/InterestedParties/EDIT_INTERESTED_PARTY';\nexport const GET_INTERESTED_PARTIES = 'src/components/Features/protected/InterestedParties/GET_INTERESTED_PARTIES';\nexport const GET_IP_ACTIVATION_INFO = 'src/components/Features/protected/InterestedParties/GET_IP_ACTIVATION_INFO';\nexport const RESEND_INTERESTED_PARTY_EMAIL = 'src/components/Features/protected/InterestedParties/RESEND_INTERESTED_PARTY_EMAIL';","/*\n*\n* InterestedParties Reducers\n*\n*/\nimport { cloneDeep } from 'lodash';\nimport {\n ADD_INTERESTED_PARTY,\n DELETE_INTERESTED_PARTY,\n EDIT_INTERESTED_PARTY,\n GET_INTERESTED_PARTIES,\n GET_IP_ACTIVATION_INFO,\n RESEND_INTERESTED_PARTY_EMAIL,\n} from './constants';\n\nconst initialState = {\n activationInfo: {\n emailAddress: '',\n },\n interestedParties: [],\n};\n\nfunction InterestedPartiesReducer(state = initialState, action) {\n \n const newState = cloneDeep(state);\n\n switch (action.type) {\n case ADD_INTERESTED_PARTY:\n newState.interestedParties.push(action.payload.data);\n\n return newState;\n\n case DELETE_INTERESTED_PARTY: {\n const deletedIdx = newState.interestedParties.findIndex(ip => ip.interestedPartyId === parseInt(action.meta.ipId));\n newState.interestedParties.splice(deletedIdx, 1);\n\n return newState;\n }\n\n case EDIT_INTERESTED_PARTY: {\n const editedIdx = newState.interestedParties.findIndex(ip => ip.interestedPartyId === parseInt(action.meta.ipId));\n newState.interestedParties.splice(editedIdx, 1, action.payload.data);\n\n return newState;\n }\n \n case GET_INTERESTED_PARTIES:\n newState.interestedParties = action.payload.data;\n return newState;\n \n case GET_IP_ACTIVATION_INFO:\n newState.activationInfo = action.payload.data;\n return newState;\n\n case RESEND_INTERESTED_PARTY_EMAIL: {\n const editedIdx = newState.interestedParties.findIndex(ip => ip.interestedPartyId === parseInt(action.payload.data.InterestedPartyId));\n let editedIp = newState.interestedParties[editedIdx];\n editedIp = {\n ...editedIp,\n pin: action.payload.data.Pin,\n status: action.payload.data.Status\n };\n\n newState.interestedParties.splice(editedIdx, 1, editedIp);\n\n return newState;\n }\n \n default:\n return state;\n }\n\n}\n\nexport default InterestedPartiesReducer;","/*\n*\n* LpoaAccount Constants\n*\n*/\nexport const GET_RSA = 'src/components/Features/public/LpoaAccount/GET_RSA';\nexport const POST_RSA = 'src/components/Features/public/LpoaAccount/POST_RSA';\nexport const GET_LPOA_ACCOUNT = 'src/components/Features/public/LpoaAccount/GET_LPOA_ACCOUNT';\nexport const APPROVE_LPOA_ACCOUNT = 'src/components/Features/public/LpoaAccount/APPROVE_LPOA_ACCOUNT';\nexport const VALIDATE_LPOA_ACCOUNT = 'src/components/Features/public/LpoaAccount/VALIDATE_LPOA_ACCOUNT';\nexport const REJECT_LPOA_ACCOUNT = 'src/components/Features/public/LpoaAccount/REJECT_LPOA_ACCOUNT';\nexport const SAVE_TO_REDUX_LPOA_ACCOUNT = 'src/components/Features/public/LpoaAccount/SAVE_TO_REDUX_LPOA_ACCOUNT';\n\nexport const RSA_STATUS = {\n RSA_FAILED: 'RSA_FAILED',\n RSA_PASSED: 'RSA_PASSED',\n RSA_NOT_PASSED_YET: 'RSA_NOT_PASSED_YET',\n};\n\nexport const PERSON_TYPES = {\n AO: 'ao',\n BENE: 'bene',\n SUCCESSOR_PRIMARY: 'successor',\n SUCCESSOR_SECONDARY: 'ssuccessor',\n};\n\nexport const ADDRESS_TYPES = {\n MAILING: 'mailingAddress',\n PHYSICAL: 'physicalAddress',\n};\n\nexport const RELATIONSHIPS = [\n { display: 'Child', value: 'C' },\n { display: 'Grandchild', value: 'G' },\n { display: 'Niece/Nephew', value: 'N' },\n { display: 'Spouse', value: 'SP' },\n { display: 'Self', value: 'S' },\n { display: 'Other', value: 'O' },\n];","import { cloneDeep } from 'lodash';\n\nimport {\n GET_LPOA_ACCOUNT,\n PERSON_TYPES, \n ADDRESS_TYPES,\n SAVE_TO_REDUX_LPOA_ACCOUNT,\n APPROVE_LPOA_ACCOUNT,\n} from './constants';\n\nconst initialState = {\n newAccountNumber: 0,\n loginAlreadyExists: false,\n applicationInfo: {\n guid: '',\n [PERSON_TYPES.AO]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: null,\n ssn: '',\n isUtahPayer: false,\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n contact: {\n email: '',\n homePhone: '',\n workPhone: '',\n otherPhone: '',\n relationship: '',\n },\n },\n [PERSON_TYPES.BENE]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: null,\n ssn: '',\n isUtahPayer: false,\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n [PERSON_TYPES.SUCCESSOR_PRIMARY]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: null,\n ssn: '',\n isUtahPayer: false,\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n [PERSON_TYPES.SUCCESSOR_SECONDARY]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: null,\n ssn: '',\n isUtahPayer: false,\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n accountSummary: {\n applicationDate: '',\n type: '',\n option: '',\n poaLevel: '',\n fedTaxDocs: false,\n stateTaxDocs: false,\n status: '',\n promoCode: '',\n },\n beneAge: -1,\n ageBands: [\n {\n FundInformation: [],\n FeeInformation: {\n ExpenseRatio: 0,\n My529Fee: 0,\n TotalFee: 0,\n },\n },\n ],\n lpoaFirmName: '',\n },\n};\n\nconst mapApplicationInfo = (account) => {\n function normalizeString(str) {\n return str ? str.toString() : '';\n }\n\n function normalizeBoolean(bool) {\n return Boolean(bool);\n }\n\n function normalizeNumber(num) {\n return num ? num : '';\n }\n\n function normalizeDate(date) {\n return date ? date : null;\n }\n\n return {\n guid: account.PoaAccountApplicationId,\n [PERSON_TYPES.AO]: {\n firstName: normalizeString(account.OwnerFirstName),\n middleName: normalizeString(account.OwnerMiddleName),\n lastName: normalizeString(account.OwnerLastName),\n birthDate: normalizeDate(account.OwnerBirthdate),\n ssn: normalizeNumber(account.OwnerSSN),\n isUtahPayer: normalizeBoolean(account.OwnerIsResident),\n [ADDRESS_TYPES.MAILING]: {\n street1: normalizeString(account.OwnerMailingAddress1),\n street2: normalizeString(account.OwnerMailingAddress2),\n city: normalizeString(account.OwnerMailingCity),\n state: normalizeString(account.OwnerMailingState),\n zipCode: normalizeNumber(account.OwnerMailingZipCode),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: normalizeString(account.OwnerPhysicalAddress1),\n street2: normalizeString(account.OwnerPhysicalAddress2),\n city: normalizeString(account.OwnerPhysicalCity),\n state: normalizeString(account.OwnerPhysicalState),\n zipCode: normalizeNumber(account.OwnerPhysicalZipCode),\n },\n contact: {\n email: normalizeString(account.OwnerEmail),\n homePhone: account.OwnerHomePhone,\n workPhone: account.OwnerWorkPhone,\n otherPhone: account.OwnerOtherPhone,\n relationship: account.Relationship,\n },\n },\n [PERSON_TYPES.BENE]: {\n firstName: normalizeString(account.BeneficiaryFirstName),\n middleName: normalizeString(account.BeneficiaryMiddleName),\n lastName: normalizeString(account.BeneficiaryLastName),\n birthDate: normalizeDate(account.BeneficiaryBirthdate),\n ssn: normalizeString(account.BeneficiarySSN),\n isUtahPayer: normalizeBoolean(account.BeneficiaryIsResident),\n [ADDRESS_TYPES.MAILING]: {\n street1: normalizeString(account.BeneficiaryMailingAddress1),\n street2: normalizeString(account.BeneficiaryMailingAddress2),\n city: normalizeString(account.BeneficiaryMailingCity),\n state: normalizeString(account.BeneficiaryMailingState),\n zipCode: normalizeNumber(account.BeneficiaryMailingZipCode),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: normalizeString(account.BeneficiaryPhysicalAddress1),\n street2: normalizeString(account.BeneficiaryPhysicalAddress2),\n city: normalizeString(account.BeneficiaryPhysicalCity),\n state: normalizeString(account.BeneficiaryPhysicalState),\n zipCode: normalizeNumber(account.BeneficiaryPhysicalZipCode),\n },\n },\n [PERSON_TYPES.SUCCESSOR_PRIMARY]: {\n firstName: normalizeString(account.SuccessorFirstName),\n middleName: normalizeString(account.SuccessorMiddleName),\n lastName: normalizeString(account.SuccessorLastName),\n birthDate: normalizeDate(account.SuccessorBirthdate),\n ssn: normalizeString(account.SuccessorSSN),\n isUtahPayer: normalizeBoolean(account.SuccessorUtahResident),\n [ADDRESS_TYPES.MAILING]: {\n street1: normalizeString(account.SuccessorMailingAddress1),\n street2: normalizeString(account.SuccessorMailingAddress2),\n city: normalizeString(account.SuccessorMailingCity),\n state: normalizeString(account.SuccessorMailingState),\n zipCode: normalizeNumber(account.SuccessorMailingZipCode),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: normalizeString(account.SuccessorPhysicalAddress1),\n street2: normalizeString(account.SuccessorPhysicalAddress2),\n city: normalizeString(account.SuccessorPhysicalCity),\n state: normalizeString(account.SuccessorPhysicalState),\n zipCode: normalizeNumber(account.SuccessorPhysicalZipCode),\n },\n },\n [PERSON_TYPES.SUCCESSOR_SECONDARY]: {\n firstName: normalizeString(account.SSuccessorFirstName),\n middleName: normalizeString(account.SSuccessorMiddleName),\n lastName: normalizeString(account.SSuccessorLastName),\n birthDate: normalizeDate(account.SSuccessorBirthDate),\n ssn: normalizeString(account.SSuccessorSSN),\n isUtahPayer: normalizeBoolean(account.SSuccessorUtahResident),\n [ADDRESS_TYPES.MAILING]: {\n street1: normalizeString(account.SSuccessorMailingAddress1),\n street2: normalizeString(account.SSuccessorMailingAddress2),\n city: normalizeString(account.SSuccessorMailingCity),\n state: normalizeString(account.SSuccessorMailingState),\n zipCode: normalizeNumber(account.SSuccessorMailingZipCode),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: normalizeString(account.SSuccessorPhysicalAddress1),\n street2: normalizeString(account.SSuccessorPhysicalAddress2),\n city: normalizeString(account.SSuccessorPhysicalCity),\n state: normalizeString(account.SSuccessorPhysicalState),\n zipCode: normalizeNumber(account.SSuccessorPhysicalZipCode),\n },\n },\n accountSummary: {\n applicationDate: normalizeDate(account.Date),\n type: normalizeString(account.AccountTypeName),\n option: normalizeString(account.OptionName),\n poaLevel: normalizeNumber(account.PoaLevel),\n fedTaxDocs: normalizeBoolean(account.CanViewFedTaxDocs),\n stateTaxDocs: normalizeBoolean(account.CanViewStateTaxDocs),\n status: normalizeString(account.Status),\n promoCode: normalizeString(account.PromoCode),\n },\n beneAge: account.BeneficiaryAge,\n ageBands: account.AgeBands,\n lpoaFirmName: account.FirmName,\n };\n};\n\nfunction LpoaAccountReducer(state = initialState, action) {\n\n const newState = cloneDeep(state);\n\n switch (action.type) { \n case GET_LPOA_ACCOUNT: {\n newState.applicationInfo = mapApplicationInfo(action.payload.data);\n return newState;\n }\n\n case SAVE_TO_REDUX_LPOA_ACCOUNT: {\n newState.applicationInfo = action.payload;\n return newState;\n }\n\n case APPROVE_LPOA_ACCOUNT: {\n newState.newAccountNumber = action.payload.data.AccountNumber;\n newState.loginAlreadyExists = action.payload.data.LoginAlreadyExists;\n return newState;\n }\n\n default:\n return state;\n }\n}\n\nexport default LpoaAccountReducer;","/**\n * timer_real_time\n * \n * It looks like JS setTimer is paused in inactive tab hence the need \n * to build a homemade one based on setTimeout (this seems to work ok) and real time\n * \n * testing\n \nstart(\n () => console.log('tick at: ', new Date().toISOString()), // callback to execute every second\n () => console.log('finished at: ', new Date().toISOString()), // callback to execute when timeout\n 60000, // duration in ms\n);\nstop();\n */\n\nconst CLOCK_INTERVAL_IN_MS = 1000; // hardcoded 1 sec tick interval\n\nlet cbTick, cbFinish;\nlet dur = 0; // timeout duration\nlet elapsedTime = 0;\nlet currentTimer = null;\nlet startedAt = null;\n\nexport function startTimer(callbackTick, callbackFinish, duration) {\n dur = duration; \n cbTick = callbackTick;\n cbFinish = callbackFinish;\n startedAt = Date.now();\n update();\n}\n\nexport function stopTimer() {\n clearTimeout(currentTimer);\n}\n\nexport function getRemainingTimeInMs() {\n return dur - elapsedTime;\n}\n\nfunction update() {\n clearTimeout(currentTimer);\n elapsedTime = Date.now() - startedAt;\n cbTick(); // call this function every 1 sec\n\n if (elapsedTime >= dur) { \n cbFinish(); // finished - execute callback\n }\n else {\n currentTimer = setTimeout(update, CLOCK_INTERVAL_IN_MS); \n }\n}\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport { INITIALIZE_STORE } from 'components/AppRoot/Navigation/constants'; \n\nimport Accounts from 'components/Features/protected/Accounts/reducer';\nimport Gifting from 'components/Features/protected/Gifting/reducer';\nimport Transactions from 'components/Features/protected/Accounts/Transactions/reducer';\nimport Payments from 'components/Features/protected/Payments/reducer';\nimport Notifications from '@frontend/common/build/components/Notifications/reducer';\nimport Session from 'components/AppRoot/Navigation/reducer';\nimport Static from 'components/AppRoot/StaticResources/reducer';\nimport MyInfo from 'components/Features/protected/MyInfo/reducer';\nimport Multifactor from 'components/Features/protected/Multifactor/reducer';\nimport OptionChanges from 'components/Features/protected/Accounts/Transactions/OptionChanges/reducer';\nimport Signup from 'components/Features/protected/Signup/reducer';\nimport Documents from 'components/Features/protected/Documents/reducer';\nimport PayrollContribution from 'components/Features/protected/PayrollContribution/reducer';\nimport ForgotUsername from 'components/Features/public/ForgotUsername/reducer';\nimport RegistrationType from 'components/Features/public/RegistrationType/reducer';\nimport LpoaReducer from 'components/Features/protected/Lpoa/reducer';\nimport InterestedPartiesReducer from 'components/Features/protected/InterestedParties/reducer';\nimport LpoaAccountReducer from 'components/Features/public/LpoaAccount/reducer';\n\n/*\nAbility to reinitialize the entire store.\nThis action type is used by /logout\n*/\nconst rootReducer = (state, action) => {\n if (action.type === INITIALIZE_STORE) {\n state = {\n static: {\n environmentVars: state.static.environmentVars,\n documents: state.static.documents,\n webMessages: state.static.webMessages,\n loadingPublicVars: state.static.loadingPublicVars,\n passwordRequirements: state.static.passwordRequirements,\n serverDateTime: '',\n threatMetrixVars: {\n SessionId: '',\n ThreatMetrixUrl: '',\n },\n usStates: state.static.usStates,\n withdrawalVariables: {\n paymentTypes: [],\n recipientTypes: [],\n sellDates: [],\n startDates: [],\n withdrawalTypes: [],\n minWithdrawal: 0,\n maxWithdrawal: 0,\n tradeCutoff: {},\n tradeCutoffWarningTime: 0,\n }\n }\n };\n }\n \n return appReducer(state, action);\n};\n\nconst appReducer = combineReducers({\n accounts: Accounts,\n gifting: Gifting,\n transactions: Transactions,\n payments: Payments,\n notifications: Notifications,\n session: Session,\n static: Static,\n myInfo: MyInfo,\n multifactor: Multifactor,\n optionChanges: OptionChanges,\n signup: Signup,\n documents: Documents,\n payrollContribution: PayrollContribution,\n forgotusername: ForgotUsername,\n registrationtype: RegistrationType,\n lpoaReducer: LpoaReducer,\n interestedParties: InterestedPartiesReducer,\n lpoaAccount: LpoaAccountReducer,\n});\n\nexport default rootReducer;\n","import * as globalVars from './_sassconfig.scss';\nimport { lighten } from '@mui/material/styles';\n\nconst appColors = {\n primary: globalVars.primary || '#000', // Appeases the unit test gods' inability to load css\n accent: globalVars.accent || '#FFF', // Appeases the unit test gods' inability to load css\n accent2: globalVars.accent2 || '#FFF', // Appeases the unit test gods' inability to load css\n error: globalVars.error,\n text: globalVars.text,\n lightHeaderText: globalVars.lightHeaderText,\n linkText: globalVars.linkText,\n darkPrimary: globalVars.darkPrimary,\n lightGray: globalVars.lightGray,\n};\n\nexport default {\n palette: {\n common: {\n warn: 'rgb(250, 229, 0)'\n },\n default: {\n main: '#FFF',\n light: '#FFF',\n dark: '#FFF',\n },\n primary: {\n main: appColors.primary,\n light: lighten(appColors.primary, 0.9),\n dark: appColors.primary,\n },\n secondary: {\n main: appColors.accent,\n light: lighten(appColors.accent, 0.9),\n },\n accent2: {\n main: appColors.accent2,\n light: lighten(appColors.accent2, 0.85),\n },\n error: {\n main: appColors.error\n },\n text: {\n main: appColors.text\n },\n lightHeaderText: {\n main: appColors.lightHeaderText\n },\n row: {\n trim: lighten(appColors.primary, 0.9),\n hover: lighten(appColors.primary, 0.8),\n selected: lighten(appColors.primary, 0.6),\n },\n },\n components: {\n MuiButton: {\n defaultProps: {\n color: 'primary',\n },\n styleOverrides: {\n contained: {\n color: '#fff',\n backgroundColor: appColors.primary,\n '&:hover': {\n backgroundColor: lighten(appColors.primary, 0.4),\n },\n },\n outlined: {\n borderColor: appColors.primary,\n },\n },\n },\n MuiCheckbox: {\n defaultProps: {\n color: 'primary',\n }\n },\n MuiChip: {\n defaultProps: {\n color: appColors.primary,\n },\n styleOverrides: {\n root: {\n '&:hover': {\n backgroundColor: lighten(appColors.primary, 0.4),\n color: '#fff',\n },\n },\n deleteIcon: {\n color: '#fff',\n '&:hover': {\n color: 'rgb(215, 215, 215)',\n },\n },\n avatar: {\n backgroundColor: '#fff',\n color: appColors.primary,\n },\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n overflowY: 'auto', // allows modal content to scroll, if screen height becomes too small\n },\n },\n },\n MuiFilledInput: {\n styleOverrides: {\n underline: {\n '&:before': {\n borderBottom: 'none'\n },\n '&:hover:not($disabled):not($focused):not($error):before': {\n borderBottom: 'none'\n },\n },\n },\n },\n MuiFormControl: {\n defaultProps: {\n variant: 'standard',\n },\n styleOverrides: {\n root: {\n margin: '5px 0',\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n color: 'rgb(0, 0, 0, .89)',\n }\n }\n },\n MuiInput: {\n styleOverrides: {\n underline: {\n '&:after': {\n borderBottomColor: appColors.primary,\n },\n '&:before': {\n borderBottom: '1px solid rgb(175, 175, 175)'\n },\n '&:hover:not($disabled):not($focused):not($error):before': {\n borderBottom: '2px solid rgb(175, 175, 175)',\n },\n },\n },\n },\n MuiListItem: {\n styleOverrides: {\n root: {\n '&.Mui-selected': {\n backgroundColor: '#FAFAFA',\n color: '#0071CE'\n }\n }\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: 'inherit'\n }\n },\n },\n MuiMenu: {\n defaultProps: {\n anchorOrigin: { // makes menu anchor show up on anchor point rather than slightly below it\n vertical: 'top',\n horizontal: 'left',\n },\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n },\n styleOverrides: {\n root: {\n padding: '9px',\n },\n },\n },\n MuiSelect: {\n defaultProps: {\n variant: 'standard',\n },\n },\n MuiStepIcon: {\n styleOverrides: {\n root: {\n '&.Mui-active': {\n color: appColors.accent,\n },\n '&.Mui-completed': {\n color: appColors.accent,\n },\n },\n },\n },\n MuiStepper: {\n styleOverrides: {\n root: {\n backgroundColor: 'transparent',\n padding: '24px',\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n '&.Mui-selected': {\n color: appColors.primary,\n },\n indicatorColor: {\n color: appColors.primary,\n },\n },\n },\n },\n MuiTabs: {\n defaultProps: {\n indicatorColor: 'primary',\n },\n },\n MuiTextField: {\n defaultProps: {\n variant: 'standard',\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: '12px',\n },\n },\n },\n },\n typography: {\n fontFamily: [\n 'Roboto',\n 'PT Sans',\n 'Arial',\n 'sans-serif',\n ]\n },\n breakpoints: {\n values: { // all following values should be non-zero except in tests\n xs: 0,\n sm: globalVars.mobileWidth ? parseInt(globalVars.mobileWidth) : 0,\n md: globalVars.tabletWidth ? parseInt(globalVars.tabletWidth) : 0,\n lg: globalVars.desktopWidth ? parseInt(globalVars.desktopWidth) : 0,\n },\n }\n};\n","/*\n*\n* LanguageHOC Higher Order Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { default as English } from 'utils/translations/en.js';\nimport { default as Spanish } from 'utils/translations/es.js';\n\nconst select = state => ({\n language: state.session.language\n});\n\nexport default function(ComposedComponent) {\n\n class Language extends React.Component {\n\n static propTypes = {\n language: PropTypes.string.isRequired\n };\n\n render() {\n const translatedText = this.props.language === 'es' ? Spanish : English; // eslint-disable-line\n return ; // TRANSLATIONS change text={translatedText} to activate Spanish translation (and remove comment above)\n }\n }\n\n return connect(select)(Language);\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from '@frontend/common';\nimport { startTimer, stopTimer, getRemainingTimeInMs } from 'utils/helpers/timer_real_time';\n\nexport default class LogoutWarning extends Component {\n static propTypes = {\n logoutWarningInterval: PropTypes.number.isRequired,\n parseWarningMsg: PropTypes.func.isRequired,\n modalTitle: PropTypes.string.isRequired,\n closeButtonLabel: PropTypes.string.isRequired,\n onWarningClose: PropTypes.func.isRequired,\n warningOn: PropTypes.bool.isRequired,\n onTimeout: PropTypes.func.isRequired,\n onCloseContinueWithTimeout: PropTypes.bool.isRequired,\n };\n\n state = {\n remainingTimeInMs: 0,\n }\n\n updateRemainingTime = () => {\n this.setState({ remainingTimeInMs: getRemainingTimeInMs() });\n }\n\n startWarning = () => {\n // 1. show warning\n this.setState({ remainingTimeInMs: this.props.logoutWarningInterval });\n\n // 2. re-start countdown\n startTimer(\n this.updateRemainingTime,\n this.props.onTimeout,\n this.props.logoutWarningInterval\n );\n }\n\n stopWarning = () => {\n !this.props.onCloseContinueWithTimeout && stopTimer();\n this.props.onWarningClose();\n this.setState({ remainingTimeInMs: 0 });\n };\n\n parseCountdown = () => {\n const secsAll = this.state.remainingTimeInMs / 1000;\n const remainingMins = Math.floor(secsAll / 60);\n const remainingSecs = Math.round(secsAll - (remainingMins * 60));\n \n const minsFormatted = (remainingMins < 10 ? '0' : '') + remainingMins;\n const secsFormatted = (remainingSecs < 10 ? '0' : '') + remainingSecs;\n return `${minsFormatted}:${secsFormatted}`;\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.warningOn !== prevProps.warningOn) {\n if (this.props.warningOn)\n this.startWarning();\n else\n this.stopWarning();\n }\n }\n\n componentWillUnmount() {\n stopTimer();\n }\n\n render() {\n const { remainingTimeInMs } = this.state;\n const { parseWarningMsg, modalTitle, closeButtonLabel, warningOn } = this.props;\n\n return (\n \n
\n {parseWarningMsg(this.parseCountdown(remainingTimeInMs))}\n
\n \n );\n }\n}","/*\n*\n* PageNotFound Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Icon,\n Button,\n} from '@mui/material';\nimport styles from './styles.module.scss';\n\nexport function PageNotFound({ history, text: { Home, PageNotFound } }) {\n return (\n
\n
\n {'¯\\\\_(ツ)_/¯'}\n
\n

\n {PageNotFound.text_oops}\n

\n history.push(Home.nav_path)}\n >\n keyboard_arrow_left\n {PageNotFound.btn_back_to_accounts}\n \n
\n );\n}\n\nPageNotFound.propTypes = {\n history: PropTypes.object.isRequired,\n text: PropTypes.object.isRequired\n};\n\nexport default withRouter(LanguageHOC(PageNotFound));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route, Redirect } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport LogoutWarning from './LogoutWarning';\nimport PageNotFound from 'components/Features/public/PageNotFound';\n\nimport {\n notificationShow,\n allNotificationsHide,\n} from '@frontend/common';\n\nimport {\n userLogout,\n clearStore,\n twoFaRouteChange,\n} from './actions';\n\nimport { REASONS_BLOCKED } from './constants';\n\nconst select = (state) => ({\n environmentVars: state.static.environmentVars,\n isValid: state.session.isValid,\n userAccess: state.session.userAccess,\n reasonBlocked: state.session.reasonBlocked,\n isNewUser_AccessRole: state.session.isNewUser_AccessRole,\n});\n\nconst windowEvents = [\n 'click', // detects mouse click or finger press on button\n 'keydown', // detects any key being pressed down\n 'mousedown', // detects mouse click\n 'mousemove', // detects any mouse movement\n 'touchstart', // detects touch events for smaller screens\n 'scroll' // detects scrolling on any device\n];\n\nexport class ProtectedRoute extends React.Component {\n\n static propTypes = {\n environmentVars: PropTypes.shape({\n LogoutWarningTimeout: PropTypes.number.isRequired,\n AccountAccessNoFrontEndActivityTimeout: PropTypes.number.isRequired,\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n isValid: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n AddBirthdate: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n Login: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n ProtectedRoute: PropTypes.shape({\n msg_logged_out_inactivity: PropTypes.string,\n msg_logged_out_inactivity_warning: PropTypes.func,\n title_logged_out_inactivity_warning: PropTypes.string,\n btn_close: PropTypes.string,\n }),\n Signup: PropTypes.shape({ nav_path: PropTypes.string }),\n Multifactor: PropTypes.shape({ nav_path: PropTypes.string }),\n VerifyEmail: PropTypes.shape({ nav_path: PropTypes.string }),\n }).isRequired,\n component: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n ]),\n render: PropTypes.func,\n userAccess: PropTypes.string.isRequired,\n requiredAccessRights: PropTypes.array.isRequired,\n reasonBlocked: PropTypes.string,\n isNewUser_AccessRole: PropTypes.bool.isRequired,\n twoFaRouteChange: PropTypes.func.isRequired,\n };\n\n state = {\n inactivityWarningOn: false,\n };\n\n // timers\n inactivityWarningTimer = null;\n\n\n handleAccountBlocks = () => {\n const { reasonBlocked, text: { AddBirthdate, Multifactor, VerifyEmail } } = this.props;\n\n switch (reasonBlocked) {\n case '': return; // no blocks\n case REASONS_BLOCKED.MISSING_EMAIL_REQUIRED: // also push to verify email path\n case REASONS_BLOCKED.EMAIL_VALIDATION_REQUIRED: return ;\n case REASONS_BLOCKED.TWO_FACTOR_REGISTRATION: {\n this.props.twoFaRouteChange(window.location.pathname); // sets user's current route so they can return once 2fa is complete - important for SSup\n return ;\n }\n case REASONS_BLOCKED.NO_BIRTHDATE: return ;\n default: return;\n }\n }\n\n handleRequiredAccess = () => {\n const { component, isNewUser_AccessRole, render, requiredAccessRights, text: { Signup }, userAccess } = this.props;\n const hasRequiredAccess = requiredAccessRights.includes(userAccess);\n const Component = component ? component : render; // allows render props to be passed instead of only a component\n\n if (hasRequiredAccess) { // loads requested route for users who have access\n return ;\n }\n else if (isNewUser_AccessRole) { // redirects to Signup for new users\n return ;\n }\n else { // loads PageNotFound for IP-only users\n return ;\n }\n }\n\n /* inactivity */\n inactivityLogout = () => {\n const token = sessionStorage.getItem('token');\n const {\n text: { ProtectedRoute: { msg_logged_out_inactivity } },\n } = this.props;\n this.props.userLogout({ token })\n .finally(() => this.props.notificationShow(msg_logged_out_inactivity, 'error'));\n this.props.clearStore();\n }\n\n restartInactivityProcedure = () => {\n const { environmentVars: { AccountAccessNoFrontEndActivityTimeout } } = this.props;\n if (!this.state.inactivityWarningOn) {\n // reset all timers\n const noFrontEndActivityTimeoutInMs = AccountAccessNoFrontEndActivityTimeout * 1000;\n clearTimeout(this.inactivityWarningTimer);\n this.inactivityWarningTimer = setTimeout(() => this.setState({ inactivityWarningOn: true }), noFrontEndActivityTimeoutInMs);\n }\n }\n\n cancelInactivityWarning = () => {\n clearTimeout(this.inactivityWarningTimer);\n this.setState({ inactivityWarningOn: false });\n };\n\n componentDidMount() {\n if (this.props.isValid) {\n windowEvents.forEach(e => window.addEventListener(e, this.restartInactivityProcedure));\n this.restartInactivityProcedure();\n }\n\n window.onload = () => {\n this.props.allNotificationsHide();\n };\n }\n\n componentWillUnmount() {\n clearTimeout(this.inactivityWarningTimer);\n windowEvents.forEach(e => window.removeEventListener(e, this.restartInactivityProcedure));\n }\n\n render() {\n const { environmentVars: { LogoutWarningTimeout }, component, isValid, text: { ProtectedRoute, Login }, ...rest } = this.props;\n const { inactivityWarningOn } = this.state;\n const logoutWarningTimeoutInMs = LogoutWarningTimeout * 1000;\n\n return (\n {\n return isValid ?\n
\n\n {this.handleAccountBlocks()}\n\n {this.handleRequiredAccess()}\n\n \n
\n :\n ;\n }}\n />\n );\n }\n}\n\nexport default connect(select, {\n notificationShow,\n allNotificationsHide,\n userLogout,\n clearStore,\n twoFaRouteChange,\n})(LanguageHOC(ProtectedRoute));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Route, Redirect } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nconst select = (state) => ({\n isValid: state.session.isValid\n});\n\nexport class PublicRoute extends React.Component {\n\n static propTypes = {\n isValid: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Home: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n }).isRequired,\n };\n\n render() {\n const { component: Component, text: { Home }, ...rest } = this.props; // eslint-disable-line\n return (\n {\n return this.props.isValid ?\n \n :\n ;\n }}\n />\n );\n }\n}\n\nexport default connect(select, {})(LanguageHOC(PublicRoute));\n","/*\n*\n* StaticResources Actions\n*\n*/\nimport {\n ENVIRONMENT_VARIABLES_GET,\n PASSWORD_REQUIREMENTS_GET,\n STATIC_DOCUMENTS_GET,\n TMX_ENVIRONMENT_VARIABLES_GET,\n SERVER_DATETIME_GET,\n WEB_MESSAGES_GET,\n SET_LOADING_PUBLIC_VARS,\n} from './constants';\n\nimport { GETrequest } from 'utils/helpers/api_handler';\n\n\nexport function passwordRequirementsGet() {\n const response = GETrequest('/authentication/passwordrequirements');\n return {\n type: PASSWORD_REQUIREMENTS_GET,\n payload: response,\n };\n}\n\nexport function getEnvironmentVars(params) {\n return {\n type: ENVIRONMENT_VARIABLES_GET,\n payload: params ? GETrequest(`/Parameters?name=${params.join('&name=')}`) : GETrequest('/Parameters'),\n };\n}\n\nexport function getThreatMetrixVars() {\n return {\n type: TMX_ENVIRONMENT_VARIABLES_GET,\n payload: GETrequest('/parameters/ThreatMetrixParameters'),\n };\n}\n\nexport function getStaticDocuments() {\n const payload = GETrequest('/forms');\n return {\n type: STATIC_DOCUMENTS_GET,\n payload,\n };\n}\n\nexport function getServerDateTime() {\n const payload = GETrequest('/parameters/serverdatetime');\n return {\n type: SERVER_DATETIME_GET,\n payload,\n };\n}\n\nexport function getWebMessages() {\n return {\n type: WEB_MESSAGES_GET,\n payload: GETrequest('/WebsiteMessage'),\n };\n}\n\nexport function setLoadingPublicVars(isLoading) {\n return {\n type: SET_LOADING_PUBLIC_VARS,\n payload: { isLoading },\n };\n}","/*\n*\n* Header\n*\n*/\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Bowser from 'bowser';\n\nimport my529LogoColors from './my529LogoColorsTransp.png';\n\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n// import LanguageMenu from './LanguageMenu'; // TRANSLATIONS uncomment to activate LanguageMenu\nimport {\n IconBtnTooltip,\n} from '@frontend/common';\n\nimport {\n Badge,\n Icon,\n IconButton,\n Tooltip,\n} from '@mui/material';\n\nimport {\n changeLanguage,\n setBrowserWarning,\n toggleSidenav,\n toggleNotifications,\n} from 'components/AppRoot/Navigation/actions';\n\nimport { getEnvironmentVars, getStaticDocuments, getWebMessages, setLoadingPublicVars } from 'components/AppRoot/StaticResources/actions';\n\nimport styles from './styles.module.scss';\n\nconst bowser = Bowser.getParser(window.navigator.userAgent).parsedResult;\n\nconst select = (state) => ({\n environmentVars: state.static.environmentVars,\n isValid: state.session.isValid,\n accountBlocked: state.session.accountBlocked,\n language: state.session.language,\n showBrowserWarning: state.session.showBrowserWarning,\n showMobileWarning: state.session.showMobileWarning,\n usStates: state.static.usStates,\n staticDocuments: state.static.documents,\n sidenavOpen: state.session.sidenavOpen,\n notificationsOpen: state.session.notificationsOpen,\n numberOfNotViewedNotifications: state.session.numberOfNotViewedNotifications,\n isIpOnly_AccessRole: state.session.isIpOnly_AccessRole,\n});\n\nexport class Header extends Component {\n static propTypes = {\n changeLanguage: PropTypes.func.isRequired,\n environmentVars: PropTypes.object.isRequired,\n staticDocuments: PropTypes.object,\n getEnvironmentVars: PropTypes.func.isRequired,\n getStaticDocuments: PropTypes.func.isRequired,\n getWebMessages: PropTypes.func.isRequired,\n setLoadingPublicVars: PropTypes.func.isRequired,\n isValid: PropTypes.bool.isRequired,\n accountBlocked: PropTypes.bool.isRequired,\n language: PropTypes.string.isRequired,\n pageTitle: PropTypes.string,\n setBrowserWarning: PropTypes.func.isRequired,\n showBrowserWarning: PropTypes.bool.isRequired,\n showMobileWarning: PropTypes.bool.isRequired,\n sidenavOpen: PropTypes.bool.isRequired,\n notificationsOpen: PropTypes.bool.isRequired,\n numberOfNotViewedNotifications: PropTypes.number.isRequired,\n isIpOnly_AccessRole: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Header: PropTypes.shape({\n btn_main_menu: PropTypes.string,\n text_browser_warning: PropTypes.string,\n text_notifications: PropTypes.string,\n })\n }).isRequired,\n toggleSidenav: PropTypes.func.isRequired,\n toggleNotifications: PropTypes.func.isRequired,\n usStates: PropTypes.array.isRequired,\n };\n\n languageSet = () => {\n if (!localStorage.getItem('my529-language')) {\n this.props.changeLanguage(this.props.language);\n }\n }\n\n warningsCompile() {\n const { text_browser_warning } = this.props.text.Header;\n if (this.props.showBrowserWarning && bowser.browser.name === 'Internet Explorer') {\n return this.warningMessageCompose('browser', text_browser_warning);\n }\n else {\n return null;\n }\n }\n\n warningMessageCompose(warningType, message) {\n return (\n
\n {message}\n this.props.setBrowserWarning()}\n >\n close\n
\n \n );\n }\n\n componentDidMount() {\n const apiCalls = [];\n\n if (!this.props.staticDocuments.programDescription) {\n apiCalls.push(this.props.getStaticDocuments());\n }\n\n if (!this.props.isValid && this.props.usStates.length === 0) { // Prevents call for environmentVars if already in state. Need this to prevent a race condition where a user lands on /login from the /validate-email link, notifications are hidden\n apiCalls.push(this.props.getEnvironmentVars());\n }\n\n apiCalls.push(this.props.getWebMessages());\n\n this.props.setLoadingPublicVars(true);\n Promise.all(apiCalls)\n .then(() => this.props.setLoadingPublicVars(false))\n .catch(() => this.props.setLoadingPublicVars(false));\n\n this.languageSet();\n }\n\n render() {\n const {\n isValid,\n accountBlocked,\n pageTitle,\n sidenavOpen,\n notificationsOpen,\n numberOfNotViewedNotifications,\n isIpOnly_AccessRole,\n text,\n } = this.props;\n\n if (!accountBlocked && isValid) {\n return (\n
\n
\n
\n
\n
\n this.props.toggleSidenav(!sidenavOpen)}\n title={text.Header.btn_main_menu}\n />\n
\n my529\n
\n
\n

\n {pageTitle}\n

\n
\n {!isIpOnly_AccessRole &&\n
\n
\n \n this.props.toggleNotifications(!notificationsOpen)}\n style={{ color: '#000' }}\n >\n \n notifications\n \n \n \n
\n
\n }\n
\n {this.warningsCompile()}\n
\n );\n }\n else {\n return (\n
\n
\n

\n {pageTitle}\n

\n {/* TRANSLATIONS uncomment to activate translation menu */}\n {/* */}\n
\n {this.warningsCompile()}\n
\n );\n }\n }\n}\n\nexport default connect(select, {\n getEnvironmentVars,\n getStaticDocuments,\n getWebMessages,\n setLoadingPublicVars,\n changeLanguage,\n setBrowserWarning,\n toggleSidenav,\n toggleNotifications,\n})(LanguageHOC(Header));","import dayjs from 'dayjs';\nimport English from 'utils/translations/en.js';\n\nexport function greetingGenerator() {\n const { Home } = English;\n const hour = dayjs().format('HH'); // military hour of the day\n\n if (hour >= 5 && hour < 12) { // between 5am and 12pm\n return Home.head_greeting_morning;\n }\n else if (hour >= 12 && hour < 17) { // between 12pm and 5pm\n return Home.head_greeting_afternoon;\n }\n else if (hour >= 17 || hour < 5) { // between 5pm and 5am, or is required here since hours start over at 24\n return Home.head_greeting_evening;\n }\n}","/*\n*\n* Google Analytics Events\n*\n*/\n\nimport { sendPageView, sendClickEvent, } from './helpers';\n\nexport function appTourStepper(step) {\n sendPageView(`/app-tour/step_${step}`);\n}\n\nexport function signupStepper(step) {\n sendPageView(`/add-account/step_${step}`);\n}\n\nexport function thirdParyLinkClick(eventLabel) {\n sendClickEvent('Third Party Link Clicks', eventLabel);\n}\n\nexport function externalLinkClick(eventLabel) {\n sendClickEvent('External Link Clicks', eventLabel);\n}","/*\n*\n* SidenavMenuOption\n*\n*/\nimport React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport {\n Icon,\n List,\n ListItem,\n ListItemText,\n ListItemIcon,\n Collapse,\n Tooltip,\n} from '@mui/material';\n\nimport { externalLinkClick, } from 'utils/ga/events';\n\nimport { desktopWidth } from 'utils/config/_sassconfig.scss';\n\nexport class SidenavMenuOption extends Component {\n\n static propTypes = {\n name: PropTypes.string.isRequired,\n link: PropTypes.string,\n onOptionClick: PropTypes.func,\n rootMenuOptionIconName: PropTypes.string,\n externalLink: PropTypes.string,\n sidenavOpen: PropTypes.bool,\n setNestedMenuOpen: PropTypes.func,\n onClick: PropTypes.func,\n visible: PropTypes.bool,\n toggleSidenav: PropTypes.func,\n disabled: PropTypes.bool,\n };\n\n static defaultProps = {\n visible: true,\n disabled: false,\n };\n\n state = {\n showMenuOptions: false,\n };\n\n menuOptionClickHandle(link, onMenuOptionClick, externalLink, name) {\n if (link) {\n this.props.history.push(link);\n }\n else if (externalLink) {\n externalLinkClick(name); // reports click event to google analytics\n window.open(externalLink, '_blank', 'noopener,noreferrer');\n }\n onMenuOptionClick && onMenuOptionClick();\n window.innerWidth < parseInt(desktopWidth) && this.props.toggleSidenav(false); // only close menu on tablet and smaller\n }\n\n setMenuOpen = () => {\n const showMenuOptions = !this.state.showMenuOptions;\n this.setState({ showMenuOptions });\n }\n\n render() {\n const { showMenuOptions } = this.state;\n const {\n sidenavOpen,\n onOptionClick,\n link,\n rootMenuOptionIconName,\n children,\n name,\n visible,\n history: {\n location\n },\n externalLink,\n onClick,\n disabled,\n } = this.props;\n\n const isNested = Boolean(children);\n const isSelected = link === location.pathname;\n\n let customOnClick = onClick; // allows passing custom onClick when declaring the component\n if (!customOnClick)\n customOnClick = isNested\n ? () => this.setMenuOpen()\n : () => this.menuOptionClickHandle(link, onOptionClick, externalLink, name);\n\n return (\n \n \n {rootMenuOptionIconName &&\n \n \n {rootMenuOptionIconName}\n \n \n }\n {sidenavOpen && }\n {isNested && {showMenuOptions ? 'expand_less' : 'expand_more'}}\n \n {isNested &&\n this.props.setNestedMenuOpen(this.state.showMenuOptions)} // before scrollbar height in measured in the parent the Collapse needs to finish animation\n onExited={() => this.props.setNestedMenuOpen(this.state.showMenuOptions)} // before scrollbar height in measured in the parent the Collapse needs to finish animation\n >\n
\n {children}\n
\n \n }\n
\n );\n }\n}\n\nexport default withRouter(SidenavMenuOption);","\n/*\n*\n* Sidenav\n*\n*/\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { greetingGenerator } from 'utils/helpers/greeting_generator';\n\nimport {\n notificationShow,\n sizify,\n} from '@frontend/common';\n\nimport {\n Divider,\n Drawer,\n Hidden,\n SwipeableDrawer,\n} from '@mui/material';\n\nimport { withStyles, } from '@mui/styles';\n\nimport {\n changeLanguage,\n clearStore,\n toggleSidenav,\n userLogout,\n} from '../actions';\n\nimport SidenavMenuOption from './SidenavMenuOption';\n\nimport { ROUTE_ACCESS } from 'components/AppRoot/Navigation/RequiredAccess.js';\nimport { desktopWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountBlocked: state.session.accountBlocked,\n uiPermissions: state.accounts.uiPermissions,\n faxNumber: state.static.environmentVars.FaxNumber,\n isValid: state.session.isValid,\n language: state.session.language,\n phoneNumber: state.static.environmentVars.SupportPhoneNumber,\n supportEmail: state.static.environmentVars.SupportEmail,\n sidenavOpen: state.session.sidenavOpen,\n userAccess: state.session.userAccess,\n userDetails: state.session.userDetails,\n documents: state.static.documents ? state.static.documents : {},\n disableLeftNavigationMenu: state.session.disableLeftNavigationMenu,\n});\n\nconst muiStyles = {\n sidenavOpen: {\n overflowX: 'visible',\n transition: 'all .5s ease',\n width: '250px',\n },\n sidenavMini: {\n overflowX: 'hidden',\n transition: 'width .5s ease',\n },\n};\n\nexport class Sidenav extends Component {\n\n static propTypes = {\n accountBlocked: PropTypes.bool.isRequired,\n changeLanguage: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n clearStore: PropTypes.func.isRequired,\n faxNumber: PropTypes.string.isRequired,\n isValid: PropTypes.bool.isRequired,\n language: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n phoneNumber: PropTypes.string.isRequired,\n supportEmail: PropTypes.string.isRequired,\n sidenavOpen: PropTypes.bool.isRequired,\n size: PropTypes.shape({\n windowHeight: PropTypes.number,\n }).isRequired,\n documents: PropTypes.object,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Documents: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Gifting: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Home: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Login: PropTypes.shape({ msg_you_have_logged_out: PropTypes.string }),\n MyInfo: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Navigation: PropTypes.shape({\n menu_english: PropTypes.string,\n menu_log_out: PropTypes.string,\n menu_profile: PropTypes.string,\n menu_spanish: PropTypes.string,\n text_previous_login: PropTypes.string,\n text_version: PropTypes.string,\n }),\n Payments: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n PayrollContribution: PropTypes.shape({ nav_title: PropTypes.string, nav_path: PropTypes.string }),\n Sidenav: PropTypes.shape({\n head_account_owner: PropTypes.string,\n head_need_help: PropTypes.string,\n text_fax: PropTypes.string,\n text_loading: PropTypes.string,\n text_phone: PropTypes.string,\n text_previous_login: PropTypes.string,\n btn_cancel: PropTypes.string,\n resources: PropTypes.shape({\n title: PropTypes.string,\n lbl_program_description: PropTypes.string,\n lbl_forms: PropTypes.string,\n lbl_performance: PropTypes.string,\n lbl_college_planning_center: PropTypes.string,\n lbl_faqs: PropTypes.string,\n title_third_party_warning: PropTypes.string,\n }),\n text_timezone: PropTypes.string,\n }),\n Lpoa: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n InterestedParties: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n }).isRequired,\n toggleSidenav: PropTypes.func.isRequired,\n uiPermissions: PropTypes.shape({\n canAddInterestedParties: PropTypes.bool,\n canManageBankAccounts: PropTypes.bool,\n giftingEnabled: PropTypes.bool,\n noBeneAccounts: PropTypes.bool,\n }).isRequired,\n userAccess: PropTypes.string.isRequired,\n userLogout: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n disableLeftNavigationMenu: PropTypes.bool.isRequired,\n };\n\n state = {\n hasScrollBar: false,\n nestedMenuOpen: false,\n scrollBarWidth: 0, // needed when browser scale or screen resolution changed also changes scrollbar width\n languageOptionsShow: false,\n };\n\n languageChangeHandle = (language) => {\n this.props.changeLanguage(language);\n this.props.history.push(this.props.text.Home.nav_path);\n this.setState({ languageOptionsShow: false });\n window.innerWidth < parseInt(desktopWidth) && this.props.toggleSidenav(false); // only close menu on tablet and smaller\n }\n\n logOut = () => {\n const { text } = this.props;\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => this.props.notificationShow(text.Login.msg_you_have_logged_out, 'success'));\n this.props.clearStore();\n this.props.toggleSidenav(false);\n };\n\n menuSelectHandle = path => {\n window.innerWidth < parseInt(desktopWidth) && this.props.toggleSidenav(false); // only close menu on tablet and smaller\n this.props.history.push(path);\n }\n\n renderSidenavContents = () => {\n const {\n faxNumber,\n phoneNumber,\n supportEmail,\n sidenavOpen,\n uiPermissions: { canAddInterestedParties, canManageBankAccounts, giftingEnabled, noBeneAccounts },\n text: {\n Navigation,\n Sidenav,\n MyInfo,\n Accounts,\n Payments,\n Documents,\n Gifting,\n Home,\n InterestedParties,\n Lpoa,\n PayrollContribution,\n },\n userDetails,\n documents,\n userAccess,\n toggleSidenav,\n disableLeftNavigationMenu,\n } = this.props;\n\n return (\n \n\n
\n
\n
\n toggleSidenav(!sidenavOpen)}\n rootMenuOptionIconName='menu'\n toggleSidenav={toggleSidenav}\n sidenavOpen={sidenavOpen}\n />\n
\n\n
\n
\n

{`${greetingGenerator()},`}

\n

{userDetails.name}

\n
\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n
\n\n
\n
\n \n
\n\n \n\n \n\n {/* TRANSLATIONS uncomment below menu items to activate language selection in Sidenav */}\n {/* this.setState({ languageOptionsShow: !this.state.languageOptionsShow })}\n toggleSidenav={toggleSidenav}\n >\n this.languageChangeHandle('en')}\n sidenavOpen={sidenavOpen}\n />\n this.languageChangeHandle('es')}\n sidenavOpen={sidenavOpen}\n />\n */}\n\n this.setState({ nestedMenuOpen })}\n toggleSidenav={toggleSidenav}\n >\n \n \n \n \n \n\n
\n
\n
\n
{Navigation.text_version} {window.appVersion}
\n
\n

{Sidenav.head_need_help}

\n
\n

{supportEmail}

\n

{Sidenav.text_phone} {phoneNumber ? {phoneNumber} : Sidenav.text_loading}

\n

{Sidenav.text_fax} {faxNumber ? faxNumber : Sidenav.text_loading}

\n
\n {userDetails.previousLogin &&\n
\n
{Sidenav.text_previous_login}
\n

{userDetails.previousLogin} {Sidenav.text_timezone}

\n
\n }\n
\n
\n
\n\n
\n
\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { sidenavOpen, size: { windowHeight } } = this.props;\n const drawerEl = document.getElementById('drawer');\n const topMenuEl = document.getElementById('topMenu');\n const hasDrawerScrollBar = Boolean(drawerEl) && drawerEl.firstChild.scrollHeight > drawerEl.firstChild.clientHeight;\n const hasTopMenuScrollBar = Boolean(topMenuEl) && topMenuEl.scrollHeight > topMenuEl.clientHeight; // determines presence of a vertical scroll bar\n const hasScrollBar = hasDrawerScrollBar || hasTopMenuScrollBar;\n\n if (\n windowHeight !== prevProps.size.windowHeight\n || sidenavOpen !== prevProps.sidenavOpen\n || hasScrollBar !== this.state.hasScrollBar\n || prevState.nestedMenuOpen !== this.state.nestedMenuOpen // this would not catch when nested menu is open/closed so introduced new state for nested menu open\n ) {\n const drawerScrollBarWidth = drawerEl ? drawerEl.firstChild.offsetWidth - drawerEl.firstChild.clientWidth : 0;\n const topMenuScrollBarWidth = topMenuEl ? topMenuEl.offsetWidth - topMenuEl.clientWidth : 0;\n const sumOfBarWidths = drawerScrollBarWidth + topMenuScrollBarWidth;\n const scrollBarWidth = sumOfBarWidths > 0 ? sumOfBarWidths : this.state.scrollBarWidth;\n this.setState({ hasScrollBar, scrollBarWidth });\n }\n }\n\n render() {\n const { accountBlocked, isValid, sidenavOpen } = this.props;\n const sidenavIsVisible = !accountBlocked && isValid && sidenavOpen; // hide sidenav if account is blocked\n\n return (\n !accountBlocked && isValid &&\n \n \n \n {this.renderSidenavContents()}\n \n \n\n \n this.props.toggleSidenav(false)}\n onOpen={() => this.props.toggleSidenav(true)}\n >\n {this.renderSidenavContents()}\n \n \n \n );\n }\n}\n\nexport default withRouter(withStyles(muiStyles)(connect(select, {\n changeLanguage,\n clearStore,\n notificationShow,\n toggleSidenav,\n userLogout,\n})(sizify(LanguageHOC(Sidenav)))));","/*\n*\n* NotificationsDrawer Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Divider,\n Icon,\n SwipeableDrawer,\n} from '@mui/material';\nimport { IconBtnTooltip, LoadingOverlay } from '@frontend/common';\nimport {\n toggleNotifications,\n setNotificationsViewed,\n} from 'components/AppRoot/Navigation/actions';\nimport { NOTIFICATION_TYPES, } from 'components/AppRoot/Navigation/constants';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n notificationsOpen: state.session.notificationsOpen,\n notifications: state.session.notifications,\n});\n\nexport class NotificationsDrawer extends React.Component {\n\n static propTypes = {\n notificationsOpen: PropTypes.bool.isRequired,\n notifications: PropTypes.array.isRequired,\n toggleNotifications: PropTypes.func.isRequired,\n setNotificationsViewed: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Notifications: PropTypes.shape({\n text_no_notifications: PropTypes.string,\n }),\n }),\n };\n\n state = {\n loading: false\n }\n\n getIconName = notificationType => {\n switch (notificationType) {\n case NOTIFICATION_TYPES.CONTRIBUTION: return 'attach_money';\n case NOTIFICATION_TYPES.GIFTING: return 'card_giftcard';\n case NOTIFICATION_TYPES.ACCOUNT: return 'account_circle';\n case NOTIFICATION_TYPES.BANK_ACCOUNT: return 'account_balance';\n case NOTIFICATION_TYPES.DOCUMENTS: return 'description';\n case NOTIFICATION_TYPES.INTERESTED_PARTY: return 'supervised_user_circle';\n\n default: return '';\n }\n }\n\n redirectAndToggle = (url) => {\n // trying avoid calling async api on component unmount\n // refresh notifications\n this.setState({ loading: true });\n this.props.setNotificationsViewed()\n .then(() => {\n this.setState({ loading: false });\n return this.props.toggleNotifications(false);\n })\n .then(() => {\n // test if absolute path\n if (url.indexOf('http://') === 0 || url.indexOf('https://') === 0) {\n window.open(url, '_blank', 'noopener');\n return null;\n }\n else {\n return this.props.history.push(url);\n }\n });\n }\n\n toggleNotifications = (isOpen) => {\n // trying avoid calling async api on component unmount\n if (!isOpen) {\n // refresh notifications\n this.setState({ loading: true });\n this.props.setNotificationsViewed()\n .then(() => {\n this.setState({ loading: false });\n this.props.toggleNotifications(isOpen);\n });\n }\n else\n this.props.toggleNotifications(isOpen);\n }\n\n render() {\n const { loading } = this.state;\n const {\n notifications,\n notificationsOpen,\n text: { Notifications },\n } = this.props;\n\n return (\n this.toggleNotifications(false)}\n onOpen={() => this.toggleNotifications(true)}\n >\n \n
\n
\n
Notifications
\n
\n this.toggleNotifications(false)}\n />\n
\n
\n \n
\n {notifications.length > 0 ?\n notifications.map(notification => {\n const icon = this.getIconName(notification.Type);\n return [\n this.redirectAndToggle(notification.URL)}\n >\n
\n
\n
\n {icon}\n
\n \n {notification.Type} . {dayjs(notification.CreatedDate).fromNow()}\n \n
\n
{notification.Title}
\n
{notification.Status}
\n
\n
,\n \n ];\n }) :
{Notifications.text_no_notifications}
\n }\n
\n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n toggleNotifications,\n setNotificationsViewed,\n})(LanguageHOC(NotificationsDrawer)));","/*\n*\n* AppTour Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport {\n getUserPreferences,\n saveUserPreferences,\n} from 'components/AppRoot/Navigation/actions.js';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Icon,\n MobileStepper,\n Slide,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport { Checkbox, sizify } from '@frontend/common';\nimport welcome from './WelcomeScreen.svg';\nimport { tabletWidth } from 'utils/config/_sassconfig.scss';\nimport { appTourStepper } from 'utils/ga/events';\n\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\nconst muiStyles = () => ({\n backdrop: {\n backgroundColor: 'transparent',\n },\n desktopPaperProps: {\n minHeight: '375px',\n minWidth: '625px',\n },\n dialog: {\n zIndex: '9999 !important',\n },\n iconButtonRoot: {\n color: '#000',\n },\n mobilePaperProps: {\n bottom: '0px',\n paddingBottom: '32px',\n margin: '0px',\n position: 'absolute',\n width: '100%',\n },\n stepperRoot: {\n backgroundColor: '#fff',\n display: 'flex',\n justifyContent: 'space-around',\n },\n});\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nconst select = state => ({\n tourPreference: state.session.userPreferences.length > 0 ? state.session.userPreferences.find(pref => pref.Identifier === 'ShowAATour') : {},\n claims: state.session.claims,\n isAccountListLoaded: state.accounts.isAccountListLoaded,\n});\n\nexport class AppTour extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n getUserPreferences: PropTypes.func.isRequired,\n saveUserPreferences: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n text: PropTypes.shape({\n AppTour: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_finish: PropTypes.string,\n btn_next: PropTypes.string,\n btn_skip: PropTypes.string,\n head_action_btn: PropTypes.string,\n head_more_info: PropTypes.string,\n head_nav: PropTypes.string,\n head_notifications: PropTypes.string,\n head_table_menu: PropTypes.string,\n head_table_search: PropTypes.string,\n head_transactions: PropTypes.string,\n head_welcome: PropTypes.string,\n text_dont_show: PropTypes.string,\n text_more_info: PropTypes.string,\n text_nav: PropTypes.string,\n text_notifications: PropTypes.string,\n text_table_menu: PropTypes.string,\n text_table_search: PropTypes.string,\n text_transactions1: PropTypes.string,\n text_transactions2: PropTypes.string,\n text_transactions3: PropTypes.string,\n text_transactions4: PropTypes.string,\n text_transactions: PropTypes.string,\n text_welcome2: PropTypes.string,\n text_welcome: PropTypes.string,\n }),\n }).isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n tourPreference: PropTypes.shape({ Value: PropTypes.bool }).isRequired,\n isAccountListLoaded: PropTypes.bool.isRequired,\n splashHasDisplayed: PropTypes.bool.isRequired,\n };\n\n state = {\n activeStep: 0,\n isSmallScreen: window.innerWidth <= parseInt(tabletWidth),\n loaded: false,\n neverShowAgain: false,\n showTour: false,\n steps: [\n this.props.text.AppTour.head_welcome,\n this.props.text.AppTour.head_nav,\n this.props.text.AppTour.head_notifications,\n this.props.text.AppTour.head_transactions,\n this.props.text.AppTour.head_table_search,\n this.props.text.AppTour.head_table_menu,\n this.props.text.AppTour.head_more_info,\n ],\n };\n\n backHandle = () => {\n this.setState({ activeStep: this.state.activeStep - 1 });\n }\n\n closeModalHandle = () => {\n this.setState({ showTour: false });\n\n if (this.state.activeStep === this.state.steps.length - 1) { // if user skips on last step\n appTourStepper('finish'); // Google Analytics url for goal tracking\n }\n\n if (this.state.neverShowAgain) {\n const updatedPreference = {\n ...this.props.tourPreference,\n Value: false,\n };\n\n this.props.saveUserPreferences(updatedPreference);\n }\n }\n\n dialogContentRender = () => {\n const { activeStep, isSmallScreen } = this.state;\n const { AppTour } = this.props.text;\n\n switch (activeStep) {\n case 0:\n return (\n
\n {AppTour.head_welcome}\n
\n

{AppTour.text_welcome}

\n

{AppTour.text_welcome2}

\n
\n
\n );\n case 1:\n return (\n
\n {!isSmallScreen && menu}\n

{AppTour.text_nav}

\n
\n );\n case 2:\n return (\n
\n {!isSmallScreen && notifications}\n

{AppTour.text_notifications}

\n
\n );\n case 3:\n return (\n
\n
{AppTour.text_transactions}
\n
\n
\n

{AppTour.text_transactions2}

\n
\n\n
\n
\n \n
\n

{AppTour.text_transactions3}

\n
\n
\n );\n case 4:\n return (\n
\n search\n

{AppTour.text_table_search}

\n
\n );\n case 5:\n return (\n
\n more_vert\n

{AppTour.text_table_menu}

\n
\n );\n case 6:\n return (\n
\n info\n

{AppTour.text_more_info}

\n
\n );\n default: return;\n }\n }\n\n neverShowAgainHandle = () => {\n this.setState({ neverShowAgain: !this.state.neverShowAgain });\n }\n\n nextHandle = () => {\n if (this.state.activeStep === this.state.steps.length - 1) {\n appTourStepper('finish'); // Google Analytics url for goal tracking\n this.closeModalHandle();\n }\n else {\n appTourStepper(this.state.activeStep + 1); // Google Analytics url for goal tracking\n this.setState({ activeStep: this.state.activeStep + 1 });\n }\n }\n\n componentDidMount() {\n const { claims, tourPreference, size: { windowWidth } } = this.props;\n const isMobile = windowWidth < parseInt(mobileWidth);\n\n if (claims.AccountBlocked !== 'True' && Object.keys(tourPreference).length === 0) { // does not pop up tour if user is 2fa blocked at login\n this.props.getUserPreferences()\n .then(() => {\n // don't show a tour if mobile\n if (isMobile) {\n this.setState({ showTour: false });\n }\n else {\n this.setState({ showTour: this.props.tourPreference.Value });\n }\n });\n }\n }\n\n render() {\n const { activeStep, isSmallScreen, neverShowAgain, showTour, steps } = this.state;\n const { classes, text: { AppTour } } = this.props;\n\n return (\n <>\n {showTour && (\n <>\n
\n {/* circle around navigation icon */}\n
menu
\n\n {/* circle around notifications icon */}\n
notifications
\n
\n\n \n {steps[activeStep]}\n\n \n {this.dialogContentRender()}\n \n\n \n
\n \n {activeStep !== 0 && keyboard_arrow_left}\n {activeStep !== 0 && AppTour.btn_back}\n \n }\n classes={{ root: classes.stepperRoot }}\n nextButton={\n \n {activeStep === steps.length - 1 ? AppTour.btn_finish : AppTour.btn_next}\n keyboard_arrow_right\n \n }\n position='static'\n steps={steps.length}\n variant='dots'\n />\n
\n\n
\n \n\n \n {AppTour.btn_skip}\n \n
\n\n
\n \n \n )}\n \n );\n }\n}\n\n\nexport default withRouter(withStyles(muiStyles)(connect(select, {\n getUserPreferences,\n saveUserPreferences,\n})(sizify(LanguageHOC(AppTour)))));","/*\n*\n* FormWrapper Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { My529Logo } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nexport function FormWrapper({ children }) {\n return (\n
\n
\n
\n \n \n \n {children}\n
\n
\n
\n );\n}\n\nFormWrapper.propTypes = {\n children: PropTypes.node,\n};\n\nexport default LanguageHOC(FormWrapper);","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.module.scss';\n\nconst createMarkup = (body) => {\n return { __html: body };\n};\n\n// this will have a alternate text input for new api messages and the old way just passing children\n\nexport function Banner(props) {\n if (props.show)\n return (\n
\n
\n {props.body\n ?\n
\n :\n props.children\n }\n
\n
\n );\n else\n return null;\n}\n\nBanner.propTypes = {\n show: PropTypes.bool.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n body: PropTypes.string,\n};\n\nexport default Banner;\n","export function getRegisteredDevice() {\n const allCookies = document.cookie.split(';');\n const devicePair = allCookies.find(crumb => crumb.includes('device'));\n return devicePair ? devicePair.substr(devicePair.indexOf('=') + 1, devicePair.length) : '';\n}\n\nexport function setRegisteredDevice(GUID, currentDateFromApi, cookieExpirationInDaysFromApi) {\n const newDate = new Date(currentDateFromApi);\n newDate.setDate(newDate.getDate() + cookieExpirationInDaysFromApi);\n const expiration = newDate.toUTCString(); // per w3 cookie rules\n const hostName = document.location.hostname;\n hostName === 'localhost' \n ? document.cookie = `device=${GUID}; expires=${expiration}; path=/; SameSite=Strict;` // local DEV\n : document.cookie = `device=${GUID}; expires=${expiration}; path=/; domain=my529.org; SameSite=Strict;`;\n}","/*\n*\n* Login Component\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\nimport parse from 'html-react-parser';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n Divider,\n TextField,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n StyledLink,\n allNotificationsHide,\n notificationShow,\n PasswordInput,\n} from '@frontend/common';\n\nimport FormWrapper from '../FormWrapper';\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport { GETRecaptchaToken } from 'utils/helpers/api_handler';\nimport { getRegisteredDevice } from 'utils/helpers/registered_device_handler';\nimport { userLogin, verifyRecaptcha } from 'components/AppRoot/Navigation/actions';\nimport { getThreatMetrixVars } from 'components/AppRoot/StaticResources/actions.js';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n recaptchaToken: state.session.userDetails.recaptchaToken,\n recaptchaVerified: state.session.userDetails.recaptchaVerified,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n threatMetrixVars: state.static.threatMetrixVars,\n loadingPublicVars: state.static.loadingPublicVars,\n webMessages: state.static.webMessages,\n});\n\nexport class Login extends Component {\n\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n getThreatMetrixVars: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n recaptchaToken: PropTypes.string.isRequired,\n recaptchaVerified: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Login: PropTypes.shape({\n btn_create_account: PropTypes.string,\n btn_fa_login_link: PropTypes.string,\n btn_login: PropTypes.string,\n err_password: PropTypes.string,\n password_length: PropTypes.string,\n err_username: PropTypes.string,\n username_length: PropTypes.string,\n lbl_password: PropTypes.string,\n lbl_username: PropTypes.string,\n msg_recaptcha_language: PropTypes.string,\n nav_password: PropTypes.string,\n nav_username: PropTypes.string,\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n ForgotPassword: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n ForgotUsername: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n Register: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n SetupUser: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n }).isRequired,\n threatMetrixVars: PropTypes.shape({\n SessionId: PropTypes.string,\n ThreatMetrixUrl: PropTypes.string,\n }).isRequired,\n userLogin: PropTypes.func.isRequired,\n verifyRecaptcha: PropTypes.func.isRequired,\n loadingPublicVars: PropTypes.bool.isRequired,\n };\n\n state = {\n username: '',\n password: '',\n formErrors: {},\n loading: false,\n canContinue: false,\n };\n\n /*\n Once this script tag is added, at login the same SessionId\n found in this ThreatMetrixUrl user here is sent with the\n Username and Password at login. Nothing else is needed from\n the client, the rest is managed between our API and TMX API.\n */\n createThreatMetrixTag() {\n // If logging in/out in same browser tab b/w different users, TMX will throw an error about too many calls, but Joel confirmed TMX is logging correctly\n const tmxScript = document.createElement('script');\n tmxScript.setAttribute('type', 'text/javascript');\n tmxScript.setAttribute('src', this.props.threatMetrixVars.ThreatMetrixUrl);\n tmxScript.setAttribute('id', 'tmxScript');\n document.head.appendChild(tmxScript);\n }\n\n threatMetrixPreCheck = (e) => { // gets a TMX session ID before submitting form\n e.preventDefault();\n\n if (!this.props.threatMetrixVars.SessionId) {\n this.setState({ loading: true });\n\n this.props.getThreatMetrixVars()\n .then(() => {\n this.createThreatMetrixTag();\n this.onFormSubmit();\n })\n .catch(() => this.onFormSubmit()); // in the event of a catch, log user in with an empty SessionId, and do not set the script\n }\n else {\n this.onFormSubmit();\n }\n }\n\n formValidate = () => {\n let formErrors = {};\n\n if (!this.state.username) {\n formErrors.username = this.props.text.Login.err_username;\n }\n\n if (!this.state.password) {\n formErrors.password = this.props.text.Login.err_password;\n }\n\n if (this.state.username && this.state.password) {\n formErrors = {};\n }\n\n if (this.state.password.length > 40) {\n formErrors.password = this.props.text.Login.password_length;\n }\n\n if (this.state.username.length > 128) {\n formErrors.username = this.props.text.Login.username_length;\n }\n\n const isValid = Object.keys(formErrors).length === 0;\n\n this.setState({\n formErrors,\n loading: isValid, // this is to stop loading on the TMX api call if there are form errors\n });\n\n return isValid;\n }\n\n onFormSubmit = () => {\n this.props.allNotificationsHide();\n\n if (this.formValidate()) {\n document.getElementById('loginUsername').blur();\n document.getElementById('loginPassword').blur();\n const deviceGUID = getRegisteredDevice();\n\n const params = {\n username: this.state.username,\n password: this.state.password,\n SessionId: this.props.threatMetrixVars.SessionId, // GUID for ThreatMetrix\n devicetoken: deviceGUID\n };\n\n this.setState({ loading: true });\n\n this.props.userLogin(params)\n .then(() => {\n try {\n document.cookie = 'closeAcct=true';\n window.QSI.API.run(); // stimulate Targeting.php\n window.QSI.API.unload();\n window.QSI.API.load();\n window.QSI.API.run(); // stimulate Targeting.php\n }\n catch (error) {\n // return null;\n }\n })\n .catch((response) => {\n let password = '';\n let username = '';\n\n if (response.payload.data.length > 0) {\n response.payload.data.forEach(element => {\n if (element.Field === 'password') {\n password = element.Message;\n }\n if (element.Field === 'username') {\n username = element.Message;\n }\n });\n }\n \n this.setState({ loading: false, formErrors: { password, username } });\n });\n }\n }\n\n onInputChange = (inputName, value) => {\n const clonedErrors = cloneDeep(this.state.formErrors);\n\n if (value.length > 0 && this.state.formErrors[inputName]) {\n clonedErrors[inputName] = '';\n }\n\n this.setState({\n [inputName]: value,\n formErrors: clonedErrors,\n });\n }\n\n recaptchaVerify = () => {\n this.setState({ loading: true });\n GETRecaptchaToken('login')\n .then(token => {\n if (token !== this.props.recaptchaToken) {\n return this.props.verifyRecaptcha(token) // need to return so it is caught in parent's finally\n .then((response) => {\n if (!this.props.recaptchaVerified) {\n const warningMessage = response.payload.data['error-codes'][0];\n this.setState({ canContinue: true });\n this.props.notificationShow(warningMessage, 'warning');\n }\n });\n }\n })\n .finally(() => this.setState({ loading: false }));\n }\n\n componentDidMount() {\n this.recaptchaVerify();\n }\n\n render() {\n const { formErrors, loading, canContinue, } = this.state;\n const {\n loadingPublicVars,\n webMessages,\n text: {\n Login: {\n nav_password, nav_username, lbl_password, btn_create_account, btn_fa_login_link,\n btn_login, nav_title, lbl_username, msg_recaptcha_language,\n },\n },\n } = this.props;\n const forgotUsername = {nav_username};\n const forgotPassword = {nav_password};\n\n return (\n
\n \n \n \n \n this.onInputChange('username', e.target.value)}\n value={this.state.username}\n variant='filled'\n />\n this.onInputChange('password', e.target.value)}\n value={this.state.password}\n variant='filled'\n />\n
\n \n {btn_login}\n \n
\n\n
\n I forgot my {forgotUsername} or {forgotPassword}\n
\n\n
\n
\n
or
\n
\n
\n \n
\n this.props.history.push(this.props.text.Register.nav_path)}\n >\n {btn_create_account}\n \n
\n
\n \n
\n \n
\n \n\n
{/* This reCAPTCHA text is required since we are hiding the badge on all pages */}\n

{parse(msg_recaptcha_language)}

\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n allNotificationsHide,\n getThreatMetrixVars,\n notificationShow,\n userLogin,\n verifyRecaptcha,\n})(LanguageHOC(Login)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport parse from 'html-react-parser';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\nimport FormWrapper from '../FormWrapper';\nimport {\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\n\nimport { GETRecaptchaToken } from 'utils/helpers/api_handler';\nimport { verifyRecaptcha } from 'components/AppRoot/Navigation/actions';\nimport { forgotPassword } from 'components/Features/public/ForgotPassword/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n recaptchaToken: state.session.userDetails.recaptchaToken,\n recaptchaVerified: state.session.userDetails.recaptchaVerified,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\nexport class ForgotPassword extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n forgotPassword: PropTypes.func.isRequired,\n verifyRecaptcha: PropTypes.func.isRequired,\n recaptchaToken: PropTypes.string.isRequired,\n recaptchaVerified: PropTypes.bool.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ForgotPassword: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_submit: PropTypes.string,\n err_username: PropTypes.string,\n msg_recaptcha_language: PropTypes.string,\n msg_success: PropTypes.string,\n nav_title: PropTypes.string,\n text_instructions: PropTypes.func,\n text_username: PropTypes.string,\n }),\n Login: PropTypes.shape({\n nav_path: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n loading: false,\n username: '',\n inputError: '',\n canContinue: false\n };\n\n formValidate = () => {\n let formIsValid = false;\n let inputError = '';\n\n if (this.state.username.length < 1) {\n inputError = this.props.text.ForgotPassword.err_username;\n }\n else {\n formIsValid = true;\n }\n\n this.setState({\n inputError,\n });\n\n return formIsValid;\n };\n\n onFormSubmit = (e) => {\n e.preventDefault();\n\n if (this.formValidate()) {\n this.setState({ loading: true });\n this.props.forgotPassword({ login: this.state.username })\n .then(() => {\n this.props.history.push(this.props.text.Login.nav_path);\n this.props.notificationShow(this.props.text.ForgotPassword.msg_success, 'success');\n })\n .catch(() => this.setState({ loading: false }));\n }\n };\n\n recaptchaVerify = () => {\n GETRecaptchaToken('forgotpassword')\n .then(token => {\n if (token !== this.props.recaptchaToken) {\n this.props.verifyRecaptcha(token)\n .then((response) => {\n if (!this.props.recaptchaVerified) {\n const warningMessage = response.payload.data['error-codes'][0];\n this.setState({ canContinue: true });\n this.props.notificationShow(warningMessage, 'warning');\n }\n });\n }\n });\n }\n\n componentDidMount() {\n this.recaptchaVerify();\n }\n\n render() {\n const { \n btn_cancel, btn_submit, nav_title, text_instructions, \n text_username, msg_recaptcha_language\n } = this.props.text.ForgotPassword;\n const { loading, canContinue, inputError, username } = this.state;\n return (\n \n \n \n

{text_instructions(this.props.supportNumber)}

\n this.setState({ username: e.target.value, inputError: '' })}\n value={username}\n label={text_username}\n fullWidth\n autoFocus\n disabled={loading}\n error={Boolean(inputError)}\n helperText={inputError}\n variant='filled'\n />\n
\n this.props.history.goBack()}\n disabled={loading}\n >\n {btn_cancel}\n \n \n \n {btn_submit}\n \n \n
\n \n
\n\n
{/* This reCAPTCHA text is required since we are hiding the badge on all pages */}\n

{parse(msg_recaptcha_language)}

\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n notificationShow,\n forgotPassword,\n verifyRecaptcha\n})(LanguageHOC(ForgotPassword)));","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n PASSWORD_FORGOT,\n} from './constants';\n\n\nexport function forgotPassword(params) {\n const response = POSTrequest('/authentication/forgotpassword', params);\n return {\n type: PASSWORD_FORGOT,\n payload: response\n };\n}","export const PASSWORD_FORGOT = 'app/Features/public/ForgotPassword/PASSWORD_FORGOT';","/*\n*\n* FormWrapper Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { connect } from 'react-redux';\nimport parse from 'html-react-parser';\nimport { withRouter } from 'react-router-dom';\n\nimport {\n My529Logo,\n Dropdown,\n} from '@frontend/common';\n\nimport { setGetRegistrationType } from '../actions';\n\nimport styles from './styles.module.scss';\n\nimport { REGISTRATION_TYPES } from '../constants';\n\nconst select = (state) => ({\n registrationType: state.registrationtype.registrationType,\n documents: state.static.documents,\n});\n\nexport class FormWrapper extends React.Component {\n static propTypes = {\n setGetRegistrationType: PropTypes.func.isRequired,\n registrationType: PropTypes.string.isRequired,\n children: PropTypes.node,\n documents: PropTypes.shape({\n form102: PropTypes.shape({ Location: PropTypes.string }),\n form104: PropTypes.shape({ Location: PropTypes.string }),\n form500: PropTypes.shape({ Location: PropTypes.string }),\n }).isRequired,\n text: PropTypes.shape({\n Register: PropTypes.shape({\n dropdown_label: PropTypes.string,\n head_other_account: PropTypes.string,\n head_other_account_by_form: PropTypes.string,\n msg_recaptcha_language: PropTypes.string,\n text_about_form104: PropTypes.string,\n text_about_institutional_account: PropTypes.string,\n text_about_intl_number: PropTypes.string,\n text_about_other_account: PropTypes.object,\n text_about_ugma_utma_account: PropTypes.string,\n text_form104: PropTypes.string,\n text_form500: PropTypes.string,\n text_institutional_account: PropTypes.string,\n text_intl_number: PropTypes.string,\n text_ugma_utma_account: PropTypes.string,\n nav_path: PropTypes.string,\n text_i_am_new_to_my529: PropTypes.string,\n text_i_have_accounts_with_529: PropTypes.string,\n text_account_types_requirement: PropTypes.string,\n }),\n SetupUser: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }),\n };\n\n dropdownOptions = [\n {\n value: REGISTRATION_TYPES.I_AM_NEW_TO_MY529,\n display: this.props.text.Register.text_i_am_new_to_my529,\n },\n {\n value: REGISTRATION_TYPES.I_HAVE_ACCOUNTS_WITH_MY529,\n display: this.props.text.Register.text_i_have_accounts_with_529,\n },\n ];\n\n onChangeHandle = (registrationType) => {\n this.props.setGetRegistrationType(registrationType);\n\n if (registrationType === REGISTRATION_TYPES.I_HAVE_ACCOUNTS_WITH_MY529)\n this.props.history.push(this.props.text.SetupUser.nav_path);\n else\n this.props.history.push(this.props.text.Register.nav_path);\n }\n\n render() {\n const {\n children,\n documents,\n text: { Register },\n registrationType\n } = this.props;\n\n return (\n
\n
\n
\n
\n \n \n \n
\n

{Register.head_other_account}

\n\n

{Register.text_about_other_account}

\n
\n
\n\n
\n \n
\n\n
\n {children}\n
\n\n
\n

{Register.head_other_account_by_form}

\n\n

{Register.text_account_types_requirement}

\n

{Register.text_institutional_account} - {Register.text_about_institutional_account}

\n {Register.text_form104}\n\n

{Register.text_ugma_utma_account} - {Register.text_about_ugma_utma_account}

\n {Register.text_about_form104}\n\n

{Register.text_intl_number}

\n

{Register.text_about_intl_number}

\n {Register.text_form500}\n
\n\n\n
{/* This reCAPTCHA text is required since we are hiding the badge on all pages */}\n

{parse(Register.msg_recaptcha_language)}

\n
\n
\n
\n
\n );\n }\n\n}\n\nexport default withRouter(connect(select, {\n setGetRegistrationType\n})(LanguageHOC(FormWrapper)));","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n AGENT_SEARCH,\n AGENT_UPDATE,\n REGISTRATION_TYPE,\n} from './constants';\n\n\nexport function agentSearch(params) {\n const payload = POSTrequest('/UserRegistration/AgentExists', params);\n return {\n type: AGENT_SEARCH,\n payload,\n };\n}\n\nexport function agentUpdate(params) {\n const payload = POSTrequest('/UserRegistration/Register', params);\n return {\n type: AGENT_UPDATE,\n payload,\n };\n}\n\nexport function setGetRegistrationType(registrationType) {\n return {\n type: REGISTRATION_TYPE,\n payload: registrationType,\n };\n}","import dayjs from 'dayjs';\nimport * as English from 'utils/translations/common.js';\n\n/* Validations in this file (to prevent duplication)\n accountOwnerBirthdateValidator\n beneficiaryBirthdateValidator\n calendarValidator\n cityValidator\n emailValidator\n firstNameValidator\n lastNameValidator\n middleNameValidator\n phoneNumValidator\n postalCodeValidator\n socialSecurityNumValidator\n stateValidator\n street1Validator\n userNameValidator\n alphaNumericOnlyValidator\n schoolAttnValidator\n*/\n\n// TODO When these move to Common we'll need to add the translations there. This will currently hard code English in.\nexport function firstNameValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n if (value.length > 20) {\n return English.errors.field_max_length_20;\n }\n return '';\n}\n\nexport function middleNameValidator(value) {\n if (value.length > 20) {\n return English.errors.field_max_length_20;\n }\n return '';\n}\n\nexport function lastNameValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n if (value.length > 40) {\n return English.errors.field_max_length_40;\n }\n return '';\n}\n\nexport function socialSecurityNumValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n if (value.length < 9 || value.length > 9) {\n return English.errors.ssn_length;\n }\n return '';\n}\n\nexport function phoneNumValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n if (value.length < 10) {\n return English.errors.phone_number_too_short;\n }\n return '';\n}\n\nexport function street1Validator(value) {\n const street1Regex = /^[A-Za-z0-9 .,':#/-]+$/g; // eslint-disable-line no-useless-escape\n if (!value) {\n return English.errors.required;\n }\n if (!street1Regex.test(value)) {\n return English.errors.alpha_numeric_and_allowable_characters_only(\". , - ' : # /\"); // eslint-disable-line\n }\n if (value.length > 40) {\n return English.errors.field_max_length_40;\n }\n return '';\n}\n\nexport function cityValidator(value) {\n const cityRegex = /^[A-Za-z .,'-]+$/g; // eslint-disable-line no-useless-escape\n if (!value) {\n return English.errors.required;\n }\n if (!cityRegex.test(value)) {\n return English.errors.alphabetic_and_allowable_characters_only(\". , - '\"); // eslint-disable-line\n }\n return '';\n}\n\nexport function stateValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n return '';\n}\n\nexport function postalCodeValidator(value) {\n const postalCodeRegex = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)|(^\\d{9}$)|(^\\d{5} \\d{4}$)/;\n if (!value) {\n return English.errors.required;\n }\n if (!value.match(postalCodeRegex)) {\n return English.errors.postal_code_reqs;\n }\n return '';\n}\n\nexport function accountOwnerBirthdateValidator(value, minAge, maxAge) {\n if (!value) {\n return English.errors.required;\n }\n\n value = dayjs(value); // converts date to momentjs just in case it doesn't come in that way\n\n if (!dayjs(value).isValid()) {\n return English.errors.date_invalid;\n }\n\n else if (dayjs(value).isBefore(dayjs().subtract(maxAge, 'year')) ||\n dayjs(value).isAfter(dayjs().subtract(minAge, 'year'))\n ) {\n return English.errors.age_limits(minAge, maxAge);\n }\n\n return '';\n}\n\nexport function beneficiaryBirthdateValidator(value, maxAge) {\n const minAge = 0;\n\n if (!value) {\n return English.errors.required;\n }\n\n value = dayjs(value); // converts date to momentjs just in case it doesn't come in that way\n\n if (!dayjs(value).isValid()) {\n return English.errors.date_invalid;\n }\n else if (dayjs(value).isBefore(dayjs().subtract(maxAge, 'year')) ||\n dayjs(value).isAfter(dayjs().subtract(minAge, 'year'))\n ) {\n return English.errors.age_limits(minAge, maxAge);\n }\n return '';\n}\n\nexport function beneficiaryRelationshipValidator(value) {\n if (!value) {\n return English.errors.required;\n }\n return '';\n}\n\nexport function calendarValidator(value, minDate, maxDate) {\n if (!value) {\n return English.errors.required;\n }\n\n value = dayjs(value); // converts date to momentjs just in case it doesn't come in that way\n if (!dayjs(value).isValid()) {\n return English.errors.date_invalid;\n }\n else if (minDate && maxDate && (dayjs(value).isAfter(dayjs(maxDate), 'day') || dayjs(value).isBefore(dayjs(minDate), 'day'))) {\n return English.errors.date_limits(dayjs(minDate).format('MM/DD/YYYY'), dayjs(maxDate).format('MM/DD/YYYY'));\n }\n return '';\n}\n\nexport function amountValidator(value, minAmount, maxAmount) {\n if (!value) {\n return English.errors.amount_invalid;\n }\n else if (minAmount && maxAmount && (value > maxAmount || value < minAmount)) {\n return English.errors.amount_invalid;\n }\n return '';\n}\n\nexport function userNameValidator(userName) {\n if (!userName) {\n return English.errors.required;\n }\n if (userName.length > 0 && userName.length < 6) {\n return English.errors.username_min_length;\n }\n if (userName.length > 40) {\n return English.errors.field_max_length_40;\n }\n if (userName.match(/\\d\\d\\d\\d/)) { // username cannot contain more than 3 numbers in a row\n return English.errors.username_with_numbers;\n }\n if (userName.match(/^\\s+|\\s+$/)) {\n return English.errors.no_trailing_leading_spaces; // no leading or trailing spaces\n }\n return '';\n}\n\nexport function emailValidator(email) {\n const emailRegex = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/; // eslint-disable-line no-useless-escape\n if (!email) {\n return English.errors.required;\n }\n if (email.match(/\\s+/)) {\n return English.errors.no_spaces_anywhere; // no spaces anywhere\n }\n if (!emailRegex.test(email)) {\n return English.errors.email_invalid;\n }\n return '';\n}\n\nexport function alphaNumericOnlyValidator(str) {\n const nonAlphanumericCharsRegex = /[^0-9a-zA-Z ]/g;\n\n if (nonAlphanumericCharsRegex.test(str)) {\n return English.errors.alpha_numeric_only;\n }\n return '';\n}\n\nexport function schoolAttnValidator(str) {\n const nonAllowableCharsRegex = /[^0-9a-zA-Z \"\"&.,':#/-]/g;\n\n if (nonAllowableCharsRegex.test(str)) {\n return English.errors.alpha_numeric_and_allowable_characters_only(\". , ' / \\\" : & # -\"); // eslint-disable-line\n }\n else if (str.length > 40) {\n return English.errors.field_max_length_40;\n }\n return '';\n}","/*\n*\n* Register Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n registerUser,\n verifyRecaptcha,\n} from 'components/AppRoot/Navigation/actions';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\nimport { GETRecaptchaToken } from 'utils/helpers/api_handler';\nimport FormWrapper from '../FormWrapper';\n\nimport { REGISTRATION_TYPES } from '../constants';\n\nimport {\n allNotificationsHide,\n Checkbox,\n LoadingOverlay,\n Modal,\n notificationShow,\n PasswordInput,\n PasswordRequirements,\n} from '@frontend/common';\n\nimport { emailValidator } from 'utils/helpers/form_validation';\n\nimport {\n Button,\n Accordion,\n FormHelperText,\n TextField,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\n// When the user clicks on the button, scroll to the top of the document\nconst scrollToTop = () => {\n document.body.scrollTop = 0; // For Safari\n document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera\n};\n\nconst select = (state) => ({\n registrationType: state.registrationtype.registrationType,\n passwordRequirements: state.static.passwordRequirements,\n recaptchaToken: state.session.userDetails.recaptchaToken,\n recaptchaVerified: state.session.userDetails.recaptchaVerified,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\nexport class Register extends React.Component {\n static propTypes = {\n registrationType: PropTypes.string.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n recaptchaToken: PropTypes.string.isRequired,\n recaptchaVerified: PropTypes.bool.isRequired,\n registerUser: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Login: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n Register: PropTypes.shape({\n btn_register: PropTypes.string,\n btn_start_registration: PropTypes.string,\n err_max_length_20: PropTypes.string,\n err_max_length_40: PropTypes.string,\n err_password_criteria: PropTypes.string,\n err_password_match: PropTypes.string,\n err_required_field: PropTypes.string,\n err_terms_agree: PropTypes.string,\n err_username_cannot_match_pass: PropTypes.string,\n err_username_max_length: PropTypes.string,\n err_username_min_length: PropTypes.string,\n err_username_spaces: PropTypes.string,\n err_username_with_numbers: PropTypes.string,\n err_valid_email: PropTypes.string,\n head_individual_account: PropTypes.string,\n head_terms: PropTypes.string,\n lbl_email: PropTypes.string,\n lbl_firstName: PropTypes.string,\n lbl_lastName: PropTypes.string,\n lbl_password1: PropTypes.string,\n lbl_password2: PropTypes.string,\n lbl_username: PropTypes.string,\n nav_path: PropTypes.string,\n text_about_individual_account: PropTypes.string,\n text_about_institutional_account: PropTypes.string,\n text_already_have_account: PropTypes.string,\n text_i_agree: PropTypes.string,\n text_read_terms: PropTypes.string,\n text_setup_online_access: PropTypes.string,\n text_setup_user: PropTypes.string,\n text_terms_bullets: PropTypes.array,\n text_menu_1: PropTypes.string,\n text_menu_2: PropTypes.string,\n text_never_opened_account: PropTypes.string,\n }),\n ResendEmail: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n SetupUser: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n verifyRecaptcha: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n formErrors: {},\n loading: false,\n passwordIsValid: false,\n passwordReqsVisible: false,\n registrationInfo: {\n email: '',\n firstName: '',\n lastName: '',\n password1: '',\n password2: '',\n username: '',\n },\n termsChecked: false,\n termsModalOpen: false,\n };\n\n formValidate = () => {\n const formErrors = {};\n const { apiErrors, passwordIsValid, registrationInfo: { email, firstName, lastName, password1, password2, username }, termsChecked } = this.state;\n const { Register } = this.props.text;\n\n // Username validation\n if (username.match(/^\\s+|\\s+$/)) {\n formErrors.username = Register.err_username_spaces;\n }\n if (username.match(/\\d\\d\\d\\d/)) {\n formErrors.username = Register.err_username_with_numbers;\n }\n if (username === password1) {\n formErrors.username = Register.err_username_cannot_match_pass;\n }\n if (!username) {\n formErrors.username = Register.err_required_field;\n }\n if (username.length > 40) {\n formErrors.username = Register.err_max_length_40;\n }\n if (username.length < 6) {\n formErrors.username = Register.err_username_min_length;\n }\n // First and last name validation\n if (!firstName) {\n formErrors.firstName = Register.err_required_field;\n }\n if (firstName.length >= 20) {\n formErrors.firstName = Register.err_max_length_20;\n }\n if (!lastName) {\n formErrors.lastName = Register.err_required_field;\n }\n if (lastName.length >= 40) {\n formErrors.lastName = Register.err_max_length_40;\n }\n // Email validation\n if (!email) {\n formErrors.email = Register.err_required_field;\n }\n const emailError = emailValidator(email);\n if (email && emailError) {\n formErrors.email = emailError;\n }\n // Password validation\n if (!passwordIsValid) {\n formErrors.password1 = Register.err_password_criteria;\n }\n if (!password1) {\n formErrors.password1 = Register.err_required_field;\n }\n if (!password2) {\n formErrors.password2 = Register.err_required_field;\n }\n if (password1 !== password2) {\n formErrors.password2 = Register.err_password_match;\n }\n // Terms are checked\n if (!termsChecked) {\n formErrors.terms = Register.err_terms_agree;\n }\n // API errors\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'EmailAddress') {\n formErrors.email = error.Message;\n }\n if (error.Field === 'FirstName') {\n formErrors.firstName = error.Message;\n }\n if (error.Field === 'LastName') {\n formErrors.lastName = error.Message;\n }\n if (error.Field === 'PasswordOne') {\n formErrors.password1 = error.Message;\n }\n if (error.Field === 'PasswordTwo') {\n formErrors.password2 = error.Message;\n }\n if (error.Field === 'UserName' || error.Field === 'Username') {\n formErrors.username = error.Message;\n }\n });\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return Object.keys(formErrors).length === 0; // returns True or False whether form is valid\n }\n\n onFormSubmit = e => {\n e.preventDefault();\n\n if (this.formValidate()) {\n this.setState({ loading: true });\n const { registrationInfo } = this.state;\n\n const apiRegistrationInfo = {\n EmailAddress: registrationInfo.email,\n FirstName: registrationInfo.firstName,\n LastName: registrationInfo.lastName,\n PasswordOne: registrationInfo.password1,\n PasswordTwo: registrationInfo.password2,\n UserName: registrationInfo.username,\n };\n\n this.props.registerUser(apiRegistrationInfo)\n .then(() => {\n this.setState({ loading: false });\n this.props.history.push(this.props.text.ResendEmail.nav_path);\n })\n .catch(errors => {\n this.setState({\n apiErrors: errors.payload.data,\n loading: false\n }, () => this.formValidate());\n });\n }\n }\n\n onInputChange = e => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n [e.target.name]: ''\n },\n registrationInfo: {\n ...this.state.registrationInfo,\n [e.target.name]: e.target.value,\n }\n });\n }\n\n onTermsCheck = () => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n terms: !this.state.termsChecked ? '' : this.state.formErrors.terms // termsChecked isn't set to true yet, so we need to check that termsChecked is false to clear the error.\n },\n termsChecked: !this.state.termsChecked\n });\n }\n\n recaptchaVerify = () => {\n GETRecaptchaToken('register')\n .then(token => {\n if (token !== this.props.recaptchaToken) {\n this.props.verifyRecaptcha(token)\n .then((response) => {\n if (!this.props.recaptchaVerified) {\n const warningMessage = response.payload.data['error-codes'][0];\n this.props.notificationShow(warningMessage, 'warning');\n }\n });\n }\n });\n }\n\n handleMenuClick = (event) => {\n this.setState({ menuOpen: event.currentTarget });\n };\n\n componentDidMount() {\n scrollToTop();\n if (this.props.passwordRequirements.length === 0) {\n this.props.passwordRequirementsGet();\n }\n this.props.allNotificationsHide();\n this.recaptchaVerify();\n }\n\n render() {\n const { \n passwordRequirements, \n recaptchaVerified, \n registrationType,\n text: { Register } \n } = this.props;\n\n const { \n formErrors, \n loading, \n passwordReqsVisible, \n registrationInfo,\n termsChecked, \n termsModalOpen, \n } = this.state;\n\n return (\n <>\n {loading ?\n \n :\n \n {registrationType === REGISTRATION_TYPES.I_AM_NEW_TO_MY529 &&\n <>\n
\n {Register.text_never_opened_account}\n
\n
\n \n \n \n \n\n this.setState({ passwordReqsVisible: false })}\n onChange={this.onInputChange}\n onFocus={() => this.setState({ passwordReqsVisible: true })}\n value={registrationInfo.password1}\n />\n\n
\n \n \n
\n this.setState({ passwordIsValid })}\n />\n
\n \n
\n\n
\n this.setState({ termsModalOpen: true })}\n >\n {Register.text_read_terms}\n \n \n {formErrors.terms && {formErrors.terms}}\n
\n\n
\n
\n \n {Register.btn_register}\n \n
\n
\n \n \n }\n
\n }\n\n this.setState({ termsModalOpen: false })}\n show={termsModalOpen}\n title={Register.head_terms}\n >\n
    {Register.text_terms_bullets.map(bull =>
  • {bull}
  • )}
{/** TODO hook up the email once it is returned as env var */}\n \n \n );\n }\n}\n\n\nexport default withRouter((connect(select, {\n allNotificationsHide,\n notificationShow,\n passwordRequirementsGet,\n registerUser,\n verifyRecaptcha,\n})(LanguageHOC(Register))));\n","/*\n*\n* ResendEmail Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { resendEmail } from 'components/AppRoot/Navigation/actions';\nimport FormWrapper from '../FormWrapper';\nimport { Button } from '@mui/material';\nimport { notificationShow } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n registrationInfo: state.session.registrationInfo,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\n\nexport class ResendEmail extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n registrationInfo: PropTypes.object.isRequired,\n resendEmail: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Home: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n ResendEmail: PropTypes.shape({\n btn_resend_email: PropTypes.string,\n head_confirm_email: PropTypes.string,\n msg_email_resent: PropTypes.string,\n text_check_inbox: PropTypes.string,\n text_support_phone: PropTypes.func,\n }),\n }).isRequired,\n };\n\n emailResend = () => {\n const { registrationInfo, text: { ResendEmail } } = this.props;\n if (registrationInfo.ExternalUserId && registrationInfo.UserId) {\n this.props.resendEmail(registrationInfo)\n .then(() => {\n this.props.notificationShow(ResendEmail.msg_email_resent, 'success');\n });\n }\n }\n\n componentDidMount() {\n const { ExternalUserId, UserId } = this.props.registrationInfo;\n if (!ExternalUserId && !UserId) {\n this.props.history.push(this.props.text.Home.nav_path);\n }\n }\n\n render() {\n const { supportNumber, text: { ResendEmail } } = this.props;\n return (\n
\n \n

{ResendEmail.head_confirm_email}

\n

{ResendEmail.text_check_inbox}

\n
\n \n {ResendEmail.btn_resend_email}\n \n
\n

{ResendEmail.text_support_phone(supportNumber)}

\n
\n
\n );\n }\n}\n\n\nexport default connect(select, {\n notificationShow,\n resendEmail\n})(LanguageHOC(ResendEmail));\n\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport qs from 'qs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n} from '@mui/material';\nimport FormWrapper from '../FormWrapper';\nimport {\n LoadingOverlay,\n PasswordRequirements,\n notificationShow,\n PasswordInput,\n} from '@frontend/common';\n\nimport { resetPassword } from 'components/Features/public/ResetPassword/actions';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\n\nimport styles from './styles.module.scss';\n\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n});\n\nexport class ResetPassword extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n resetPassword: PropTypes.func.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n location: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Login: PropTypes.shape({ nav_path: PropTypes.string }),\n ResetPassword: PropTypes.shape({\n btn_submit: PropTypes.string,\n err_confirm_password: PropTypes.string,\n err_password_criteria: PropTypes.string,\n err_password_match: PropTypes.string,\n err_password_required: PropTypes.string,\n head_title: PropTypes.string,\n msg_password_changed: PropTypes.string,\n text_confirm_password: PropTypes.string,\n text_new_password: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n loading: false,\n password: '',\n passwordConfirmation: '',\n formErrors: {},\n apiErrors: [],\n passwordPassesValidation: false,\n };\n\n formValidate() {\n const formErrors = {};\n const { err_confirm_password, err_password_criteria, err_password_match, err_password_required, } = this.props.text.ResetPassword;\n const { apiErrors } = this.state;\n\n if (!this.state.password) {\n formErrors.password = err_password_required;\n }\n\n if (!this.state.passwordConfirmation) {\n formErrors.passwordConfirmation = err_confirm_password;\n }\n\n if (this.state.passwordConfirmation && this.state.password !== this.state.passwordConfirmation) {\n formErrors.passwordConfirmation = err_password_match;\n }\n if (this.state.password && !this.state.passwordPassesValidation) {\n formErrors.password = err_password_criteria;\n }\n\n if (apiErrors.length > 0) {\n // this is assuming that api Field properties would not change!\n apiErrors.forEach(error => {\n if (error.Field === 'password1') {\n formErrors.password = error.Message;\n }\n else if (error.Field === 'password2') {\n formErrors.passwordConfirmation = error.Message;\n }\n });\n }\n\n this.setState({\n formErrors,\n apiErrors: []\n });\n\n return Object.keys(formErrors).length === 0;\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n if (this.formValidate()) {\n document.getElementById('password').blur();\n document.getElementById('passwordConfirm').blur();\n\n const postData = {\n id: qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).request,\n password1: this.state.password,\n password2: this.state.passwordConfirmation,\n };\n\n this.setState({ loading: true });\n this.props.resetPassword(postData)\n .then(() => {\n this.props.history.push(this.props.text.Login.nav_path);\n this.props.notificationShow(this.props.text.ResetPassword.msg_password_changed, 'success');\n })\n .catch(response => this.setState({\n apiErrors: response.payload.data,\n loading: false\n }, () => this.formValidate()));\n }\n };\n\n onInputChange = (inputName, value) => {\n this.setState({\n [inputName]: value,\n formErrors: {\n ...this.state.formErrors,\n [inputName]: '',\n }\n });\n };\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.setState({ loading: true });\n if (this.props.passwordRequirements.length === 0) {\n this.props.passwordRequirementsGet()\n .finally(() => this.setState({ loading: false }));\n }\n }\n }\n\n render() {\n const { btn_submit, head_title, text_confirm_password, text_new_password, } = this.props.text.ResetPassword;\n\n return (\n \n \n \n this.onInputChange('password', e.target.value)}\n label={text_new_password}\n errorText={this.state.formErrors.password}\n fullWidth\n disabled={this.state.loading}\n autoComplete='new-password'\n variant='filled'\n />\n this.onInputChange('passwordConfirmation', e.target.value)}\n label={text_confirm_password}\n errorText={this.state.formErrors.passwordConfirmation}\n fullWidth\n disabled={this.state.loading}\n autoComplete='new-password'\n variant='filled'\n />\n
\n this.setState({ passwordPassesValidation: isValid })}\n />\n
\n
\n this.props.history.push(this.props.text.Login.nav_path)}\n disabled={this.state.loading}\n >\n Cancel\n \n \n {btn_submit}\n \n
\n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n resetPassword,\n passwordRequirementsGet,\n notificationShow,\n})(LanguageHOC(ResetPassword)));","import { POSTrequest } from 'utils/helpers/api_handler';\nimport { PASSWORD_RESET } from './constants';\n\n\nexport function resetPassword(params) {\n const response = POSTrequest('/authentication/resetpassword', params);\n return {\n type: PASSWORD_RESET,\n payload: response\n };\n}","export const PASSWORD_RESET = 'app/Features/public/ResetPassword/PASSWORD_RESET';","/*\n*\n* ValidateEmail Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n allNotificationsHide,\n LoadingOverlay,\n notificationShow\n} from '@frontend/common';\nimport { validateEmail } from './actions';\n\nimport styles from './styles.module.scss';\n\nexport class ValidateEmail extends React.Component {\n static propTypes = {\n allNotificationsHide: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Login: PropTypes.shape({ nav_path: PropTypes.string }),\n ValidateEmail: PropTypes.shape({\n msg_email_validated: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n validateEmail: PropTypes.func.isRequired,\n };\n\n state = {\n showLoader: false,\n };\n\n componentDidMount() {\n const { ValidateEmail, Login } = this.props.text;\n const queryParams = new URLSearchParams(window.location.search.toLowerCase()).get('request');\n if (!queryParams) {\n this.props.history.push(Login.nav_path);\n }\n else {\n setTimeout(() => {\n this.setState({ showLoader: true });\n }, 700); // Included this pause because the call can be so quick it's not worth showing the loader, esp if it makes user think they missed something\n\n this.props.validateEmail(queryParams)\n .then(() => {\n this.props.notificationShow(ValidateEmail.msg_email_validated, 'success');\n this.props.history.push(Login.nav_path);\n })\n .catch(() => {\n this.props.history.push(Login.nav_path);\n });\n }\n\n this.props.allNotificationsHide();\n }\n render() {\n return (\n this.state.showLoader &&\n
\n
\n

Validating email...

,\n \n
\n
\n );\n\n }\n}\n\n\nexport default withRouter(connect(null, {\n allNotificationsHide,\n notificationShow,\n validateEmail,\n})(LanguageHOC(ValidateEmail)));\n","/*\n*\n* ValidateEmail Actions\n*\n*/\nimport { VALIDATE_EMAIL } from './constants';\nimport { POSTrequest } from 'utils/helpers/api_handler';\n\nexport function validateEmail(guid) {\n const response = POSTrequest('/authentication/ValidateEmail', { id: guid });\n\n return {\n type: VALIDATE_EMAIL,\n payload: response\n };\n}","/*\n*\n* ValidateEmail Constants\n*\n*/\nexport const VALIDATE_EMAIL = 'src/components/Features/public/ValidateEmail/VALIDATE_EMAIL';","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\nimport parse from 'html-react-parser';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport FormWrapper from '../FormWrapper';\n\nimport { emailValidator } from 'utils/helpers/form_validation';\n\nimport { GETRecaptchaToken } from 'utils/helpers/api_handler';\nimport { verifyRecaptcha } from 'components/AppRoot/Navigation/actions';\nimport { sendUsername } from 'components/Features/public/ForgotUsername/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n recaptchaToken: state.session.userDetails.recaptchaToken,\n recaptchaVerified: state.session.userDetails.recaptchaVerified,\n supportNumber: state.static.environmentVars.SupportPhoneNumber\n});\n\nexport class ForgotUsername extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n sendUsername: PropTypes.func.isRequired,\n verifyRecaptcha: PropTypes.func.isRequired,\n recaptchaToken: PropTypes.string.isRequired,\n recaptchaVerified: PropTypes.bool.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ForgotUsername: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_submit: PropTypes.string,\n err_email_required: PropTypes.string,\n err_valid_email: PropTypes.string,\n lbl_beneficiary: PropTypes.string, \n lbl_code: PropTypes.string,\n lbl_email: PropTypes.string,\n msg_general: PropTypes.func,\n msg_recaptcha_language: PropTypes.string,\n msg_request_submitted: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n loading: false,\n canContinue: false,\n isMsgSubmitted: false,\n email: '',\n formErrors: {}\n };\n\n handleInput = name => e => {\n const val = e.target.value;\n if (val) {\n const helperText = this.props.text.ForgotUsername.lbl_email;\n this.setState({ \n [name]: val,\n helperText,\n formErrors: {} \n });\n }\n else {\n this.setState({ [name]: val });\n }\n }\n\n sendEmail = e => {\n e.preventDefault();\n const { email } = this.state;\n const emailError = emailValidator(email);\n if (emailError) {\n const formErrors = cloneDeep(this.state.formErrors);\n formErrors.email = emailError;\n this.setState({ formErrors });\n }\n else {\n this.setState({ loading: true });\n this.props.sendUsername({ EmailAddress: email })\n .then(() => {\n this.setState({ loading: false });\n this.props.notificationShow(this.props.text.ForgotUsername.msg_request_submitted, 'success');\n });\n }\n }\n\n recaptchaVerify = () => {\n GETRecaptchaToken('forgotusername')\n .then(token => {\n if (token !== this.props.recaptchaToken) {\n this.props.verifyRecaptcha(token)\n .then((response) => {\n if (!this.props.recaptchaVerified) {\n const warningMessage = response.payload.data['error-codes'][0];\n this.setState({ canContinue: true });\n this.props.notificationShow(warningMessage, 'warning');\n }\n });\n }\n });\n }\n\n componentDidMount() {\n this.recaptchaVerify();\n }\n\n render() {\n const { text: { ForgotUsername } } = this.props;\n const { loading, canContinue, formErrors, email } = this.state;\n const helperText = formErrors.email ? formErrors.email : '';\n return (\n \n \n \n

{ForgotUsername.msg_general(this.props.supportNumber)}

\n
\n \n
\n this.props.history.goBack()}\n disabled={loading}\n >\n {ForgotUsername.btn_cancel}\n \n \n {ForgotUsername.btn_submit}\n \n
\n \n \n
\n\n
{/* This reCAPTCHA text is required since we are hiding the badge on all pages */}\n

{parse(ForgotUsername.msg_recaptcha_language)}

\n
\n
\n ); \n }\n}\n\nexport default withRouter(connect(select, {\n notificationShow,\n sendUsername,\n verifyRecaptcha\n})(LanguageHOC(ForgotUsername)));","import { POSTrequest } from 'utils/helpers/api_handler';\nimport {\n USER_NAME_FORGOT,\n} from './constants';\n\n\nexport function sendUsername(EmailAddress) {\n const response = POSTrequest('/authentication/forgotusername', EmailAddress);\n return {\n type: USER_NAME_FORGOT,\n payload: response\n };\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { isEmpty, cloneDeep } from 'lodash';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport FormWrapper from '../FormWrapper';\n\nimport {\n Button,\n TextField,\n Accordion,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n DatePicker,\n SsnInput,\n PasswordInput,\n PasswordRequirements,\n} from '@frontend/common';\n\nimport { INIT_FORM_ERRORS } from '../constants';\nimport { GETRecaptchaToken } from 'utils/helpers/api_handler';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\nimport { registerUserSync, verifyRecaptcha } from 'components/AppRoot/Navigation/actions';\n\nimport {\n agentSearch,\n agentUpdate\n} from '../actions';\n\nimport * as validator from 'utils/helpers/form_validation';\n\nconst select = (state) => ({\n MaximumAge: state.static.environmentVars.MaximumAge,\n MinimumAccountOwnerAge: state.static.environmentVars.MinimumAccountOwnerAge,\n passwordRequirements: state.static.passwordRequirements,\n agent: state.registrationtype.agent,\n updatedAgent: state.registrationtype.updatedAgent,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n recaptchaToken: state.session.userDetails.recaptchaToken,\n recaptchaVerified: state.session.userDetails.recaptchaVerified,\n documents: state.static.documents,\n});\n\nexport class SetupUser extends Component {\n\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n agentSearch: PropTypes.func.isRequired,\n agentUpdate: PropTypes.func.isRequired,\n registerUserSync: PropTypes.func.isRequired,\n verifyRecaptcha: PropTypes.func.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n agent: PropTypes.object.isRequired,\n updatedAgent: PropTypes.object.isRequired,\n MaximumAge: PropTypes.number.isRequired,\n MinimumAccountOwnerAge: PropTypes.number.isRequired,\n recaptchaToken: PropTypes.string.isRequired,\n recaptchaVerified: PropTypes.bool.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n SetupUser: PropTypes.shape({\n btn_continue: PropTypes.string,\n btn_create: PropTypes.string,\n err_password_match: PropTypes.string,\n err_required: PropTypes.string,\n lbl_dob: PropTypes.string,\n lbl_email: PropTypes.string,\n lbl_password: PropTypes.string,\n lbl_repeat_password: PropTypes.string,\n lbl_ssn: PropTypes.string,\n lbl_username: PropTypes.string,\n msg_agent_not_found: PropTypes.string,\n msg_recaptcha_language: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n ForgotUsername: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n ResendEmail: PropTypes.shape({\n nav_path: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n loading: false,\n pageState: 0,\n SocialSecurityNumber: '',\n BirthDate: '',\n UserName: '',\n EmailAddress: '',\n PasswordOne: '',\n PasswordTwo: '',\n isPasswordValid: false,\n isPasswordReqsVisible: false,\n agentHasEmail: true,\n canContinue: false,\n formErrors: INIT_FORM_ERRORS\n };\n\n handleInput = name => e => {\n const { formErrors } = cloneDeep(this.state);\n formErrors[name] = '';\n this.setState({ [name]: e.target.value, formErrors });\n }\n\n handleCustomInputs = e => {\n const { formErrors } = cloneDeep(this.state);\n formErrors[e.target.name] = '';\n this.setState({ [e.target.name]: e.target.value, formErrors });\n }\n\n validateAgent = e => {\n e.preventDefault();\n const { SocialSecurityNumber, BirthDate, formErrors } = this.state;\n const { MaximumAge, MinimumAccountOwnerAge, text: { SetupUser } } = this.props;\n formErrors.SocialSecurityNumber = validator.socialSecurityNumValidator(SocialSecurityNumber);\n formErrors.BirthDate = validator.accountOwnerBirthdateValidator(BirthDate, MinimumAccountOwnerAge, MaximumAge);\n\n if (Object.values(formErrors).some(error => error !== '')) {\n this.setState({ formErrors });\n }\n else {\n const params = {\n SocialSecurityNumber,\n BirthDate: dayjs(BirthDate).format('YYYY-MM-DD'),\n };\n this.setState({ loading: true });\n this.props.agentSearch(params)\n .then(() => {\n this.setState({ loading: false });\n const { agent } = this.props;\n if (isEmpty(agent)) { // no account \n this.setState({ SocialSecurityNumber: '', BirthDate: '' });\n this.props.notificationShow(SetupUser.msg_agent_not_found, 'error');\n }\n else {\n if (agent.HasLogin === 0) {\n if (agent.EmailAddress) {\n this.setState({ pageState: 1, EmailAddress: agent.EmailAddress });\n }\n else {\n this.setState({ pageState: 1, agentHasEmail: false });\n }\n }\n else { // has a login\n this.props.history.push(this.props.text.ForgotUsername.nav_path);\n }\n }\n });\n }\n }\n\n updateAgent = e => {\n e.preventDefault();\n const { UserName, SocialSecurityNumber, BirthDate, EmailAddress, PasswordOne, PasswordTwo, formErrors } = cloneDeep(this.state);\n const { text: { SetupUser } } = this.props;\n formErrors.UserName = validator.userNameValidator(UserName);\n formErrors.EmailAddress = validator.emailValidator(EmailAddress);\n formErrors.PasswordOne = PasswordOne === '' ? SetupUser.err_required : '';\n formErrors.PasswordTwo = PasswordTwo !== ''\n ? PasswordOne !== PasswordTwo\n ? SetupUser.err_password_match\n : ''\n : SetupUser.err_required;\n if (Object.values(formErrors).some(error => error !== '')) {\n this.setState({ formErrors });\n }\n else {\n const params = {\n UserName,\n EmailAddress,\n PasswordOne,\n PasswordTwo,\n SocialSecurityNumber,\n BirthDate: dayjs(BirthDate).format('YYYY-MM-DD')\n };\n this.setState({ loading: true });\n this.props.agentUpdate(params)\n .then(() => {\n this.props.registerUserSync(this.props.updatedAgent);\n this.props.history.push(this.props.text.ResendEmail.nav_path);\n })\n .catch(errors => {\n const apiErrors = errors.payload.data;\n if (Array.isArray(apiErrors)) { // inline errors\n apiErrors.forEach(apiError => {\n if (Object.keys(formErrors).some(formError => formError === apiError.Field)) {\n formErrors[apiError.Field] = apiError.Message;\n }\n });\n this.setState({ loading: false, formErrors });\n }\n else {\n this.props.notificationShow(apiErrors, 'error');\n this.setState({ loading: false, formErrors: INIT_FORM_ERRORS });\n }\n });\n }\n }\n\n recaptchaVerify = () => {\n GETRecaptchaToken('registrationtype')\n .then(token => {\n if (token !== this.props.recaptchaToken) {\n this.props.verifyRecaptcha(token)\n .then((response) => {\n if (!this.props.recaptchaVerified) {\n const warningMessage = response.payload.data['error-codes'][0];\n this.setState({ canContinue: true });\n this.props.notificationShow(warningMessage, 'warning');\n }\n });\n }\n });\n }\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.setState({ loading: true });\n this.props.passwordRequirementsGet()\n .then(() => this.setState({ loading: false }))\n .catch(() => this.setState({ loading: false }));\n }\n this.recaptchaVerify();\n }\n\n render() {\n const {\n MaximumAge, MinimumAccountOwnerAge,\n text: { SetupUser }, passwordRequirements,\n } = this.props;\n\n const {\n loading, formErrors, SocialSecurityNumber, BirthDate, UserName, EmailAddress, agentHasEmail,\n PasswordOne, PasswordTwo, isPasswordReqsVisible, canContinue, pageState,\n } = this.state;\n\n return (\n <>\n {loading ?\n \n :\n \n {pageState === 0 &&\n\n \n this.handleCustomInputs({ target: { name: 'SocialSecurityNumber', value } })}\n value={SocialSecurityNumber}\n variant='filled'\n />\n this.handleCustomInputs({ target: { name: 'BirthDate', value: e ? e.toDate() : e } })}\n openTo='year'\n value={BirthDate || null}\n disabled={loading}\n />\n \n {SetupUser.btn_continue}\n \n \n }\n\n\n {pageState === 1 &&\n \n \n \n this.setState({ isPasswordReqsVisible: true })}\n onBlur={() => this.setState({ isPasswordReqsVisible: false })}\n onChange={this.handleInput('PasswordOne')}\n value={PasswordOne}\n variant='filled'\n />\n \n \n this.setState({ isPasswordValid })}\n />\n \n \n {SetupUser.btn_create}\n \n }\n \n }\n \n );\n }\n}\n\nexport default withRouter((connect(select, {\n notificationShow,\n passwordRequirementsGet,\n agentSearch,\n agentUpdate,\n registerUserSync,\n verifyRecaptcha\n})(LanguageHOC(SetupUser))));\n","/*\n*\n* LpoaAccount Actions\n*\n*/\nimport {\n GET_RSA,\n POST_RSA,\n GET_LPOA_ACCOUNT,\n APPROVE_LPOA_ACCOUNT,\n VALIDATE_LPOA_ACCOUNT,\n REJECT_LPOA_ACCOUNT,\n PERSON_TYPES,\n ADDRESS_TYPES,\n SAVE_TO_REDUX_LPOA_ACCOUNT,\n} from './constants';\n\nimport { GETrequest, POSTrequest, DELETErequest } from 'utils/helpers/api_handler';\n\nconst mapAccount = (applicationInfo, guid) => {\n return {\n PoaAccountApplicationId: guid,\n OwnerFirstName: applicationInfo[PERSON_TYPES.AO].firstName,\n OwnerMiddleName: applicationInfo[PERSON_TYPES.AO].middleName,\n OwnerLastName: applicationInfo[PERSON_TYPES.AO].lastName,\n OwnerBirthdate: applicationInfo[PERSON_TYPES.AO].birthDate,\n OwnerSSN: applicationInfo[PERSON_TYPES.AO].ssn,\n OwnerIsResident: applicationInfo[PERSON_TYPES.AO].isUtahPayer,\n OwnerMailingAddress1: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.MAILING].street1,\n OwnerMailingAddress2: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.MAILING].street2,\n OwnerMailingCity: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.MAILING].city,\n OwnerMailingState: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.MAILING].state,\n OwnerMailingZipCode: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.MAILING].zipCode,\n OwnerPhysicalAddress1: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.PHYSICAL].street1,\n OwnerPhysicalAddress2: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.PHYSICAL].street2,\n OwnerPhysicalCity: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.PHYSICAL].city,\n OwnerPhysicalState: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.PHYSICAL].state,\n OwnerPhysicalZipCode: applicationInfo[PERSON_TYPES.AO][ADDRESS_TYPES.PHYSICAL].zipCode,\n OwnerEmail: applicationInfo[PERSON_TYPES.AO].contact.email,\n OwnerHomePhone: applicationInfo[PERSON_TYPES.AO].contact.homePhone,\n OwnerWorkPhone: applicationInfo[PERSON_TYPES.AO].contact.workPhone,\n OwnerOtherPhone: applicationInfo[PERSON_TYPES.AO].contact.otherPhone,\n Relationship: applicationInfo[PERSON_TYPES.AO].contact.relationship,\n BeneficiaryFirstName: applicationInfo[PERSON_TYPES.BENE].firstName,\n BeneficiaryMiddleName: applicationInfo[PERSON_TYPES.BENE].middleName,\n BeneficiaryLastName: applicationInfo[PERSON_TYPES.BENE].lastName,\n BeneficiaryBirthdate: applicationInfo[PERSON_TYPES.BENE].birthDate,\n BeneficiarySSN: applicationInfo[PERSON_TYPES.BENE].ssn,\n BeneficiaryIsResident: applicationInfo[PERSON_TYPES.BENE].isUtahPayer,\n BeneficiaryMailingAddress1: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.MAILING].street1,\n BeneficiaryMailingAddress2: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.MAILING].street2,\n BeneficiaryMailingCity: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.MAILING].city,\n BeneficiaryMailingState: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.MAILING].state,\n BeneficiaryMailingZipCode: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.MAILING].zipCode,\n BeneficiaryPhysicalAddress1: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.PHYSICAL].street1,\n BeneficiaryPhysicalAddress2: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.PHYSICAL].street2,\n BeneficiaryPhysicalCity: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.PHYSICAL].city,\n BeneficiaryPhysicalState: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.PHYSICAL].state,\n BeneficiaryPhysicalZipCode: applicationInfo[PERSON_TYPES.BENE][ADDRESS_TYPES.PHYSICAL].zipCode,\n SuccessorFirstName: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY].firstName,\n SuccessorMiddleName: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY].middleName,\n SuccessorLastName: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY].lastName,\n SuccessorBirthdate: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY].birthDate,\n SuccessorSSN: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY].ssn,\n SuccessorMailingAddress1: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.MAILING].street1,\n SuccessorMailingAddress2: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.MAILING].street2,\n SuccessorMailingCity: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.MAILING].city,\n SuccessorMailingState: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.MAILING].state,\n SuccessorMailingZipCode: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.MAILING].zipCode,\n SuccessorPhysicalAddress1: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.PHYSICAL].street1,\n SuccessorPhysicalAddress2: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.PHYSICAL].street2,\n SuccessorPhysicalCity: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.PHYSICAL].city,\n SuccessorPhysicalState: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.PHYSICAL].state,\n SuccessorPhysicalZipCode: applicationInfo[PERSON_TYPES.SUCCESSOR_PRIMARY][ADDRESS_TYPES.PHYSICAL].zipCode,\n SSuccessorFirstName: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY].firstName,\n SSuccessorMiddleName: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY].middleName,\n SSuccessorLastName: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY].lastName,\n SSuccessorBirthDate: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY].birthDate,\n SSuccessorSSN: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY].ssn,\n SSuccessorMailingAddress1: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.MAILING].street1,\n SSuccessorMailingAddress2: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.MAILING].street2,\n SSuccessorMailingCity: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.MAILING].city,\n SSuccessorMailingState: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.MAILING].state,\n SSuccessorMailingZipCode: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.MAILING].zipCode,\n SSuccessorPhysicalAddress1: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.PHYSICAL].street1,\n SSuccessorPhysicalAddress2: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.PHYSICAL].street2,\n SSuccessorPhysicalCity: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.PHYSICAL].city,\n SSuccessorPhysicalState: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.PHYSICAL].state,\n SSuccessorPhysicalZipCode: applicationInfo[PERSON_TYPES.SUCCESSOR_SECONDARY][ADDRESS_TYPES.PHYSICAL].zipCode,\n Date: applicationInfo.accountSummary.applicationDate,\n AccountTypeName: applicationInfo.accountSummary.type,\n OptionName: applicationInfo.accountSummary.option,\n PoaLevel: applicationInfo.accountSummary.poaLevel,\n CanViewFedTaxDocs: applicationInfo.accountSummary.fedTaxDocs,\n CanViewStateTaxDocs: applicationInfo.accountSummary.stateTaxDocs,\n Status: applicationInfo.accountSummary.status,\n AgeBands: applicationInfo.ageBands,\n FirmName: applicationInfo.lpoaFirmName,\n };\n};\n\nexport function getRSA(guid) {\n const payload = GETrequest(`/lpoaaccount/verify/${guid}`, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: GET_RSA,\n payload,\n };\n}\n\nexport function postRSA(guid, body) {\n const payload = POSTrequest(`/lpoaaccount/verify/${guid}`, body, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: POST_RSA,\n payload,\n };\n}\n\nexport function getLpoaAccount(guid) {\n const payload = GETrequest(`/lpoaaccount/${guid}`, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: GET_LPOA_ACCOUNT,\n payload,\n };\n}\n\nexport function rejectLpoaAccount(guid) {\n const payload = DELETErequest(`/lpoaaccount/reject/${guid}`, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: REJECT_LPOA_ACCOUNT,\n payload,\n };\n}\n\nexport function saveToReduxLpoaAccount(applicationInfo) {\n return {\n type: SAVE_TO_REDUX_LPOA_ACCOUNT,\n payload: applicationInfo,\n };\n}\n\nexport function validateLpoaAccount(applicationInfo, guid) {\n const body = mapAccount(applicationInfo, guid);\n const payload = POSTrequest('/lpoaaccount/validate', body, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: VALIDATE_LPOA_ACCOUNT,\n payload,\n };\n}\n\nexport function approveLpoaAccount(applicationInfo, guid) {\n const body = mapAccount(applicationInfo, guid);\n const payload = POSTrequest('/lpoaaccount/approve', body, { headers: { 'lpoa-client-token': getRSAPassedCookie() } });\n return {\n type: APPROVE_LPOA_ACCOUNT,\n payload,\n };\n}\n\n//Get the cookie to see if this browser has already passed RSA\nconst getRSAPassedCookie = () => {\n let cookie = '';\n const cookies = document.cookie.split(';');\n const rsaPassedCookie = cookies.find(cookie => cookie.includes('LPOA_RSA_Passed'));\n if (rsaPassedCookie) cookie = rsaPassedCookie.split('=').pop();\n return cookie;\n};\n","/*\n*\n* FundAllocationsAndFees Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n TextField,\n} from '@mui/material';\n\nimport {\n InfoIcon,\n Dropdown,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nconst tippyProps = {\n hideOnClick: true,\n interactive: true,\n};\n\nexport class FundAllocationsAndFees extends Component {\n static propTypes = {\n applicationInfo: PropTypes.object.isRequired,\n programDescriptionLink: PropTypes.string.isRequired,\n title1: PropTypes.string.isRequired,\n title2: PropTypes.string.isRequired,\n selectedAgeBand: PropTypes.number.isRequired,\n isAgeBased: PropTypes.bool.isRequired,\n onAgeBandSelection: PropTypes.func.isRequired,\n text: PropTypes.shape({\n LpoaAccount: PropTypes.object.isRequired,\n }).isRequired,\n }\n\n render() {\n const { selectedAgeBand, isAgeBased } = this.props;\n\n const {\n applicationInfo,\n title1,\n title2,\n onAgeBandSelection,\n programDescriptionLink,\n text: {\n LpoaAccount: { fund_allocations_and_fees }\n },\n } = this.props;\n\n return (\n \n {isAgeBased &&
\n
{fund_allocations_and_fees.select_age_band_title}
\n
\n ({ display: ageBand.AgeBandName, value: index }))}\n value={selectedAgeBand}\n />\n
}\n\n
{title1}
\n
\n\n {applicationInfo.lpoaFirmName !== '' && applicationInfo.ageBands[selectedAgeBand].FundInformation.map((fund, index) => {\n return (\n \n );\n })}\n\n
\n {title2}\n \n \n \n
\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n \n );\n }\n}\n\n\nexport default LanguageHOC(FundAllocationsAndFees);\n","/*\n*\n* PersonInput Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n TextField,\n Checkbox,\n FormControlLabel,\n} from '@mui/material';\n\nimport {\n DatePicker,\n SsnInput,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nexport class PersonInput extends Component {\n static propTypes = {\n applicationInfo: PropTypes.object.isRequired,\n applicationInfoErrors: PropTypes.object.isRequired,\n personType: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n onPersonInput: PropTypes.func.isRequired,\n removeIsUtahPayer: PropTypes.bool,\n }\n\n render() {\n const {\n applicationInfoErrors,\n applicationInfo,\n personType,\n title,\n subtitle,\n onPersonInput,\n removeIsUtahPayer,\n } = this.props;\n\n return (\n \n
{title}
\n {subtitle ?
{subtitle}
:
}\n onPersonInput(e.target.value, personType, 'firstName')}\n value={applicationInfo[personType].firstName}\n />\n onPersonInput(e.target.value, personType, 'middleName')}\n value={applicationInfo[personType].middleName}\n />\n onPersonInput(e.target.value, personType, 'lastName')}\n value={applicationInfo[personType].lastName}\n />\n onPersonInput(value, personType, 'birthDate')}\n openTo='year'\n value={applicationInfo[personType].birthDate}\n />\n onPersonInput(value, personType, 'ssn')}\n value={applicationInfo[personType].ssn}\n />\n {!removeIsUtahPayer &&\n onPersonInput(!applicationInfo[personType].isUtahPayer, personType, 'isUtahPayer')}\n checked={applicationInfo[personType].isUtahPayer}\n />\n }\n label={'I am a Utah Tax Payer'}\n />\n }\n\n \n );\n }\n}\n\n\nexport default LanguageHOC(PersonInput);\n","/*\n*\n* AddressInput Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n TextField,\n} from '@mui/material';\n\nimport {\n StateDropdown,\n ZipInput,\n} from '@frontend/common';\n\nimport { PERSON_TYPES } from '../../constants';\n\nimport styles from '../styles.module.scss';\n\nconst select = (state) => ({\n US_STATES: state.static.usStates,\n});\n\nexport class AddressInput extends Component {\n static propTypes = {\n US_STATES: PropTypes.array.isRequired,\n applicationInfoErrors: PropTypes.object.isRequired,\n applicationInfo: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n personType: PropTypes.string.isRequired,\n addressType: PropTypes.string.isRequired,\n onAddressInput: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n copyAddress: PropTypes.func.isRequired,\n };\n\n render() {\n const {\n US_STATES,\n applicationInfoErrors,\n applicationInfo,\n title,\n subtitle,\n personType,\n addressType,\n onAddressInput,\n renderNavigationButton,\n copyAddress,\n } = this.props;\n\n const copyButtonLabel = personType === PERSON_TYPES.AO ? 'copy >> Beneficiary' : 'copy >> Account Owner';\n\n return (\n \n
{title}
\n {subtitle ?
{subtitle}
:
}\n onAddressInput(e.target.value, personType, addressType, 'street1')}\n value={applicationInfo[personType][addressType].street1}\n />\n onAddressInput(e.target.value, personType, addressType, 'street2')}\n value={applicationInfo[personType][addressType].street2}\n />\n onAddressInput(e.target.value, personType, addressType, 'city')}\n value={applicationInfo[personType][addressType].city}\n />\n onAddressInput(value, personType, addressType, 'state')}\n states={US_STATES}\n value={applicationInfo[personType][addressType].state}\n />\n onAddressInput(value.formattedValue.trim(), personType, addressType, 'zipCode')}\n label='Postal Code'\n value={applicationInfo[personType][addressType].zipCode}\n />\n
\n {renderNavigationButton(copyButtonLabel, () => copyAddress(personType, addressType), 'text')}\n
\n\n\n \n );\n }\n}\n\nexport default connect(select, {})(LanguageHOC(AddressInput));","/*\n*\n* AoContactInput Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n TextField,\n} from '@mui/material';\n\nimport {\n PhoneNumberInput,\n Dropdown,\n} from '@frontend/common';\n\nimport { RELATIONSHIPS } from '../../constants';\n\nimport styles from '../styles.module.scss';\n\nexport class AoContactInput extends Component {\n static propTypes = {\n applicationInfoErrors: PropTypes.object.isRequired,\n applicationInfo: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n onAoContactInput: PropTypes.func.isRequired,\n text: PropTypes.shape({\n LpoaAccount: PropTypes.object.isRequired,\n }).isRequired,\n }\n\n render() {\n const {\n applicationInfoErrors,\n applicationInfo,\n title,\n subtitle,\n onAoContactInput,\n text: { LpoaAccount: { ao_contact } },\n } = this.props;\n\n return (\n \n
{title}
\n {subtitle ?
{subtitle}
:
}\n onAoContactInput(e.target.value, 'email')}\n value={applicationInfo.ao.contact.email}\n />\n onAoContactInput(formattedValue, 'homePhone')}\n value={applicationInfo.ao.contact.homePhone}\n fullWidth\n errorText={applicationInfoErrors.ao.contact.homePhone}\n />\n onAoContactInput(formattedValue, 'workPhone')}\n value={applicationInfo.ao.contact.workPhone}\n fullWidth\n errorText={applicationInfoErrors.ao.contact.workPhone}\n />\n onAoContactInput(formattedValue, 'otherPhone')}\n value={applicationInfo.ao.contact.otherPhone}\n fullWidth\n errorText={applicationInfoErrors.ao.contact.otherPhone}\n />\n onAoContactInput(value, 'relationship')}\n options={RELATIONSHIPS}\n value={applicationInfo.ao.contact.relationship}\n />\n \n );\n }\n}\n\n\nexport default LanguageHOC(AoContactInput);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Drawer,\n} from '@mui/material';\n\nimport {\n IconBtnTooltip,\n InfoIcon,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function LearnMoreDrawer({ open, onClose, text: { Lpoa } }) {\n\n return (\n \n
\n
\n \n
\n

{Lpoa.learn_more_title}

\n
\n
\n
{/* make sure the table scrolls horizontally in mobile */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{Lpoa.edit_level_table.column_titles[0]}{Lpoa.edit_level_table.column_titles[1]}{Lpoa.edit_level_table.span_column_3_4_5_6_title}
{Lpoa.edit_level_table.column_titles[2]}{Lpoa.edit_level_table.column_titles[3]}{Lpoa.edit_level_table.column_titles[4]}{Lpoa.edit_level_table.column_titles[5]}
\n {Lpoa.edit_level_table.levels[0]}\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_no}{Lpoa.text_no}{Lpoa.text_no}{Lpoa.text_no}
\n {Lpoa.edit_level_table.levels[1]}\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_no}
\n {Lpoa.edit_level_table.levels[2]}\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_yes}\n {Lpoa.text_yes}\n \n
\n
\n
\n\n\n\n
\n
\n
\n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.object.isRequired,\n }).isRequired,\n};\n\nexport default LanguageHOC(LearnMoreDrawer);","/*\n*\n* AccountSummary Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport LearnMore from './LearnMore';\n\nimport {\n TextField,\n FormControlLabel,\n Checkbox,\n} from '@mui/material';\n\nimport {\n Dropdown,\n InfoIcon,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nexport class AccountSummary extends Component {\n static propTypes = {\n applicationInfoErrors: PropTypes.object.isRequired,\n applicationInfo: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n onAccountSummaryInput: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n text: PropTypes.shape({\n LpoaAccount: PropTypes.object.isRequired,\n }).isRequired,\n };\n\n state = {\n showLpoaLevelLearnMore: false,\n }\n\n render() {\n const { showLpoaLevelLearnMore } = this.state;\n\n const {\n applicationInfo,\n applicationInfoErrors,\n title,\n onAccountSummaryInput,\n renderNavigationButton,\n text: {\n LpoaAccount: { account_summary, btn_learn_more },\n },\n } = this.props;\n\n return (\n \n
{title}
\n
\n\n \n\n \n\n \n\n
\n onAccountSummaryInput(value, 'poaLevel')}\n options={[\n {\n display: account_summary.poa_levels[0],\n value: 1,\n },\n {\n display: account_summary.poa_levels[1],\n value: 2,\n },\n {\n display: account_summary.poa_levels[2],\n value: 3,\n },\n ]}\n errorText={applicationInfoErrors.accountSummary.poaLevel}\n value={applicationInfo.accountSummary.poaLevel}\n />\n
\n {renderNavigationButton(btn_learn_more, () => this.setState({ showLpoaLevelLearnMore: true }), 'text')}\n
\n
\n\n
\n onAccountSummaryInput(!applicationInfo.accountSummary.fedTaxDocs, 'fedTaxDocs')}\n checked={applicationInfo.accountSummary.fedTaxDocs}\n />\n }\n label={account_summary.fed_tax_docs_label}\n />\n
\n \n
\n
\n\n
\n onAccountSummaryInput(!applicationInfo.accountSummary.stateTaxDocs, 'stateTaxDocs')}\n checked={applicationInfo.accountSummary.stateTaxDocs}\n />\n }\n label={account_summary.state_tax_docs_label}\n />\n
\n \n
\n
\n\n \n\n {applicationInfo.accountSummary.promoCode &&\n \n }\n\n this.setState({ showLpoaLevelLearnMore: false })}\n open={showLpoaLevelLearnMore}\n />\n \n );\n }\n}\n\n\nexport default LanguageHOC(AccountSummary);\n","/*\n*\n* AccountEdit Component\n*\n*/\nimport React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, isEqual } from 'lodash';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport { PERSON_TYPES, ADDRESS_TYPES } from '../constants';\n\nimport FundAllocationsAndFees from './FundAllocationsAndFees';\nimport PersonInput from './PersonInput';\nimport AddressInput from './AddressInput';\nimport AoContactInput from './AoContactInput';\nimport AccountSummary from './AccountSummary';\n\nimport {\n getLpoaAccount,\n saveToReduxLpoaAccount,\n validateLpoaAccount,\n} from '../actions';\n\nimport {\n LoadingOverlay,\n notificationShow,\n allNotificationsHide,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nconst select = (state) => ({\n applicationInfo: state.lpoaAccount.applicationInfo,\n documents: state.static.documents ? state.static.documents : {},\n});\n\nexport class AccountEdit extends Component {\n static propTypes = {\n applicationInfo: PropTypes.object.isRequired,\n documents: PropTypes.object,\n showRejectModalHandler: PropTypes.func.isRequired,\n rejectLoading: PropTypes.bool.isRequired,\n getLpoaAccount: PropTypes.func.isRequired,\n onNextHandler: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n saveToReduxLpoaAccount: PropTypes.func.isRequired,\n validateLpoaAccount: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n text: PropTypes.shape({\n LpoaAccount: PropTypes.object.isRequired,\n }).isRequired,\n };\n\n apiEditableKeyNames = [\n 'OwnerFirstName',\n 'OwnerMiddleName',\n 'OwnerLastName',\n 'OwnerBirthdate',\n 'OwnerSSN',\n 'OwnerIsResident',\n 'OwnerMailingAddress1',\n 'OwnerMailingAddress2',\n 'OwnerMailingCity',\n 'OwnerMailingState',\n 'OwnerMailingZipCode',\n 'OwnerPhysicalAddress1',\n 'OwnerPhysicalAddress2',\n 'OwnerPhysicalCity',\n 'OwnerPhysicalState',\n 'OwnerPhysicalZipCode',\n 'OwnerEmail',\n 'OwnerHomePhone',\n 'OwnerWorkPhone',\n 'OwnerOtherPhone',\n 'Relationship',\n 'BeneficiaryFirstName',\n 'BeneficiaryMiddleName',\n 'BeneficiaryLastName',\n 'BeneficiaryBirthdate',\n 'BeneficiarySSN',\n 'BeneficiaryIsResident',\n 'BeneficiaryMailingAddress1',\n 'BeneficiaryMailingAddress2',\n 'BeneficiaryMailingCity',\n 'BeneficiaryMailingState',\n 'BeneficiaryMailingZipCode',\n 'BeneficiaryPhysicalAddress1',\n 'BeneficiaryPhysicalAddress2',\n 'BeneficiaryPhysicalCity',\n 'BeneficiaryPhysicalState',\n 'BeneficiaryPhysicalZipCode',\n 'SuccessorFirstName',\n 'SuccessorMiddleName',\n 'SuccessorLastName',\n 'SuccessorBirthdate',\n 'SuccessorSSN',\n 'SuccessorUtahResident',\n 'SuccessorMailingAddress1',\n 'SuccessorMailingAddress2',\n 'SuccessorMailingCity',\n 'SuccessorMailingState',\n 'SuccessorMailingZipCode',\n 'SuccessorPhysicalAddress1',\n 'SuccessorPhysicalAddress2',\n 'SuccessorPhysicalCity',\n 'SuccessorPhysicalState',\n 'SuccessorPhysicalZipCode',\n 'SSuccessorFirstName',\n 'SSuccessorMiddleName',\n 'SSuccessorLastName',\n 'SSuccessorBirthDate',\n 'SSuccessorSSN',\n 'SSuccessorUtahResident',\n 'SSuccessorMailingAddress1',\n 'SSuccessorMailingAddress2',\n 'SSuccessorMailingCity',\n 'SSuccessorMailingState',\n 'SSuccessorMailingZipCode',\n 'SSuccessorPhysicalAddress1',\n 'SSuccessorPhysicalAddress2',\n 'SSuccessorPhysicalCity',\n 'SSuccessorPhysicalState',\n 'SSuccessorPhysicalZipCode',\n 'PoaLevel',\n 'CanViewFedTaxDocs',\n 'CanViewStateTaxDocs',\n ];\n\n clearedApplicationInfoErrors = {\n [PERSON_TYPES.AO]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: '',\n ssn: '',\n isUtahPayer: '',\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n contact: {\n email: '',\n homePhone: '',\n workPhone: '',\n otherPhone: '',\n relationship: '',\n },\n },\n [PERSON_TYPES.BENE]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: '',\n ssn: '',\n isUtahPayer: '',\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n [PERSON_TYPES.SUCCESSOR_PRIMARY]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: '',\n ssn: '',\n isUtahPayer: '',\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n [PERSON_TYPES.SUCCESSOR_SECONDARY]: {\n firstName: '',\n middleName: '',\n lastName: '',\n birthDate: '',\n ssn: '',\n isUtahPayer: '',\n [ADDRESS_TYPES.MAILING]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: '',\n street2: '',\n city: '',\n state: '',\n zipCode: '',\n },\n },\n accountSummary: {\n poaLevel: '',\n fedTaxDocs: '',\n stateTaxDocs: '',\n },\n };\n\n state = {\n applicationInfo: this.props.applicationInfo,\n accountLoading: false,\n validationLoading: false,\n applicationInfoErrors: cloneDeep(this.clearedApplicationInfoErrors),\n applicationInfoErrorsCleared: true,\n isAgeBased: false,\n selectedAgeBand: 0,\n }\n\n findErrorMessageByKey = (errors, key) => {\n const foundError = errors.find(err => err.Field === key);\n return foundError ? foundError.Message : '';\n }\n\n mapApiErrors(apiErrors) {\n const applicationInfoErrors = {\n [PERSON_TYPES.AO]: {\n firstName: this.findErrorMessageByKey(apiErrors, 'OwnerFirstName'),\n middleName: this.findErrorMessageByKey(apiErrors, 'OwnerMiddleName'),\n lastName: this.findErrorMessageByKey(apiErrors, 'OwnerLastName'),\n birthDate: this.findErrorMessageByKey(apiErrors, 'OwnerBirthdate'),\n ssn: this.findErrorMessageByKey(apiErrors, 'OwnerSSN'),\n isUtahPayer: this.findErrorMessageByKey(apiErrors, 'OwnerIsResident'),\n [ADDRESS_TYPES.MAILING]: {\n street1: this.findErrorMessageByKey(apiErrors, 'OwnerMailingAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'OwnerMailingAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'OwnerMailingCity'),\n state: this.findErrorMessageByKey(apiErrors, 'OwnerMailingState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'OwnerMailingZipCode'),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: this.findErrorMessageByKey(apiErrors, 'OwnerPhysicalAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'OwnerPhysicalAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'OwnerPhysicalCity'),\n state: this.findErrorMessageByKey(apiErrors, 'OwnerPhysicalState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'OwnerPhysicalZipCode'),\n },\n contact: {\n email: this.findErrorMessageByKey(apiErrors, 'OwnerEmail'),\n homePhone: this.findErrorMessageByKey(apiErrors, 'OwnerHomePhone'),\n workPhone: this.findErrorMessageByKey(apiErrors, 'OwnerWorkPhone'),\n otherPhone: this.findErrorMessageByKey(apiErrors, 'OwnerOtherPhone'),\n relationship: this.findErrorMessageByKey(apiErrors, 'Relationship'),\n },\n },\n [PERSON_TYPES.BENE]: {\n firstName: this.findErrorMessageByKey(apiErrors, 'BeneficiaryFirstName'),\n middleName: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMiddleName'),\n lastName: this.findErrorMessageByKey(apiErrors, 'BeneficiaryLastName'),\n birthDate: this.findErrorMessageByKey(apiErrors, 'BeneficiaryBirthdate'),\n ssn: this.findErrorMessageByKey(apiErrors, 'BeneficiarySSN'),\n isUtahPayer: this.findErrorMessageByKey(apiErrors, 'BeneficiaryIsResident'),\n [ADDRESS_TYPES.MAILING]: {\n street1: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMailingAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMailingAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMailingCity'),\n state: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMailingState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'BeneficiaryMailingZipCode'),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: this.findErrorMessageByKey(apiErrors, 'BeneficiaryPhysicalAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'BeneficiaryPhysicalAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'BeneficiaryPhysicalCity'),\n state: this.findErrorMessageByKey(apiErrors, 'BeneficiaryPhysicalState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'BeneficiaryPhysicalZipCode'),\n },\n },\n [PERSON_TYPES.SUCCESSOR_PRIMARY]: {\n firstName: this.findErrorMessageByKey(apiErrors, 'SuccessorFirstName'),\n middleName: this.findErrorMessageByKey(apiErrors, 'SuccessorMiddleName'),\n lastName: this.findErrorMessageByKey(apiErrors, 'SuccessorLastName'),\n birthDate: this.findErrorMessageByKey(apiErrors, 'SuccessorBirthdate'),\n ssn: this.findErrorMessageByKey(apiErrors, 'SuccessorSSN'),\n isUtahPayer: this.findErrorMessageByKey(apiErrors, 'SuccessorUtahResident'),\n [ADDRESS_TYPES.MAILING]: {\n street1: this.findErrorMessageByKey(apiErrors, 'SuccessorMailingAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'SuccessorMailingAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'SuccessorMailingCity'),\n state: this.findErrorMessageByKey(apiErrors, 'SuccessorMailingState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'SuccessorMailingZipCode'),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: this.findErrorMessageByKey(apiErrors, 'SuccessorPhysicalAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'SuccessorPhysicalAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'SuccessorPhysicalCity'),\n state: this.findErrorMessageByKey(apiErrors, 'SuccessorPhysicalState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'SuccessorPhysicalZipCode'),\n },\n },\n [PERSON_TYPES.SUCCESSOR_SECONDARY]: {\n firstName: this.findErrorMessageByKey(apiErrors, 'SSuccessorFirstName'),\n middleName: this.findErrorMessageByKey(apiErrors, 'SSuccessorMiddleName'),\n lastName: this.findErrorMessageByKey(apiErrors, 'SSuccessorLastName'),\n birthDate: this.findErrorMessageByKey(apiErrors, 'SSuccessorBirthDate'),\n ssn: this.findErrorMessageByKey(apiErrors, 'SSuccessorSSN'),\n isUtahPayer: this.findErrorMessageByKey(apiErrors, 'SSuccessorUtahResident'),\n [ADDRESS_TYPES.MAILING]: {\n street1: this.findErrorMessageByKey(apiErrors, 'SSuccessorMailingAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'SSuccessorMailingAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'SSuccessorMailingCity'),\n state: this.findErrorMessageByKey(apiErrors, 'SSuccessorMailingState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'SSuccessorMailingZipCode'),\n },\n [ADDRESS_TYPES.PHYSICAL]: {\n street1: this.findErrorMessageByKey(apiErrors, 'SSuccessorPhysicalAddress1'),\n street2: this.findErrorMessageByKey(apiErrors, 'SSuccessorPhysicalAddress2'),\n city: this.findErrorMessageByKey(apiErrors, 'SSuccessorPhysicalCity'),\n state: this.findErrorMessageByKey(apiErrors, 'SSuccessorPhysicalState'),\n zipCode: this.findErrorMessageByKey(apiErrors, 'SSuccessorPhysicalZipCode'),\n },\n },\n accountSummary: {\n poaLevel: this.findErrorMessageByKey(apiErrors, 'PoaLevel'),\n fedTaxDocs: this.findErrorMessageByKey(apiErrors, 'CanViewFedTaxDocs'),\n stateTaxDocs: this.findErrorMessageByKey(apiErrors, 'CanViewStateTaxDocs'),\n },\n };\n\n return applicationInfoErrors;\n }\n\n clearToastErrorsOnce = () => {\n if (!this.state.applicationInfoErrorsCleared) {\n this.props.allNotificationsHide();\n this.setState({\n applicationInfoErrorsCleared: true,\n });\n }\n }\n\n copyAddress = (personType, addressType) => {\n this.clearToastErrorsOnce();\n const updatedApplicationInfoErrors = cloneDeep(this.state.applicationInfoErrors);\n\n const updatedApplicationInfo = cloneDeep(this.state.applicationInfo);\n const personToCopyTo = personType === PERSON_TYPES.AO ? PERSON_TYPES.BENE : PERSON_TYPES.AO;\n updatedApplicationInfo[personToCopyTo][addressType] = cloneDeep(updatedApplicationInfo[personType][addressType]);\n updatedApplicationInfoErrors[personToCopyTo][addressType].street1 = '';\n updatedApplicationInfoErrors[personToCopyTo][addressType].street2 = '';\n updatedApplicationInfoErrors[personToCopyTo][addressType].city = '';\n updatedApplicationInfoErrors[personToCopyTo][addressType].state = '';\n updatedApplicationInfoErrors[personToCopyTo][addressType].zipCode = '';\n\n this.setState({\n applicationInfoErrors: updatedApplicationInfoErrors,\n applicationInfo: updatedApplicationInfo,\n });\n }\n\n onPersonInput = (value, personType, keyName) => {\n this.clearToastErrorsOnce();\n const updatedApplicationInfoErrors = cloneDeep(this.state.applicationInfoErrors);\n updatedApplicationInfoErrors[personType][keyName] = '';\n\n const updatedApplicationInfo = cloneDeep(this.state.applicationInfo);\n updatedApplicationInfo[personType][keyName] = value;\n\n // update bene age and band dropdown if bene's dob changed\n if (personType === PERSON_TYPES.BENE && keyName === 'birthDate') {\n const beneAge = dayjs().diff(dayjs(value), 'year');\n updatedApplicationInfo.beneAge = beneAge;\n this.setAgeBased(updatedApplicationInfo);\n }\n\n this.setState({\n applicationInfoErrors: updatedApplicationInfoErrors,\n applicationInfo: updatedApplicationInfo,\n });\n }\n\n onAddressInput = (value, personType, addressType, keyName) => {\n this.clearToastErrorsOnce();\n const updatedApplicationInfoErrors = cloneDeep(this.state.applicationInfoErrors);\n updatedApplicationInfoErrors[personType][addressType][keyName] = '';\n\n const updatedApplicationInfo = cloneDeep(this.state.applicationInfo);\n updatedApplicationInfo[personType][addressType][keyName] = value;\n\n if (keyName === 'city') {\n updatedApplicationInfoErrors[personType][addressType].city = validator.cityValidator(updatedApplicationInfo[personType][addressType].city);\n }\n\n this.setState({\n applicationInfoErrors: updatedApplicationInfoErrors,\n applicationInfo: updatedApplicationInfo,\n });\n }\n\n onAccountSummaryInput = (value, keyName) => {\n this.clearToastErrorsOnce();\n const updatedApplicationInfoErrors = cloneDeep(this.state.applicationInfoErrors);\n updatedApplicationInfoErrors.accountSummary[keyName] = '';\n\n const updatedApplicationInfo = cloneDeep(this.state.applicationInfo);\n updatedApplicationInfo.accountSummary[keyName] = value;\n\n this.setState({\n applicationInfoErrors: updatedApplicationInfoErrors,\n applicationInfo: updatedApplicationInfo,\n });\n }\n\n onAoContactInput = (value, keyName) => {\n this.clearToastErrorsOnce();\n const updatedApplicationInfoErrors = cloneDeep(this.state.applicationInfoErrors);\n updatedApplicationInfoErrors[PERSON_TYPES.AO].contact[keyName] = '';\n\n const updatedApplicationInfo = cloneDeep(this.state.applicationInfo);\n updatedApplicationInfo[PERSON_TYPES.AO].contact[keyName] = value;\n\n this.setState({\n applicationInfoErrors: updatedApplicationInfoErrors,\n applicationInfo: updatedApplicationInfo,\n });\n }\n\n onAgeBandSelection = (index) => {\n this.setState({ selectedAgeBand: index });\n }\n\n setAgeBased = (applicationInfo) => {\n const isAgeBased = applicationInfo.ageBands.length > 1;\n const beneAge = applicationInfo.beneAge;\n const beneficiaryAgeBandIndex = applicationInfo.ageBands.findIndex(ageBand => (ageBand.MinimumAge <= beneAge || ageBand.MinimumAge === null) && (ageBand.MaximumAge >= beneAge || ageBand.MaximumAge === null));\n this.setState({\n isAgeBased,\n selectedAgeBand: beneficiaryAgeBandIndex > -1 ? beneficiaryAgeBandIndex : 0,\n });\n }\n\n scrollToTop = () => {\n document.body.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n }\n\n onNextHandler = (e) => {\n e.preventDefault();\n\n const {\n validateLpoaAccount,\n saveToReduxLpoaAccount,\n onNextHandler,\n notificationShow,\n text: {\n LpoaAccount: {\n account_edit,\n }\n }\n } = this.props;\n\n this.setState({\n validationLoading: true,\n applicationErrorsCleared: false,\n });\n validateLpoaAccount(this.state.applicationInfo, this.state.guid)\n .then(() => {\n // validation successful\n saveToReduxLpoaAccount(this.state.applicationInfo);\n onNextHandler();\n })\n .catch(response => {\n const apiErrors = response.payload.data;\n const updatedApplicationErrors = this.mapApiErrors(apiErrors);\n\n this.setState({\n validationLoading: false,\n applicationInfoErrorsCleared: false,\n applicationInfoErrors: updatedApplicationErrors,\n });\n\n // if there are no matched errors (for example non-editable ones) it needs to be shown as toast errors\n apiErrors\n .filter(error => error.Field !== null && this.apiEditableKeyNames.indexOf(error.Field) === -1)\n .forEach((error) => {\n notificationShow(error.Message, 'error');\n });\n\n // show a warning toast that there are inline errors\n if (!isEqual(updatedApplicationErrors, this.clearedApplicationInfoErrors)) {\n notificationShow(account_edit.error_lpoa_account_validate, 'error');\n }\n });\n }\n\n componentDidMount() {\n this.props.allNotificationsHide();\n const guid = new URLSearchParams(window.location.search.toLowerCase()).get('key');\n this.setState({ guid });\n\n if (this.props.applicationInfo.lpoaFirmName === '' || guid.toUpperCase() !== this.props.applicationInfo.guid.toUpperCase()) {\n this.setState({ accountLoading: true });\n this.props.getLpoaAccount(guid)\n .then(() => {\n this.setState({\n accountLoading: false,\n applicationInfo: this.props.applicationInfo,\n });\n this.setAgeBased(this.props.applicationInfo);\n })\n .finally(() => {\n this.setState({\n accountLoading: false,\n });\n });\n }\n else {\n this.setAgeBased(this.props.applicationInfo);\n }\n }\n\n render() {\n const {\n accountLoading,\n validationLoading,\n applicationInfo,\n applicationInfoErrors,\n isAgeBased,\n selectedAgeBand,\n } = this.state;\n\n const {\n text: {\n LpoaAccount: {\n btn_reject,\n btn_next,\n btn_print,\n account_edit,\n },\n },\n renderNavigationButton,\n rejectLoading,\n showRejectModalHandler,\n documents,\n } = this.props;\n\n return (\n \n
\n
{account_edit.lpoa_review_title}
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n\n
\n {account_edit.warning_text_above_buttons}\n
\n\n
\n {renderNavigationButton(btn_reject, showRejectModalHandler, 'text', rejectLoading || accountLoading || validationLoading, rejectLoading)}\n {renderNavigationButton(btn_print, () => window.print(), 'text', rejectLoading || accountLoading || validationLoading, validationLoading)}\n {renderNavigationButton(btn_next, this.onNextHandler, 'contained', rejectLoading || accountLoading || validationLoading, validationLoading)}\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default connect(select, {\n getLpoaAccount,\n saveToReduxLpoaAccount,\n validateLpoaAccount,\n notificationShow,\n allNotificationsHide,\n})(LanguageHOC(AccountEdit));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n Button,\n FormControl,\n FormGroup,\n FormControlLabel,\n FormHelperText,\n Checkbox,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\n\nimport styles from './styles.module.scss';\n\nexport class RSAQuestions extends Component {\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_learn_more: PropTypes.string,\n btn_submit_answer: PropTypes.string,\n err_required: PropTypes.string,\n msg_rsa_select: PropTypes.string,\n verify_identity_title: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n }).isRequired,\n RSA: PropTypes.object.isRequired,\n handlePostRSA: PropTypes.func.isRequired,\n };\n\n state = {\n answers: [],\n errors: this.props.RSA.Questions.map(() =>false),\n }\n\n parseSelection(selection) {\n const [questionId, choiceId] = selection.split('|');\n return { questionId: parseInt(questionId), choiceId: parseInt(choiceId) };\n }\n\n findAnswerIndex(questionId, answers) {\n return answers.findIndex(answer => answer.questionId === questionId);\n }\n\n resetQuestionError = (questionId) => {\n const questionIndex = this.props.RSA.Questions.findIndex(question => question.QuestionId === questionId);\n const updatedErrors = cloneDeep(this.state.errors);\n updatedErrors[questionIndex] = false;\n this.setState({ errors: updatedErrors });\n }\n\n handleRadioChoices = e => {\n const value = e.target.value;\n const { questionId, choiceId } = this.parseSelection(value);\n // reset error\n this.resetQuestionError(questionId);\n // single choice \n const updatedAnswers = cloneDeep(this.state.answers);\n const answerIndex = this.findAnswerIndex(questionId, updatedAnswers);\n if (answerIndex === -1) {\n updatedAnswers.push({ questionId, choices: [{ choiceId }] });\n } \n else {\n updatedAnswers[answerIndex] = { questionId, choices: [{ choiceId }] };\n }\n\n this.setState({ answers: updatedAnswers });\n }\n\n handleCheckboxChoices = e => {\n const name = e.target.name;\n const { questionId, choiceId } = this.parseSelection(name);\n // reset error\n this.resetQuestionError(questionId);\n // multiple choices\n const updatedAnswers = cloneDeep(this.state.answers);\n const answerIndex = this.findAnswerIndex(questionId, updatedAnswers);\n if (answerIndex === -1) {\n updatedAnswers.push({ questionId, choices: [{ choiceId }] });\n } \n else {\n const answer = updatedAnswers[answerIndex];\n const choiceIndex = answer.choices.findIndex(choice => choice.choiceId === choiceId);\n if (choiceIndex === -1) {\n // checked -> add \n answer.choices.push({ choiceId });\n }\n else {\n // unchecked -> delete\n answer.choices.splice(choiceIndex, 1);\n }\n }\n\n this.setState({ answers: updatedAnswers });\n }\n\n validateForm = (answers) => {\n const { RSA: { Questions } } = this.props;\n\n // reset errors\n const errors = Questions.map(() =>false);\n let hasError = false;\n\n // validate choices have been made\n Questions.forEach((question, questionIndex) => { \n const answerIndex = answers.findIndex(answer => answer.questionId === question.QuestionId);\n if (answerIndex === -1) {\n errors[questionIndex] = true;\n hasError = true;\n }\n else if (answers[answerIndex].choices.length === 0) {\n errors[questionIndex] = true;\n hasError = true;\n }\n });\n\n if (hasError)\n this.setState({ errors });\n\n return hasError;\n }\n\n sendRSAAnswers = e => {\n e.preventDefault();\n const { answers } = this.state;\n const { RSA } = this.props;\n\n if (!this.validateForm(answers)) {\n // build Answer Set\n const answerSet = {};\n answerSet.questionSetId = RSA.QuestionSetId;\n answerSet.transactionId = RSA.TransactionId;\n answerSet.answers = answers; \n\n this.props.handlePostRSA(answerSet);\n }\n }\n\n renderRSAQandA() {\n const { answers, errors } = this.state;\n const { text: { Multifactor }, loading, RSA: { Questions } } = this.props;\n\n const questRendered = Questions.map((question, questionIndex) => {\n if (question.AnswerType.toLowerCase() === 'single') {\n const choices = question.Choices.map(choice => {\n return (\n }\n label={choice.Text}\n value={`${question.QuestionId}|${choice.ChoiceId}`}\n />\n );\n });\n return (\n
\n

{question.Text}

\n
{question.HelpText}
\n \n {choices}\n \n {errors[questionIndex] && Multifactor.err_required}\n
\n );\n }\n else {\n const choices = question.Choices.map(choice => {\n return (\n }\n label={choice.Text}\n onChange={this.handleCheckboxChoices}\n name={`${question.QuestionId}|${choice.ChoiceId}`}\n value={`${question.QuestionId}|${choice.ChoiceId}`}\n />\n );\n });\n return (\n
\n

{question.Text}

\n
{question.HelpText}
\n \n \n {choices}\n \n {errors[questionIndex] && Multifactor.err_required}\n \n
\n );\n }\n });\n\n return (\n \n \n {questRendered}\n
\n \n \n {Multifactor.btn_submit_answer}\n \n \n
\n \n
\n );\n }\n\n render() {\n const { text: { Multifactor } } = this.props;\n\n return (\n
\n

{Multifactor.verify_identity_title}

\n

{Multifactor.msg_rsa_select}

\n {this.renderRSAQandA()}\n
\n );\n }\n\n}\n\nexport default LanguageHOC(RSAQuestions);","/*\n*\n* FirstTermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n FormControlLabel,\n FormHelperText,\n Checkbox,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport class FirstTermsAndConditions extends React.Component {\n static propTypes = {\n scrollToTop: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n onBackHandler: PropTypes.func.isRequired,\n onNextHandler: PropTypes.func.isRequired,\n showRejectModalHandler: PropTypes.func.isRequired,\n text: PropTypes.object.isRequired,\n rejectLoading: PropTypes.bool.isRequired,\n };\n\n state = {\n termsChecked: false,\n termsCheckedError: '',\n }\n\n onTermsCheckboxClicked = () => {\n this.setState({\n termsCheckedError: '',\n termsChecked: !this.state.termsChecked,\n });\n }\n\n onNextHandler = () => {\n if (this.state.termsChecked)\n this.props.onNextHandler();\n else\n this.setState({ termsCheckedError: 'Please agree to terms.' });\n }\n\n componentDidMount() {\n this.props.scrollToTop();\n }\n\n render() {\n const { termsChecked, termsCheckedError } = this.state;\n\n const {\n text: { \n LpoaAccount: {\n first_terms_and_conditions,\n btn_back,\n btn_reject,\n btn_next,\n btn_print,\n } \n },\n renderNavigationButton,\n onBackHandler,\n showRejectModalHandler,\n rejectLoading,\n } = this.props;\n\n return (\n
\n

{first_terms_and_conditions.title}

\n
\n {first_terms_and_conditions.content()}\n
\n \n }\n label={'Accept Terms'}\n />\n {termsCheckedError && {termsCheckedError}}\n
\n {renderNavigationButton(btn_back, onBackHandler, 'text', rejectLoading)}\n {renderNavigationButton(btn_reject, showRejectModalHandler, 'text', rejectLoading, rejectLoading)}\n {renderNavigationButton(btn_print, () => window.print(), 'text', rejectLoading)}\n {renderNavigationButton(btn_next, this.onNextHandler, 'contained', rejectLoading)}\n
\n
\n );\n }\n}\n\nexport default LanguageHOC(FirstTermsAndConditions);","/*\n*\n* SecondTermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n FormControlLabel,\n FormHelperText,\n Checkbox,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\n\nexport class SecondTermsAndConditions extends React.Component {\n\n static propTypes = {\n scrollToTop: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n onBackHandler: PropTypes.func.isRequired,\n onSubmitHandler: PropTypes.func.isRequired,\n showRejectModalHandler: PropTypes.func.isRequired,\n text: PropTypes.object.isRequired,\n rejectLoading: PropTypes.bool.isRequired,\n approveAccountLoading: PropTypes.bool.isRequired,\n };\n\n state = {\n termsChecked: false,\n termsCheckedError: '',\n }\n\n onTermsCheckboxClicked = () => {\n this.setState({\n termsCheckedError: '',\n termsChecked: !this.state.termsChecked,\n });\n }\n\n onSubmitHandler = () => {\n if (this.state.termsChecked)\n this.props.onSubmitHandler();\n else\n this.setState({ termsCheckedError: 'Please agree to terms.' });\n }\n\n componentDidMount() {\n this.props.scrollToTop();\n }\n\n render() {\n const { termsChecked, termsCheckedError } = this.state;\n\n const {\n text: {\n LpoaAccount:\n {\n second_terms_and_conditions,\n btn_back,\n btn_reject,\n btn_submit,\n btn_print,\n }\n },\n renderNavigationButton,\n onBackHandler,\n showRejectModalHandler,\n rejectLoading,\n approveAccountLoading,\n } = this.props;\n\n return (\n
\n

{second_terms_and_conditions.title}

\n
\n {second_terms_and_conditions.content()}\n
\n \n }\n label={second_terms_and_conditions.accept_terms_checkbox_label}\n />\n {termsCheckedError && {termsCheckedError}}\n
\n {renderNavigationButton(btn_back, onBackHandler, 'text', approveAccountLoading || rejectLoading)}\n {renderNavigationButton(btn_reject, showRejectModalHandler, 'text', approveAccountLoading || rejectLoading, rejectLoading)}\n {renderNavigationButton(btn_print, () => window.print(), 'text', approveAccountLoading || rejectLoading)}\n {renderNavigationButton(btn_submit, this.onSubmitHandler, 'contained', approveAccountLoading || rejectLoading, approveAccountLoading)}\n
\n
\n );\n }\n\n}\n\nexport default LanguageHOC(SecondTermsAndConditions);","/*\n*\n* LpoaAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport {\n My529Logo,\n LoadingOverlay,\n ConfirmModal,\n notificationShow,\n allNotificationsHide,\n} from '@frontend/common';\n\nimport {\n getRSA,\n postRSA,\n rejectLpoaAccount,\n getLpoaAccount,\n approveLpoaAccount,\n} from './actions';\n\nimport {\n RSA_STATUS,\n} from './constants';\n\nimport AccountEdit from './AccountEdit';\nimport RSAQuestions from './RSAQuestions';\nimport FirstTermsAndConditions from './FirstTermsAndConditions';\nimport SecondTermsAndConditions from './SecondTermsAndConditions';\n\nimport styles from './styles.module.scss';\n\n// there is only showing one component at a time\nconst COMPONENT_NAMES = {\n ACCOUNT_EDIT: 'AccountEdit',\n RSA_QUESTIONS: 'RSAQuestions',\n RSA_FAILED: 'RSAFailed',\n FIRST_T_AND_C: 'FirstTermsAndConditions',\n SECOND_T_AND_C: 'SecondTermsAndConditions',\n ACCOUNT_CREATED: 'AccountCreated',\n};\n\nconst select = (state) => ({\n applicationInfo: state.lpoaAccount.applicationInfo,\n loginAlreadyExists: state.lpoaAccount.loginAlreadyExists,\n newAccountNumber: state.lpoaAccount.newAccountNumber,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\nexport class LpoaAccount extends React.Component {\n static propTypes = {\n getRSA: PropTypes.func.isRequired,\n postRSA: PropTypes.func.isRequired,\n applicationInfo: PropTypes.object.isRequired,\n rejectLpoaAccount: PropTypes.func.isRequired,\n getLpoaAccount: PropTypes.func.isRequired,\n approveLpoaAccount: PropTypes.func.isRequired,\n loginAlreadyExists: PropTypes.bool.isRequired,\n newAccountNumber: PropTypes.number.isRequired,\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n LpoaAccount: PropTypes.object.isRequired,\n }).isRequired,\n };\n\n state = {\n getRSALoading: false,\n postRSALoading: false,\n validateAccountLoading: false,\n approveAccountLoading: false,\n firstAttemptFailed: false,\n rejectLoading: false,\n showRejectModal: false,\n show: {\n [COMPONENT_NAMES.ACCOUNT_EDIT]: false,\n [COMPONENT_NAMES.RSA_QUESTIONS]: false,\n [COMPONENT_NAMES.RSA_FAILED]: false,\n [COMPONENT_NAMES.FIRST_T_AND_C]: false,\n [COMPONENT_NAMES.SECOND_T_AND_C]: false,\n [COMPONENT_NAMES.ACCOUNT_CREATED]: false,\n },\n failedRSAMessage: '',\n guid: '',\n RSA: {},\n };\n\n setStateShowHandler = (componentName) => {\n // first reset all\n const updatedShow = {\n [COMPONENT_NAMES.ACCOUNT_EDIT]: false,\n [COMPONENT_NAMES.RSA_QUESTIONS]: false,\n [COMPONENT_NAMES.RSA_FAILED]: false,\n [COMPONENT_NAMES.FIRST_T_AND_C]: false,\n [COMPONENT_NAMES.SECOND_T_AND_C]: false,\n [COMPONENT_NAMES.ACCOUNT_CREATED]: false,\n };\n // update only one\n updatedShow[componentName] = true;\n this.setState({ show: updatedShow });\n }\n\n scrollToTop = () => {\n document.body.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n }\n\n handlePostRSA = (answerSet) => {\n this.setState({ postRSALoading: true });\n this.props.postRSA(this.state.guid, answerSet)\n .then((response) => {\n const RSA = response.payload.data;\n this.setState({ RSA });\n switch (RSA.Status) {\n case RSA_STATUS.RSA_NOT_PASSED_YET:\n this.setStateShowHandler(COMPONENT_NAMES.RSA_QUESTIONS);\n this.setState({ firstAttemptFailed: true }); // assuming that calling POST is the 2nd attempt\n break;\n case RSA_STATUS.RSA_FAILED:\n this.setStateShowHandler(COMPONENT_NAMES.RSA_FAILED);\n this.setState({\n firstAttemptFailed: false,\n failedRSAMessage: RSA.Message\n });\n break;\n case RSA_STATUS.RSA_PASSED:\n document.cookie = `LPOA_RSA_Passed=${RSA.Message}`;\n this.setStateShowHandler(COMPONENT_NAMES.ACCOUNT_EDIT);\n this.setState({\n firstAttemptFailed: false,\n });\n break;\n default: // this should be caught by the middleware\n }\n })\n .finally(() => {\n this.scrollToTop();\n this.setState({ postRSALoading: false });\n });\n }\n\n handleGetRSA = (guid) => {\n this.setState({ getRSALoading: true });\n this.props.getRSA(guid)\n .then((response) => {\n const RSA = response.payload.data;\n this.setState({ RSA });\n switch (RSA.Status) {\n case RSA_STATUS.RSA_NOT_PASSED_YET:\n this.setStateShowHandler(COMPONENT_NAMES.RSA_QUESTIONS);\n break;\n case RSA_STATUS.RSA_FAILED:\n this.setStateShowHandler(COMPONENT_NAMES.RSA_FAILED);\n this.setState({ failedRSAMessage: RSA.Message });\n break;\n case RSA_STATUS.RSA_PASSED:\n this.setStateShowHandler(COMPONENT_NAMES.ACCOUNT_EDIT);\n break;\n default: // this should be caught by the middleware\n }\n })\n .finally(() => {\n this.setState({ getRSALoading: false });\n });\n }\n\n onPOARejectHandler = (e) => {\n e.preventDefault();\n const { guid } = this.state;\n const { text: { LpoaAccount }, notificationShow } = this.props;\n\n this.setState({ rejectLoading: true });\n this.props.rejectLpoaAccount(guid)\n .then(() => {\n return this.props.getLpoaAccount(guid)\n .then(() => {\n notificationShow(LpoaAccount.success_lpoa_account_rejected, 'success');\n this.setState({\n applicationInfo: this.props.applicationInfo,\n });\n });\n })\n .finally(() => {\n this.scrollToTop();\n this.setStateShowHandler('');\n this.setState({\n showRejectModal: false,\n rejectLoading: false,\n });\n });\n }\n\n showRejectModalHandler = () => {\n this.setState({\n showRejectModal: true,\n });\n }\n\n onRejectModalClose = () => {\n this.setState({\n showRejectModal: false,\n });\n }\n\n onNextHandlerAccountEdit = () => {\n this.setStateShowHandler(COMPONENT_NAMES.FIRST_T_AND_C);\n }\n\n onNextHandlerFirstTermsAndConditions = () => {\n this.setStateShowHandler(COMPONENT_NAMES.SECOND_T_AND_C);\n }\n\n onBackHandlerFirstTermsAndConditions = () => {\n this.setStateShowHandler(COMPONENT_NAMES.ACCOUNT_EDIT);\n }\n\n onBackHandlerSecondTermsAndConditions = () => {\n this.setStateShowHandler(COMPONENT_NAMES.FIRST_T_AND_C);\n }\n\n onSubmitHandler = () => {\n const { \n approveLpoaAccount, \n notificationShow, \n text: { LpoaAccount },\n } = this.props;\n this.setState({ approveAccountLoading: true });\n approveLpoaAccount(this.props.applicationInfo, this.state.guid)\n .then(() => {\n notificationShow(LpoaAccount.success_lpoa_account_approved, 'success');\n this.setStateShowHandler(COMPONENT_NAMES.ACCOUNT_CREATED);\n })\n .finally(() => {\n this.setState({ approveAccountLoading: false });\n });\n }\n\n // Methods to render components\n renderNavigationButton = (label, onClick, variant, disabled = false, loading = false, color = 'primary') => {\n return (\n
\n \n \n {label}\n \n \n
\n );\n }\n\n renderAccountCreated = () => {\n const { \n newAccountNumber, \n loginAlreadyExists, \n supportNumber,\n text: { \n LpoaAccount: {\n btn_setup_login,\n btn_login,\n confirmation_page,\n btn_done,\n btn_print,\n } \n } \n } = this.props;\n\n const onDoneClick = () => (window.location = 'https://my529.org/');\n const onSetupLoginClick = () => this.props.history.push('/setup-user');\n const onLoginClick = () => this.props.history.push('/login');\n let confirmationSecondParagraph = confirmation_page.second_paragraph_setup(btn_setup_login, supportNumber);\n let logInOrSetUpButton = this.renderNavigationButton(btn_setup_login, onSetupLoginClick, 'text');\n if (loginAlreadyExists) { \n logInOrSetUpButton = this.renderNavigationButton(btn_login, onLoginClick, 'text');\n confirmationSecondParagraph = confirmation_page.second_paragraph_login(btn_login, supportNumber);\n }\n\n return (\n
\n

Account Created

\n

{confirmation_page.your_account_number}

\n

{newAccountNumber}

\n

{confirmation_page.first_paragraph}

\n

{confirmationSecondParagraph}

\n
\n {logInOrSetUpButton}\n {this.renderNavigationButton(btn_print, () => window.print(), 'text')}\n {this.renderNavigationButton(btn_done, onDoneClick, 'contained')}\n
\n
\n );\n }\n\n componentDidMount() {\n this.props.allNotificationsHide();\n const guid = new URLSearchParams(window.location.search.toLowerCase()).get('key');\n this.setState({ guid });\n this.handleGetRSA(guid);\n }\n\n render() {\n const {\n show,\n failedRSAMessage,\n getRSALoading,\n postRSALoading,\n approveAccountLoading,\n firstAttemptFailed,\n RSA,\n rejectLoading,\n showRejectModal,\n } = this.state;\n\n const {\n applicationInfo,\n text: { LpoaAccount }\n } = this.props;\n\n return (\n
\n {getRSALoading ? :\n
\n\n
\n
\n {firstAttemptFailed &&
{LpoaAccount.try_again_rsa_txt}
}\n {show[COMPONENT_NAMES.ACCOUNT_EDIT] &&\n \n }\n {show[COMPONENT_NAMES.RSA_QUESTIONS] &&\n \n }\n {show[COMPONENT_NAMES.RSA_FAILED] &&\n
\n {
{failedRSAMessage}
}\n
\n }\n {show[COMPONENT_NAMES.FIRST_T_AND_C] &&\n \n }\n {show[COMPONENT_NAMES.SECOND_T_AND_C] &&\n \n }\n {show[COMPONENT_NAMES.ACCOUNT_CREATED] &&\n this.renderAccountCreated()\n }\n \n
\n
\n }\n
\n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n getRSA,\n postRSA,\n rejectLpoaAccount,\n getLpoaAccount,\n approveLpoaAccount,\n notificationShow,\n allNotificationsHide,\n})(LanguageHOC(LpoaAccount)));\n","/*\n*\n* InterestedParties Actions\n*\n*/\nimport {\n ADD_INTERESTED_PARTY,\n CREATE_INTERESTED_PARTY,\n DELETE_INTERESTED_PARTY,\n EDIT_INTERESTED_PARTY,\n GET_INTERESTED_PARTIES,\n GET_IP_ACTIVATION_INFO,\n RESEND_INTERESTED_PARTY_EMAIL,\n} from './constants';\n\nimport {\n DELETErequest,\n GETrequest,\n POSTrequest,\n PUTrequest,\n} from 'utils/helpers/api_handler';\n\nexport function activateIpAccount(guid, ipInfo) {\n const response = POSTrequest(`/ip/activate/${guid}`, ipInfo);\n\n return {\n type: CREATE_INTERESTED_PARTY,\n payload: response,\n };\n}\n\nexport function addIp(ipInfo) {\n const response = POSTrequest('/ip', ipInfo);\n\n return {\n type: ADD_INTERESTED_PARTY,\n payload: response,\n };\n}\n\nexport function deleteIp(ipId) {\n const response = DELETErequest(`/ip/${ipId}`);\n \n return {\n type: DELETE_INTERESTED_PARTY,\n payload: response,\n meta: { ipId }\n };\n}\n\nexport function editIp(ipInfo) {\n const response = PUTrequest('/ip', ipInfo);\n\n return {\n type: EDIT_INTERESTED_PARTY,\n payload: response,\n meta: { ipId: ipInfo.interestedPartyId }\n };\n}\n\nexport function getActivationInfo(guid) {\n const payload = GETrequest(`/ip/ActivationInfo/${guid}`);\n return {\n type: GET_IP_ACTIVATION_INFO,\n payload\n };\n}\n\nexport function getInterestedParties() {\n const response = GETrequest('/ip');\n \n return {\n type: GET_INTERESTED_PARTIES,\n payload: response,\n };\n}\n\nexport function resendIpEmail(ipId) {\n const response = POSTrequest(`/ip/ResendActivation/${ipId}`);\n\n return {\n type: RESEND_INTERESTED_PARTY_EMAIL,\n payload: response,\n };\n}","/*\n*\n* CreateIpAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Checkbox,\n InfoIcon,\n LoadingOverlay,\n Modal,\n notificationShow,\n PasswordInput,\n PasswordRequirements,\n} from '@frontend/common';\nimport {\n Button,\n Accordion,\n FormHelperText,\n TextField,\n} from '@mui/material';\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\nimport { activateIpAccount } from 'components/Features/protected/InterestedParties/actions.js';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport styles from './styles.module.scss';\nimport parentStyles from '../styles.module.scss';\n\nconst select = (state) => ({\n emailAddress: state.interestedParties.activationInfo.emailAddress,\n passwordRequirements: state.static.passwordRequirements,\n});\n\n\nexport class CreateIpAccount extends React.Component {\n\n static propTypes = {\n activateIpAccount: PropTypes.func.isRequired,\n csaPin: PropTypes.string, // cannot be required because the API returns it as null\n emailAddress: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n redirectToLogin: PropTypes.func.isRequired,\n showCreateAccountForm: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n InterestedPartiesActivation: PropTypes.shape({\n btn_create: PropTypes.string,\n btn_i_agree: PropTypes.string,\n btn_read_terms: PropTypes.string,\n err_password_criteria: PropTypes.string,\n err_password_match: PropTypes.string,\n err_required_field: PropTypes.string,\n err_terms_agree: PropTypes.string,\n head_create_account: PropTypes.string,\n head_terms: PropTypes.string,\n lbl_email: PropTypes.string,\n lbl_firstname: PropTypes.string,\n lbl_lastname: PropTypes.string,\n lbl_password1: PropTypes.string,\n lbl_password2: PropTypes.string,\n lbl_pin: PropTypes.string,\n lbl_username: PropTypes.string,\n msg_change_email_when_logged_in: PropTypes.string,\n msg_ip_activated: PropTypes.string,\n text_terms: PropTypes.string,\n text_toggle_password_vis: PropTypes.string,\n })\n }).isRequired,\n toggleFormVisibility: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n formErrors: {},\n loading: false,\n newIp: {\n firstName: '',\n lastName: '',\n password1: '',\n password2: '',\n pin: '',\n userName: '',\n },\n passwordIsValid: false,\n passwordReqsVisible: false,\n termsChecked: false,\n termsModalOpen: false,\n };\n\n createIpAccount = e => {\n e.preventDefault();\n\n const formIsValid = this.validateForm();\n \n if (formIsValid) {\n this.setState({ loading: true });\n const guid = new URLSearchParams(window.location.search.toLowerCase()).get('request');\n\n this.props.activateIpAccount(guid, this.state.newIp)\n .then(() => {\n this.setState({ loading: false });\n this.props.redirectToLogin();\n this.props.notificationShow(this.props.text.InterestedPartiesActivation.msg_ip_activated, 'success');\n })\n .catch(res => {\n if (res.payload.data && res.payload.data.some(err => err.Field)) {\n this.setState({\n apiErrors: res.payload.data,\n loading: false,\n }, () => this.validateForm());\n }\n else {\n this.props.redirectToLogin();\n }\n });\n }\n }\n\n onInputChange = e => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n [e.target.name]: '',\n },\n newIp: {\n ...this.state.newIp,\n [e.target.name]: e.target.value,\n },\n });\n }\n\n validateForm = () => {\n const { apiErrors, newIp, passwordIsValid, termsChecked, } = this.state;\n const { InterestedPartiesActivation } = this.props.text;\n const formErrors = {};\n\n formErrors.firstName = validator.firstNameValidator(newIp.firstName);\n formErrors.lastName = validator.lastNameValidator(newIp.lastName);\n formErrors.userName = validator.userNameValidator(newIp.userName);\n formErrors.pin = newIp.pin ? '' : InterestedPartiesActivation.err_required_field;\n formErrors.terms = termsChecked ? '' : InterestedPartiesActivation.err_terms_agree;\n\n // Password validation\n if (!passwordIsValid) {\n formErrors.password1 = InterestedPartiesActivation.err_password_criteria;\n }\n if (!newIp.password1) {\n formErrors.password1 = InterestedPartiesActivation.err_required_field;\n }\n if (!newIp.password2) {\n formErrors.password2 = InterestedPartiesActivation.err_required_field;\n }\n if (newIp.password1 !== newIp.password2) {\n formErrors.password2 = InterestedPartiesActivation.err_password_match;\n }\n\n if (apiErrors.length > 0) {\n apiErrors.map(err => formErrors[err.Field] = err.Message);\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return Object.keys(formErrors).every(error => formErrors[error] === ''); // returns true if no errors\n }\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.props.passwordRequirementsGet();\n }\n if (this.props.csaPin) {\n this.setState({\n newIp: {\n ...this.state.newIp,\n pin: this.props.csaPin\n }\n });\n }\n }\n\n render() {\n const { csaPin, emailAddress, passwordRequirements, showCreateAccountForm, text: { InterestedPartiesActivation } } = this.props;\n const { formErrors, loading, newIp, passwordReqsVisible, termsChecked, termsModalOpen, } = this.state;\n return (\n \n !showCreateAccountForm ? this.activateIpAccount(e) : e.preventDefault()} // prevents form from submitting before its visible\n >\n

{InterestedPartiesActivation.head_create_account}

\n\n
\n
\n \n \n
\n\n \n\n \n \n \n\n \n\n this.setState({ passwordReqsVisible: false })}\n onChange={this.onInputChange}\n onFocus={() => this.setState({ passwordReqsVisible: true })}\n style={{ boxShadow: 'none' }}\n value={newIp.password1}\n variant='filled'\n />\n\n\n \n \n
\n this.setState({ passwordIsValid })}\n password={newIp.password1}\n passwordRequirements={passwordRequirements}\n />\n
\n \n\n
\n this.setState({ formErrors: { ...formErrors, terms: '' }, termsChecked: !termsChecked })}\n />\n {showCreateAccountForm && }\n {formErrors.terms && {formErrors.terms}}\n
\n
\n\n
\n \n showCreateAccountForm ? this.createIpAccount(e) : this.props.toggleFormVisibility()}\n type='submit'\n variant='contained'\n >\n {InterestedPartiesActivation.btn_create}\n \n \n
\n \n\n this.setState({ termsModalOpen: false })}\n show={termsModalOpen}\n title={InterestedPartiesActivation.head_terms}\n >\n {InterestedPartiesActivation.text_terms}\n \n
\n );\n }\n}\n\n\nexport default (connect(select, {\n activateIpAccount,\n notificationShow,\n passwordRequirementsGet,\n})(LanguageHOC(CreateIpAccount)));\n","/*\n*\n* LoginIp Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n TextField\n} from '@mui/material';\nimport {\n notificationShow,\n StyledLink,\n PasswordInput,\n} from '@frontend/common';\nimport { activateIpAccount } from 'components/Features/protected/InterestedParties/actions.js';\n\nimport styles from './styles.module.scss';\nimport parentStyles from '../styles.module.scss';\n\nexport class LoginIp extends React.Component {\n\n static propTypes = {\n activateIpAccount: PropTypes.func.isRequired,\n csaPin: PropTypes.string, // cannot be required because the API returns it as null\n notificationShow: PropTypes.func.isRequired,\n redirectToLogin: PropTypes.func.isRequired,\n showCreateAccountForm: PropTypes.bool.isRequired,\n showLoginOnly: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n ForgotPassword: PropTypes.shape({ nav_path: PropTypes.string }),\n ForgotUsername: PropTypes.shape({ nav_path: PropTypes.string }),\n InterestedPartiesActivation: PropTypes.shape({\n err_required_field: PropTypes.string,\n head_already_have_account: PropTypes.string,\n head_login: PropTypes.string,\n lbl_password1: PropTypes.string,\n lbl_pin: PropTypes.string,\n lbl_username: PropTypes.string,\n msg_ip_activated: PropTypes.string,\n }),\n Login: PropTypes.shape({\n btn_login: PropTypes.string,\n nav_forgot_password: PropTypes.string,\n nav_forgot_username: PropTypes.string,\n })\n }).isRequired,\n toggleFormVisibility: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n formErrors: {},\n loading: false,\n password1: '',\n pin: '',\n userName: '',\n };\n\n onInputChange = e => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n [e.target.name]: '',\n },\n [e.target.name]: e.target.value,\n });\n }\n\n ipLogin = (e) => {\n e.preventDefault();\n \n const isValid = this.validateForm();\n const { password1, pin, userName } = this.state;\n \n if (isValid) {\n const guid = new URLSearchParams(window.location.search.toLowerCase()).get('request');\n\n const ipLoginInfo = {\n password1,\n pin,\n userName,\n };\n\n this.props.activateIpAccount(guid, ipLoginInfo)\n .then(() => {\n this.setState({ loading: false });\n this.props.redirectToLogin();\n this.props.notificationShow(this.props.text.InterestedPartiesActivation.msg_ip_activated, 'success');\n })\n .catch(res => {\n this.setState({\n apiErrors: res.payload.data,\n loading: false,\n }, () => this.validateForm());\n });\n }\n }\n\n validateForm = () => {\n const { apiErrors, password1, pin, userName } = this.state;\n const { InterestedPartiesActivation } = this.props.text;\n const formErrors = {};\n\n formErrors.userName = userName ? '' : InterestedPartiesActivation.err_required_field;\n formErrors.pin = pin ? '' : InterestedPartiesActivation.err_required_field;\n formErrors.password1 = password1 ? '' : InterestedPartiesActivation.err_required_field;\n\n if (apiErrors.length > 0) {\n apiErrors.map(err => formErrors[err.Field] = err.Message);\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return Object.keys(formErrors).every(error => formErrors[error] === ''); // returns true if no errors\n }\n\n componentDidMount() {\n if (this.props.csaPin) {\n this.setState({ pin: this.props.csaPin });\n }\n }\n\n render() {\n const { formErrors, loading, password1, pin, userName, } = this.state;\n const { csaPin, showCreateAccountForm, showLoginOnly, text: { ForgotPassword, ForgotUsername, Login, InterestedPartiesActivation } } = this.props;\n\n return (\n \n !showCreateAccountForm ? e.preventDefault() : this.LoginIp(e)} // prevents form from submitting before its visible\n >\n

{showLoginOnly ? InterestedPartiesActivation.head_login : InterestedPartiesActivation.head_already_have_account}

\n
\n \n\n \n\n \n\n
\n {Login.nav_forgot_password}\n {Login.nav_forgot_username}\n
\n
\n\n
\n showCreateAccountForm ? this.props.toggleFormVisibility() : this.ipLogin(e)}\n type='submit'\n variant='contained'\n >\n {Login.btn_login}\n \n
\n\n \n
\n );\n }\n}\n\n\nexport default connect(null, {\n activateIpAccount,\n notificationShow,\n})(LanguageHOC(LoginIp));\n","/*\n*\n* InterestedPartiesActivation Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport CreateIpAccount from './CreateIpAccount';\nimport LoginIp from './LoginIp';\nimport {\n Button,\n Drawer,\n} from '@mui/material';\nimport {\n allNotificationsHide,\n IconBtnTooltip,\n LoadingOverlay,\n My529Logo,\n} from '@frontend/common';\nimport { getActivationInfo } from 'components/Features/protected/InterestedParties/actions.js';\n\nimport styles from './styles.module.scss';\n\n\nconst select = (state) => ({\n activationInfo: state.interestedParties.activationInfo,\n});\n\n\nexport class InterestedPartiesActivation extends React.Component {\n\n static propTypes = {\n activationInfo: PropTypes.object.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n getActivationInfo: PropTypes.func.isRequired,\n text: PropTypes.shape({\n InterestedPartiesActivation: PropTypes.shape({\n btn_learn_more: PropTypes.string,\n text_learn_more: PropTypes.func,\n }),\n Login: PropTypes.shape({ nav_path: PropTypes.string }),\n }).isRequired,\n };\n\n state = {\n csaPin: new URLSearchParams(window.location.search.toLowerCase()).get('pin'),\n learnMoreOpen: false,\n loading: false,\n showCreateAccountForm: false,\n showLoginOnly: false,\n };\n\n getActivationInfo() {\n const guid = new URLSearchParams(window.location.search.toLowerCase()).get('request');\n\n if (guid) {\n this.setState({ loading: true });\n\n this.props.getActivationInfo(guid)\n .then(() => {\n this.setState({\n showLoginOnly: this.props.activationInfo.loginExistsAndIsRequired\n });\n })\n .catch(() => this.redirectToLogin())\n .finally(() => this.setState({ loading: false }));\n }\n else {\n this.redirectToLogin();\n }\n }\n\n redirectToLogin = () => {\n this.props.history.push(this.props.text.Login.nav_path);\n }\n\n toggleFormVisibility = () => {\n this.setState({ showCreateAccountForm: !this.state.showCreateAccountForm });\n }\n\n componentDidMount() {\n this.props.allNotificationsHide();\n this.getActivationInfo();\n }\n\n render() {\n const { csaPin, learnMoreOpen, loading, showCreateAccountForm, showLoginOnly, } = this.state;\n const { InterestedPartiesActivation } = this.props.text;\n\n return (\n
\n {loading ?\n
\n \n
\n :\n
\n
\n
\n
\n \n \n\n {!showLoginOnly && ( // if we detect user has an account, do not show Create form\n \n )}\n\n
\n
\n\n
\n this.setState({ learnMoreOpen: true })}\n >\n {InterestedPartiesActivation.btn_learn_more}\n \n
\n
\n }\n\n this.setState({ learnMoreOpen: false })} open={learnMoreOpen}>\n
\n this.setState({ learnMoreOpen: false })}\n />\n

{InterestedPartiesActivation.btn_learn_more}

\n

{InterestedPartiesActivation.text_learn_more()[0]}

\n {!showLoginOnly &&

{InterestedPartiesActivation.text_learn_more()[1]}

} {/* do not show user line about creating account since they can only log in */}\n

{InterestedPartiesActivation.text_learn_more()[2]}

\n
\n
\n
\n );\n }\n}\n\n\nexport default connect(select, {\n allNotificationsHide,\n getActivationInfo,\n})(LanguageHOC(InterestedPartiesActivation));\n","/*\n*\n* Accounts Actions\n*\n*/\nimport {\n DELETErequest,\n GETrequest,\n POSTrequest,\n PUTrequest\n} from 'utils/helpers/api_handler';\n\nimport {\n CHANGE_BENE_ADDRESS,\n CHANGE_SUCCESSOR,\n DELETE_BENE_ADDRESS,\n GET_ACCOUNTS,\n GET_ACCOUNTS_SUMMARY,\n GET_BALANCE_HISTORY,\n GET_SUCCESSORS,\n GET_TRANSACTION_DETAILS,\n GET_UPCOMING_TRANSACTIONS,\n GET_ALL_UPCOMING_TRANSACTIONS,\n GET_ALL_TRANSACTIONS,\n GET_TRANSACTIONS_EXPORT,\n GET_ALL_TRANSACTIONS_EXPORT,\n REMOVE_SUCCESSOR,\n ACCOUNT_INVESTMENT_PATH_GET,\n GET_PRR_DATES,\n GET_PRR,\n SUBMIT_PROMO_CODE,\n} from './constants';\n\n\nexport function changeBeneAddress(address, beneficiaryId) {\n const payload = PUTrequest(`/agents/bene/${beneficiaryId}/Address`, address);\n return {\n type: CHANGE_BENE_ADDRESS,\n payload,\n meta: { beneficiaryId }\n };\n}\n\nexport function changeSuccessor(accountId, successor) {\n const response = POSTrequest(`/accounts/${accountId}/Successor`, successor);\n return {\n type: CHANGE_SUCCESSOR,\n payload: response,\n };\n}\n\nexport function deleteBeneAddress(addressId, addressType, beneficiaryId) {\n const payload = DELETErequest(`/agents/bene/${beneficiaryId}/Address/${addressId}`);\n return {\n type: DELETE_BENE_ADDRESS,\n payload,\n meta: { addressType, beneficiaryId }\n };\n}\n\nexport function getAccounts() {\n const response = GETrequest('/accounts');\n return {\n type: GET_ACCOUNTS,\n payload: response\n };\n}\n\nexport function getAccountsSummary() {\n return {\n type: GET_ACCOUNTS_SUMMARY,\n };\n}\n\nexport function getBalanceHistory() {\n const response = GETrequest('/accounts/BalanceHistory');\n return {\n type: GET_BALANCE_HISTORY,\n payload: response\n };\n}\n\nexport function getSuccessors() {\n return {\n type: GET_SUCCESSORS,\n };\n}\n\nexport function getUpcomingTransactions(accountId) {\n const response = GETrequest(`/accounts/${accountId}/schedules`);\n return {\n type: GET_UPCOMING_TRANSACTIONS,\n payload: response\n };\n}\n\nexport function getAllUpcomingTransactions() {\n const response = GETrequest('/accounts/schedules');\n return {\n type: GET_ALL_UPCOMING_TRANSACTIONS,\n payload: response\n };\n}\n\nexport function getAllTransactions() {\n const response = GETrequest('/accounts/transactions');\n return {\n type: GET_ALL_TRANSACTIONS,\n payload: response\n };\n}\n\nexport function getTransactionsExport(accountId, filterDates) {\n const response = POSTrequest(`/accounts/${accountId}/transactions/download`, filterDates, { contentType: 'text/csv' });\n return {\n type: GET_TRANSACTIONS_EXPORT,\n payload: response\n };\n}\n\nexport function getAllTransactionsExport(filterDates) {\n const response = POSTrequest('/accounts/transactions/download', filterDates, { contentType: 'text/csv' });\n return {\n type: GET_ALL_TRANSACTIONS_EXPORT,\n payload: response\n };\n}\n\nexport function getTransactionDetails(accountId, transactionId) {\n const response = GETrequest(`/accounts/${accountId}/transactions/${transactionId}`);\n return {\n type: GET_TRANSACTION_DETAILS,\n payload: response\n };\n}\n\nexport function removeSuccessor(accountId, successorId) {\n const response = DELETErequest(`/accounts/${accountId}/successor/${successorId}`);\n return {\n type: REMOVE_SUCCESSOR,\n payload: response,\n };\n}\n\nexport function accountInvestmentPathGet(accountId, includeZeroAllocations = false) {\n const payload = GETrequest(`/options/account/${accountId}?includeZeroAllocations=${includeZeroAllocations}`);\n return {\n type: ACCOUNT_INVESTMENT_PATH_GET,\n payload,\n };\n}\n\nexport function getPRRDates(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/PRRDates`);\n return {\n type: GET_PRR_DATES,\n payload,\n };\n}\n\nexport function getPRR(accountId, startDate, endDate) {\n const body = { startDate, endDate };\n const payload = POSTrequest(`/accounts/${accountId}/PRR`, body);\n return {\n type: GET_PRR,\n payload,\n };\n}\n\nexport function submitPromoCode(accountId, promoCode) {\n const payload = POSTrequest(`/accounts/${accountId}/${promoCode}`);\n return {\n type: SUBMIT_PROMO_CODE,\n payload,\n };\n}\n\n\n","import { TWO_FACTOR_STATUS, RSA_STATUS } from 'components/AppRoot/Navigation/constants';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\n\n// protected action\nexport const protectAction = claims => {\n \n if (claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.COMPLETED\n || claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.BYPASSED) {\n return MULTIFACTOR_TYPE.AUTH;\n }\n else {\n if (claims.TwoFactorRegistration === TWO_FACTOR_STATUS.COMPLETED) { // REGISTRATION CHECK\n if (claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.UNAVAILABLE) {\n if (claims.RSAVerification === RSA_STATUS.BYPASSED\n || claims.RSAVerification === RSA_STATUS.COMPLETED) {\n return MULTIFACTOR_TYPE.AUTH;\n }\n else {\n return MULTIFACTOR_TYPE.RSA;\n }\n }\n else {\n return MULTIFACTOR_TYPE.TWO_FACTOR;\n }\n }\n else {\n if (claims.RSAVerification === RSA_STATUS.BYPASSED\n || claims.RSAVerification === RSA_STATUS.COMPLETED) {\n return MULTIFACTOR_TYPE.AUTH;\n }\n else {\n return MULTIFACTOR_TYPE.RSA;\n }\n }\n }\n \n};\n\n// Protect Withdrawals\nexport const protectWithdrawal = (transactionType, Transactions, preferredInfo, claims) => {\n \n if (transactionType !== ''\n && (transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type\n || transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type)) {\n \n if (preferredInfo.IsRegistered\n && claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.PENDING) {\n return MULTIFACTOR_TYPE.TWO_FACTOR;\n }\n\n if (preferredInfo.IsRegistered\n && claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.COMPLETED\n && claims.RSAVerification === RSA_STATUS.PENDING) {\n return MULTIFACTOR_TYPE.RSA;\n }\n\n if (claims.RSAVerification === RSA_STATUS.COMPLETED) {\n return MULTIFACTOR_TYPE.AUTH;\n }\n else { \n if (preferredInfo.IsRegistered\n && (claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.BYPASSED\n || claims.TwoFactorAuthentication === TWO_FACTOR_STATUS.UNAVAILABLE)) {\n if (claims.RSAVerification === RSA_STATUS.BYPASSED) {\n return MULTIFACTOR_TYPE.AUTH;\n }\n else {\n return MULTIFACTOR_TYPE.RSA;\n }\n }\n else if (!preferredInfo.IsRegistered\n && claims.RSAVerification === RSA_STATUS.PENDING) {\n return MULTIFACTOR_TYPE.RSA;\n }\n else {\n return MULTIFACTOR_TYPE.AUTH;\n }\n }\n\n } \n\n};","/*\n*\n* Transactions Actions\n*\n*/\nimport {\n GETrequest,\n POSTrequest,\n PUTrequest,\n DELETErequest,\n} from 'utils/helpers/api_handler';\nimport {\n startCase\n} from 'lodash';\nimport {\n GET_GROUP_ACCOUNTS,\n ACCOUNT_TRANSACTION_PREVIEW,\n CLOSE_TRANSACTION_LOADER,\n OPEN_TRANSACTION_LOADER,\n SET_PREFLIGHT_PARAMS,\n GET_TRANSFER_ACCOUNTS,\n GET_SCHEDULED_TRANSACTION,\n TRANSACTION_DELETE,\n TRANSFER_CREATE,\n TRANSFER_UPDATE,\n GET_PRE_TRANSACTION_DETAILS,\n GET_CONTRIBUTION_DETAILS,\n CONTRIBUTION_CREATE,\n CONTRIBUTION_EDIT,\n SCHEDULE_RUN_DATES_GET,\n NEXT_RUN_DATE_GET,\n WITHDRAWAL_CREATE,\n WITHDRAWAL_UPDATE,\n SCHOOLS_GET,\n SET_WITHDRAWAL_SUBMITTED,\n BIRTHDATE_VERIFY,\n REQUEST_WITHDRAWAL,\n GET_ELECTRONICPAYMENT_SCHOOL,\n} from './constants';\n\nexport function getGroupAccounts() {\n const response = GETrequest('/accountgroups');\n return {\n type: GET_GROUP_ACCOUNTS,\n payload: response,\n };\n}\n\nexport function transactionPreview(accountId, transactionType) {\n const payload = GETrequest(`/accounts/${accountId}/preview?type=${transactionType}`);\n return {\n type: ACCOUNT_TRANSACTION_PREVIEW,\n meta: { transactionType },\n payload,\n };\n}\n\nexport function openPreflightModal() {\n return {\n type: OPEN_TRANSACTION_LOADER\n };\n}\n\nexport function closeTransactionLoader() {\n return {\n type: CLOSE_TRANSACTION_LOADER\n };\n}\n\nexport function setPreflightParams(account, transactionType) {\n return {\n type: SET_PREFLIGHT_PARAMS,\n account,\n transactionType\n };\n}\n\nexport function getTransferAccounts(accountId) {\n const payload = GETrequest(`/accounts/${accountId}/transferaccounts`);\n return {\n type: GET_TRANSFER_ACCOUNTS,\n payload\n };\n}\n\nexport function getScheduledTransaction(transaction) {\n //this is a generic get call that will get any full transaction details based on the URL attached to upcoming transaction object\n // for option change type it needs to include zero allocations\n const optionChangeParameter = transaction.TransactionType === 'Option Change' ? '?includeZeroAllocations=true' : '';\n const response = GETrequest(`${transaction.URL}${optionChangeParameter}`);\n return {\n type: GET_SCHEDULED_TRANSACTION,\n payload: response,\n meta: { type: transaction.TransactionType, AccountId: transaction.AccountId }\n };\n}\n\nexport function deleteTransaction(transaction) {\n const response = DELETErequest(transaction.URL);\n return {\n type: TRANSACTION_DELETE,\n payload: response,\n };\n}\n\nexport function createNewTransfer(payload) {\n const response = POSTrequest('/transactions/transfers', payload);\n return {\n type: TRANSFER_CREATE,\n payload: response,\n };\n}\n\nexport function updateTransfer(transfer) {\n const response = PUTrequest(`/transactions/transfers/${transfer.TransferId}`, transfer);\n return {\n type: TRANSFER_UPDATE,\n payload: response,\n };\n}\n\nexport function getPreTransactionDetails(accountId, accountGroupId) {\n const response = GETrequest(`/accountgroups/${accountGroupId}`);\n return {\n type: GET_PRE_TRANSACTION_DETAILS,\n meta: { accountId },\n payload: response,\n };\n}\n\nexport function getContributionDetails(accountId, accountList, agentBankAccounts, isEditing, MaximumBeneficiaryDeposit) {\n return {\n type: GET_CONTRIBUTION_DETAILS,\n accountId,\n accountList,\n agentBankAccounts,\n isEditing,\n MaximumBeneficiaryDeposit,\n };\n}\n\nexport function createContribution(newContribution) {\n const payload = POSTrequest('/transactions/ContributionSchedules', newContribution);\n return {\n type: CONTRIBUTION_CREATE,\n payload,\n };\n}\n\nexport function editContribution(transactionId, editedContribution) {\n const payload = PUTrequest(`/transactions/ContributionSchedules/${transactionId}`, editedContribution);\n return {\n type: CONTRIBUTION_EDIT,\n payload,\n };\n}\n\nexport function getScheduleRunDates(dates, frequency) {\n const datesPath = dates.map(date => `start=${date}`).join('&');\n const payload = GETrequest(`/Transactions/ScheduleRunDates?${datesPath}&frequency=${frequency}`);\n return {\n type: SCHEDULE_RUN_DATES_GET,\n payload,\n meta: dates,\n };\n}\n\nexport function getNextRunDate(dates, day, frequency) {\n let datePath;\n\n function formatDate(date) {\n return new Date(date).toISOString().split('T')[0]; // eslint-disable-line\n }\n\n if (dates instanceof Array) {\n const joinedDates = dates.map(date => `start=${formatDate(date)}`).join('&'); // eslint-disable-line\n datePath = `?${joinedDates}&`;\n }\n else {\n datePath = `/${formatDate(dates)}?`;\n }\n\n const response = GETrequest(`/Transactions/ScheduleRunDates${datePath}frequency=${startCase(frequency)}`);\n\n return {\n type: NEXT_RUN_DATE_GET,\n payload: response,\n meta: { day, frequency }\n };\n}\n\nexport function createNewWithdrawal(data) {\n const response = POSTrequest('/transactions/WithdrawalSchedules', data);\n return {\n type: WITHDRAWAL_CREATE,\n payload: response\n };\n}\n\nexport function updateWithdrawal(scheduleId, data) {\n const response = PUTrequest(`/transactions/WithdrawalSchedules/${scheduleId}`, data);\n return {\n type: WITHDRAWAL_UPDATE,\n payload: response\n };\n}\n\nexport function getSchools() {\n const response = GETrequest('/EducationalInstitutions');\n return {\n type: SCHOOLS_GET,\n payload: response,\n };\n}\n\nexport function getElectronicSchoolPaymentSchool(ElectronicSchoolPaymentSchoolId) {\n const response = GETrequest(`/EducationalInstitutions/ElectronicSchoolPaymentSchool/${ElectronicSchoolPaymentSchoolId}`);\n return {\n type: GET_ELECTRONICPAYMENT_SCHOOL,\n payload: response,\n };\n}\n\nexport function setWithdrawalSubmitted(withdrawalSubmitted) {\n return {\n type: SET_WITHDRAWAL_SUBMITTED,\n payload: withdrawalSubmitted,\n };\n}\n\nexport function requestWithdrawal(info) {\n const response = POSTrequest('/transactions/WithdrawalSchedules/CreateWithdrawalRequest', info);\n return {\n type: REQUEST_WITHDRAWAL,\n payload: response\n };\n}\n\nexport function verifyBirthdate(info) {\n const response = POSTrequest('/Authentication/BirthdayVerification', info);\n return {\n type: BIRTHDATE_VERIFY,\n payload: response\n };\n}","/*\n*\n* BeneContactForm Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\nimport { GETaddress } from 'utils/helpers/api_handler';\nimport * as validator from 'utils/helpers/form_validation';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n AddressTextFields,\n CardBody,\n CardButtons,\n CardTitle,\n InfoIcon,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport {\n Button,\n Tab,\n Tabs,\n} from '@mui/material';\nimport {\n changeBeneAddress,\n deleteBeneAddress\n} from '../../../actions';\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\n language: state.static.language,\n usStates: state.static.usStates\n});\n\nexport class BeneContactForm extends React.Component {\n\n static propTypes = {\n accountsGet: PropTypes.func.isRequired,\n addresses: PropTypes.shape({\n Mailing: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n }),\n Physical: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n }),\n Other: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n })\n }).isRequired,\n ADDRESS_TYPES: PropTypes.shape({\n Physical: PropTypes.string,\n Mailing: PropTypes.string,\n Other: PropTypes.string\n }).isRequired,\n addressType: PropTypes.string,\n beneficiaryId: PropTypes.number.isRequired,\n changeBeneAddress: PropTypes.func.isRequired,\n deleteBeneAddress: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n permissions: PropTypes.shape({\n EditAccount: PropTypes.bool\n }).isRequired,\n text: PropTypes.shape({\n BeneContactForm: PropTypes.shape({\n btn_change: PropTypes.string,\n btn_delete: PropTypes.string,\n err_field_required: PropTypes.string,\n err_postal_code: PropTypes.string,\n err_smarty_streets: PropTypes.string,\n err_street1_max_length: PropTypes.string,\n head_title: PropTypes.string,\n head_title_beneficiary_contact: PropTypes.string,\n msg_address_changed: PropTypes.string,\n msg_address_deleted: PropTypes.string,\n msg_unsaved_changes: PropTypes.string,\n text_intl_address: PropTypes.string,\n }),\n AddressCard: PropTypes.object,\n Login: PropTypes.shape({ nav_path: PropTypes.string }),\n }).isRequired,\n usStates: PropTypes.array.isRequired,\n callbackOnAddressChange: PropTypes.func,\n };\n\n static defaultProps = {\n callbackOnAddressChange: null,\n addressType: null,\n };\n\n state = {\n addressSuggestions: [],\n addressType: this.props.addressType || this.props.ADDRESS_TYPES.Mailing,\n apiErrors: {\n Mailing: [],\n Physical: [],\n Other: [],\n },\n autocompleteText: {\n Mailing: this.props.addresses.Mailing.StreetAddress1,\n Physical: this.props.addresses.Physical.StreetAddress1,\n Other: this.props.addresses.Other.StreetAddress1,\n },\n errors: {\n Mailing: [],\n Physical: [],\n Other: [],\n },\n isDeleting: false,\n isSaving: false,\n Mailing: this.props.addresses.Mailing,\n Other: this.props.addresses.Other,\n Physical: this.props.addresses.Physical,\n };\n\n addressDelete = (e) => {\n e.preventDefault();\n const { addressType } = this.state;\n\n this.setState({ isDeleting: true });\n\n this.props.deleteBeneAddress(this.state[addressType].AddressId, addressType, this.props.beneficiaryId)\n .then(() => {\n // on success call callback if passed\n if (this.props.callbackOnAddressChange)\n this.props.callbackOnAddressChange();\n\n this.setState({ isDeleting: false, });\n this.props.notificationShow(this.props.text.BeneContactForm.msg_address_deleted, 'success');\n\n this.props.accountsGet();\n })\n .catch(() => this.setState({ isDeleting: false }));\n }\n\n addressTabChange = (e, value) => {\n this.setState({ addressType: value });\n };\n\n addressChange = (e) => {\n e.preventDefault();\n const { addressType } = this.state;\n const addressIsValid = this.addressValidate();\n this.uppercaseAddress();\n\n if (addressIsValid) {\n this.setState({ isSaving: true });\n this.props.changeBeneAddress({ ...this.state[addressType], Type: addressType }, this.props.beneficiaryId)\n .then(() => {\n // on success call callback if passed\n if (this.props.callbackOnAddressChange)\n this.props.callbackOnAddressChange();\n this.setState({ isSaving: false, });\n this.props.notificationShow(this.props.text.BeneContactForm.msg_address_changed, 'success');\n\n this.props.accountsGet();\n })\n .catch(response => {\n this.setState({\n apiErrors: {\n ...this.state.apiErrors,\n [addressType]: response.payload.data\n },\n isSaving: false\n }, () => this.addressValidate()); // set errors from api to state and then validate form\n });\n }\n }\n\n addressValidate = () => {\n const errors = {\n Mailing: [],\n Other: [],\n Physical: [],\n };\n const { addressType, apiErrors, Mailing } = this.state;\n const { err_field_required, err_postal_code, err_street1_max_length } = this.props.text.BeneContactForm;\n const postalCodeRegex = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)|(^\\d{9}$)|(^\\d{5} \\d{4}$)/;\n\n if (addressType === this.props.ADDRESS_TYPES.Mailing) {\n if (!Mailing.StreetAddress1) {\n errors.Mailing.push({\n input: 'StreetAddress1',\n message: err_field_required,\n });\n }\n if (!Mailing.State) {\n errors.Mailing.push({\n input: 'State',\n message: err_field_required,\n });\n }\n if (!Mailing.PostalCode.match(postalCodeRegex)) {\n errors.Mailing.push({\n input: 'PostalCode',\n message: err_postal_code,\n });\n }\n if (Mailing.StreetAddress1.length > 40) {\n errors.Mailing.push({\n input: 'StreetAddress1',\n message: err_street1_max_length\n });\n }\n if (Mailing.StreetAddress2.length > 40) {\n errors.Mailing.push({\n input: 'StreetAddress2',\n message: err_street1_max_length\n });\n }\n }\n const cityError = validator.cityValidator(this.state[addressType].City);\n if (cityError) {\n errors[addressType].push({\n input: 'City',\n message: cityError,\n });\n }\n if (apiErrors[addressType].length > 0) {\n apiErrors[addressType].forEach(error => {\n errors[addressType].push({\n input: error.Field,\n message: error.Message\n });\n });\n }\n\n this.setState({\n errors: {\n Mailing: errors.Mailing,\n Physical: errors.Physical,\n Other: errors.Other,\n }\n });\n\n return errors[addressType].length === 0;\n }\n\n autocompleteSuggestionsGet = event => {\n const { addressType } = this.state;\n\n this.setState({\n apiErrors: {\n ...this.state.apiErrors,\n [addressType]: []\n },\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: event.target.value\n },\n [addressType]: {\n ...this.state[addressType],\n StreetAddress1: event.target.value\n }\n }, () => this.addressValidate());\n\n // returning promises so it can be used in testing instead of setTimeout\n if (event.target.value.trim()) { // Only make a request if there is text. Trims out leading spaces to avoid a Smarty Streets freakout\n return GETaddress(event.target.value)\n .then(res => {\n if (res.data.suggestions !== null) {\n this.setState({\n addressSuggestions: res.data.suggestions\n });\n }\n })\n .catch(res => {\n if (res !== 'short-criteria') {\n this.props.notificationShow(this.props.text.AddressCard.err_smarty_streets, 'error');\n }\n this.setState({ addressSuggestions: [] });\n });\n }\n\n return;\n }\n\n buttonsCompose = () => {\n const { addressType, isDeleting, isSaving } = this.state;\n const isReadOnlyAddress = !this.props.permissions.EditAccount || (this.state[addressType].Country !== 'US' && this.state[addressType].Country !== '');\n\n if (!isReadOnlyAddress) {\n return [\n addressType !== this.props.ADDRESS_TYPES.Mailing &&\n \n \n {`${this.props.text.BeneContactForm.btn_delete} ${addressType}`}\n \n ,\n \n \n {`${this.props.text.BeneContactForm.btn_change} ${addressType}`}\n \n \n ];\n }\n return [];\n }\n\n changeButtonIsDisabled = () => {\n const { addressType, isSaving } = this.state;\n return isSaving || isEqual(this.state[addressType], this.props.addresses[addressType]) || this.state.errors[addressType].length > 0;\n }\n\n deleteButtonDisabled = () => {\n const { addressType, isDeleting, isSaving } = this.state;\n return isSaving\n || isDeleting\n || Object.keys(this.state[addressType]).every(key => this.state[addressType][key] === '')\n || Object.keys(this.props.addresses[addressType]).every(key => this.props.addresses[addressType][key] === '');\n }\n\n errorGet = (input) => {\n const errorsForAddressType = this.state.errors[this.state.addressType];\n const error = errorsForAddressType.find(error => error.input === input);\n return error ? error.message : '';\n }\n\n onAutocompleteAddressSelect = (event, selection) => {\n const { addressType, errors } = this.state;\n\n if (!selection) { // if user clears input\n this.setState({\n autocompleteText: {\n ...this.state[addressType],\n [addressType]: '',\n },\n addressSuggestions: [],\n [addressType]: {\n ...this.state[addressType],\n StreetAddress1: ''\n }\n }, () => this.addressValidate());\n }\n else if (!Object.prototype.hasOwnProperty.call(selection, 'street_line')) { // if user sends too many requests in a short period, autocomplete stops sending suggestions back, so just set input to state\n this.setState({\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: selection\n },\n [addressType]: {\n ...this.state[addressType],\n StreetAddress1: selection,\n }\n });\n }\n else { // if all is working as expected and selection is valid SmartyStreets object\n this.setState({\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: selection.street_line.toUpperCase()\n },\n errors: { ...errors, [addressType]: [] },\n [addressType]: {\n ...this.state[addressType],\n City: selection.city.toUpperCase(),\n PostalCode: selection.zipcode.toUpperCase(),\n State: selection.state.toUpperCase(),\n StreetAddress1: selection.street_line.toUpperCase(),\n StreetAddress2: selection.secondary.toUpperCase()\n }\n });\n }\n }\n\n onInputChange = (name, event) => {\n const { addressType } = this.state;\n this.setState({\n apiErrors: {\n ...this.state.apiErrors,\n [addressType]: []\n },\n [addressType]: {\n ...this.state[addressType],\n [name]: event.target.value\n }\n }, () => this.addressValidate());\n }\n\n uppercaseAddress = () => {\n const addressToUppercase = this.state[this.state.addressType];\n\n // eslint-disable-next-line no-unused-vars\n for (const field in addressToUppercase) {\n addressToUppercase[field] = typeof addressToUppercase[field] === 'string' ? addressToUppercase[field].toUpperCase() : addressToUppercase[field];\n }\n\n this.setState({ [this.state.addressType]: addressToUppercase });\n }\n\n componentDidUpdate(prevProps) {\n const { addresses } = this.props;\n\n if (!isEqual(addresses, prevProps.addresses)) {\n this.setState({\n Mailing: addresses.Mailing,\n Other: addresses.Other,\n Physical: addresses.Physical,\n autocompleteText: {\n Mailing: addresses.Mailing?.StreetAddress1,\n Physical: addresses.Physical?.StreetAddress1,\n Other: addresses.Other?.StreetAddress1,\n }\n });\n }\n }\n\n render() {\n const { addressSuggestions, addressType, autocompleteText } = this.state;\n const { ADDRESS_TYPES, permissions, text: { BeneContactForm } } = this.props;\n const isReadOnlyAddress = !permissions.EditAccount || (this.state[addressType].Country !== 'US' && this.state[addressType].Country !== '');\n\n return (\n \n
\n \n
\n {BeneContactForm.head_title_beneficiary_contact}\n \n
\n
\n \n
\n \n \n \n \n \n
\n { this.addressValidate(e); this.uppercaseAddress(); } }} // eslint-disable-line\n isReadOnly={isReadOnlyAddress}\n onAutocompleteAddressSelect={this.onAutocompleteAddressSelect}\n onInputChange={this.onInputChange}\n usStates={this.props.usStates}\n />\n
\n
\n
\n \n {this.buttonsCompose()}\n \n
\n
\n );\n }\n}\n\nexport default connect(select, {\n changeBeneAddress,\n deleteBeneAddress,\n notificationShow,\n})(LanguageHOC(BeneContactForm));\n","/*\n*\n* UpdateBeneAddressModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { getAccounts } from 'components/Features/protected/Accounts/actions';\n\nimport {\n getPreTransactionDetails,\n} from 'components/Features/protected/Accounts/Transactions/actions';\n\nimport BeneContactForm from 'components/Features/protected/Accounts/AccountDetails/BeneContact/BeneContactForm';\n\nimport {\n Modal,\n LoadingOverlay,\n} from '@frontend/common';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n});\n\nexport class UpdateBeneAddressModal extends React.Component {\n static propTypes = {\n show: PropTypes.bool.isRequired,\n getAccounts: PropTypes.func.isRequired,\n accountList: PropTypes.array.isRequired,\n handleCancel: PropTypes.func.isRequired,\n match: PropTypes.object.isRequired,\n getPreTransactionDetails: PropTypes.func.isRequired,\n modalTitle: PropTypes.string.isRequired,\n addressType: PropTypes.string,\n };\n\n state = {\n loading: true,\n account: {},\n };\n\n callbackOnAddressChange = () => {\n if (this.props.match.params.groupId) { // this will basically check if there is a groupId in the params, which is only the case in Withdrawals.\n this.props.getPreTransactionDetails(this.props.match.params.accountId, this.props.match.params.groupId);\n }\n this.updateAccount();\n }\n\n accountsGet = () => {\n this.props.accountList.length === 0 && this.setState({ loading: true });\n this.props.getAccounts()\n .finally(() => this.setState({ loading: false }));\n }\n\n updateAccount = () => {\n const paramAccountId = parseInt(this.props.match.params.accountId);\n const account = this.props.accountList.find(account => account.accountId === paramAccountId);\n this.setState({ account });\n };\n\n componentDidMount() {\n this.updateAccount();\n this.setState({ loading: false });\n }\n\n render() {\n const { account, loading } = this.state;\n\n const {\n show,\n handleCancel,\n modalTitle,\n addressType,\n } = this.props;\n\n return (\n
\n \n {loading ? \n :\n \n }\n \n
\n\n );\n }\n\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getPreTransactionDetails,\n})(UpdateBeneAddressModal));","/*\n*\n* BeneContact Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { isEqual, } from 'lodash';\nimport {\n Tab,\n Tabs,\n Button,\n Icon,\n} from '@mui/material';\nimport { InfoIcon, LoadingOverlay, IconBtnTooltip } from '@frontend/common';\n\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\n\nimport parentStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nimport UpdateBeneAddressModal from './UpdateBeneAddressModal';\n\nconst select = state => ({\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\n claims: state.session.claims,\n});\n\nexport class BeneContact extends React.Component {\n\n static propTypes = {\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n setLastClicked: PropTypes.func.isRequired,\n isLastClicked: PropTypes.bool.isRequired,\n addresses: PropTypes.shape({\n Mailing: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n }),\n Physical: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n }),\n Other: PropTypes.shape({\n City: PropTypes.string,\n Country: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n })\n }).isRequired,\n ADDRESS_TYPES: PropTypes.shape({\n Physical: PropTypes.string,\n Mailing: PropTypes.string,\n Other: PropTypes.string\n }).isRequired,\n canEditAddress: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n BeneContact: PropTypes.shape({\n btn_add_address: PropTypes.string,\n title_update_bene_address: PropTypes.string,\n text_no_address: PropTypes.func,\n }),\n BeneContactForm: PropTypes.shape({\n text_intl_address: PropTypes.string,\n }),\n Login: PropTypes.shape({ nav_path: PropTypes.string }),\n }).isRequired,\n };\n\n state = {\n addressType: this.props.ADDRESS_TYPES.Mailing,\n Mailing: this.props.addresses.Mailing,\n Physical: this.props.addresses.Physical,\n Other: this.props.addresses.Other,\n showChangeAddressModal: false,\n isLoading: false,\n\n // For 2FA/RSA checks\n hasPrecondition: false,\n };\n\n\n addressTabChange = (e, value) => {\n this.setState({ addressType: value });\n };\n\n\n composeAddress = () => {\n const { canEditAddress, text: { BeneContact, BeneContactForm } } = this.props;\n const { StreetAddress1, StreetAddress2, StreetAddress3, City, State, PostalCode, Country, } = this.state[this.state.addressType];\n const isInternationalAddress = (Country !== 'US' && Country !== '');\n const isReadOnlyAddress = !canEditAddress || isInternationalAddress;\n const missingAddressCompose = !isReadOnlyAddress ? (\n add}\n onClick={() => this.handleShowChangeAddressModal()}\n >\n {BeneContact.btn_add_address}\n \n ) : (
{BeneContact.text_no_address(this.state.addressType)}
);\n \n \n\n return (\n this.state[this.state.addressType].AddressId ? (\n \n
\n
\n {!isInternationalAddress ? (\n
\n {`${StreetAddress1}${StreetAddress2 ? ` ${StreetAddress2}` : ''}, `}\n {`${City}, ${State} ${PostalCode} `}\n
\n ) : (\n
\n {StreetAddress1 &&
{`${StreetAddress1} `}
}\n {StreetAddress2 &&
{`${StreetAddress2} `}
}\n {StreetAddress3 &&
{`${StreetAddress3}, `}
}\n {City &&
{`${City}, `}
}\n {State &&
{`${State} `}
}\n {PostalCode &&
{`${PostalCode} `}
}\n {Country &&
{`${Country} `}
}\n
\n )\n }\n {canEditAddress && }\n
\n\n {!isReadOnlyAddress &&\n
\n this.handleShowChangeAddressModal()}\n title={BeneContact.title_update_bene_address}\n />\n
}\n
\n
\n ) : (\n
\n {missingAddressCompose}\n
\n )\n\n );\n };\n\n handleShowChangeAddressModal = () => {\n const multiStatus = protectAction(this.props.claims);\n this.props.setLastClicked();\n this.setState({ isLoading: true });\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState({ hasPrecondition: true });\n this.props.get2FAPrecondition().catch(() => this.setState({ isLoading: false }));\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA) {\n this.setState({ hasPrecondition: true });\n this.props.getRSAPrecondition().catch(() => this.setState({ isLoading: false }));\n }\n else {\n this.setState({ showChangeAddressModal: true, isLoading: false, hasPrecondition: false, });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.addresses, this.props.addresses)) {\n const { Mailing, Physical, Other } = this.props.addresses;\n this.setState({ Mailing, Physical, Other });\n }\n\n // handle 2FA auth\n const multiStatus = protectAction(this.props.claims);\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH && this.props.isLastClicked) {\n this.handleShowChangeAddressModal();\n }\n }\n\n render() {\n const { addressType, showChangeAddressModal } = this.state;\n const { ADDRESS_TYPES, text: { BeneContact } } = this.props;\n\n return (\n
\n
\n \n \n \n \n \n\n {this.composeAddress()}\n
\n\n this.setState({ showChangeAddressModal: false })}\n modalTitle={BeneContact.title_update_bene_address}\n addressType={addressType}\n />\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n get2FAPrecondition,\n getRSAPrecondition,\n})(LanguageHOC(BeneContact)));\n","/*\n*\n* AllocationChart Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport * as d3 from 'd3';\nimport * as material_ui_theme from 'utils/config/material_ui_theme';\nimport { lighten } from '@mui/material/styles';\n\nimport { Tooltip } from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nconst agentActiveFill = material_ui_theme.default.palette.secondary.main;\nconst agentFill = lighten(material_ui_theme.default.palette.secondary.main, 0.65);\nconst interestedPartyActiveFill = material_ui_theme.default.palette.primary.main;\nconst interestedPartyFill = lighten(material_ui_theme.default.palette.primary.main, 0.65);\nconst innerRadius = 60;\nconst outerRadius = 100;\nconst activeOuterRadius = 110;\nconst connectorInnerRadius = activeOuterRadius + 25;\nconst connectorOuterRadius = connectorInnerRadius + 5;\n\nexport class AllocationChart extends React.Component {\n\n static propTypes = {\n allocations: PropTypes.array.isRequired,\n isInterestedParty: PropTypes.bool.isRequired,\n activeIndex: PropTypes.number.isRequired,\n pieSelection: PropTypes.func.isRequired,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { allocations, activeIndex, isInterestedParty } = nextProps;\n if (!allocations) return {};\n\n const prevActiveIndex = prevState.slices.findIndex(slice => slice.isActive);\n const activeFill = isInterestedParty ? interestedPartyActiveFill : agentActiveFill;\n const fill = isInterestedParty ? interestedPartyFill : agentFill;\n\n const pie = d3.pie()\n .value(data => data.ActualPercentageNum);\n\n const arcs = pie(allocations);\n\n const connectorArcGenerator = d3.arc();\n \n const slices = arcs.map((arc, i) => {\n const isActive = activeIndex === i;\n const isPreviousActive = prevActiveIndex === i;\n const connectorStartAngle = (arc.startAngle + arc.endAngle) / 2;\n\n const arcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n .padAngle(arc.value > 0.05 ? 0.02 : 0.005);\n\n const activeArcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(activeOuterRadius)\n .padAngle(arc.value > 0.05 ? 0.02 : 0.005);\n \n const pieConnectorPath = connectorArcGenerator({\n innerRadius: activeOuterRadius,\n outerRadius: connectorInnerRadius + 5,\n startAngle: connectorStartAngle - .02,\n endAngle: connectorStartAngle + .02,\n });\n const connectorPath = connectorArcGenerator({\n innerRadius: connectorInnerRadius,\n outerRadius: connectorOuterRadius,\n startAngle: connectorStartAngle,\n endAngle: Math.PI,\n });\n const dataConnectorPath = connectorArcGenerator({\n innerRadius: connectorInnerRadius,\n outerRadius: connectorOuterRadius + 30,\n startAngle: Math.PI - .02,\n endAngle: Math.PI + .02,\n });\n\n const arcCentroid = arcGenerator.centroid(arc);\n\n\n return {\n ...arc,\n isActive,\n isPreviousActive,\n startAngle: arc.startAngle, // used for main donut section\n slicePath: isActive ? activeArcGenerator(arc) : arcGenerator(arc), // used for main donut sections\n fill: isActive ? activeFill : fill, // will be shaded lighter, if active selection\n activeFill, // activeFill will always be used for connectorPaths from selected slice to data\n textTransform: `translate(${arcCentroid})`, // finds the center point of each pie slice to put the text in\n pieConnectorPath, // connects outerPath to connectorPath\n connectorPath, // a curved path for only the active selection that points down to the data\n dataConnectorPath, // connects connectorPath down to data below chart\n };\n });\n\n\n if (prevActiveIndex !== activeIndex) {\n // new selection transitions, only run on new selection\n const sliceElements = d3.select('.slices');\n \n // main pie slice, only does a color transition\n sliceElements\n .selectAll('.slicePath')\n .data(slices)\n .attr('d', slice => slice.slicePath)\n .transition()\n .duration(1000)\n .attrTween('d', slice => {\n const activeInterpolate = d3.interpolate(outerRadius, activeOuterRadius);\n const prevActiveInterpolate = d3.interpolate(activeOuterRadius, outerRadius);\n return tween => {\n if (slice.isActive) {\n const activeArcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(activeInterpolate(tween)) // causes the outerRadius to increase to larger size on selection\n .padAngle(slice.value > 0.05 ? 0.02 : 0.005);\n return activeArcGenerator(slice);\n }\n else if (slice.isPreviousActive) {\n const prevActiveArcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(prevActiveInterpolate(tween)) // causes the outerRadius to decreases to normal size on new selection\n .padAngle(slice.value > 0.05 ? 0.02 : 0.005);\n return prevActiveArcGenerator(slice);\n }\n else {\n return slice.slicePath;\n }\n };\n })\n .attrTween('fill', slice => {\n if (slice.isActive) {\n return d3.interpolateRgb(fill, activeFill);\n }\n else if (slice.isPreviousActive) {\n return d3.interpolateRgb(activeFill, fill);\n }\n else {\n return d3.interpolateRgb(fill, fill);\n }\n });\n \n // outerpath to connector path connection new selection transition\n sliceElements\n .selectAll('.pieConnectorPath')\n .data(slices)\n .transition()\n .duration(1000)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const connectorStartAngle = (slice.startAngle + slice.endAngle) / 2;\n const interpolate = d3.interpolate(outerRadius, connectorInnerRadius + 5);\n return tween => {\n return connectorArcGenerator({\n innerRadius: outerRadius,\n outerRadius: interpolate(tween), // makes the outerRadius grow larger from donut center over the duration time.\n startAngle: connectorStartAngle - .04,\n endAngle: connectorStartAngle,\n });\n };\n }\n });\n \n // connector path from pie to data new selection transition\n sliceElements\n .selectAll('.connectorPath')\n .data(slices)\n .transition()\n .duration(1500)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const connectorStartAngle = (slice.startAngle + slice.endAngle) / 2;\n const interpolate = d3.interpolate(connectorStartAngle, Math.PI);\n return tween => {\n const endAngle = interpolate(tween);\n return connectorArcGenerator({\n innerRadius: connectorInnerRadius,\n outerRadius: connectorOuterRadius,\n startAngle: connectorStartAngle,\n endAngle,\n });\n };\n }\n });\n \n // connector path going down to data.\n sliceElements\n .selectAll('.dataConnectorPath')\n .data(slices)\n .transition()\n .duration(1500)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const interpolate = d3.interpolate(connectorInnerRadius + 30, connectorInnerRadius);\n return tween => {\n return connectorArcGenerator({\n innerRadius: interpolate(tween), // decreases the innerRadius, causing the path to go up from the data to the connectorPath near the pie chart\n outerRadius: connectorOuterRadius + 30,\n startAngle: Math.PI - .02,\n endAngle: Math.PI + .02,\n });\n };\n }\n });\n }\n\n return { slices, };\n }\n\n state = {\n slices: [], // array of svg path commands, each representing a fund category\n };\n\n componentDidMount() {\n const { isInterestedParty } = this.props;\n const { slices } = this.state;\n const activeFill = isInterestedParty ? interestedPartyActiveFill : agentActiveFill;\n const fill = isInterestedParty ? interestedPartyFill : agentFill;\n\n // main select of svg g with class of .slices.\n const sliceElements = d3.select('.slices');\n\n // selects the pie slice sections, adds transition\n sliceElements\n .selectAll('.slicePath')\n .data(slices)\n .attr('fill', fill)\n .transition()\n .duration(2000)\n .attrTween('d', slice => {\n const interpolateAngle = d3.interpolate(slice.startAngle, slice.endAngle);\n const interpolateRadius = d3.interpolate(outerRadius, activeOuterRadius);\n // chart loading transitions\n const arcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n .padAngle(slice.value > 0.05 ? 0.02 : 0.005);\n return tween => {\n slice.endAngle = interpolateAngle(tween); \n const transitionArcGenerator = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(interpolateRadius(tween)) // causes the outerRadius to increase to larger size on selection\n .padAngle(slice.value > 0.05 ? 0.02 : 0.005);\n return slice.isActive ? transitionArcGenerator(slice) : arcGenerator(slice);\n };\n })\n .attrTween('fill', slice => {\n if (slice.isActive) {\n return d3.interpolateRgb(fill, activeFill);\n }\n });\n\n // creates genertic arcGenerator, this allows us to add in unique arguments for all the connectorPaths going from the donut to the data table below the chart.\n const connectorArcGenerator = d3.arc();\n\n // selects the pieConnectorPath (little section from outerPath to connectorPath), adds transition\n sliceElements\n .selectAll('.pieConnectorPath')\n .data(slices)\n .transition()\n .duration(1000)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const connectorStartAngle = (slice.startAngle + slice.endAngle) / 2;\n const interpolate = d3.interpolate(outerRadius, connectorInnerRadius + 5);\n return tween => {\n return connectorArcGenerator({\n innerRadius: outerRadius,\n outerRadius: interpolate(tween), // makes the outerRadius grow larger from donut center over the duration time.\n startAngle: connectorStartAngle - .02,\n endAngle: connectorStartAngle + .02,\n });\n };\n }\n });\n\n // selects the connectorPath, adds transition\n sliceElements\n .selectAll('.connectorPath')\n .data(slices)\n .transition()\n .duration(2000)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const connectorStartAngle = (slice.startAngle + slice.endAngle) / 2;\n const interpolate = d3.interpolate(connectorStartAngle, Math.PI);\n return tween => {\n const endAngle = interpolate(tween); // makes the slice connectorPath grow longer\n return connectorArcGenerator({\n innerRadius: connectorInnerRadius,\n outerRadius: connectorOuterRadius,\n startAngle: connectorStartAngle,\n endAngle,\n });\n };\n }\n });\n\n // selects the pieConnectorPath (little section from connectorPath down to the data table), adds transition\n sliceElements\n .selectAll('.dataConnectorPath')\n .data(slices)\n .attr('d', null)\n .transition()\n .duration(2000)\n .attrTween('d', slice => {\n if (slice.isActive) {\n const interpolate = d3.interpolate(connectorInnerRadius + 30, connectorInnerRadius);\n return tween => {\n return connectorArcGenerator({\n innerRadius: interpolate(tween), // decreases the innerRadius, causing the path to go up from the data to the connectorPath near the pie chart\n outerRadius: connectorOuterRadius + 30,\n startAngle: Math.PI - .02,\n endAngle: Math.PI + .02,\n });\n };\n }\n });\n }\n\n\n render() {\n const { pieSelection, } = this.props;\n\n return (\n \n \n {this.state.slices.map((slice, index) => (\n pieSelection(slice, index)}>\n\n {/* donut slice part */}\n \n \n \n\n {/* ///// connector path to data below chart ///// */}\n {/* Connector from pie slice to curved connector */}\n \n {/* Curved connector line */}\n \n {/* connector from curved connector towards data below chart */}\n \n \n {slice.value >= 0.06 && // label in donut slice will only show if greater than or equal to 5.5%\n \n \n {slice.data.ActualPercentage}\n \n }\n \n \n ))}\n \n \n );\n }\n}\n\n\nexport default (LanguageHOC(AllocationChart));\n","/*\n*\n* TransactionButtons Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Icon,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport { protectAction, protectWithdrawal } from 'utils/helpers/multifactor_handler';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { openPreflightModal, setPreflightParams } from 'components/Features/protected/Accounts/Transactions/actions';\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\n\nconst select = (state) => ({\n claims: state.session.claims,\n preferredInfo: state.multifactor.preferredInfo,\n});\n\n\nexport class TransactionButtons extends React.Component {\n\n static propTypes = {\n account: PropTypes.shape({\n accountId: PropTypes.number,\n permissions: PropTypes.shape({\n Contribute: PropTypes.bool,\n OptionChange: PropTypes.bool,\n Transfer: PropTypes.bool,\n Withdraw: PropTypes.bool,\n WithdrawalRequest: PropTypes.bool,\n })\n }).isRequired,\n callToActionType: PropTypes.string,\n claims: PropTypes.shape({\n TwoFactorAuthentication: PropTypes.string,\n RSAVerification: PropTypes.string,\n }).isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n setLastClicked: PropTypes.func,\n isCallToAction: PropTypes.bool,\n openPreflightModal: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n setPreflightParams: PropTypes.func.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number\n }).isRequired,\n text: PropTypes.shape({\n Transactions: PropTypes.shape({\n btn_transactions: PropTypes.string,\n transaction_title: PropTypes.func,\n TRANSACTION_TYPES: PropTypes.shape({\n CONTRIBUTION: PropTypes.object,\n OPTION_CHANGE: PropTypes.object,\n TRANSFER: PropTypes.object,\n WITHDRAWAL: PropTypes.object,\n WITHDRAWAL_REQUEST: PropTypes.object,\n }),\n })\n }).isRequired,\n };\n\n static defaultProps = {\n isCallToAction: false,\n };\n\n state = {\n hasPrecondition: false,\n moreMenuAnchorPoints: {},\n preflightAccount: {},\n preflightTransactionType: ''\n };\n\n callToActionRender = () => {\n const { account, callToActionType, text: { Transactions } } = this.props;\n\n switch (callToActionType) {\n case Transactions.TRANSACTION_TYPES.CONTRIBUTION.type: {\n return (\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.CONTRIBUTION.type)}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.CONTRIBUTION.type)}\n \n );\n }\n\n default: return;\n }\n }\n\n menuClose = (accountId) => {\n this.setState({ moreMenuAnchorPoints: { ...this.state.moreMenuAnchorPoints, [accountId]: null } });\n }\n\n menuOpen = (event, accountId) => {\n this.setState({ moreMenuAnchorPoints: { ...this.state.moreMenuAnchorPoints, [accountId]: event.currentTarget } });\n }\n\n preflightCheck = (account, transactionType) => {\n const { text: { Transactions }, preferredInfo, claims, setLastClicked, } = this.props;\n\n setLastClicked && setLastClicked();\n this.setState({\n preflightAccount: account,\n preflightTransactionType: transactionType\n });\n\n const isWithdrawal = transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n { hasPrecondition: true },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n { hasPrecondition: true },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.props.setPreflightParams(account, transactionType);\n this.setState({\n hasPrecondition: false,\n preflightAccount: {},\n preflightTransactionType: ''\n });\n this.props.openPreflightModal();\n }\n }\n\n componentDidUpdate() {\n const { hasPrecondition, preflightAccount, preflightTransactionType } = this.state;\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = preflightTransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || preflightTransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(preflightTransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n if (hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n this.preflightCheck(preflightAccount, preflightTransactionType);\n }\n }\n\n render() {\n const { account, isCallToAction, size, text: { Transactions } } = this.props;\n const { Contribute, OptionChange, Transfer, Withdraw, WithdrawalRequest } = account.permissions;\n const hasAnyAccountPermission = Contribute || OptionChange || Transfer || Withdraw || WithdrawalRequest;\n\n return (\n isCallToAction ?\n this.callToActionRender()\n :\n size.windowWidth < parseInt(mobileWidth) ?\n hasAnyAccountPermission &&\n <>\n this.menuOpen(event, account.accountId)}\n style={{ display: 'flex', alignItems: 'center' }}\n >\n {Transactions.btn_transactions}\n keyboard_arrow_down\n \n this.menuClose(account.accountId)}\n open={Boolean(this.state.moreMenuAnchorPoints[account.accountId])}\n >\n {account.permissions.Contribute &&\n {\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.CONTRIBUTION.type);\n this.menuClose(account.accountId);\n }}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.CONTRIBUTION.type)}\n \n }\n {account.permissions.Transfer &&\n {\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.TRANSFER.type);\n this.menuClose(account.accountId);\n }}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.TRANSFER.type)}\n \n }\n {account.permissions.WithdrawalRequest &&\n {\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type);\n this.menuClose(account.accountId);\n }}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type)}\n \n }\n {account.permissions.Withdraw &&\n {\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.WITHDRAWAL.type);\n this.menuClose(account.accountId);\n }}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.WITHDRAWAL.type)}\n \n }\n {account.permissions.OptionChange &&\n {\n this.preflightCheck(account, Transactions.TRANSACTION_TYPES.OPTION_CHANGE.type);\n this.menuClose(account.accountId);\n }}\n >\n {Transactions.transaction_title(Transactions.TRANSACTION_TYPES.OPTION_CHANGE.type)}\n \n }\n \n \n :\n hasAnyAccountPermission &&\n <>\n {account.permissions.Contribute &&\n }\n \n {account.permissions.Transfer &&\n }\n \n {account.permissions.WithdrawalRequest &&\n }\n \n {account.permissions.Withdraw &&\n }\n \n {account.permissions.OptionChange &&\n }\n \n );\n }\n}\n\n\nexport default connect(select, {\n get2FAPrecondition,\n getRSAPrecondition,\n openPreflightModal,\n setPreflightParams,\n})(LanguageHOC(TransactionButtons));\n","/*\n*\n* CurrentAllocation Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport AllocationChart from './AllocationChart';\nimport TransactionButtons from '../../TransactionButtons';\n\nimport styles from './styles.module.scss';\nimport parentStyles from '../styles.module.scss';\n\nexport class CurrentAllocation extends React.Component {\n\n static propTypes = {\n account: PropTypes.shape({\n accountIsClosed: PropTypes.bool,\n interestedPartyId: PropTypes.number,\n moneyAllocations: PropTypes.array,\n totalValueNum: PropTypes.number,\n permissions: PropTypes.shape({\n Contribute: PropTypes.bool,\n }),\n }).isRequired,\n isCustomOption: PropTypes.bool.isRequired,\n size: PropTypes.object.isRequired,\n text: PropTypes.shape({\n CurrentAllocation: PropTypes.shape({\n btn_chart_toggle: PropTypes.string,\n btn_list_toggle: PropTypes.string,\n head_account_closed: PropTypes.string,\n head_no_info: PropTypes.string,\n text_actual_percentage: PropTypes.string,\n text_make_contribution: PropTypes.string,\n text_value: PropTypes.string,\n text_target_percentage: PropTypes.string,\n }),\n Transactions: PropTypes.shape({\n TRANSACTION_TYPES: PropTypes.shape({\n CONTRIBUTION: PropTypes.object,\n }),\n }),\n }).isRequired,\n };\n\n state = {\n activeIndex: 0,\n isInterestedParty: Boolean(this.props.account.interestedPartyId), // id is only populated for an Interested Party account\n accountHasFunds: this.props.account.totalValueNum > 0,\n };\n\n onPieEnter = (data, index) => {\n if (index !== this.state.activeIndex) {\n this.setState({ activeIndex: index });\n }\n }\n\n tooltipCompose = () => {\n const { isCustomOption } = this.props;\n const allocation = this.props.account.moneyAllocations[this.state.activeIndex];\n\n return (\n
\n {allocation.allocationDetails.map(details => (\n
\n
{details.Category}
\n
\n {isCustomOption // custom should be Actual %, non-custom should be Target %\n ?
{this.props.text.CurrentAllocation.text_actual_percentage}
\n :
{this.props.text.CurrentAllocation.text_target_percentage}
\n }\n
{details.ActualPercentage}
\n
\n {isCustomOption &&\n
\n
{this.props.text.CurrentAllocation.text_value}
\n
{details.Value}
\n
}\n
\n ))}\n
\n );\n }\n\n chartCompose = () => {\n const { account, size, } = this.props;\n const { activeIndex, isInterestedParty } = this.state;\n\n return (\n <>\n \n {this.tooltipCompose()}\n \n );\n }\n \n noFundsViewCompose = () => {\n const { \n account,\n account: { accountIsClosed, \n permissions: { Contribute } }, \n text: { CurrentAllocation, Transactions }, \n } = this.props;\n\n return (\n
\n {accountIsClosed ? (\n
\n
{CurrentAllocation.head_account_closed}
\n
\n ) : (\n
\n
{CurrentAllocation.head_no_info}
\n
{CurrentAllocation.text_make_contribution}
\n {Contribute &&\n \n } \n
\n )}\n
\n );\n }\n\n\n render() {\n const { accountHasFunds } = this.state;\n\n return (\n
\n {accountHasFunds ? this.chartCompose() : this.noFundsViewCompose()} \n
\n );\n }\n}\n\n\nexport default (LanguageHOC(CurrentAllocation));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { IconBtnTooltip } from '@frontend/common';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n Typography,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport function LearnMoreDrawer({ open, onClose, text: { PrrCalculator } }) {\n\n return (\n \n
\n
\n \n
\n
\n

{PrrCalculator.learn_more_title}

\n
\n {PrrCalculator.text_learn_more()}\n
\n
\n {PrrCalculator.text_faq.map(qa => {\n return (\n \n expand_more}\n id='panel1a-header'\n >\n \n \n {qa.question}\n \n \n \n \n \n \n {qa.answer}\n \n \n \n \n );\n })}\n
\n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PrrCalculator: PropTypes.shape({\n learn_more_title: PropTypes.string.isRequired,\n text_faq: PropTypes.array.isRequired,\n text_learn_more: PropTypes.func.isRequired,\n }).isRequired,\n }),\n};\n\nexport default LanguageHOC(LearnMoreDrawer);","/*\n*\n* PrrCalculator Component\n*\n*/\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\nimport CountUp from 'react-countup';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport LearnMore from './LearnMore';\nimport {\n Icon,\n Button,\n Slide,\n} from '@mui/material';\n\nimport {\n DatePicker,\n LoadingOverlay,\n Modal,\n} from '@frontend/common';\n\nimport { calendarValidator } from 'utils/helpers/form_validation';\n\nimport { getPRRDates, getPRR } from '../../../actions';\n\nimport styles from './styles.module.scss';\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nconst select = (state) => ({\n minDate: state.accounts.pRRDates.minDate,\n maxDate: state.accounts.pRRDates.maxDate,\n});\n\nexport class PrrCalculator extends React.Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onCloseHandler: PropTypes.func.isRequired,\n disablePRRButtonInDetails: PropTypes.func.isRequired,\n account: PropTypes.shape({\n accountId: PropTypes.number.isRequired,\n beneficiary: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n option: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired\n }).isRequired,\n minDate: PropTypes.string,\n maxDate: PropTypes.string,\n getPRRDates: PropTypes.func.isRequired,\n getPRR: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PrrCalculator: PropTypes.object.isRequired,\n }).isRequired,\n }\n\n state = {\n loading: false,\n learnMoreOpen: false,\n startDate: null, // dayjs object\n endDate: null, // dayjs object\n startDateError: '',\n endDateError: '',\n pRRInit: 0,\n pRR: 0,\n }\n\n resetErrorsAndPRR = () => {\n this.setState({\n startDateError: '',\n endDateError: '',\n pRR: 0,\n });\n }\n\n onStartDateInput = (value) => {\n this.resetErrorsAndPRR();\n this.setState({ startDate: value });\n }\n\n onEndDateInput = (value) => {\n this.resetErrorsAndPRR();\n this.setState({ endDate: value });\n }\n\n validateForm = (startDate, endDate) => {\n const { minDate, maxDate } = this.props;\n let startDateError = '';\n let endDateError = '';\n\n startDateError = calendarValidator(startDate, minDate, maxDate);\n const startDatePlus1Day = dayjs(startDate).add(1, 'day');\n const minEndDate = startDatePlus1Day.isBefore(minDate) ? dayjs(minDate) : startDatePlus1Day.isAfter(maxDate) ? dayjs(maxDate) : startDatePlus1Day;\n endDateError = calendarValidator(endDate, minEndDate, maxDate);\n this.setState({ startDateError, endDateError });\n\n return !(Boolean(startDateError) || Boolean(endDateError));\n }\n\n onCalculateHandler = () => {\n const { startDate, endDate } = this.state;\n const { getPRR, account: { accountId }, minDate } = this.props;\n\n // since countup is setting loading to false it needs to reset pRR each time in case user\n // repeatedly clicks calculate without changing the dates\n this.setState({ pRR: 0 }, () => {\n if (this.validateForm(startDate, endDate)) {\n this.setState({ loading: true });\n // check if user selected date before account was opened, if yes reset start date\n const resetStartDate = startDate.isBefore(minDate) ? minDate : startDate;\n this.setState({ startDate: resetStartDate });\n\n getPRR(\n accountId,\n dayjs(resetStartDate).format('MM-DD-YYYY'), // eslint-disable-line\n dayjs(endDate).format('MM-DD-YYYY') // eslint-disable-line\n )\n .then((response) => {\n const pRR = response.payload.data;\n this.setState({ pRR });\n if (pRR === -100 || pRR === 0.00)\n this.setState({ loading: false });\n })\n .catch(() => this.setState({ loading: false }));\n }\n });\n }\n\n calculateDates = (minDate, maxDate) => {\n const openAccountDate = dayjs(minDate);\n const endDate = dayjs(maxDate);\n const previousYear = dayjs().subtract(1, 'year').format('YYYY'); // eslint-disable-line\n const lastDateOfPreviousYear = dayjs(`${previousYear}-12-31`);\n\n let startDate;\n if (\n endDate.isBefore(lastDateOfPreviousYear) ||\n lastDateOfPreviousYear.isBefore(openAccountDate)\n ) {\n startDate = openAccountDate;\n }\n else {\n startDate = lastDateOfPreviousYear;\n }\n\n return ({ startDate, endDate }); // returns dayjs objects\n }\n\n // Methods to render components\n renderNavigationButton = (label, onClick, variant, fullWidth = false, disabled = false, color = 'primary') => {\n return (\n \n {label}\n \n );\n }\n\n componentDidMount() {\n const {\n getPRRDates,\n getPRR,\n disablePRRButtonInDetails,\n account: {\n accountId\n },\n } = this.props;\n\n this.setState({ loading: true });\n getPRRDates(accountId)\n .then(() => {\n // disable PRR button in details and stop execution here\n if (this.props.minDate === null || this.props.maxDate === null) {\n disablePRRButtonInDetails();\n }\n else {\n const dates = this.calculateDates(this.props.minDate, this.props.maxDate);\n return getPRR(\n accountId,\n dates.startDate.format('MM-DD-YYYY'),\n dates.endDate.format('MM-DD-YYYY')\n )\n .then((response) => {\n const pRR = response.payload.data;\n this.setState({\n pRR,\n pRRInit: pRR,\n startDate: dates.startDate,\n endDate: dates.endDate,\n });\n if (pRR === -100 || pRR === 0.00)\n this.setState({ loading: false });\n });\n }\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.open && this.props.open) {\n const dates = this.calculateDates(this.props.minDate, this.props.maxDate);\n this.setState({\n startDate: dates.startDate,\n endDate: dates.endDate,\n startDateError: '',\n endDateError: '',\n pRR: this.state.pRRInit,\n });\n }\n }\n\n render() {\n const {\n loading,\n startDate,\n endDate,\n startDateError,\n endDateError,\n pRR,\n learnMoreOpen,\n } = this.state;\n\n const {\n account,\n text: { PrrCalculator },\n minDate,\n maxDate,\n } = this.props;\n\n let prrClass, prrArrowIcon;\n if (pRR === -100) { // API response for PRR not available\n prrClass = styles.pprNotAvailable;\n prrArrowIcon = '';\n }\n else if (pRR < 0) {\n prrClass = styles.negativeReturn;\n prrArrowIcon = 'arrow_drop_down';\n }\n else if (pRR === 0) {\n prrArrowIcon = '';\n }\n else {\n prrClass = styles.positiveReturn;\n prrArrowIcon = 'arrow_drop_up';\n }\n\n return (\n \n \n
\n {PrrCalculator.subtitle}\n
\n

{account.beneficiary.name}

\n \n
\n {PrrCalculator.rate_of_return_txt}\n
\n {\n pRR !== -100\n ?\n \n {prrArrowIcon}\n this.setState({ loading: false })}\n onStart={() => null}\n />\n \n :\n
\n {PrrCalculator.prr_not_available}\n
\n }\n
\n
\n\n
\n \n
\n\n
\n \n
\n\n
\n \n {this.renderNavigationButton(PrrCalculator.btn_calculate, this.onCalculateHandler, 'contained', true, loading)}\n \n\n
\n {this.renderNavigationButton(PrrCalculator.btn_learnmore, () => this.setState({ learnMoreOpen: true }), 'outlined', true)}\n
\n
\n\n
\n
\n \n\n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n />\n
\n );\n }\n}\n\nexport default connect(select, {\n getPRRDates,\n getPRR,\n})(LanguageHOC(PrrCalculator));\n\n","/*\n*\n* Details Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Icon,\n} from '@mui/material';\nimport {\n IconBtnTooltip,\n} from '@frontend/common';\n\nimport PrrCalculator from './PrrCalculator';\n\nimport parentStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nexport class Details extends React.Component {\n static propTypes = {\n account: PropTypes.shape({\n accountTypeEnum: PropTypes.string,\n accountNumber: PropTypes.number,\n agreementDate: PropTypes.string,\n beneficiary: PropTypes.shape({\n name: PropTypes.string,\n }),\n option: PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.number,\n }),\n ownerEntity: PropTypes.shape({\n Name: PropTypes.string,\n }),\n optionChangesRemaining: PropTypes.number,\n totalValue: PropTypes.string,\n netPrincipal: PropTypes.string,\n earnings: PropTypes.string,\n ytdContributions: PropTypes.string,\n priorContributions: PropTypes.string,\n ytdPRR: PropTypes.string,\n }),\n lastMarketDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Details: PropTypes.shape({\n head_account_number: PropTypes.string,\n head_beneficiary: PropTypes.string,\n head_date_opened: PropTypes.string,\n head_ppr: PropTypes.string,\n head_total_value: PropTypes.func,\n nav_path_investment: PropTypes.string,\n title_see_PPR: PropTypes.string,\n }),\n }),\n };\n\n state = {\n prrCalculatorShow: false,\n prrButtonDisabled: false,\n }\n\n onClosePrrCalculatorHandler = () => {\n this.setState({ prrCalculatorShow: false });\n }\n\n render() {\n const { prrCalculatorShow, prrButtonDisabled } = this.state;\n const { account, text: { Details }, lastMarketDate } = this.props;\n\n return (\n
\n
\n
\n
{Details.head_beneficiary}
\n
{account.beneficiary.name}
\n {account.ownerEntity && account.accountTypeEnum === 'D' && (\n
\n school\n

{account.ownerEntity.Name}

\n
\n )}\n
\n\n
\n
\n {Details.head_account_number}\n
\n
{account.accountNumber}
\n
{Details.head_date_opened}: {account.agreementDate}
\n
\n\n
\n
{Details.head_total_value(lastMarketDate)}
\n
{account.totalValue}
\n
\n\n
\n
{Details.head_ppr}
\n
\n \n {account.ytdPRR.includes('%') && (account.ytdPRR.includes('-') ? arrow_drop_down : arrow_drop_up)}\n {account.ytdPRR.includes('%') ? account.ytdPRR.replace(/\\s/g, '') : account.ytdPRR}\n
\n
\n this.setState({ prrCalculatorShow: true })}\n title={Details.title_see_PPR}\n />\n
\n
\n
\n
\n\n this.setState({ prrButtonDisabled: true })}\n />\n
\n );\n }\n\n}\n\nexport default LanguageHOC(Details);","/*\n*\n* PromoCode Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Icon,\n TextField,\n} from '@mui/material';\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport class PromoCode extends React.Component {\n static propTypes = {\n account: PropTypes.shape({\n accountId: PropTypes.number,\n hasAvailablePromoCodes: PropTypes.bool,\n }).isRequired,\n getAccounts: PropTypes.func.isRequired,\n submitPromoCode: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PromoCode: PropTypes.shape({\n btn_enter_code: PropTypes.string,\n btn_submit: PropTypes.string,\n err_required_field: PropTypes.string,\n lbl_promo_code: PropTypes.string,\n text_success: PropTypes.string,\n }),\n }),\n };\n\n state = {\n showPromoInput: false,\n showSuccessfullyApplied: false,\n promoCode: '',\n isLoading: false,\n formErrors: {},\n }\n\n handleSubmitPromoCode = () => {\n const { promoCode, } = this.state;\n const { account: { accountId, }, text: { PromoCode }, submitPromoCode, getAccounts, } = this.props;\n const formErrors = { ...this.state.formErrors };\n\n if (promoCode) { // check that promoCode is not empty\n this.setState({ isLoading: true });\n submitPromoCode(accountId, promoCode)\n .then(() => {\n this.setState({ isLoading: true, showPromoInput: false, showSuccessfullyApplied: true, });\n getAccounts(); // refresh accounts list\n })\n .catch(response => {\n if (!(response instanceof TypeError) && response.payload.data.length > 0) {\n response.payload.data.forEach(error => {\n formErrors[error.Field] = error.Message;\n });\n }\n this.setState({ isLoading: false, formErrors });\n });\n }\n else { // if empty, show required error text\n formErrors.PromoCode = PromoCode.err_required_field;\n this.setState({ formErrors });\n }\n }\n\n render() {\n const { showPromoInput, showSuccessfullyApplied, promoCode, isLoading, formErrors, } = this.state;\n const { account: { hasAvailablePromoCodes }, text: { PromoCode }, } = this.props;\n\n return (\n (hasAvailablePromoCodes || showSuccessfullyApplied) && // only display if account has available promos or the success is showing after just submitting\n
\n {!showPromoInput && !showSuccessfullyApplied &&\n }\n \n {showPromoInput &&\n
\n this.setState({ promoCode: e.target.value, formErrors: { ...formErrors, PromoCode: '' } })}\n error={Boolean(formErrors.PromoCode)}\n helperText={formErrors.PromoCode}\n inputProps={{\n maxLength: 15,\n }}\n style={{ width: '200px' }}\n />\n \n \n \n
}\n\n {showSuccessfullyApplied &&\n
\n {PromoCode.text_success} check\n
}\n
\n );\n }\n\n}\n\nexport default LanguageHOC(PromoCode);","/*\n*\n* Successors Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\n\nimport {\n changeSuccessor,\n getAccounts,\n getSuccessors,\n removeSuccessor,\n} from '../../actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport {\n ConfirmModal,\n DatePicker,\n Dropdown,\n IconBtnTooltip,\n InfoIcon,\n Modal,\n notificationShow,\n SsnInput,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n Button,\n Divider,\n Icon,\n TextField,\n} from '@mui/material';\n\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\n\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport parentStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n claims: state.session.claims,\n environmentVars: state.static.environmentVars,\n successors: state.accounts.successors,\n SUCCESSOR_TYPES: state.static.environmentVars.SuccessorTypes,\n});\n\nexport class Successors extends React.Component {\n static propTypes = {\n account: PropTypes.object.isRequired,\n changeSuccessor: PropTypes.func.isRequired,\n environmentVars: PropTypes.object.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getSuccessors: PropTypes.func.isRequired,\n getNotifications: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n setLastClicked: PropTypes.func.isRequired,\n isLastClicked: PropTypes.bool.isRequired,\n claims: PropTypes.object.isRequired,\n removeSuccessor: PropTypes.func.isRequired,\n successors: PropTypes.array.isRequired,\n SUCCESSOR_TYPES: PropTypes.shape({\n Primary: PropTypes.string,\n Secondary: PropTypes.string,\n }).isRequired,\n text: PropTypes.shape({\n Successors: PropTypes.shape({\n btn_add_successor: PropTypes.func,\n btn_change_successor: PropTypes.func,\n btn_close: PropTypes.string,\n err_age_limits: PropTypes.func,\n err_missing_dob: PropTypes.string,\n err_required: PropTypes.string,\n head_remove_successor: PropTypes.func,\n head_title: PropTypes.string,\n head_title_primary_successor: PropTypes.string,\n head_title_secondary_successor: PropTypes.string,\n lbl_birth_date: PropTypes.string,\n lbl_first_name: PropTypes.string,\n lbl_last_name: PropTypes.string,\n lbl_middle_name: PropTypes.string,\n lbl_ssn: PropTypes.string,\n lbl_successor: PropTypes.string,\n menu_new_successor: PropTypes.string,\n msg_successor_added: PropTypes.string,\n msg_successor_changed: PropTypes.string,\n msg_successor_removed: PropTypes.string,\n text_confirm_remove_successor: PropTypes.func,\n text_none: PropTypes.string,\n text_successor_info_hide: PropTypes.string,\n text_successor_to_trust: PropTypes.string,\n })\n }).isRequired\n };\n\n blankSuccessor = {\n birthDate: '',\n firstName: '',\n middleName: '',\n lastName: '',\n ssn: '',\n successorId: 'new',\n };\n\n state = {\n isExistingSuccessor: false,\n formErrors: [],\n newSuccessor: this.blankSuccessor,\n showChangeSuccessor: false,\n showRemoveSuccessor: false,\n successorLoading: false,\n successorType: this.props.SUCCESSOR_TYPES.Primary,\n validationRan: false,\n\n // For 2FA/RSA checks\n hasPrecondition: false,\n rememberIsRemove: null,\n rememberSuccessorType: null,\n };\n\n errorGet = (key) => {\n const error = this.state.formErrors.find(error => error.key === key);\n return error ? error.message : '';\n }\n\n formValidate = () => {\n const formErrors = [];\n const { newSuccessor } = this.state;\n const {\n environmentVars: { MaximumAge, MinimumAccountOwnerAge },\n text: { Successors: { err_age_limits, err_required, err_missing_dob } }\n } = this.props;\n\n const existingSuccessor = this.props.successors.find(successor => successor.successorId === newSuccessor.successorId);\n\n Object.keys(newSuccessor).forEach(field => {\n if (!existingSuccessor && newSuccessor[field] === '' && field !== 'middleName') {\n formErrors.push({\n key: field,\n message: err_required\n });\n }\n else if (field === 'ssn' && newSuccessor.ssn.length !== 9) {\n const message = validator.socialSecurityNumValidator(newSuccessor.ssn);\n message && formErrors.push({\n key: field,\n message,\n });\n }\n else if (field === 'birthDate') {\n if (!existingSuccessor) {\n if (\n !dayjs(newSuccessor[field]).isValid() ||\n dayjs(newSuccessor[field]).isBefore(dayjs().subtract(MaximumAge, 'year')) ||\n dayjs(newSuccessor[field]).isAfter(dayjs().subtract(MinimumAccountOwnerAge, 'year'))\n ) {\n formErrors.push({\n key: field,\n message: err_age_limits(MinimumAccountOwnerAge, MaximumAge)\n });\n }\n }\n else if (!existingSuccessor.birthDate) {\n // missing DOB for existing successor\n formErrors.push({\n key: field,\n message: err_missing_dob\n });\n }\n }\n });\n\n this.setState({ formErrors });\n return formErrors.length === 0;\n }\n\n modifySuccessorModalCompose = () => {\n const { showChangeSuccessor, successorLoading, successorType: type } = this.state;\n const { account: { accountType, primarySuccessor, secondarySuccessor }, text: { Successors } } = this.props;\n const successor = type === this.props.SUCCESSOR_TYPES.Primary ? primarySuccessor : secondarySuccessor;\n\n return (\n this.onModalClose()}\n show={showChangeSuccessor}\n title={successor ? Successors.btn_change_successor(type) : Successors.btn_add_successor(type)}\n includeLeftCancelBtn\n >\n {accountType === 'Individual' &&
{Successors.text_successor_to_trust}
}\n {this.successorFormCompose()}\n \n );\n }\n\n onInputChange = (name, event) => {\n this.setState({\n newSuccessor: {\n ...this.state.newSuccessor,\n [name]: event.target.value\n }\n }, () => this.state.validationRan && this.formValidate());\n }\n\n onModalClose = () => {\n this.setState({\n isExistingSuccessor: false,\n formErrors: [],\n newSuccessor: this.blankSuccessor,\n showChangeSuccessor: false,\n showRemoveSuccessor: false,\n validationRan: false,\n });\n }\n\n onSuccessorChange = (e) => {\n e.preventDefault();\n this.setState({ validationRan: true });\n const {\n newSuccessor: {\n birthDate,\n firstName: FirstName,\n middleName: MiddleName,\n lastName: LastName,\n ssn: SSN,\n successorId: SuccessorId,\n },\n successorType\n } = this.state;\n const BirthDate = dayjs(birthDate).format('L'); // format to just date so it is not unintentionally converted due to timezone\n\n if (this.formValidate()) {\n this.setState({ successorLoading: true });\n const existingSuccessor = this.props.successors.find(successor => successor.successorId === this.state.newSuccessor.successorId);\n\n if (existingSuccessor) {\n\n const changedSuccessor = {\n SuccessorId,\n Type: successorType === this.props.SUCCESSOR_TYPES.Primary ? 'S' : 'SS',\n };\n\n if (!existingSuccessor.birthDate) { // if the existing successor is missing a DOB, send it to be updated.\n changedSuccessor.BirthDate = BirthDate;\n }\n\n this.props.changeSuccessor(this.props.account.accountId, changedSuccessor)\n .then(() => {\n this.props.notificationShow(this.props.text.Successors.msg_successor_changed, 'success');\n this.onModalClose();\n this.props.getAccounts().then(() => {\n this.props.getSuccessors();\n this.props.getNotifications(); // refreshes app notifications\n this.setState({ successorLoading: false });\n });\n })\n .catch(() => this.setState({ successorLoading: false }));\n }\n else {\n this.props.changeSuccessor(this.props.account.accountId, {\n BirthDate,\n FirstName,\n MiddleName,\n LastName,\n SSN,\n Type: successorType === this.props.SUCCESSOR_TYPES.Primary ? 'S' : 'SS',\n })\n .then(() => {\n this.props.notificationShow(this.props.text.Successors.msg_successor_added, 'success');\n this.onModalClose();\n this.props.getAccounts().then(() => {\n this.props.getSuccessors();\n this.props.getNotifications(); // refreshes app notifications\n this.setState({ successorLoading: false });\n });\n })\n .catch(() => this.setState({ successorLoading: false }));\n }\n }\n }\n\n onSuccessorRemove = () => {\n this.setState({ successorLoading: true });\n const { accountId, primarySuccessor, secondarySuccessor } = this.props.account;\n const successorId = this.state.successorType === this.props.SUCCESSOR_TYPES.Primary ? primarySuccessor.successorId : secondarySuccessor.successorId;\n\n this.props.removeSuccessor(accountId, successorId)\n .then(() => {\n this.props.notificationShow(this.props.text.Successors.msg_successor_removed, 'success');\n this.onModalClose();\n this.props.getAccounts().then(() => {\n this.props.getSuccessors();\n this.setState({ successorLoading: false });\n });\n })\n .catch(() => this.onModalClose());\n }\n\n onSuccessorSelect = (e) => {\n const successor = this.props.successors.find(successor => successor.successorId === e);\n\n if (!successor) {\n this.setState({\n isExistingSuccessor: false,\n formErrors: [],\n newSuccessor: this.blankSuccessor\n });\n }\n else {\n this.setState({\n isExistingSuccessor: true,\n formErrors: [],\n newSuccessor: {\n ...successor,\n }\n });\n }\n }\n\n removeSuccessorModalCompose = () => {\n const { account: { primarySuccessor, secondarySuccessor }, SUCCESSOR_TYPES, text: { Successors } } = this.props;\n const { showRemoveSuccessor, successorLoading, successorType } = this.state;\n const successor = successorType === SUCCESSOR_TYPES.Primary ? primarySuccessor : secondarySuccessor;\n\n return (showRemoveSuccessor &&\n this.onSuccessorRemove()}\n onModalClose={this.onModalClose}\n show={Boolean(successor && showRemoveSuccessor)}\n title={Successors.head_remove_successor(successorType)}\n />\n );\n }\n\n successorFormCompose = () => {\n const { isExistingSuccessor, successorLoading, newSuccessor } = this.state;\n const { environmentVars: { MaximumAge, MinimumAccountOwnerAge }, text: { Successors } } = this.props;\n\n return (\n
\n this.onSuccessorSelect(e)}\n options={this.successorsListCompose()}\n value={newSuccessor.successorId || 'new'}\n />\n {isExistingSuccessor\n ?\n [\n
\n null} // added due to onChange prop requirement; not actually needed here as it is just for viewing\n />\n \n
\n ]\n :\n [\n this.onInputChange('firstName', e)}\n value={newSuccessor.firstName}\n />,\n this.onInputChange('middleName', e)}\n value={newSuccessor.middleName}\n />,\n this.onInputChange('lastName', e)}\n value={newSuccessor.lastName}\n />,\n this.onInputChange('ssn', { target: { value } })}\n value={newSuccessor.ssn}\n />,\n
\n this.onInputChange('birthDate', { target: { value } })}\n openTo='year'\n value={newSuccessor.birthDate}\n />\n
\n ]}\n\n \n );\n }\n\n successorsListCompose = () => {\n const { successors, account: { primarySuccessor, secondarySuccessor }, text: { Successors } } = this.props;\n\n const successorsList = successors.map(successor => ({\n display: `${successor.firstName} ${successor.middleName} ${successor.lastName}`,\n props: {\n disabled: (primarySuccessor && successor.successorId === primarySuccessor.successorId) || (secondarySuccessor && successor.successorId === secondarySuccessor.successorId)\n },\n value: successor.successorId\n }));\n\n return [{ display: Successors.menu_new_successor, value: 'new' }].concat(successorsList);\n }\n\n tooltipsComposeModifySuccessor = (successorType) => {\n return [\n
\n this.handleShowSuccessorModal(successorType, true)}\n title={`Remove ${successorType} Successor`}\n />\n
,\n
\n this.handleShowSuccessorModal(successorType)}\n title={`Change ${successorType} Successor`}\n />\n
\n ];\n }\n\n addButtonCompose = successorType => {\n return (\n
\n add}\n onClick={() => this.handleShowSuccessorModal(successorType)}\n >\n {this.props.text.Successors.btn_add_successor(successorType)}\n \n
\n );\n }\n\n handleShowSuccessorModal = (successorType, isRemove = false) => {\n const showProperty = isRemove ? 'showRemoveSuccessor' : 'showChangeSuccessor';\n const multiStatus = protectAction(this.props.claims);\n\n this.props.setLastClicked();\n this.setState({ successorLoading: true });\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState({ rememberIsRemove: isRemove, rememberSuccessorType: successorType, hasPrecondition: true });\n this.props.get2FAPrecondition().catch(() => this.setState({ successorLoading: false }));\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA) {\n this.setState({ rememberIsRemove: isRemove, rememberSuccessorType: successorType, hasPrecondition: true });\n this.props.getRSAPrecondition().catch(() => this.setState({ successorLoading: false }));\n }\n else {\n this.setState({\n [showProperty]: true,\n successorType,\n successorLoading: false,\n hasPrecondition: false,\n });\n }\n }\n\n componentDidMount() {\n if (this.props.successors.length === 0) {\n this.props.getSuccessors();\n }\n }\n\n componentDidUpdate() {\n const { rememberSuccessorType, rememberIsRemove, hasPrecondition, } = this.state;\n const multiStatus = protectAction(this.props.claims);\n if (hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH && this.props.isLastClicked) {\n this.handleShowSuccessorModal(rememberSuccessorType, rememberIsRemove);\n }\n }\n\n render() {\n const { account: { permissions, primarySuccessor, secondarySuccessor }, SUCCESSOR_TYPES, text: { Successors } } = this.props;\n // if successor exists AND they have permissions, use the name, if not use 'None'\n const primarySuccessorName = primarySuccessor ? `${primarySuccessor.firstName} ${primarySuccessor.middleName} ${primarySuccessor.lastName}` : Successors.text_none;\n const secondarySuccessorName = secondarySuccessor ? `${secondarySuccessor.firstName} ${secondarySuccessor.middleName} ${secondarySuccessor.lastName}` : Successors.text_none;\n\n return (\n \n
\n \n {(primarySuccessor || !permissions.ChangeSuccessor) ? ( // shows successor name display if successor exists or they do not have edit permissions\n
\n
{Successors.head_title_primary_successor}
\n
{primarySuccessorName}
\n {permissions.ChangeSuccessor &&
{this.tooltipsComposeModifySuccessor(SUCCESSOR_TYPES.Primary)}
}\n
\n ) : (\n this.addButtonCompose(SUCCESSOR_TYPES.Primary)\n )}\n \n {(secondarySuccessor || !permissions.ChangeSuccessor) ? ( // shows successor name display if successor exists or they do not have edit permissions\n
\n
{Successors.head_title_secondary_successor}
\n
{secondarySuccessorName}
\n {permissions.ChangeSuccessor &&
{this.tooltipsComposeModifySuccessor(SUCCESSOR_TYPES.Secondary)}
}\n
\n ) : (\n this.addButtonCompose(SUCCESSOR_TYPES.Secondary)\n )}\n
\n
\n\n {this.modifySuccessorModalCompose()}\n {this.removeSuccessorModalCompose()}\n
\n\n );\n }\n}\n\nexport default connect(select, {\n changeSuccessor,\n getAccounts,\n getSuccessors,\n notificationShow,\n removeSuccessor,\n getNotifications,\n get2FAPrecondition,\n getRSAPrecondition,\n})(LanguageHOC(Successors));","/*\n*\n* OptionChanges Actions\n*\n*/\nimport {\n GETrequest,\n POSTrequest,\n} from 'utils/helpers/api_handler';\n\nimport {\n GET_PREDEFINED_OPTIONS,\n POST_NEW_OPTION,\n GET_NEW_AGE_BASED_SCHEMA,\n GET_NEW_STATIC_SCHEMA,\n GET_OPTION_CHANGE_BY_ID,\n} from './constants';\n\nimport { convert3DCalculatorSchemaTo2D } from '@frontend/common';\n\nexport function getPredefinedOptions() {\n const payload = GETrequest('/options');\n return {\n type: GET_PREDEFINED_OPTIONS,\n payload,\n };\n}\n\nexport function postNewOptions(data) {\n const updatedData = data.map(optionChange => {\n const { matrixAllocations, CustomSchema } = optionChange;\n const isCustomizedOptionChange = CustomSchema && CustomSchema.FundCategories && CustomSchema.FundCategories.length > 0;\n const updatedCustomSchema = isCustomizedOptionChange ? convert3DCalculatorSchemaTo2D(matrixAllocations, CustomSchema) : CustomSchema;\n delete optionChange.matrixAllocations;\n return { ...optionChange, CustomSchema: updatedCustomSchema };\n });\n\n const response = POSTrequest('/transactions/optionchanges', updatedData);\n return {\n type: POST_NEW_OPTION,\n payload: response\n };\n}\n\nexport function getOptionChangeById(optionChangeId, actionId) {\n const payload = GETrequest(`/transactions/optionchanges/${optionChangeId}/actions/${actionId}`);\n return {\n type: GET_OPTION_CHANGE_BY_ID,\n payload\n };\n}\n\nexport function getNewAgeBasedSchema() {\n const response = GETrequest('/options/new?typeCode=a');\n return {\n type: GET_NEW_AGE_BASED_SCHEMA,\n payload: response\n };\n}\n\nexport function getNewStaticSchema() {\n const response = GETrequest('/options/new?typeCode=s');\n return {\n type: GET_NEW_STATIC_SCHEMA,\n payload: response\n };\n}","import { GETrequest, POSTrequest, PUTrequest } from 'utils/helpers/api_handler';\nimport {\n DEVICE_TOKEN_CREATE,\n DEVICE_TOKEN_GET,\n SECURITY_QESTION_GET,\n SECURITY_QESTIONS_ANSWER,\n RSA_STATUS_GET,\n RSA_QESTIONS_GET,\n RSA_ANSWERS,\n RSA_VERIFY_BIRTHDAY,\n TWO_FACTOR_REGISTRATION,\n TWO_FACTOR_REGISTRATION_UPDATE,\n TWO_FACTOR_TOKEN_VERIFICATION,\n TWO_FACTOR_TOKEN,\n TWO_FACTOR_QRCODES,\n TWO_FACTOR_PREFERRED_METHOD,\n TWO_FACTOR_SAVE_METHOD\n} from './constants';\n\n\nexport function deviceTokenCreate() {\n const response = POSTrequest('/DeviceToken');\n return {\n type: DEVICE_TOKEN_CREATE,\n payload: response\n };\n}\n\nexport function getDeviceToken(deviceToken) {\n const response = GETrequest(`/DeviceToken/${deviceToken}`);\n return {\n type: DEVICE_TOKEN_GET,\n payload: response\n };\n}\n\nexport function getSecurityQuestion() {\n const response = GETrequest('/SecurityQuestion');\n return {\n type: SECURITY_QESTION_GET,\n payload: response\n };\n}\n\nexport function securityQuestionAnswer(answer) {\n const response = POSTrequest('/SecurityQuestion/Answer', answer);\n return {\n type: SECURITY_QESTIONS_ANSWER,\n payload: response\n };\n}\n\nexport function getRSAStatus() {\n const response = GETrequest('/RSA/Status');\n return {\n type: RSA_STATUS_GET,\n payload: response\n };\n}\n\nexport function getRSAQuestionSet() {\n const response = GETrequest('/RSA/QuestionSet');\n return {\n type: RSA_QESTIONS_GET,\n payload: response\n };\n}\n\nexport function rsaAnswers(answerSet) {\n const response = POSTrequest('/RSA/AnswerSet', answerSet);\n return {\n type: RSA_ANSWERS,\n payload: response\n };\n}\n\nexport function rsaVerifyBirthday(birthday) {\n const response = POSTrequest('/RSA/VerifyBirthdate', birthday);\n return {\n type: RSA_VERIFY_BIRTHDAY,\n payload: response\n };\n}\n\nexport function twoFactorRegistration(regInfo) {\n const response = POSTrequest('/TwoFactor/Registrations', regInfo);\n return {\n type: TWO_FACTOR_REGISTRATION,\n payload: response,\n meta: { regMethod: regInfo.verificationMethod }\n };\n}\n\nexport function twoFactorRegistrationUpdate(regInfo) {\n const response = PUTrequest('/TwoFactor/Registrations', regInfo);\n return {\n type: TWO_FACTOR_REGISTRATION_UPDATE,\n payload: response,\n meta: { regMethod: regInfo.verificationMethod }\n };\n}\n\nexport function twoFactorTokenVerification(token, method) {\n const response = GETrequest(`/TwoFactor/TokenVerification/${token}`, {\n params: {\n method,\n }\n });\n return {\n type: TWO_FACTOR_TOKEN_VERIFICATION,\n payload: response\n };\n}\n\nexport function getTwoFactorToken(method) {\n const response = GETrequest(`/TwoFactor/Token/${method}`);\n return {\n type: TWO_FACTOR_TOKEN,\n payload: response\n };\n}\n\n// will be used on initial 2FA registration, when token does NOT need to be validated\nexport function getInitialTwoFactorQRCode() {\n const response = GETrequest('/TwoFactor/QRCodes/Initial');\n return {\n type: TWO_FACTOR_QRCODES,\n payload: response\n };\n}\n\n// will be used on updating 2FA registration, when token does need to be validated\nexport function getTwoFactorQRCode() {\n const response = GETrequest('/TwoFactor/QRCodes');\n return {\n type: TWO_FACTOR_QRCODES,\n payload: response\n };\n}\n\nexport function getPreferredMethod() {\n const response = GETrequest('/TwoFactor/Users');\n return {\n type: TWO_FACTOR_PREFERRED_METHOD,\n payload: response\n };\n}\n\nexport function savePreferredMethod(preferredMethod) {\n const response = PUTrequest('/TwoFactor/Users', preferredMethod);\n return {\n type: TWO_FACTOR_SAVE_METHOD,\n payload: response,\n };\n}","/*\n*\n* ViewOptionChange Component\n*\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n CalculatorForm,\n Breadcrumbs,\n} from '@frontend/common';\n\nimport './styles.css';\n\nconst select = (state) => ({\n ServerDateTime: state.static.ServerDateTime,\n});\n\nexport class ViewOptionChange extends React.Component {\n\n static propTypes = {\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n accounts_path: PropTypes.string,\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n nav_title: PropTypes.string,\n })\n }).isRequired,\n accountId: PropTypes.number, // breadcrumbs will not show if falsy\n pendingOptionChange: PropTypes.object.isRequired,\n ServerDateTime: PropTypes.string,\n loading: PropTypes.bool.isRequired,\n };\n\n render() {\n const {\n text,\n accountId,\n pendingOptionChange,\n ServerDateTime,\n loading,\n } = this.props;\n\n const breadcrumbs = (\n \n );\n const optionChangeName = pendingOptionChange.Schema ? pendingOptionChange.Schema.TemplateName || pendingOptionChange.NewOption : pendingOptionChange.NewOption;\n \n return (\n
\n
\n {accountId && breadcrumbs}\n
\n {accountId // if accountId, InvestmentPath is being displayed, otherwise it is a pending option change\n ? (\n
\n {optionChangeName}\n
\n ) : ( \n <>\n
\n Current Option: \n {pendingOptionChange.CurrentOption}\n
\n
\n New Option: \n {optionChangeName}\n
\n )}\n {pendingOptionChange.Schema &&\n }\n
\n
\n
\n );\n }\n}\n\nexport default connect(select, {}, null)(LanguageHOC(ViewOptionChange));\n","/*\n*\n* TransactionDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Drawer,\n} from '@mui/material';\nimport {\n CardTitle,\n IconBtnTooltip,\n} from '@frontend/common';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport styles from './styles.module.scss';\nimport ViewOptionChange from 'components/Features/protected/Accounts/Transactions/OptionChanges/ViewOptionChange';\n\nexport class ViewPendingOptionChange extends React.Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n pendingOptionChange: PropTypes.object.isRequired,\n text: PropTypes.shape({\n UpcomingTransactions: PropTypes.shape({\n drawer_title_view_pending_option: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n loading: PropTypes.bool.isRequired,\n };\n\n\n render() {\n const {\n open,\n onClose,\n pendingOptionChange,\n text,\n loading,\n } = this.props;\n \n return (\n \n \n
\n
\n \n
\n
\n \n {text.UpcomingTransactions.drawer_title_view_pending_option}\n \n
\n
\n \n
\n
\n
\n \n
\n\n
\n \n );\n }\n}\n\nexport default LanguageHOC(ViewPendingOptionChange);","/*\n*\n* UpcomingTransactions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n withRouter\n} from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n getAccounts,\n getUpcomingTransactions,\n} from '../actions';\nimport {\n deleteTransaction,\n getScheduledTransaction,\n} from '../Transactions/actions';\nimport {\n getOptionChangeById\n} from '../Transactions/OptionChanges/actions';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { getPreferredMethod } from 'components/Features/protected/Multifactor/actions';\nimport { protectAction, protectWithdrawal } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport {\n CardAligned,\n CardBody,\n CardTitle,\n notificationShow,\n ConfirmModal,\n LoadingOverlay,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nimport accountDetailsStyles from '../AccountDetails/styles.module.scss';\nimport styles from './styles.module.scss';\nimport ViewPendingOptionChange from './ViewPendingOptionChange';\n\nexport const transactionTypes = { // used for API routing below\n transfers: 'transfers',\n optionChanges: 'option-changes',\n withdrawals: 'withdrawals',\n contributions: 'contributions'\n};\n\nconst select = (state) => ({\n upcomingTransactions: state.accounts.upcomingTransactions.map((transaction, index) => ({ ...transaction, id: index })),\n selectedTransaction: state.transactions.selectedTransaction,\n optionChangeById: state.optionChanges.optionChangeById,\n claims: state.session.claims,\n preferredInfo: state.multifactor.preferredInfo,\n});\n\nexport class UpcomingTransactions extends React.Component {\n\n static propTypes = {\n account: PropTypes.object.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getUpcomingTransactions: PropTypes.func.isRequired,\n getScheduledTransaction: PropTypes.func.isRequired,\n getOptionChangeById: PropTypes.func.isRequired,\n deleteTransaction: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n text: PropTypes.shape({\n UpcomingTransactions: PropTypes.shape({\n head_title: PropTypes.string,\n menu_cancel: PropTypes.string,\n menu_edit: PropTypes.string,\n menu_view: PropTypes.string,\n msg_error_retrieving_transactions: PropTypes.string,\n text_amount: PropTypes.string,\n text_end_date: PropTypes.string,\n text_frequency: PropTypes.string,\n text_no_upcoming_transactions: PropTypes.string,\n text_scheduled_date: PropTypes.string,\n text_status: PropTypes.string,\n text_transaction_type: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func }),\n Transactions: PropTypes.shape({\n edit_path: PropTypes.string,\n nav_path: PropTypes.func,\n transactions_path: PropTypes.string,\n withdrawal_path: PropTypes.string,\n cancel_transaction_modal_message: PropTypes.func,\n TRANSACTION_TYPES: PropTypes.shape({\n CONTRIBUTION: PropTypes.object,\n OPTION_CHANGE: PropTypes.object,\n TRANSFER: PropTypes.object,\n WITHDRAWAL: PropTypes.object,\n WITHDRAWAL_REQUEST: PropTypes.object,\n }),\n }),\n }).isRequired,\n upcomingTransactions: PropTypes.array.isRequired,\n selectedTransaction: PropTypes.object.isRequired,\n optionChangeById: PropTypes.object.isRequired,\n };\n\n state = {\n loading: false,\n showCancelConfirmModal: false,\n cancelTransactionLoading: false,\n selectedTransaction: {},\n loadingSelectedTransaction: false,\n showPendingOptionChange: false,\n selectedPendingOptionChange: {\n FundCategories: []\n },\n\n hasPrecondition: false,\n rememberedFunction: '',\n txn: {}\n };\n\n upcomingTransactionsGet = () => {\n this.setState({ loading: true });\n return this.props.getUpcomingTransactions(this.props.account.accountId)\n .then(() => {\n this.setState({ loading: false });\n })\n .catch(() => {\n this.setState({ loading: false });\n });\n }\n\n editTransaction = transaction => {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transaction.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction, \n rememberedFunction: 'editTransaction'\n },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction, \n rememberedFunction: 'editTransaction'\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n const { text } = this.props;\n this.setState({ hasPrecondition: false, loadingSelectedTransaction: true, rememberedFunction: '' });\n this.props.getScheduledTransaction(transaction)\n .then(() => {\n this.setState({ loadingSelectedTransaction: false });\n const { AccountId, AccountGroupId } = this.props.selectedTransaction;\n switch (this.transactionType(transaction.TransactionType)) {\n case transactionTypes.transfers: {\n return this.props.history.push(`/accounts/${AccountId}/transactions/${transaction.ScheduleId}/transfers/edit`);\n }\n case transactionTypes.optionchanges: {\n return this.props.history.push(`${text.AccountDetails.nav_path(AccountId)}/${text.Transactions.transactions_path}/option-changes/${text.Transactions.edit_path}`);\n }\n case transactionTypes.withdrawals: {\n return this.props.history.push(`${text.AccountDetails.nav_path(AccountId)}/${text.Transactions.transactions_path}/${text.Transactions.withdrawal_path}/groups/${AccountGroupId}/${text.Transactions.edit_path}`);\n }\n case transactionTypes.contributions: {\n return this.props.history.push(text.Transactions.nav_path(AccountId, transaction.TransactionType, 'edit', transaction.ScheduleId));\n }\n default: return;\n }\n });\n }\n }\n\n viewTransaction = (transaction) => {\n // when pending only option changes are viewed\n const { ScheduleId, ActionId, TransactionType } = transaction;\n const { optionChangeById } = this.props;\n if (this.transactionType(TransactionType) === transactionTypes.optionchanges) {\n if (optionChangeById === {} || ScheduleId !== optionChangeById.OptionChangeId || ActionId !== optionChangeById.ActionId) {\n this.setState({ loadingSelectedTransaction: true });\n this.props.getOptionChangeById(ScheduleId, ActionId)\n .then(() => {\n this.togglePendingOptionChangeDrawer();\n this.setState({\n selectedPendingOptionChange: this.props.optionChangeById,\n loadingSelectedTransaction: false,\n });\n });\n }\n else {\n this.togglePendingOptionChangeDrawer();\n this.setState({\n selectedPendingOptionChange: optionChangeById,\n loadingSelectedTransaction: false,\n });\n }\n }\n }\n\n transactionType = (type) => {\n switch (type) {\n case 'Transfer Out':\n case 'Transfer In': return transactionTypes.transfers;\n case 'Option Change': return transactionTypes.optionchanges;\n case 'Withdrawal': return transactionTypes.withdrawals;\n case 'Contribution': return transactionTypes.contributions;\n default: return;\n }\n }\n\n upcomingTransactionCancelHandler = () => {\n const txn = this.state.selectedTransaction;\n this.setState({ cancelTransactionLoading: true });\n this.props.deleteTransaction(txn)\n .then(() => {\n this.props.notificationShow(`${txn.TransactionType} cancelled.`, 'success');\n this.setState({\n cancelTransactionLoading: false,\n showCancelConfirmModal: false,\n selectedTransaction: {},\n });\n this.upcomingTransactionsGet();\n this.props.getAccounts();\n })\n .catch(() => {\n this.setState({ cancelTransactionLoading: false, showCancelConfirmModal: false, });\n this.upcomingTransactionsGet();\n });\n };\n\n togglePendingOptionChangeDrawer = () => {\n this.setState({ showPendingOptionChange: !this.state.showPendingOptionChange });\n }\n\n protectDeleteAction(transaction) {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transaction.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction, \n rememberedFunction: 'protectDeleteAction'\n },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction, \n rememberedFunction: 'protectDeleteAction'\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({\n hasPrecondition: false,\n showCancelConfirmModal: true,\n selectedTransaction: transaction,\n rememberedFunction: ''\n });\n }\n }\n\n componentDidMount() {\n this.upcomingTransactionsGet();\n this.props.getPreferredMethod();\n }\n\n componentDidUpdate() {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = this.state.txn.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || this.state.txn.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(this.state.txn.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n const rememberedFunction = this.state.rememberedFunction;\n this[rememberedFunction](this.state.txn);\n }\n }\n\n render() {\n const { text: { UpcomingTransactions, Transactions } } = this.props;\n const {\n showCancelConfirmModal,\n selectedTransaction,\n cancelTransactionLoading,\n showPendingOptionChange,\n selectedPendingOptionChange,\n loadingSelectedTransaction,\n } = this.state;\n\n return (\n !this.props.upcomingTransactions.length > 0 ? null : ( // if no upcoming transactions, do not display the table\n \n \n {UpcomingTransactions.head_title}\n \n \n
\n this.setState({\n selectedTransaction: row,\n }, this.editTransaction(row)),\n showIf: row => row.CanEdit,\n },\n {\n displayName: UpcomingTransactions.menu_view,\n type: 'menu',\n onSelect: row => this.setState({\n selectedTransaction: row,\n }, this.viewTransaction(row)),\n showIf: row => !row.CanEdit && row.TransactionType === 'Option Change',\n },\n {\n displayName: UpcomingTransactions.menu_cancel,\n type: 'menu',\n onSelect: row => this.protectDeleteAction(row),\n showIf: row => row.CanDelete,\n }\n ]}\n columns={[\n {\n key: 'TransactionType',\n title: UpcomingTransactions.text_transaction_type,\n type: 'string',\n },\n {\n key: 'ScheduledDate',\n title: UpcomingTransactions.text_scheduled_date,\n type: 'dateString',\n },\n {\n key: 'EndDate',\n title: UpcomingTransactions.text_end_date,\n type: 'dateString',\n },\n {\n key: 'Frequency',\n title: UpcomingTransactions.text_frequency,\n type: 'string',\n },\n {\n key: 'Status',\n title: UpcomingTransactions.text_status,\n type: 'string',\n },\n {\n key: 'Amount',\n title: UpcomingTransactions.text_amount,\n type: 'currency',\n },\n ]}\n rows={this.props.upcomingTransactions}\n emptyMessage={UpcomingTransactions.text_no_upcoming_transactions}\n idKey='id'\n loading={this.state.loading || !this.props.account.accountId}\n >\n \n \n \n \n \n \n
\n
\n
\n
\n\n this.setState({ showCancelConfirmModal: false })}\n onConfirm={() => this.upcomingTransactionCancelHandler(selectedTransaction)}\n loading={cancelTransactionLoading}\n />\n\n \n
\n )\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getUpcomingTransactions,\n getScheduledTransaction,\n deleteTransaction,\n getOptionChangeById,\n notificationShow,\n getPreferredMethod,\n get2FAPrecondition,\n getRSAPrecondition,\n})(LanguageHOC(UpcomingTransactions)));\n","import qs from 'qs';\nimport dayjs from 'dayjs';\n\nconst queryParser = (search) => {\n const filters = {\n accounts: [],\n documents: [],\n };\n const query = qs.parse(search, { ignoreQueryPrefix: true });\n if (query) {\n if ('account' in query) {\n if (Array.isArray(query.account)) {\n const accountFilters = query.account.map(account => parseInt(account));\n filters.accounts.push(...accountFilters);\n }\n if (typeof query.account === 'string') {\n filters.accounts.push(parseInt(query.account));\n }\n }\n if ('document' in query) {\n if (Array.isArray(query.document)) {\n filters.documents.push(...query.document);\n }\n if (typeof query.document === 'string') {\n filters.documents.push(query.document);\n }\n }\n }\n return filters;\n};\n\n\nconst filtersToSearchString = (filters) => {\n return qs.stringify({\n account: filters.accounts,\n document: filters.documents,\n }, { indices: false });\n};\n\n\nconst documentsByQueryFilters = (documents, filters) => {\n let filteredDocumentList = documents;\n\n // filters to documents with a matching AccountNumber.\n if (filters.accounts.length > 0) {\n filteredDocumentList = filteredDocumentList.filter(document => filters.accounts.some(accountNumber => accountNumber === document.AccountNumber));\n }\n\n // filters to documents with a matching DocumentType.\n if (filters.documents.length > 0) {\n filteredDocumentList = filteredDocumentList.filter(document => filters.documents.some(documentType => documentType === document.DocumentType));\n }\n\n return filteredDocumentList;\n};\n\n\nconst transactionsByDateFilter = (transactions, dateFilters) => {\n const { startDate, endDate } = dateFilters;\n\n return transactions.filter(transaction => (\n dayjs(transaction.date).isSameOrAfter(dayjs(startDate), 'day') && dayjs(transaction.date).isSameOrBefore(dayjs(endDate), 'day'))\n );\n};\n\nconst accountsByFilter = (accountList, filters) => {\n let filteredAccounts = accountList;\n\n if (filters.length > 0) {\n filteredAccounts = filteredAccounts.filter(account => (\n filters.some(filter => filter === account.accountNumber) ||\n filters.some(filter => account.beneficiaryName ? filter === account.beneficiaryName : filter === account.beneficiary.Name) || //dashboardAccountList has different structure\n filters.some(filter => account.optionName ? filter === account.optionName : filter === account.Option.Name) //dashboardAccountList has different structure\n ));\n }\n\n return filteredAccounts;\n};\n\nexport {\n queryParser,\n filtersToSearchString,\n documentsByQueryFilters,\n transactionsByDateFilter,\n accountsByFilter,\n};","/*\n*\n* TransactionDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Drawer,\n} from '@mui/material';\n// import {\n// withWidth,\n// } from '@mui/styles';\nimport {\n CardTitle,\n currencyFormatter,\n IconBtnTooltip,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\n\nimport styles from './styles.module.scss';\n\nexport class TransactionDetails extends React.Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.number.isRequired,\n date: PropTypes.string,\n type: PropTypes.string.isRequired,\n source: PropTypes.string,\n payeeName: PropTypes.string,\n total: PropTypes.number.isRequired,\n basis: PropTypes.number.isRequired,\n bankName: PropTypes.string.isRequired,\n bankAccountNumber: PropTypes.string.isRequired,\n bankAccountType: PropTypes.string.isRequired,\n accessCardNumber: PropTypes.string.isRequired,\n ElectronicSchoolPaymentPaymentId: PropTypes.string,\n transactionDetails: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n fundName: PropTypes.string,\n units: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n amount: PropTypes.number.isRequired,\n })\n )\n }).isRequired,\n text: PropTypes.shape({\n TransactionDetails: PropTypes.shape({\n head_title: PropTypes.string,\n text_portfolio: PropTypes.string,\n text_units: PropTypes.string,\n text_nav: PropTypes.string,\n text_amount: PropTypes.string,\n text_date: PropTypes.string,\n text_total: PropTypes.string,\n text_transaction_type: PropTypes.string,\n text_type: PropTypes.string,\n text_payee_name: PropTypes.string,\n text_bank_name: PropTypes.string,\n text_bank_account_number: PropTypes.string,\n text_bank_account_type: PropTypes.string,\n text_card_number: PropTypes.string,\n text_payment_confirmation: PropTypes.string,\n }),\n n_a: PropTypes.string,\n }).isRequired,\n };\n\n render() {\n const { open, onClose, transaction, text: { TransactionDetails, n_a } } = this.props;\n return (\n \n \n
\n
\n \n
\n
\n \n {TransactionDetails.head_title}\n \n
\n
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {transaction.accessCardNumber ?\n \n \n \n \n : null}\n {transaction.bankName ?\n \n \n \n \n : null}\n {transaction.bankName ?\n \n \n \n \n : null}\n {transaction.bankName ?\n \n \n \n \n : null}\n {transaction.payeeName && !transaction.accessCardNumber ? // only hide on Access Card transactions\n \n \n \n \n : null}\n {transaction.source && transaction.source.includes('Electronic School') ?\n \n \n \n \n : null}\n \n
{TransactionDetails.text_date}:{dayjs(transaction.date).format('MM/DD/YYYY')}
{TransactionDetails.text_total}:{currencyFormatter(transaction.total)}
{TransactionDetails.text_transaction_type}:{transaction.type}
{TransactionDetails.text_type}:{transaction.source ? transaction.source : n_a}
{TransactionDetails.text_card_number}:{transaction.accessCardNumber ? transaction.accessCardNumber : n_a}
{TransactionDetails.text_bank_name}:{transaction.bankName ? transaction.bankName : n_a}
{TransactionDetails.text_bank_account_number}:{transaction.bankAccountNumber ? transaction.bankAccountNumber : n_a}
{TransactionDetails.text_bank_account_type}:{transaction.bankAccountType ? transaction.bankAccountType : n_a}
{TransactionDetails.text_payee_name}:{transaction.payeeName ? transaction.payeeName : n_a}
{TransactionDetails.text_payment_confirmation}:{transaction.ElectronicSchoolPaymentPaymentId}
\n
\n \n \n \n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default LanguageHOC(TransactionDetails);","/*\n*\n* TransactionHistory Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Button,\n} from '@mui/material';\nimport {\n CardAligned,\n CardBody,\n CardTitle,\n LoadingOverlay,\n DatePicker,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport {\n getTransactionDetails,\n getTransactionsExport,\n} from '../../actions';\nimport { transactionsByDateFilter } from 'utils/helpers/data_filters';\n\nimport TransactionDetails from './TransactionDetails';\n\nimport accountDetailsStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n transaction: state.accounts.transaction,\n loadedTransactions: state.accounts.loadedTransactions,\n});\n\nexport class TransactionHistory extends React.Component {\n static propTypes = {\n accountId: PropTypes.number.isRequired,\n isScholarshipAccount: PropTypes.bool.isRequired,\n transactions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n date: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n basis: PropTypes.number.isRequired,\n amount: PropTypes.number.isRequired,\n taxYear: PropTypes.number\n })\n ).isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.number.isRequired,\n date: PropTypes.string,\n type: PropTypes.string.isRequired,\n source: PropTypes.string.isRequired,\n payeeName: PropTypes.string,\n total: PropTypes.number.isRequired,\n basis: PropTypes.number.isRequired,\n bankName: PropTypes.string.isRequired,\n bankAccountNumber: PropTypes.string.isRequired,\n bankAccountType: PropTypes.string.isRequired,\n transactionDetails: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n fundName: PropTypes.string,\n units: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n amount: PropTypes.number.isRequired,\n })\n )\n }).isRequired,\n getTransactionDetails: PropTypes.func.isRequired,\n getTransactionsExport: PropTypes.func.isRequired,\n text: PropTypes.shape({\n TransactionHistory: PropTypes.shape({\n btn_export: PropTypes.string,\n btn_open: PropTypes.string,\n err_date_past_today: PropTypes.string,\n err_from_after_to: PropTypes.string,\n err_to_before_from: PropTypes.string,\n head_title: PropTypes.string,\n lbl_from_date: PropTypes.string,\n lbl_to_date: PropTypes.string,\n text_amount: PropTypes.string,\n text_basis: PropTypes.string,\n text_date: PropTypes.string,\n text_no_upcoming_transactions: PropTypes.string,\n text_tax_year: PropTypes.string,\n text_transaction_type: PropTypes.string,\n text_view_details: PropTypes.string,\n text_milestone: PropTypes.string,\n })\n }).isRequired,\n loadedTransactions: PropTypes.array.isRequired,\n };\n\n state = {\n transactions: [],\n showTransaction: false,\n loadingTransaction: false,\n selectedTransaction: null,\n filterDates: {\n startDate: dayjs().subtract(6, 'month'),\n endDate: dayjs(),\n },\n formErrors: {},\n isExporting: false,\n };\n\n toggleDetailsDrawer = () => {\n this.setState({ showTransaction: !this.state.showTransaction });\n }\n\n transactionDetailsShow = (accountId, transactionId) => {\n // first check if transaction was already loaded if not call api\n const foundTransaction = this.props.loadedTransactions.find(transaction => transaction.id === transactionId);\n if (foundTransaction) {\n this.setState({ selectedTransaction: foundTransaction });\n this.toggleDetailsDrawer();\n }\n else {\n this.setState({ loadingTransaction: true });\n this.props.getTransactionDetails(accountId, transactionId)\n .then(() => {\n this.setState({\n loadingTransaction: false,\n selectedTransaction: this.props.transaction\n });\n this.toggleDetailsDrawer();\n })\n .catch(() => null);\n }\n }\n\n onInputChange = (name, value) => {\n this.setState({\n filterDates: {\n ...this.state.filterDates,\n [name]: value,\n },\n }, () => this.filterTransactions(name));\n }\n\n filterTransactions = (fieldName) => {\n const { transactions } = this.props;\n const { filterDates } = this.state;\n\n if (this.formValidate(fieldName)) {\n let filteredTransactions = transactions; // default to props transactions, if dates are removed\n if (filterDates.startDate && filterDates.endDate) { // if both dates are provided, then get filtered transactions\n filteredTransactions = transactionsByDateFilter(transactions, filterDates);\n }\n this.setState({ transactions: filteredTransactions });\n }\n }\n\n formValidate = (fieldName) => {\n const { TransactionHistory } = this.props.text;\n const { startDate, endDate } = this.state.filterDates;\n const formErrors = {};\n\n // startDate validation\n formErrors.startDate = validator.calendarValidator(startDate);\n if (dayjs(startDate).isAfter(dayjs(), 'day')) {\n formErrors.startDate = TransactionHistory.err_date_past_today;\n }\n if (dayjs(startDate).isAfter(dayjs(endDate), 'day') && fieldName === 'startDate') {\n formErrors.startDate = TransactionHistory.err_from_after_to;\n }\n\n // endDate validation\n formErrors.endDate = validator.calendarValidator(endDate);\n if (dayjs(endDate).isBefore(dayjs(startDate), 'day') && fieldName === 'endDate') {\n formErrors.endDate = TransactionHistory.err_to_before_from;\n }\n\n // if both dates are blank, empty out errors\n if (!startDate && !endDate) {\n formErrors.startDate = '';\n formErrors.endDate = '';\n }\n\n this.setState({ formErrors });\n const hasErrors = Object.keys(formErrors).some(field => formErrors[field] !== '');\n\n return !hasErrors;\n }\n\n handleExportTransactions = () => {\n const { getTransactionsExport, accountId, transactions } = this.props;\n const { startDate, endDate } = this.state.filterDates;\n\n let canRunExport = true; // default to true for when no dates have been populated\n if (startDate || endDate) { // if either date is populated, run validation \n canRunExport = this.formValidate('startDate'); // default fieldName to startDate for validator\n }\n\n if (canRunExport) {\n const filterDates = {\n startDate: startDate ? dayjs(startDate).format('MM-DD-YYYY') : transactions[transactions.length - 1].date, // if no dates, default startDate to last in array as that is the earliest date,\n endDate: endDate ? dayjs(endDate).format('MM-DD-YYYY') : transactions[0].date, // if no dates, default endDate to first in array as that is the latest date,\n };\n this.setState({ isExporting: true });\n getTransactionsExport(accountId, filterDates)\n .then(({ payload }) => {\n const file = new Blob([payload.data], { type: 'text/csv;encoding:utf-8' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(file);\n link.setAttribute('download', 'My529TransactionHistory.csv'); // sets filename\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n this.setState({ isExporting: false });\n })\n .catch(() => this.setState({ isExporting: false, }));\n }\n }\n\n renderDateFilter = () => {\n const { TransactionHistory } = this.props.text;\n const { formErrors, filterDates: { startDate, endDate, }, isExporting, transactions, } = this.state;\n const noTransactions = transactions.length === 0;\n\n return (\n
\n
\n
\n this.onInputChange('startDate', e ? e.toDate() : e)}\n value={startDate || null}\n />\n
\n
\n this.onInputChange('endDate', e ? e.toDate() : e)}\n value={endDate || null}\n />\n
\n
\n
\n \n \n {TransactionHistory.btn_export}\n \n \n
\n
\n );\n }\n\n componentDidMount() {\n // initialize selectedTransaction even if empty\n this.filterTransactions('startDate');\n this.setState({\n selectedTransaction: this.props.transaction,\n });\n }\n\n render() {\n const {\n accountId,\n isScholarshipAccount,\n text: { TransactionHistory }\n } = this.props;\n const { showTransaction, loadingTransaction, selectedTransaction, transactions } = this.state;\n const columns = [\n {\n key: 'date',\n title: TransactionHistory.text_date,\n type: 'dateString',\n },\n {\n key: 'type',\n title: TransactionHistory.text_transaction_type,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'basis',\n title: TransactionHistory.text_basis,\n type: 'currency',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'amount',\n title: TransactionHistory.text_amount,\n type: 'currency',\n },\n {\n key: 'taxYear',\n title: TransactionHistory.text_tax_year,\n type: 'number',\n hideOn: ['phone', 'tablet'],\n customStyle: { width: '125px' }\n },\n ];\n if (isScholarshipAccount) { // add milestone column, if account type is scholarship\n columns.push({\n key: 'milestone',\n title: TransactionHistory.text_milestone,\n type: 'string',\n hideOn: ['phone', 'tablet'],\n });\n }\n\n return (\n\n \n {TransactionHistory.head_title}\n \n \n {this.renderDateFilter()}\n
\n this.transactionDetailsShow(accountId, row.id),\n iconTitle: TransactionHistory.btn_open,\n },\n ]}\n >\n \n \n \n this.transactionDetailsShow(accountId, row.id)}\n />\n \n \n \n
\n \n \n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getTransactionDetails,\n getTransactionsExport,\n})(LanguageHOC(TransactionHistory)));\n","/*\n*\n* ValueDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport parentStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nexport class ValueDetails extends React.Component {\n static propTypes = {\n account: PropTypes.shape({\n netPrincipal: PropTypes.string,\n earnings: PropTypes.string,\n ytdContributions: PropTypes.string,\n priorContributions: PropTypes.string,\n }),\n text: PropTypes.shape({\n Details: PropTypes.shape({\n head_beneficiary: PropTypes.string,\n head_current_tax_year_contributions: PropTypes.string,\n head_earnings: PropTypes.string,\n head_netPrincipal: PropTypes.string,\n head_ppr: PropTypes.string,\n head_prior_tax_year_contributions: PropTypes.string,\n head_remaining_option_changes: PropTypes.string,\n head_total_value: PropTypes.func,\n nav_path_investment: PropTypes.string,\n }),\n }),\n };\n\n render() {\n const { account, text: { Details }, } = this.props;\n\n return (\n
\n
\n
\n
{Details.head_netPrincipal}
\n
{account.netPrincipal}
\n
\n
\n
{Details.head_earnings}
\n
{account.earnings}
\n
\n
\n
{Details.head_current_tax_year_contributions}
\n
{account.ytdContributions}
\n
\n
\n
{Details.head_prior_tax_year_contributions}
\n
{account.priorContributions}
\n
\n
\n
\n );\n }\n\n}\n\nexport default LanguageHOC(ValueDetails);","/*\n*\n* OptionDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n IconBtnTooltip,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nimport parentStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nexport class OptionDetails extends React.Component {\n static propTypes = {\n account: PropTypes.shape({\n fundAllocations: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n fundName: PropTypes.string.isRequired,\n ticker: PropTypes.string.isRequired,\n priceNum: PropTypes.number.isRequired,\n Units: PropTypes.string.isRequired,\n Value: PropTypes.string.isRequired,\n }).isRequired,\n ).isRequired,\n option: PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.number,\n isCustom: PropTypes.bool,\n }),\n optionChangesRemaining: PropTypes.number,\n }),\n isCustomOption: PropTypes.bool.isRequired,\n path: PropTypes.string.isRequired,\n predefinedOptions: PropTypes.array.isRequired,\n text: PropTypes.shape({\n OptionDetails: PropTypes.shape({\n head_investment_option: PropTypes.func,\n head_remaining_option_changes: PropTypes.string,\n nav_path_investment: PropTypes.string,\n text_custom: PropTypes.string,\n text_enrollment_date: PropTypes.string,\n text_static: PropTypes.string,\n title_portfolio: PropTypes.string,\n title_nav: PropTypes.string,\n title_see_more_details: PropTypes.string,\n title_symbol: PropTypes.string,\n title_total: PropTypes.string,\n title_units: PropTypes.string,\n }),\n }),\n };\n\n state = {\n currentOptionLink: '',\n currentOptionType: '',\n }\n\n componentDidMount() {\n const { account, isCustomOption, path, predefinedOptions, text: { OptionDetails } } = this.props;\n\n const currentOption = predefinedOptions.find(option => option.OptionId === account.option.id);\n const currentOptionLink = isCustomOption\n // only Customized options can use the investment path link\n ? `${path}/${OptionDetails.nav_path_investment}`\n : currentOption.OptionOnlineLink;\n const currentOptionType = isCustomOption\n ? OptionDetails.text_custom\n : currentOption.isStatic\n ? OptionDetails.text_static\n : OptionDetails.text_enrollment_date;\n this.setState({ currentOptionLink, currentOptionType });\n }\n\n render() {\n const { account: { fundAllocations, option, optionChangesRemaining }, isCustomOption, history, text: { OptionDetails } } = this.props;\n const { currentOptionLink, currentOptionType } = this.state;\n const handleOptionLink = () => isCustomOption\n ? history.push(currentOptionLink)\n : window.open(currentOptionLink, '_blank', 'noopener noreferrer');\n \n return (\n
\n
\n
\n
\n {OptionDetails.head_investment_option(currentOptionType)}\n
\n
\n
{option.name}
\n
\n \n
\n
\n
\n\n
\n
\n {OptionDetails.head_remaining_option_changes}\n
\n
{optionChangesRemaining}
\n
\n
\n\n \n \n \n \n \n \n \n
\n );\n }\n\n}\n\nexport default withRouter(LanguageHOC(OptionDetails));","/*\n*\n* AccountDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport BeneContact from './BeneContact';\nimport CurrentAllocation from './CurrentAllocation';\nimport Details from './Details';\nimport PromoCode from './PromoCode';\nimport Successors from './Successors';\nimport UpcomingTransactions from '../UpcomingTransactions';\nimport TransactionHistory from './TransactionHistory';\nimport ValueDetails from './ValueDetails';\nimport OptionDetails from './OptionDetails';\nimport TransactionButtons from '../TransactionButtons';\n\nimport {\n Divider,\n Paper,\n} from '@mui/material';\nimport {\n sizify,\n} from '@frontend/common';\nimport { submitPromoCode, getAccounts, } from '../actions';\n\n\nimport styles from './styles.module.scss';\n\n\nconst select = (state, props) => ({\n account: state.accounts.accountList.find(data => data.accountId === parseInt(props.match.params.accountId)) || state.accounts.emptyAccount,\n lastMarketDate: state.static.environmentVars.LastMarketDate,\n predefinedOptions: state.optionChanges.predefinedOptions,\n});\n\nexport class AccountDetails extends React.Component {\n\n static propTypes = {\n account: PropTypes.shape({\n accountCloseDate: PropTypes.string,\n accountId: PropTypes.number,\n accountIsClosed: PropTypes.bool,\n accountNumber: PropTypes.number,\n accountType: PropTypes.string,\n beneficiary: PropTypes.object,\n hasAvailablePromoCodes: PropTypes.bool,\n interestedPartyId: PropTypes.number,\n moneyAllocations: PropTypes.array,\n option: PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.number,\n isCustom: PropTypes.bool,\n }),\n permissions: PropTypes.shape({\n Contribute: PropTypes.bool,\n EditAccount: PropTypes.bool,\n OptionChange: PropTypes.bool,\n Transfer: PropTypes.bool,\n Withdraw: PropTypes.bool,\n WithdrawalRequest: PropTypes.bool,\n }),\n transactions: PropTypes.array,\n }).isRequired,\n lastMarketDate: PropTypes.string.isRequired,\n predefinedOptions: PropTypes.array.isRequired,\n getAccounts: PropTypes.func.isRequired,\n submitPromoCode: PropTypes.func.isRequired,\n size: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n text_account_closed: PropTypes.string,\n }),\n AccountsSummary: PropTypes.shape({\n head_account_type: PropTypes.string,\n head_interested_party: PropTypes.string,\n }),\n Documents: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n }).isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n };\n\n state = {\n lastClicked: null,\n }\n\n render() {\n const { account, size, text, location, lastMarketDate, predefinedOptions, submitPromoCode, } = this.props;\n const { lastClicked } = this.state;\n const isInterestedParty = Boolean(account.interestedPartyId);\n\n return (\n
\n \n {/* displays warning banner if account is closed */}\n {account.accountIsClosed &&
{text.Accounts.text_account_closed} {account.accountCloseDate}
}\n\n
\n \n {isInterestedParty ? // displays different header for interested party account\n
{text.AccountsSummary.head_account_type} {account.accountType} - {text.AccountsSummary.head_interested_party}
\n :\n
{text.AccountsSummary.head_account_type} {account.accountType}
\n }\n
\n
\n \n\n \n\n this.setState({ lastClicked: 'BeneContact' })}\n isLastClicked={lastClicked === 'BeneContact'}\n />\n\n \n\n
\n this.setState({ lastClicked: 'Transactions' })}\n />\n
\n\n \n\n \n
\n\n
\n \n\n \n\n \n\n this.setState({ lastClicked: 'Successors' })}\n isLastClicked={lastClicked === 'Successors'}\n />\n
\n
\n
\n
\n\n {(account.permissions.EditAccount || account.permissions.WithdrawalRequest) && ( // hidden for Interested Parties (but not CSAs that can request withdrawals), and when no transactions exist\n \n )}\n\n \n
\n );\n }\n}\n\nexport default connect(select, { submitPromoCode, getAccounts, })(sizify(LanguageHOC(AccountDetails)));\n","/*\n*\n* Search Component\n*\n*/\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { cloneDeep, debounce, isEqual, } from 'lodash';\nimport Fuse from 'fuse.js';\n\nimport { \n MenuItem\n} from '@mui/material';\n\nimport {\n Search\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport class ComposableSearch extends Component {\n\n static propTypes = {\n idKey: PropTypes.string.isRequired,\n data: PropTypes.array.isRequired,\n dataColumns: PropTypes.array.isRequired,\n disabled: PropTypes.bool,\n updateData: PropTypes.func.isRequired,\n hasSearchMenu: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n ComposableSearch: PropTypes.shape({\n text_search_suggestion: PropTypes.func,\n }),\n }),\n };\n\n state = {\n showSearchSuggestions: false,\n filterTerm: '',\n selectedSearchMenuIndex: -1,\n };\n\n searchMenuHide = () => {\n this.setState({\n showSearchSuggestions: false,\n selectedSearchMenuIndex: -1,\n });\n };\n \n keyPressHandle = e => {\n const { showSearchSuggestions, selectedSearchMenuIndex, } = this.state;\n const columns = this.props.dataColumns;\n if (e.keyCode === 27) { // ESC Key\n this.searchMenuHide();\n }\n if (showSearchSuggestions) {\n switch (e.keyCode) {\n case 13: { // Enter Key\n if (selectedSearchMenuIndex > -1) {\n this.onSearchSuggestionClick(selectedSearchMenuIndex);\n }\n else {\n this.searchMenuHide();\n }\n break;\n }\n case 40: { // Arrow Down Key\n if (selectedSearchMenuIndex < columns.length - 1) {\n this.setState({\n selectedSearchMenuIndex: selectedSearchMenuIndex + 1,\n });\n }\n break;\n }\n case 38: { // Arrow Up Key\n if (selectedSearchMenuIndex > -1) {\n this.setState({\n selectedSearchMenuIndex: selectedSearchMenuIndex - 1,\n });\n }\n break;\n }\n default: break;\n }\n }\n };\n\n onSearchSuggestionClick = (index) => {\n const column = this.props.dataColumns[index];\n this.setState({ filterTerm: `${column.title}: ${this.state.filterTerm}`, showSearchSuggestions: false, }, this.onFilter);\n };\n\n onFilter = () => {\n const { filterTerm } = this.state;\n const searchIsActive = Boolean(filterTerm);\n const splitTerm = filterTerm.split(':').map(val => val.trim());\n \n\n let sortColumn = '';\n let searchTerm = '';\n \n if (splitTerm.length > 1) {\n const column = this.props.dataColumns.find(column => column.title.toLowerCase() === splitTerm[0].toLowerCase());\n sortColumn = [column.key];\n searchTerm = splitTerm[splitTerm.length - 1];\n }\n else {\n sortColumn = this.props.dataColumns.map(column => column.key);\n searchTerm = filterTerm;\n }\n\n const updatedResults = this.filterData(sortColumn, searchTerm);\n this.props.updateData(updatedResults, searchIsActive);\n }\n\n filterData = (sortColumn, searchTerm) => {\n const fuseConfig = {\n tokenize: true,\n findAllMatches: true,\n shouldSort: true,\n maxPatternLength: 100,\n minMatchCharLength: 1,\n threshold: 0.2,\n location: 0,\n distance: 50,\n keys: sortColumn\n };\n const clonedData = cloneDeep(this.props.data);\n if (searchTerm.length > 0) {\n\n const fuse = new Fuse(clonedData, fuseConfig);\n const results = fuse.search(searchTerm);\n const matchedRows = [];\n \n results.forEach(result => {\n const matchingRow = clonedData.filter(row => row[this.props.idKey] === result.item[this.props.idKey])[0];\n if (matchingRow) matchedRows.push(matchingRow);\n });\n \n return matchedRows;\n }\n else {\n return clonedData;\n }\n };\n\n componentDidMount() {\n document.addEventListener('keyup', this.keyPressHandle);\n }\n \n componentDidUpdate(prevProps) {\n // if data is updated from parent, run through search again to give back searched results\n if (!isEqual(prevProps.data, this.props.data)) { \n this.onFilter();\n }\n }\n \n componentWillUnmount() {\n document.removeEventListener('keyup', this.keyPressHandle);\n }\n\n render() {\n const { filterTerm, showSearchSuggestions, selectedSearchMenuIndex, } = this.state;\n \n return (\n this.setState({ showSearchSuggestions: Boolean(filterTerm) && this.props.hasSearchMenu })} // if a filterTerm exists and the hasSearchMenu is true, can show searchSuggestions\n >\n this.setState({ filterTerm, showSearchSuggestions: Boolean(filterTerm) && this.props.hasSearchMenu }, debounce(this.onFilter, 300))}\n value={filterTerm}\n disabled={this.props.disabled}\n />\n \n {this.props.dataColumns.map((column, index) => (\n {\t\t\n this.onSearchSuggestionClick(index);\t\n }}\n >\n {this.props.text.ComposableSearch.text_search_suggestion(filterTerm, column.title)}\n \n ))}\n
\n
\n );\n }\n\n}\n\nexport default (LanguageHOC(ComposableSearch));","/*\n*\n* AccountsSummary Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { uniq, includes } from 'lodash';\nimport {\n Link,\n withRouter,\n} from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport Search from 'utils/components/Search';\nimport { accountsByFilter } from 'utils/helpers/data_filters';\nimport {\n Button,\n Icon,\n MenuItem,\n Paper,\n FormControl,\n Select,\n Input,\n ListSubheader,\n} from '@mui/material';\nimport {\n currencyFormatter,\n IconBtnTooltip,\n} from '@frontend/common';\n\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\n\nimport TransactionButtons from '../TransactionButtons';\n\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n accountList: state.accounts.accountList.map(account => ({\n accountId: account.accountId,\n accountGroupId: account.accountGroupId,\n beneficiaryName: account.beneficiary.name,\n totalValue: account.totalValue,\n accountNumber: account.accountNumber,\n agreementDate: account.agreementDate,\n accountType: account.accountType,\n optionName: account.option.name,\n programName: account.programName,\n csaWizardUrl: account.csaWizardUrl,\n })),\n grandTotalAllAccounts: state.accounts.grandTotalAllAccounts,\n groupedAccountsSummary: state.accounts.groupedAccountsSummary,\n lastMarketDate: state.static.environmentVars.LastMarketDate,\n});\n\nexport class AccountsSummary extends React.Component {\n static propTypes = {\n accountList: PropTypes.arrayOf(\n PropTypes.shape({\n accountId: PropTypes.number,\n accountGroupId: PropTypes.number,\n beneficiaryName: PropTypes.string,\n totalValue: PropTypes.string,\n accountNumber: PropTypes.number,\n agreementDate: PropTypes.string,\n accountType: PropTypes.string,\n optionName: PropTypes.string,\n programName: PropTypes.string,\n csaWizardUrl: PropTypes.string,\n })\n ).isRequired,\n grandTotalAllAccounts: PropTypes.string.isRequired,\n groupedAccountsSummary: PropTypes.shape({\n accountId: PropTypes.number,\n accountNumber: PropTypes.number,\n agreementDate: PropTypes.string,\n accountType: PropTypes.string,\n beneficiaryId: PropTypes.string,\n beneficiaryName: PropTypes.string,\n optionName: PropTypes.string,\n totalValue: PropTypes.number,\n totalValueFormatted: PropTypes.string,\n }),\n isTileView: PropTypes.bool.isRequired,\n lastMarketDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n text_account_closed: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({\n nav_link: PropTypes.func,\n nav_path: PropTypes.func,\n }),\n AccountsSummary: PropTypes.shape({\n btn_add_account: PropTypes.string,\n btn_csa_account: PropTypes.string,\n btn_my529_account: PropTypes.string,\n head_account_type: PropTypes.string,\n head_beneficiary: PropTypes.string,\n head_date_opened: PropTypes.string,\n head_interested_party: PropTypes.string,\n head_market_date: PropTypes.string,\n head_total_accts: PropTypes.string,\n head_total_value: PropTypes.string,\n head_ytd_return: PropTypes.string,\n }),\n Signup: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n size: PropTypes.object.isRequired,\n };\n\n state = {\n filteredGroupedAccountsList: [],\n dashboardAccountList: [],\n filteredAccountList: [],\n filterList: [],\n selectedFilters: [],\n searchedAccountList: [],\n searchIsActive: false,\n showFilterList: false,\n };\n\n getFilteredGroupedSummaryList = (filteredAccountList) => uniq(filteredAccountList.map(account => `${account.beneficiaryName}_${account.accountType}_${account.accountGroupId}`));\n\n updateDataHandler = (searchedAccountList, searchIsActive) => {\n const filteredAccountList = accountsByFilter(searchedAccountList, this.state.selectedFilters);\n const filteredGroupedAccountsList = this.getFilteredGroupedSummaryList(filteredAccountList);\n this.setState({\n searchedAccountList,\n filteredAccountList,\n searchIsActive,\n filteredGroupedAccountsList,\n });\n };\n\n setupFilterList(accountList) {\n // get unique bene names and investment options\n const beneficiaryNames = uniq(this.props.accountList.map(account => account.beneficiaryName));\n const optionNames = uniq(this.props.accountList.map(account => account.optionName));\n const filterList = [\n { listHeader: 'Accounts', key: 'accountsHeader' },\n ...accountList.map(account => ({ // list of Account Numbers\n label: account.accountNumber,\n key: account.accountNumber,\n isActive: selectedFilters => includes(selectedFilters, account.accountNumber),\n })),\n { listHeader: 'Beneficiaries', key: 'benesHeader' },\n ...beneficiaryNames.map(name => ({ // list of Beneficiaries\n label: name,\n key: name,\n isActive: selectedFilters => includes(selectedFilters, name),\n })),\n { listHeader: 'Options', key: 'optionsHeader' },\n ...optionNames.map(name => ({ // list of options\n label: name,\n key: name,\n isActive: selectedFilters => includes(selectedFilters, name),\n })),\n ];\n return filterList;\n }\n\n handleShowFilterList = () => {\n this.setState({ showFilterList: !this.state.showFilterList });\n }\n\n handleFilterSelect = e => {\n const { dashboardAccountList, searchedAccountList, searchIsActive } = this.state;\n const selectedFilters = e.target.value;\n const accountListToUse = searchIsActive ? searchedAccountList : dashboardAccountList; // if searching is active, use searched results instead of full dashboardAccountList\n const filteredAccountList = accountsByFilter(accountListToUse, selectedFilters);\n const filteredGroupedAccountsList = this.getFilteredGroupedSummaryList(filteredAccountList);\n\n this.setState({\n selectedFilters,\n filteredAccountList,\n filteredGroupedAccountsList,\n });\n }\n\n addAccountButtonRender = () => {\n const { text: { AccountsSummary, Signup } } = this.props;\n return (\n this.props.history.push(Signup.nav_path)}\n variant='contained'\n >\n {AccountsSummary.btn_add_account}\n \n );\n }\n\n calculateTotalSum = (group) => {\n const { groupedAccountsSummary } = this.props;\n const sum = groupedAccountsSummary[group].reduce((sum, account) => sum + account.totalValue, 0);\n return currencyFormatter(sum);\n }\n\n menuClose = (accountId) => {\n this.setState({ moreMenuAnchorPoints: { ...this.state.moreMenuAnchorPoints, [accountId]: null } });\n }\n\n menuOpen = (event, accountId) => {\n this.setState({ moreMenuAnchorPoints: { ...this.state.moreMenuAnchorPoints, [accountId]: event.currentTarget } });\n }\n\n initialize = () => {\n // Creates menu anchor point for every account, since each menu includes a different path to transactions\n const moreMenuAnchorPoints = {};\n const groupedAccountsList = Object.keys(this.props.groupedAccountsSummary);\n groupedAccountsList.forEach(group => {\n this.props.groupedAccountsSummary[group].forEach(account => {\n moreMenuAnchorPoints[account.accountId] = null;\n });\n });\n this.setState({\n moreMenuAnchorPoints,\n filteredGroupedAccountsList: groupedAccountsList,\n dashboardAccountList: this.props.accountList,\n filteredAccountList: this.props.accountList,\n filterList: this.setupFilterList(this.props.accountList),\n });\n }\n\n componentDidMount() {\n this.initialize();\n }\n\n componentDidUpdate(prevProps) {\n const { groupedAccountsSummary } = this.props;\n const groupedAccountsSummaryLoaded = groupedAccountsSummary && prevProps.groupedAccountsSummary !== groupedAccountsSummary && Object.keys(groupedAccountsSummary).length > 0;\n if (groupedAccountsSummaryLoaded) {\n this.initialize();\n }\n }\n\n render() {\n const { grandTotalAllAccounts, groupedAccountsSummary, lastMarketDate, isTileView, size, text } = this.props;\n const { filterList, showFilterList, selectedFilters, filteredGroupedAccountsList } = this.state;\n\n const readyToRenderGroups = (filteredGroupedAccountsList && Object.keys(filteredGroupedAccountsList).length > 0) && (groupedAccountsSummary && Object.keys(groupedAccountsSummary).length > 0);\n\n return (\n
\n
\n
\n {\n this.handleShowFilterList();\n }}\n icon='filter_list'\n title={'Filter Accounts'}\n />\n \n {\n this.handleShowFilterList();\n }}\n value={selectedFilters}\n onChange={(event) => {\n this.handleFilterSelect(event);\n }}\n multiple\n input={}\n >\n {filterList.map(filter => filter.listHeader\n ? {filter.listHeader}\n :\n \n {filter.label}\n \n )}\n \n \n
\n\n
\n \n
\n
\n
\n
\n

{text.AccountsSummary.head_total_accts} {lastMarketDate}

\n

{grandTotalAllAccounts}

\n
\n {this.addAccountButtonRender()}\n
\n\n
\n {readyToRenderGroups && filteredGroupedAccountsList.map(group => {\n const accountGroup = groupedAccountsSummary[group];\n return (\n \n
\n {accountGroup[0].interestedPartyId ? // displays different header for interested party account\n
{text.AccountsSummary.head_account_type} {accountGroup[0].accountType} - {text.AccountsSummary.head_interested_party}
\n :\n
{text.AccountsSummary.head_account_type} {accountGroup[0].accountType}
\n }\n
\n
\n
\n

{text.AccountsSummary.head_beneficiary}

\n

{accountGroup[0].beneficiaryName}

\n {accountGroup[0].beneficiaryAge && accountGroup[0].beneficiaryAge > 0 &&\n

Age: {accountGroup[0].beneficiaryAge}

\n }\n {accountGroup[0].ownerEntity && accountGroup[0].accountTypeEnum === 'D' && (\n
\n school\n

{accountGroup[0].ownerEntity.Name}

\n
\n )}\n
\n\n
\n

{text.AccountsSummary.head_total_value}

\n

{this.calculateTotalSum(group)}

\n
\n

{text.AccountsSummary.head_market_date}

\n

{lastMarketDate}

\n
\n
\n
\n\n {accountGroup.map(account => [\n
,\n account.accountIsClosed &&
{text.Accounts.text_account_closed} {account.accountCloseDate}
,\n
\n
\n\n
\n
{account.optionName}
\n {account.accountNumber}\n
{text.AccountsSummary.head_date_opened}: {account.agreementDate}
\n
\n\n
\n \n
\n\n
\n
{account.totalValueFormatted}
\n
\n

{text.AccountsSummary.head_ytd_return}

\n

{account.ytdPRR}

{/* eslint-disable-line */} {/**styles negative nums in red, positive in green, and nothing for Not Available */}\n
\n
\n
\n
\n ])}\n
\n
\n
\n );\n })}\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, {})((LanguageHOC(AccountsSummary))));","/*\n*\n* Accounts Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Route,\n Switch,\n withRouter\n} from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { getAccounts, getAccountsSummary } from './actions';\nimport AccountDetails from 'components/Features/protected/Accounts/AccountDetails';\nimport AccountsSummary from 'components/Features/protected/Accounts/AccountsSummary';\nimport {\n Tabs,\n Tab,\n} from '@mui/material';\nimport {\n LoadingOverlay,\n sizify,\n} from '@frontend/common';\n\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList.map(account => ({\n accountId: account.accountId,\n accountGroupId: account.accountGroupId,\n beneficiaryName: account.beneficiary.name,\n totalValue: account.totalValue,\n accountNumber: account.accountNumber,\n accountType: account.accountType,\n optionName: account.option.name,\n programName: account.programName,\n csaWizardUrl: account.csaWizardUrl,\n })),\n});\n\nexport class Accounts extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.arrayOf(\n PropTypes.shape({\n accountId: PropTypes.number,\n accountGroupId: PropTypes.number,\n beneficiaryName: PropTypes.string,\n totalValue: PropTypes.string,\n accountNumber: PropTypes.number,\n accountType: PropTypes.string,\n optionName: PropTypes.string,\n programName: PropTypes.string,\n csaWizardUrl: PropTypes.string,\n })\n ).isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountsSummary: PropTypes.func.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n head_title: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func }),\n }).isRequired,\n };\n\n state = {\n isTileView: false,\n loading: false,\n accountList: [],\n };\n\n componentDidMount() {\n if (this.props.accountList.length === 0) {\n this.setState({ loading: true });\n this.props.getAccounts()\n .then(() => this.props.getAccountsSummary())\n .finally(() => this.setState({\n loading: false,\n isTileView: this.props.size.windowWidth < parseInt(mobileWidth),\n }));\n }\n else {\n this.props.getAccountsSummary();\n this.setState({\n isTileView: this.props.size.windowWidth < parseInt(mobileWidth),\n });\n }\n }\n\n componentDidUpdate({ size }) {\n const { size: { windowWidth } } = this.props;\n if (size.windowWidth !== windowWidth) {\n this.setState({\n isTileView: windowWidth < parseInt(mobileWidth),\n });\n }\n }\n\n render() {\n const { accountList, history, size, text } = this.props;\n const { isTileView } = this.state;\n\n return (\n \n
\n {\n\n return (\n
\n \n \n
{text.Accounts.head_title}
\n
\n }\n to={text.Accounts.nav_path}\n value={text.Accounts.nav_path}\n onClick={() => history.push(text.Accounts.nav_path)}\n />\n {accountList.length > 0 && accountList.map(account => (\n \n
{account.beneficiaryName}
\n
{`(...${account.accountNumber.toString().substring(4)})`}
\n
\n }\n to={text.AccountDetails.nav_path(account.accountId)} // component defined above will push to this route, which gets defined in Switch below\n value={text.AccountDetails.nav_path(account.accountId)}\n onClick={() => history.push(text.AccountDetails.nav_path(account.accountId))}\n />\n ))}\n \n\n {/* Dynamically creates a route for each tab (aka account) */}\n (\n \n )}\n />\n }\n />\n \n
\n );\n }}\n />\n
\n
\n );\n }\n}\n\nexport default withRouter(connect(select, { getAccounts, getAccountsSummary })(sizify(LanguageHOC(Accounts))));\n","/*\n*\n* UpcomingSchedules Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n withRouter\n} from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n getAllUpcomingTransactions,\n getAccounts,\n} from 'components/Features/protected/Accounts/actions';\nimport {\n deleteTransaction,\n getScheduledTransaction,\n} from 'components/Features/protected/Accounts/Transactions/actions';\nimport {\n getOptionChangeById\n} from 'components/Features/protected/Accounts/Transactions/OptionChanges/actions';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { getPreferredMethod } from 'components/Features/protected/Multifactor/actions';\nimport { protectAction, protectWithdrawal } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport {\n CardAligned,\n CardBody,\n CardTitle,\n notificationShow,\n ConfirmModal,\n LoadingOverlay,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nimport ViewPendingOptionChange from 'components/Features/protected/Accounts/UpcomingTransactions/ViewPendingOptionChange';\n\nimport transactionHubStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nexport const transactionTypes = { // used for API routing below\n transfers: 'transfers',\n optionChanges: 'option-changes',\n withdrawals: 'withdrawals',\n contributions: 'contributions'\n};\n\nconst select = (state) => ({\n upcomingTransactionsAll: state.accounts.upcomingTransactionsAll.map((transaction, index) => ({ ...transaction, id: index })),\n selectedTransaction: state.transactions.selectedTransaction,\n optionChangeById: state.optionChanges.optionChangeById,\n claims: state.session.claims,\n preferredInfo: state.multifactor.preferredInfo,\n});\n\nexport class UpcomingSchedules extends React.Component {\n\n static propTypes = {\n getAccounts: PropTypes.func.isRequired,\n getAllUpcomingTransactions: PropTypes.func.isRequired,\n getScheduledTransaction: PropTypes.func.isRequired,\n getOptionChangeById: PropTypes.func.isRequired,\n deleteTransaction: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n text: PropTypes.shape({\n UpcomingTransactions: PropTypes.shape({\n head_title: PropTypes.string,\n menu_cancel: PropTypes.string,\n menu_edit: PropTypes.string,\n menu_view: PropTypes.string,\n msg_error_retrieving_transactions: PropTypes.string,\n text_acct_number: PropTypes.string,\n text_bene_name: PropTypes.string,\n text_option: PropTypes.string,\n text_amount: PropTypes.string,\n text_end_date: PropTypes.string,\n text_frequency: PropTypes.string,\n text_no_upcoming_transactions: PropTypes.string,\n text_scheduled_date: PropTypes.string,\n text_status: PropTypes.string,\n text_transaction_type: PropTypes.string,\n text_date: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func }),\n Transactions: PropTypes.shape({\n edit_path: PropTypes.string,\n nav_path: PropTypes.func,\n transactions_path: PropTypes.string,\n withdrawal_path: PropTypes.string,\n cancel_transaction_modal_message: PropTypes.func,\n TRANSACTION_TYPES: PropTypes.shape({\n CONTRIBUTION: PropTypes.object,\n OPTION_CHANGE: PropTypes.object,\n TRANSFER: PropTypes.object,\n WITHDRAWAL: PropTypes.object,\n WITHDRAWAL_REQUEST: PropTypes.object,\n }),\n }),\n }).isRequired,\n upcomingTransactionsAll: PropTypes.array.isRequired,\n selectedTransaction: PropTypes.object.isRequired,\n optionChangeById: PropTypes.object.isRequired,\n };\n\n state = {\n loading: false,\n showCancelConfirmModal: false,\n cancelTransactionLoading: false,\n selectedTransaction: {},\n loadingSelectedTransaction: false,\n showPendingOptionChange: false,\n selectedPendingOptionChange: {},\n hasPrecondition: false,\n rememberedFunction: '',\n txn: {}\n };\n\n upcomingTransactionsGet = () => {\n this.setState({ loading: true });\n return this.props.getAllUpcomingTransactions()\n .then(() => {\n this.setState({ loading: false });\n })\n .catch(() => {\n this.setState({ loading: false });\n });\n }\n\n editTransaction = transaction => {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transaction.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction,\n rememberedFunction: 'editTransaction'\n },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction,\n rememberedFunction: 'editTransaction'\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n const { text } = this.props;\n this.setState({ hasPrecondition: false, loadingSelectedTransaction: true, rememberedFunction: '' });\n this.props.getScheduledTransaction(transaction)\n .then(() => {\n this.setState({ loadingSelectedTransaction: false });\n const { AccountId, AccountGroupId } = this.props.selectedTransaction;\n switch (this.transactionType(transaction.TransactionType)) {\n case transactionTypes.transfers: {\n return this.props.history.push(`/accounts/${AccountId}/transactions/${transaction.ScheduleId}/transfers/edit`);\n }\n case transactionTypes.optionchanges: {\n return this.props.history.push(`${text.AccountDetails.nav_path(AccountId)}/${text.Transactions.transactions_path}/option-changes/${text.Transactions.edit_path}`);\n }\n case transactionTypes.withdrawals: {\n return this.props.history.push(`${text.AccountDetails.nav_path(AccountId)}/${text.Transactions.transactions_path}/${text.Transactions.withdrawal_path}/groups/${AccountGroupId}/${text.Transactions.edit_path}`);\n }\n case transactionTypes.contributions: {\n return this.props.history.push(text.Transactions.nav_path(AccountId, transaction.TransactionType, 'edit', transaction.ScheduleId));\n }\n default: return;\n }\n });\n }\n }\n\n viewTransaction = (transaction) => {\n // when pending only option changes are viewed\n const { ScheduleId, ActionId, TransactionType } = transaction;\n const { optionChangeById } = this.props;\n if (this.transactionType(TransactionType) === transactionTypes.optionchanges) {\n if (!optionChangeById || ScheduleId !== optionChangeById.OptionChangeId || ActionId !== optionChangeById.ActionId) {\n this.setState({ loadingSelectedTransaction: true });\n this.props.getOptionChangeById(ScheduleId, ActionId)\n .then(() => {\n this.togglePendingOptionChangeDrawer();\n this.setState({\n selectedPendingOptionChange: this.props.optionChangeById,\n loadingSelectedTransaction: false,\n });\n });\n }\n else {\n this.togglePendingOptionChangeDrawer();\n this.setState({\n selectedPendingOptionChange: optionChangeById,\n loadingSelectedTransaction: false,\n });\n }\n }\n }\n\n transactionType = (type) => {\n switch (type) {\n case 'Transfer Out':\n case 'Transfer In': return transactionTypes.transfers;\n case 'Option Change': return transactionTypes.optionchanges;\n case 'Withdrawal': return transactionTypes.withdrawals;\n case 'Contribution': return transactionTypes.contributions;\n default: return;\n }\n }\n\n upcomingTransactionCancelHandler = () => {\n const txn = this.state.selectedTransaction;\n this.setState({ cancelTransactionLoading: true });\n this.props.deleteTransaction(txn)\n .then(() => {\n this.props.notificationShow(`${txn.TransactionType} cancelled.`, 'success');\n this.setState({\n cancelTransactionLoading: false,\n showCancelConfirmModal: false,\n selectedTransaction: {},\n });\n this.upcomingTransactionsGet();\n this.props.getAccounts();\n })\n .catch(() => {\n this.setState({ cancelTransactionLoading: false, showCancelConfirmModal: false, });\n this.upcomingTransactionsGet();\n });\n };\n\n togglePendingOptionChangeDrawer = () => {\n this.setState({ showPendingOptionChange: !this.state.showPendingOptionChange });\n }\n\n protectDeleteAction(transaction) {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transaction.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transaction.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction,\n rememberedFunction: 'protectDeleteAction'\n },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n txn: transaction,\n rememberedFunction: 'protectDeleteAction'\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({\n hasPrecondition: false,\n showCancelConfirmModal: true,\n selectedTransaction: transaction,\n rememberedFunction: ''\n });\n }\n }\n\n componentDidMount() {\n this.upcomingTransactionsGet();\n this.props.getPreferredMethod();\n }\n\n componentDidUpdate() {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = this.state.txn.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || this.state.txn.TransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(this.state.txn.TransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n const rememberedFunction = this.state.rememberedFunction;\n this[rememberedFunction](this.state.txn);\n }\n }\n\n render() {\n const { text: { UpcomingTransactions, Transactions } } = this.props;\n const {\n showCancelConfirmModal,\n selectedTransaction,\n cancelTransactionLoading,\n showPendingOptionChange,\n selectedPendingOptionChange,\n loadingSelectedTransaction,\n loading,\n } = this.state;\n\n return (\n \n \n {UpcomingTransactions.head_title}\n \n \n
\n this.setState({\n selectedTransaction: row,\n }, this.editTransaction(row)),\n showIf: row => row.CanEdit,\n },\n {\n displayName: UpcomingTransactions.menu_view,\n type: 'menu',\n onSelect: row => this.setState({\n selectedTransaction: row,\n }, this.viewTransaction(row)),\n showIf: row => !row.CanEdit && row.TransactionType === 'Option Change',\n },\n {\n displayName: UpcomingTransactions.menu_cancel,\n type: 'menu',\n onSelect: row => this.protectDeleteAction(row),\n showIf: row => row.CanDelete,\n }\n ]}\n columns={[\n {\n key: 'AccountNumber',\n title: UpcomingTransactions.text_acct_number,\n type: 'number',\n },\n {\n key: 'BeneficiaryName',\n title: UpcomingTransactions.text_bene_name,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'Option',\n title: UpcomingTransactions.text_option,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'Frequency',\n title: UpcomingTransactions.text_frequency,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'TransactionType',\n title: UpcomingTransactions.text_transaction_type,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'Amount',\n title: UpcomingTransactions.text_amount,\n type: 'currency',\n },\n {\n key: 'Status',\n title: UpcomingTransactions.text_status,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'ScheduledDate',\n title: UpcomingTransactions.text_scheduled_date,\n type: 'dateString',\n hideOn: ['phone'],\n },\n {\n key: 'EndDate',\n title: UpcomingTransactions.text_end_date,\n type: 'dateString',\n hideOn: ['phone'],\n },\n ]}\n >\n \n \n \n \n \n \n
\n
\n
\n \n\n this.setState({ showCancelConfirmModal: false })}\n onConfirm={() => this.upcomingTransactionCancelHandler(selectedTransaction)}\n loading={cancelTransactionLoading}\n />\n\n \n
\n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getAllUpcomingTransactions,\n getScheduledTransaction,\n deleteTransaction,\n getOptionChangeById,\n notificationShow,\n getPreferredMethod,\n get2FAPrecondition,\n getRSAPrecondition,\n})(LanguageHOC(UpcomingSchedules)));\n","/*\n*\n* TransactionDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Drawer,\n} from '@mui/material';\n// import {\n// withWidth,\n// } from '@mui/styles';\nimport {\n CardTitle,\n currencyFormatter,\n IconBtnTooltip,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\n\nimport styles from './styles.module.scss';\n\nexport class TransactionDetails extends React.Component {\n\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.number.isRequired,\n accountNumber: PropTypes.number.isRequired,\n beneficiaryName: PropTypes.string.isRequired,\n option: PropTypes.string.isRequired,\n date: PropTypes.string,\n type: PropTypes.string.isRequired,\n source: PropTypes.string,\n payeeName: PropTypes.string,\n total: PropTypes.number.isRequired,\n basis: PropTypes.number.isRequired,\n accessCardNumber: PropTypes.string.isRequired,\n ElectronicSchoolPaymentPaymentId: PropTypes.string,\n transactionDetails: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n fundName: PropTypes.string,\n units: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n amount: PropTypes.number.isRequired,\n })\n )\n }).isRequired,\n text: PropTypes.shape({\n TransactionDetails: PropTypes.shape({\n head_title: PropTypes.string,\n text_acct_number: PropTypes.string,\n text_bene_name: PropTypes.string,\n text_option: PropTypes.string,\n text_portfolio: PropTypes.string,\n text_units: PropTypes.string,\n text_nav: PropTypes.string,\n text_amount: PropTypes.string,\n text_date: PropTypes.string,\n text_total: PropTypes.string,\n text_transaction_type: PropTypes.string,\n text_type: PropTypes.string,\n text_payee_name: PropTypes.string,\n text_bank_name: PropTypes.string,\n text_bank_account_number: PropTypes.string,\n text_bank_account_type: PropTypes.string,\n text_card_number: PropTypes.string,\n text_payment_confirmation: PropTypes.string,\n }),\n n_a: PropTypes.string,\n }).isRequired,\n };\n\n render() {\n const { open, onClose, transaction, text: { TransactionDetails, n_a } } = this.props;\n return (\n \n \n
\n
\n \n
\n
\n \n {TransactionDetails.head_title}\n \n
\n
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {transaction.accessCardNumber ?\n \n \n \n \n : null}\n {transaction.payeeName && !transaction.accessCardNumber ? // only hide on Access Card transactions\n \n \n \n \n : null}\n {transaction.source && transaction.source.includes('Electronic School') ?\n \n \n \n \n : null}\n \n
{TransactionDetails.text_acct_number}:{transaction.accountNumber}
{TransactionDetails.text_bene_name}:{transaction.beneficiaryName}
{TransactionDetails.text_option}:{transaction.option}
{TransactionDetails.text_date}:{dayjs(transaction.date).format('MM/DD/YYYY')}
{TransactionDetails.text_total}:{currencyFormatter(transaction.total)}
{TransactionDetails.text_transaction_type}:{transaction.type}
{TransactionDetails.text_type}:{transaction.source ? transaction.source : n_a}
{TransactionDetails.text_card_number}:{transaction.accessCardNumber ? transaction.accessCardNumber : n_a}
{TransactionDetails.text_payee_name}:{transaction.payeeName ? transaction.payeeName : n_a}
{TransactionDetails.text_payment_confirmation}:{transaction.ElectronicSchoolPaymentPaymentId}
\n
\n \n \n \n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default LanguageHOC(TransactionDetails);","/*\n*\n* TransactionHistory Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Button,\n} from '@mui/material';\nimport {\n CardAligned,\n CardBody,\n CardTitle,\n LoadingOverlay,\n DatePicker,\n getMSTfromUTC,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\nimport {\n getTransactionDetails,\n getAllTransactionsExport,\n getAllTransactions,\n} from 'components/Features/protected/Accounts/actions';\nimport { transactionsByDateFilter } from 'utils/helpers/data_filters';\n\nimport TransactionDetails from './TransactionDetails';\n\nimport transactionHubStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n transaction: state.accounts.transaction,\n transactionsAll: state.accounts.transactionsAll,\n loadedTransactions: state.accounts.loadedTransactions,\n hasScholarshipAccount: state.accounts.accountList.some(account => account.accountType === 'Scholarship'),\n});\n\nexport class TransactionHistory extends React.Component {\n static propTypes = {\n hasScholarshipAccount: PropTypes.bool.isRequired,\n getAllTransactions: PropTypes.func.isRequired,\n transactionsAll: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n accountId: PropTypes.number.isRequired,\n accountNumber: PropTypes.number.isRequired,\n date: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n basis: PropTypes.number.isRequired,\n amount: PropTypes.number.isRequired,\n taxYear: PropTypes.string,\n milestone: PropTypes.string,\n })\n ).isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.number.isRequired,\n date: PropTypes.string,\n type: PropTypes.string.isRequired,\n source: PropTypes.string.isRequired,\n payeeName: PropTypes.string,\n total: PropTypes.number.isRequired,\n basis: PropTypes.number.isRequired,\n bankName: PropTypes.string.isRequired,\n bankAccountNumber: PropTypes.string.isRequired,\n bankAccountType: PropTypes.string.isRequired,\n transactionDetails: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n fundName: PropTypes.string,\n units: PropTypes.string.isRequired,\n price: PropTypes.string.isRequired,\n amount: PropTypes.number.isRequired,\n })\n )\n }).isRequired,\n loadedTransactions: PropTypes.array.isRequired,\n getTransactionDetails: PropTypes.func.isRequired,\n getAllTransactionsExport: PropTypes.func.isRequired,\n text: PropTypes.shape({\n TransactionHistory: PropTypes.shape({\n btn_export: PropTypes.string,\n btn_open: PropTypes.string,\n err_date_past_today: PropTypes.string,\n err_from_after_to: PropTypes.string,\n err_to_before_from: PropTypes.string,\n head_title: PropTypes.string,\n lbl_from_date: PropTypes.string,\n lbl_to_date: PropTypes.string,\n text_acct_number: PropTypes.string,\n text_bene_name: PropTypes.string,\n text_option: PropTypes.string,\n text_amount: PropTypes.string,\n text_basis: PropTypes.string,\n text_date: PropTypes.string,\n text_no_transactions: PropTypes.string,\n text_tax_year: PropTypes.string,\n text_transaction_type: PropTypes.string,\n text_view_details: PropTypes.string,\n text_milestone: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n loading: false,\n transactionsAll: [],\n showTransaction: false,\n loadingTransaction: false,\n selectedTransaction: null,\n filterDates: {\n startDate: dayjs().subtract(6, 'month'),\n endDate: getMSTfromUTC(),\n },\n formErrors: {},\n isExporting: false,\n };\n\n toggleDetailsDrawer = () => {\n this.setState({ showTransaction: !this.state.showTransaction });\n }\n\n transactionDetailsShow = (accountId, transactionId) => {\n // first check if transaction was already loaded if not call api\n const foundTransaction = this.props.loadedTransactions.find(transaction => transaction.id === transactionId);\n if (foundTransaction) {\n this.setState({ selectedTransaction: foundTransaction });\n this.toggleDetailsDrawer();\n }\n else {\n this.setState({ loadingTransaction: true });\n this.props.getTransactionDetails(accountId, transactionId)\n .then(() => {\n this.setState({\n loadingTransaction: false,\n selectedTransaction: this.props.transaction\n });\n this.toggleDetailsDrawer();\n })\n .catch(() => null);\n }\n }\n\n onInputChange = (name, value) => {\n this.setState({\n filterDates: {\n ...this.state.filterDates,\n [name]: value,\n },\n }, () => this.filterTransactions(name));\n }\n\n filterTransactions = (fieldName) => {\n const { transactionsAll } = this.props;\n const { filterDates } = this.state;\n\n if (this.formValidate(fieldName)) {\n let filteredTransactions = transactionsAll; // default to props transactions, if dates are removed\n if (filterDates.startDate && filterDates.endDate) { // if both dates are provided, then get filtered transactions\n filteredTransactions = transactionsByDateFilter(transactionsAll, filterDates);\n }\n this.setState({ transactionsAll: filteredTransactions });\n }\n }\n\n formValidate = (fieldName) => {\n const { TransactionHistory } = this.props.text;\n const { startDate, endDate } = this.state.filterDates;\n const formErrors = {};\n\n // startDate validation\n formErrors.startDate = validator.calendarValidator(startDate);\n if (dayjs(startDate).isAfter(dayjs(), 'day')) {\n formErrors.startDate = TransactionHistory.err_date_past_today;\n }\n if (dayjs(startDate).isAfter(dayjs(endDate), 'day') && fieldName === 'startDate') {\n formErrors.startDate = TransactionHistory.err_from_after_to;\n }\n\n // endDate validation\n formErrors.endDate = validator.calendarValidator(endDate);\n if (dayjs(endDate).isBefore(dayjs(startDate), 'day') && fieldName === 'endDate') {\n formErrors.endDate = TransactionHistory.err_to_before_from;\n }\n\n // if both dates are blank, empty out errors\n if (!startDate && !endDate) {\n formErrors.startDate = '';\n formErrors.endDate = '';\n }\n\n this.setState({ formErrors });\n const hasErrors = Object.keys(formErrors).some(field => formErrors[field] !== '');\n\n return !hasErrors;\n }\n\n handleExportTransactions = () => {\n const { getAllTransactionsExport, transactionsAll } = this.props;\n const { startDate, endDate } = this.state.filterDates;\n\n let canRunExport = true; // default to true for when no dates have been populated\n if (startDate || endDate) { // if either date is populated, run validation \n canRunExport = this.formValidate('startDate'); // default fieldName to startDate for validator\n }\n\n if (canRunExport) {\n const filterDates = {\n startDate: startDate ? dayjs(startDate).format('MM-DD-YYYY') : transactionsAll[transactionsAll.length - 1].date, // if no dates, default startDate to last in array as that is the earliest date,\n endDate: endDate ? dayjs(endDate).format('MM-DD-YYYY') : transactionsAll[0].date, // if no dates, default endDate to first in array as that is the latest date,\n };\n this.setState({ isExporting: true });\n getAllTransactionsExport(filterDates)\n .then(({ payload }) => {\n const file = new Blob([payload.data], { type: 'text/csv;encoding:utf-8' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(file);\n link.setAttribute('download', 'My529TransactionHistory.csv'); // sets filename\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n this.setState({ isExporting: false });\n })\n .catch(() => this.setState({ isExporting: false, }));\n }\n }\n\n allTransactionsGet = () => {\n this.setState({ loading: true });\n return this.props.getAllTransactions()\n .then(() => {\n this.setState({\n loading: false,\n transactionsAll: this.props.transactionsAll\n });\n })\n .catch(() => {\n this.setState({ loading: false });\n });\n }\n\n renderDateFilter = () => {\n const { TransactionHistory } = this.props.text;\n const { formErrors, filterDates: { startDate, endDate, }, isExporting, transactionsAll, loading, } = this.state;\n const noTransactions = transactionsAll.length === 0;\n\n return (\n
\n
\n
\n this.onInputChange('startDate', e ? e.toDate() : e)}\n value={startDate || null}\n disabled={loading}\n />\n
\n
\n this.onInputChange('endDate', e ? e.toDate() : e)}\n value={endDate || null}\n disabled={loading}\n />\n
\n
\n
\n \n \n {TransactionHistory.btn_export}\n \n \n
\n
\n );\n }\n\n componentDidMount() {\n // initialize selectedTransaction even if empty \n this.setState({\n selectedTransaction: this.props.transaction,\n });\n this.allTransactionsGet()\n .then(() => {\n // make sure the data filtering happens after the data is available\n this.filterTransactions('startDate');\n });\n }\n\n render() {\n const {\n hasScholarshipAccount,\n text: { TransactionHistory }\n } = this.props;\n\n const {\n showTransaction,\n loadingTransaction,\n selectedTransaction,\n transactionsAll,\n loading\n } = this.state;\n const columns = [\n {\n key: 'accountNumber',\n title: TransactionHistory.text_acct_number,\n type: 'number',\n },\n {\n key: 'beneficiaryName',\n title: TransactionHistory.text_bene_name,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'option',\n title: TransactionHistory.text_option,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'type',\n title: TransactionHistory.text_transaction_type,\n type: 'string',\n hideOn: ['phone'],\n },\n {\n key: 'basis',\n title: TransactionHistory.text_basis,\n type: 'currency',\n hideOn: ['phone'],\n },\n {\n key: 'amount',\n title: TransactionHistory.text_amount,\n type: 'currency',\n },\n {\n key: 'date',\n title: TransactionHistory.text_date,\n type: 'dateString',\n hideOn: ['phone'],\n },\n {\n key: 'taxYear',\n title: TransactionHistory.text_tax_year,\n type: 'string',\n hideOn: ['phone'],\n },\n ];\n if (hasScholarshipAccount) { // add milestone column, if account type is scholarship\n columns.push({\n key: 'milestone',\n title: TransactionHistory.text_milestone,\n type: 'string',\n hideOn: ['phone', 'tablet'],\n });\n }\n\n return (\n\n \n {TransactionHistory.head_title}\n \n \n {this.renderDateFilter()}\n
\n this.transactionDetailsShow(row.accountId, row.id),\n iconTitle: TransactionHistory.btn_open,\n },\n ]}\n columns={columns}\n >\n \n \n \n this.transactionDetailsShow(row.accountId, row.id)}\n />\n \n \n \n\n
\n\n \n
\n
\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getTransactionDetails,\n getAllTransactionsExport,\n getAllTransactions,\n})(LanguageHOC(TransactionHistory)));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n List,\n ListItem,\n ListItemText,\n Divider,\n} from '@mui/material';\nimport { Modal } from '@frontend/common';\n\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\nexport class AccountListDialog extends React.Component {\n static propTypes = {\n accounts: PropTypes.arrayOf(\n PropTypes.shape({\n accountId: PropTypes.number.isRequired,\n accountNumber: PropTypes.number.isRequired,\n beneficiary: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n option: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n })\n ).isRequired,\n onClose: PropTypes.func.isRequired,\n transactionTitle: PropTypes.string.isRequired,\n transactionSubtitle: PropTypes.string.isRequired,\n open: PropTypes.bool.isRequired,\n }\n\n state = {\n isOnMobile: window.innerWidth <= parseInt(mobileWidth.replace('px', '')),\n }\n\n handleClose = () => {\n this.props.onClose(null); // when no account selected passing null to the parent\n };\n\n handleListItemClick = (selectedAccountId) => {\n this.props.onClose(selectedAccountId);\n };\n\n render() {\n const { isOnMobile } = this.state;\n const { open, transactionTitle, transactionSubtitle, accounts } = this.props;\n\n return (\n \n \n {transactionSubtitle}\n {accounts.map((account) => [\n this.handleListItemClick(account.accountId)} key={`listItem_${account.accountId}`}>\n \n
\n
{account.beneficiary.name}
\n
{account.accountNumber}
\n
{account.option.name}
\n
\n
\n
,\n \n ])}\n
\n );\n }\n\n}\n\nexport default LanguageHOC(AccountListDialog);","/*\n*\n* TransactionButtons Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n Icon,\n} from '@mui/material';\n\nimport {\n ContributionIcon,\n OptionChangeIcon,\n WithdrawalIcon,\n} from '@frontend/common';\n\nimport AccountListDialog from './AccountListDialog';\n\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport { protectAction, protectWithdrawal } from 'utils/helpers/multifactor_handler';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { openPreflightModal, setPreflightParams } from 'components/Features/protected/Accounts/Transactions/actions';\n\nimport * as colors from 'utils/config/_sassconfig.scss';\n\nimport transactionHubStyles from '../styles.module.scss';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n claims: state.session.claims,\n preferredInfo: state.multifactor.preferredInfo,\n accountList: state.accounts.accountList,\n});\n\nexport class TransactionButtons extends React.Component {\n static propTypes = {\n accountList: PropTypes.arrayOf(\n PropTypes.shape({\n accountId: PropTypes.number.isRequired,\n accountNumber: PropTypes.number.isRequired,\n accountTypeEnum: PropTypes.string.isRequired,\n beneficiary: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }).isRequired,\n option: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n permissions: PropTypes.shape({\n Contribute: PropTypes.bool,\n OptionChange: PropTypes.bool,\n Transfer: PropTypes.bool,\n Withdraw: PropTypes.bool,\n WithdrawalRequest: PropTypes.bool,\n })\n })\n ).isRequired,\n claims: PropTypes.shape({\n TwoFactorAuthentication: PropTypes.string,\n RSAVerification: PropTypes.string,\n }).isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n openPreflightModal: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n setPreflightParams: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Transactions: PropTypes.object.isRequired,\n }),\n };\n\n state = {\n accountListOpen: false,\n accountsWithPermission: [],\n hasPrecondition: false,\n preflightAccount: {},\n buttonTransactionType: '',\n preflightTransactionType: '',\n hideButtons: {\n contribute: this.props.accountList.find(data => data.permissions.Contribute === true) === undefined,\n optionChange: this.props.accountList.find(data => data.permissions.OptionChange === true) === undefined,\n transfer: this.props.accountList.find(data => data.permissions.Transfer === true) === undefined,\n withdraw: this.props.accountList.find(data => data.permissions.Withdraw === true || data.permissions.RequestWithdraw === true) === undefined,\n }\n };\n\n mapPermissionByTransaction = (transactionType, permissions) => {\n const { text: { Transactions } } = this.props;\n switch (transactionType) {\n case Transactions.TRANSACTION_TYPES.WITHDRAWAL.type:\n return permissions.Withdraw;\n case Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type: // CSA\n return permissions.WithdrawalRequest;\n case Transactions.TRANSACTION_TYPES.CONTRIBUTION.type:\n return permissions.Contribute;\n case Transactions.TRANSACTION_TYPES.TRANSFER.type:\n return permissions.Transfer;\n case Transactions.TRANSACTION_TYPES.OPTION_CHANGE.type:\n return permissions.OptionChange;\n default:\n return false;\n }\n }\n\n isCSAWithdrawalRequest = (account, transactionType, Transactions) => transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type && account.accountTypeEnum === 'D';\n\n handleOpen = (buttonTransactionType) => {\n const { accountList, text: { Transactions } } = this.props;\n // first filter out by their permissions\n const accountsWithPermission = accountList\n .filter((account) => {\n // when doing withdrawal switch to withdrawal request for CSA accounts\n const updatedTransactionType = this.isCSAWithdrawalRequest(account, buttonTransactionType, Transactions) ? Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type : buttonTransactionType;\n return this.mapPermissionByTransaction(updatedTransactionType, account.permissions);\n });\n this.setState({\n accountListOpen: true,\n buttonTransactionType,\n accountsWithPermission\n });\n }\n\n handleClose = (selectedAccountId) => {\n const { buttonTransactionType } = this.state;\n const { text: { Transactions } } = this.props;\n this.setState({ accountListOpen: false });\n // fire up the preflight here, if no account selected account id will be null\n if (selectedAccountId) {\n const selectedAccount = this.state.accountsWithPermission.find((account) => account.accountId === selectedAccountId);\n // when doing withdrawal switch to withdrawal request for CSA accounts\n const updatedTransactionType = this.isCSAWithdrawalRequest(selectedAccount, buttonTransactionType, Transactions) ? Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type : buttonTransactionType;\n this.preflightCheck(selectedAccount, updatedTransactionType);\n }\n };\n\n handleClickOpen = () => {\n this.setState({ accountListOpen: true });\n }\n\n preflightCheck = (account, transactionType) => {\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n\n this.setState({\n preflightTransactionType: transactionType,\n preflightAccount: account,\n });\n\n const isWithdrawal = transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || transactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(transactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n /* \n need to pass if is a withdrawal or not for new accounts = (oldest AO account < 45 days old)\n if is a new account, is a withdrawal, requires 2FA and RSA\n */\n this.setState(\n { hasPrecondition: true },\n () => this.props.get2FAPrecondition(isWithdrawal).catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n { hasPrecondition: true },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.props.setPreflightParams(account, transactionType);\n this.setState({\n hasPrecondition: false,\n preflightAccount: {},\n buttonTransactionType: '',\n preflightTransactionType: ''\n });\n this.props.openPreflightModal();\n }\n }\n\n componentDidUpdate() {\n const { hasPrecondition, preflightAccount, preflightTransactionType } = this.state;\n const { text: { Transactions }, preferredInfo, claims } = this.props;\n const isWithdrawal = preflightTransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL.type || preflightTransactionType === Transactions.TRANSACTION_TYPES.WITHDRAWAL_REQUEST.type;\n const multiStatus = isWithdrawal\n ? protectWithdrawal(preflightTransactionType, Transactions, preferredInfo, claims)\n : protectAction(claims);\n if (hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n this.preflightCheck(preflightAccount, preflightTransactionType);\n }\n }\n\n render() {\n const { accountListOpen, buttonTransactionType, accountsWithPermission, hideButtons } = this.state;\n const { text: { Transactions } } = this.props;\n return (\n <>\n
\n \n\n \n\n \n\n \n
\n\n \n \n );\n }\n}\n\n\nexport default connect(select, {\n get2FAPrecondition,\n getRSAPrecondition,\n openPreflightModal,\n setPreflightParams,\n})(LanguageHOC(TransactionButtons));\n","/*\n*\n* TransactionsHub Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport UpcomingSchedules from './UpcomingSchedules';\nimport TransactionHistory from './TransactionHistory';\nimport TransactionButtons from './TransactionButtons';\n\nimport styles from './styles.module.scss';\n\nconst select = (/*state*/) => ({\n\n});\n\nexport class TransactionsHub extends React.Component {\n static propTypes = {\n text: PropTypes.shape({\n Transactions: PropTypes.object.isRequired,\n }),\n };\n\n render() {\n return (\n
\n \n \n \n
\n );\n }\n}\n\n\nexport default connect(select, {})(LanguageHOC(TransactionsHub));\n","/*\n*\n* MyInfo Actions\n*\n*/\nimport { DELETErequest, GETrequest, POSTrequest, PUTrequest } from 'utils/helpers/api_handler';\nimport {\n AGENT_GET,\n CHANGE_ADDRESS,\n GET_DELIVERY_METHODS,\n CHANGE_DELIVERY_METHODS,\n CHANGE_EMAIL,\n CHANGE_PHONE_NUMBERS,\n DELETE_ADDRESS,\n PASSWORD_CHANGE,\n\n OFFICIAL_NOTIFICATION,\n TAXFORMS_NOTIFICATION,\n NEWSLETTER_NOTIFICATION,\n PROMO_NOTIFICATION,\n BDAY_NOTIFICATION,\n UTAH_RESIDENT_CHANGE,\n} from './constants';\n\nexport function agentGet() {\n const payload = GETrequest('/agents');\n\n return {\n type: AGENT_GET,\n payload,\n };\n}\n\nexport function changeAddress(address) {\n const payload = PUTrequest('/agents/Address', address);\n\n return {\n type: CHANGE_ADDRESS,\n payload\n };\n}\n\nexport function changeEmail(email) {\n const payload = PUTrequest('/agents/email', {\n email\n });\n\n return {\n type: CHANGE_EMAIL,\n payload,\n };\n}\n\nexport function changePhoneNumbers(phoneNumbers) {\n const payload = PUTrequest('/agents/phones', phoneNumbers);\n\n return {\n type: CHANGE_PHONE_NUMBERS,\n payload\n };\n}\n\nexport function deleteAddress(addressId, addressType) {\n const payload = DELETErequest(`/agents/Address/${addressId}`);\n\n return {\n type: DELETE_ADDRESS,\n payload,\n meta: { addressType }\n };\n}\n\nexport function passwordChange(oldpassword, newpassword1, newpassword2) {\n const payload = POSTrequest('/authentication/changepassword', {\n oldpassword,\n newpassword1,\n newpassword2\n });\n\n return {\n type: PASSWORD_CHANGE,\n payload,\n };\n}\n\nexport function getStatementDeliveryMethods() {\n const payload = GETrequest('/agents/StatementDelivery');\n\n return {\n type: GET_DELIVERY_METHODS,\n payload,\n };\n}\n\nexport function changeStatementDeliveryMethods(deliveryMethods) {\n const payload = PUTrequest('/agents/StatementDelivery', deliveryMethods);\n\n return {\n type: CHANGE_DELIVERY_METHODS,\n payload,\n };\n}\n\nexport function officialNotificationUpdate(Value) {\n const payload = PUTrequest('/agents/OfficialCommunications', { Value });\n return {\n type: OFFICIAL_NOTIFICATION,\n payload,\n };\n}\n\nexport function taxFormsNotificationUpdate(Value) {\n const payload = PUTrequest('/agents/TaxForms', { Value });\n\n return {\n type: TAXFORMS_NOTIFICATION,\n payload,\n };\n}\n\nexport function newsletterNotificationUpdate(Value) {\n const payload = PUTrequest('/agents/Newsletter', { Value });\n\n return {\n type: NEWSLETTER_NOTIFICATION,\n payload,\n };\n}\n\nexport function promoNotificationUpdate(Value) {\n const payload = PUTrequest('/agents/Promotional', { Value });\n\n return {\n type: PROMO_NOTIFICATION,\n payload,\n };\n}\n\nexport function bdayNotificationUpdate(Value) {\n const payload = PUTrequest('/agents/BirthdayNotifications', { Value });\n\n return {\n type: BDAY_NOTIFICATION,\n payload,\n };\n}\n\nexport function utahResidentSave(utahResident) {\n const payload = PUTrequest('/agents/UtahResident', { IsOn: utahResident });\n return {\n type: UTAH_RESIDENT_CHANGE,\n payload,\n };\n}\n","/* eslint-disable newline-per-chained-call */\n/* eslint-disable prefer-arrow-callback */\n/* eslint-disable id-length */\n/*\n*\n* BalanceGraph Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport * as d3 from 'd3';\nimport { cloneDeep, isEqual, } from 'lodash';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n currencyFormatter,\n sizify,\n} from '@frontend/common';\nimport styles from './styles.module.scss';\n\nconst margin = { top: 20, right: 0, bottom: 20, left: 40 };\n\n\nexport class BalanceGraph extends React.Component {\n\n static propTypes = {\n graphData: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n accountBalanceHistory: PropTypes.arrayOf(\n PropTypes.shape({\n balance: PropTypes.number,\n date: PropTypes.object,\n }),\n )\n })\n ).isRequired,\n isGraphFullscreen: PropTypes.bool.isRequired,\n activeDateFilter: PropTypes.string.isRequired,\n size: PropTypes.shape({\n componentHeight: PropTypes.number,\n componentWidth: PropTypes.number,\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Overview: PropTypes.shape({\n lbl_filter_1month: PropTypes.string,\n lbl_filter_3month: PropTypes.string,\n lbl_filter_6month: PropTypes.string,\n lbl_filter_YTD: PropTypes.string,\n lbl_filter_1year: PropTypes.string,\n lbl_filter_all: PropTypes.string,\n lbl_filter_custom: PropTypes.string,\n lbl_total: PropTypes.string,\n text_NA: PropTypes.string,\n })\n }),\n };\n\n state = {\n componentHeight: this.props.size.componentHeight,\n componentWidth: this.props.size.componentWidth,\n }\n\n drawChart = (useTransition = false) => {\n const { graphData, activeDateFilter, size: { windowWidth }, text: { Overview }, } = this.props;\n const {\n componentHeight,\n componentWidth,\n } = this.state;\n\n const width = componentWidth - margin.left - margin.right;\n const height = componentHeight - margin.top - margin.bottom;\n\n const accountBeneNames = graphData.map(data => data.accountId);\n const selectedAccountsCount = accountBeneNames.length;\n\n // find max value from all balance histories, used for figuring out the yAxis domain and formatting\n const maxBalances = cloneDeep(graphData).map(data => {\n const sortedBalances = data.accountBalanceHistory.sort((a, b) => b.balance - a.balance);\n return sortedBalances[0].balance;\n });\n const maxAmount = Math.max(...maxBalances);\n // find the account with the longest balance history in order to make the proper domain for the x axis\n const longestDateRangeIndex = graphData.reduce((p, c, i, a) => a[p].accountBalanceHistory.length > c.accountBalanceHistory.length ? p : i, 0);\n\n const xScale = d3.scaleTime()\n .range([0, width])\n .clamp(true);\n\n const yScale = d3.scaleLinear()\n .range([height, 0]);\n\n // time formats\n const formatDay = d3.timeFormat('%d');\n const formatWeek = d3.timeFormat('%b %d');\n const formatMonth = d3.timeFormat('%b');\n const formatYearBeg = d3.timeFormat('%b %Y');\n const formatYear = d3.timeFormat('%Y');\n\n const is1YearFilter = activeDateFilter === Overview.lbl_filter_1year || activeDateFilter === Overview.lbl_filter_YTD;\n // time formatter for x axis \n const multiFormat = (date) => {\n return (\n d3.timeMonth(date) < date ? (d3.timeWeek(date) < date ? formatDay : formatWeek)\n : isEqual(d3.timeYear(date), date) && is1YearFilter ? formatYearBeg\n : d3.timeYear(date) < date ? formatMonth\n : formatYear)(date);\n };\n\n let xTickCount = componentWidth <= 600 ? 3 : componentWidth <= 1000 ? 9 : 12; // determine x axis tick count based on width\n xTickCount = graphData[longestDateRangeIndex].accountBalanceHistory.length < xTickCount ? graphData[longestDateRangeIndex].accountBalanceHistory.length : xTickCount;\n\n // create color range by first using set default colors then d3's rainbow scale\n const colorRange = [];\n const defaultColors = ['#ED12FF', '#12FFB6', '#12ADFF', '#5B12FF', '#FFA412', '#FF1224', '#FFFF12', '#8271A7']; // default starting colors\n if (selectedAccountsCount > defaultColors.length) { // if there are more selected accounts then the default colors, use d3's rainbow scale\n accountBeneNames.forEach((key, index) => colorRange.push(d3.interpolateRainbow(index / accountBeneNames.length)));\n }\n else {\n accountBeneNames.forEach((key, index) => colorRange.push(defaultColors[index]));\n }\n\n const color = d3.scaleOrdinal()\n .range(colorRange)\n .domain(accountBeneNames); // Set the color domain equal to the account list keys\n const xAxis = d3.axisBottom().scale(xScale)\n .ticks(xTickCount)\n .tickFormat(date => multiFormat(date)); // Create an x axis component with d3.axisBottom\n const yAxis = d3.axisLeft().scale(yScale) // Create an y axis component with d3.axisLeft, formats to a thousands place\n .ticks(10)\n .tickFormat(value => maxAmount > 5000 ? `$${value / 1000}k` : `$${value}`); // if maxAmount is more than $5,000, format in 1,000s.\n\n\n const line = d3.line()\n .curve(d3.curveLinear) // apply smoothing to the line\n .x(data => xScale(data.date)) // set the x values for the line generator\n .y(data => yScale(data.balance)); // set the y values for the line generator \n\n // remove whatever was previously in the .graph container so it can be redrawn on resizing\n d3.select('.graph')\n .selectAll('*')\n .remove();\n\n // set the width/height on the SVG\n const svg = d3.select('.graph')\n .attr('width', width + margin.left + margin.right)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', `translate( ${margin.left} ${margin.top} )`)\n .attr('class', 'line-graph');\n\n\n // Set the domain (min/max) of the axes\n const xDomain = d3.extent(graphData[longestDateRangeIndex].accountBalanceHistory, d => d.date);\n xScale.domain(xDomain);\n\n yScale.domain([0, maxAmount > 0 ? maxAmount * 1.1 : 1000]); // sets yAxis domain (how high the axis will go). giving a 10% buffer. If maxAmount is 0, default to 1000.\n\n // call the x axis in a group tag\n svg.append('g')\n .attr('class', styles.xAxis)\n .attr('transform', `translate(0, ${height} )`)\n .attr('stroke', 'none')\n .transition()\n .duration(750)\n .call(xAxis)\n .call(g => {\n g.selectAll('text')\n .style('text-anchor', 'end')\n .attr('y', 10);\n });\n\n\n // call the y axis in a group tag\n svg.append('g')\n .attr('class', styles.yAxis)\n .style('text-anchor', 'end')\n .transition()\n .duration(750)\n .call(yAxis);\n\n // APPEND MULTIPLE LINES //\n const lines = svg.append('g')\n .attr('class', 'lines');\n\n const glines = lines.selectAll('.line-group')\n .data(graphData)\n .enter()\n .append('g')\n .attr('class', 'line-group');\n\n // determine if the line should be smaller, if there are more than 6 selected accounts over the time frame is over 1 year\n const overOneYearTimeframe = dayjs(xDomain[1]).subtract(1, 'year')\n .isAfter(xDomain[0]); // checks that latest date, minus 1 year, is still after the earliest date\n const useSmallerLine = selectedAccountsCount > 6 || overOneYearTimeframe;\n\n glines\n .append('path')\n .attr('class', 'line')\n .attr('id', (d, i) => `line_${i}`)\n .attr('d', d => line(d.accountBalanceHistory)) // calls the line generator \n .style('stroke', (d, i) => color(i))\n .style('fill', 'none')\n .style('opacity', 1)\n .style('stroke-width', useSmallerLine ? '4px' : '6px'); // set the line size\n\n\n // LINE TRANSITIONS //\n if (useTransition) {\n glines.each((d, i) => {\n const selectedLine = d3.select(`#line_${i}`);\n const totalLength = selectedLine.node().getTotalLength();\n\n selectedLine\n .attr('stroke-dasharray', `${totalLength} ${totalLength}`)\n .attr('stroke-dashoffset', totalLength)\n .transition()\n .duration(1500)\n .delay(200 * i)\n .ease(d3.easeQuadInOut)\n .attr('stroke-dashoffset', 0);\n });\n }\n // CREATE HOVER TOOLTIP WITH VERTICAL LINE //\n\n // remove everything under the tooltip so it does not create additional elements\n d3.select('#tooltip')\n .remove();\n\n // create tooltip container\n const tooltip = d3.select('#chart')\n .append('div')\n .attr('id', 'tooltip')\n .attr('class', styles.tooltip)\n .style('position', 'absolute')\n .style('display', 'none');\n\n const mouseG = svg.append('g')\n .attr('class', 'mouse-over-effects');\n\n mouseG.append('path') // create vertical line to follow mouse\n .attr('class', 'mouse-line')\n .style('stroke', '#A9A9A9')\n .style('stroke-width', '2px')\n .style('stroke-dasharray', 6)\n .style('opacity', '0');\n\n const mousePerLine = mouseG.selectAll('.mouse-per-line')\n .data(graphData)\n .enter()\n .append('g')\n .attr('class', 'mouse-per-line');\n\n mousePerLine.append('circle') // creates the circle that goes over each line based on mouse position\n .attr('r', 8)\n .style('stroke', (d, i) => color(i))\n .style('fill', '#FFF')\n .style('stroke-width', '4px')\n .style('opacity', '0');\n\n mouseG.append('svg:rect') // append a rect to catch mouse movements on canvas\n .attr('width', width)\n .attr('height', height)\n .attr('fill', 'none')\n .attr('pointer-events', 'all')\n .on('mouseout', function() { // on mouse out hide line, circles and text\n d3.select('.mouse-line')\n .style('opacity', '0');\n d3.selectAll('.mouse-per-line circle')\n .style('opacity', '0');\n d3.selectAll('.mouse-per-line text')\n .style('opacity', '0');\n d3.selectAll('#tooltip')\n .style('display', 'none');\n })\n .on('mouseover touchstart', function() { // on mouse in show line, circles and text\n d3.select('.mouse-line')\n .style('opacity', '1');\n d3.selectAll('.mouse-per-line circle')\n .style('opacity', '1');\n d3.selectAll('#tooltip')\n .style('display', 'block');\n })\n .on('mousemove', function() { // update tooltip content, line, circles and text when mouse moves\n const [mouseX, mouseY] = d3.mouse(this); // gets the x, y position of where the mouse is at in the line graph area\n const date = xScale.invert(mouseX + 0.14); // use 'invert' to get date corresponding to distance from mouse position relative to svg; have to add 0.14 to x position due to the position being just slightly off\n const roundedDate = dayjs(date).format('HH') > 1 ? dayjs(date).add(1, 'day').startOf('day') : dayjs(date).startOf('day'); // rounds date for tooltip display. needed due to day being off by 1 day\n const bisectDate = d3.bisector(d => d.date).left; // create bisector function\n const moveTooltipToCenter = windowWidth < 450 && Math.abs((windowWidth / 2) - d3.event.pageX) < 50;\n const moveTooltipToLeft = windowWidth - d3.event.pageX < 240; // checks if there is still space for the tooltip to be viewed on the screen\n let longestHistoryLength = 0;\n\n // finds the cordinates for each line and mouse X position and places the line and circles there\n d3.selectAll('.mouse-per-line')\n .attr('transform', d => {\n const dateIndex = bisectDate(d.accountBalanceHistory, roundedDate);\n if (d.accountBalanceHistory.length > longestHistoryLength) { // only set the mouse line position based on the longest data history\n longestHistoryLength = d.accountBalanceHistory.length;\n d3.select('.mouse-line')\n .attr('d', () => {\n let data = `M${xScale(d.accountBalanceHistory[dateIndex].date)},${height}`;\n data += ` ${xScale(d.accountBalanceHistory[dateIndex].date)},0`;\n return data;\n });\n }\n return `translate( ${xScale(d.accountBalanceHistory[dateIndex].date)},${yScale(d.accountBalanceHistory[dateIndex].balance)} )`;\n });\n\n // finds data for each line and total balance, based on the X position of the mouse\n let totalBalance = 0;\n\n const selectedBalances = graphData.map(data => {\n const beneFirstName = data.beneficiaryName.split(' ')[0].toUpperCase();\n let balance = Overview.text_NA; // default balance to N/A.\n if (!dayjs(roundedDate).isBefore(data.accountBalanceHistory[0].date, 'day')) { // if date selected is before earliest account history date, leave balance as N/A.\n const accountBalanceHistory = cloneDeep(data.accountBalanceHistory);\n const balanceObject = accountBalanceHistory.reverse().find(balance => dayjs(roundedDate).isSameOrAfter(balance.date)); // finds balance object for the selected date or previous buisness date, if selected date doesn't exist\n balance = balanceObject ? currencyFormatter(balanceObject.balance) : balance; // if account history ends before other selected accounts, set balance as N/A.\n\n // adds up total balance at bottom of tooltip\n if (balance !== Overview.text_NA && balanceObject) {\n totalBalance += balanceObject.balance;\n }\n }\n\n return {\n displayName: `${beneFirstName}
${data.accountNumber}`,\n balance,\n };\n });\n\n // adds formatted total balance to bottom of tooltip\n selectedBalances.push({ displayName: Overview.lbl_total, balance: currencyFormatter(totalBalance) });\n\n const tooltipLeftPosition = moveTooltipToCenter ? mouseX - 50 : (moveTooltipToLeft ? mouseX - 200 : mouseX + 70);\n // on the tooltip, sets date on top, position of tooltip container\n // eslint-disable-next-line newline-per-chained-call\n const tooltipLine = tooltip.html(dayjs(roundedDate).format('LL')) // add 1 day is necessary, fixes the date coming back off by 1 day from xScale.invert call.\n .style('display', 'block')\n .style('left', `${tooltipLeftPosition}px`)\n .style('top', `${moveTooltipToCenter ? mouseY - 55 : mouseY - (10 + (10 * graphData.length))}px`) // updates the tooltip to go above mouse/finger touch, mainly to prevent issues if mouse is being used on a small screen\n .style('font-size', 8)\n .selectAll()\n .data(selectedBalances)\n .enter() // for each account, list out name, acct #, and balance for that date\n .append('div') // creates the tooltipLine container where each line data will be listed\n .attr('class', styles.tooltipLine);\n\n // adds legend circle\n tooltipLine.append('div').attr('class', styles.tooltipLegend)\n .append('svg')\n .style('width', '20px')\n .style('height', '20px')\n .append('circle')\n .attr('transform', 'translate( 10 10 )')\n .attr('r', 6)\n .style('fill', (d, i) => color(i))\n .style('display', (d, i) => i === selectedBalances.length - 1 ? 'none' : 'inline');\n\n // adds name and account number to tooltipLine\n tooltipLine.append('div').attr('class', styles.tooltipName)\n .html(d => d.displayName);\n // adds balance to tooltipLine\n tooltipLine.append('div').attr('class', styles.tooltipBalance)\n .html(d => d.balance);\n });\n }\n\n componentDidMount() {\n const useTransition = true;\n this.drawChart(useTransition);\n }\n\n componentDidUpdate({ size, graphData }) {\n const { size: { componentWidth, componentHeight }, } = this.props;\n if (size.componentWidth !== componentWidth || size.componentHeight !== componentHeight || !isEqual(graphData, this.props.graphData)) {\n this.setState({\n componentHeight,\n componentWidth,\n }, () => this.drawChart()); // redraws chart on resize or data change\n }\n }\n\n render() {\n const { isGraphFullscreen } = this.props;\n\n return (\n
\n \n
\n );\n }\n}\n\n\nexport default connect(null, {})(sizify(LanguageHOC(BalanceGraph)));\n","/*\n*\n* SkeletonLoader Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Skeleton } from '@mui/material';\nimport { Typography } from '@mui/material';\n\nexport class SkeletonLoader extends React.Component {\n\n static propTypes = {\n isLoading: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n variant: PropTypes.string,\n textVariant: PropTypes.string,\n skeletonProps: PropTypes.object,\n typographyProps: PropTypes.object,\n };\n\n render() {\n const { children, isLoading = true, height, width, textVariant, variant, skeletonProps, typographyProps, } = this.props;\n\n const skeleton = (\n \n );\n\n const skeletonLoader = textVariant\n ? (\n \n {skeleton}\n \n )\n : skeleton;\n\n\n return (\n isLoading ? skeletonLoader : children || null\n );\n }\n}\n\nexport default SkeletonLoader;","/*\n*\n* BalanceByDate Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { cloneDeep, debounce, includes, uniq, } from 'lodash';\nimport {\n Divider,\n MenuItem,\n FormControl,\n Select,\n Input,\n ListSubheader,\n} from '@mui/material';\nimport {\n currencyFormatter,\n DatePicker,\n IconBtnTooltip,\n} from '@frontend/common';\nimport { accountsByFilter, } from 'utils/helpers/data_filters';\nimport Search from 'utils/components/Search';\nimport SkeletonLoader from 'utils/components/SkeletonLoader';\nimport * as material_ui_theme from 'utils/config/material_ui_theme';\nimport styles from './styles.module.scss';\n\nconst agentColor = material_ui_theme.default.palette.primary.main;\nconst interestedPartyColor = material_ui_theme.default.palette.secondary.main;\n\nexport class BalanceByDate extends React.Component {\n\n static propTypes = {\n dashboardAccountList: PropTypes.arrayOf(\n PropTypes.shape({\n accountBalanceHistory: PropTypes.arrayOf(\n PropTypes.shape({\n balance: PropTypes.number,\n date: PropTypes.object,\n })\n ),\n accountId: PropTypes.number,\n accountNumber: PropTypes.number,\n balanceAsOfGivenDate: PropTypes.string,\n beneficiaryName: PropTypes.string,\n optionName: PropTypes.string,\n isInterestedParty: PropTypes.bool,\n })\n ).isRequired,\n isBalanceHistoryLoading: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n }),\n AccountsSummary: PropTypes.shape({\n head_interested_party: PropTypes.string,\n }),\n BalanceByDate: PropTypes.shape({\n btn_filter: PropTypes.string,\n lbl_date: PropTypes.string,\n text_NA: PropTypes.string,\n title_account_numbers: PropTypes.string,\n title_bene_names: PropTypes.string,\n title_investment_options: PropTypes.string,\n }),\n }).isRequired,\n }\n\n state = {\n balanceDate: null,\n dashboardAccountList: [],\n filteredAccountList: [],\n filterList: [],\n selectedFilters: [],\n searchedAccountList: [],\n searchIsActive: false,\n showFilterList: false,\n }\n\n setupFilterList(dashboardAccountList) {\n // get unique bene names and investment options\n const beneficiaryNames = uniq(this.props.dashboardAccountList.map(account => account.beneficiaryName));\n const optionNames = uniq(this.props.dashboardAccountList.map(account => account.optionName));\n\n return [\n { listHeader: 'Accounts', key: 'accountsHeader' },\n ...dashboardAccountList.map(account => ({ // list of Account Numbers\n label: account.accountNumber,\n key: account.accountNumber,\n isActive: selectedFilters => includes(selectedFilters, account.accountNumber),\n })),\n { listHeader: 'Beneficiaries', key: 'benesHeader' },\n ...beneficiaryNames.map(name => ({ // list of Beneficiaries\n label: name,\n key: name,\n isActive: selectedFilters => includes(selectedFilters, name),\n })),\n { listHeader: 'Options', key: 'optionsHeader' },\n ...optionNames.map(name => ({ // list of options\n label: name,\n key: name,\n isActive: selectedFilters => includes(selectedFilters, name),\n })),\n ];\n }\n\n handleShowFilterList = () => {\n this.setState({ showFilterList: !this.state.showFilterList });\n }\n\n handleFilterSelect = e => {\n const { dashboardAccountList, searchedAccountList, searchIsActive } = this.state;\n const selectedFilters = e.target.value;\n const accountListToUse = searchIsActive ? searchedAccountList : dashboardAccountList; // if searching is active, use searched results instead of full dashboardAccountList\n this.setState({ selectedFilters, filteredAccountList: accountsByFilter(accountListToUse, selectedFilters) });\n }\n\n onDateChange = (balanceDate) => {\n this.setState({\n balanceDate,\n }, () => dayjs(balanceDate).isValid() && this.findBalanceForGivenDate());\n }\n\n findBalanceForGivenDate = () => {\n const { balanceDate, selectedFilters, } = this.state;\n const dashboardAccountList = cloneDeep(this.state.dashboardAccountList);\n\n dashboardAccountList.forEach(account => {\n const balanceHistory = cloneDeep(account.accountBalanceHistory);\n const balance = balanceHistory.reverse().find(balance => dayjs(balanceDate).isSameOrAfter(balance.date, 'day'));\n account.balanceAsOfGivenDate = balance ? currencyFormatter(balance.balance) : this.props.text.BalanceByDate.text_NA;\n });\n\n this.setState({ dashboardAccountList, filteredAccountList: accountsByFilter(dashboardAccountList, selectedFilters) });\n }\n\n componentDidMount() {\n const balanceDate = this.props.dashboardAccountList.length > 0\n ? this.props.dashboardAccountList[0].accountBalanceHistory[this.props.dashboardAccountList[0].accountBalanceHistory.length - 1].date\n : null; // get the latest date from the accountBalanceHistory\n\n this.setState({\n dashboardAccountList: this.props.dashboardAccountList,\n balanceDate,\n filteredAccountList: this.props.dashboardAccountList,\n filterList: this.setupFilterList(this.props.dashboardAccountList),\n });\n }\n\n render() {\n const { isBalanceHistoryLoading, text: { AccountDetails, AccountsSummary, BalanceByDate } } = this.props;\n const { filteredAccountList, balanceDate, filterList, showFilterList, selectedFilters, } = this.state;\n\n return (\n \n
\n
\n this.handleShowFilterList()}\n icon='filter_list'\n title={BalanceByDate.btn_filter}\n />\n \n this.handleShowFilterList()}\n value={selectedFilters}\n onChange={this.handleFilterSelect}\n multiple\n input={}\n >\n {filterList.map(filter => filter.listHeader\n ? {filter.listHeader}\n :\n \n {filter.label}\n \n )}\n \n \n
\n
\n {\n this.setState({\n searchedAccountList,\n filteredAccountList: accountsByFilter(searchedAccountList, selectedFilters),\n searchIsActive,\n });\n }}\n hasSearchMenu={true}\n />\n
\n
\n
\n {filteredAccountList.map((account, index) => {\n const { balanceAsOfGivenDate, accountId, beneficiaryName, optionName, accountNumber, isInterestedParty } = account;\n const isLastAccount = index === filteredAccountList.length - 1;\n const displayedOptionName = isInterestedParty ? `${optionName} - ${AccountsSummary.head_interested_party}` : optionName;\n const balanceIsNA = balanceAsOfGivenDate === this.props.text.BalanceByDate.text_NA;\n\n return (\n \n \n
\n
{beneficiaryName.toUpperCase()}
\n
{displayedOptionName}
\n
\n {accountNumber}\n
\n
\n \n
{balanceAsOfGivenDate}
\n
\n
\n {!isLastAccount && }\n
\n );\n })}\n \n
\n \n
\n \n );\n }\n}\n\n\nexport default (LanguageHOC(BalanceByDate));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Modal,\n} from '@frontend/common';\n\nimport { thirdParyLinkClick, } from 'utils/ga/events';\n\nimport styles from './styles.module.scss';\n\nconst onThirdPartyURLClickHandler = (onClose, eventLabel, thirdPartyURL) => {\n thirdParyLinkClick(eventLabel);\n onClose();\n window.open(thirdPartyURL, '_blank', 'noopener,noreferrer');\n};\n\nexport function ThirdPartyWarningModal({\n open,\n onClose,\n thirdPartyURL,\n eventLabel,\n imageSrc,\n warningLanguage,\n footer,\n text: { Sidenav },\n isLoading,\n maxWidth\n}) {\n return (\n
\n onThirdPartyURLClickHandler(onClose, eventLabel, thirdPartyURL),\n label: Sidenav.resources.btn_proceed,\n buttonType: 'contained'\n },\n ]}\n onCloseModal={onClose}\n show={open}\n title={Sidenav.resources.title_third_party_warning}\n maxWidth={maxWidth ? maxWidth : 'md'}\n includeLeftCancelBtn\n isLoading={isLoading}\n >\n {warningLanguage}\n {imageSrc &&
Screenshot
}\n {footer}\n \n
\n );\n}\n\nThirdPartyWarningModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n eventLabel: PropTypes.string.isRequired,\n thirdPartyURL: PropTypes.string.isRequired,\n imageSrc: PropTypes.string,\n warningLanguage: PropTypes.string.isRequired,\n footer: PropTypes.string,\n text: PropTypes.shape({\n Sidenav: PropTypes.shape({\n btn_cancel: PropTypes.string,\n resources: PropTypes.shape({\n btn_proceed: PropTypes.string,\n title_third_party_warning: PropTypes.string,\n txt_third_party_warning_access_cards: PropTypes.string,\n }),\n text_timezone: PropTypes.string,\n }),\n }).isRequired,\n isLoading: PropTypes.bool,\n maxWidth: PropTypes.string,\n};\n\nexport default LanguageHOC(ThirdPartyWarningModal);\n","/*\n*\n* Overview Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { cloneDeep, debounce, } from 'lodash';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport {\n Button,\n Chip,\n Icon,\n} from '@mui/material';\n\nimport {\n currencyFormatter,\n DatePicker,\n Dropdown,\n IconBtnTooltip,\n Modal,\n} from '@frontend/common';\n\nimport { getBalanceHistory, } from 'components/Features/protected/Accounts/actions';\nimport { TWO_FACTOR_STATUS } from 'components/AppRoot/Navigation/constants';\n\nimport BalanceGraph from './BalanceGraph';\nimport BalanceByDate from './BalanceByDate';\nimport ThirdPartyWarningModal from 'components/AppRoot/Navigation/Sidenav/ThirtPartyWarningModal';\nimport butterfly from './image/butterfly.svg';\n\nimport styles from './styles.module.scss';\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\nimport SkeletonLoader from 'utils/components/SkeletonLoader';\n\nconst selectAll = 'selectAll';\nconst warningTypes = {\n noActiveAccounts: 'noActiveAccounts',\n dataUnavailable: 'dataUnavailable',\n newAccount: 'newAccount',\n};\n\nexport class Overview extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.array.isRequired,\n balanceHistory: PropTypes.array.isRequired,\n claims: PropTypes.object.isRequired,\n getBalanceHistory: PropTypes.func.isRequired,\n homeIsLoading: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n AccountsSummary: PropTypes.shape({\n head_interested_party: PropTypes.string,\n }),\n Overview: PropTypes.shape({\n err_date_past_today: PropTypes.string,\n err_end_before_start: PropTypes.string,\n err_start_after_end: PropTypes.string,\n lbl_bene_account: PropTypes.func,\n lbl_end_date: PropTypes.string,\n lbl_filter_1month: PropTypes.string,\n lbl_filter_3month: PropTypes.string,\n lbl_filter_6month: PropTypes.string,\n lbl_filter_YTD: PropTypes.string,\n lbl_filter_1year: PropTypes.string,\n lbl_filter_all: PropTypes.string,\n lbl_filter_custom: PropTypes.string,\n lbl_start_date: PropTypes.string,\n lbl_savings_calculator: PropTypes.string,\n text_all_selected: PropTypes.string,\n text_NA: PropTypes.string,\n text_no_open_accounts: PropTypes.string,\n text_oops: PropTypes.string,\n text_see_more: PropTypes.string,\n text_select_all: PropTypes.string,\n text_something_wrong: PropTypes.string,\n title_close_fullscreen: PropTypes.string,\n title_open_fullscreen: PropTypes.string,\n }),\n Sidenav: PropTypes.shape({\n resources: PropTypes.shape({\n txt_third_party_warning_for_info: PropTypes.string,\n }),\n }),\n }),\n }\n\n state = {\n dateFilters: [\n { label: this.props.text.Overview.lbl_filter_1month, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_3month, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_6month, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_YTD, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_1year, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_all, filterDate: '' },\n { label: this.props.text.Overview.lbl_filter_custom, filterDate: '' },\n ],\n activeGraphDateFilter: { label: this.props.text.Overview.lbl_filter_1year, filterDate: dayjs().subtract(1, 'year') },\n dashboardAccountList: [], // main balance history data\n dateFilteredDashboardAccountList: [], // all accounts balance history with filtered dates\n graphData: [{ name: '', accountBalanceHistory: [{ balance: 0, date: dayjs() }] }], // fully filtered data for graph\n isBalanceHistoryLoading: true,\n selectedAccounts: [],\n showCustomDatePickers: false,\n customFilterDates: { startDate: '', endDate: '' },\n formErrors: {},\n minMaxDates: { minDate: '', maxDate: '' },\n showBeneDropdown: false,\n isGraphFullscreen: false,\n hasPrecondition: false,\n warningType: '',\n thirdPartyWarningOn: false,\n }\n\n customDateHandle = e => {\n const { minDate, maxDate } = this.state.minMaxDates;\n const fieldName = e.target.name;\n let date = e.target.value;\n\n if (fieldName === 'startDate' && dayjs(date).isBefore(minDate, 'day')) {\n date = minDate;\n }\n if (fieldName === 'endDate' && dayjs(date).isAfter(maxDate, 'day')) {\n date = maxDate;\n }\n\n this.setState({\n customFilterDates: {\n ...this.state.customFilterDates,\n [fieldName]: date\n },\n formErrors: {\n ...this.state.formErrors,\n [fieldName]: '',\n }\n }, () => this.filterByCustomDates(fieldName));\n }\n\n accountSelect = (selections) => {\n const { dateFilteredDashboardAccountList, selectedAccounts } = this.state;\n let newSelections = [];\n let newGraphData = [];\n\n if (selections.length !== 0 || selectedAccounts.includes(selectAll)) { // only run, if selections exist or if selectAll was previously selected\n if (selections.includes(selectAll) && !selectedAccounts.includes(selectAll)) { // if select all is newly selected and currently not in selection, shows all accounts\n newSelections = [selectAll];\n newGraphData = dateFilteredDashboardAccountList; // sets the full list as graphData\n this.getMinMaxDates(newSelections);\n this.setState({ showBeneDropdown: false });\n }\n else if (selectedAccounts.includes(selectAll) && selections.length > 1) { // if select all is already selected and an account is selected, turns off select all and goes to single account\n const selectAllIndex = selections.indexOf(selectAll);\n selections.splice(selectAllIndex, 1);\n newSelections = selections;\n newGraphData = this.filterGraphData(newSelections);\n }\n else if (!selections.includes(selectAll) && selectedAccounts.includes(selectAll)) { // if select all is newly selected and currently in selection, defaults back to first account\n newSelections = [dateFilteredDashboardAccountList[0].accountNumber];\n newGraphData = this.filterGraphData(newSelections);\n }\n else { // normal, multiple selection\n newSelections = selections;\n newGraphData = this.filterGraphData(newSelections);\n }\n\n this.setState({ selectedAccounts: newSelections, graphData: newGraphData, });\n }\n }\n\n getMinMaxDates = selectedAccounts => {\n const { dashboardAccountList, } = this.state;\n const filteredDashboardAccountList = selectedAccounts.includes(selectAll) ? dashboardAccountList : dashboardAccountList.filter(account => selectedAccounts.includes(account.accountNumber));\n const minMaxDates = { minDate: '', maxDate: dayjs() };\n filteredDashboardAccountList.forEach(account => { // find max earliest and latest dates from selected accounts\n const earliestBalanceDate = account.accountBalanceHistory[0].date;\n const latestBalanceDate = account.accountBalanceHistory[account.accountBalanceHistory.length - 1].date;\n minMaxDates.minDate = !minMaxDates.minDate || dayjs(earliestBalanceDate).isBefore(minMaxDates.minDate, 'day') ? earliestBalanceDate : minMaxDates.minDate;\n minMaxDates.maxDate = latestBalanceDate;\n });\n const hasLimitedData = !filteredDashboardAccountList.some(account => account.accountBalanceHistory.length > 3);\n\n this.setState({ minMaxDates, warningType: hasLimitedData ? warningTypes.newAccount : '' });\n }\n\n filterGraphData = selectedAccounts => {\n if (selectedAccounts[0] !== selectAll) { // don't filter, if all accounts are selected\n this.getMinMaxDates(selectedAccounts);\n return this.state.dateFilteredDashboardAccountList.filter(account => selectedAccounts.includes(account.accountNumber));\n }\n else {\n return this.state.dateFilteredDashboardAccountList;\n }\n }\n\n filterByDateRange = dateFilter => {\n const { Overview } = this.props.text;\n const { dashboardAccountList, selectedAccounts, minMaxDates, } = this.state;\n let dateFilteredDashboardAccountList = this.state.dateFilteredDashboardAccountList;\n const customFilterDates = this.state.customFilterDates;\n const formErrors = this.state.formErrors;\n let runFilter = true;\n let showCustomDatePickers = false;\n\n if (dateFilter.label === Overview.lbl_filter_all) {\n dateFilteredDashboardAccountList = dashboardAccountList;\n customFilterDates.startDate = minMaxDates.minDate;\n customFilterDates.endDate = minMaxDates.maxDate;\n }\n else if (dateFilter.label === Overview.lbl_filter_custom) {\n formErrors.startDate = ''; // clear form errors\n formErrors.endDate = '';\n showCustomDatePickers = true; // show date pickers for custom range\n runFilter = false; // Custom filter will run when two valid dates are entered\n }\n else { // uses one of the set date ranges\n dateFilteredDashboardAccountList = dashboardAccountList.map(account => ({\n ...account,\n accountBalanceHistory: account.accountBalanceHistory.filter(balance => dayjs(balance.date).isSameOrAfter(dateFilter.filterDate, 'day')),\n }));\n customFilterDates.startDate = dateFilter.filterDate;\n customFilterDates.endDate = minMaxDates.maxDate;\n }\n\n this.setState({\n activeGraphDateFilter: dateFilter,\n customFilterDates,\n dateFilteredDashboardAccountList,\n showCustomDatePickers,\n formErrors,\n }, () => (\n runFilter && this.setState({ graphData: this.filterGraphData(selectedAccounts) }))\n );\n }\n\n filterByCustomDates = fieldName => {\n const { dashboardAccountList, customFilterDates, selectedAccounts, } = this.state;\n\n if (this.formValidate(fieldName)) {\n let dateFilteredDashboardAccountList = this.state.dateFilteredDashboardAccountList; // default to main dashboard list, if dates are removed\n if (customFilterDates.startDate && customFilterDates.endDate) { // if both dates are provided, then get filtered transactions\n dateFilteredDashboardAccountList = dashboardAccountList.map(account => ({\n ...account,\n accountBalanceHistory: account.accountBalanceHistory.filter(balance => (\n dayjs(balance.date).isSameOrAfter(customFilterDates.startDate, 'day') && dayjs(balance.date).isSameOrBefore(customFilterDates.endDate, 'day'))\n ),\n }));\n }\n this.setState({ dateFilteredDashboardAccountList, }, () => this.setState({ graphData: this.filterGraphData(selectedAccounts) }));\n }\n }\n\n formValidate = (fieldName) => {\n const { Overview } = this.props.text;\n const { startDate, endDate } = this.state.customFilterDates;\n const formErrors = {};\n\n // startDate validation\n formErrors.startDate = validator.calendarValidator(startDate);\n if (dayjs(startDate).isAfter(dayjs(), 'day')) {\n formErrors.startDate = Overview.err_date_past_today;\n }\n if (dayjs(startDate).isAfter(dayjs(endDate), 'day') && fieldName === 'startDate') {\n formErrors.startDate = Overview.err_start_after_end;\n }\n\n // endDate validation\n formErrors.endDate = validator.calendarValidator(endDate);\n if (dayjs(endDate).isBefore(dayjs(startDate), 'day') && fieldName === 'endDate') {\n formErrors.endDate = Overview.err_end_before_start;\n }\n\n // if both dates are blank, empty out errors\n if (!startDate && !endDate) {\n formErrors.startDate = '';\n formErrors.endDate = '';\n }\n\n this.setState({ formErrors });\n const hasErrors = Object.keys(formErrors).some(field => formErrors[field] !== '');\n\n return !hasErrors;\n }\n\n renderWarningDisplay = () => {\n const { Overview, } = this.props.text;\n const { warningType } = this.state;\n let message;\n\n switch (warningType) {\n case warningTypes.noActiveAccounts:\n message = [\n

{Overview.text_no_open_accounts}

,\n ];\n break;\n\n case warningTypes.dataUnavailable:\n message = [\n
{Overview.text_oops}
,\n

{Overview.text_something_wrong}

\n ];\n break;\n\n case warningTypes.newAccount:\n message = [\n

{Overview.text_see_more}

,\n ];\n break;\n\n default: break;\n }\n\n return (\n
\n butterfly\n {message}\n
\n );\n }\n\n renderSelectionAccount = account => {\n const displayedOptionName = account.isInterestedParty ? `${account.optionName} - ${this.props.text.AccountsSummary.head_interested_party}` : account.optionName;\n\n return (\n
\n
{account.beneficiaryName.toUpperCase()}
\n
{displayedOptionName}
\n
{account.accountNumber}
\n
\n );\n }\n\n renderDateFilterChips = () => {\n const { Overview } = this.props.text;\n const { dateFilters, activeGraphDateFilter, showCustomDatePickers, customFilterDates, formErrors, minMaxDates } = this.state;\n\n return (\n
\n
\n {dateFilters.map(dateFilter => {\n const isActiveChip = activeGraphDateFilter.label === dateFilter.label;\n const isSpecialFilter = dateFilter.label === Overview.lbl_filter_custom || dateFilter.label === Overview.lbl_filter_all; // checks if it is custom or all filter\n const isDisabled = !isSpecialFilter ? !dayjs(minMaxDates.minDate).isSameOrBefore(dateFilter.filterDate, 'day') : false; // if not a special filter, check if oldest balance date is past the set filter date\n\n return (\n this.filterByDateRange(dateFilter)}\n style={{ margin: '2px 5px 2px 0', }}\n variant='filled'\n />\n );\n })}\n
\n {showCustomDatePickers &&\n
\n
\n this.customDateHandle({ target: { name: 'startDate', value, } }), 500)}\n openTo='year'\n value={customFilterDates.startDate || null}\n />\n
\n
\n this.customDateHandle({ target: { name: 'endDate', value, } }), 500)}\n openTo='year'\n value={customFilterDates.endDate || null}\n />\n
\n
}\n
\n );\n }\n\n renderBalanceOverTime = () => {\n const { Overview } = this.props.text;\n const { selectedAccounts, dashboardAccountList, graphData, showBeneDropdown, isGraphFullscreen, activeGraphDateFilter, warningType, isBalanceHistoryLoading, } = this.state;\n const isNotMobileView = window.innerWidth > parseInt(mobileWidth);\n const multipleSelected = selectedAccounts.length > 1 || selectedAccounts.includes(selectAll);\n\n const selectedProps = {\n renderValue: (selected) => {\n const isSelectAll = selected.includes(selectAll);\n const selectedAccount = dashboardAccountList.find(account => account.accountNumber === selected[0]);\n const selections = isSelectAll ? [Overview.text_all_selected.toUpperCase()] : selected; // if select all, render Selected All text, otherwise use list of accountNumbers\n\n return selections.length !== 1 || isSelectAll\n ? {selections.join(', ')}\n : (\n this.renderSelectionAccount(selectedAccount)\n );\n },\n open: showBeneDropdown,\n onClose: () => this.setState({ showBeneDropdown: false }),\n SelectDisplayProps: { onClick: () => this.setState({ showBeneDropdown: !showBeneDropdown }) },\n disabled: isBalanceHistoryLoading,\n };\n\n return (\n <>\n
\n
\n
\n \n this.accountSelect(value)}\n options={[\n {\n value: selectAll,\n display: Overview.text_select_all.toUpperCase(),\n props: { style: selectedAccounts.includes(selectAll) ? { color: 'var(--primary)', fontWeight: 'bold', } : {} }\n },\n ...dashboardAccountList.map(account => ({\n value: account.accountNumber,\n display: this.renderSelectionAccount(account),\n props: { style: selectedAccounts.includes(account.accountNumber) ? { color: 'var(--primary)', fontWeight: 'bold', } : {} }\n }))\n ]}\n multiple={true}\n SelectProps={selectedProps}\n FormControlProps={{ variant: 'filled', disabled: isBalanceHistoryLoading, }}\n />\n \n
\n
\n calculate}\n onClick={() => this.setState({ thirdPartyWarningOn: true })}\n >\n {Overview.lbl_savings_calculator}\n \n
\n
\n\n
\n {(!isGraphFullscreen && isNotMobileView && !warningType && !isBalanceHistoryLoading) &&\n this.setState({ isGraphFullscreen: true })}\n title={Overview.title_open_fullscreen}\n />}\n
\n
\n \n {warningType === warningTypes.newAccount ?\n this.renderWarningDisplay() :\n <>\n
\n \n
\n {this.renderDateFilterChips()}\n \n }\n
\n \n );\n }\n\n getBalanceHistory() {\n this.setState({ isBalanceHistoryLoading: true });\n this.props.getBalanceHistory()\n .then(response => {\n const balanceHistory = response.payload.data;\n\n if (balanceHistory.length === 0) {\n this.setState({ warningType: warningTypes.noActiveAccounts, isBalanceHistoryLoading: false });\n }\n else { // if more than 10 accounts, the data will not be stored in redux\n this.formatDashboardAccountList(balanceHistory);\n }\n })\n .catch(() => this.setState({ isBalanceHistoryLoading: false, }));\n }\n\n formatDashboardAccountList = balanceHistory => {\n const alphabetizedBalanceHistory = balanceHistory.sort((obj1, obj2) => { // alphabetizes account list by bene first name\n const id1 = `${obj1.BeneficiaryName.toUpperCase()}`;\n const id2 = `${obj2.BeneficiaryName.toUpperCase()}`;\n\n return id1 < id2 ? -1 : 1;\n });\n\n const dashboardAccountList = alphabetizedBalanceHistory.map(account => {\n const sortedBalanceHistory = account.BalanceHistory.sort((first, second) => new Date(first.Date) - new Date(second.Date));\n return {\n accountBalanceHistory: sortedBalanceHistory.map(balance => ({\n balance: balance.Balance,\n date: dayjs(balance.Date),\n })),\n accountId: account.AccountId,\n accountNumber: account.AccountNumber,\n balanceAsOfGivenDate: currencyFormatter(sortedBalanceHistory[sortedBalanceHistory.length - 1].Balance),\n beneficiaryName: account.BeneficiaryName,\n dataAvailable: account.DataAvailable,\n isInterestedParty: Boolean(account.InterestedPartyId),\n optionName: account.OptionName,\n };\n });\n\n const { Overview } = this.props.text;\n const defaultSelectedAccount = dashboardAccountList.length > 0 ? [dashboardAccountList[0].accountNumber] : '';\n const maxDate = dashboardAccountList[0].accountBalanceHistory[dashboardAccountList[0].accountBalanceHistory.length - 1].date;\n const minDate = dashboardAccountList[0].accountBalanceHistory[0].date;\n const minMaxDates = {\n maxDate,\n minDate\n };\n\n const dateFilters = [\n { label: Overview.lbl_filter_1month, filterDate: dayjs(maxDate).subtract(1, 'month') },\n { label: Overview.lbl_filter_3month, filterDate: dayjs(maxDate).subtract(3, 'month') },\n { label: Overview.lbl_filter_6month, filterDate: dayjs(maxDate).subtract(6, 'month') },\n { label: Overview.lbl_filter_YTD, filterDate: dayjs(maxDate).startOf('year') },\n { label: Overview.lbl_filter_1year, filterDate: dayjs(maxDate).subtract(1, 'year') },\n { label: Overview.lbl_filter_all, filterDate: '' },\n { label: Overview.lbl_filter_custom, filterDate: '' },\n ];\n\n let activeGraphDateFilter = dateFilters[4]; //default to 1 year view\n if (dayjs(minMaxDates.minDate).isAfter(dayjs().subtract(1, 'year'))) { // if less than 1 year data on default account, loop through filters to set apporiate filter\n const setDateFilters = cloneDeep(dateFilters).splice(0, 4); // get only the set filter dates\n setDateFilters.forEach(filter => {\n if (dayjs(minMaxDates.minDate).isBefore(filter.filterDate, 'day')) {\n activeGraphDateFilter = filter;\n }\n });\n }\n\n // check if warning messages need to be displayed //\n // check that balance history data was pulled correctly; this should only be false in cases of a database connection error.\n const dataAvailable = dashboardAccountList.some(account => account.dataAvailable);\n\n this.setState({\n activeGraphDateFilter,\n dateFilters,\n dashboardAccountList,\n isBalanceHistoryLoading: false,\n minMaxDates,\n selectedAccounts: defaultSelectedAccount,\n warningType: !dataAvailable ? warningTypes.dataUnavailable : '', // if balance history data is not available, display warning\n }, () => dataAvailable && this.filterByDateRange(this.state.activeGraphDateFilter)); // runs filter to get 1 year default graphData\n }\n\n componentDidMount() {\n const { balanceHistory, claims, } = this.props;\n if (claims.AccountBlocked === 'True') {\n this.setState({ hasPrecondition: true });\n }\n else if (claims.AccountBlocked === 'False') {\n if (balanceHistory.length > 0) this.formatDashboardAccountList(balanceHistory);\n else this.getBalanceHistory();\n }\n }\n\n componentDidUpdate() {\n const { balanceHistory, claims, } = this.props;\n\n if (claims.AccountBlocked === 'False'\n && (claims.TwoFactorAuthentication !== TWO_FACTOR_STATUS.PENDING)\n && this.state.hasPrecondition) {\n this.setState({ hasPrecondition: false }, () => {\n if (balanceHistory.length > 0) this.formatDashboardAccountList(balanceHistory);\n else this.getBalanceHistory();\n });\n }\n }\n\n\n render() {\n const { accountList, text: { Sidenav } } = this.props;\n const { dashboardAccountList, isBalanceHistoryLoading, isGraphFullscreen, thirdPartyWarningOn, warningType, } = this.state;\n\n return (\n <>\n {warningType === warningTypes.noActiveAccounts\n ? this.renderWarningDisplay()\n : (\n
\n
\n {warningType === warningTypes.dataUnavailable ? this.renderWarningDisplay() : !isGraphFullscreen && this.renderBalanceOverTime()}\n
\n
\n \n
\n
\n )}\n\n {!warningType && isGraphFullscreen &&\n this.setState({ isGraphFullscreen: false })}\n DialogProps={{ fullScreen: true, maxWidth: false, }}\n >\n
\n {this.renderBalanceOverTime()}\n
\n }\n\n this.setState({ thirdPartyWarningOn: false })}\n eventLabel='Invite Education-Home' // for Google analytics\n thirdPartyURL='https://tools.inviteeducation.com/tools/college_savings_estimator?client_id=209'\n warningLanguage={Sidenav.resources.txt_third_party_warning_for_info}\n />\n \n );\n }\n}\n\n\nexport default withRouter(connect(null, { getBalanceHistory, })(LanguageHOC(Overview)));\n","/*\n*\n* AccessCardBanner Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { IconBtnTooltip, } from '@frontend/common';\n\nimport accessCardBannerImage from './AccessCardBanner.png';\nimport mobileAccessCardBannerImage from './MobileAccessCardBanner.png';\n\nimport { tabletWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\nexport class AccessCardBanner extends React.Component {\n\n static propTypes = {\n show: PropTypes.bool,\n onCloseBanner: PropTypes.func.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Payments: PropTypes.shape({\n nav_path: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n }\n\n state = {\n isMobileView: false,\n }\n\n componentDidMount() {\n this.setState({ isMobileView: this.props.size.windowWidth < parseInt(tabletWidth) });\n }\n\n componentDidUpdate({ size }) {\n const { size: { windowWidth }, } = this.props;\n\n if (size.windowWidth !== windowWidth) {\n this.setState({\n isMobileView: windowWidth < parseInt(tabletWidth),\n });\n }\n }\n\n render() {\n const { onCloseBanner, history, text: { Payments }, show } = this.props;\n const { isMobileView } = this.state;\n\n return (\n show &&\n
\n
\n history.push(Payments.nav_path)}\n />\n
\n {\n event.stopPropagation();\n onCloseBanner();\n }}\n onFocus={event => event.stopPropagation()}\n />\n
\n
\n
\n );\n }\n}\n\n\nexport default withRouter(LanguageHOC(AccessCardBanner));","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { IconBtnTooltip, } from '@frontend/common';\n\nimport {\n Button,\n Icon\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport const PaperlessBanner = ({ show, history, text: { MyInfo }, onCloseBanner }) => {\n return (\n show &&\n
\n
\n
\n settings\n {MyInfo.label_paperless}|{MyInfo.msg_paperless}\n
\n
\n history.push(MyInfo.nav_path)}\n >\n {MyInfo.nav_title}\n \n
\n
\n
\n {\n event.stopPropagation();\n onCloseBanner();\n }}\n onFocus={event => event.stopPropagation()}\n />\n
\n
\n );\n};\n\nPaperlessBanner.propTypes = {\n show: PropTypes.bool,\n history: PropTypes.object.isRequired,\n text: PropTypes.shape({\n MyInfo: PropTypes.object.isRequired\n }).isRequired,\n onCloseBanner: PropTypes.func.isRequired,\n};\n\nexport default withRouter(LanguageHOC(PaperlessBanner));","/*\n*\n* Home Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { isEmpty } from 'lodash';\nimport { greetingGenerator } from 'utils/helpers/greeting_generator';\nimport {\n getAccounts,\n getAccountsSummary,\n} from 'components/Features/protected/Accounts/actions';\nimport {\n get2FAPrecondition,\n getRSAPrecondition,\n getNotifications,\n saveUserPreferences,\n} from 'components/AppRoot/Navigation/actions';\nimport { agentGet, getStatementDeliveryMethods } from 'components/Features/protected/MyInfo/actions';\nimport { getPreferredMethod } from 'components/Features/protected/Multifactor/actions';\nimport { getPredefinedOptions } from 'components/Features/protected/Accounts/Transactions/OptionChanges/actions';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Icon,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport {\n IconBtnTooltip,\n LoadingOverlay,\n sizify,\n} from '@frontend/common';\nimport { TWO_FACTOR_STATUS } from 'components/AppRoot/Navigation/constants';\nimport { MAIL } from 'components/Features/protected/MyInfo/constants';\nimport Overview from './Overview';\nimport AccessCardBanner from './AccessCardBanner';\nimport PaperlessBanner from './PaperlessBanner';\nimport AccountsSummary from 'components/Features/protected/Accounts/AccountsSummary';\nimport Banner from 'components/Features/Banner';\n\nimport UpcomingSchedules from 'components/Features/protected/TransactionsHub/UpcomingSchedules';\nimport TransactionHistory from 'components/Features/protected/TransactionsHub/TransactionHistory';\n\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\nconst expansionPanelBar = {\n background: '#F5F5F5',\n borderRadius: 3,\n border: 0,\n color: 'white',\n height: 48,\n padding: '0 30px',\n boxShadow: 'none',\n};\n\nconst muiStyles = () => ({\n expansionPanelBody: {\n background: '#F5F5F5',\n boxShadow: 'none',\n },\n expansionPanelBar,\n expansionPanelBarSmallScreen: {\n ...expansionPanelBar,\n height: 125\n }\n});\n\nconst select = (state) => ({\n accountList: state.accounts.accountList.map(account => ({\n ...account,\n accountId: account.accountId,\n accountGroupId: account.accountGroupId,\n beneficiaryName: account.beneficiary.name,\n totalValue: account.totalValue,\n accountNumber: account.accountNumber,\n accountType: account.accountType,\n optionName: account.option.name,\n accountBalanceHistory: [\n { // only added for loading purposes of balance history\n balance: 0,\n date: new Date(),\n }\n ],\n })),\n balanceHistory: state.accounts.balanceHistory,\n userDetails: state.session.userDetails,\n is2FADialogOpen: state.session.is2FADialogOpen,\n claims: state.session.claims,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n preferredInfo: state.multifactor.preferredInfo,\n accessCardBannerPreference: state.session.userPreferences.find(pref => pref.Identifier === 'ShowAccessCardBanner') || {},\n paperlessBannerPreference: state.session.userPreferences.find(pref => pref.Identifier === 'ShowPaperlessBanner') || {},\n webMessages: state.static.webMessages,\n agent: state.myInfo.agent,\n DeliveryMethods: state.myInfo.DeliveryMethods,\n});\n\nexport class Home extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.arrayOf(\n PropTypes.shape({\n accountId: PropTypes.number,\n accountGroupId: PropTypes.number,\n accountIsClosed: PropTypes.bool,\n beneficiaryName: PropTypes.string,\n totalValue: PropTypes.string,\n accountNumber: PropTypes.number,\n accountType: PropTypes.string,\n optionName: PropTypes.string,\n taxableEntityProgramAccountId: PropTypes.number,\n })\n ).isRequired,\n balanceHistory: PropTypes.array,\n classes: PropTypes.object.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountsSummary: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n getNotifications: PropTypes.func.isRequired,\n saveUserPreferences: PropTypes.func.isRequired,\n agentGet: PropTypes.func.isRequired,\n getPredefinedOptions: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n claims: PropTypes.object.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func }),\n Home: PropTypes.shape({\n btn_list_view: PropTypes.string,\n btn_tile_view: PropTypes.string,\n head_account_agent: PropTypes.string,\n head_accounts: PropTypes.string,\n head_email: PropTypes.string,\n head_overview: PropTypes.string,\n }),\n }).isRequired,\n userDetails: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }).isRequired,\n is2FADialogOpen: PropTypes.bool.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n accessCardBannerPreference: PropTypes.shape({ UserId: PropTypes.number, Identifier: PropTypes.string, Value: PropTypes.bool }).isRequired,\n paperlessBannerPreference: PropTypes.shape({ UserId: PropTypes.number, Identifier: PropTypes.string, Value: PropTypes.bool }).isRequired,\n webMessages: PropTypes.object.isRequired,\n agent: PropTypes.shape({\n OfficialCommunications: PropTypes.string,\n Newsletter: PropTypes.string,\n TaxForms: PropTypes.string,\n }).isRequired,\n DeliveryMethods: PropTypes.array,\n getStatementDeliveryMethods: PropTypes.func.isRequired,\n };\n\n state = {\n isTileView: false,\n loading: false,\n overviewIsExpanded: true,\n transactionsIsExpanded: true,\n greeting: '',\n hasCalledAccounts: false,\n userCookieIsSet: false,\n };\n\n isNotPaperless = (officialCommunications, newsletter, taxForms, deliveryMethods) => {\n // required data were not received\n if (!officialCommunications || !newsletter || !taxForms || !deliveryMethods) {\n return false;\n }\n // some of the agent's setting are not online only\n if (officialCommunications === MAIL || newsletter === MAIL || taxForms === MAIL) {\n return true;\n }\n // some of the bene's delivery method is not online only\n return Boolean(deliveryMethods.find(method => method.DeliveryMethod === MAIL));\n }\n\n accountsGet = () => {\n this.props.accountList.length === 0 && this.setState({ loading: true });\n // to find out if it was resolved in componentDidMount\n return this.props.getAccounts()\n .then(() => {\n const promises = [\n this.props.getAccountsSummary(),\n this.props.getNotifications(),\n this.props.getPredefinedOptions(),\n ];\n this.props.claims.AgentId && promises.push(this.props.agentGet());\n // returning all promises in order to chain it\n return Promise.all(promises);\n })\n .finally(() => this.setState({ loading: false }));\n }\n\n componentDidMount() {\n const isMobile = this.props.size.windowWidth < parseInt(mobileWidth);\n const setStateOnMount = () => this.setState({\n isTileView: isMobile,\n overviewIsExpanded: !isMobile, // collapse overview section when on mobile phone\n transactionsIsExpanded: !isMobile,\n greeting: `${greetingGenerator()}, ${this.props.userDetails.name}`,\n });\n\n if (this.props.claims.AccountBlocked !== 'True' && this.props.accountList.length === 0) {\n this.setState(\n { hasCalledAccounts: true },\n () => {\n this.accountsGet().then(() => setStateOnMount());\n // data for paperless banner\n if (this.props.DeliveryMethods.length === 0) {\n this.props.getStatementDeliveryMethods();\n }\n }\n );\n }\n else {\n setStateOnMount();\n }\n\n if (isEmpty(this.props.preferredInfo)) {\n this.props.getPreferredMethod();\n }\n\n // default isActiveAgent cookie to false\n document.cookie = 'isActiveAgent=false';\n }\n\n componentDidUpdate({ size }) {\n const { size: { windowWidth }, accountList, isAgent_AccessRole } = this.props;\n const { userCookieIsSet } = this.state;\n\n if (size.windowWidth !== windowWidth) {\n this.setState({\n isTileView: windowWidth < parseInt(mobileWidth) ? true : this.state.isTileView,\n });\n }\n\n const { TwoFactorAuthentication, AccountBlocked } = this.props.claims;\n if (AccountBlocked === 'False'\n && TwoFactorAuthentication !== TWO_FACTOR_STATUS.PENDING\n && !this.state.hasCalledAccounts\n && this.props.accountList.length === 0) {\n this.setState({ hasCalledAccounts: true }, () => {\n // 2FA should be finished here\n this.accountsGet();\n // data for paperless banner\n if (this.props.DeliveryMethods.length === 0) {\n this.props.getStatementDeliveryMethods();\n }\n });\n }\n\n // if user is both an agent and has an open Individual account, set isActiveAgent cookie to true\n // should exclude all CSA accounts\n // this cookie is used in the Qualtrics logic to display a survey to specific users\n if (isAgent_AccessRole && !userCookieIsSet && accountList.length > 0) {\n const hasActiveIndividualAccount = accountList.some(account => !account.accountIsClosed && account.accountType === 'Individual' && account.taxableEntityProgramAccountId === 0);\n this.setState({ userCookieIsSet: true });\n if (hasActiveIndividualAccount) document.cookie = 'isActiveAgent=true';\n }\n }\n\n render() {\n const {\n classes, size: { windowWidth }, text: { Home }, userDetails, accountList,\n balanceHistory, claims, accessCardBannerPreference, saveUserPreferences,\n webMessages,\n paperlessBannerPreference,\n agent: {\n OfficialCommunications,\n Newsletter,\n TaxForms,\n },\n DeliveryMethods\n } = this.props;\n\n const { isTileView, loading, overviewIsExpanded, transactionsIsExpanded, greeting } = this.state;\n\n return (\n
\n \n saveUserPreferences({\n Identifier: paperlessBannerPreference.Identifier,\n UserId: paperlessBannerPreference.UserId,\n Value: false\n })}\n />\n \n
\n this.setState({ overviewIsExpanded: !overviewIsExpanded })}\n >\n expand_less}\n id='account-agent-header'\n >\n
\n
{greeting}
\n
{Home.head_overview}
\n
{userDetails.email}
\n
\n \n \n \n \n \n\n saveUserPreferences({\n Identifier: accessCardBannerPreference.Identifier,\n UserId: accessCardBannerPreference.UserId,\n Value: false\n })}\n size={this.props.size}\n />\n\n
\n
\n

{Home.head_accounts}

\n
\n
\n {\n this.setState({ isTileView: !isTileView });\n event.stopPropagation();\n }}\n onFocus={event => event.stopPropagation()}\n title={isTileView ? Home.btn_list_view : Home.btn_tile_view}\n />\n
\n
\n\n
\n \n
\n\n
\n this.setState({ transactionsIsExpanded: !transactionsIsExpanded })}\n >\n expand_less}\n id='transaction-agent-header'\n >\n Transactions\n \n\n {accountList && accountList.length > 0 &&\n \n
\n
\n \n
\n
\n \n
\n
\n
\n }\n\n \n
\n\n
\n
\n
\n );\n }\n}\n\n\nexport default withStyles(muiStyles)(connect(select, {\n get2FAPrecondition,\n getAccounts,\n agentGet,\n getAccountsSummary,\n getNotifications,\n getPredefinedOptions,\n getPreferredMethod,\n getRSAPrecondition,\n saveUserPreferences,\n getStatementDeliveryMethods\n})(sizify(LanguageHOC(Home))));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { IconBtnTooltip } from '@frontend/common';\nimport {\n Drawer,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport function LearnMoreDrawer({ open, onClose, text: { Lpoa } }) {\n\n return (\n \n
\n
\n \n
\n
\n

{Lpoa.learn_more_title}

\n
\n {Lpoa.text_learn_more}\n
\n
\n
\n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.shape({\n learn_more_title: PropTypes.string,\n text_learn_more: PropTypes.string,\n }),\n }),\n};\n\nexport default LanguageHOC(LearnMoreDrawer);","/*\n*\n* BeneTable Component\n*\n*/\nimport React from 'react';\nimport PropTypes, { number } from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n CardAligned,\n ConfirmModal,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n Checkbox,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport class BeneTable extends React.Component {\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n lpoa: PropTypes.shape({\n PoaName: PropTypes.string,\n BeneficiaryInfo: PropTypes.array.isRequired,\n }),\n disableRevoke: PropTypes.bool.isRequired,\n selectedBeneIds: PropTypes.arrayOf(number).isRequired,\n onCheckboxClickHandler: PropTypes.func.isRequired,\n renderNavigationButton: PropTypes.func.isRequired,\n selectAllClickHandler: PropTypes.func.isRequired,\n unlinkLpoa: PropTypes.func.isRequired,\n revokeSelectedBenesHandler: PropTypes.func.isRequired,\n editSelectedBenesHandler: PropTypes.func.isRequired,\n openConfirmModalRevokeBene: PropTypes.bool.isRequired,\n openConfirmModalUnlinkLpoa: PropTypes.bool.isRequired,\n setOpenConfirmModalRevokeBene: PropTypes.func.isRequired,\n setOpenConfirmModalUnlinkLpoa: PropTypes.func.isRequired,\n cancelConfirmModalRevokeBene: PropTypes.func.isRequired,\n cancelConfirmModalUnlinkLpoa: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.shape({\n modal_title_revoke_benes: PropTypes.string.isRequired,\n modal_body_revoke_benes: PropTypes.string.isRequired,\n modal_title_unlink_lpoa: PropTypes.string.isRequired,\n nav_title: PropTypes.string.isRequired,\n column_labels: PropTypes.arrayOf(PropTypes.string).isRequired,\n text_yes: PropTypes.string.isRequired,\n text_no: PropTypes.string.isRequired,\n text_disabled: PropTypes.string.isRequired,\n checkbox_all_alt_text: PropTypes.string.isRequired,\n checkbox_select_bene_alt_text: PropTypes.string.isRequired,\n table_title: PropTypes.string.isRequired,\n btn_add_edit: PropTypes.string.isRequired,\n btn_add_edit_help_txt: PropTypes.string.isRequired,\n btn_revoke: PropTypes.string.isRequired,\n btn_unlink: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n };\n\n render() {\n const {\n loading,\n lpoa: { PoaName, BeneficiaryInfo },\n selectedBeneIds,\n disableRevoke,\n onCheckboxClickHandler,\n renderNavigationButton,\n selectAllClickHandler,\n editSelectedBenesHandler,\n unlinkLpoa,\n revokeSelectedBenesHandler,\n openConfirmModalRevokeBene,\n openConfirmModalUnlinkLpoa,\n setOpenConfirmModalRevokeBene,\n setOpenConfirmModalUnlinkLpoa,\n cancelConfirmModalRevokeBene,\n cancelConfirmModalUnlinkLpoa,\n text: {\n Lpoa: {\n nav_title,\n modal_title_revoke_benes,\n modal_body_revoke_benes,\n modal_title_unlink_lpoa,\n column_labels,\n text_yes,\n text_no,\n text_disabled,\n checkbox_all_alt_text,\n checkbox_select_bene_alt_text,\n table_title,\n btn_add_edit,\n btn_add_edit_help_txt,\n btn_revoke,\n btn_unlink,\n },\n },\n } = this.props;\n\n const isSelected = (beneId) => selectedBeneIds.indexOf(beneId) !== -1;\n const numSelected = selectedBeneIds.length;\n const rowCount = BeneficiaryInfo.length;\n const noSelection = selectedBeneIds.length === 0;\n\n const results = BeneficiaryInfo.length === 0\n ? 'No beneficiaries.'\n : BeneficiaryInfo.map((bene, index) => {\n const isItemSelected = isSelected(bene.BeneficiaryId);\n return (\n
\n
\n

\n onCheckboxClickHandler(e, bene.BeneficiaryId)}\n checked={isItemSelected}\n />\n

\n
\n
\n \n

{bene.BeneficiaryName}

\n
\n
\n \n

{bene.PoaLevel === 0 ? text_disabled : bene.PoaLevel}

\n
\n
\n \n

{bene.FederalTaxDocs ? text_yes : text_no}

\n
\n
\n \n

{bene.StateTaxDocs ? text_yes : text_no}

\n
\n
\n );\n });\n\n return (\n
\n
\n
\n \n

{PoaName}

\n
\n {renderNavigationButton(btn_unlink, setOpenConfirmModalUnlinkLpoa, 'contained')}\n
\n\n
\n
{table_title}
\n \n \n
\n
{btn_add_edit_help_txt}
\n
\n
\n 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n />\n
\n {renderNavigationButton(btn_add_edit, editSelectedBenesHandler, 'contained', noSelection)}\n {renderNavigationButton(btn_revoke, setOpenConfirmModalRevokeBene, 'text', disableRevoke || noSelection)}\n
\n
\n\n {results}\n
\n
\n
\n \n \n
\n );\n }\n}\n\n\nexport default LanguageHOC(BeneTable);\n","/*\n *\n * LpoaStepper Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Stepper,\n Step,\n StepLabel,\n StepButton,\n Button,\n} from '@mui/material';\nimport {\n LoadingOverlay,\n Card,\n} from '@frontend/common';\n\nimport { sizify } from '@frontend/common';\n\nimport styles from './styles.module.scss';\nimport { desktopWidth } from 'utils/config/_sassconfig.scss';\n\nexport class LpoaStepper extends React.Component {\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n onCancel: PropTypes.func.isRequired,\n clearStepError: PropTypes.bool.isRequired,\n verifyStep: PropTypes.func.isRequired,\n renderStepComponent: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n stepLabels: PropTypes.arrayOf(PropTypes.string).isRequired,\n submitStep: PropTypes.number.isRequired,\n clearStepErrors: PropTypes.func.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number.isRequired,\n }).isRequired,\n history: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.shape({\n btn_agree: PropTypes.string,\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_finish: PropTypes.string,\n btn_next: PropTypes.string,\n btn_print: PropTypes.string,\n }),\n })\n };\n\n state = {\n step: 0,\n stepHasError: false,\n completed: {},\n stepsDisabled: false,\n };\n\n isFirstStep = () => {\n return this.state.step === 0;\n };\n\n isLastStep = () => {\n return this.state.step === this.props.stepLabels.length - 1;\n };\n\n completedSteps = () => {\n return Object.keys(this.state.completed).length;\n };\n\n setStep = step => () => {\n if (this.state.completed[step]) this.setState({ step });\n };\n\n handleBack = () => {\n this.props.clearStepErrors();\n if (!this.isFirstStep()) this.setState(({ step }) => ({ step: step - 1 }));\n };\n\n handleNext = () => {\n const { verifyStep } = this.props;\n\n const stepHasError = verifyStep(this.state.step);\n this.setState({ stepHasError });\n\n if (!stepHasError) {\n if (!this.isLastStep()) {\n const newCompleted = this.state.completed;\n newCompleted[this.state.step] = true;\n this.setState(({ step }) => ({\n step: step + 1,\n completed: newCompleted\n }));\n }\n }\n };\n\n getCompletedStepsToThisStep(step, completed, isCompleted) {\n for (let i = 0; i <= step; i++) {\n completed[i] = isCompleted;\n }\n return completed;\n }\n\n handleSubmit = () => {\n const { verifyStep, handleSubmit } = this.props;\n\n const stepHasError = verifyStep(this.state.step);\n this.setState({ stepHasError });\n\n if (!stepHasError) {\n handleSubmit();\n }\n }\n\n renderButtons = () => {\n const {\n submitStep,\n text: {\n Lpoa: {\n btn_agree,\n btn_back,\n btn_cancel,\n btn_next,\n }\n },\n loading,\n onCancel,\n } = this.props; //terms checked left as true, unless passed in props.\n const { step } = this.state;\n const cancelButton = (\n \n {btn_cancel}\n \n );\n const backButton = (\n \n {btn_back}\n \n );\n const nextButton = (\n \n {btn_next}\n \n );\n const submitButton = (\n \n \n {btn_agree}\n \n \n );\n\n let buttons;\n\n if (submitStep === step) {\n buttons = [\n cancelButton,\n backButton,\n submitButton\n ];\n }\n else if (this.isLastStep()) {\n buttons = [];\n }\n else if (step === 0) {\n buttons = [\n cancelButton,\n nextButton,\n ];\n }\n else {\n buttons = [\n cancelButton,\n backButton,\n nextButton,\n ];\n }\n\n return buttons;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.clearStepError !== this.props.clearStepError) {\n if (this.props.clearStepError) {\n this.setState({ stepHasError: false });\n }\n }\n }\n\n render() {\n const { step, completed, loading, stepHasError } = this.state;\n const { renderStepComponent, stepLabels, size } = this.props;\n\n return (\n
\n
\n
\n \n {stepLabels.map((label, index) => (\n \n \n \n {label}\n \n \n \n ))}\n \n
\n \n
\n {renderStepComponent(step)}\n
\n\n
\n {this.renderButtons()}\n
\n
\n
\n\n
\n );\n }\n}\n\nexport default withRouter(sizify(LanguageHOC(LpoaStepper)));\n","/*\n*\n* Lpoa Constants\n*\n*/\nexport const CHECK_AUTH_CODE = 'src/components/Features/protected/Lpoa/CHECK_AUTH_CODE';\nexport const GET_LPOA = 'src/components/Features/protected/Lpoa/GET_LPOA';\nexport const POST_LPOA = 'src/components/Features/protected/Lpoa/POST_LPOA';\nexport const DELETE_LPOA = 'src/components/Features/protected/Lpoa/DELETE_LPOA';\n\nexport const INVALID_AUTH_CODE = 'Code is invalid';\n","/*\n*\n* EditLpoa Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n IconBtnTooltip,\n InfoIcon,\n notificationShow\n} from '@frontend/common';\n\nimport {\n Checkbox,\n FormControlLabel,\n FormHelperText,\n Radio,\n} from '@mui/material';\n\nimport LpoaStepper from './LpoaStepper';\n\nimport { postLpoa } from '../actions';\n\nimport styles from './styles.module.scss';\n\nconst select = () => ({});\n\nexport class EditLpoa extends React.Component {\n\n static propTypes = {\n selectedBeneIds: PropTypes.arrayOf(PropTypes.number).isRequired,\n lpoa: PropTypes.shape({\n PoaCode: PropTypes.string.isRequired,\n PoaName: PropTypes.string.isRequired,\n AgentId: PropTypes.number.isRequired,\n BeneficiaryInfo: PropTypes.arrayOf(PropTypes.shape({\n BeneficiaryId: PropTypes.number.isRequired,\n BeneficiaryName: PropTypes.string.isRequired,\n PoaLevel: PropTypes.number.isRequired,\n FederalTaxDocs: PropTypes.bool.isRequired,\n StateTaxDocs: PropTypes.bool.isRequired,\n }).isRequired),\n }).isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.object.isRequired,\n }).isRequired,\n postLpoa: PropTypes.func.isRequired,\n goBackToLpoaTableAndRefreshLpoa: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n }\n\n state = {\n loading: false,\n selectedPoaLevel: '',\n selectedPoaLevelError: '',\n selectedFedTaxDocs: false,\n selectedStateTaxDocs: false,\n termsChecked: false,\n termsCheckedError: '',\n clearStepError: false,\n }\n\n clearStepErrors = () => {\n this.setState({\n selectedPoaLevelError: '',\n termsCheckedError: '',\n clearStepError: true,\n });\n }\n\n formValidate = (step) => {\n const {\n text: {\n Lpoa: {\n errors: {\n missing_lpoa_level,\n missing_terms_checked,\n },\n }\n }\n } = this.props;\n\n const { selectedPoaLevel, termsChecked } = this.state;\n\n let selectedPoaLevelError = '';\n let termsCheckedError = '';\n\n switch (step) {\n case 0:\n if (selectedPoaLevel === '')\n selectedPoaLevelError = missing_lpoa_level;\n break;\n case 1:\n if (!termsChecked)\n termsCheckedError = missing_terms_checked;\n break;\n default:\n // something wrong do nothing\n }\n\n const stepHasError = Boolean(selectedPoaLevelError) || Boolean(termsCheckedError);\n\n this.setState({\n selectedPoaLevelError,\n termsCheckedError,\n clearStepError: !stepHasError,\n });\n\n return stepHasError;\n }\n\n levelSelectionHandler = (e) => {\n this.setState({\n selectedPoaLevel: parseInt(e.target.value),\n });\n this.clearStepErrors();\n }\n\n onFedTaxDocsClickHandler = () => {\n const selectedFedTaxDocs = !this.state.selectedFedTaxDocs;\n this.setState({ selectedFedTaxDocs });\n }\n\n onStateTaxDocsClickHandler = () => {\n const selectedStateTaxDocs = !this.state.selectedStateTaxDocs;\n this.setState({ selectedStateTaxDocs });\n }\n\n onTermsCheckHandler = () => {\n const termsChecked = !this.state.termsChecked;\n this.setState({ termsChecked });\n this.clearStepErrors();\n }\n\n onSubmitHandler = () => {\n const { selectedBeneIds, lpoa, postLpoa, goBackToLpoaTableAndRefreshLpoa, text: { Lpoa } } = this.props;\n const { selectedPoaLevel, selectedFedTaxDocs, selectedStateTaxDocs } = this.state;\n\n const updatedBeneficiaryInfo = lpoa.BeneficiaryInfo\n .filter(bene => selectedBeneIds.includes(bene.BeneficiaryId))\n .map(bene => ({\n BeneficiaryId: bene.BeneficiaryId,\n BeneficiaryName: bene.BeneficiaryName,\n PoaLevel: selectedPoaLevel,\n FederalTaxDocs: !selectedFedTaxDocs, // we want reversed for disallowing\n StateTaxDocs: !selectedStateTaxDocs, // we want reversed for disallowing\n }));\n\n const updatedLpoaBody = {\n PoaCode: lpoa.PoaCode,\n AgentId: lpoa.AgentId,\n BeneficiaryInfo: updatedBeneficiaryInfo,\n };\n\n this.setState({ loading: true });\n return postLpoa(updatedLpoaBody)\n .finally(() => {\n this.setState({ loading: false });\n this.props.notificationShow(Lpoa.success_lpoa_updated, 'success');\n goBackToLpoaTableAndRefreshLpoa();\n });\n }\n\n renderStepComponent = step => {\n const { lpoa, text: { Lpoa }, selectedBeneIds } = this.props;\n const {\n selectedPoaLevelError,\n termsCheckedError,\n selectedPoaLevel,\n selectedFedTaxDocs,\n selectedStateTaxDocs,\n termsChecked,\n } = this.state;\n\n let stepComponent;\n switch (step) {\n case 0:\n stepComponent = () => (\n
\n
\n

{Lpoa.edit_level_table.title}

\n

{Lpoa.edit_level_table.lpoa_name_label}

\n

{lpoa.PoaName}

\n
\n
{/* make sure the table scrolls horizontally in mobile */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{Lpoa.edit_level_table.column_titles[0]}{Lpoa.edit_level_table.column_titles[1]}{Lpoa.edit_level_table.span_column_3_4_5_6_title}
{Lpoa.edit_level_table.column_titles[2]}{Lpoa.edit_level_table.column_titles[3]}{Lpoa.edit_level_table.column_titles[4]}{Lpoa.edit_level_table.column_titles[5]}
\n \n }\n label={Lpoa.edit_level_table.levels[0]}\n />\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_no}{Lpoa.text_no}{Lpoa.text_no}{Lpoa.text_no}
\n \n }\n label={Lpoa.edit_level_table.levels[1]}\n />\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_no}
\n \n }\n label={Lpoa.edit_level_table.levels[2]}\n />\n {Lpoa.edit_level_table.online_phone_text}{Lpoa.text_yes}{Lpoa.text_yes}{Lpoa.text_yes}\n {Lpoa.text_yes}\n \n
\n
\n\n \n {selectedPoaLevelError}\n \n\n
\n {Lpoa.edit_tax_docs.label}\n
\n
\n
\n \n }\n label={Lpoa.fed_tax_docs_label}\n />\n
\n
\n {Lpoa.fed_tax_docs_body()}\n
\n
\n
\n
\n
\n \n }\n label={Lpoa.state_tax_docs_label}\n />\n
\n
\n {Lpoa.state_tax_docs_body()}\n
\n
\n
\n );\n break;\n\n case 1: {\n const beneListFormatted = selectedBeneIds\n .map(beneId => {\n const bene = lpoa.BeneficiaryInfo.find(bene => bene.BeneficiaryId === beneId);\n return (\n
  • {bene.BeneficiaryName}
  • \n );\n });\n const allowFedTax = selectedFedTaxDocs ? 'disallow' : 'allow';\n const allowStateTax = selectedStateTaxDocs ? 'disallow' : 'allow';\n stepComponent = () => (\n
    \n
    \n window.print()}\n />\n
    \n
    \n

    {Lpoa.review_title}

    \n {Lpoa.review_details(lpoa.PoaName, selectedPoaLevel, beneListFormatted, allowFedTax, allowStateTax)}\n

    {Lpoa.terms_and_conditions_title}

    \n {Lpoa.terms_and_conditions_body(lpoa.PoaName)}\n
    \n \n }\n label={Lpoa.terms_and_conditions_agree_button_label}\n />\n\n \n {termsCheckedError}\n \n
    \n
    \n
    \n );\n break;\n }\n\n\n default:\n stepComponent = () =>
    Step does not exist
    ;\n }\n\n return stepComponent();\n }\n\n render() {\n const { goBackToLpoaTableAndRefreshLpoa, text: { Lpoa } } = this.props; // no need to refresh the lpoa\n const { loading, clearStepError } = this.state;\n\n return (\n
    \n this.formValidate(step)}\n renderStepComponent={(step) => this.renderStepComponent(step)}\n handleSubmit={this.onSubmitHandler}\n stepLabels={Lpoa.edit_lpoa_step_labels}\n loading={loading}\n submitStep={1}\n onCancel={() => goBackToLpoaTableAndRefreshLpoa(false)}\n />\n
    \n );\n }\n}\n\n\nexport default connect(select, {\n postLpoa,\n notificationShow,\n})(LanguageHOC(EditLpoa));\n","/*\n*\n* Lpoa Actions\n*\n*/\nimport {\n DELETErequest,\n GETrequest,\n POSTrequest,\n} from 'utils/helpers/api_handler';\n\nimport {\n CHECK_AUTH_CODE,\n GET_LPOA,\n POST_LPOA,\n DELETE_LPOA,\n} from './constants';\n\n\nexport function checkAuthCode(authCode) {\n const response = GETrequest(`/lpoa/CheckAuthCode?code=${authCode}`);\n // if success returns LPOA name otherwise text \"Code is invalid\"\n return {\n type: CHECK_AUTH_CODE,\n payload: response,\n };\n}\n\nexport function getLpoa(includeUnassigned = true) {\n const response = GETrequest(`/lpoa?includeUnassigned=${includeUnassigned}`);\n return {\n type: GET_LPOA,\n payload: response,\n };\n}\n\nexport function postLpoa(body) {\n // this will be used for both add and update lpoa\n const response = POSTrequest('/lpoa', body);\n return {\n type: POST_LPOA,\n payload: response,\n };\n}\n\nexport function deleteLpoa(beneIds) {\n const config = { data: { BeneficiaryIds: beneIds } }; // this is the required config syntaxt for passing json body\n const response = DELETErequest('/lpoa', config);\n return {\n type: DELETE_LPOA,\n payload: response,\n };\n}\n\n","/*\n*\n* Lpoa Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport LearnMore from './LearnMore';\nimport BeneTable from './BeneTable';\nimport EditLpoa from './EditLpoa';\n\nimport {\n CardAligned,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport {\n checkAuthCode,\n getLpoa,\n deleteLpoa,\n} from './actions';\n\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\n\nimport {\n INVALID_AUTH_CODE,\n} from './constants';\n\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n claims: state.session.claims\n});\n\nexport class Lpoa extends React.Component {\n static propTypes = {\n checkAuthCode: PropTypes.func.isRequired,\n getLpoa: PropTypes.func.isRequired,\n deleteLpoa: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Lpoa: PropTypes.shape({\n btn_learn_more: PropTypes.string.isRequired,\n error_auth_code_empty: PropTypes.string.isRequired,\n authorization_code_label: PropTypes.string.isRequired,\n authorization_code_title: PropTypes.string.isRequired,\n btn_back: PropTypes.string.isRequired,\n btn_cancel: PropTypes.string.isRequired,\n btn_confirm: PropTypes.string.isRequired,\n btn_next: PropTypes.string.isRequired,\n confirm_correct_lpoa_txt: PropTypes.string.isRequired,\n enter_auth_code_txt: PropTypes.string.isRequired,\n }).isRequired,\n\n }).isRequired,\n };\n\n state = {\n loading: false,\n learnMoreOpen: false,\n lpoaIsNoLinked: false,\n errorAuthCode: '',\n lpoa: {\n PoaCode: null,\n PoaName: null,\n BeneficiaryInfo: [],\n },\n selectedBeneIds: [],\n show: {\n authCodeEntryComponent: true,\n lpoaListComponent: false,\n editLpoaComponent: false,\n confirmLpoaNameComponent: false,\n },\n openConfirmModalRevokeBene: false,\n openConfirmModalUnlinkLpoa: false,\n\n hasPrecondition: false,\n post2FAAuthFunction: '',\n rememberedEvent: {}\n }\n\n validateForm = () => {\n const { text: { Lpoa } } = this.props;\n const { lpoa: { PoaCode } } = this.state;\n\n let errorAuthCode = '';\n if (PoaCode === '' || PoaCode === null)\n errorAuthCode = Lpoa.error_auth_code_empty;\n\n this.setState({ errorAuthCode });\n\n const isErrored = Boolean(errorAuthCode);\n return !isErrored;\n }\n\n onInputChange = (e) => {\n this.setState({\n lpoa: { ...this.state.lpoa, PoaCode: e.target.value },\n errorAuthCode: '',\n });\n }\n\n selectAllClickHandler = (e) => {\n if (e.target.checked) {\n const newSelectedBeneIds = this.state.lpoa.BeneficiaryInfo.map(bene => bene.BeneficiaryId);\n this.setState({ selectedBeneIds: newSelectedBeneIds });\n return;\n }\n this.setState({ selectedBeneIds: [] });\n };\n\n onCheckboxClickHandler = (e, beneId) => {\n const selectedBeneIds = this.state.selectedBeneIds;\n const selectedIndex = selectedBeneIds.indexOf(beneId);\n let newSelectedBeneIds = [];\n\n if (selectedIndex === -1) {\n newSelectedBeneIds = newSelectedBeneIds.concat(selectedBeneIds, beneId);\n }\n else if (selectedIndex === 0) {\n newSelectedBeneIds = newSelectedBeneIds.concat(selectedBeneIds.slice(1));\n }\n else if (selectedIndex === selectedBeneIds.length - 1) {\n newSelectedBeneIds = newSelectedBeneIds.concat(selectedBeneIds.slice(0, -1));\n }\n else if (selectedIndex > 0) {\n newSelectedBeneIds = newSelectedBeneIds.concat(\n selectedBeneIds.slice(0, selectedIndex),\n selectedBeneIds.slice(selectedIndex + 1)\n );\n }\n\n this.setState({ selectedBeneIds: newSelectedBeneIds });\n };\n\n setStateShowHandler = (componentName) => {\n // first reset all\n const updatedShow = {\n authCodeEntryComponent: false,\n lpoaListComponent: false,\n editLpoaComponent: false,\n confirmLpoaNameComponent: false,\n };\n // update only one\n updatedShow[componentName] = true;\n this.setState({ show: updatedShow });\n }\n\n goBackToLpoaTableHandler = (refreshLpoa = true) => {\n this.setStateShowHandler('lpoaListComponent');\n // also reset all selected benes to none\n this.setState({ selectedBeneIds: [] });\n // refresh lpoa\n if (refreshLpoa) {\n this.setState({ loading: true });\n this.getLpoaHandler()\n .finally(() => this.setState({ loading: false }));\n }\n\n window.scrollTo(0, 0);\n }\n\n onAuthCodeCheckHandler = e => {\n e.preventDefault();\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n { \n hasPrecondition: true,\n post2FAAuthFunction: 'onAuthCodeCheckHandler',\n rememberedEvent: e\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n { \n hasPrecondition: true,\n post2FAAuthFunction: 'onAuthCodeCheckHandler',\n rememberedEvent: e\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n if (this.validateForm()) {\n this.setState({ \n loading: true,\n hasPrecondition: false,\n rememberedEvent: {}\n });\n this.props.checkAuthCode(this.state.lpoa.PoaCode)\n .then((response) => {\n const PoaName = response.payload.data;\n // check if invalid code\n if (PoaName === INVALID_AUTH_CODE) {\n this.setStateShowHandler('authCodeEntryComponent');\n this.setState({\n errorAuthCode: INVALID_AUTH_CODE\n });\n }\n else {\n this.setStateShowHandler('confirmLpoaNameComponent');\n this.setState({ lpoa: { ...this.state.lpoa, PoaName, } });\n }\n })\n .finally(() => this.setState({ loading: false }));\n }\n }\n }\n\n onBackToCodeEntryHandler = () => {\n this.setStateShowHandler('authCodeEntryComponent');\n this.setState({\n errorAuthCode: '',\n poa: { ...this.state.lpoa, PoaName: '' }\n });\n }\n\n onLPOACancelHandler = () => {\n this.props.history.goBack();\n }\n\n onLPOAConfirmHandler = () => {\n this.setStateShowHandler('lpoaListComponent');\n }\n\n getLpoaHandler = () => {\n return this.props.getLpoa()\n .then((response) => {\n const lpoa = response.payload.data;\n this.setState({ lpoa }, () => {\n if (lpoa.PoaCode === null) {\n this.setState({ lpoaIsNoLinked: true });\n this.setStateShowHandler('authCodeEntryComponent');\n }\n else {\n this.setState({ lpoaIsNoLinked: false });\n this.setStateShowHandler('lpoaListComponent');\n }\n });\n });\n }\n\n setOpenConfirmModalRevokeBene = functionName => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: functionName\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: functionName\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({ \n hasPrecondition: false,\n openConfirmModalRevokeBene: true,\n post2FAAuthFunction: ''\n });\n }\n }\n\n setOpenConfirmModalUnlinkLpoa = functionName => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n { \n hasPrecondition: true,\n post2FAAuthFunction: functionName\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: functionName,\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({ \n hasPrecondition: false,\n openConfirmModalUnlinkLpoa: true,\n post2FAAuthFunction: ''\n });\n }\n }\n\n revokeAllHandler = () => {\n const allBeneIds = this.state.lpoa.BeneficiaryInfo.map(bene => bene.BeneficiaryId);\n this.setState({\n loading: true,\n openConfirmModalUnlinkLpoa: true,\n });\n this.props.deleteLpoa(allBeneIds)\n .then(() => {\n this.setState({ selectedBeneIds: [] });\n return this.getLpoaHandler();\n })\n .finally(() => this.setState({\n loading: false,\n openConfirmModalUnlinkLpoa: false,\n }));\n };\n\n revokeSelectedBenesHandler = () => {\n this.setState({\n loading: true,\n openConfirmModalRevokeBene: true,\n });\n this.props.deleteLpoa(this.state.selectedBeneIds)\n .then(() => {\n this.setState({ selectedBeneIds: [] });\n return this.getLpoaHandler();\n })\n .finally(() => this.setState({\n loading: false,\n openConfirmModalRevokeBene: false,\n }));\n };\n\n editSelectedBenesHandler = functionName => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: functionName\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: functionName\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setStateShowHandler('editLpoaComponent', true);\n this.setState({ hasPrecondition: false });\n }\n };\n\n // Methods to render components\n renderNavigationButton = (label, onClick, variant, disabled = false, color = 'primary') => {\n return (\n
    \n \n {label}\n \n
    \n );\n }\n\n authCodeEntryComponent = () => {\n const { text: { Lpoa } } = this.props;\n const { errorAuthCode, lpoa: { PoaCode }, learnMoreOpen } = this.state;\n\n return (\n
    \n \n
    \n \n {Lpoa.enter_auth_code_txt}\n
    \n \n
    \n
    \n {this.renderNavigationButton(Lpoa.btn_cancel, this.onLPOACancelHandler, 'text')}\n {this.renderNavigationButton(Lpoa.btn_next, this.onAuthCodeCheckHandler, 'contained')}\n
    \n
    \n
    \n
    \n
    \n {this.renderNavigationButton(Lpoa.btn_learn_more, () => this.setState({ learnMoreOpen: true }), 'outlined')}\n
    \n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n />\n
    \n\n );\n }\n\n confirmLpoaNameComponent = () => {\n const { text: { Lpoa } } = this.props;\n const { lpoa: { PoaName } } = this.state;\n return (\n \n
    \n {Lpoa.confirm_correct_lpoa_txt}\n
    \n {PoaName}\n
    \n
    \n {this.renderNavigationButton(Lpoa.btn_back, this.onBackToCodeEntryHandler, 'text')}\n {this.renderNavigationButton(Lpoa.btn_cancel, this.onLPOACancelHandler, 'text')}\n {this.renderNavigationButton(Lpoa.btn_confirm, this.onLPOAConfirmHandler, 'contained')}\n
    \n
    \n
    \n );\n };\n\n componentDidMount() {\n window.scrollTo(0, 0);\n\n // check if there are any linked benes if yes go to table otherwise to code entry\n this.setState({ loading: true });\n this.getLpoaHandler()\n .finally(() => this.setState({ loading: false }));\n }\n\n componentDidUpdate() {\n const multiStatus = protectAction(this.props.claims);\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n const functionName = this.state.post2FAAuthFunction;\n this[functionName](this.state.rememberedEvent);\n }\n }\n\n render() {\n const {\n loading,\n show,\n lpoa,\n selectedBeneIds,\n lpoaIsNoLinked,\n openConfirmModalRevokeBene,\n openConfirmModalUnlinkLpoa,\n } = this.state;\n\n return (\n
    \n {show.authCodeEntryComponent && this.authCodeEntryComponent()}\n {show.lpoaListComponent &&\n this.editSelectedBenesHandler('editSelectedBenesHandler')}\n disableRevoke={lpoaIsNoLinked}\n openConfirmModalRevokeBene={openConfirmModalRevokeBene}\n openConfirmModalUnlinkLpoa={openConfirmModalUnlinkLpoa}\n setOpenConfirmModalRevokeBene={() => this.setOpenConfirmModalRevokeBene('setOpenConfirmModalRevokeBene')}\n setOpenConfirmModalUnlinkLpoa={() => this.setOpenConfirmModalUnlinkLpoa('setOpenConfirmModalUnlinkLpoa')}\n cancelConfirmModalRevokeBene={() => this.setState({ openConfirmModalRevokeBene: false })}\n cancelConfirmModalUnlinkLpoa={() => this.setState({ openConfirmModalUnlinkLpoa: false })}\n />\n }\n {show.editLpoaComponent &&\n \n }\n {show.confirmLpoaNameComponent && this.confirmLpoaNameComponent()}\n
    \n\n );\n }\n}\n\nexport default withRouter(connect(select, {\n checkAuthCode,\n getLpoa,\n deleteLpoa,\n get2FAPrecondition,\n getRSAPrecondition\n})(LanguageHOC(Lpoa)));\n","import { GETrequest, PUTrequest } from 'utils/helpers/api_handler';\nimport {\n GIFTING_LIST_GET,\n GIFTING_CHANGE_NAME_VISIBILITY,\n GIFTING_CHANGE_STATUS,\n GET_GIFT_IMAGE,\n UPDATE_GIFT,\n} from './constants';\n\nexport function getGiftingList() {\n const payload = GETrequest('/gift?includeImage=false');\n return {\n type: GIFTING_LIST_GET,\n payload,\n };\n}\n\nexport function changeStatus(AccountId, IsActive) {\n const payload = PUTrequest('/gift/activation', { AccountId, IsActive });\n return {\n type: GIFTING_CHANGE_STATUS,\n payload,\n };\n}\n\nexport function getGiftImage(AccountId) {\n const payload = GETrequest(`/gift/image/${AccountId}`, { responseType: 'blob' });\n return {\n type: GET_GIFT_IMAGE,\n payload,\n };\n}\n\nexport function updateGift(gift, uploadPercentageCb = null) {\n const config = uploadPercentageCb\n ? {\n onUploadProgress: (progressEvent) => {\n uploadPercentageCb(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n }\n }\n : {};\n const payload = PUTrequest('/gift', gift, config);\n return {\n type: UPDATE_GIFT,\n payload,\n };\n}\n\nexport function changeNameVisibility(AccountId, HideLastName) {\n const payload = PUTrequest('/gift/hideLastName', { AccountId, HideLastName });\n return {\n type: GIFTING_CHANGE_NAME_VISIBILITY,\n payload,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n Typography,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function LearnMoreDrawer({ open, onClose, text: { Gifting }, currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift }) {\n\n const learnMore = () => (\n
    \n
    \n \n
    \n
    \n

    {Gifting.learn_more_title}

    \n
    \n {Gifting.text_learn_more}\n
    \n {Gifting.text_faq(currentYear, annualGiftExclusionAmount, maximumBeneficiaryDeposit, maximumBenficiaryAccountValueForGift).map(qa => {\n return (\n \n keyboard_arrow_down}\n aria-controls='learn-more'\n id='learn-more'\n >\n {qa.question}\n \n \n {qa.answer}\n \n \n );\n })}\n
    \n );\n\n return (\n \n {learnMore()}\n \n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n currentYear:PropTypes.string.isRequired,\n annualGiftExclusionAmount: PropTypes.string.isRequired,\n maximumBeneficiaryDeposit: PropTypes.string.isRequired,\n maximumBenficiaryAccountValueForGift: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Gifting: PropTypes.shape({\n learn_more_title: PropTypes.string,\n text_faq: PropTypes.func,\n text_learn_more: PropTypes.string,\n }),\n }),\n};\n\nexport default LanguageHOC(LearnMoreDrawer);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter, Link } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n Switch,\n Slide\n} from '@mui/material';\n\nimport {\n notificationShow,\n LoadingOverlay,\n CardAligned,\n currencyFormatter,\n Modal,\n} from '@frontend/common';\n\nimport {\n getGiftingList,\n changeStatus,\n updateGift,\n changeNameVisibility,\n} from '../actions';\n\nimport LearnMore from '../LearnMore';\nimport SkeletonLoader from 'utils/components/SkeletonLoader';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList.filter(account => account.permissions.GiftingEnabled),\n beneficiaryList: state.gifting.beneficiaryList,\n currentYear: state.static.environmentVars.ServerDateTime.substring(0, 4),\n annualGiftExclusionAmount: currencyFormatter(state.static.environmentVars.AnnualGiftExclusionAmount),\n maximumBeneficiaryDeposit: currencyFormatter(state.static.environmentVars.MaximumBeneficiaryDeposit),\n maximumBenficiaryAccountValueForGift: currencyFormatter(state.static.environmentVars.MaximumBenficiaryAccountValueForGift),\n});\n\nexport class GiftingDashboard extends Component {\n\n static propTypes = {\n getGiftingList: PropTypes.func.isRequired,\n updateGift: PropTypes.func.isRequired,\n accountList: PropTypes.array.isRequired,\n beneficiaryList: PropTypes.array.isRequired,\n changeStatus: PropTypes.func.isRequired,\n changeNameVisibility: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n currentYear: PropTypes.string.isRequired,\n annualGiftExclusionAmount: PropTypes.string.isRequired,\n maximumBeneficiaryDeposit: PropTypes.string.isRequired,\n maximumBenficiaryAccountValueForGift: PropTypes.string.isRequired,\n text: PropTypes.shape({\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func }),\n Gifting: PropTypes.shape({\n btn_learn_more: PropTypes.string,\n btn_manage: PropTypes.string,\n btn_ok: PropTypes.string,\n head_title: PropTypes.string,\n lbl_account: PropTypes.string,\n lbl_beneficiary: PropTypes.string,\n lbl_code: PropTypes.string,\n lbl_disabled: PropTypes.string,\n lbl_enabled: PropTypes.string,\n lbl_hide_last_name: PropTypes.string,\n lbl_hidden: PropTypes.string,\n lbl_inactive: PropTypes.string,\n lbl_shown: PropTypes.string,\n lbl_status: PropTypes.string,\n msg_no_beneficiary: PropTypes.string,\n text_max_aggregate: PropTypes.func,\n msg_save: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n loading: false,\n learnMoreOpen: false,\n shouldNavAway: true,\n loadingStatusChange: false,\n loadingHideLastNameChange: false,\n isAggregate: false,\n };\n\n statusChange(beneficiary) {\n const { updateGift, changeStatus, text: { Gifting } } = this.props;\n if (beneficiary.CanEnable === 0) {\n this.setState({\n loadingStatusChange: false,\n isAggregate: true\n });\n }\n else {\n this.setState({ loadingStatusChange: true });\n beneficiary.IsActive = beneficiary.IsActive ? 0 : 1;\n const hasNoGiftCodeYet = beneficiary.GiftCodeId === 0 && beneficiary.GiftCode === '';\n\n if (hasNoGiftCodeYet) {\n // no gift code yet gift needs to be created first\n updateGift(beneficiary)\n .then(() => {\n this.setState({ loadingStatusChange: false }, () => {\n notificationShow(Gifting.msg_save, 'success');\n });\n })\n .catch(() => {\n this.setState({ loadingStatusChange: false });\n });\n }\n else {\n // already has gift code just update gift status (no need for uploading the bene image again)\n changeStatus(beneficiary.AccountId, beneficiary.IsActive)\n .then(() => {\n this.setState({\n loadingStatusChange: false,\n }, () => {\n this.props.notificationShow(Gifting.msg_save, 'success');\n });\n })\n .catch(() => {\n this.setState({ loadingStatusChange: false });\n });\n }\n\n }\n }\n\n hideLastNameChange = beneficiary => e => {\n const { changeNameVisibility, text: { Gifting } } = this.props;\n const HideLastName = e.target.checked ? 1 : 0;\n\n this.setState({ loadingHideLastNameChange: true });\n\n changeNameVisibility(beneficiary.AccountId, HideLastName)\n .then(() => {\n this.setState({ loadingHideLastNameChange: false }, () => {\n this.props.notificationShow(Gifting.msg_save, 'success');\n });\n })\n .catch(() => {\n this.setState({ loadingHideLastNameChange: false });\n });\n }\n\n renderBeneficiaryRows() {\n const { beneficiaryList, text: { Gifting, AccountDetails } } = this.props;\n\n const results = beneficiaryList.length === 0\n ? Gifting.msg_no_beneficiary\n : beneficiaryList.map(bene => {\n const isActive = Boolean(bene.IsActive);\n const statusText = isActive ? Gifting.lbl_enabled : Gifting.lbl_disabled;\n const hideLastName = Boolean(bene.HideLastName);\n const nameStatusText = hideLastName ? Gifting.lbl_hidden : Gifting.lbl_shown;\n const giftCode = isActive ? bene.GiftCode : Gifting.lbl_inactive;\n const giftCodeColor = isActive ? '#000' : 'rgba(0,0,0,.30)';\n return (\n
    \n
    \n

    {Gifting.lbl_beneficiary}

    \n

    {`${bene.FirstName} ${bene.LastName}`}

    \n
    \n
    \n

    {Gifting.lbl_code}

    \n

    {giftCode}

    \n
    \n
    \n

    {Gifting.lbl_account}

    \n

    {bene.OptionName}

    \n

    \n {bene.AccountNumber}\n

    \n
    \n
    \n

    {Gifting.lbl_status}

    \n this.statusChange(bene)}\n value={isActive}\n inputProps={{ 'aria-label': 'secondary checkbox' }}\n />\n

    {statusText}

    \n
    \n
    \n

    {Gifting.lbl_hide_last_name}

    \n \n

    {nameStatusText}

    \n
    \n
    this.props.history.push(`${Gifting.nav_path}/${bene.AccountId}`)}>\n {Gifting.btn_manage}\n
    \n
    \n );\n });\n\n return (\n results\n );\n }\n\n renderSkeletonRows() {\n const { accountList, text: { Gifting, } } = this.props;\n \n return (\n accountList.map(account => ( \n
    \n
    \n

    {Gifting.lbl_beneficiary}

    \n \n
    \n
    \n

    {Gifting.lbl_code}

    \n \n
    \n
    \n

    {Gifting.lbl_account}

    \n \n
    \n
    \n

    {Gifting.lbl_status}

    \n \n
    \n
    \n

    {Gifting.lbl_hide_last_name}

    \n \n
    \n
    \n \n
    \n
    \n ))\n );\n }\n\n componentDidMount() {\n if (this.props.beneficiaryList.length === 0) {\n this.setState({ loading: true });\n this.props.getGiftingList()\n .then(() => {\n this.setState({ loading: false });\n });\n }\n }\n\n render() {\n const {\n loading,\n loadingStatusChange,\n learnMoreOpen,\n isAggregate,\n } = this.state;\n const { \n currentYear,\n annualGiftExclusionAmount,\n maximumBeneficiaryDeposit,\n maximumBenficiaryAccountValueForGift,\n text: { Gifting } \n } = this.props;\n\n return (\n
    \n
    {Gifting.head_title}
    \n \n\n {loading\n ? (\n this.renderSkeletonRows()\n ) : (\n \n {this.renderBeneficiaryRows()}\n \n )}\n\n \n
    \n this.setState({ learnMoreOpen: true })}\n >\n {Gifting.btn_learn_more}\n \n
    \n\n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n currentYear={currentYear}\n annualGiftExclusionAmount={annualGiftExclusionAmount}\n maximumBeneficiaryDeposit={maximumBeneficiaryDeposit}\n maximumBenficiaryAccountValueForGift={maximumBenficiaryAccountValueForGift}\n />\n\n this.shouldNavAway()}\n actionButtons={[\n {\n action: () => this.setState({ isAggregate: false }),\n label: Gifting.btn_ok,\n }\n ]}\n DialogProps={{ 'TransitionComponent': Transition }}\n \n >\n
    {Gifting.text_max_aggregate(maximumBeneficiaryDeposit)}
    \n \n\n
    \n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n getGiftingList,\n updateGift,\n changeStatus,\n changeNameVisibility,\n notificationShow\n})(LanguageHOC(GiftingDashboard)));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CircularProgress, Typography, Box } from '@mui/material';\n\nfunction CircularProgressWithLabel(props) {\n const { value } = props;\n return (\n \n \n \n {value ? `${Math.round(value)}%` : '0%'}\n \n \n );\n}\n\nCircularProgressWithLabel.propTypes = {\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n */\n value: PropTypes.number\n};\n\nexport default function CircularStatic(props) {\n const { show, progress, children } = props;\n if (show)\n return (\n <>\n \n
    \n \n \n {children}\n
    \n \n \n );\n else \n return (\n <>\n {children}\n \n );\n}\n\nCircularStatic.propTypes = {\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n */\n progress: PropTypes.number,\n show: PropTypes.bool,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { cloneDeep } from 'lodash';\n\nimport CircularProgress from '../CircularProgress';\n\nimport DropZone from 'react-dropzone';\n\nimport {\n Avatar,\n Button,\n TextField,\n Slide,\n Switch,\n} from '@mui/material';\n\nimport { Person, } from '@mui/icons-material';\n\nimport {\n InfoIcon,\n Modal,\n notificationShow,\n LoadingOverlay,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\nimport {\n changeNameVisibility,\n getGiftingList,\n getGiftImage,\n updateGift,\n} from '../actions';\n\nimport styles from './styles.module.scss';\n\nconst IMAGE_SIZE_LIMIT = 8000000; // 8MBs\n\nconst select = (state) => ({\n user: state.session.userDetails,\n giftingSiteUrl: state.static.environmentVars.GiftingSiteUrl,\n beneficiaryList: state.gifting.beneficiaryList,\n});\n\nexport class ManageGifting extends Component {\n\n static propTypes = {\n beneficiaryList: PropTypes.array.isRequired,\n changeNameVisibility: PropTypes.func.isRequired,\n getGiftingList: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getGiftImage: PropTypes.func.isRequired,\n updateGift: PropTypes.func.isRequired,\n giftingSiteUrl: PropTypes.string.isRequired,\n user: PropTypes.object.isRequired,\n giftCodeId: PropTypes.number,\n text: PropTypes.shape({\n Gifting: PropTypes.shape({\n nav_path: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_done: PropTypes.string,\n btn_email: PropTypes.string,\n btn_facebook: PropTypes.string,\n btn_manage_gift: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_remove: PropTypes.string,\n btn_twitter: PropTypes.string,\n lbl_account: PropTypes.string,\n lbl_account_owner: PropTypes.string,\n lbl_beneficiary: PropTypes.string,\n lbl_code: PropTypes.string,\n lbl_hidden: PropTypes.string,\n lbl_hide_last_name: PropTypes.string,\n lbl_manage_gift: PropTypes.string,\n lbl_message: PropTypes.string,\n lbl_no_history: PropTypes.string,\n lbl_history: PropTypes.string,\n lbl_page_views: PropTypes.string,\n lbl_shown: PropTypes.string,\n lbl_social: PropTypes.string,\n lbl_url: PropTypes.string,\n message: PropTypes.string,\n msg_email_subject: PropTypes.func,\n text_copy_link: PropTypes.string,\n text_default_email: PropTypes.func,\n text_enable_gifting: PropTypes.string,\n text_hide_last_name: PropTypes.string,\n msg_save: PropTypes.string,\n error_message_empty: PropTypes.string,\n error_message_allowed_chars: PropTypes.string,\n text_input_placeholder: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n giftUploading: false,\n imageDownloading: false,\n benesLoading: false,\n giftMessage: '',\n giftMessageError: '',\n originalGiftMessage: '',\n historyLoading: false,\n showSaveDialog: false,\n isValidateImage: false,\n validateImageMsg: '',\n beneficiary: {},\n imageChanged: false,\n progress: 0,\n hideLastName: false,\n };\n\n handleInput = name => e => {\n if (name === 'giftMessage') {\n this.setState({\n [name]: e.target.value\n }, () => this.validateGiftMessage()); // validate message when typing\n }\n else {\n this.setState({ [name]: e.target.value });\n }\n }\n\n hideLastNameChange = e => {\n const { changeNameVisibility, notificationShow, text: { Gifting } } = this.props;\n const { beneficiary } = this.state;\n const hideLastName = e.target.checked;\n\n changeNameVisibility(beneficiary.AccountId, hideLastName)\n .then(() => {\n this.setState({ hideLastName }, () => notificationShow(Gifting.msg_save, 'success'));\n });\n }\n\n renderHistory() {\n const { text: { Gifting } } = this.props;\n const { beneficiary: { Transactions } } = this.state;\n let results = [];\n if (Transactions === undefined || Transactions.length === 0) {\n results =
    {Gifting.lbl_no_history}
    ;\n }\n else {\n const trans = Transactions.map(trans => ({\n GiftId: trans.GiftId,\n GiftCodeId: trans.GiftCodeId,\n GifterId: trans.GifterId,\n PostDate: trans.PostDate,\n Name: `${trans.FirstName} ${trans.LastName}`,\n Amount: trans.Amount,\n Memo: trans.Memo,\n Status: trans.Status,\n }));\n results = (\n <>\n
    {Gifting.lbl_history}
    \n \n \n \n \n \n \n \n \n \n );\n }\n return results;\n }\n\n buildURL() {\n const { text: { Gifting } } = this.props;\n const { beneficiary } = this.state;\n const url = encodeURI(`${this.props.giftingSiteUrl}/${beneficiary.GiftCode}`); //giftingSiteUrl should never include '/' at the end\n let displayURL = '';\n if (beneficiary.IsActive) {\n displayURL = (\n \n window.open(url, '_blank')}\n className={styles.giftingLink}\n >{url}\n navigator.clipboard.writeText(url)\n .then(() => {\n this.props.notificationShow(Gifting.text_copy_link, 'success');\n })}\n >file_copy\n window.open(url, '_blank')}\n style={{ cursor: 'pointer', fontSize: '18px', textIndent: '5px' }}\n >launch\n \n );\n }\n else {\n displayURL = (
    {Gifting.text_enable_gifting}
    );\n }\n\n return displayURL;\n }\n\n dropFile(files) {\n const { beneficiary } = this.state;\n const file = files[0];\n\n if (file && (!file.type.includes('jpeg') && !file.type.includes('gif') && !file.type.includes('png'))) {\n this.setState({\n isValidateImage: true,\n validateImageMsg: 'Invalid image type. JPG/JPEG, GIF, and PNG are valid image types.'\n });\n }\n else if (file && file.size > IMAGE_SIZE_LIMIT) {\n this.setState({\n isValidateImage: true,\n validateImageMsg: 'Image cannot be larger than 8 megabytes.'\n });\n }\n else {\n const reader = new FileReader();\n reader.readAsArrayBuffer(files[0]);\n reader.onload = () => {\n const arrayBuffer = reader.result;\n this.setState({\n imageChanged: true,\n beneficiary: { ...beneficiary, Image: [...new Uint8Array(arrayBuffer)], HasImage: true },\n });\n };\n }\n }\n\n removeFile = () => {\n this.setState({\n beneficiary: {\n ...this.state.beneficiary,\n Image: null,\n HasImage: false,\n },\n imageChanged: true,\n });\n }\n\n convertByteArrayToImage(data) {\n const arrayBuffer = new Uint8Array(data);\n const blob = new Blob([arrayBuffer], { type: 'image/jpeg' });\n const urlCreator = window.URL || window.webkitURL;\n return urlCreator.createObjectURL(blob);\n }\n\n renderDropZone() {\n const { text: { Gifting } } = this.props;\n const { beneficiary, imageChanged } = this.state;\n let entireImage = '';\n if (beneficiary.Image) {\n const constructedImage = imageChanged ? this.convertByteArrayToImage(beneficiary.Image) : URL.createObjectURL(beneficiary.Image);\n entireImage = ();\n }\n else {\n entireImage = (\n \n \n \n );\n }\n\n return (\n
    \n this.dropFile(incomingFile)}>\n {({ getRootProps, getInputProps }) => (\n
    \n
    \n \n {entireImage}\n {!beneficiary.HasImage &&
    \n
    add_circle_outline
    \n
    ADD IMAGE
    \n
    }\n
    \n
    \n )}\n
    \n {beneficiary.HasImage &&\n
    \n \n {Gifting.btn_remove}\n \n
    \n }\n
    \n );\n }\n\n formChanged = () => {\n return this.state.imageChanged ||\n this.state.originalGiftMessage !== this.state.giftMessage;\n }\n\n shouldCancel = () => {\n const { text: { Gifting } } = this.props;\n if (this.formChanged() && this.validateGiftMessage()) {\n this.setState({ showSaveDialog: true });\n }\n else {\n // redirect to the gift dashboard\n this.props.history.push(Gifting.nav_path);\n }\n }\n\n showPercentageUploadProgress = (percentage) => {\n this.setState({ progress: percentage });\n }\n\n validateGiftMessage = () => {\n const { text: { Gifting } } = this.props;\n const { giftMessage } = this.state;\n const allowedCharsRegex = /^[a-zA-Z0-9 !?()$.,:;\\-='\\\\\\n\\r]+$/g;\n\n let giftMessageError = ''; // clear message error\n if (!giftMessage) {\n giftMessageError = Gifting.error_message_empty;\n }\n else if (!allowedCharsRegex.test(giftMessage)) {\n giftMessageError = Gifting.error_message_allowed_chars;\n }\n\n this.setState({ giftMessageError });\n return !giftMessageError;\n }\n\n saveChanges = () => {\n if (this.formChanged() && this.validateGiftMessage()) {\n const { imageChanged, beneficiary, giftMessage } = this.state;\n const { updateGift, notificationShow, text: { Gifting } } = this.props;\n\n beneficiary.IsActive = beneficiary.IsActive ? 1 : 0;\n beneficiary.GiftMessage = giftMessage;\n if (!imageChanged && beneficiary.HasImage) {\n // To not update unchanged image set it to null and leave HasImage true (per API rules)\n beneficiary.Image = null;\n }\n\n this.setState({ giftUploading: true });\n updateGift(beneficiary, this.showPercentageUploadProgress)\n .then(() => {\n notificationShow(Gifting.msg_save, 'success');\n // redirect to the gift dashboard\n this.props.history.push(Gifting.nav_path);\n })\n .catch(() => {\n this.setState({ giftUploading: false });\n });\n }\n }\n\n setBeneficiary = (beneficiary) => {\n this.setState({\n giftMessage: beneficiary.GiftMessage,\n imageChanged: false,\n beneficiary\n }, () => this.validateGiftMessage()); // in case there is an empty message from DB show error\n }\n\n getImageSetBene = (beneficiary) => {\n const { getGiftImage } = this.props;\n // load gift image if exists, we don't include images in the gift list\n const updatedBeneficiary = cloneDeep(beneficiary);\n if (beneficiary.HasImage) {\n this.setState({ imageDownloading: true });\n getGiftImage(beneficiary.AccountId)\n .then((response) => {\n updatedBeneficiary.Image = response.payload.data;\n this.setBeneficiary(updatedBeneficiary);\n })\n .finally(() => this.setState({ imageDownloading: false }));\n }\n else {\n this.setBeneficiary(updatedBeneficiary);\n }\n }\n\n initializeBeneDetails = (accountId) => {\n if (this.props.beneficiaryList.length === 0) {\n this.setState({ benesLoading: true });\n this.props.getGiftingList()\n .then(() => {\n const beneficiary = this.props.beneficiaryList.find(beneficiary => beneficiary.AccountId === accountId);\n this.getImageSetBene(beneficiary);\n this.setState({\n benesLoading: false,\n originalGiftMessage: beneficiary.GiftMessage,\n hideLastName: Boolean(beneficiary.HideLastName),\n });\n });\n }\n else {\n const beneficiary = this.props.beneficiaryList.find(beneficiary => beneficiary.AccountId === accountId);\n this.setState({\n originalGiftMessage: beneficiary.GiftMessage,\n hideLastName: Boolean(beneficiary.HideLastName),\n });\n this.getImageSetBene(beneficiary);\n }\n }\n\n componentDidMount() {\n const accountId = parseInt(this.props.match.params.accountId);\n this.initializeBeneDetails(accountId);\n }\n\n componentDidUpdate(prevProps) {\n const accountId = parseInt(this.props.match.params.accountId);\n if (parseInt(prevProps.match.params.accountId) !== accountId) {\n // account id got updated\n this.initializeBeneDetails(accountId);\n }\n }\n\n render() {\n const {\n text: {\n Gifting\n }\n } = this.props;\n const {\n giftUploading,\n imageDownloading,\n beneficiary,\n giftMessage,\n giftMessageError,\n showSaveDialog,\n isValidateImage,\n validateImageMsg,\n progress,\n hideLastName\n } = this.state;\n\n const beneName = `${beneficiary.FirstName} ${beneficiary.LastName}`;\n const giftCode = beneficiary.IsActive ? beneficiary.GiftCode : 'Inactive';\n const encodedURL = encodeURI(`${this.props.giftingSiteUrl}/${giftCode}`); //giftingSiteUrl does not include '/' at the end\n const nameStatusText = hideLastName ? Gifting.lbl_hidden : Gifting.lbl_shown;\n\n return (\n <>\n \n
    \n
    \n
    \n \n {Gifting.btn_cancel}\n \n \n {Gifting.btn_done}\n \n
    \n
    \n\n
    \n
    \n \n {this.renderDropZone()}\n \n
    \n
    \n

    {Gifting.message}

    \n \n

    {giftMessage.length}/2000

    \n
    \n
    \n\n
    \n
    \n

    {Gifting.lbl_beneficiary}

    \n

    {beneName}

    \n
    \n
    \n

    {Gifting.lbl_url}

    \n {this.buildURL()}\n
    \n
    \n\n
    \n
    \n

    {Gifting.lbl_account_owner}

    \n

    {this.props.user.name}

    \n
    \n
    \n

    {Gifting.lbl_hide_last_name}

    \n

    \n

    \n \n

    \n

    {nameStatusText}

    \n
    \n
    \n
    \n
    \n

    {Gifting.lbl_page_views}

    \n

    {beneficiary.PageViews || 0}

    \n

    {Gifting.lbl_code}

    \n

    {giftCode}

    \n
    \n
    \n\n
    \n
    \n

    {Gifting.lbl_account}

    \n

    {beneficiary.OptionName}

    \n

    {beneficiary.AccountNumber}

    \n
    \n
    \n

    {Gifting.lbl_social}

    \n

    \n window.open(`mailto:?subject=${Gifting.msg_email_subject(beneficiary.FirstName)}&body=${Gifting.text_default_email(beneficiary.FirstName, encodedURL)}`, '_blank')}\n disabled={!beneficiary.IsActive}\n style={{ color: '#0072CF', marginRight: '10px' }}\n >\n {Gifting.btn_email}\n \n window.open(`https://facebook.com/sharer/sharer.php?u=${encodedURL}`, '_blank')}\n disabled={!beneficiary.IsActive}\n style={{ color: '#0072CF', marginRight: '10px' }}\n >\n {Gifting.btn_facebook}\n \n window.open(`https://twitter.com/intent/tweet?text=${Gifting.text_default_email(beneficiary.FirstName, encodedURL)}`, '_blank')}\n disabled={!beneficiary.IsActive}\n style={{ color: '#0072CF' }}\n >\n {Gifting.btn_twitter}\n \n

    \n
    \n
    \n\n
    \n
    \n
    \n {this.renderHistory()}\n
    \n
    \n
    \n \n\n this.setState({ showSaveDialog: false })}\n DialogProps={{ 'TransitionComponent': Transition }}\n actionButtons={[\n {\n action: this.saveChanges,\n label: 'Yes'\n },\n {\n action: () => this.props.history.push(Gifting.nav_path), // redirect to the gift dashboard\n label: 'No',\n buttonType: 'text',\n },\n ]}\n >\n
    \n You have unsaved changes. Would you like to save your changes first?\n
    \n \n\n this.setState({ isValidateImage: false })}\n DialogProps={{ 'TransitionComponent': Transition }}\n actionButtons={[\n {\n action: () => this.setState({ isValidateImage: false, validateImageMsg: '' }),\n label: Gifting.btn_ok\n }\n ]}\n >\n
    {validateImageMsg}
    \n \n \n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n notificationShow,\n getGiftImage,\n updateGift,\n getGiftingList,\n changeNameVisibility,\n})(LanguageHOC(ManageGifting)));","/*\n*\n* PersistentDrawer Component\n*\n*/\nimport React, { Fragment, Children } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Divider,\n Icon,\n Drawer,\n List,\n ListItem,\n Tooltip,\n} from '@mui/material';\n\nimport {\n IconBtnTooltip,\n sizify,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport class LeftMenuItem extends React.Component {\n static displayName = 'LeftMenuItem';\n render() {\n return this.props.children;\n }\n}\n\nexport class LeftMenuItems extends React.Component {\n static displayName = 'LeftMenuItems';\n render() {\n return this.props.children;\n }\n}\n\nexport class Row extends React.Component {\n static displayName = 'Row';\n render() {\n return this.props.children;\n }\n}\n\nexport class RightDrawer extends React.Component {\n static displayName = 'RightDrawer';\n render() {\n return this.props.children;\n }\n}\n\nexport class PersistentDrawers extends React.Component {\n\n static propTypes = {\n drawerWidth: PropTypes.string.isRequired,\n disabled: PropTypes.bool.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number.isRequired,\n }).isRequired,\n marginTop: PropTypes.string,\n onDrawerToggle: PropTypes.func, // if parent wants to track toggle clicks\n toggleDrawerIndex: PropTypes.number, // if parent wants to trigger toggle drawer with this index\n preventOpeningDrawers: PropTypes.bool, // if parent wants to prevent any toggles but still keep track of any toggle clicks\n };\n\n state = {\n rowsOpen: [],\n };\n\n handleDrawerToggle = (drawerIndex) => {\n const { onDrawerToggle } = this.props;\n\n if (!this.props.preventOpeningDrawers) {\n this.toggleDrawerByIndex(drawerIndex);\n }\n\n onDrawerToggle && onDrawerToggle(drawerIndex);\n };\n\n toggleDrawerByIndex = drawerIndex => {\n const rowsOpen = this.state.rowsOpen.map(() => false); // first close all drawers\n rowsOpen[drawerIndex] = !this.state.rowsOpen[drawerIndex];\n this.setState({ rowsOpen });\n }\n\n isDrawerOpen = () => this.state.rowsOpen.reduce((rowOpen, isOneOpen) => rowOpen || isOneOpen, false);\n\n componentDidMount() {\n const rowsOpen = [];\n Children.toArray(this.props.children)\n .filter((child) => child)\n .filter((child) => child.type.displayName === 'Row')\n .map(() => rowsOpen.push(false));\n this.setState({ rowsOpen });\n }\n\n componentDidUpdate(prevProps) {\n const { toggleDrawerIndex } = this.props;\n if (toggleDrawerIndex && toggleDrawerIndex > -1 && prevProps.toggleDrawerIndex !== toggleDrawerIndex) {\n this.toggleDrawerByIndex(toggleDrawerIndex);\n }\n }\n\n render() {\n const { size, drawerWidth, disabled, marginTop } = this.props;\n\n let isDrawerFullWidth = false;\n let drawerWidthCalculated = drawerWidth;\n if (size.windowWidth < 650) {\n drawerWidthCalculated = '100%';\n isDrawerFullWidth = true;\n }\n const mainMarginRight = this.isDrawerOpen() ? drawerWidthCalculated : '0px';\n\n const rows = Children.toArray(this.props.children)\n .filter((child) => child)\n .filter((child) => child.type.displayName === 'Row');\n\n const leftMenuItems = rows\n .map((row) => row.props.children\n .filter((child) => child)\n .find(child => child.type.displayName === 'LeftMenuItems'));\n\n const drawers = rows\n .map((row) => row.props.children\n .filter((child) => child)\n .find((child) => child.type.displayName === 'RightDrawer'));\n\n return (\n
    \n \n \n {\n leftMenuItems.map((items, itemsIndex) => {\n return (\n \n this.handleDrawerToggle(itemsIndex)}\n className={styles.row}\n disableGutters={isDrawerFullWidth}\n disabled={disabled}\n >\n
    \n {items.props.children\n .filter(child => child.type.displayName === 'LeftMenuItem')\n .map((leftMenuItem, itemIndex) => {\n const firstColStyle = itemIndex === 0 ? styles.title : '';\n return (\n
    \n {leftMenuItem.props.children}\n
    \n );\n })\n }\n
    \n\n {
    \n {this.state.rowsOpen[itemsIndex] ? 'keyboard_arrow_left' : 'keyboard_arrow_right'}\n
    }\n \n \n
    \n );\n })\n }\n
    \n \n
    \n
    \n {\n drawers.map((rightDrawer, index) => (\n \n \n
    \n {isDrawerFullWidth &&\n
    \n this.handleDrawerToggle(index)}\n title='Close'\n />\n
    \n }\n
    \n {rightDrawer.props.title}\n
    \n
    \n this.handleDrawerToggle(index)}\n icon='close'\n />\n
    \n
    \n \n
    \n {rightDrawer}\n
    \n \n
    \n ))}\n
    \n
    \n
    \n );\n }\n}\n\nexport default sizify(PersistentDrawers);","/*\n*\n* AddressCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { CHANGE_ADDRESS } from '../constants';\nimport { GETaddress } from 'utils/helpers/api_handler';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport {\n AddressTextFields,\n CardButtons,\n CardTitle,\n InfoIcon,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport {\n Button,\n Tab,\n Tabs,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\n\nimport { changeAddress, deleteAddress } from '../actions';\n\nimport styles from './styles.module.scss';\n\nconst muiStyles = {\n tab: {\n minWidth: '20px', // a number of your choice\n }\n};\n\nconst select = state => ({\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\n US_STATES: state.static.usStates\n});\n\nexport class AddressCard extends React.Component {\n static propTypes = {\n addresses: PropTypes.shape({\n Physical: PropTypes.object,\n Mailing: PropTypes.object,\n Other: PropTypes.object,\n }).isRequired,\n hasTitle: PropTypes.bool,\n ADDRESS_TYPES: PropTypes.shape({\n Physical: PropTypes.string,\n Mailing: PropTypes.string,\n Other: PropTypes.string\n }).isRequired,\n changeAddress: PropTypes.func.isRequired,\n deleteAddress: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n text: PropTypes.shape({\n AddressCard: PropTypes.shape({\n btn_delete: PropTypes.func,\n btn_update: PropTypes.func,\n err_postal_code_length: PropTypes.string,\n err_required: PropTypes.string,\n err_smarty_streets: PropTypes.string,\n err_street1_max_length: PropTypes.string,\n head_title: PropTypes.string,\n msg_address_deleted: PropTypes.string,\n msg_address_updated: PropTypes.string,\n text_intl_address: PropTypes.string,\n }),\n }).isRequired,\n residentCheck: PropTypes.func.isRequired,\n US_STATES: PropTypes.array.isRequired,\n callbackOnAddressChange: PropTypes.func,\n classes: PropTypes.object,\n };\n\n static defaultProps = {\n callbackOnAddressChange: null,\n hasTitle: true,\n };\n\n state = {\n addressType: this.props.ADDRESS_TYPES.Mailing,\n isDeleting: false,\n isSaving: false,\n errors: {\n Mailing: {},\n Physical: {},\n Other: {},\n },\n addresses: {\n Mailing: this.props.addresses.Mailing,\n Physical: this.props.addresses.Physical,\n Other: this.props.addresses.Other,\n },\n addressSuggestions: [],\n autocompleteText: {\n Mailing: this.props.addresses.Mailing.StreetAddress1,\n Physical: this.props.addresses.Physical.StreetAddress1,\n Other: this.props.addresses.Other.StreetAddress1,\n },\n };\n\n areErrors(addressType, errors) {\n // we need to include inner loop for input fields\n const anyErrors = Object.values(errors[addressType]).filter(err => err && Object.values(err).filter(val => val).length !== 0);\n return anyErrors.length === 0;\n }\n\n errorGet = (input) => {\n const error = this.state.errors[this.state.addressType] && this.state.errors[this.state.addressType][input];\n return error ? error : '';\n }\n\n verifyAddress = () => {\n const { addressType, addresses, errors } = this.state;\n const { ADDRESS_TYPES } = this.props;\n const { err_postal_code_length, err_required, err_street1_max_length } = this.props.text.AddressCard;\n const postalCodeRegex = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)|(^\\d{9}$)|(^\\d{5} \\d{4}$)/;\n\n // reset only this address type error\n const updatedErrors = { ...errors, [addressType]: {} };\n\n // verify only mailing address at this time\n if (addressType === ADDRESS_TYPES.Mailing) {\n if (!addresses[addressType].StreetAddress1) {\n updatedErrors[addressType].StreetAddress1 = err_required;\n }\n if (!addresses[addressType].State) {\n updatedErrors[addressType].State = err_required;\n }\n if (!addresses[addressType].PostalCode.match(postalCodeRegex)) {\n updatedErrors[addressType].PostalCode = err_postal_code_length;\n }\n if (addresses[addressType].StreetAddress1.length > 40) {\n updatedErrors[addressType].StreetAddress1 = err_street1_max_length;\n }\n if (addresses[addressType].StreetAddress2.length > 40) {\n updatedErrors[addressType].StreetAddress2 = err_street1_max_length;\n }\n updatedErrors[addressType].City = validator.cityValidator(addresses[addressType].City);\n }\n\n this.setState({ errors: updatedErrors });\n\n return this.areErrors(addressType, updatedErrors);\n }\n\n addressTabChange = (e, value) => {\n this.setState({ addressType: value });\n };\n\n onInputChange = (inputName, event) => {\n const { addressType } = this.state;\n this.setState({\n errors: {\n ...this.state.errors,\n [addressType]: {}\n },\n addresses: { // update only this address type and its specific field\n ...this.state.addresses,\n [addressType]: {\n ...this.state.addresses[addressType],\n [inputName]: event.target.value\n }\n },\n }, () => this.onBlur(inputName));\n\n }\n\n uppercaseInput = (inputName) => {\n const { addresses, addressType } = this.state;\n const uppercasedAddresses = { ...addresses };\n uppercasedAddresses[addressType][inputName] = uppercasedAddresses[addressType]\n && uppercasedAddresses[addressType][inputName]\n && uppercasedAddresses[addressType][inputName].toUpperCase();\n this.setState({ addresses: uppercasedAddresses });\n }\n\n onBlur = (inputName) => {\n if (inputName) {\n this.uppercaseInput(inputName);\n this.verifyAddress();\n }\n }\n\n mapApiErrorsToFormErrors = (apiErrors) => {\n const { addressType, errors } = this.state;\n const updatedErrors = { ...errors };\n\n if (apiErrors.length > 0) {\n // this is assuming that api Field properties would not change!\n apiErrors.forEach(apiError => updatedErrors[addressType][apiError.Field] = apiError.Message);\n }\n\n this.setState({ errors: updatedErrors });\n }\n\n addressDelete = (e) => {\n e.preventDefault();\n const { addressType, addresses } = this.state;\n this.setState({ isDeleting: true });\n\n this.props.deleteAddress(addresses[addressType].AddressId, addressType)\n .then(() => {\n // on success call callback if passed\n if (this.props.callbackOnAddressChange)\n this.props.callbackOnAddressChange();\n\n this.setState({\n isDeleting: false,\n addresses: {\n Mailing: this.props.addresses.Mailing,\n Physical: this.props.addresses.Physical,\n Other: this.props.addresses.Other,\n },\n autocompleteText: {\n Mailing: this.props.addresses.Mailing.StreetAddress1,\n Other: this.props.addresses.Other.StreetAddress1,\n Physical: this.props.addresses.Physical.StreetAddress1,\n },\n });\n this.props.notificationShow(this.props.text.AddressCard.msg_address_deleted, 'success');\n })\n .catch((response) => this.setState({ isDeleting: false }, () => this.mapApiErrorsToFormErrors(response.payload.data)));\n }\n\n addressUpdate = (e) => {\n e.preventDefault();\n const { addressType, addresses } = this.state;\n if (this.verifyAddress()) {\n this.setState({ isSaving: true });\n this.props.changeAddress({ ...addresses[addressType], Type: addressType })\n .then(() => {\n // on success call callback if passed\n if (this.props.callbackOnAddressChange)\n this.props.callbackOnAddressChange();\n\n this.setState({\n isSaving: false,\n addresses: {\n Mailing: this.props.addresses.Mailing,\n Physical: this.props.addresses.Physical,\n Other: this.props.addresses.Other,\n },\n autocompleteText: {\n Mailing: this.props.addresses.Mailing.StreetAddress1,\n Physical: this.props.addresses.Physical.StreetAddress1,\n Other: this.props.addresses.Other.StreetAddress1,\n }\n });\n this.props.notificationShow(this.props.text.AddressCard.msg_address_updated, 'success');\n })\n .then(() => this.props.residentCheck())\n .catch((response) => this.setState({ isSaving: false }, () => this.mapApiErrorsToFormErrors(response.payload.data)));\n }\n }\n\n updateButtonIsDisabled = () => {\n const { addressType, isDeleting, isSaving, addresses, errors } = this.state;\n\n return isDeleting\n || isSaving\n || isEqual(addresses[addressType], this.props.addresses[addressType])\n || !this.areErrors(addressType, errors);\n }\n\n deleteButtonDisabled = () => {\n const { addressType, isDeleting, isSaving, addresses } = this.state;\n return isDeleting\n || isSaving\n || Object.keys(addresses[addressType]).every(key => addresses[addressType][key] === '')\n || Object.keys(this.props.addresses[addressType]).every(key => this.props.addresses[addressType][key] === '');\n }\n\n buttonsCompose = () => {\n const { addressType, isDeleting, isSaving, addresses } = this.state;\n const isReadOnlyAddress = addresses[addressType].Country !== 'US' && addresses[addressType].Country !== '';\n\n if (!isReadOnlyAddress) {\n return [\n addressType !== this.props.ADDRESS_TYPES.Mailing &&\n \n \n {this.props.text.AddressCard.btn_delete(addressType)}\n \n ,\n \n \n {this.props.text.AddressCard.btn_update(addressType)}\n \n \n ];\n }\n return [];\n }\n\n autocompleteSuggestionsGet = event => {\n const { addressType } = this.state;\n\n this.setState({\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: event.target.value\n },\n addresses: {\n ...this.state.addresses,\n [addressType]: {\n ...this.state.addresses[addressType],\n StreetAddress1: event.target.value\n }\n }\n }, () => this.onBlur('StreetAddress1')); // TODO this call to onBlur() is a temporary workaround until the MUI Autocomplete Textfield can accept input props without erroring\n\n if (event.target.value.trim()) { // Only make a request if there is text. Trims out leading spaces to avoid a Smarty Streets freakout\n return GETaddress(event.target.value)\n .then(res => {\n if (res.data.suggestions !== null) {\n this.setState({\n addressSuggestions: res.data.suggestions\n });\n }\n })\n .catch(res => {\n if (res !== 'short-criteria') {\n this.props.notificationShow(this.props.text.AddressCard.err_smarty_streets, 'error');\n }\n this.setState({ addressSuggestions: [] });\n });\n }\n }\n\n onAutocompleteAddressSelect = (event, selection) => {\n const { addressType } = this.state;\n\n if (!selection) { // if user clears input\n this.setState({\n autocompleteText: {\n ...this.state[addressType],\n [addressType]: '',\n },\n addressSuggestions: [],\n addresses: {\n ...this.state.addresses,\n [addressType]: {\n ...this.state.addresses[addressType],\n StreetAddress1: '',\n }\n }\n });\n }\n else if (!Object.prototype.hasOwnProperty.call(selection, 'street_line')) { // if user sends too many requests in a short period, autocomplete stops sending suggestions back, so just set input to state\n this.setState({\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: selection\n },\n addresses: {\n ...this.state.addresses,\n [addressType]: {\n ...this.state.addresses[addressType],\n StreetAddress1: selection,\n }\n }\n });\n }\n else { // if all is working as expected and selection is valid SmartyStreets object\n this.setState({\n autocompleteText: {\n ...this.state.autocompleteText,\n [addressType]: selection.street_line.toUpperCase()\n },\n addresses: {\n ...this.state.addresses,\n [addressType]: {\n ...this.state.addresses[addressType],\n City: selection.city.toUpperCase(),\n PostalCode: selection.zipcode,\n State: selection.state.toUpperCase(),\n StreetAddress1: selection.street_line.toUpperCase(),\n StreetAddress2: selection.secondary.toUpperCase()\n }\n }\n });\n }\n }\n\n componentDidUpdate() {\n const { addresses } = this.state;\n if (!isEqual(addresses, this.props.addresses)) {\n this.props.displayUnsavedChangesPrompt(CHANGE_ADDRESS, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(CHANGE_ADDRESS, false);\n }\n }\n\n render() {\n const { addressType, addresses, addressSuggestions, autocompleteText } = this.state;\n const { ADDRESS_TYPES, hasTitle, text: { AddressCard: { head_title, text_intl_address } } } = this.props;\n const isReadOnlyAddress = addresses[addressType].Country !== 'US' && addresses[addressType].Country !== '';\n\n return (\n \n
    \n
    \n {hasTitle &&\n \n
    \n {head_title}\n \n
    \n
    \n }\n
    \n \n \n \n \n \n\n
    \n this.onBlur(e.target.name) }}\n onAutocompleteAddressSelect={this.onAutocompleteAddressSelect}\n onInputChange={this.onInputChange}\n usStates={this.props.US_STATES}\n />\n
    \n
    \n
    \n\n \n {this.buttonsCompose()}\n \n
    \n
    \n );\n }\n}\n\nexport default withStyles(muiStyles)(connect(select, { changeAddress, deleteAddress, notificationShow })(LanguageHOC(AddressCard)));\n","/*\n*\n* EmailCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { camelCase, isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n CardButtons,\n CardTitle,\n InfoIcon,\n LoadingOverlay,\n Modal,\n notificationShow,\n} from '@frontend/common';\nimport { emailValidator } from 'utils/helpers/form_validation';\nimport {\n Button,\n TextField\n} from '@mui/material';\nimport { changeEmail } from '../actions';\nimport {\n clearStore,\n userLogout\n} from 'components/AppRoot/Navigation/actions';\nimport {\n CHANGE_EMAIL\n} from '../constants';\n\nimport styles from './styles.module.scss';\n\n\nconst select = state => ({\n isIpOnly_AccessRole: state.session.isIpOnly_AccessRole,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\nexport class EmailCard extends React.Component {\n static propTypes = {\n emailAddress: PropTypes.string.isRequired,\n changeEmail: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n isIpOnly_AccessRole: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n hasTitle: PropTypes.bool,\n text: PropTypes.shape({\n EmailCard: PropTypes.shape({\n btn_cancel_change_email: PropTypes.string,\n btn_change_email: PropTypes.string,\n btn_confirm_change_email: PropTypes.string,\n err_different_email: PropTypes.string,\n err_emails_must_match: PropTypes.string,\n err_required: PropTypes.string,\n err_valid_email: PropTypes.string,\n head_title: PropTypes.string,\n head_verify_email: PropTypes.string,\n lbl_current_email: PropTypes.string,\n lbl_new_email: PropTypes.string,\n lbl_new_email_confirm: PropTypes.string,\n msg_check_email_to_verify: PropTypes.func,\n msg_unsaved_changes: PropTypes.string,\n text_ip_email_visible_to_ao: PropTypes.string,\n text_verify_email1: PropTypes.string,\n text_verify_email2: PropTypes.string,\n text_verify_email3: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n hasTitle: true,\n };\n\n state = {\n apiErrors: [],\n changeEmailModalOpen: false,\n emailChangeConfirmed: false,\n formErrors: [],\n isSaving: false,\n newEmail: '',\n newEmailConfirm: '',\n };\n\n emailConfirm = () => {\n this.setState({ emailChangeConfirmed: true }, () => this.emailChange());\n }\n\n emailChange = event => {\n event && event.preventDefault();\n const { emailChangeConfirmed, newEmail } = this.state;\n\n if (!this.formValidate()) {\n return;\n }\n else if (!emailChangeConfirmed) {\n this.setState({ changeEmailModalOpen: true });\n }\n else {\n this.setState({ isSaving: true });\n this.props.changeEmail(newEmail)\n .then(() => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.clearStore();\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n this.props.notificationShow(this.props.text.EmailCard.msg_check_email_to_verify(this.props.supportNumber), 'warning');\n });\n })\n .catch(response => {\n this.setState({\n apiErrors: response.payload.data,\n changeEmailModalOpen: false,\n emailChangeConfirmed: false,\n isSaving: false\n }, () => this.formValidate());\n });\n }\n }\n\n errorGet = name => {\n const error = this.state.formErrors.find(error => error.name === name);\n return error ? error.message : '';\n }\n\n formValidate = () => {\n const { apiErrors, newEmail, newEmailConfirm } = this.state;\n const { err_different_email, err_emails_must_match, err_required } = this.props.text.EmailCard;\n const formErrors = [];\n\n if (!newEmail) {\n formErrors.push({\n name: 'newEmail',\n message: err_required\n });\n }\n\n if (!newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_required\n });\n }\n\n if (newEmail === this.props.emailAddress) {\n formErrors.push({\n name: 'newEmail',\n message: err_different_email\n });\n }\n\n if (newEmail) {\n const emailError = emailValidator(newEmail);\n emailError && formErrors.push({\n name: 'newEmail',\n message: emailError\n });\n }\n\n if (newEmail !== newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_emails_must_match\n });\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'Email') {\n formErrors.push({\n name: 'newEmail',\n message: error.Message\n });\n }\n else {\n formErrors.push({\n name: camelCase(error.Field),\n message: error.Message\n });\n }\n });\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return formErrors.length === 0;\n }\n\n onInputChange = (event, name) => {\n this.setState({\n [name]: event.target.value,\n formErrors: this.state.formErrors.filter(error => error.name !== name)\n });\n }\n\n updateButtonIsDisabled = () => {\n const { isSaving, newEmail } = this.state;\n return isSaving || !newEmail;\n }\n\n componentDidUpdate() {\n const { newEmail } = this.state;\n if (newEmail !== '' && !isEqual(newEmail, this.props.emailAddress)) {\n this.props.displayUnsavedChangesPrompt(CHANGE_EMAIL, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(CHANGE_EMAIL, false);\n }\n }\n\n render() {\n const { emailAddress, text: { EmailCard }, isIpOnly_AccessRole, hasTitle } = this.props;\n const { isSaving, newEmail, newEmailConfirm, changeEmailModalOpen } = this.state;\n\n return (\n \n
    \n
    \n {hasTitle &&\n \n
    \n {EmailCard.head_title}\n {isIpOnly_AccessRole && }\n
    \n
    \n }\n
    \n \n this.onInputChange(e, 'newEmail')}\n value={newEmail}\n />\n this.onInputChange(e, 'newEmailConfirm')}\n value={newEmailConfirm}\n />\n
    \n\n
    \n \n \n \n {EmailCard.btn_change_email}\n \n \n \n
    \n\n this.emailConfirm(),\n buttonType: 'contained',\n label: EmailCard.btn_confirm_change_email,\n loading: isSaving,\n },\n ]}\n DialogProps={{ 'aria-labelledby': EmailCard.head_verify_email }}\n key='confirmEmailModal'\n loading={isSaving}\n onCloseModal={() => this.setState({ changeEmailModalOpen: false })}\n show={changeEmailModalOpen}\n title={EmailCard.head_verify_email}\n includeLeftCancelBtn\n >\n
    \n

    {EmailCard.text_verify_email1}

    \n

    {newEmail}

    \n

    {EmailCard.text_verify_email2}

    \n

    {EmailCard.text_verify_email3}

    \n
    \n \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n changeEmail,\n clearStore,\n notificationShow,\n userLogout,\n})(LanguageHOC(EmailCard));\n","/*\n*\n* PasswordCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { camelCase } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n PASSWORD_CHANGE,\n} from '../constants';\n\nimport {\n CardButtons,\n CardTitle,\n PasswordInput,\n PasswordRequirements,\n notificationShow,\n} from '@frontend/common';\n\nimport {\n Button,\n TextField,\n} from '@mui/material';\n\nimport { passwordRequirementsGet } from 'components/AppRoot/StaticResources/actions';\nimport { passwordChange } from '../actions';\n\nimport parentStyles from '../styles.module.scss';\n\nconst select = (state) => ({\n passwordRequirements: state.static.passwordRequirements,\n});\n\nexport class PasswordCard extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n passwordChange: PropTypes.func.isRequired,\n passwordRequirements: PropTypes.array.isRequired,\n passwordRequirementsGet: PropTypes.func.isRequired,\n hasTitle: PropTypes.bool,\n text: PropTypes.shape({\n PasswordCard: PropTypes.shape({\n btn_change_password: PropTypes.string,\n err_confirm_password: PropTypes.string,\n err_password_criteria: PropTypes.string,\n err_required: PropTypes.string,\n head_title: PropTypes.string,\n lbl_confirm_password: PropTypes.string,\n lbl_current_password: PropTypes.string,\n lbl_new_password: PropTypes.string,\n msg_password_updated: PropTypes.string,\n })\n }).isRequired,\n };\n\n static defaultProps = {\n hasTitle: true,\n };\n\n state = {\n currentPassword: '',\n inputErrors: [],\n apiErrors: [],\n isLoading: false,\n newPassword: '',\n newPasswordConfirm: '',\n passwordIsValid: false,\n };\n\n errorGet(input) {\n const error = this.state.inputErrors.find((error) => error.input === input);\n return error ? error.message : '';\n }\n\n updateButtonIsDisabled = () => {\n return !this.state.newPassword && !this.state.newPasswordConfirm;\n }\n\n inputChange(input, value) {\n this.setState({\n [input]: value,\n inputErrors: this.state.inputErrors.filter(error => error.input !== input),\n });\n }\n\n passwordInputsValidate() {\n const { PasswordCard: { err_confirm_password, err_password_criteria, err_required } } = this.props.text;\n const errors = [];\n const { currentPassword, newPassword, newPasswordConfirm, passwordIsValid, inputErrors, apiErrors } = this.state;\n\n if (!currentPassword) {\n errors.push({\n input: 'currentPassword',\n message: err_required,\n });\n }\n\n if (!newPassword) {\n errors.push({\n input: 'newPassword',\n message: err_required,\n });\n }\n\n if (!newPasswordConfirm) {\n errors.push({\n input: 'newPasswordConfirm',\n message: err_required,\n });\n }\n\n if (newPassword && !passwordIsValid) {\n errors.push({\n input: 'newPassword',\n message: err_password_criteria,\n });\n }\n\n if (newPassword && newPasswordConfirm && newPassword !== newPasswordConfirm) {\n errors.push({\n input: 'newPasswordConfirm',\n message: err_confirm_password,\n });\n }\n\n if (apiErrors.length > 0) {\n // this is assuming that api Field properties would not change!\n apiErrors.forEach(error => {\n if (error.Field === 'OldPassword') {\n errors.push({\n input: 'currentPassword',\n message: error.Message\n });\n }\n else if (error.Field === 'newpassword1') {\n errors.push({\n input: 'newPassword',\n message: error.Message\n });\n }\n else if (error.Field === 'newpassword2') {\n errors.push({\n input: 'newPasswordConfirm',\n message: error.Message\n });\n }\n else {\n errors.push({\n input: camelCase(error.Field),\n message: error.Message\n });\n }\n });\n }\n\n this.setState({\n inputErrors: [...inputErrors, ...errors],\n apiErrors: []\n });\n\n return errors.length === 0;\n }\n\n passwordUpdate = (e) => {\n e.preventDefault();\n if (this.passwordInputsValidate()) {\n this.setState({ isLoading: true });\n this.props.passwordChange(this.state.currentPassword, this.state.newPassword, this.state.newPasswordConfirm)\n .then(() => {\n this.props.notificationShow(this.props.text.PasswordCard.msg_password_updated, 'success');\n this.setState({\n isLoading: false,\n currentPassword: '',\n newPassword: '',\n newPasswordConfirm: '',\n });\n })\n .catch(response => this.setState({\n apiErrors: response.payload.data,\n isLoading: false\n }, () => this.passwordInputsValidate()));\n }\n };\n\n handleMouseDownPassword = event => {\n event.preventDefault();\n };\n\n componentDidMount() {\n if (this.props.passwordRequirements.length === 0) {\n this.setState({ isLoading: true });\n this.props.passwordRequirementsGet()\n .then(() => this.setState({ isLoading: false }))\n .catch(() => this.setState({ isLoading: false }));\n }\n }\n\n componentDidUpdate() {\n if (this.state.newPassword || this.state.newPasswordConfirm) {\n this.props.displayUnsavedChangesPrompt(PASSWORD_CHANGE, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(PASSWORD_CHANGE, false);\n }\n }\n\n render() {\n const {\n currentPassword,\n isLoading,\n newPassword,\n newPasswordConfirm,\n } = this.state;\n\n const {\n text: {\n PasswordCard: {\n btn_change_password,\n head_title,\n lbl_confirm_password,\n lbl_current_password,\n lbl_new_password,\n }\n },\n hasTitle,\n } = this.props;\n\n return (\n
    \n
    \n {hasTitle && {head_title}}\n
    \n \n this.inputChange('currentPassword', e.target.value)}\n errorText={this.errorGet('currentPassword')}\n autoComplete='current-password'\n disabled={isLoading}\n fullWidth\n variant='standard'\n />\n this.inputChange('newPassword', e.target.value)}\n errorText={this.errorGet('newPassword')}\n autoComplete='new-password'\n disabled={isLoading}\n fullWidth\n variant='standard'\n />\n this.inputChange('newPasswordConfirm', e.target.value)}\n errorText={this.errorGet('newPasswordConfirm')}\n autoComplete='new-password'\n disabled={isLoading}\n fullWidth\n variant='standard'\n />\n
    \n this.setState({ passwordIsValid })}\n />\n
    \n
    \n
    \n \n \n {btn_change_password}\n \n \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n notificationShow,\n passwordRequirementsGet,\n passwordChange,\n})(LanguageHOC(PasswordCard));","/*\n*\n* PhoneNumbersCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep, isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n CHANGE_PHONE_NUMBERS,\n} from '../constants';\n\nimport {\n CardButtons,\n notificationShow,\n PhoneNumberInput,\n CardTitle,\n} from '@frontend/common';\n\nimport {\n Button,\n} from '@mui/material';\n\nimport { changePhoneNumbers } from '../actions';\n\nimport styles from './styles.module.scss';\n\nconst OTHER = 'OTHER';\n\nexport class PhoneNumbersCard extends React.Component {\n static propTypes = {\n changePhoneNumbers: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n phoneNumbers: PropTypes.shape({\n Cell: PropTypes.object,\n Fax: PropTypes.object,\n Home: PropTypes.object,\n Other: PropTypes.object,\n Work: PropTypes.object,\n }),\n hasTitle: PropTypes.bool,\n text: PropTypes.shape({\n PhoneNumbersCard: PropTypes.shape({\n btn_change_phone: PropTypes.string,\n head_title: PropTypes.string,\n lbl_cell: PropTypes.string,\n lbl_fax: PropTypes.string,\n lbl_home: PropTypes.string,\n lbl_other: PropTypes.string,\n lbl_work: PropTypes.string,\n msg_phone_numbers_updated: PropTypes.string,\n msg_phone_number_too_short: PropTypes.string,\n msg_warning_changing_phone: PropTypes.string,\n })\n }).isRequired,\n };\n\n static defaultProps = {\n hasTitle: true,\n };\n\n state = {\n isSaving: false,\n phoneNumbers: this.props.phoneNumbers,\n phoneErrors: {},\n };\n\n mapApiErrorsToFormErrors = apiErrors => {\n // we don't have any inline error handling so if any api errors with a field just show toasts\n if (apiErrors && apiErrors.length > 0) {\n apiErrors.forEach((apiError) => apiError.Field && this.props.notificationShow(apiError.Message, 'error'));\n }\n };\n\n getPhoneNumberError = (phoneNumber) => {\n const phoneMatch = phoneNumber.Number && phoneNumber.Number.match(/\\d/g);\n\n if (phoneMatch && phoneMatch.length !== 10) {\n return this.props.text.PhoneNumbersCard.msg_phone_number_too_short;\n }\n return '';\n }\n\n verifyPhoneNumbers = () => {\n // validates only on submit and blur\n const phoneErrors = {};\n const { phoneNumbers } = this.state;\n\n phoneErrors.Cell = this.getPhoneNumberError(phoneNumbers.Cell);\n phoneErrors.Home = this.getPhoneNumberError(phoneNumbers.Home);\n phoneErrors.Work = this.getPhoneNumberError(phoneNumbers.Work);\n phoneErrors.Other = this.getPhoneNumberError(phoneNumbers.Other);\n phoneErrors.Fax = this.getPhoneNumberError(phoneNumbers.Fax);\n\n this.setState({ phoneErrors });\n\n return Object.values(phoneErrors).filter(err => err !== '').length === 0;\n }\n\n phoneNumbersChange = (e) => {\n e.preventDefault();\n\n if (this.verifyPhoneNumbers()) {\n this.setState({ isSaving: true });\n const formattedPhoneNumbers = Object.keys(this.state.phoneNumbers).map(num => ({ Number: this.state.phoneNumbers[num].Number, Type: this.state.phoneNumbers[num].Type }));\n\n this.props.changePhoneNumbers(formattedPhoneNumbers)\n .then(() => {\n this.setState({\n isSaving: false,\n phoneNumbers: this.props.phoneNumbers\n });\n this.props.notificationShow(this.props.text.PhoneNumbersCard.msg_phone_numbers_updated, 'success');\n })\n .catch(response => this.setState({\n isSaving: false\n }, () => this.mapApiErrorsToFormErrors(response.payload.data)));\n }\n }\n\n updateButtonIsDisabled = () => {\n const { isSaving, phoneNumbers, phoneErrors } = this.state;\n const strippedNumbersOnState = Object.keys(phoneNumbers).map(num => phoneNumbers[num].Number.replace(/\\D/g, ''));\n const strippedNumbersOnProps = Object.values(this.props.phoneNumbers).map(num => num.Number.replace(/\\D/g, ''));\n const errorsNotCleared = Object.values(phoneErrors).filter(err => err !== '').length !== 0;\n return isSaving\n || isEqual(strippedNumbersOnState, strippedNumbersOnProps)\n || errorsNotCleared;\n }\n\n onInputChange = (name, value) => {\n // update specific phone number\n const phoneNumbers = cloneDeep(this.state.phoneNumbers);\n \n phoneNumbers[name] = {\n ...phoneNumbers[name],\n MaskType: 'US',\n Number: value,\n };\n\n // clear specific input error when user starts typing\n const phoneErrors = { ...this.state.phoneErrors };\n phoneErrors[name] = '';\n this.setState({ phoneNumbers, phoneErrors });\n }\n\n componentDidUpdate() {\n const strippedNumbersOnState = Object.keys(this.state.phoneNumbers).map(num => this.state.phoneNumbers[num].Number.replace(/\\D/g, ''));\n const strippedNumbersOnProps = Object.values(this.props.phoneNumbers).map(num => num.Number.replace(/\\D/g, ''));\n if (!isEqual(strippedNumbersOnState, strippedNumbersOnProps)) {\n this.props.displayUnsavedChangesPrompt(CHANGE_PHONE_NUMBERS, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(CHANGE_PHONE_NUMBERS, false);\n }\n }\n\n render() {\n const { phoneNumbers: { Cell, Home, Fax, Work, Other }, phoneErrors } = this.state;\n\n const { text: { PhoneNumbersCard }, hasTitle } = this.props;\n\n return (\n \n
    \n
    \n {hasTitle && {PhoneNumbersCard.head_title}}\n
    \n
    {PhoneNumbersCard.msg_warning_changing_phone}
    \n this.onInputChange('Cell', formattedValue)}\n onBlur={this.verifyPhoneNumbers}\n value={Cell.Number}\n fullWidth\n errorText={phoneErrors.Cell}\n isintl={Cell.MaskType === OTHER ? 'true' : 'false'}\n />\n\n this.onInputChange('Home', formattedValue)}\n onBlur={this.verifyPhoneNumbers}\n value={Home.Number}\n fullWidth\n errorText={phoneErrors.Home}\n isintl={Home.MaskType === OTHER ? 'true' : 'false'}\n />\n\n this.onInputChange('Work', formattedValue)}\n onBlur={this.verifyPhoneNumbers}\n value={Work.Number}\n fullWidth\n errorText={phoneErrors.Work}\n isintl={Work.MaskType === OTHER ? 'true' : 'false'}\n />\n this.onInputChange('Other', formattedValue)}\n onBlur={this.verifyPhoneNumbers}\n value={Other.Number}\n fullWidth\n errorText={phoneErrors.Other}\n isintl={Other.MaskType === OTHER ? 'true' : 'false'}\n />\n this.onInputChange('Fax', formattedValue)}\n onBlur={this.verifyPhoneNumbers}\n value={Fax.Number}\n fullWidth\n errorText={phoneErrors.Fax}\n isintl={Fax.MaskType === OTHER ? 'true' : 'false'}\n />\n
    \n
    \n \n \n {PhoneNumbersCard.btn_change_phone}\n \n \n
    \n
    \n );\n }\n}\n\nexport default connect(null, { changePhoneNumbers, notificationShow })(LanguageHOC(PhoneNumbersCard));\n","/*\n*\n* UsernameCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n CHANGE_USERNAME,\n} from 'components/AppRoot/Navigation/constants';\n\nimport {\n CardTitle,\n CardButtons,\n LoadingOverlay,\n notificationShow,\n PasswordInput,\n} from '@frontend/common';\n\nimport {\n Button,\n TextField\n} from '@mui/material';\n\nimport { changeUsername } from 'components/AppRoot/Navigation/actions';\n\nexport class UsernameCard extends React.Component {\n static propTypes = {\n changeUsername: PropTypes.func.isRequired,\n currentUsername: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n hasTitle: PropTypes.bool,\n text: PropTypes.shape({\n UsernameCard: PropTypes.shape({\n btn_change_username: PropTypes.string,\n err_different_username: PropTypes.string,\n err_required: PropTypes.string,\n err_username_length: PropTypes.string,\n err_username_min_length: PropTypes.string,\n err_username_spaces: PropTypes.string,\n err_username_with_numbers: PropTypes.string,\n head_title: PropTypes.string,\n lbl_current_password: PropTypes.string,\n lbl_current_username: PropTypes.string,\n lbl_new_username: PropTypes.string,\n msg_username_changed: PropTypes.string,\n }),\n }).isRequired,\n };\n\n static defaultProps = {\n hasTitle: true,\n };\n\n state = {\n apiErrors: [],\n formErrors: [],\n isSaving: false,\n newUsername: '',\n password: '',\n };\n\n errorGet = name => {\n const error = this.state.formErrors.find(error => error.name === name);\n return error ? error.message : '';\n }\n\n formValidate = () => {\n const { apiErrors, newUsername, password } = this.state;\n const { err_different_username, err_required, err_username_length, err_username_with_numbers, err_username_min_length, err_username_spaces } = this.props.text.UsernameCard;\n const formErrors = [];\n\n if (!password) {\n formErrors.push({\n name: 'password',\n message: err_required\n });\n }\n\n if (!newUsername) {\n formErrors.push({\n name: 'newUsername',\n message: err_required\n });\n }\n\n if (newUsername.toLowerCase() === this.props.currentUsername.toLowerCase()) {\n formErrors.push({\n name: 'newUsername',\n message: err_different_username\n });\n }\n\n if (newUsername.match(/\\d\\d\\d\\d/)) {\n formErrors.push({\n name: 'newUsername',\n message: err_username_with_numbers\n });\n }\n\n if (newUsername.length > 40) {\n formErrors.push({\n name: 'newUsername',\n message: err_username_length\n });\n }\n\n if (newUsername.match(/^\\s+|\\s+$/)) {\n formErrors.push({\n name: 'newUsername',\n message: err_username_spaces\n });\n }\n\n if (newUsername.length > 0 && newUsername.length < 6) {\n formErrors.push({\n name: 'newUsername',\n message: err_username_min_length\n });\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'Username') {\n formErrors.push({\n name: 'newUsername',\n message: error.Message\n });\n }\n if (error.Field === 'Password' || error.Field === 'password') {\n formErrors.push({\n name: 'password',\n message: error.Message\n });\n }\n });\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return formErrors.length === 0;\n }\n\n updateButtonIsDisabled = () => {\n return !this.state.newUsername || this.props.currentUsername === this.state.newUsername;\n }\n\n onInputChange = (event, name) => {\n this.setState({\n [name]: event.target.value,\n formErrors: this.state.formErrors.filter(error => error.name !== name)\n });\n }\n\n usernameChange = (event) => {\n event.preventDefault();\n\n if (this.formValidate()) {\n this.setState({ isSaving: true });\n this.props.changeUsername(this.state.newUsername, this.state.password)\n .then(() => {\n this.setState({\n isSaving: false,\n newUsername: '',\n password: '',\n });\n this.props.notificationShow(this.props.text.UsernameCard.msg_username_changed, 'success');\n })\n .catch(response => {\n this.setState({\n apiErrors: response.payload.data,\n isSaving: false,\n }, () => this.formValidate());\n });\n }\n }\n\n componentDidUpdate() {\n if (this.state.newUsername && this.props.currentUsername !== this.state.newUsername) {\n this.props.displayUnsavedChangesPrompt(CHANGE_USERNAME, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(CHANGE_USERNAME, false);\n }\n }\n\n render() {\n const { isSaving, newUsername, password } = this.state;\n const { currentUsername, text: { UsernameCard }, hasTitle } = this.props;\n return (\n
    \n
    \n {hasTitle && {this.props.text.UsernameCard.head_title}}\n
    \n \n this.onInputChange(e, 'newUsername')}\n value={newUsername}\n inputProps={{ form: { autocomplete: 'off' } }}\n />\n this.onInputChange(e, 'password')}\n type='password'\n value={password}\n variant='standard'\n />\n
    \n
    \n \n \n \n {UsernameCard.btn_change_username}\n \n \n \n
    \n );\n }\n}\n\n\nexport default connect(null, {\n changeUsername,\n notificationShow,\n})(LanguageHOC(UsernameCard));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n changeStatementDeliveryMethods,\n} from '../actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport {\n notificationShow,\n CardButtons,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n Button,\n FormControlLabel,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport {\n CHANGE_DELIVERY_METHODS,\n ONLINE_ONLY,\n MAIL_ONLINE,\n MAIL,\n} from '../constants';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n DeliveryMethods: state.myInfo.DeliveryMethods,\n});\n\nexport class DeliveryMethodsComp extends React.Component {\n static propTypes = {\n changeStatementDeliveryMethods: PropTypes.func.isRequired,\n displayUnsavedChangesPrompt: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getNotifications: PropTypes.func.isRequired,\n DeliveryMethods: PropTypes.arrayOf(\n PropTypes.shape({\n AccountId: PropTypes.number,\n DeliveryMethod: PropTypes.string,\n Name: PropTypes.string,\n })\n ).isRequired,\n text: PropTypes.shape({\n Preferences: PropTypes.shape({\n btn_change_delivery_prefs: PropTypes.string,\n btn_close: PropTypes.string,\n btn_view_change_statement_delivery: PropTypes.string,\n head_account: PropTypes.string,\n head_beneficiary: PropTypes.string,\n head_delivery_method: PropTypes.string,\n head_title_change_statement_delivery_prefs: PropTypes.string,\n msg_statement_delivery_changed: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n disableChangeButton: true,\n isSaving: false,\n DeliveryMethods: this.props.DeliveryMethods,\n };\n\n onStatementDeliveryPrefChange = (event, accountId) => {\n const modifiedDeliveryMethods = this.state.DeliveryMethods.map(account => {\n if (account.AccountId === accountId) {\n return {\n ...account,\n DeliveryMethod: event.target.value\n };\n }\n else\n return account;\n });\n\n let disableChangeButton = true;\n if (!isEqual(modifiedDeliveryMethods, this.props.DeliveryMethods))\n disableChangeButton = false;\n\n this.setState({\n disableChangeButton,\n DeliveryMethods: modifiedDeliveryMethods,\n });\n }\n\n statementDeliveryPrefChange = () => {\n const preferences = {\n DeliveryMethods: this.state.DeliveryMethods,\n };\n\n this.setState({ isSaving: true });\n this.props.changeStatementDeliveryMethods(preferences)\n .then(() => {\n this.setState({\n isSaving: false,\n DeliveryMethods: this.props.DeliveryMethods,\n statementDeliveryMethodPrefsModalOpen: false,\n disableChangeButton: true,\n });\n this.props.notificationShow(this.props.text.Preferences.msg_statement_delivery_changed, 'success');\n this.props.getNotifications(); // refreshes app notifications to remove the Change Delivery Method notification\n })\n .catch(() => this.setState({\n isSaving: false,\n }));\n }\n\n renderTableDataRows = () => {\n const { DeliveryMethods } = this.state;\n return DeliveryMethods.map((method) => (\n \n {method.AccountNumber}
    {method.BeneficiaryName}\n \n this.onStatementDeliveryPrefChange(event, method.AccountId)}\n >\n } />\n } />\n \n \n \n ));\n }\n\n componentDidUpdate() {\n const { DeliveryMethods } = this.state;\n if (Boolean(DeliveryMethods) && !isEqual(DeliveryMethods, this.props.DeliveryMethods)) {\n this.props.displayUnsavedChangesPrompt(CHANGE_DELIVERY_METHODS, true);\n }\n else {\n this.props.displayUnsavedChangesPrompt(CHANGE_DELIVERY_METHODS, false);\n }\n }\n\n render() {\n const { isSaving, disableChangeButton } = this.state;\n const { text: { Preferences } } = this.props;\n\n return (\n
    \n \n \n \n \n \n \n {this.renderTableDataRows()}\n \n
    {Preferences.head_account} {Preferences.head_beneficiary}{Preferences.head_delivery_method}
    \n\n \n \n \n {Preferences.btn_change_delivery_prefs}\n \n \n \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n changeStatementDeliveryMethods,\n notificationShow,\n getNotifications,\n})(LanguageHOC(DeliveryMethodsComp));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n TextField\n} from '@mui/material';\n\nimport {\n notificationShow,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n twoFactorTokenVerification,\n getPreferredMethod,\n savePreferredMethod,\n getTwoFactorToken\n} from '../../actions';\n\nimport { userLogout } from 'components/AppRoot/Navigation/actions';\nimport { regMethodTypes } from '../../constants.js';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n RegistrationInfo: state.multifactor.RegistrationInfo,\n VerificationInfo: state.multifactor.VerificationInfo,\n preferredInfo: state.multifactor.preferredInfo,\n is2FARegistered: state.session.is2FARegistered,\n});\n\nexport class RegisterPhone extends Component {\n\n static propTypes = {\n twoFactorTokenVerification: PropTypes.func.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n RegistrationInfo: PropTypes.object.isRequired,\n VerificationInfo: PropTypes.object.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n closeWindow: PropTypes.func,\n is2FARegistered: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_another_method: PropTypes.string,\n btn_calling: PropTypes.string,\n btn_call_again: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_resend_code: PropTypes.string,\n btn_sending: PropTypes.string,\n btn_submit_code: PropTypes.string,\n confirmation_path: PropTypes.string,\n err_verification_code_required: PropTypes.string,\n lbl_invalid_code: PropTypes.string,\n lbl_verification_code: PropTypes.string,\n msg_attempts_remaining: PropTypes.string,\n msg_we_called: PropTypes.func,\n msg_we_sent: PropTypes.func,\n msg_resend_successful: PropTypes.string,\n register_path: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n hasVerificationCode: false,\n verificationCode: '',\n verificationCodeError: '',\n actionButton: false,\n attemptWarning: '',\n sendCodeBtn: this.props.text.Multifactor.btn_resend_code,\n callAgainBtn: this.props.text.Multifactor.btn_call_again\n };\n\n handleInput = name => e => {\n if (this.state.hasVerificationCode) {\n this.setState({\n hasVerificationCode: false,\n verificationCodeError: '',\n [name]: e.target.value\n });\n }\n else {\n this.setState({ [name]: e.target.value });\n }\n }\n\n doAgain = () => {\n const { RegistrationInfo, text: { Multifactor } } = this.props;\n\n if (RegistrationInfo.regMethod === regMethodTypes.CALL) {\n this.setState({\n callAgainBtn: Multifactor.btn_calling,\n actionButton: true,\n attemptWarning: ''\n });\n }\n else {\n this.setState({\n sendCodeBtn: Multifactor.btn_sending,\n actionButton: true,\n attemptWarning: ''\n });\n }\n\n setTimeout(() => {\n if (RegistrationInfo.regMethod === regMethodTypes.CALL) {\n this.setState({ callAgainBtn: Multifactor.btn_call_again, actionButton: false });\n }\n else {\n this.setState({ sendCodeBtn: Multifactor.btn_resend_code, actionButton: false });\n }\n }, 5000);\n\n this.props.getTwoFactorToken(RegistrationInfo.regMethod);\n }\n\n verifyCode = (e) => {\n e.preventDefault();\n const { text: { Multifactor }, RegistrationInfo } = this.props;\n const { verificationCode } = this.state;\n if (verificationCode) {\n this.setState({ isLoading: true });\n const regMethod = RegistrationInfo.regMethod === regMethodTypes.CALL\n ? regMethodTypes.CALL\n : regMethodTypes.SMS;\n Promise.all([\n this.props.twoFactorTokenVerification(verificationCode, regMethod),\n this.props.getPreferredMethod()\n ]).then(() => {\n const { VerificationInfo, preferredInfo } = this.props;\n if (VerificationInfo.Verified) {\n const params = {\n AlwaysRequired: preferredInfo.AlwaysRequired,\n PreferredMethod: regMethod\n };\n this.props.savePreferredMethod(params)\n .then(() => {\n this.props.history.push(Multifactor.confirmation_path);\n });\n }\n else {\n if (VerificationInfo.AttemptsRemaining === 0) {\n this.logout();\n }\n else if (VerificationInfo.AttemptsRemaining === 1) {\n this.setState({\n isLoading: false,\n attemptWarning: Multifactor.msg_attempts_remaining\n });\n }\n else {\n this.setState({\n isLoading: false,\n verificationCodeError: Multifactor.lbl_invalid_code\n });\n }\n }\n });\n }\n else {\n this.setState({\n hasVerificationCode: true,\n verificationCodeError: Multifactor.err_verification_code_required\n });\n }\n }\n\n logout = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .then(() => {\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n });\n }\n\n render() {\n const { RegistrationInfo, text: { Multifactor }, closeWindow, is2FARegistered } = this.props;\n const {\n isLoading, hasVerificationCode, verificationCode, verificationCodeError,\n attemptWarning, callAgainBtn, sendCodeBtn, actionButton,\n } = this.state;\n\n const lastFour = RegistrationInfo.PhoneNumber\n ? RegistrationInfo.PhoneNumber.substr(RegistrationInfo.PhoneNumber.length - 4, RegistrationInfo.PhoneNumber.length)\n : '';\n const sendConfirmMsg = RegistrationInfo.regMethod === regMethodTypes.CALL ? Multifactor.msg_we_called(lastFour) : Multifactor.msg_we_sent(lastFour);\n const actionType = RegistrationInfo.regMethod === regMethodTypes.CALL ? callAgainBtn : sendCodeBtn;\n\n return (\n
    \n \n

    {Multifactor.lbl_verification_code}

    \n
    {sendConfirmMsg}
    \n this.verifyCode(e)}\n >\n
    \n \n
    \n
    \n this.doAgain()}\n >\n {actionType}\n \n
    \n
    \n this.props.history.push(Multifactor.register_path)}\n >\n {Multifactor.btn_another_method}\n \n
    \n
    \n \n {Multifactor.btn_cancel}\n \n
    \n \n {Multifactor.btn_submit_code}\n \n \n
    {attemptWarning}
    \n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(connect(select, {\n twoFactorTokenVerification,\n getTwoFactorToken,\n getPreferredMethod,\n savePreferredMethod,\n userLogout,\n notificationShow\n})(LanguageHOC(RegisterPhone)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport QRCode from 'react-qr-code';\n\nimport {\n Button,\n TextField\n} from '@mui/material';\n\nimport {\n notificationShow,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport {\n getInitialTwoFactorQRCode,\n getTwoFactorQRCode,\n twoFactorTokenVerification,\n getPreferredMethod,\n savePreferredMethod\n} from '../../actions';\n\nimport { userLogout } from 'components/AppRoot/Navigation/actions';\nimport { regMethodTypes } from '../../constants.js';\nimport { TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n QRCodeInfo: state.multifactor.QRCodeInfo,\n VerificationInfo: state.multifactor.VerificationInfo,\n preferredInfo: state.multifactor.preferredInfo,\n is2FARegistered: state.session.is2FARegistered,\n});\n\nexport class RegisterAuthenticator extends Component {\n\n static propTypes = {\n hideAnotherMethodButton: PropTypes.bool, // defaults to always show\n getInitialTwoFactorQRCode: PropTypes.func.isRequired,\n getTwoFactorQRCode: PropTypes.func.isRequired,\n twoFactorTokenVerification: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n QRCodeInfo: PropTypes.object.isRequired,\n VerificationInfo: PropTypes.object.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n registerType: PropTypes.string,\n closeWindow: PropTypes.func,\n is2FARegistered: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_another_method: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_submit_token: PropTypes.string,\n confirmation_path: PropTypes.string,\n lbl_invalid_code: PropTypes.string,\n err_invalid_token: PropTypes.string,\n err_token_required: PropTypes.string,\n lbl_my529_token: PropTypes.string,\n lbl_step1: PropTypes.string,\n lbl_step2: PropTypes.string,\n lbl_step3: PropTypes.string,\n msg_token_attempts_remaining: PropTypes.string,\n msg_download_authenticator: PropTypes.string,\n msg_get_codes: PropTypes.string,\n msg_scan_qrcode: PropTypes.string,\n msg_enter_seccode: PropTypes.string,\n register_path: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n hasSecurityCode: false,\n securityCode: '',\n securityCodeError: '',\n attemptWarning: '',\n };\n\n logout = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .then(() => {\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n });\n }\n\n handleInput = name => e => {\n if (this.state.securityCode) {\n this.setState({\n securityCode: false,\n securityCodeError: '',\n [name]: e.target.value\n });\n }\n else {\n this.setState({ [name]: e.target.value });\n }\n }\n\n verifyCode = (e) => {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const { securityCode } = this.state;\n if (securityCode) {\n this.setState({ isLoading: true });\n Promise.all([\n this.props.twoFactorTokenVerification(securityCode, regMethodTypes.INAPPTOKEN),\n this.props.getPreferredMethod()\n ]).then(() => {\n const { VerificationInfo, preferredInfo } = this.props;\n if (VerificationInfo.Verified) {\n const params = {\n AlwaysRequired: preferredInfo.AlwaysRequired,\n PreferredMethod: regMethodTypes.INAPPTOKEN\n };\n this.props.savePreferredMethod(params)\n .then(() => {\n this.props.history.push(Multifactor.confirmation_path);\n });\n }\n else {\n if (VerificationInfo.AttemptsRemaining === 0) {\n this.logout();\n }\n else if (VerificationInfo.AttemptsRemaining === 1) {\n this.setState({\n isLoading: false,\n attemptWarning: Multifactor.msg_token_attempts_remaining\n });\n }\n else {\n this.setState({\n isLoading: false,\n securityCodeError: Multifactor.err_invalid_token\n });\n }\n }\n });\n }\n else {\n this.setState({\n hasSecurityCode: true,\n securityCodeError: Multifactor.err_token_required\n });\n }\n }\n\n componentDidMount() {\n const { getInitialTwoFactorQRCode, getTwoFactorQRCode, registerType } = this.props;\n // If initial 2FA registration, the endpoint does not need to validate token. Update is done on MyInfo page and requires token validation.\n const getQRCode = registerType === TWO_FACTOR_TYPES.UPDATE ? getTwoFactorQRCode : getInitialTwoFactorQRCode;\n\n this.setState({ isLoading: true });\n getQRCode()\n .finally(() => {\n this.setState({ isLoading: false });\n });\n }\n\n render() {\n const { QRCodeInfo, text: { Multifactor }, closeWindow, is2FARegistered, hideAnotherMethodButton } = this.props;\n const {\n isLoading, hasSecurityCode, securityCode,\n securityCodeError, attemptWarning,\n } = this.state;\n return (\n
    \n \n

    {Multifactor.msg_get_codes}

    \n this.verifyCode(e)}\n >\n
    \n
    {Multifactor.lbl_step1}
    \n
    {Multifactor.msg_download_authenticator}
    \n
    {Multifactor.lbl_step2}
    \n
    {Multifactor.msg_scan_qrcode}
    \n
    \n {QRCodeInfo.ImageUrl && }\n

    \n {QRCodeInfo.Code && QRCodeInfo.Code}\n
    \n
    {Multifactor.lbl_step3}
    \n
    {Multifactor.msg_enter_seccode}
    \n
    \n \n
    \n
    \n \n {Multifactor.btn_submit_token}\n \n
    \n {!hideAnotherMethodButton &&\n this.props.history.push(Multifactor.register_path)}\n >\n {Multifactor.btn_another_method}\n \n }\n
    \n
    \n \n {Multifactor.btn_cancel}\n \n
    \n \n
    {attemptWarning}
    \n\n {closeWindow && !is2FARegistered &&\n \n {Multifactor.btn_cancel}\n \n }\n\n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n \n
    \n
    \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getInitialTwoFactorQRCode,\n getTwoFactorQRCode,\n twoFactorTokenVerification,\n getPreferredMethod,\n savePreferredMethod,\n userLogout,\n notificationShow\n})(LanguageHOC(RegisterAuthenticator)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n InfoIcon,\n PhoneNumberInput\n} from '@frontend/common';\n\nimport {\n twoFactorRegistration,\n twoFactorRegistrationUpdate,\n getTwoFactorToken\n} from '../../actions';\n\nimport RegisterPhone from 'components/Features/protected/Multifactor/Registration/RegisterPhone';\nimport RegisterAuthenticator from 'components/Features/protected/Multifactor/Registration/RegisterAuthenticator';\n\nimport { userLogout, refreshClaims } from 'components/AppRoot/Navigation/actions';\nimport { TWO_FACTOR_STATUS, TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\nimport { regMethodTypes } from '../../constants.js';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n claims: state.session.claims,\n is2FARegistered: state.session.is2FARegistered,\n});\n\nexport class Register extends Component {\n\n static propTypes = {\n hideAuthenticatorButton: PropTypes.bool, // defaults to show the authenticator option\n twoFactorRegistration: PropTypes.func.isRequired,\n twoFactorRegistrationUpdate: PropTypes.func.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n refreshClaims: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n claims: PropTypes.object.isRequired,\n closeWindow: PropTypes.func,\n registerType: PropTypes.string,\n is2FARegistered: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_register: PropTypes.string,\n err_options: PropTypes.string,\n err_required: PropTypes.string,\n err_phone_number_too_short: PropTypes.string,\n register_title: PropTypes.string,\n register_phonenumber_label: PropTypes.string,\n lbl_call: PropTypes.string,\n lbl_other: PropTypes.string,\n lbl_step1: PropTypes.string,\n lbl_step2: PropTypes.string,\n lbl_text: PropTypes.string,\n msg_authenticator_download: PropTypes.string,\n msg_2FA_phone: PropTypes.string,\n msg_2FA_reg_method: PropTypes.string,\n phone_path: PropTypes.string,\n authenticator_path: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n learnMoreOpen: false,\n phone: '',\n regMethod: '',\n formErrors: {\n phone: '',\n regMethod: ''\n },\n isRegisterPhone: false,\n isRegisterAuthenticator: false\n };\n\n handleOptions = e => {\n this.setState({ regMethod: e.target.value });\n };\n\n handlePhone = (phone) => {\n this.setState({\n phone: phone.replace(/\\D/g, ''),\n formErrors: { ...this.state.formErrors, phone: '' }\n });\n }\n\n registerPhone() {\n const { text: { Multifactor }, claims } = this.props;\n const { phone, regMethod } = cloneDeep(this.state);\n const formErrors = {};\n\n if (regMethod === regMethodTypes.SMS || regMethod === regMethodTypes.CALL) {\n if (phone === '') {\n formErrors.phone = Multifactor.err_required;\n }\n else if (phone.length < 10) {\n formErrors.phone = Multifactor.err_phone_number_too_short;\n }\n }\n\n if (regMethod === '') {\n formErrors.regMethod = Multifactor.err_options;\n }\n\n if (isEmpty(formErrors)) {\n const { phone, regMethod } = this.state;\n const { registerType } = this.props;\n\n const regParams = {\n countryCode: '+1', // only domestic\n phoneNumber: phone, // this should be 10 digit US number stripped off of all non numerics\n emailAddress: this.props.userDetails.email,\n verificationMethod: regMethod\n };\n\n const apiCall = claims.TwoFactorRegistration === TWO_FACTOR_STATUS.COMPLETED\n ? 'twoFactorRegistrationUpdate'\n : 'twoFactorRegistration';\n\n this.setState({ isLoading: true });\n this.props[apiCall](regParams)\n .then(() => {\n switch (regMethod) {\n case regMethodTypes.SMS:\n case regMethodTypes.CALL: {\n this.props.getTwoFactorToken(regMethod)\n .then(() => {\n registerType === TWO_FACTOR_TYPES.UPDATE\n ? this.setState({ isRegisterPhone: true })\n : this.props.history.push(Multifactor.phone_path);\n });\n break;\n }\n case regMethodTypes.INAPPTOKEN: {\n registerType === TWO_FACTOR_TYPES.UPDATE\n ? this.setState({ isRegisterAuthenticator: true })\n : this.props.history.push(Multifactor.authenticator_path);\n break;\n }\n default: break;\n }\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n else {\n this.setState({ formErrors });\n }\n }\n\n logout = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .then(() => {\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n });\n }\n\n componentDidUpdate() {\n window.onpopstate = () => {\n if (this.props.registerType === TWO_FACTOR_TYPES.UPDATE) {\n this.props.refreshClaims();\n }\n };\n }\n\n render() {\n const { text: { Multifactor }, registerType, closeWindow, is2FARegistered, hideAuthenticatorButton } = this.props;\n const {\n isLoading, regMethod, formErrors,\n isRegisterPhone, isRegisterAuthenticator\n } = this.state;\n\n let renderComponent = '';\n if (isRegisterPhone) {\n renderComponent = ;\n }\n else if (isRegisterAuthenticator) {\n renderComponent = ;\n }\n else {\n renderComponent = (\n
    \n \n

    {Multifactor.register_title}

    \n\n
    \n
    {Multifactor.lbl_step1}
    \n
    {Multifactor.msg_2FA_reg_method}
    \n
    \n
    \n \n\n \n } label={Multifactor.lbl_text} />\n } label={Multifactor.lbl_call} />\n \n\n {!hideAuthenticatorButton &&\n
    \n
    \n } label={Multifactor.lbl_other} style={{ marginRight: '5px' }} />\n \n
    \n
    \n }\n\n
    \n {formErrors.regMethod}\n
    \n\n {(regMethod === regMethodTypes.SMS || regMethod === regMethodTypes.CALL) &&\n <>\n
    \n
    {Multifactor.lbl_step2}
    \n
    {Multifactor.msg_2FA_phone}
    \n
    \n
    \n this.handlePhone(formattedValue)}\n errorText={formErrors.phone}\n variant='outlined'\n />\n
    \n \n }\n\n\n this.registerPhone()}\n >\n {Multifactor.btn_register}\n \n \n {Multifactor.btn_cancel}\n \n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n
    \n
    \n
    \n\n );\n }\n\n return (\n
    \n {renderComponent}\n
    \n );\n }\n}\n\nexport default withRouter(connect(select, {\n twoFactorRegistration,\n twoFactorRegistrationUpdate,\n getTwoFactorToken,\n refreshClaims,\n userLogout,\n notificationShow\n})(LanguageHOC(Register)));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n IconBtnTooltip,\n notificationShow,\n LoadingOverlay\n} from '@frontend/common';\nimport {\n Button,\n TextField,\n InputAdornment,\n Switch,\n Dialog,\n Slide\n} from '@mui/material';\n\nimport { savePreferredMethod } from 'components/Features/protected/Multifactor/actions';\nimport { twoFaRouteChange } from 'components/AppRoot/Navigation/actions';\n\nimport Register from 'components/Features/protected/Multifactor/Registration/Register';\nimport RegisterAuthenticator from 'components/Features/protected/Multifactor/Registration/RegisterAuthenticator';\n\nimport { TWO_FACTOR_TYPES } from 'components/AppRoot/Navigation/constants';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n claims: state.session.claims,\n});\n\nexport class MultifactorCard extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n twoFaRouteChange: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n claims: PropTypes.object.isRequired,\n userDetails: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_done: PropTypes.string,\n btn_edit: PropTypes.string,\n err_required: PropTypes.string,\n lbl_other: PropTypes.string,\n lbl_other_options: PropTypes.string,\n lbl_phone_number: PropTypes.string,\n lbl_present_2FA: PropTypes.string,\n nav_title: PropTypes.string,\n })\n }).isRequired,\n };\n\n static defaultProps = {\n hasTitle: true,\n };\n\n state = {\n isLoading: false,\n isAlwaysRequired: false,\n isPhoneDisabled: true,\n hasPhoneNumberChanged: false,\n originalPhoneNumber: '',\n phoneNumber: '',\n phoneNumberError: '',\n\n isRegisterOpen: false,\n isRegisterAuthenticatorOpen: false,\n\n hasPrecondition: false,\n savedFunctionName: ''\n };\n\n toggleRegisteredDevice() {\n this.setState({ isLoading: true });\n const params = {\n preferredMethod: this.props.preferredInfo.PreferredMethod,\n alwaysRequired: !this.state.isAlwaysRequired\n };\n this.props.savePreferredMethod(params)\n .then(() => {\n this.setState({\n isLoading: false,\n isAlwaysRequired: !this.state.isAlwaysRequired\n });\n });\n }\n\n componentDidMount() {\n const { PhoneNumber, AlwaysRequired } = this.props.preferredInfo;\n this.setState({\n originalPhoneNumber: PhoneNumber,\n phoneNumber: PhoneNumber,\n isAlwaysRequired: AlwaysRequired\n });\n this.props.twoFaRouteChange(window.location.pathname); // sets user's current route so they can return once 2fa is complete - important for SSup\n\n }\n\n render() {\n const {\n isAlwaysRequired, isPhoneDisabled, phoneNumber, isLoading,\n isRegisterOpen, isRegisterAuthenticatorOpen\n } = this.state;\n const { text: { Multifactor } } = this.props;\n const phone = `(***) ***-${phoneNumber.substr(phoneNumber.length - 4, phoneNumber.length)}`;\n\n return (\n \n \n
    \n\n
    \n \n this.setState({ isRegisterOpen: true })}\n title={Multifactor.btn_edit}\n />\n ,\n }}\n />\n
    \n\n
    {Multifactor.lbl_present_2FA}
    \n
    \n this.toggleRegisteredDevice()}\n value={isAlwaysRequired}\n inputProps={{ 'aria-label': 'secondary checkbox' }}\n style={{ marginBottom: '15px' }}\n />\n
    \n
    {Multifactor.lbl_other_options}
    \n
    \n this.setState({ isRegisterAuthenticatorOpen: true })}\n >\n {Multifactor.lbl_other}\n \n
    \n
    \n
    \n\n \n this.setState({ isRegisterOpen: false })}\n hideAuthenticatorButton={true}\n />\n \n\n \n this.setState({ isRegisterAuthenticatorOpen: false })}\n hideAnotherMethodButton={true}\n />\n \n
    \n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n notificationShow,\n savePreferredMethod,\n twoFaRouteChange,\n})(LanguageHOC(MultifactorCard)));","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Switch,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n Dropdown,\n Modal,\n InfoIcon,\n} from '@frontend/common';\n\nimport SkeletonLoader from 'src/utils/components/SkeletonLoader';\n\nimport {\n officialNotificationUpdate,\n taxFormsNotificationUpdate,\n newsletterNotificationUpdate,\n promoNotificationUpdate,\n bdayNotificationUpdate,\n utahResidentSave,\n} from '../actions';\n\nimport { notificationTypes, BLOCKED } from '../constants';\n\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\n\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n agent: state.myInfo.agent,\n claims: state.session.claims,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n});\n\nexport class MyInfoToggles extends React.Component {\n static propTypes = {\n notificationShow: PropTypes.func.isRequired,\n officialNotificationUpdate: PropTypes.func.isRequired,\n taxFormsNotificationUpdate: PropTypes.func.isRequired,\n newsletterNotificationUpdate: PropTypes.func.isRequired,\n promoNotificationUpdate: PropTypes.func.isRequired,\n bdayNotificationUpdate: PropTypes.func.isRequired,\n utahResidentSave: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n agent: PropTypes.shape({\n OfficialCommunications: PropTypes.string,\n TaxForms: PropTypes.string,\n Newsletter: PropTypes.string,\n Promotional: PropTypes.string,\n BirthdayNotifications: PropTypes.string,\n UtahResident: PropTypes.bool,\n }).isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n residentCheck: PropTypes.func.isRequired,\n residentModalOpen: PropTypes.bool.isRequired,\n isLoading: PropTypes.bool.isRequired,\n onModalClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n MyInfo: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n Preferences: PropTypes.shape({\n head_utah_resident: PropTypes.string,\n head_official_communications: PropTypes.string,\n head_tax_forms: PropTypes.string,\n head_promotional: PropTypes.string,\n head_newsletter: PropTypes.string,\n head_birthday: PropTypes.string,\n lbl_official_communications: PropTypes.string,\n lbl_tax_forms: PropTypes.string,\n lbl_promotional_info: PropTypes.string,\n lbl_options: PropTypes.string,\n lbl_utah_resident: PropTypes.string,\n msg_preferences_changed: PropTypes.string,\n text_no_accounts: PropTypes.string,\n text_residency_mismatch: PropTypes.string,\n text_will_not_send_material_for_other: PropTypes.string,\n text_tax_document_online_only: PropTypes.string,\n text_utah_tax_form_changes: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n hasPrecondition: false,\n rememberedType: '',\n value: '',\n isOfficialNotificationUpdating: false,\n isTaxFormUpdating: false,\n isNewsletterUpdating: false,\n isPromotionalUpdating: false,\n isBirthdayUpdating: false,\n isSavingUtahResidency: false,\n };\n\n protectHandleNotificationUpdates(value, rememberedType) {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n { hasPrecondition: true, rememberedType, value },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA) {\n this.setState(\n { hasPrecondition: true, rememberedType, value },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n }\n else {\n // just handle without 2FA protection\n this.setState({ hasPrecondition: false });\n this.handleNotificationUpdates(value, rememberedType);\n }\n }\n\n handleNotificationUpdates(val, type) {\n const notificationApiCall = [];\n switch (type) {\n case notificationTypes.OfficialCommunications.title:\n this.setState({ isOfficialNotificationUpdating: true });\n notificationApiCall.push(this.props.officialNotificationUpdate(val));\n break;\n case notificationTypes.TaxForms.title:\n this.setState({ isTaxFormUpdating: true });\n notificationApiCall.push(this.props.taxFormsNotificationUpdate(val));\n break;\n case notificationTypes.Newsletter.title:\n this.setState({ isNewsletterUpdating: true });\n notificationApiCall.push(this.props.newsletterNotificationUpdate(val));\n break;\n case notificationTypes.Promotional.title:\n this.setState({ isPromotionalUpdating: true });\n notificationApiCall.push(this.props.promoNotificationUpdate(val));\n break;\n case notificationTypes.BirthdayNotifications.title:\n this.setState({ isBirthdayUpdating: true });\n notificationApiCall.push(this.props.bdayNotificationUpdate(val));\n break;\n case notificationTypes.UTRESIDENT.title:\n const UtahResident = !this.props.agent.UtahResident; // eslint-disable-line\n this.setState({ isSavingUtahResidency: true });\n notificationApiCall.push(this.props.utahResidentSave(UtahResident));\n break;\n default:\n return null;\n }\n\n Promise.all(notificationApiCall)\n .then(() => {\n this.setState(\n {\n isOfficialNotificationUpdating: false,\n isTaxFormUpdating: false,\n isNewsletterUpdating: false,\n isPromotionalUpdating: false,\n isBirthdayUpdating: false,\n isSavingUtahResidency: false,\n },\n () => this.props.notificationShow(this.props.text.Preferences.msg_preferences_changed, 'success')\n );\n })\n .then(() => this.props.residentCheck());\n }\n\n componentDidMount() {\n const { agent } = this.props;\n for (const [key, value] of Object.entries(agent)) { // eslint-disable-line\n for (const [k, v] of Object.entries(notificationTypes)) { // eslint-disable-line\n let hasBlocked = false;\n if (v.options) {\n hasBlocked = v.options.some(option => option.display === 'Please Select');\n if (key === k && value === BLOCKED && !hasBlocked) {\n v.options.push({ display: 'Please Select', value: BLOCKED });\n }\n }\n }\n }\n }\n\n componentDidUpdate() {\n const {\n hasPrecondition,\n isOfficialNotificationUpdating,\n isTaxFormUpdating,\n isNewsletterUpdating,\n isPromotionalUpdating,\n isBirthdayUpdating,\n isSavingUtahResidency,\n value,\n rememberedType\n } = this.state;\n const isNotUpdatingAny = !(isOfficialNotificationUpdating || isTaxFormUpdating || isNewsletterUpdating || isPromotionalUpdating || isBirthdayUpdating || isSavingUtahResidency);\n const multiStatus = protectAction(this.props.claims);\n if (hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH && isNotUpdatingAny) {\n this.setState({ hasPrecondition: false });\n this.handleNotificationUpdates(value, rememberedType);\n }\n }\n\n render() {\n const {\n isLoading,\n isAgent_AccessRole,\n agent: {\n BirthdayNotifications,\n UtahResident,\n TaxForms,\n Newsletter,\n OfficialCommunications,\n Promotional,\n },\n residentModalOpen,\n onModalClose,\n text: {\n Preferences: {\n head_birthday,\n head_newsletter,\n head_official_communications,\n head_promotional,\n head_tax_forms,\n head_utah_resident,\n lbl_official_communications,\n lbl_options,\n lbl_promotional_info,\n lbl_tax_forms,\n lbl_utah_resident,\n text_residency_mismatch,\n text_utah_tax_form_changes,\n },\n },\n } = this.props;\n const {\n isOfficialNotificationUpdating,\n isTaxFormUpdating,\n isNewsletterUpdating,\n isPromotionalUpdating,\n isBirthdayUpdating,\n isSavingUtahResidency,\n } = this.state;\n return (\n \n {isAgent_AccessRole &&\n
    \n\n
    \n
    \n
    {head_official_communications}
    \n
    {lbl_official_communications}
    \n
    \n
    \n \n \n this.protectHandleNotificationUpdates(value, notificationTypes.OfficialCommunications.title)}\n options={notificationTypes.OfficialCommunications.options}\n value={OfficialCommunications}\n />\n \n \n
    \n
    \n\n
    \n
    \n
    {head_tax_forms}
    \n
    {lbl_tax_forms}
    \n
    \n
    \n \n \n this.protectHandleNotificationUpdates(value, notificationTypes.TaxForms.title)}\n options={notificationTypes.TaxForms.options}\n value={TaxForms}\n />\n \n \n
    \n
    \n\n
    \n\n
    \n
    \n
    {head_newsletter}
    \n
    \n
    \n
    \n \n \n this.protectHandleNotificationUpdates(value, notificationTypes.Newsletter.title)}\n options={notificationTypes.Newsletter.options}\n value={Newsletter}\n />\n \n \n
    \n
    \n\n
    \n
    \n
    {head_promotional}
    \n
    {lbl_promotional_info}
    \n
    \n
    \n \n \n this.protectHandleNotificationUpdates(value, notificationTypes.Promotional.title)}\n options={notificationTypes.Promotional.options}\n value={Promotional}\n />\n \n \n
    \n
    \n\n
    \n
    \n
    {head_birthday}
    \n
    \n
    \n
    \n \n \n this.protectHandleNotificationUpdates(value, notificationTypes.BirthdayNotifications.title)}\n options={notificationTypes.BirthdayNotifications.options}\n value={BirthdayNotifications}\n />\n \n \n
    \n
    \n\n
    \n
    \n
    {lbl_utah_resident}
    \n
    \n
    \n this.protectHandleNotificationUpdates(value, notificationTypes.UTRESIDENT.title)}\n >\n \n \n \n \n \n
    \n
    \n\n
    \n }\n \n {text_residency_mismatch}\n \n \n );\n }\n\n}\n\nexport default connect(select, {\n notificationShow,\n officialNotificationUpdate,\n taxFormsNotificationUpdate,\n newsletterNotificationUpdate,\n promoNotificationUpdate,\n bdayNotificationUpdate,\n utahResidentSave,\n get2FAPrecondition,\n getRSAPrecondition\n})(LanguageHOC(MyInfoToggles));\n","import React from 'react';\n\nimport styles from './styles.module.scss';\n\nconst DELIVERY_METHODS = {\n Online: 'Online',\n Mail: 'Mail',\n Custom: 'Custom',\n Blocked: 'Blocked',\n Select: 'Please Select',\n};\n\nexport const statementDeliveryMethodToString = (DeliveryMethods) => {\n if (DeliveryMethods) {\n let statementsDeliveryMethod;\n const hasBlocked = DeliveryMethods.some(method => method.DeliveryMethod === DELIVERY_METHODS.Blocked);\n if (!hasBlocked) {\n const isAllOnline = DeliveryMethods.every(method => method.DeliveryMethod === DELIVERY_METHODS.Online);\n const isAllMail = DeliveryMethods.every(method => method.DeliveryMethod === DELIVERY_METHODS.Mail);\n if (isAllOnline) {\n statementsDeliveryMethod = DELIVERY_METHODS.Online;\n }\n else if (isAllMail) {\n statementsDeliveryMethod = DELIVERY_METHODS.Mail;\n }\n else {\n statementsDeliveryMethod = DELIVERY_METHODS.Custom;\n }\n }\n else {\n statementsDeliveryMethod = DELIVERY_METHODS.Select;\n }\n return statementsDeliveryMethod;\n }\n else {\n return 'Not found';\n }\n};\n\nexport const addressToString = (address, type) => {\n if (address.AddressId) {\n const isReadOnlyAddress = address.Country !== 'US' && address.Country !== '';\n return (\n
    \n
    {type}
    \n
    |
    \n {address.StreetAddress1 &&
    {address.StreetAddress1},
    }\n {address.StreetAddress2 &&
    {address.StreetAddress2},
    }\n {address.StreetAddress3 &&
    {address.StreetAddress3},
    }\n {address.City &&
    {address.City},
    }\n {(address.PostalCode || address.State) &&
    {address.State && address.State} {address.PostalCode && address.PostalCode}{isReadOnlyAddress && ,}
    }\n {isReadOnlyAddress &&
    {address.CountryName}
    }\n
    \n );\n }\n else\n return null;\n};","/*\n*\n* MyInfo Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Prompt } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport SkeletonLoader from 'src/utils/components/SkeletonLoader';\n\nimport {\n InfoIcon,\n My529Logo,\n} from '@frontend/common';\n\nimport PersistentDrawers, { Row, LeftMenuItems, LeftMenuItem, RightDrawer } from './PersistentDrawers';\n\nimport AddressCard from './AddressCard';\nimport EmailCard from './EmailCard';\nimport PasswordCard from './PasswordCard';\nimport PhoneNumbersCard from './PhoneNumbersCard';\nimport UsernameCard from './UsernameCard';\nimport DeliveryMethodsComp from './DeliveryMethodsComp';\nimport MultifactorCard from './MultifactorCard';\n\nimport MyInfoToggles from './MyInfoToggles';\n\nimport {\n agentGet,\n getStatementDeliveryMethods,\n} from './actions';\n\nimport { getPreferredMethod } from 'components/Features/protected/Multifactor/actions';\n\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\n\nimport { addressToString, statementDeliveryMethodToString } from './helpers';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n agent: state.myInfo.agent,\n isIpOnly_AccessRole: state.session.isIpOnly_AccessRole,\n DeliveryMethods: state.myInfo.DeliveryMethods,\n UserName: state.session.claims.UserName,\n EmailAddress: state.session.claims.EmailAddress,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n preferredInfo: state.multifactor.preferredInfo,\n claims: state.session.claims,\n is2FABypassed: state.session.is2FABypassed,\n});\n\nconst drawerWidth = '390px';\nconst marginTop = '60px';\n\nexport class MyInfo extends React.Component {\n\n static propTypes = {\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n UserName: PropTypes.string.isRequired,\n DeliveryMethods: PropTypes.array.isRequired,\n getStatementDeliveryMethods: PropTypes.func.isRequired,\n agentGet: PropTypes.func.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n is2FABypassed: PropTypes.bool.isRequired,\n claims: PropTypes.object.isRequired,\n agent: PropTypes.shape({\n AgentId: PropTypes.number,\n FirstName: PropTypes.string,\n LastName: PropTypes.string,\n UtahResident: PropTypes.bool,\n PhoneNumbers: PropTypes.shape({\n Cell: PropTypes.object,\n Fax: PropTypes.object,\n Home: PropTypes.object,\n Other: PropTypes.object,\n Work: PropTypes.object,\n }),\n Addresses: PropTypes.shape({\n Physical: PropTypes.object,\n Mailing: PropTypes.object,\n Other: PropTypes.object,\n }),\n OfficialCommunications: PropTypes.string,\n TaxForms: PropTypes.string,\n Newsletter: PropTypes.string,\n Promotional: PropTypes.string,\n BirthdayNotifications: PropTypes.string,\n MiddleName: PropTypes.string,\n }).isRequired,\n text: PropTypes.shape({\n MyInfo: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n Login: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n AccountOwnerCard: PropTypes.shape({\n head_title: PropTypes.string,\n text_name_change_form: PropTypes.string,\n }),\n AddressCard: PropTypes.shape({\n text_intl_address: PropTypes.string,\n head_title: PropTypes.string,\n }),\n EmailCard: PropTypes.shape({\n head_title: PropTypes.string,\n text_ip_email_visible_to_ao: PropTypes.string,\n }),\n UsernameCard: PropTypes.shape({\n head_title: PropTypes.string,\n }),\n PasswordCard: PropTypes.shape({\n head_title: PropTypes.string,\n }),\n PhoneNumbersCard: PropTypes.shape({\n head_title: PropTypes.string,\n text_intl_phone: PropTypes.string,\n }),\n Preferences: PropTypes.shape({\n head_title_statement_delivery: PropTypes.string,\n head_notification_preferences: PropTypes.string,\n }),\n Multifactor: PropTypes.shape({\n nav_title: PropTypes.string,\n lbl_registered: PropTypes.string,\n }),\n }).isRequired,\n EmailAddress: PropTypes.string.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n isIpOnly_AccessRole: PropTypes.bool.isRequired,\n };\n\n state = {\n isLoading: false,\n displayPrompt: false,\n residentModalOpen: false,\n is2FARegisteredAO: false,\n hasPrecondition: true,\n rememberedDrawerIndex: -1,\n tentativeRememberedDrawerIndex: -1\n };\n\n residentCheck = () => {\n if (\n (this.props.agent.UtahResident && this.props.agent.Addresses.Mailing.State !== 'UT') ||\n (!this.props.agent.UtahResident && this.props.agent.Addresses.Mailing.State === 'UT')\n ) {\n this.setState({ residentModalOpen: true });\n }\n }\n\n onResidentModalClose = () => this.setState({ residentModalOpen: false });\n\n displayUnsavedChangesPrompt = (name, formNotFinished) => {\n this.setState({ displayPrompt: { [name]: formNotFinished } });\n }\n\n onDrawerToggle = (drawerIndex) => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n { hasPrecondition: true, tentativeRememberedDrawerIndex: drawerIndex },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA) {\n this.setState(\n { hasPrecondition: true, tentativeRememberedDrawerIndex: drawerIndex },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n }\n else {\n this.setState({ hasPrecondition: false, rememberedDrawerIndex: -1, tentativeRememberedDrawerIndex: -1 });\n }\n };\n\n componentDidMount() {\n const {\n agent: { AgentId },\n isAgent_AccessRole,\n agentGet,\n } = this.props;\n\n const promises = [];\n if (this.props.DeliveryMethods.length === 0)\n promises.push(this.props.getStatementDeliveryMethods());\n\n if (!AgentId && isAgent_AccessRole)\n promises.push(agentGet());\n\n if (isAgent_AccessRole) {\n promises.push(this.props.getPreferredMethod());\n }\n\n this.setState({ isLoading: true });\n Promise.all(promises)\n .then(() => {\n isAgent_AccessRole && this.props.preferredInfo.IsRegistered\n ? this.setState({ isLoading: false, is2FARegisteredAO: true })\n : this.setState({ isLoading: false });\n })\n .finally(() => {\n this.setState({ isLoading: false });\n });\n }\n\n componentDidUpdate() {\n const multiStatus = protectAction(this.props.claims);\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n this.setState({ hasPrecondition: false, rememberedDrawerIndex: this.state.tentativeRememberedDrawerIndex });\n }\n }\n\n render() {\n const { displayPrompt, isLoading, residentModalOpen, is2FARegisteredAO, rememberedDrawerIndex, hasPrecondition } = this.state;\n\n const {\n text: { Multifactor },\n agent: {\n AgentId,\n Addresses,\n FirstName,\n LastName,\n MiddleName,\n PhoneNumbers,\n },\n isAgent_AccessRole,\n isIpOnly_AccessRole,\n EmailAddress,\n UserName,\n DeliveryMethods,\n preferredInfo,\n is2FABypassed,\n text,\n } = this.props;\n const allFormsNotFinished = Boolean(Object.keys(displayPrompt).find(key => displayPrompt[key])) && !isLoading;\n const showAgentDetail = (detail) => {detail};\n const accountOwnerName = `${FirstName} ${MiddleName} ${LastName}`;\n\n return (\n
    \n
    \n
    \n
    \n
    Account Owner
    \n

    {accountOwnerName || }

    \n
    \n
    \n
    \n\n \n \n \n \n
    \n {text.UsernameCard.head_title}\n
    \n
    \n \n
    \n {showAgentDetail(UserName)}\n
    \n
    \n
    \n \n \n \n
    \n \n \n \n
    \n {text.PasswordCard.head_title}\n
    \n
    \n \n
    \n {showAgentDetail('.........')}\n
    \n
    \n
    \n \n \n \n
    \n {is2FARegisteredAO && !is2FABypassed && (\n \n \n \n
    \n {Multifactor.nav_title}\n
    \n
    \n \n
    \n {showAgentDetail(Multifactor.lbl_registered)}\n
    \n
    \n
    \n \n
    \n )}\n \n \n \n
    \n {text.EmailCard.head_title}\n
    \n
    \n \n
    \n {showAgentDetail(EmailAddress)}\n
    \n
    \n
    \n \n {text.EmailCard.head_title}\n {isIpOnly_AccessRole && }\n
    \n )}\n >\n \n \n \n {isAgent_AccessRole && (\n \n \n \n
    \n {text.AddressCard.head_title}\n
    \n
    \n \n
    \n {showAgentDetail(addressToString(Addresses.Mailing, 'Mailing'))} {/* only show 1 Skeleton loader line here */}\n {!isLoading && addressToString(Addresses.Physical, 'Physical')}\n {!isLoading && addressToString(Addresses.Other, 'Other')}\n
    \n
    \n
    \n \n {text.AddressCard.head_title}\n
    \n )}\n >\n \n \n \n )}\n {isAgent_AccessRole && (\n \n \n \n
    \n {text.PhoneNumbersCard.head_title}\n
    \n
    \n \n
    \n\n {showAgentDetail(Object.values(PhoneNumbers).map(phone => phone.Number && (\n
    \n
    {phone.Type}
    \n
    |
    \n
    {phone.Number}
    \n
    \n )))}\n
    \n
    \n
    \n \n {text.PhoneNumbersCard.head_title}\n
    \n )}\n >\n \n \n \n )}\n {isAgent_AccessRole && (\n \n \n \n
    {text.Preferences.head_notification_preferences}
    \n

    \n {text.Preferences.head_title_statement_delivery}\n

    \n
    \n \n
    \n {showAgentDetail(statementDeliveryMethodToString(DeliveryMethods))}\n
    \n
    \n
    \n \n \n \n
    \n )}\n \n\n {isAgent_AccessRole && (\n \n )}\n\n location.pathname !== text.Login.nav_path && location.pathname !== text.MyInfo.nav_path && text.MyInfo.msg_unsaved_changes}\n when={allFormsNotFinished}\n />\n\n
    \n
    \n );\n }\n}\n\nexport default connect(select, {\n get2FAPrecondition,\n getRSAPrecondition,\n agentGet,\n getStatementDeliveryMethods,\n getPreferredMethod,\n})(LanguageHOC(MyInfo));","/*\n*\n* OptionChangeDetails Component\n*\n*/\nimport React from 'react';\n\nimport PropTypes from 'prop-types';\nimport {\n CardAligned,\n CardTitle,\n CardBody,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport class OptionChangeDetails extends React.Component {\n\n static propTypes = {\n currentOptionName: PropTypes.string.isRequired,\n remainingOptionChanges: PropTypes.number.isRequired,\n };\n\n render() {\n const {\n currentOptionName,\n remainingOptionChanges,\n } = this.props;\n\n return (\n \n Option Change Details\n \n
    Current Option
    \n {currentOptionName}\n
    Option Changes Remaining for Calendar Year
    \n
    {remainingOptionChanges}
    \n
    \n
    \n );\n }\n}\n\nexport default OptionChangeDetails;","/*\n*\n* AccountsInGroupNotice Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Modal,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nexport class AccountsInGroupNotice extends React.Component {\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n groupAccounts: PropTypes.arrayOf(PropTypes.shape({\n AccountNumber: PropTypes.number,\n OptionName: PropTypes.string,\n })),\n };\n\n render() {\n const {\n groupAccounts,\n open,\n onClose,\n } = this.props;\n\n return (\n
    \n \n
    \n

    This account is 1 of {groupAccounts.length} accounts for the same account owner/beneficiary combination. This option change will count as one of the two investment option changes allowed per beneficiary for this calendar year.

    \n

    If you want to change the investment option for another account for the same beneficiary without incurring a second option change, you must make the change on the same day before the close of trading on the New York Stock Exchange, normally 2 p.m. MT. You also must make any modifications or cancellations before the close of trading.

    \n

    If you make an investment option request after the close of trading, or on a weekend or holiday, any modifications or cancellations must be received by 2 p.m. MT, the following business day.

    \n \n \n \n \n \n \n \n
    \n \n
    \n );\n }\n}\n\nexport default AccountsInGroupNotice;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Dropdown,\n} from '@frontend/common';\n\n\nexport default class Step1OptionCategory extends React.Component {\n static propTypes = {\n formInputs: PropTypes.shape({\n optionCategorySelection: PropTypes.string,\n }),\n formErrors: PropTypes.shape({\n optionCategorySelection: PropTypes.string,\n }),\n onChangeHandle: PropTypes.func.isRequired,\n dropdownOptions: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string.isRequired,\n display: PropTypes.string.isRequired,\n }))\n };\n\n render() {\n return (\n this.props.onChangeHandle({ optionCategorySelection: value })}\n options={this.props.dropdownOptions}\n FormControlProps={{ style: { width: '40%', minWidth: '300px', textAlign: 'left' } }}\n />\n );\n }\n}","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Dropdown,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nexport default class Step2SelectPredefinedOption extends React.Component {\n static propTypes = {\n formInputs: PropTypes.shape({\n selectedOptionId: PropTypes.number,\n }),\n formErrors: PropTypes.shape({\n selectedOptionId: PropTypes.string,\n }),\n onChangeHandle: PropTypes.func.isRequired,\n dropdownOptions: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string.isRequired,\n display: PropTypes.string.isRequired,\n })),\n selectedCategory: PropTypes.string.isRequired,\n };\n\n onChangeHandle = (value) => {\n this.props.onChangeHandle({ selectedOptionId: parseInt(value) });\n }\n\n render() {\n const {\n selectedCategory,\n formInputs,\n formErrors,\n dropdownOptions,\n } = this.props;\n\n return (\n
    \n
    Selected Category
    \n
    {selectedCategory}
    \n
    \n \n
    \n
    \n );\n }\n}\n\n","/*\n*\n* Step2CreateCustomizedOption Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n CalculatorForm,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nconst select = (state) => ({\n ServerDateTime: state.static.ServerDateTime,\n});\n\nexport class Step2CreateCustomizedOption extends React.Component {\n\n static propTypes = {\n onAllocationChange: PropTypes.func.isRequired,\n currentSchema: PropTypes.object.isRequired,\n selectedCategory: PropTypes.string.isRequired,\n ServerDateTime: PropTypes.string,\n };\n\n render() {\n const {\n currentSchema,\n selectedCategory,\n onAllocationChange,\n ServerDateTime\n } = this.props;\n\n return (\n
    \n
    Selected Category
    \n
    {selectedCategory}
    \n \n
    \n );\n }\n}\n\nexport default connect(select, {}, null)(Step2CreateCustomizedOption);","/*\n*\n* TermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.module.scss';\n\nexport function TermsAndConditions({ documents }) {\n return (\n
    \n

    Terms and Conditions

    \n

    Please review the following Terms and Conditions regarding investment option changes

    \n
    General Information
    \n
      \n
    • For important information about each investment option, please read my529's Program Description.
    • {/*eslint-disable-line react/no-unescaped-entities*/}\n
    • For information regarding the various investment options, see investment information at my529.org.
    • \n
    • Changing the investment option for this account will count as one investment option change. You may change your investment option for this account owner/beneficiary combination only twice per calendar year.
    • \n
    • No more than one of these accounts may be invested in the same investment option at the same time.
    • \n
    • Changing the investment option below will change the investment option for the entire balance. To transfer funds between accounts with the same beneficiary, account type, and account owner/agent, you can submit my529’s Internal Transfer Form 400 or select Transfers in Account Access.
    • {/*eslint-disable-line react/no-unescaped-entities*/}\n
    \n\n
    Customized Options
    \n
      \n
    • Changing the allocation of the underlying funds within a Customized Static account is considered an investment option change.
    • \n
    • Changing the allocation of the underlying funds within a Customized Age-Based account after the initial allocation is finalized, even if the change applies to an age bracket other than the one the beneficiary is currently in, is considered an investment option change.
    • \n
    \n\n
    Timing
    \n
      \n
    • The investment option change will usually take effect within three business days following the day you make the investment option change.
    • \n
    \n\n
    Cancellation
    \n
      \n
    • To cancel or modify your investment option change request, you must do so on the same day the request was submitted, before the close of trading on the New York Stock Exchange (NYSE), usually 2 p.m. MT. If you submitted your request after the close of trading, or on a weekend or holiday, you must submit your modification or cancellation request before the close of trading on the next day the NYSE is open. Your investment option change request may not be cancelled or modified after these deadlines.
    • \n
    \n
    \n );\n}\n\nTermsAndConditions.propTypes = {\n documents: PropTypes.shape({\n form400: PropTypes.string,\n programDescription: PropTypes.string.isRequired,\n })\n};\n\nexport default TermsAndConditions;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport {\n Checkbox,\n FormHelperText,\n FormControl,\n FormControlLabel,\n} from '@mui/material';\n\nimport {\n ExpandMore as ExpandMoreIcon,\n ExpandLess as ExpandLessIcon,\n} from '@mui/icons-material';\n\nimport {\n CalculatorForm,\n} from '@frontend/common';\n\nimport TermsAndConditions from '../TermsAndConditions';\n\nimport styles from '../styles.module.scss';\n\nconst select = (state) => ({\n ServerDateTime: state.static.ServerDateTime,\n documents: state.static.documents ? state.static.documents : {},\n});\n\nexport class Step3Submit extends React.Component {\n static propTypes = {\n selectedOptionName: PropTypes.string.isRequired,\n selectedCategory: PropTypes.string.isRequired,\n formInputs: PropTypes.shape({\n checked: PropTypes.bool,\n }),\n formErrors: PropTypes.shape({\n checked: PropTypes.string,\n }),\n onChangeHandle: PropTypes.func.isRequired,\n currentSchema: PropTypes.object.isRequired,\n matrixAllocations: PropTypes.array.isRequired,\n isCustomized: PropTypes.bool.isRequired,\n ServerDateTime: PropTypes.string,\n documents: PropTypes.object,\n };\n\n state = { \n showCustomized: false,\n };\n\n render() {\n const { \n formInputs, formErrors, onChangeHandle, selectedOptionName, isCustomized,\n ServerDateTime, selectedCategory, currentSchema, documents,\n } = this.props;\n\n const {\n showCustomized\n } = this.state;\n\n return (\n
    \n
    Selected Option
    \n {isCustomized ?\n this.setState({ showCustomized: !showCustomized })}\n >\n
    \n
    {selectedCategory}
    \n
    \n {showCustomized ? (\n \n ) : (\n \n )}\n
    \n
    \n :\n
    {selectedOptionName}
    \n }\n {isCustomized && showCustomized &&\n \n }\n \n \n onChangeHandle({ checked: e.target.checked })}\n value='primary'\n inputProps={{ 'aria-label': 'primary checkbox' }}\n />\n }\n label={'I have read and understand the above Terms and Conditions.'}\n />\n {formErrors.checked}\n \n
    \n );\n }\n}\n\nexport default connect(select, {}, null)(Step3Submit);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\n\nimport {\n CalculatorForm,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nexport default class Step4PrintReview extends React.Component {\n static propTypes = {\n pendingOptionName: PropTypes.string.isRequired,\n createdDate: PropTypes.string.isRequired,\n currentSchema: PropTypes.object.isRequired,\n isCustomized: PropTypes.bool,\n }\n\n render() {\n const { currentSchema, isCustomized, createdDate } = this.props;\n return (\n
    \n
    Pending Option Change
    \n
    {this.props.pendingOptionName}
    \n
    {dayjs(createdDate)\n .format('MM/DD/YYYY h:mm A')} MT
    \n {isCustomized &&\n }\n
    \n Please print a copy of this page for your records.\n
    \n
    \n );\n }\n}\n","/*\n *\n * TransactionStepper Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Stepper,\n Step,\n StepLabel,\n StepButton,\n Button,\n} from '@mui/material';\nimport {\n LoadingOverlay,\n} from '@frontend/common';\n\nimport { sizify } from '@frontend/common';\n\nimport styles from './styles.module.scss';\nimport { desktopWidth } from 'utils/config/_sassconfig.scss';\n\nexport class TransactionStepper extends React.Component {\n static propTypes = {\n verifyStep: PropTypes.func.isRequired,\n renderStepComponent: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n stepLabels: PropTypes.arrayOf(PropTypes.string).isRequired,\n submitStep: PropTypes.number.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number.isRequired,\n }).isRequired,\n history: PropTypes.object.isRequired,\n stepHasError: PropTypes.bool.isRequired,\n clearStepErrors: PropTypes.func.isRequired,\n termsChecked: PropTypes.bool,\n renderConfirmModal: PropTypes.func, // can pass in a ConfirmModal that can use this stepper's this.handleSubmit.\n text: PropTypes.shape({\n TransactionStepper: PropTypes.shape({\n btn_agree: PropTypes.string,\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_finish: PropTypes.string,\n btn_next: PropTypes.string,\n btn_print: PropTypes.string,\n })\n })\n };\n\n state = {\n step: 0,\n completed: {},\n buttonsDisabled: false,\n submitLoading: false,\n stepsDisabled: false,\n };\n\n isFirstStep = () => {\n return this.state.step === 0;\n };\n\n isLastStep = () => {\n return this.state.step === this.props.stepLabels.length - 1;\n };\n\n completedSteps = () => {\n return Object.keys(this.state.completed).length;\n };\n\n setStep = step => () => {\n if (this.state.completed[step]) this.setState({ step });\n };\n\n handleBack = () => {\n this.props.clearStepErrors();\n if (!this.isFirstStep()) this.setState(({ step }) => ({ step: step - 1 }));\n };\n\n handleNext = () => {\n const { clearStepErrors, verifyStep } = this.props;\n clearStepErrors();\n if (verifyStep(this.state.step)) {\n if (!this.isLastStep()) {\n const newCompleted = this.state.completed;\n newCompleted[this.state.step] = true;\n this.setState(({ step }) => ({\n step: step + 1,\n completed: newCompleted\n }));\n }\n }\n };\n\n getCompletedStepsToThisStep(step, completed, isCompleted) {\n for (let i = 0; i <= step; i++) {\n completed[i] = isCompleted;\n }\n return completed;\n }\n\n handleSubmit = () => {\n const { step, completed } = this.state;\n const { clearStepErrors, verifyStep, handleSubmit } = this.props;\n clearStepErrors();\n if (verifyStep(step)) {\n this.setState({ submitLoading: true });\n handleSubmit()\n .then(() => {\n // disable all previous completed steps and buttons\n this.setState(({ step, completed }) => ({\n step: step + 1,\n buttonsDisabled: true,\n completed: this.getCompletedStepsToThisStep(step, completed, true),\n stepsDisabled: true,\n submitLoading: false,\n }));\n // after any submit scroll to top\n window.scrollTo(0, 0);\n })\n .catch(() => {\n // re-enable previous step buttons also\n this.setState({\n buttonsDisabled: false,\n completed: this.getCompletedStepsToThisStep(step, completed, true),\n submitLoading: false,\n });\n });\n }\n };\n\n handleFinish = () => {\n this.props.history.goBack();\n }\n\n renderButtons = () => {\n const { submitStep, termsChecked = true, text: { TransactionStepper } } = this.props; //terms checked left as true, unless passed in props.\n const { step, buttonsDisabled } = this.state;\n const cancelButton = (\n \n {TransactionStepper.btn_cancel}\n \n );\n const backButton = (\n \n {TransactionStepper.btn_back}\n \n );\n const nextButton = (\n \n {TransactionStepper.btn_next}\n \n );\n const submitButton = (\n \n \n {TransactionStepper.btn_agree}\n \n \n );\n const finishButton = (\n \n {TransactionStepper.btn_finish}\n \n );\n\n const printButton = (\n \n {TransactionStepper.btn_print}\n \n );\n\n let buttons;\n\n if (submitStep === step) {\n buttons = [\n cancelButton,\n backButton,\n submitButton\n ];\n }\n else if (this.isLastStep()) {\n buttons = [\n printButton,\n finishButton\n ];\n }\n else if (step === 0) {\n buttons = [\n cancelButton,\n nextButton,\n ];\n }\n else {\n buttons = [\n cancelButton,\n backButton,\n nextButton,\n ];\n }\n\n return buttons;\n }\n\n render() {\n const { step, completed, stepsDisabled } = this.state;\n const { renderStepComponent, stepLabels, size, stepHasError } = this.props;\n \n return (\n
    \n
    \n
    \n \n {stepLabels.map((label, index) => (\n \n \n \n {label}\n \n \n \n ))}\n \n
    \n
    \n\n
    \n {renderStepComponent(step)}\n
    \n\n
    \n {this.renderButtons()}\n
    \n\n {this.props.renderConfirmModal && this.props.renderConfirmModal(this.handleSubmit) /* if the renderConfirmModal exists, then render it. */}\n
    \n );\n }\n}\n\nexport default withRouter(sizify(LanguageHOC(TransactionStepper)));\n","export const NEW_OPTIONS = {\n PREDEFINED_STATIC: 'Static',\n PREDEFINED_ENROLLMENTDATE: 'Target Enrollment Date',\n CUSTOMIZED_AGEBASED: 'Create Customized Age-Based',\n CUSTOMIZED_STATIC: 'Create Customized Static',\n};","/*\n *\n * NewOptions Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport { cloneDeep, isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n LoadingOverlay,\n notificationShow,\n allNotificationsHide,\n CardAligned,\n CardBody,\n populate3DCalculatorSchema,\n sizify,\n Modal\n} from '@frontend/common';\n\nimport Step1OptionCategory from './StepComponents/Step1OptionCategory';\nimport Step2SelectPredefinedOption from './StepComponents/Step2SelectPredefinedOption';\nimport Step2CreateCustomizedOption from './StepComponents/Step2CreateCustomizedOption';\nimport Step3Submit from './StepComponents/Step3Submit';\nimport Step4PrintReview from './StepComponents/Step4PrintReview';\nimport TransactionStepper from 'components/Features/protected/Accounts/Transactions/TransactionStepper';\n\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport {\n postNewOptions,\n getNewAgeBasedSchema,\n getNewStaticSchema,\n} from 'components/Features/protected/Accounts/Transactions/OptionChanges/actions';\n\nimport { accountInvestmentPathGet } from 'components/Features/protected/Accounts/actions';\n\nimport { NEW_OPTIONS } from './constants';\n\nimport { mobileWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n getNotifications: PropTypes.func.isRequired,\n selectedTransaction: state.transactions.selectedTransaction,\n predefinedOptions: state.optionChanges.predefinedOptions,\n newAgeBasedSchema: state.optionChanges.newAgeBasedSchema,\n newStaticSchema: state.optionChanges.newStaticSchema,\n investmentPath: state.accounts.investmentPath,\n});\n\nexport class NewOptions extends React.Component {\n static propTypes = {\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n getNotifications: PropTypes.func.isRequired,\n postNewOptions: PropTypes.func.isRequired,\n predefinedOptions: PropTypes.arrayOf(PropTypes.shape({\n OptionId: PropTypes.number.isRequired,\n Name: PropTypes.string.isRequired,\n isStatic: PropTypes.bool.isRequired,\n isEnrollmentDate: PropTypes.bool.isRequired,\n })),\n notificationShow: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n currentOptionId: PropTypes.number.isRequired,\n currentOptionName: PropTypes.string.isRequired,\n selectedTransaction: PropTypes.object.isRequired,\n isEditing: PropTypes.bool.isRequired,\n newAgeBasedSchema: PropTypes.object.isRequired,\n newStaticSchema: PropTypes.object.isRequired,\n getNewAgeBasedSchema: PropTypes.func.isRequired,\n getNewStaticSchema: PropTypes.func.isRequired,\n accountInvestmentPathGet: PropTypes.func.isRequired,\n investmentPath: PropTypes.object.isRequired,\n text: PropTypes.shape({\n OptionChanges: PropTypes.shape({\n NewOptions: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n step_labels: PropTypes.arrayOf(PropTypes.string).isRequired,\n customized_agebased_option_selection_name: PropTypes.string.isRequired,\n customized_static_option_selection_name: PropTypes.string.isRequired,\n errors: PropTypes.shape({\n empty_category_selection: PropTypes.string.isRequired,\n empty_option_selection: PropTypes.string.isRequired,\n duplicate_option_selection: PropTypes.string.isRequired,\n agree_to_terms: PropTypes.string.isRequired,\n total_allocations_for_each_bracket_100_percent: PropTypes.string.isRequired,\n total_allocations_100_percent: PropTypes.string.isRequired,\n }).isRequired,\n success_message: PropTypes.string.isRequired,\n btn_ok: PropTypes.string.isRequired,\n title_options_on_mobile: PropTypes.string.isRequired,\n text_options_on_mobile: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n }).isRequired,\n }\n\n state = {\n isInitialLoad: true,\n loading: false,\n stepHasError: false,\n selectedOptionName: '',\n selectedCategory: '',\n currentSchema: { FundCategories: [] },\n isCustomized: false,\n stepData: [\n // 0\n {\n formInputs: { optionCategorySelection: '' },\n formErrors: { optionCategorySelection: '' }\n },\n // 1\n {\n formInputs: { selectedOptionId: -1, matrixAllocations: [] },\n formErrors: { selectedOptionId: '', calculatorErrors: {} }\n },\n // 2\n {\n formInputs: { checked: false },\n formErrors: { checked: '' }\n }\n ],\n stepDataScreenshot: [\n // 0\n {\n formInputs: { optionCategorySelection: '' },\n formErrors: { optionCategorySelection: '' }\n },\n // 1\n {\n formInputs: { selectedOptionId: -1, matrixAllocations: [] },\n formErrors: { selectedOptionId: '', calculatorErrors: {} }\n },\n // 2\n {\n formInputs: { checked: false },\n formErrors: { checked: '' }\n }\n ],\n calculatorErrors: {},\n createdDate: '',\n showModalWhenMobileAndCustomized: false,\n };\n\n stepLabels = this.props.text.OptionChanges.NewOptions.step_labels; // length will also decide number of steps\n\n displayUnsavedChangesPrompt = () => {\n // we need to only know if any form inputs changed\n const { loading, stepData, stepDataScreenshot } = this.state;\n return !loading && stepData.findIndex((stepDataItem, step) => !isEqual(stepDataItem.formInputs, stepDataScreenshot[step].formInputs)) !== -1;\n }\n\n clearStepErrors = () => {\n const updatedStepData = this.state.stepData;\n updatedStepData.forEach(stepData => {\n const clearedFormErrors = stepData.formErrors;\n // should update updatedStepData by reference\n Object.keys(clearedFormErrors).forEach(key => clearedFormErrors[key] = '');\n });\n\n this.setState({\n stepHasError: false,\n stepData: updatedStepData,\n });\n }\n\n getSetInvestmentPath(selectedCategory) {\n this.setState({ loading: true });\n this.props.accountInvestmentPathGet(this.props.match.params.accountId, true)\n .then(() => {\n this.setState({\n isCustomized: true,\n selectedCategory,\n currentSchema: this.props.investmentPath,\n });\n })\n .finally(() => {\n this.setState({ loading: false });\n });\n }\n\n saveCategoryNameStep0 = (selectedCategory, isInitialized = false) => {\n const {\n isEditing, selectedTransaction, newAgeBasedSchema, newStaticSchema,\n currentOptionName\n } = this.props;\n\n // if existing investment path is customized use it when starting new customized option change \n const useInvestmentPathSchema = selectedCategory.includes(currentOptionName) && !isEditing;\n const useExistingCustomAllocation = selectedCategory.includes(selectedTransaction.scheduledOptionName) && isEditing;\n\n switch (selectedCategory) {\n case NEW_OPTIONS.CUSTOMIZED_AGEBASED: {\n if (useInvestmentPathSchema) {\n this.getSetInvestmentPath(selectedCategory);\n }\n else {\n this.setState({\n isCustomized: true,\n selectedCategory,\n currentSchema: useExistingCustomAllocation ? selectedTransaction.customAllocation : newAgeBasedSchema,\n });\n }\n\n break;\n }\n case NEW_OPTIONS.CUSTOMIZED_STATIC: {\n if (useInvestmentPathSchema) {\n this.getSetInvestmentPath(selectedCategory);\n }\n else {\n this.setState({\n isCustomized: true,\n selectedCategory,\n currentSchema: useExistingCustomAllocation ? selectedTransaction.customAllocation : newStaticSchema,\n });\n }\n\n break;\n }\n\n default:\n this.setState({\n isCustomized: false,\n selectedCategory\n });\n }\n\n // When category changed reset step 2 and 3 inputs also\n if (this.state.selectedCategory !== selectedCategory && !isInitialized) {\n const updatedStepData = this.state.stepData;\n const matrixAllocations = this.state.stepData[1].formInputs.matrixAllocations;\n updatedStepData[1] = {\n formInputs: { selectedOptionId: -1, matrixAllocations },\n formErrors: { selectedOptionId: '' }\n };\n updatedStepData[2] = {\n formInputs: { checked: false },\n formErrors: { checked: '' }\n };\n this.setState({\n stepData: updatedStepData\n });\n }\n }\n\n saveOptionNameStep1 = (selectedOptionId, selectedCategory) => {\n const {\n OptionChanges: {\n NewOptions: {\n customized_agebased_option_selection_name,\n customized_static_option_selection_name,\n }\n }\n } = this.props.text;\n\n switch (selectedCategory) {\n case NEW_OPTIONS.CUSTOMIZED_AGEBASED:\n this.setState({\n isCustomized: true,\n selectedOptionName: customized_agebased_option_selection_name,\n });\n break;\n case NEW_OPTIONS.CUSTOMIZED_STATIC:\n this.setState({\n isCustomized: true,\n selectedOptionName: customized_static_option_selection_name,\n });\n break;\n case NEW_OPTIONS.PREDEFINED_ENROLLMENTDATE:\n case NEW_OPTIONS.PREDEFINED_STATIC: {\n const selectedOptionName = this.props.predefinedOptions.find(option => option.OptionId === selectedOptionId).Name;\n this.setState({\n isCustomized: false,\n selectedOptionName,\n });\n break;\n }\n default:\n // do nothing\n }\n }\n\n onChangeHandle = (step, formInputs) => {\n if (step === 0) {\n const { size: { windowWidth } } = this.props;\n const isMobile = windowWidth < parseInt(mobileWidth);\n const isCustomized = formInputs.optionCategorySelection === NEW_OPTIONS.CUSTOMIZED_AGEBASED || formInputs.optionCategorySelection === NEW_OPTIONS.CUSTOMIZED_STATIC;\n // catching if user is doing customized on mobile device\n if (isMobile && isCustomized) {\n // show a popup and clear the category\n this.setState({ showModalWhenMobileAndCustomized: true });\n formInputs.optionCategorySelection = '';\n }\n else {\n // proceed as usual\n this.saveCategoryNameStep0(formInputs.optionCategorySelection);\n }\n }\n else if (step === 1) {\n this.saveOptionNameStep1(formInputs.selectedOptionId, this.state.stepData[0].formInputs.optionCategorySelection);\n }\n\n if (this.state.stepHasError)\n this.clearStepErrors(); // run just once when user starts typing\n\n const newStepData = this.state.stepData;\n newStepData[step].formErrors = {}; // always reset errors\n newStepData[step].formInputs = { ...newStepData[step].formInputs, ...formInputs }; // otherwise it would nuke other fields\n this.setState({ stepData: newStepData });\n };\n\n verifyStep = step => {\n const {\n OptionChanges: {\n NewOptions: {\n errors: {\n empty_category_selection,\n empty_option_selection,\n duplicate_option_selection,\n agree_to_terms,\n },\n }\n }\n } = this.props.text;\n\n // call only on clicking next button\n const formErrors = {}; // always reset errors\n switch (step) {\n case 0:\n if (this.state.stepData[0].formInputs.optionCategorySelection.trim() === '') {\n formErrors.optionCategorySelection = empty_category_selection;\n }\n break;\n\n case 1:\n // depends on the previous step 0 selection\n switch (this.state.stepData[0].formInputs.optionCategorySelection) {\n case NEW_OPTIONS.PREDEFINED_ENROLLMENTDATE:\n case NEW_OPTIONS.PREDEFINED_STATIC: {\n const selectedOptionId = this.state.stepData[1].formInputs.selectedOptionId;\n if (selectedOptionId.toString().trim() === '' || selectedOptionId === -1) {\n formErrors.selectedOptionId = empty_option_selection;\n }\n if (selectedOptionId === this.props.selectedTransaction.sheduledOptionId && this.props.isEditing) {\n formErrors.selectedOptionId = duplicate_option_selection;\n }\n break;\n }\n case NEW_OPTIONS.CUSTOMIZED_AGEBASED:\n case NEW_OPTIONS.CUSTOMIZED_STATIC: {\n const {\n hasAnyBracketTotalNot100Error,\n hasAllocationAmountError,\n hasBracketTotalSumOver100Error\n } = this.state.calculatorErrors;\n const matrixAllocations = this.state.stepData[1].formInputs.matrixAllocations;\n\n // This should forward all calculator errors\n formErrors.hasAnyBracketTotalNot100Error = hasAnyBracketTotalNot100Error;\n formErrors.hasAllocationAmountError = hasAllocationAmountError;\n formErrors.hasBracketTotalSumOver100Error = hasBracketTotalSumOver100Error;\n // show error toasts if any\n hasAnyBracketTotalNot100Error && this.props.notificationShow(hasAnyBracketTotalNot100Error, 'error');\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError \n ? this.props.notificationShow(hasAllocationAmountError, 'error')\n : formErrors.hasAllocationAmountError = this.validateAllocations(matrixAllocations); // if allocation error doesn't already exist, run validation to see if any other errors exist; would only be on an existing schema where value is over a new Max Allocation amount\n // populate the schema with values to be used in view only\n this.setState({ currentSchema: populate3DCalculatorSchema(matrixAllocations, this.state.currentSchema) });\n break;\n }\n default:\n formErrors.selectedOptionId = `Could not choose selection based on option category: ${this.state.stepData[0].formInputs.optionCategorySelection}`;\n }\n break;\n\n case 2:\n if (this.state.stepData[2].formInputs.checked === false) {\n formErrors.checked = agree_to_terms;\n }\n break;\n\n default:\n this.props.notificationShow(`Could not verify the step: ${step}`, 'error');\n }\n\n const newStepData = this.state.stepData;\n newStepData[step].formErrors = formErrors;\n this.setState({\n stepData: newStepData\n });\n const hasNoErrors = Object.values(formErrors).filter(err => err !== '').length === 0;\n this.setState({ stepHasError: !hasNoErrors });\n\n // return hasNoErrors && this.state.hasNoCustomAllocationOnBlurErrors && hasNoNewCustomAllocationError;\n return hasNoErrors;\n\n };\n\n validateAllocations = matrixAllocations => {\n const fundCategories = this.state.currentSchema.FundCategories;\n let hasAllocationAmountError = '';\n\n matrixAllocations.forEach((categories, categoryIndex) => {\n categories.forEach((fund, fundIndex) => {\n fund.forEach(amount => {\n const { FundName, MaximumAllocation } = fundCategories[categoryIndex].Funds[fundIndex];\n if (Number(amount || 0) > MaximumAllocation) {\n hasAllocationAmountError = `The percentage for ${FundName} cannot exceed ${MaximumAllocation}%`;\n this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n });\n });\n });\n\n return hasAllocationAmountError;\n }\n\n onAllocationChange = (matrixAllocations, calculatorErrors) => {\n const { stepData, isInitialLoad, } = this.state;\n const updatedStepData = stepData;\n updatedStepData[1].formInputs = { selectedOptionId: -1, matrixAllocations };\n\n // only on the initial load of the Calculator form, it will run through all the funds and provide an error toast for any existing values that are over the current max allocation allowed\n if (isInitialLoad) {\n this.validateAllocations(matrixAllocations);\n this.setState({ isInitialLoad: false, });\n }\n\n this.setState({ stepData: updatedStepData, calculatorErrors });\n // throw a toast on specific form errors\n const { hasAllocationAmountError, hasBracketTotalSumOver100Error } = calculatorErrors;\n if (hasAllocationAmountError || hasBracketTotalSumOver100Error) {\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError && this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n else if (!isInitialLoad) { // ignore on initial loading\n this.props.allNotificationsHide();\n }\n }\n\n handleSubmit = () => {\n const {\n OptionChanges: {\n NewOptions: {\n success_message,\n }\n }\n } = this.props.text;\n\n const accountId = this.props.match.params.accountId;\n // when submitting values below should be available\n const selectedCategory = this.state.stepData[0].formInputs.optionCategorySelection;\n const selectedOptionId = this.state.stepData[1].formInputs.selectedOptionId;\n const matrixAllocations = this.state.stepData[1].formInputs.matrixAllocations;\n this.setState({ loading: true });\n\n let postBody;\n switch (selectedCategory) {\n case NEW_OPTIONS.PREDEFINED_ENROLLMENTDATE:\n case NEW_OPTIONS.PREDEFINED_STATIC:\n postBody = [{\n AccountId: parseInt(accountId),\n OptionId: parseInt(selectedOptionId)\n }];\n break;\n case NEW_OPTIONS.CUSTOMIZED_AGEBASED:\n case NEW_OPTIONS.CUSTOMIZED_STATIC:\n postBody = [{\n AccountId: parseInt(accountId),\n matrixAllocations,\n CustomSchema: this.state.currentSchema,\n }];\n break;\n default:\n postBody = [];\n }\n\n return this.props.postNewOptions(postBody)\n .then(response => {\n const createdDate = response.payload.data; // gets created datetime from server to display on print page\n this.setState({\n createdDate,\n stepDataScreenshot: cloneDeep(this.state.stepData)\n });\n this.props.notificationShow(success_message, 'success');\n this.props.getNotifications(); // refreshes app notifications\n })\n .finally(() => this.setState({ loading: false }));\n };\n\n renderStepComponent = step => {\n const {\n predefinedOptions,\n currentOptionId,\n } = this.props;\n // remove current option from dropdown menu\n const availablePredefinedOptions = predefinedOptions.filter(option => option.OptionId !== currentOptionId);\n let stepComponent;\n switch (step) {\n case 0: {\n const Step1OptionCategoryOptions = Object.values(NEW_OPTIONS).map(value => ({ value, display: value }));\n stepComponent = (\n this.onChangeHandle(0, formInputs)}\n dropdownOptions={Step1OptionCategoryOptions}\n />\n );\n break;\n }\n\n case 1: {\n // depends on the previous step 0 selection if new\n let Step2SelectOptionComponent;\n switch (this.state.stepData[0].formInputs.optionCategorySelection) {\n case NEW_OPTIONS.PREDEFINED_STATIC: {\n const staticOptions = availablePredefinedOptions\n .filter(option => option.isStatic)\n .map(option => ({ value: option.OptionId.toString(), display: option.Name }));\n Step2SelectOptionComponent = (\n this.onChangeHandle(1, formInputs)}\n dropdownOptions={staticOptions}\n selectedCategory={this.state.selectedCategory}\n />\n );\n break;\n }\n case NEW_OPTIONS.PREDEFINED_ENROLLMENTDATE: {\n const enrollmentDateOptions = availablePredefinedOptions\n .filter(option => option.isEnrollmentDate)\n .map(option => ({ value: option.OptionId.toString(), display: option.Name }));\n Step2SelectOptionComponent = (\n this.onChangeHandle(1, formInputs)}\n dropdownOptions={enrollmentDateOptions}\n selectedCategory={this.state.selectedCategory}\n />\n );\n break;\n }\n case NEW_OPTIONS.CUSTOMIZED_AGEBASED:\n case NEW_OPTIONS.CUSTOMIZED_STATIC:\n Step2SelectOptionComponent = (\n \n );\n break;\n default:\n Step2SelectOptionComponent =
    Oops! No new option selection found.
    ;\n }\n stepComponent = Step2SelectOptionComponent;\n break;\n }\n\n case 2: {\n stepComponent = (\n this.onChangeHandle(2, formInputs)}\n currentSchema={this.state.currentSchema}\n matrixAllocations={this.state.stepData[1].formInputs.matrixAllocations}\n isCustomized={this.state.isCustomized}\n />\n );\n break;\n }\n\n case 3: {\n stepComponent = (\n \n );\n break;\n }\n\n default:\n stepComponent =
    Step does not exist!
    ;\n }\n return stepComponent;\n };\n\n findCategoryByOptionId(optionId) {\n const category = this.props.predefinedOptions.find(option => option.OptionId === optionId);\n let optionCategorySelection = '';\n // this reflects how api/transactions/optionchanges/:OptionChangeId/actions/:ActionId works\n if (category === undefined) {\n // OptionId not found, it must be customized age-based (OptionId=0?)\n optionCategorySelection = NEW_OPTIONS.CUSTOMIZED_AGEBASED;\n }\n else if (category.isEnrollmentDate) {\n optionCategorySelection = NEW_OPTIONS.PREDEFINED_ENROLLMENTDATE;\n }\n else if (category.isStatic) {\n optionCategorySelection = NEW_OPTIONS.PREDEFINED_STATIC;\n }\n else {\n // OptionId=12, it must be customized static\n optionCategorySelection = NEW_OPTIONS.CUSTOMIZED_STATIC;\n }\n return optionCategorySelection;\n }\n\n initializeFormInputs() {\n const { selectedTransaction, isEditing, size: { windowWidth } } = this.props;\n if (isEditing) {\n // set dropdown options when editing\n const isEditingStepData = this.state.stepData;\n const optionCategorySelection = this.findCategoryByOptionId(selectedTransaction.sheduledOptionId);\n\n // catching if user is doing customized on mobile device\n const isMobile = windowWidth < parseInt(mobileWidth);\n const isCustomized = optionCategorySelection === NEW_OPTIONS.CUSTOMIZED_AGEBASED || optionCategorySelection === NEW_OPTIONS.CUSTOMIZED_STATIC;\n if (isMobile && isCustomized) {\n // show a popup and clear the category\n this.setState({ showModalWhenMobileAndCustomized: true });\n isEditingStepData[0].formInputs.optionCategorySelection = '';\n isEditingStepData[1].formInputs.selectedOptionId = '';\n isEditingStepData[1].formInputs.matrixAllocations = [];\n }\n else {\n isEditingStepData[0].formInputs.optionCategorySelection = optionCategorySelection;\n isEditingStepData[1].formInputs.selectedOptionId = selectedTransaction.sheduledOptionId;\n isEditingStepData[1].formInputs.matrixAllocations = selectedTransaction.matrixAllocations;\n }\n\n this.setState({\n stepData: isEditingStepData,\n stepDataScreenshot: cloneDeep(isEditingStepData),\n });\n this.saveCategoryNameStep0(isEditingStepData[0].formInputs.optionCategorySelection, true);\n this.saveOptionNameStep1(isEditingStepData[1].formInputs.selectedOptionId, isEditingStepData[0].formInputs.optionCategorySelection);\n }\n else {\n this.setState({ stepDataScreenshot: cloneDeep(this.state.stepData) });\n }\n }\n\n componentDidMount() {\n if (this.props.predefinedOptions.length > 0) {\n this.initializeFormInputs();\n }\n else {\n this.setState({ stepDataScreenshot: cloneDeep(this.state.stepData) });\n }\n\n // for simplicity load customized age-based or static templates if missing\n const promises = [];\n if (this.props.newAgeBasedSchema.FundCategories.length === 0) {\n promises.push(this.props.getNewAgeBasedSchema());\n }\n\n if (this.props.newStaticSchema.FundCategories.length === 0) {\n promises.push(this.props.getNewStaticSchema());\n }\n\n if (promises.length > 0) {\n this.setState({ loading: true });\n Promise.all(promises)\n .then(() => this.setState({ stepDataScreenshot: cloneDeep(this.state.stepData) }))\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.predefinedOptions.length !== this.props.predefinedOptions.length && this.props.predefinedOptions.length > 0) {\n this.initializeFormInputs();\n }\n }\n\n render() {\n const {\n OptionChanges: {\n NewOptions: {\n btn_ok, title_options_on_mobile, text_options_on_mobile\n }\n }\n } = this.props.text;\n\n return (\n \n \n \n \n \n \n\n \n\n this.setState({ showModalWhenMobileAndCustomized: false }),\n }]}\n fullScreen={false}\n onCloseModal={() => this.setState({ showModalWhenMobileAndCustomized: false })}\n show={this.state.showModalWhenMobileAndCustomized}\n title={title_options_on_mobile}\n >\n {text_options_on_mobile}\n \n\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getNotifications,\n postNewOptions,\n notificationShow,\n allNotificationsHide,\n getNewAgeBasedSchema,\n getNewStaticSchema,\n accountInvestmentPathGet\n})(sizify(LanguageHOC(NewOptions))));\n","/*\n*\n* OptionChangeDetails Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Icon } from '@mui/material';\nimport {\n CardAligned,\n CardTitle,\n CardBody,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport class AccountInfo extends React.Component {\n\n static propTypes = {\n AccountsInGroupNoticeShow: PropTypes.func.isRequired,\n agentName: PropTypes.string.isRequired,\n beneficiaryName: PropTypes.string.isRequired,\n accountNumber: PropTypes.number.isRequired,\n totalMarketValue: PropTypes.string.isRequired,\n accountType: PropTypes.string.isRequired,\n accountsInGroup: PropTypes.number.isRequired,\n };\n\n render() {\n const {\n AccountsInGroupNoticeShow,\n agentName,\n beneficiaryName,\n accountNumber,\n totalMarketValue,\n accountType,\n accountsInGroup,\n } = this.props;\n\n return (\n \n Account Details\n \n
    \n
    \n
    \n
    Account Owner
    \n {agentName}\n
    \n\n
    \n
    Beneficiary
    \n {beneficiaryName}\n
    \n
    \n\n
    \n
    \n
    Account Number
    \n {accountNumber}\n
    \n
    \n
    Total Value
    \n {totalMarketValue}\n
    \n
    \n\n
    \n
    \n
    Account Type
    \n {accountType}\n
    \n {accountsInGroup > 1 && (\n
    \n
    \n
    Accounts in Group
    \n \n help_outline\n \n
    \n {accountsInGroup}\n
    \n )}\n\n
    \n\n
    \n
    \n
    \n );\n }\n}\n\nexport default AccountInfo;","/*\n*\n* OptionChanges Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport OptionChangeDetails from './OptionChangeDetails';\nimport AccountsInGroupNotice from './AccountsInGroupNotice';\nimport NewOptions from './NewOptions';\nimport AccountInfo from './AccountInfo';\n\nimport {\n Breadcrumbs,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport { connect } from 'react-redux';\n\nimport {\n getPreTransactionDetails,\n} from 'components/Features/protected/Accounts/Transactions/actions';\n\nimport {\n getPredefinedOptions,\n} from './actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n preTransactionDetails: state.transactions.preTransactionDetails,\n preflightAccount: state.transactions.preflightAccount,\n predefinedOptions: state.optionChanges.predefinedOptions,\n selectedTransaction: state.transactions.selectedTransaction,\n});\n\nexport class OptionChanges extends React.Component {\n static propTypes = {\n getPredefinedOptions: PropTypes.func.isRequired,\n predefinedOptions: PropTypes.arrayOf(PropTypes.shape({\n OptionId: PropTypes.number.isRequired,\n Name: PropTypes.string.isRequired,\n isStatic: PropTypes.bool.isRequired,\n isEnrollmentDate: PropTypes.bool.isRequired,\n })),\n preTransactionDetails: PropTypes.shape({\n AccountType: PropTypes.string,\n AccountId: PropTypes.number,\n AccountNumber: PropTypes.number,\n accountType: PropTypes.string,\n agentName: PropTypes.string,\n beneficiaryName: PropTypes.string,\n OptionName: PropTypes.string,\n groupAccounts: PropTypes.arrayOf(PropTypes.shape({\n AccountId: PropTypes.number,\n AccountNumber: PropTypes.number,\n OptionName: PropTypes.string,\n marketValue: PropTypes.string,\n })),\n OptionChangeCreate: PropTypes.bool,\n OptionId: PropTypes.number,\n RemainingOptionChanges: PropTypes.number,\n totalMarketValue: PropTypes.string,\n }).isRequired,\n getPreTransactionDetails: PropTypes.func.isRequired,\n preflightAccount: PropTypes.shape({\n AccountGroupId: PropTypes.number.isRequired,\n }).isRequired,\n text: PropTypes.shape({\n Transactions: PropTypes.shape({\n nav_path: PropTypes.func,\n }).isRequired,\n Accounts: PropTypes.shape({\n accounts_path: PropTypes.string,\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n nav_title: PropTypes.string,\n }),\n }).isRequired,\n selectedTransaction: PropTypes.object.isRequired,\n };\n\n state = {\n accountId: this.props.match.params.accountId,\n loading: false,\n openModal: false,\n isEditing: window.location.href.search('edit') > -1,\n };\n\n toggleAccountsInGroupNotice = () => {\n this.setState({ openModal: !this.state.openModal });\n }\n\n componentDidMount() {\n const {\n predefinedOptions,\n getPredefinedOptions,\n getPreTransactionDetails,\n } = this.props;\n const { accountId } = this.state;\n let accountGroupId;\n\n // selectively get resources for this option change transaction\n this.setState({ loading: true });\n if (!this.state.isEditing) {\n const { preflightAccount } = this.props;\n accountGroupId = preflightAccount.AccountGroupId;\n }\n else {\n // get sheduled transaction details and predefined option\n const { selectedTransaction } = this.props;\n accountGroupId = selectedTransaction.AccountGroupId;\n }\n \n getPreTransactionDetails(accountId, accountGroupId)\n .then(() => {\n const preTransactionDetails = this.props.preTransactionDetails;\n if (preTransactionDetails.groupAccounts.length > 1)\n this.toggleAccountsInGroupNotice();\n })\n .then(() => {\n if (predefinedOptions.length === 0) {\n return getPredefinedOptions();\n }\n })\n .finally(() => this.setState({ loading: false }));\n }\n\n render() {\n const { \n preTransactionDetails,\n text: { Accounts, AccountDetails } \n } = this.props;\n const { loading, openModal, isEditing, accountId } = this.state;\n \n return (\n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n );\n }\n\n}\n\nexport default connect(select, {\n getPreTransactionDetails,\n getPredefinedOptions,\n})(LanguageHOC(OptionChanges));\n","/*\n*\n* AccountDetailsCard Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Card,\n InfoIcon,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nAccountDetailsCard.propTypes = {\n sourceAccount: PropTypes.object,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n head_account_number: PropTypes.string,\n head_account_owner: PropTypes.string,\n head_account_type: PropTypes.string,\n head_available_balance: PropTypes.string,\n head_bene: PropTypes.string,\n head_total_value: PropTypes.string,\n msg_balance_info: PropTypes.func,\n })\n })\n};\n\nAccountDetailsCard.defaultProps = {\n sourceAccount: {\n agent: {\n name: ''\n },\n beneficiary: {\n name: ''\n },\n accountNumber: '',\n totalValue: '',\n accountType: '',\n // netAvailable: 0, this field does not seem to be available in the data\n \n }\n};\n\nexport function AccountDetailsCard({ sourceAccount, text: { Transfers } }) {\n return (\n
    \n \n
    \n
    \n
    {Transfers.head_account_owner}
    \n {sourceAccount.agent.name}\n
    \n
    \n
    {Transfers.head_bene}
    \n {sourceAccount.beneficiary.name}\n
    \n
    \n
    {Transfers.head_account_number}
    \n {sourceAccount.accountNumber}\n
    \n
    \n
    {Transfers.head_total_value}
    \n {sourceAccount.totalValue}\n
    \n
    \n
    {Transfers.head_account_type}
    \n {sourceAccount.accountType}\n
    \n
    \n
    \n {Transfers.head_available_balance}\n \n
    \n {sourceAccount.netAvailable}\n
    \n
    \n \n
    \n );\n}\n\nexport default LanguageHOC(AccountDetailsCard);\n","/*\n*\n* DualPushButtonSwitch Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\n// eslint-disable-next-line react/prop-types\nfunction OptionButton({ label, value, active, disabled, onChange, style }) {\n return (\n onChange(value)}\n >\n {label}\n \n );\n}\n\nDualPushButtonSwitch.propTypes = {\n onChange: PropTypes.func.isRequired,\n groupLabel: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n radioLabel: PropTypes.string,\n })).isRequired,\n};\n\nexport function DualPushButtonSwitch({ onChange, options = {} }) {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n}\n\nexport default DualPushButtonSwitch;\n","export const TransferTypes = {\n full: 'full',\n partial: 'partial',\n};\n\nexport const TransferInputTypes = {\n Amount: 'Amount',\n Percentage: 'Percentage'\n};\n","import { get } from 'lodash';\r\n\r\nexport function formatAccountDisplayText(account) { //destination accounts data is labeled with capitals slightly differently from original accounts list data labels. Need to make the same.\r\n const accountNumber = get(account, 'accountNumber', '').toString();\r\n return `${get(account, 'beneficiary.name', '').toUpperCase()} ...${accountNumber.substring(accountNumber.length - 5)}`;\r\n}\r\n","/*\n*\n* TargetAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { TransferInputTypes } from '../typeConstants';\nimport { formatAccountDisplayText } from '../formatAccountDisplayText';\nimport {\n BaseNumberInput,\n CurrencyInput,\n Dropdown,\n IconBtnTooltip,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function parseFloatWrapper(callback) {\n return ({ floatValue, ...etc }) => {\n callback({\n ...etc,\n value: floatValue,\n });\n };\n}\n\nconst noop = () => null;\n\nTargetAccount.propTypes = {\n accountOptions: PropTypes.array,\n index: PropTypes.number,\n target: PropTypes.object,\n onAccountChange: PropTypes.func,\n canRemove: PropTypes.bool,\n onRemove: PropTypes.func,\n accountError: PropTypes.string,\n inputError: PropTypes.string,\n inputFieldType: PropTypes.oneOf([TransferInputTypes.Amount, TransferInputTypes.Percentage]),\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n lbl_destination_account: PropTypes.string,\n })\n }),\n};\n\nTargetAccount.defaultProps = {\n accountOptions: [],\n index: 0,\n target: { AccountId: '', Amount: 0, Percentage: 0 },\n canRemove: false,\n inputFieldType: TransferInputTypes.Amount,\n onAccountChange: noop,\n onRemove: noop,\n accountError: '',\n inputError: '',\n};\n\nexport function TargetAccount({\n index,\n accountOptions,\n target,\n inputFieldType,\n onAccountChange,\n canRemove,\n onRemove,\n accountError,\n inputError,\n text: { Transfers },\n}) {\n return (\n
    \n onAccountChange({ ...target, AccountId: value })}\n options={accountOptions.map(account => ({\n value: account.accountId,\n display: formatAccountDisplayText(account),\n props: {\n disabled: account.disabled,\n },\n }))}\n FormControlProps={{ style: { width: '200px' } }}\n InputLabelProps={{ htmlFor: `destinationSelect-${index}` }}\n SelectProps={{\n inputProps: {\n id: `destinationSelect-${index}`,\n name: 'destinationSelect',\n },\n }}\n />\n {inputFieldType === TransferInputTypes.Amount ?\n onAccountChange({\n ...target,\n Amount: value,\n }))}\n errorText={inputError}\n />\n :\n onAccountChange({\n ...target,\n Percentage: parseInt(value.replace('.', '')),\n })}\n inputProps={{\n suffix: '%',\n allowNegative: false,\n }}\n errorText={inputError}\n />\n }\n
    \n \n
    \n
    \n );\n}\n\nexport default LanguageHOC(TargetAccount);\n","/*\n*\n* TransferStepOneContent Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n reduce,\n some,\n} from 'lodash';\n\nimport {\n currencyFormatter,\n} from '@frontend/common';\n\nimport {\n Checkbox,\n TextField,\n RadioGroup,\n Radio,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Icon,\n Button,\n} from '@mui/material';\n\nimport DualPushButtonSwitch from './DualPushButtonSwitch';\nimport { TransferTypes, TransferInputTypes } from '../typeConstants';\nimport TargetAccount from '../TargetAccount';\nimport { formatAccountDisplayText } from '../formatAccountDisplayText';\n\nimport transactionsStyles from 'components/Features/protected/Accounts/Transactions/styles.module.scss';\nimport styles from './styles.module.scss';\n\nexport function onKeyUp(showFullBalanceDialog) {\n return (e) => {\n // enabling keyboard accessibility\n if (e.key === 'Enter' || e.key === 'Space') {\n showFullBalanceDialog();\n }\n };\n}\n\nTransferStepOneContent.propTypes = {\n sourceAccount: PropTypes.object.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n transfer: PropTypes.object.isRequired,\n onTransferChange: PropTypes.func.isRequired,\n onTargetChange: PropTypes.func.isRequired,\n addTargetAccount: PropTypes.func.isRequired,\n removeTargetAccount: PropTypes.func.isRequired,\n showFullBalanceDialog: PropTypes.func.isRequired,\n getErrorForInput: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n lbl_transfer_type: PropTypes.string,\n lbl_partial_transfer: PropTypes.string,\n lbl_source_account: PropTypes.string,\n lbl_leave_open: PropTypes.string,\n lbl_transfer_types: PropTypes.string,\n lbl_radio_amount: PropTypes.string,\n lbl_radio_percentage: PropTypes.string,\n lbl_total: PropTypes.string,\n lbl_add_account: PropTypes.string,\n }),\n })\n};\n\nexport function TransferStepOneContent(props) {\n const {\n sourceAccount,\n destinationAccounts,\n transfer,\n onTransferChange,\n onTargetChange,\n addTargetAccount,\n removeTargetAccount,\n showFullBalanceDialog,\n getErrorForInput,\n text: { Transfers },\n } = props;\n\n const amountTotalError = getErrorForInput('Transfer_amountTotal');\n\n return (\n
    \n
    \n
    \n onTransferChange('transferType')}\n style={{\n display: 'flex'\n }}\n >\n }\n />\n \n Full Balance Transfer\n \n \n
    \n help_outline\n
    \n
    \n
    \n \n }\n control={}\n />\n \n\n
    \n
    \n
    \n
    \n
    \n
    \n {Transfers.lbl_source_account}\n
    \n
    \n {formatAccountDisplayText(sourceAccount)}\n
    \n
    \n {getErrorForInput('Transfer_sourceContainer')}\n
    \n
    \n
    \n {transfer.transferType === TransferTypes.full ?\n onTransferChange('CloseAccount')}\n />\n }\n label={Transfers.lbl_leave_open}\n /> : null\n }\n
    \n
    \n
    \n \n arrow_forward\n \n
    \n
    \n onTransferChange('transferInputType')}\n options={[\n {\n active: transfer.transferInputType === TransferInputTypes.Amount,\n disabled: transfer.transferType === TransferTypes.full,\n label: '$',\n radioLabel: Transfers.lbl_radio_amount,\n value: TransferInputTypes.Amount,\n },\n {\n active: transfer.transferInputType === TransferInputTypes.Percentage,\n disabled: transfer.transferType === TransferTypes.full,\n label: '%',\n radioLabel: Transfers.lbl_radio_percentage,\n value: TransferInputTypes.Percentage,\n }\n ]}\n />\n {transfer.TargetAccounts.map((targetAccount, rowIndex) => {\n const accountErrorText = getErrorForInput(`Transfer_destinationContainer-${rowIndex}`);\n return (\n ({\n ...account,\n disabled: some(transfer.TargetAccounts, (dest, destIndex) => {\n return destIndex !== rowIndex && dest.AccountId === account.accountId;\n }),\n })\n )}\n canRemove={rowIndex !== 0}\n accountError={accountErrorText}\n inputError={getErrorForInput(`Transfer_inputContainer-${rowIndex}`)}\n inputFieldType={transfer.transferInputType}\n onAccountChange={onTargetChange(rowIndex)}\n onRemove={() => removeTargetAccount(rowIndex)}\n />\n );\n })}\n
    \n \n sum + (account[transfer.transferInputType] || 0), 0)) :\n `${reduce(transfer.TargetAccounts, (sum, account) => sum + (account[transfer.transferInputType] || 0), 0)}%`\n }\n InputProps={{\n readOnly: true,\n disableUnderline: true,\n }}\n />\n {amountTotalError && {amountTotalError}}\n \n
    \n\n
    \n
    \n add}\n onClick={addTargetAccount}\n >\n {Transfers.lbl_add_account}\n \n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default LanguageHOC(TransferStepOneContent);\n","/*\n*\n* TransferTermsAndConditions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Checkbox,\n FormControlLabel,\n Icon,\n} from '@mui/material';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport { TransferInputTypes, TransferTypes } from '../typeConstants';\n\nimport styles from './styles.module.scss';\n\nTransferFromReview.propTypes = {\n transfer: PropTypes.object.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n sourceAccount: PropTypes.object.isRequired,\n Transfers: PropTypes.shape({\n title_source_account: PropTypes.string,\n head_source_status: PropTypes.string,\n head_account_number: PropTypes.string,\n head_account_hash: PropTypes.string,\n head_bene_name: PropTypes.string,\n head_account_type: PropTypes.string,\n head_account_option: PropTypes.string,\n head_option_change: PropTypes.string,\n head_opt_change: PropTypes.string,\n text_close_status: PropTypes.func,\n })\n};\n\nexport function TransferFromReview({ transfer, destinationAccounts, sourceAccount, Transfers }) {\n const compactedTargets = transfer.TargetAccounts.filter(account => account.AccountId !== '' &&\n ((transfer.transferType === TransferTypes.partial && account[transfer.transferInputType] !== 0) || (transfer.transferType === TransferTypes.full && account.Percentage > 0))\n ).map(target => ({\n ...destinationAccounts.find(account => account.accountId === target.AccountId),\n ...target,\n }));\n const optionChanges = compactedTargets.some(target => target.accountGroupId === sourceAccount.accountGroupId);\n const total = transfer.transferInputType === TransferInputTypes.Amount ?\n currencyFormatter(compactedTargets.reduce((sum, target) => sum + target.Amount, 0)) :\n `${compactedTargets.reduce((sum, target) => sum + target.Percentage, 0)}%`;\n\n return (\n \n

    {Transfers.title_source_account}

    \n
    \n {transfer.transferType === TransferTypes.full &&\n
    \n
    {Transfers.head_source_status}
    \n
    {Transfers.text_close_status(transfer.CloseAccount)}
    \n
    \n }\n
    \n
    \n {Transfers.head_account_number}\n
    \n
    \n {Transfers.head_account_hash}\n
    \n
    \n {sourceAccount.accountNumber}\n
    \n
    \n
    \n
    \n {Transfers.head_bene_name}\n
    \n
    \n {sourceAccount.beneficiary.name}\n
    \n
    \n
    \n
    \n {Transfers.head_account_type}\n
    \n
    \n {sourceAccount.accountType}\n
    \n
    \n
    \n
    \n {Transfers.head_account_option}\n
    \n
    \n {sourceAccount.option.name}\n
    \n
    \n {optionChanges &&\n
    \n
    \n {Transfers.head_option_change}\n
    \n
    \n {Transfers.head_opt_change}\n
    \n
    \n \n {'check'}\n \n
    \n
    \n }\n
    \n
    \n {transfer.transferInputType}\n
    \n
    \n {total}\n
    \n
    \n
    \n
    \n );\n}\nTransferToReview.propTypes = {\n transfer: PropTypes.object.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n sourceAccount: PropTypes.object.isRequired,\n Transfers: PropTypes.shape({\n lbl_total: PropTypes.string,\n head_bene_name: PropTypes.string,\n title_destination_account: PropTypes.string,\n head_account_number: PropTypes.string,\n head_account_hash: PropTypes.string,\n head_account_type: PropTypes.string,\n head_account_option: PropTypes.string,\n head_option_change: PropTypes.string,\n head_opt_change: PropTypes.string,\n })\n};\n\nexport function TransferToReview({ transfer, destinationAccounts, sourceAccount, Transfers }) {\n const compactedTargets = transfer.TargetAccounts.filter(account => account.AccountId !== '' &&\n ((transfer.transferType === TransferTypes.partial && account[transfer.transferInputType] !== 0) || (transfer.transferType === TransferTypes.full && account.Percentage > 0))\n ).map(target => ({\n ...destinationAccounts.find(account => account.accountId === target.AccountId),\n ...target,\n }));\n const pluralize = compactedTargets.length > 1 ? 's' : '';\n const optionChanges = compactedTargets.some(target => target.accountGroupId === sourceAccount.accountGroupId);\n \n return (\n \n

    {Transfers.title_destination_account}{pluralize}

    \n
    \n
    \n
    \n {Transfers.head_account_number}\n
    \n
    \n {Transfers.head_account_hash}\n
    \n {compactedTargets.map(target => (\n
    \n {target.accountNumber}\n
    \n ))}\n
    \n
    \n
    \n {Transfers.head_bene_name}{pluralize}\n
    \n {compactedTargets.map(target => (\n
    \n {target.beneficiary.name}\n
    \n ))}\n
    \n
    \n
    \n {Transfers.head_account_type}\n
    \n {compactedTargets.map(target => (\n
    \n {target.accountType}\n
    \n ))}\n
    \n
    \n
    \n {Transfers.head_account_option}\n
    \n {compactedTargets.map(target => (\n
    \n {target.option.Name}\n
    \n ))}\n
    \n {optionChanges &&\n
    \n
    \n {Transfers.head_option_change}\n
    \n
    \n {Transfers.head_opt_change}\n
    \n {compactedTargets.map(target => (\n
    \n \n {target.accountGroupId === sourceAccount.accountGroupId ? 'check' : 'close'}\n \n
    \n ))}\n
    \n }\n
    \n
    \n {transfer.transferInputType}{pluralize}\n
    \n {compactedTargets.map(target => (\n
    \n {transfer.transferInputType === TransferInputTypes.Amount ? currencyFormatter(target.Amount) : `${target.Percentage}%`}\n
    \n ))}\n
    \n {transfer.transferInputType === TransferInputTypes.Amount &&\n
    \n
    {Transfers.lbl_total}:
    \n
    {currencyFormatter(compactedTargets.reduce((sum, target) => sum + target.Amount, 0))}
    \n
    }\n
    \n
    \n );\n}\n\nTransferTermsAndConditions.propTypes = {\n termsChecked: PropTypes.bool.isRequired,\n onTermsToggled: PropTypes.func.isRequired,\n Transfers: PropTypes.shape({\n text_terms_conditions: PropTypes.func,\n text_terms_read: PropTypes.string,\n })\n};\n\nexport function TransferTermsAndConditions({ termsChecked, onTermsToggled, Transfers, }) {\n return (\n
    \n {Transfers.text_terms_conditions()}\n
    \n \n }\n label={Transfers.text_terms_read}\n />\n
    \n
    \n );\n}\n\nexport default TransferTermsAndConditions;\n","/*\n*\n* Transfer Component\n*\n*/\nimport React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { Card, LoadingOverlay } from '@frontend/common';\nimport {\n Step,\n StepButton,\n Stepper,\n Button,\n} from '@mui/material';\nimport TransferSetup from './TransferStepOneContent';\nimport {\n TransferFromReview,\n TransferToReview,\n TransferTermsAndConditions,\n} from './TransferTermsAndConditions';\n\nimport styles from './styles.module.scss';\n\nexport class Transfer extends React.Component {\n static propTypes = {\n cardTitle: PropTypes.string.isRequired,\n sourceAccount: PropTypes.object,\n destinationAccounts: PropTypes.array,\n save: PropTypes.func.isRequired,\n transfer: PropTypes.object.isRequired,\n canContinue: PropTypes.func.isRequired,\n errors: PropTypes.array.isRequired,\n onTransferChange: PropTypes.func.isRequired,\n onTargetChange: PropTypes.func.isRequired,\n addTargetAccount: PropTypes.func.isRequired,\n removeTargetAccount: PropTypes.func.isRequired,\n createdDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_finish: PropTypes.string,\n btn_next: PropTypes.string,\n btn_print: PropTypes.string,\n btn_submit: PropTypes.string,\n lbl_step_select: PropTypes.string,\n lbl_step_terms: PropTypes.string,\n lbl_step_confirm: PropTypes.string,\n text_print_copy: PropTypes.string,\n text_timezone: PropTypes.string,\n })\n })\n };\n\n static defaultProps = {\n sourceAccount: {},\n destinationAccounts: [],\n };\n\n state = {\n stepIndex: 0,\n termsChecked: false,\n isLoadingSubmit: false,\n transferSubmitted: false,\n };\n\n isSmallWindow = () => window.innerWidth < 600;\n\n onTermsToggled = () => {\n this.setState({\n termsChecked: !this.state.termsChecked\n });\n };\n\n getErrorForInput = (inputKey) => {\n const { errors } = this.props;\n const error = errors.find(err => err.key === inputKey);\n return error !== undefined ? error.message : '';\n };\n\n handlePrevStep = () => {\n this.setState({\n stepIndex: this.state.stepIndex - 1,\n });\n\n window.scrollTo(0, 0);\n };\n\n handleNextStep = () => {\n const { canContinue, transfer } = this.props;\n const { stepIndex, termsChecked, } = this.state;\n\n switch (stepIndex) {\n case 0: {\n canContinue(() => {\n this.setState({\n stepIndex: stepIndex + 1,\n });\n window.scrollTo(0, 0);\n });\n break;\n }\n case 1: {\n if (!termsChecked) {\n return;\n }\n canContinue(() => {\n this.setState({ isLoadingSubmit: true });\n this.props.save()\n .then(() => {\n this.setState({\n isLoadingSubmit: false,\n stepIndex: stepIndex + 1,\n transferSubmitted: true,\n });\n\n // Qualtrics Intercept for full balance transfer / account closure. Launches survey \n if (transfer.CloseAccount) {\n try {\n document.cookie = 'closeAcct=true';\n window.QSI.API.run(); // stimulate Targeting.php\n window.QSI.API.unload();\n window.QSI.API.load();\n window.QSI.API.run(); // stimulate Targeting.php\n }\n catch (error) {\n // return null;\n }\n }\n\n window.scrollTo(0, 0);\n })\n .catch(() => {\n this.setState({\n isLoadingSubmit: false,\n stepIndex: this.state.stepIndex - 1\n }, this.goToPreviousPage());\n window.scrollTo(0, 0);\n });\n });\n break;\n }\n case 2: {\n if (!termsChecked) {\n return;\n }\n canContinue(() => {\n this.setState({ isLoadingSubmit: true });\n this.props.save()\n .catch(() => {\n this.setState({\n isLoadingSubmit: false,\n stepIndex: this.state.stepIndex - 1\n });\n });\n });\n break;\n }\n default: break;\n }\n };\n\n stepperCompose = () => {\n const { Transfers } = this.props.text;\n const { transferSubmitted } = this.state;\n const stepperStyle = {\n width: this.isSmallWindow() ? '' : '650px'\n };\n return (\n \n \n this.setState({ stepIndex: 0 })} disabled={transferSubmitted}>{Transfers.lbl_step_select}\n \n \n this.setState({ stepIndex: 1 })} disabled={transferSubmitted}>{Transfers.lbl_step_terms}\n \n \n this.setState({ stepIndex: 2 })}>{Transfers.lbl_step_confirm}\n \n \n );\n };\n\n stepperContentCompose = () => {\n const {\n stepIndex,\n termsChecked,\n } = this.state;\n\n switch (stepIndex) {\n case 0:\n return (\n \n );\n case 1:\n return [\n ,\n ,\n \n ];\n case 2:\n return [\n ,\n ,\n
    {dayjs(this.props.createdDate)\n .format('MM/DD/YYYY h:mm A')} {this.props.text.Transfers.text_timezone}
    ,\n
    \n {this.props.text.Transfers.text_print_copy}\n
    \n ];\n default: break;\n }\n };\n\n goToPreviousPage = () => {\n this.props.history.goBack();\n }\n\n stepperButtonsCompose = () => {\n const { Transfers } = this.props.text;\n const { stepIndex, termsChecked, isLoadingSubmit, transferSubmitted } = this.state;\n const cancelButton = (\n \n {Transfers.btn_cancel}\n \n );\n const nextButton = (\n \n {Transfers.btn_next}\n \n );\n const backButton = (\n \n {Transfers.btn_back}\n \n );\n const submitButton = (\n \n {Transfers.btn_submit}\n \n );\n const printButton = (\n window.print()}\n style={{ marginRight: '5px' }}\n >\n {Transfers.btn_print}\n \n );\n const finishButton = (\n this.props.history.goBack()}\n style={{ marginRight: '5px' }}\n >\n {Transfers.btn_finish}\n \n );\n let buttons = [];\n if (stepIndex === 0) {\n buttons = [\n cancelButton,\n nextButton\n ];\n }\n else if (stepIndex === 1) {\n buttons = [\n cancelButton,\n backButton,\n \n {submitButton}\n \n ];\n }\n else if (stepIndex === 2) {\n buttons = [\n printButton,\n finishButton\n ];\n }\n return buttons;\n };\n\n render() {\n return (\n
    \n \n
    \n
    \n {this.stepperCompose()}\n
    \n
    \n
    \n {this.stepperContentCompose()}\n
    \n
    \n {this.stepperButtonsCompose()}\n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(LanguageHOC(Transfer));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { Modal } from '@frontend/common';\n\nexport const FullBalanceDialog = ({ show, onClose, text: { Transfers } }) => (\n \n {Transfers.text_full_balance_info()}\n \n);\n\nFullBalanceDialog.propTypes = {\n show: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n btn_close: PropTypes.string,\n title_full_balance: PropTypes.string,\n text_full_balance_info: PropTypes.func,\n })\n })\n};\n\nexport default LanguageHOC(FullBalanceDialog);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { Modal } from '@frontend/common';\n\nexport const OptionChangeDialog = ({ show, onClose, text: { Transfers }, }) => (\n \n {Transfers.text_option_change_info()}\n \n);\n\nOptionChangeDialog.propTypes = {\n show: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({\n btn_ok: PropTypes.string,\n text_option_change_info: PropTypes.func,\n title_option_change_info: PropTypes.string,\n })\n })\n};\n\nexport default LanguageHOC(OptionChangeDialog);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Drawer,\n Divider,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nLearnMore.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n form400: PropTypes.string.isRequired,\n form300: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Transfers: PropTypes.shape({ \n text_learn_more: PropTypes.func,\n })\n }),\n};\n\nexport function LearnMore({ open, onClose, form400, form300, text: { Transfers }, }) {\n\n\n const renderTerms = () => (\n
    \n
    \n \n
    \n \n
    \n {Transfers.text_learn_more(form400, form300)}\n
    \n
    \n );\n\n return (\n \n {renderTerms()}\n \n );\n}\n\nexport default LanguageHOC(LearnMore);","/*\n*\n* Transfers Component\n*\n*/\nimport React from 'react';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { connect } from 'react-redux';\nimport { find, reduce, isEqual, cloneDeep } from 'lodash';\nimport {\n Breadcrumbs,\n LoadingOverlay,\n ConfirmModal,\n notificationShow,\n currencyFormatter,\n} from '@frontend/common';\nimport {\n Button,\n} from '@mui/material';\nimport {\n getAccounts,\n} from '../../actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\nimport {\n getTransferAccounts,\n createNewTransfer,\n updateTransfer,\n} from '../actions';\nimport AccountDetailsCard from './AccountDetailsCard';\nimport Transfer from './Transfer';\nimport {\n FullBalanceDialog,\n OptionChangeDialog,\n LearnMore,\n} from './Dialogs';\nimport { TransferInputTypes, TransferTypes } from './Transfer/typeConstants';\n\nimport styles from './styles.module.scss';\n\nconst select = (state, { match }) => ({\n accountList: state.accounts.accountList,\n destinationAccounts: state.transactions.destinationAccounts || [],\n transfer: match.params.transactionId ? state.transactions.selectedTransaction : undefined,\n groupAccountList: state.transactions.groupAccountList,\n MaximumBeneficiaryDeposit: state.static.environmentVars.MaximumBeneficiaryDeposit,\n form400: state.static.documents.form400,\n form300: state.static.documents.form300,\n});\n\nexport class Transfers extends React.Component {\n\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n loading: PropTypes.bool.isRequired,\n accountList: PropTypes.array.isRequired,\n groupAccountList: PropTypes.array.isRequired,\n destinationAccounts: PropTypes.array.isRequired,\n transfer: PropTypes.object,\n MaximumBeneficiaryDeposit: PropTypes.number.isRequired,\n form400: PropTypes.string.isRequired,\n form300: PropTypes.string.isRequired,\n createNewTransfer: PropTypes.func.isRequired,\n updateTransfer: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getTransferAccounts: PropTypes.func.isRequired,\n getAccounts: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n match: PropTypes.shape({\n params: PropTypes.shape({\n accountId: PropTypes.string.isRequired,\n transactionId: PropTypes.string,\n }).isRequired,\n }).isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n text: PropTypes.shape({\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n nav_title: PropTypes.string,\n }),\n Accounts: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n Transfers: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n err_accountOwnerSingleAccount: PropTypes.string,\n err_custodialFromOtherType: PropTypes.func,\n err_custodialToOtherBeneficiary: PropTypes.func,\n err_custodialToOtherType: PropTypes.func,\n err_deferredEarningsNotConfirmed: PropTypes.string,\n err_destinationAccountMissing: PropTypes.string,\n err_fullBalanceNotAllocated: PropTypes.string,\n err_invalidAmount: PropTypes.string,\n err_invalidPercentage: PropTypes.string,\n err_maxGroupBalanceExceeded: PropTypes.func,\n err_noOptionChangesRemaining: PropTypes.func,\n err_noRemainingOptionChanges: PropTypes.string,\n err_partialBalancePercentUnderMinimum: PropTypes.string,\n err_partialBalancePercentOverMax: PropTypes.string,\n err_sourceAccountZeroBalance: PropTypes.string,\n err_termsNotChecked: PropTypes.string,\n err_totalGreaterThanAvailable: PropTypes.string,\n err_totalUnderMinimum: PropTypes.string,\n msg_transfer_created: PropTypes.string,\n msg_transfer_updated: PropTypes.string,\n nav_path_accounts: PropTypes.string,\n nav_path_edit: PropTypes.string,\n nav_path_new: PropTypes.string,\n nav_transfer_title: PropTypes.func,\n title_transfer_type: PropTypes.func,\n title_deferred_earning_confirm: PropTypes.string,\n text_deferred_earning: PropTypes.string,\n })\n })\n };\n\n state = {\n editing: this.props.location.pathname.includes(this.props.text.Transfers.nav_path_edit),\n isLoading: false,\n sourceAccount: this.props.accountList.find(account => account.accountId === parseInt(this.props.match.params.accountId)),\n transfer: {\n AccountId: this.props.match.params.accountId,\n Amount: 0,\n Percentage: 0,\n CloseAccount: true,\n TargetAccounts: [{ AccountId: '', Amount: 0, Percentage: 0 }],\n transferType: TransferTypes.partial,\n transferInputType: TransferInputTypes.Amount,\n },\n transferScreenshot: {\n AccountId: this.props.match.params.accountId,\n Amount: 0,\n Percentage: 0,\n CloseAccount: true,\n TargetAccounts: [{ AccountId: '', Amount: 0, Percentage: 0 }],\n transferType: TransferTypes.partial,\n transferInputType: TransferInputTypes.Amount,\n },\n runValidation: false,\n errors: [],\n isLoadingSubmit: false,\n showOptionChangeModal: false,\n showDeferredEarningsConfirmModal: false,\n hasConfirmedDeferredEarnings: false,\n showFullBalanceDialog: false,\n hasSeenFullBalanceDialog: false,\n showLearnMore: false,\n createdDate: '',\n };\n\n displayUnsavedChangesPrompt = () => {\n return !this.state.isLoading && !isEqual(this.state.transfer, this.state.transferScreenshot);\n }\n\n setupState = () => {\n if (this.state.editing) {\n const selectedTransfer = this.props.transfer;\n const transfer = {\n ...selectedTransfer,\n transferType: selectedTransfer.Percentage < 100 ? TransferTypes.partial : TransferTypes.full,\n transferInputType: selectedTransfer.Percentage > 0 ? TransferInputTypes.Percentage : TransferInputTypes.Amount,\n };\n this.setState({\n isLoading: false,\n transfer,\n transferScreenshot: cloneDeep(transfer),\n hasSeenFullBalanceDialog: selectedTransfer.Percentage === 100,\n hasConfirmedDeferredEarnings: selectedTransfer.Percentage === 100,\n });\n }\n else {\n this.setState({\n isLoading: false,\n });\n }\n };\n\n transfersDetailsGet = () => {\n const { accountId } = this.props.match.params;\n const { getTransferAccounts, destinationAccounts } = this.props;\n const { sourceAccount } = this.state;\n if ((this.state.editing) || !sourceAccount || destinationAccounts.length === 0) {\n this.setState({ isLoading: true });\n }\n return Promise.all([\n getTransferAccounts(accountId),\n ])\n .catch(() => null)\n .finally(() => {\n this.setupState();\n });\n };\n\n prepareTransferPayload = () => {\n const {\n transfer,\n } = this.state;\n const targets = transfer.TargetAccounts.filter(account => account.AccountId !== '' &&\n ((transfer.transferType === TransferTypes.partial && account[transfer.transferInputType] !== 0) || (transfer.transferType === TransferTypes.full && account.Percentage > 0))\n );\n const transferPayload = {\n AccountId: transfer.AccountId,\n TargetAccounts: targets.map(account => {\n const newAccount = {\n AccountId: account.AccountId,\n };\n if (transfer.transferType === TransferTypes.partial && transfer.transferInputType === TransferInputTypes.Amount) {\n newAccount.Amount = account.Amount;\n }\n else {\n newAccount.Percentage = account.Percentage;\n }\n return newAccount;\n }),\n };\n if (this.props.transfer !== undefined) {\n transferPayload.TradeDate = this.props.transfer.TradeDate;\n transferPayload.TransferId = this.props.transfer.TransferId;\n }\n\n if (transfer.transferType === TransferTypes.full) {\n transferPayload.CloseAccount = transfer.CloseAccount;\n }\n return transferPayload;\n };\n\n editTransfer = () => {\n return new Promise((resolve, reject) => {\n this.props.updateTransfer(this.prepareTransferPayload())\n .then(response => {\n const createdDate = response.payload.data;\n this.setState({\n isLoading: true,\n createdDate,\n transferScreenshot: cloneDeep(this.state.transfer) // to avoid exit prompt after submit\n });\n this.props.getAccounts()\n .then(() => this.setState({\n sourceAccount: this.props.accountList.find(account => account.accountId === parseInt(this.props.match.params.accountId)),\n isLoading: false,\n }));\n this.props.notificationShow(this.props.text.Transfers.msg_transfer_updated, 'success');\n this.props.getNotifications(); // refreshes app notifications\n resolve();\n })\n .catch(() => reject());\n });\n };\n\n createNewTransfer = () => {\n return new Promise((resolve, reject) => {\n this.props.createNewTransfer(this.prepareTransferPayload())\n .then(response => {\n const createdDate = response.payload.data;\n this.setState({\n isLoading: true,\n createdDate,\n transferScreenshot: cloneDeep(this.state.transfer) // to avoid exit prompt after submit\n });\n this.props.getAccounts()\n .then(() => this.setState({\n sourceAccount: this.props.accountList.find(account => account.accountId === parseInt(this.props.match.params.accountId)),\n isLoading: false,\n }));\n this.props.notificationShow(this.props.text.Transfers.msg_transfer_created, 'success');\n this.props.getNotifications(); // refreshes app notifications\n resolve();\n })\n .catch(() => reject());\n });\n };\n\n stateChangeValidationWrapper = (stateChanges) => {\n if (this.state.runValidation) {\n this.setState({\n errors: this.transferFormErrors({\n ...this.state,\n ...stateChanges\n }),\n ...stateChanges\n });\n }\n else {\n this.setState(stateChanges);\n }\n };\n\n onTransferChange = (key, value) => {\n const { transfer } = this.state;\n switch (key) {\n case 'transferType': {\n this.transferTypeToggle();\n break;\n }\n case 'transferInputType': {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n transferInputType: transfer.transferInputType === TransferInputTypes.Amount ? TransferInputTypes.Percentage : TransferInputTypes.Amount,\n }\n });\n break;\n }\n case 'CloseAccount': {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n CloseAccount: !transfer.CloseAccount,\n }\n });\n break;\n }\n default: {\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n [key]: value,\n }\n });\n }\n }\n };\n\n onTargetChange = (targetAccountIndex) => {\n return (nextTarget) => {\n const { AccountId } = nextTarget;\n const { destinationAccounts, } = this.props;\n const { sourceAccount, transfer } = this.state;\n let showOptionChangeModal = false;\n if (transfer.TargetAccounts[targetAccountIndex].AccountId !== AccountId) {\n const account = find(destinationAccounts, { accountId: AccountId });\n if (account) {\n showOptionChangeModal = account.accountGroupId === sourceAccount.accountGroupId;\n }\n }\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n TargetAccounts: transfer.TargetAccounts.map((account, index) => {\n if (targetAccountIndex === index) {\n return nextTarget;\n }\n return account;\n })\n },\n showOptionChangeModal,\n });\n };\n };\n\n addTargetAccount = () => {\n const { transfer: { TargetAccounts, ...other } } = this.state;\n this.stateChangeValidationWrapper({\n transfer: {\n ...other,\n TargetAccounts: [\n ...TargetAccounts,\n { AccountId: '', Amount: 0, Percentage: 0 }\n ]\n }\n });\n };\n\n removeTargetAccount = index => {\n const { transfer: { TargetAccounts, ...other } } = this.state;\n this.stateChangeValidationWrapper({\n transfer: {\n ...other,\n TargetAccounts: TargetAccounts.filter((_, rowIndex) => rowIndex !== index)\n }\n });\n };\n\n transferTypeToggle = () => {\n const {\n sourceAccount,\n transfer,\n hasSeenFullBalanceDialog,\n hasConfirmedDeferredEarnings,\n } = this.state;\n const newTransferType = transfer.transferType === TransferTypes.partial ? TransferTypes.full : TransferTypes.partial;\n const showFullBalanceDialog = sourceAccount.unrealizedDeferredEarnings ? hasConfirmedDeferredEarnings && !hasSeenFullBalanceDialog : !hasSeenFullBalanceDialog;\n const showDeferredEarningsConfirmModal = newTransferType === TransferTypes.full && !hasConfirmedDeferredEarnings && sourceAccount.unrealizedDeferredEarnings;\n\n this.stateChangeValidationWrapper({\n transfer: {\n ...transfer,\n transferType: newTransferType,\n transferInputType: transfer.transferType === TransferTypes.partial ? TransferInputTypes.Percentage : transfer.transferInputType,\n TargetAccounts: newTransferType === TransferTypes.full && !transfer.TargetAccounts.some(target => target.Percentage > 0) ?\n transfer.TargetAccounts.map((target, index) => {\n // transfer type is being changed to full, so set percentage on first destination to 100%\n if (index === 0 && transfer.transferType === TransferTypes.partial && target.Percentage !== 100) {\n return {\n ...target,\n Percentage: 100\n };\n }\n return target;\n }) : transfer.TargetAccounts,\n },\n showDeferredEarningsConfirmModal,\n showFullBalanceDialog,\n });\n };\n\n canContinue = (onContinue) => {\n const errors = this.transferFormErrors();\n this.setState({\n errors,\n runValidation: true,\n });\n return errors.length === 0 && ((onContinue && onContinue()) || true);\n };\n\n transferFormErrors = (nextState) => {\n const {\n transfer,\n sourceAccount,\n } = nextState || this.state;\n const { MaximumBeneficiaryDeposit, text: { Transfers } } = this.props;\n const errors = [];\n const totalPercentage = reduce(transfer.TargetAccounts, (sum, account) => sum + account.Percentage, 0);\n const totalAmount = reduce(transfer.TargetAccounts, (sum, account) => sum + account.Amount, 0);\n\n // total field\n if (transfer.transferType === TransferTypes.full) {\n // must equal 100% allocation\n if (totalPercentage !== 100) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: Transfers.err_fullBalanceNotAllocated,\n });\n }\n }\n else {\n if (transfer.transferInputType === TransferInputTypes.Percentage && totalPercentage > 99) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: Transfers.err_partialBalancePercentOverMax\n });\n }\n else if (transfer.transferInputType === TransferInputTypes.Percentage && !totalPercentage) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: Transfers.err_partialBalancePercentUnderMinimum\n });\n }\n else if (transfer.transferInputType === TransferInputTypes.Amount) {\n if (totalAmount > sourceAccount.netAvailableNum) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: Transfers.err_totalGreaterThanAvailable,\n });\n }\n if (!totalAmount) {\n errors.push({\n key: 'Transfer_amountTotal',\n message: Transfers.err_totalUnderMinimum,\n });\n }\n }\n }\n\n // only 1 row\n if (transfer.TargetAccounts.length === 1) {\n // destination account isn't selected\n if (transfer.TargetAccounts[0].AccountId === '') {\n errors.push({\n key: 'Transfer_destinationContainer-0',\n message: Transfers.err_destinationAccountMissing,\n });\n }\n }\n\n transfer.TargetAccounts.forEach((targetAccount, index) => {\n // destination has amount/percentage filled in, but no target account selected\n if (\n (transfer.transferType === TransferTypes.full && targetAccount.Percentage > 0) ||\n (transfer.transferType === TransferTypes.partial && (\n (transfer.transferInputType === TransferInputTypes.Amount && targetAccount.Amount > 0) ||\n (transfer.transferInputType === TransferInputTypes.Percentage && targetAccount.Percentage > 0)\n ))) {\n if (targetAccount.AccountId === '') {\n errors.push({\n key: `Transfer_destinationContainer-${index}`,\n message: Transfers.err_destinationAccountMissing,\n });\n }\n }\n\n // destination has target selected but no amount/percentage\n if ((index !== 0 && targetAccount.AccountId !== '' && transfer.transferType === TransferTypes.partial) && (\n (transfer.transferInputType === TransferInputTypes.Amount && !targetAccount.Amount) ||\n (transfer.transferInputType === TransferInputTypes.Percentage && !targetAccount.Percentage)\n )) {\n errors.push({\n key: `Transfer_inputContainer-${index}`,\n message: transfer.transferInputType === TransferInputTypes.Amount ? Transfers.err_invalidAmount : Transfers.err_invalidPercentage,\n });\n }\n\n // destination account is not part of same groupId and amount puts its balance over MaximumBeneficiaryDeposit amount\n // check if a target account has been selected\n if (targetAccount.AccountId) {\n // pull more account detail from main account list\n const { accountGroupId, beneficiary } = this.props.accountList.find(account => {\n return (account.accountId === targetAccount.AccountId);\n });\n\n // check if target account is in different groupId than source account\n if (accountGroupId !== sourceAccount.accountGroupId) {\n // pull groupAccount totalValue balance\n const { MarketValue } = this.props.groupAccountList.find(group => {\n return (group.AccountGroupId === accountGroupId);\n });\n // get destination accounts list that go with this destination account\n const destinationAccountList = this.props.accountList.filter(account => account.accountGroupId === accountGroupId);\n // get the total destination group transfer amount and percentage.\n const totalDestinationGroupPercentage = reduce(destinationAccountList, (sum, account) => {\n const targetAccount = transfer.TargetAccounts.find(targetAccount => targetAccount.AccountId === account.accountId);\n // if targetAccount is not found in the\n return sum + (targetAccount ? targetAccount.Percentage : 0);\n }, 0);\n const totatDestinationGroupAmount = reduce(destinationAccountList, (sum, account) => {\n const targetAccount = transfer.TargetAccounts.find(targetAccount => targetAccount.AccountId === account.accountId);\n return sum + (targetAccount ? targetAccount.Amount : 0);\n }, 0);\n // based on tranfser input type, use the amount or figure out the amount using the percentage\n const transferAmount = transfer.transferInputType === TransferInputTypes.Amount ? totatDestinationGroupAmount : (totalDestinationGroupPercentage * .01 * sourceAccount.totalValueNum);\n //check if transfer amount plus current group account total balance will go over the MaximumBeneficiaryDeposit amount.\n if (transferAmount + MarketValue > MaximumBeneficiaryDeposit) {\n const allowedTransferAmount = Math.max(MaximumBeneficiaryDeposit - MarketValue, 0);\n errors.push({\n key: `Transfer_destinationContainer-${index}`,\n message: Transfers.err_maxGroupBalanceExceeded(beneficiary.name, currencyFormatter(allowedTransferAmount)),\n });\n }\n }\n // else groupId is the same as source account, now check if any optionChanges remain.\n else {\n if (sourceAccount.optionChangesRemaining === 0) {\n errors.push({\n key: `Transfer_destinationContainer-${index}`,\n message: Transfers.err_noRemainingOptionChanges,\n });\n }\n }\n }\n\n });\n return errors;\n };\n\n componentDidMount() {\n this.transfersDetailsGet();\n }\n\n render() {\n const { \n match, location, destinationAccounts, form400, form300, loading,\n text: { Transfers, Accounts, AccountDetails }, \n } = this.props;\n const {\n isLoading,\n sourceAccount,\n editing,\n transfer,\n createdDate,\n } = this.state;\n\n return (\n \n
    \n
    \n {(location.pathname.indexOf(Transfers.nav_path_new) > -1 || location.pathname.indexOf(Transfers.nav_path_edit) > -1) &&\n -1) },\n ]}\n />}\n
    \n
    \n \n
    \n
    \n this.setState({ showFullBalanceDialog: true })}\n sourceAccount={sourceAccount}\n destinationAccounts={destinationAccounts}\n save={editing ? this.editTransfer : this.createNewTransfer}\n createdDate={createdDate}\n />\n
    \n\n
    \n this.setState({ showLearnMore: true })}\n >\n Learn More\n \n
    \n\n {\n this.setState({\n showFullBalanceDialog: false,\n hasSeenFullBalanceDialog: true,\n });\n }}\n />\n {\n this.setState({ showOptionChangeModal: false });\n }}\n />\n this.setState({\n showDeferredEarningsConfirmModal: false,\n transfer: { ...transfer, transferType: TransferTypes.partial }\n })}\n onConfirm={() => this.setState({\n hasConfirmedDeferredEarnings: true,\n showDeferredEarningsConfirmModal: false,\n showFullBalanceDialog: true,\n })}\n />\n this.setState({ showLearnMore: false })}\n form400={form400}\n form300={form300}\n />\n\n
    \n\n \n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getNotifications,\n createNewTransfer,\n updateTransfer,\n notificationShow,\n getTransferAccounts,\n getAccounts,\n})(LanguageHOC(Transfers)));\n","/*\n*\n* Payments Actions\n*\n*/\nimport {\n DELETErequest,\n GETrequest,\n POSTrequest,\n PUTrequest,\n} from 'utils/helpers/api_handler';\n\nimport {\n CHECK_ROUTING_NUMBER,\n GET_BANK_ACCOUNTS,\n GET_AGENT_BANK_ACCOUNTS,\n GET_GROUPED_BANK_ACCOUNTS,\n GET_ALLOWED_BANK_HOLDERS,\n DELETE_BANK_ACCOUNT,\n RENEW_BANK_ACCOUNT,\n CREATE_AGENT_BANK_ACCOUNT,\n CREATE_BENEFICIARY_BANK_ACCOUNT,\n POA_APPROVAL,\n START_MIRCO_DEPOSITS,\n CONFIRM_MIRCO_DEPOSITS,\n SAVE_POA_BANK_SELECTION,\n GET_ACCESS_CARDS,\n UPDATE_NICKNAME,\n GET_ACCESS_CARD_URL,\n} from './constants';\n\n\nexport function checkRoutingNumber(routingNumber) {\n const payload = GETrequest(`/BankAccount/CheckRoutingNumber?routingNumber=${routingNumber}`);\n return {\n type: CHECK_ROUTING_NUMBER,\n payload,\n };\n}\n\nexport function getBankAccounts() {\n const payload = GETrequest('/BankAccount');\n return {\n type: GET_BANK_ACCOUNTS,\n payload,\n };\n}\n\nexport function getAgentBankAccounts() {\n const payload = GETrequest('/BankAccount/Agent');\n return {\n type: GET_AGENT_BANK_ACCOUNTS,\n payload,\n };\n}\n\nexport function getGroupedBankAccounts() {\n return {\n type: GET_GROUPED_BANK_ACCOUNTS,\n };\n}\n\nexport function getAllowedBankHolders(userDetails, accountList) { //agentOnly is optional argument, used for transaction needs\n return {\n type: GET_ALLOWED_BANK_HOLDERS,\n userDetails,\n accountList,\n };\n}\n\nexport function createAgentBankAccount(bankAccount) {\n const payload = POSTrequest('/BankAccount/Agent', bankAccount);\n return {\n type: CREATE_AGENT_BANK_ACCOUNT,\n payload,\n };\n}\n\nexport function createBeneficiaryBankAccount(bankAccount, beneficiaryId) {\n const payload = POSTrequest(`/BankAccount/Beneficiary/${beneficiaryId}`, bankAccount);\n return {\n type: CREATE_BENEFICIARY_BANK_ACCOUNT,\n payload,\n };\n}\n\nexport function deleteBankAccount(bankAccountId) {\n const payload = DELETErequest(`/BankAccount/${bankAccountId}`);\n return {\n type: DELETE_BANK_ACCOUNT,\n payload,\n };\n}\n\nexport function renewBankAccount(bankAccountId) {\n const payload = POSTrequest(`/BankAccount/Renew/${bankAccountId}`);\n return {\n type: RENEW_BANK_ACCOUNT,\n payload,\n };\n}\n\nexport function poaApproval(approval, bankAccountId) {\n //approval can be 'Approve' or 'Unapprove'\n const payload = POSTrequest(`/BankAccount/POA/${approval}/${bankAccountId}`);\n return {\n type: POA_APPROVAL,\n payload,\n };\n}\n\nexport function startMicroDeposits(bankAccountId) {\n const payload = POSTrequest(`/BankAccount/StartMicroDeposits/${bankAccountId}`);\n return {\n type: START_MIRCO_DEPOSITS,\n payload,\n };\n}\n\nexport function confirmMicroDeposits(bankAccountId, depositAmounts) {\n const payload = POSTrequest(`/BankAccount/ConfirmMicroDeposits/${bankAccountId}`, depositAmounts);\n return {\n type: CONFIRM_MIRCO_DEPOSITS,\n payload,\n };\n}\n\nexport function savePOABankSelectionAgreement(bankAccountId) {\n const payload = POSTrequest(`/BankAccount/POA/OwnerNotified/${bankAccountId}`);\n return {\n type: SAVE_POA_BANK_SELECTION,\n payload,\n };\n}\n\nexport function getAccessCards() {\n const payload = GETrequest('/AccessCards');\n return {\n type: GET_ACCESS_CARDS,\n payload,\n };\n}\n\nexport function editNickName(BankAccountId, nickName) {\n const response = PUTrequest(`/BankAccount/Nickname/${BankAccountId}?nickname=${nickName}`);\n return {\n type: UPDATE_NICKNAME,\n payload: response,\n meta: { BankAccountId, nickName }\n };\n}\n\nexport function getAccessCardURL() {\n const payload = GETrequest('/AccessCards/RegistrationURL');\n return {\n type: GET_ACCESS_CARD_URL,\n payload,\n };\n}","/*\n *\n * Step0Amount Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Icon,\n FormHelperText,\n Button,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport {\n CurrencyInput,\n currencyFormatter,\n Dropdown,\n IconBtnTooltip,\n} from '@frontend/common';\n\nimport transactionsStyles from 'components/Features/protected/Accounts/Transactions/styles.module.scss';\nimport styles from '../styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nStep0Amount.propTypes = {\n classes: PropTypes.object.isRequired,\n isEditing: PropTypes.bool.isRequired,\n selectedAccounts: PropTypes.array.isRequired,\n errors: PropTypes.array.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionEnvironmentVars: PropTypes.object.isRequired,\n errorGet: PropTypes.func.isRequired,\n accountSelect: PropTypes.func.isRequired,\n amountHandle: PropTypes.func.isRequired,\n removeAccount: PropTypes.func.isRequired,\n addAccount: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeStep0: PropTypes.shape({\n err_amount_min_max: PropTypes.func,\n lbl_add_account: PropTypes.string,\n lbl_amount: PropTypes.string,\n lbl_remove_account: PropTypes.string,\n lbl_selected_account: PropTypes.string,\n text_total: PropTypes.string,\n })\n })\n};\n\nexport function Step0Amount({\n classes,\n isEditing,\n selectedAccounts,\n errors,\n contributionDetails,\n contributionEnvironmentVars,\n errorGet,\n accountSelect,\n amountHandle,\n removeAccount,\n addAccount,\n text: { ContributionOneTimeStep0 },\n}) {\n return (\n \n {selectedAccounts.map((selectedAccount, rowIndex) => {\n return (\n
    \n
    \n accountSelect(value, rowIndex)}\n options={(isEditing ? selectedAccounts : contributionDetails.canContributeAccountList).map(account => ({\n value: account.accountId,\n display: `${account.beneficiary.name.toUpperCase()} ...${account.accountNumber.toString().slice(account.accountNumber.toString().length - 5)}`,\n props: {\n disabled: (selectedAccounts.some(selAccount => selAccount.accountId === account.accountId)\n && selectedAccounts[rowIndex].accountId !== account.accountId)\n || account.overMaxBalance,\n },\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px', textAlign: 'left' } }}\n MenuItemProps={{\n classes: { root: classes.root }\n }}\n />\n
    \n\n
    \n amountHandle(vals, rowIndex)}\n value={selectedAccount.contributionAmount}\n style={{ width: '100%' }}\n />\n
    \n\n {rowIndex !== 0 &&\n
    \n removeAccount(rowIndex)}\n title={ContributionOneTimeStep0.lbl_remove_account}\n iconProps={{ color: 'secondary' }}\n />\n
    \n }\n
    \n );\n })}\n\n {contributionDetails.canContributeAccountList.length !== selectedAccounts.length && !isEditing &&\n
    \n add}\n onClick={addAccount}\n >\n {ContributionOneTimeStep0.lbl_add_account}\n \n
    \n }\n\n
    \n {errors.some(error => error.key === 'amount') &&\n
    \n \n {ContributionOneTimeStep0.err_amount_min_max(currencyFormatter(contributionEnvironmentVars.MinimumOneTimeOnlineContribution), currencyFormatter(contributionEnvironmentVars.MaximumOneTimeOnlineContribution))}\n \n
    }\n
    \n
    {ContributionOneTimeStep0.text_total}
    \n
    {currencyFormatter(selectedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
    \n
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(withStyles(muiStyles)(Step0Amount)));","/*\n *\n * Step1DateAndBank Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Icon,\n} from '@mui/material';\nimport { withStyles } from '@mui/styles';\nimport {\n DatePicker,\n Dropdown,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nStep1DateAndBank.propTypes = {\n classes: PropTypes.object.isRequired,\n contribution: PropTypes.object.isRequired,\n errors: PropTypes.array.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n contributionDateHandle: PropTypes.func.isRequired,\n contributionDatesDisable: PropTypes.func.isRequired,\n bankAccountSelectHandle: PropTypes.func.isRequired,\n errorGet: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeStep1: PropTypes.shape({\n btn_add_bank: PropTypes.string,\n lbl_add_bank: PropTypes.string,\n lbl_bank_account: PropTypes.string,\n lbl_contibution_date: PropTypes.string,\n lbl_contribution_date: PropTypes.string,\n })\n }).isRequired,\n};\n\nexport function Step1DateAndBank({\n classes,\n contribution,\n errors,\n agentBankAccounts,\n bankAccountsLoading,\n toggleShowAddBank,\n contributionDateHandle,\n contributionDatesDisable,\n bankAccountSelectHandle,\n errorGet,\n text: { ContributionOneTimeStep1 },\n}) {\n const agentAccountsFormatted = agentBankAccounts.map(account => {\n if (account.Nickname && account.Nickname.length > 0) {\n return {\n value: account.BankAccountId,\n display: `${account.Nickname}, ${account.MaskedBankAccountNumber}`\n };\n }\n else {\n return {\n value: account.BankAccountId,\n display: account.BankAccountId === 0 ? account.BankName : `${account.BankName}, ${account.MaskedBankAccountNumber}`\n };\n }\n });\n\n return (\n \n
    \n error.key === 'day1')}\n helperText={errorGet('day1')}\n sx={{ minWidth: '256px', width: '100%' }}\n />\n
    \n\n {agentBankAccounts.length > 0 ?\n
    \n \n \n \n\n
    \n \n add}\n onClick={toggleShowAddBank}\n >\n {ContributionOneTimeStep1.btn_add_bank}\n \n \n
    \n
    \n :\n
    \n \n \n {ContributionOneTimeStep1.btn_add_bank}\n \n \n
    \n }\n
    \n );\n}\n\nexport default (LanguageHOC(withStyles(muiStyles)(Step1DateAndBank)));","/*\n *\n * ReviewDetails Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport styles from '../styles.module.scss';\n\nReviewDetails.propTypes = {\n contribution: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeReview: PropTypes.shape({\n title_account_number: PropTypes.string,\n title_amount: PropTypes.string,\n title_bank_account: PropTypes.string,\n title_bene_name: PropTypes.string,\n title_date: PropTypes.string,\n title_total: PropTypes.string,\n })\n })\n};\n\nexport function ReviewDetails({\n contribution: { bankAccount, day1, selectedAccounts, },\n text: { ContributionOneTimeReview },\n}) {\n const populatedAccounts = selectedAccounts.filter(account => account.accountId);\n return (\n \n
    \n\n
    \n
    {ContributionOneTimeReview.title_account_number}
    \n {populatedAccounts.map(account => (
    {account.accountNumber}
    ))}\n
    \n\n
    \n
    {ContributionOneTimeReview.title_bene_name}
    \n {populatedAccounts.map(account => (
    {account.beneficiary.name.toUpperCase()}
    ))}\n
    \n\n
    \n
    {ContributionOneTimeReview.title_bank_account}
    \n
    {bankAccount.BankName} {bankAccount.BankAccountType}, {bankAccount.MaskedBankAccountNumber}
    \n
    \n\n
    \n
    {ContributionOneTimeReview.title_date}
    \n {populatedAccounts.map(account => (
    {dayjs(day1).format('L')}
    ))}\n
    \n\n
    \n
    {ContributionOneTimeReview.title_amount}
    \n {populatedAccounts.map(account => (
    {currencyFormatter(account.contributionAmount)}
    ))}\n
    \n
    \n\n
    \n
    {ContributionOneTimeReview.title_total}
    \n
    {currencyFormatter(populatedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(ReviewDetails));","/*\n*\n* TermsConditions Component\n*\n*/\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { SPECIAL, NON_SPECIAL } from '../constants';\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n ACHBankWithdrawalLanguage: state.static.environmentVars.ACHBankWithdrawalLanguage,\n});\n\nexport class TermsConditions extends React.Component {\n static propTypes = {\n ACHBankWithdrawalLanguage: PropTypes.string.isRequired,\n phoneEnvironmentVars: PropTypes.shape({\n SupportPhoneNumber: PropTypes.string.isRequired,\n FaxNumber: PropTypes.string.isRequired,\n }),\n contributionType: PropTypes.string,\n text: PropTypes.shape({\n ContributionTermsConditions: PropTypes.shape({\n head_title: PropTypes.string,\n head_review_terms: PropTypes.string,\n text_about_special_occasion: PropTypes.string,\n text_about_special: PropTypes.array,\n text_bad_accounts_warning: PropTypes.string,\n text_bad_accounts: PropTypes.array,\n text_check: PropTypes.string,\n text_check_requirements: PropTypes.array,\n text_notes: PropTypes.string,\n text_notes_list1: PropTypes.array,\n text_notes_list2: PropTypes.string,\n text_notes_list3: PropTypes.string,\n text_notes_list4_sublists_special: PropTypes.func,\n text_notes_list4_sublists_non_special: PropTypes.func,\n text_notes_list5: PropTypes.string,\n text_authorize: PropTypes.string,\n }),\n Payments: PropTypes.shape({\n text_bank_hold_language: PropTypes.func,\n }),\n })\n };\n\n static defaultProps = {\n contributionType: NON_SPECIAL,\n };\n\n render() {\n const { text: { ContributionTermsConditions, Payments, }, phoneEnvironmentVars, contributionType, ACHBankWithdrawalLanguage, } = this.props;\n const isSpecialContribution = contributionType === SPECIAL;\n const text_notes_list4_sublists = isSpecialContribution ? ContributionTermsConditions.text_notes_list4_sublists_special : ContributionTermsConditions.text_notes_list4_sublists_non_special;\n\n return (\n
    \n

    {ContributionTermsConditions.head_title}

    \n

    {ContributionTermsConditions.head_review_terms}

    \n {isSpecialContribution && (\n
    \n

    {ContributionTermsConditions.text_about_special_occasion}

    \n
      \n {ContributionTermsConditions.text_about_special.map(line =>
    • {line}
    • )}\n
    \n
    \n )}\n

    {ContributionTermsConditions.text_bad_accounts_warning}

    \n
      \n {ContributionTermsConditions.text_bad_accounts.map(line =>
    • {line}
    • )}\n
    \n

    {ContributionTermsConditions.text_check}

    \n
      \n {ContributionTermsConditions.text_check_requirements.map(line =>
    • {line}
    • )}\n
    \n

    {ContributionTermsConditions.text_notes}

    \n
      \n {ContributionTermsConditions.text_notes_list1.map(line =>
    • {line}
    • )}\n
    • {ContributionTermsConditions.text_notes_list2}{ContributionTermsConditions.text_notes_list3}
    • \n
        \n {text_notes_list4_sublists(phoneEnvironmentVars, isSpecialContribution).map(line => {\n if (Array.isArray(line)) {\n return (\n
          \n {line.map(subLine =>
        1. {subLine}
        2. )}\n
        \n );\n } \n else {\n return
      1. {line}
      2. ;\n }\n })}\n
      \n
    • {ContributionTermsConditions.text_notes_list5}
    • \n
    • {Payments.text_bank_hold_language(ACHBankWithdrawalLanguage)}
    • \n
    \n {ContributionTermsConditions.text_authorize}\n
    \n );\n }\n}\n\nexport default connect(select, {})(LanguageHOC(TermsConditions));\n","/*\n *\n * Step2Terms Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Checkbox,\n} from '@frontend/common';\nimport ReviewDetails from './ReviewDetails';\nimport TermsConditions from 'components/Features/protected/Accounts/Transactions/Contributions/TermsCondition';\nimport styles from '../styles.module.scss';\n\nStep2Terms.propTypes = {\n contribution: PropTypes.object.isRequired,\n termsChecked: PropTypes.bool.isRequired,\n toggleTermsChecked: PropTypes.func.isRequired,\n phoneEnvironmentVars: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeStep2: PropTypes.shape({\n lbl_read_terms: PropTypes.string,\n }),\n })\n};\n\nexport function Step2Terms({\n contribution,\n termsChecked,\n toggleTermsChecked,\n phoneEnvironmentVars,\n text,\n}) {\n return (\n \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(Step2Terms));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport ReviewDetails from './ReviewDetails';\n\n\nimport styles from '../styles.module.scss';\n\nexport class Step3PrintReview extends React.Component {\n static propTypes = {\n contribution: PropTypes.object.isRequired,\n selectedAccounts: PropTypes.array.isRequired,\n createdDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeStep3: PropTypes.shape({\n text_print_copy: PropTypes.string,\n text_timezone: PropTypes.string,\n })\n })\n }\n\n render() {\n const { contribution, selectedAccounts, createdDate, text } = this.props;\n return (\n
    \n \n
    {dayjs(createdDate)\n .format('MM/DD/YYYY h:mm A')} {text.ContributionOneTimeStep3.text_timezone}
    \n
    \n {text.ContributionOneTimeStep3.text_print_copy}\n
    \n
    \n );\n }\n}\n\nexport default (LanguageHOC(Step3PrintReview));","/* eslint-disable newline-per-chained-call */\n/*\n*\n* OneTime Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport { isEqual, cloneDeep } from 'lodash';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Card,\n notificationShow,\n} from '@frontend/common';\nimport {\n ONE_TIME\n} from '../constants';\nimport TransactionStepper from 'components/Features/protected/Accounts/Transactions/TransactionStepper';\nimport { Step0Amount, Step1DateAndBank, Step2Terms, Step3PrintReview, } from 'components/Features/protected/Accounts/Transactions/Contributions/OneTime/StepComponents/';\n\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n contributionEnvironmentVars: state.static.environmentVars,\n contributionDetails: state.transactions.contributionDetails,\n agentBankAccounts: state.payments.agentBankAccounts,\n});\n\nexport class OneTime extends React.Component {\n static propTypes = {\n agentBankAccounts: PropTypes.array.isRequired,\n accountId: PropTypes.number.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n renderDuplicateConfirmModal: PropTypes.func.isRequired,\n duplicateContributionModalOpen: PropTypes.bool.isRequired,\n createdDate: PropTypes.string.isRequired,\n contributionEnvironmentVars: PropTypes.shape({\n FaxNumber: PropTypes.string,\n CurrentTradeDate: PropTypes.string,\n ValidOneTimeContributionDates: PropTypes.array,\n MaximumOneTimeOnlineContribution: PropTypes.number,\n MinimumOneTimeOnlineContribution: PropTypes.number,\n MaximumOnlineContributionAmount: PropTypes.number,\n MaximumOnlineContributionDays: PropTypes.number,\n SupportPhoneNumber: PropTypes.string,\n }).isRequired,\n contributionDetails: PropTypes.shape({\n canContributeAccountList: PropTypes.array.isRequired,\n contribution: PropTypes.object.isRequired,\n }),\n isEditing: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n ContributionOneTime: PropTypes.shape({\n err_account_select: PropTypes.string,\n err_bankAccount_select: PropTypes.string,\n err_step_does_not_exist: PropTypes.string,\n err_valid_amount: PropTypes.string,\n lbl_step_labels: PropTypes.array,\n msg_unsaved_changes: PropTypes.string,\n })\n }),\n }\n\n state = {\n contribution: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: this.props.contributionEnvironmentVars.CurrentTradeDate,\n selectedAccounts: [],\n type: ONE_TIME\n },\n contributionScreenshot: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: this.props.contributionEnvironmentVars.CurrentTradeDate,\n selectedAccounts: [],\n type: ONE_TIME\n },\n errors: [],\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n termsChecked: false,\n stepHasError: false,\n }\n\n displayUnsavedChangesPrompt = () => {\n return !this.state.bankAccountsLoading && !isEqual(this.state.contribution, this.state.contributionScreenshot);\n }\n\n clearStepErrors = () => {\n this.setState({\n errors: [],\n stepHasError: false,\n });\n }\n\n formValidate = (step) => {\n const { ContributionOneTime } = this.props.text;\n const { MaximumOneTimeOnlineContribution, MinimumOneTimeOnlineContribution, ValidOneTimeContributionDates, } = this.props.contributionEnvironmentVars;\n const { selectedAccounts, bankAccount, day1 } = this.state.contribution;\n const errors = [];\n\n switch (step) {\n case 0: {\n selectedAccounts.forEach(({ accountId, contributionAmount }, index) => {\n const message = validator.amountValidator(contributionAmount, MinimumOneTimeOnlineContribution, MaximumOneTimeOnlineContribution); // validates amounts against min and max parameters\n if (accountId && message) {\n errors.push({\n key: 'amount',\n message,\n row: index\n });\n }\n if (!accountId && contributionAmount) { // validates all accounts that also have amounts entered have a beneficiary selected\n errors.push({\n key: 'account',\n message: ContributionOneTime.err_account_select,\n row: index\n });\n }\n });\n this.setState({ errors, step0ValidationHasRun: true, stepHasError: errors.length > 0 });\n break;\n }\n\n case 1: {\n if (!bankAccount.BankAccountId) {\n errors.push({\n key: 'bankAccount',\n message: ContributionOneTime.err_bankAccount_select,\n });\n }\n const message = validator.calendarValidator(dayjs(day1), dayjs(ValidOneTimeContributionDates[0]),\n dayjs(ValidOneTimeContributionDates[ValidOneTimeContributionDates.length - 1]));\n if (message) {\n errors.push({\n key: 'day1',\n message,\n });\n }\n this.setState({ errors, step1ValidationHasRun: true, stepHasError: errors.length > 0 });\n break;\n }\n default: break;\n }\n return errors.length === 0;\n }\n\n errorGet = (key, row) => {\n const error = this.state.errors.find(error => error.key === key && error.row === row);\n return error ? error.message : '';\n }\n\n contributionSet = (step, key, value) => {\n this.setState(({ contribution }) => {\n return { contribution: { ...contribution, [key]: value } };\n }, () => {\n if (\n (step === 0 && this.state.step0ValidationHasRun) ||\n (step === 1 && this.state.step1ValidationHasRun)\n ) {\n this.formValidate(step);\n }\n });\n }\n\n accountSelect = (value, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const selectedAccount = this.props.contributionDetails.canContributeAccountList.find(account => account.accountId === value);\n const accountUpdatedWithAmount = { ...selectedAccount, contributionAmount: selectedAccounts[rowIndex].contributionAmount };\n\n selectedAccounts.splice(rowIndex, 1, accountUpdatedWithAmount);\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n amountHandle = ({ floatValue = 0 }, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n selectedAccounts[rowIndex].contributionAmount = floatValue;\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n addAccount = () => {\n const { contribution: { selectedAccounts } } = this.state;\n const newSelectedAccounts = [...selectedAccounts, { accountId: '', contributionAmount: 0 }];\n this.contributionSet(0, 'selectedAccounts', newSelectedAccounts);\n }\n\n removeAccount = (rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n selectedAccounts.splice(rowIndex, 1);\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n contributionDateHandle = (e) => {\n this.contributionSet(1, 'day1', e);\n }\n\n contributionDatesDisable = (date) => {\n return this.props.contributionEnvironmentVars.ValidOneTimeContributionDates.every(validContributionDate => {\n return !dayjs(validContributionDate).isSame(dayjs(date), 'day') ||\n dayjs(this.props.contributionEnvironmentVars.CurrentTradeDate).isAfter(dayjs(date), 'day');\n });\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet(1, 'bankAccount', this.props.agentBankAccounts.find(bankAccount => bankAccount.BankAccountId === value));\n }\n\n contributionCreateHandler = () => {\n return this.props.contributionCreate(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n contributionEditHandler = () => {\n return this.props.contributionEdit(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n renderStepComponent = step => {\n const { agentBankAccounts, bankAccountsLoading, contributionDetails, contributionEnvironmentVars, isEditing, toggleShowAddBank, createdDate, text: { ContributionOneTime } } = this.props;\n const { contribution, errors, termsChecked, } = this.state;\n let stepComponent;\n\n switch (step) {\n case 0: {\n stepComponent = (\n
    \n this.accountSelect(value, rowIndex)}\n amountHandle={(vals, rowIndex) => this.amountHandle(vals, rowIndex)}\n removeAccount={(rowIndex) => this.removeAccount(rowIndex)}\n addAccount={this.addAccount}\n />\n
    \n );\n break;\n }\n\n case 1: {\n stepComponent = (\n
    \n this.bankAccountSelectHandle(value)}\n toggleShowAddBank={() => toggleShowAddBank()}\n contributionDateHandle={this.contributionDateHandle}\n contributionDatesDisable={this.contributionDatesDisable}\n errorGet={(key) => this.errorGet(key)}\n />\n
    \n );\n break;\n }\n\n case 2: {\n stepComponent = (\n this.setState({ termsChecked: !termsChecked })}\n />\n );\n break;\n }\n\n case 3: {\n stepComponent = (\n \n );\n break;\n }\n\n default:\n stepComponent =
    {ContributionOneTime.err_step_does_not_exist}
    ;\n }\n return stepComponent;\n }\n\n componentDidMount() {\n const { canContributeAccountList, contribution, } = this.props.contributionDetails;\n if (canContributeAccountList.length > 0) {\n if (this.props.isEditing) {\n this.setState({ contribution, contributionScreenshot: cloneDeep(contribution) });\n }\n else {\n const defaultAccount = canContributeAccountList.find(account => account.accountId === this.props.accountId);\n this.setState(({ contribution }) => {\n const contributionUpdated = {\n ...contribution,\n selectedAccounts: [defaultAccount],\n };\n\n return ({\n contribution: contributionUpdated,\n contributionScreenshot: cloneDeep(contributionUpdated)\n });\n });\n }\n }\n\n }\n\n render() {\n const { isEditing, text, renderDuplicateConfirmModal, } = this.props;\n return (\n
    \n \n this.formValidate(step)}\n renderStepComponent={(step) => this.renderStepComponent(step)}\n handleSubmit={() => isEditing ? this.contributionEditHandler(this.state.contribution) : this.contributionCreateHandler(this.state.contribution)}\n stepLabels={text.ContributionOneTime.lbl_step_labels}\n submitStep={2}\n termsChecked={this.state.termsChecked}\n renderConfirmModal={renderDuplicateConfirmModal}\n />\n \n\n \n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n notificationShow,\n})(LanguageHOC(OneTime)));\n","/*\n *\n * Step0AmountAndBank Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Icon,\n FormHelperText\n} from '@mui/material';\nimport { withStyles } from '@mui/styles';\nimport {\n CurrencyInput,\n currencyFormatter,\n Dropdown,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nStep0AmountAndBank.propTypes = {\n classes: PropTypes.object.isRequired,\n isEditing: PropTypes.bool.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n contribution: PropTypes.object.isRequired,\n contributionDetails: PropTypes.object.isRequired, \n contributionEnvironmentVars: PropTypes.object.isRequired,\n errorGet: PropTypes.func.isRequired,\n accountSelect: PropTypes.func.isRequired,\n amountHandle: PropTypes.func.isRequired,\n bankAccountSelectHandle: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionRecurringStep0: PropTypes.shape({\n btn_add_bank: PropTypes.string,\n err_amount_between: PropTypes.func,\n lbl_amount: PropTypes.string,\n lbl_bank_account: PropTypes.string,\n lbl_selected_account: PropTypes.string,\n text_add_new_bank: PropTypes.string,\n })\n })\n};\n\nexport function Step0AmountAndBank({\n classes,\n isEditing,\n agentBankAccounts,\n bankAccountsLoading,\n toggleShowAddBank,\n contribution,\n contributionDetails, \n contributionEnvironmentVars: { MinimumRecurringOnlineContribution, MaximumRecurringOnlineContribution, },\n errorGet,\n accountSelect,\n amountHandle,\n bankAccountSelectHandle,\n text: { ContributionRecurringStep0 },\n}) {\n const rowIndex = 0; //hard coding rowIndex as 0 since only one account can be selected in Recurring\n const agentAccountsFormatted = agentBankAccounts.map(account => {\n if (account.Nickname && account.Nickname.length > 0) {\n return {\n value: account.BankAccountId,\n display: `${account.Nickname}, ${account.MaskedBankAccountNumber}`\n };\n }\n else {\n return {\n value: account.BankAccountId,\n display: account.BankAccountId === 0 ? account.BankName : `${account.BankName}, ${account.MaskedBankAccountNumber}`\n };\n }\n });\n return (\n \n
    \n
    \n accountSelect(value, rowIndex)}\n options={(isEditing ? contribution.selectedAccounts : contributionDetails.canContributeAccountList).map(account => ({\n value: account.accountId,\n display: `${account.beneficiary.name.toUpperCase()} ...${account.accountNumber.toString().slice(account.accountNumber.toString().length - 5)}`,\n props: {\n disabled: (contribution.selectedAccounts.some(selAccount => selAccount.accountId === account.accountId) \n && contribution.selectedAccounts[rowIndex].accountId !== account.accountId)\n || account.overMaxBalance,\n },\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px', textAlign: 'left' } }}\n MenuItemProps={{\n classes: { root: classes.root }\n }}\n />\n
    \n
    \n \n
    \n\n {agentBankAccounts.length > 0 ?\n
    \n \n \n \n\n
    \n \n add}\n onClick={toggleShowAddBank}\n >\n {ContributionRecurringStep0.btn_add_bank}\n \n \n
    \n
    \n :\n
    \n
    \n \n {ContributionRecurringStep0.btn_add_bank}\n \n
    \n
    \n {errorGet('bankAccount') &&\n \n {ContributionRecurringStep0.text_add_new_bank}\n \n }\n
    \n
    \n }\n
    \n\n
    \n {errorGet('amount') &&\n \n {ContributionRecurringStep0.err_amount_between(currencyFormatter(MinimumRecurringOnlineContribution), currencyFormatter(MaximumRecurringOnlineContribution), currencyFormatter(MaximumRecurringOnlineContribution / 2))}\n \n }\n
    \n
    \n );\n}\n\nexport default (LanguageHOC(withStyles(muiStyles)(Step0AmountAndBank)));","/*\n *\n * Step1Frequency Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n FormHelperText,\n} from '@mui/material';\nimport {\n DatePicker,\n currencyFormatter,\n} from '@frontend/common';\nimport {\n MONTHLY,\n TWICE_MONTHLY,\n DISABLED_DATES\n} from '../../constants';\n\nimport styles from '../styles.module.scss';\n\nStep1Frequency.propTypes = {\n isEditing: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n contributionDateHandle: PropTypes.func.isRequired,\n nextRunDateCompose: PropTypes.func.isRequired,\n contributionSet: PropTypes.func.isRequired,\n contribution: PropTypes.object.isRequired,\n contributionEnvironmentVars: PropTypes.object.isRequired,\n contributionDatesDisable: PropTypes.func.isRequired,\n errorGet: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionRecurringStep1: PropTypes.shape({\n err_amount_between: PropTypes.func,\n err_max_date: PropTypes.string,\n lbl_first_date: PropTypes.func,\n lbl_monthly: PropTypes.string,\n lbl_option_end_date: PropTypes.string,\n lbl_second_date: PropTypes.func,\n lbl_twice_monthly: PropTypes.string,\n })\n })\n};\n\nexport function Step1Frequency({\n isEditing,\n contribution: { day1, day2, selectedAccounts, type },\n contributionEnvironmentVars: {\n CurrentTradeDate,\n MaximumRecurringContributionLeadDays,\n MinimumRecurringOnlineContribution,\n MaximumRecurringOnlineContribution,\n },\n contributionSet,\n errorGet,\n contributionDateHandle,\n nextRunDateCompose,\n contributionDatesDisable,\n text: { ContributionRecurringStep1 },\n}) {\n return (\n
    \n contributionSet(1, 'type', e.target.value)} // eslint-disable-line\n value={type}\n >\n }\n label={ContributionRecurringStep1.lbl_monthly}\n value={MONTHLY}\n />\n }\n label={ContributionRecurringStep1.lbl_twice_monthly}\n value={TWICE_MONTHLY}\n />\n \n\n
    \n {errorGet('amount') &&\n \n {ContributionRecurringStep1.err_amount_between(currencyFormatter(MinimumRecurringOnlineContribution), currencyFormatter(MaximumRecurringOnlineContribution), currencyFormatter(MaximumRecurringOnlineContribution / 2))}\n \n }\n
    \n\n
    \n contributionDateHandle(date, 'day1')}\n shouldDisableDate={contributionDatesDisable}\n value={day1}\n />\n {Boolean(!errorGet('day1')) && nextRunDateCompose('start1')}\n
    \n\n {type === TWICE_MONTHLY &&\n
    \n contributionDateHandle(date, 'day2')}\n shouldDisableDate={(date) => DISABLED_DATES.includes(dayjs(date).date())}\n value={day2 ? day2 : null}\n />\n {Boolean(!errorGet('day2')) && dayjs(day2).isValid() && nextRunDateCompose('start2')}\n
    \n }\n\n
    \n contributionDateHandle(date, 'endDate')}\n value={selectedAccounts[0].endDate ? selectedAccounts[0].endDate : null}\n fullWidth\n />\n
    \n
    \n );\n}\n\nexport default (LanguageHOC(Step1Frequency));","/*\n *\n * ReviewDetails Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport { MONTHLY } from '../../constants';\n\nimport styles from '../styles.module.scss';\n\nReviewDetails.propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContributionRecurringReview: PropTypes.shape({\n text_scheduled_days: PropTypes.func,\n title_account_number: PropTypes.string,\n title_amount: PropTypes.string,\n title_bank_account: PropTypes.string,\n title_bene_name: PropTypes.string,\n title_end_date: PropTypes.string,\n title_next_date: PropTypes.string,\n title_scheduled_day: PropTypes.func,\n })\n })\n};\n\nexport function ReviewDetails({\n contribution: { bankAccount, day1, day2, selectedAccounts, type },\n nextRunDates,\n text: { ContributionRecurringReview },\n}) {\n let nextRunDate = '';\n if (type === MONTHLY) {\n nextRunDate = dayjs(nextRunDates.day1);\n }\n else {\n nextRunDate = dayjs(nextRunDates.day1).isBefore(dayjs(nextRunDates.day2), 'day') ? dayjs(nextRunDates.day1) : dayjs(nextRunDates.day2);\n }\n\n return (\n
    \n \n
    {ContributionRecurringReview.title_account_number}
    \n {selectedAccounts.map(account => (
    {account.accountNumber}
    ))}\n
    \n\n \n
    {ContributionRecurringReview.title_bene_name}
    \n {selectedAccounts.map(account => (
    {account.beneficiary.name.toUpperCase()}
    ))}\n
    \n\n \n
    {ContributionRecurringReview.title_scheduled_day(type === MONTHLY)}
    \n
    {ContributionRecurringReview.text_scheduled_days(type === MONTHLY, dayjs(day1).format('Do'), dayjs(day2).format('Do'))}
    \n
    \n\n \n
    {ContributionRecurringReview.title_next_date}
    \n
    {nextRunDate.format('L')}
    \n
    \n\n {selectedAccounts[0].endDate && (\n
    \n
    {ContributionRecurringReview.title_end_date}
    \n
    {dayjs(selectedAccounts[0].endDate).format('L')}
    \n
    \n )}\n\n \n
    {ContributionRecurringReview.title_amount}
    \n {selectedAccounts.map(account => (
    {currencyFormatter(account.contributionAmount)}
    ))}\n
    \n\n \n
    {ContributionRecurringReview.title_bank_account}
    \n
    {bankAccount.BankName} {bankAccount.BankAccountType}, {bankAccount.MaskedBankAccountNumber}
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(ReviewDetails));","/*\n *\n * Step2Terms Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Checkbox,\n} from '@frontend/common';\nimport ReviewDetails from './ReviewDetails';\nimport TermsConditions from 'components/Features/protected/Accounts/Transactions/Contributions/TermsCondition';\nimport styles from '../styles.module.scss';\n\nStep2Terms.propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n termsChecked: PropTypes.bool.isRequired,\n toggleTermsChecked: PropTypes.func.isRequired,\n phoneEnvironmentVars: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContributionRecurringStep2: PropTypes.shape({\n lbl_read_terms: PropTypes.string,\n })\n })\n};\n\nexport function Step2Terms({\n contribution,\n nextRunDates,\n termsChecked,\n toggleTermsChecked,\n phoneEnvironmentVars,\n text,\n}) {\n return (\n \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(Step2Terms));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport ReviewDetails from './ReviewDetails';\n\nimport styles from '../styles.module.scss';\n\nexport class Step3PrintReview extends React.Component {\n static propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n createdDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ContributionRecurringStep3: PropTypes.shape({\n text_print_copy: PropTypes.string,\n text_timezone: PropTypes.string,\n })\n })\n }\n\n render() {\n const { contribution, nextRunDates, createdDate, text, } = this.props;\n return (\n
    \n \n
    {dayjs(createdDate)\n .format('MM/DD/YYYY h:mm A')} {text.ContributionRecurringStep3.text_timezone}
    \n
    \n {text.ContributionRecurringStep3.text_print_copy}\n
    \n
    \n );\n }\n}\n\nexport default (LanguageHOC(Step3PrintReview));","/* eslint-disable newline-per-chained-call */\n/*\n*\n* Recurring Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { clone, isEqual, cloneDeep } from 'lodash';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Card,\n notificationShow,\n} from '@frontend/common';\nimport { getNextRunDate, } from 'components/Features/protected/Accounts/Transactions/actions';\nimport {\n MONTHLY,\n TWICE_MONTHLY,\n DISABLED_DATES,\n} from '../constants';\nimport TransactionStepper from 'components/Features/protected/Accounts/Transactions/TransactionStepper';\nimport { Step0AmountAndBank, Step1Frequency, Step2Terms, Step3PrintReview } from 'components/Features/protected/Accounts/Transactions/Contributions/Recurring/StepComponents/';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n contributionEnvironmentVars: state.static.environmentVars,\n contributionDetails: state.transactions.contributionDetails,\n agentBankAccounts: state.payments.agentBankAccounts,\n nextRunDates: state.transactions.nextRunDates.monthly,\n});\n\nexport class Recurring extends React.Component {\n static propTypes = {\n agentBankAccounts: PropTypes.array.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n accountId: PropTypes.number.isRequired,\n isEditing: PropTypes.bool.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getNextRunDate: PropTypes.func.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n renderDuplicateConfirmModal: PropTypes.func.isRequired,\n duplicateContributionModalOpen: PropTypes.bool.isRequired,\n createdDate: PropTypes.string.isRequired,\n contributionEnvironmentVars: PropTypes.shape({\n CurrentTradeDate: PropTypes.string.isRequired,\n MaximumRecurringOnlineContribution: PropTypes.number.isRequired,\n MinimumRecurringOnlineContribution: PropTypes.number.isRequired,\n MaximumOnlineContributionAmount: PropTypes.number.isRequired,\n MaximumRecurringContributionLeadDays: PropTypes.number.isRequired,\n ValidRecurringContributionDates: PropTypes.array.isRequired,\n SupportPhoneNumber: PropTypes.string.isRequired,\n FaxNumber: PropTypes.string.isRequired,\n }),\n contributionDetails: PropTypes.shape({\n canContributeAccountList: PropTypes.array,\n contribution: PropTypes.shape({\n day1: PropTypes.string,\n day2: PropTypes.string,\n endDate: PropTypes.string,\n }),\n selectedAccountId: PropTypes.number,\n // contribution: PropTypes.bool, TODO: Update this during edit story\n }).isRequired,\n text: PropTypes.shape({\n ContributionRecurring: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n err_bankAccount_select: PropTypes.string,\n err_end_date_after_start: PropTypes.string,\n err_end_date_after_both: PropTypes.string,\n err_second_date_required: PropTypes.string,\n err_second_date_within_month: PropTypes.string,\n err_step_does_not_exist: PropTypes.string,\n lbl_step_labels: PropTypes.array,\n text_end_before_next_run: PropTypes.string,\n text_next_run: PropTypes.string,\n })\n }),\n }\n\n state = {\n contribution: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: '',\n day2: '',\n selectedAccounts: [],\n type: MONTHLY,\n },\n contributionScreenshot: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: '',\n day2: '',\n selectedAccounts: [],\n type: MONTHLY,\n },\n errors: [],\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n termsChecked: false,\n stepHasError: false,\n };\n\n displayUnsavedChangesPrompt = () => {\n return !this.state.bankAccountsLoading && !isEqual(this.state.contribution, this.state.contributionScreenshot);\n }\n\n clearStepErrors = () => {\n this.setState({\n errors: [],\n });\n }\n\n accountSelect = (value, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const selectedAccount = this.props.contributionDetails.canContributeAccountList.find(account => account.accountId === value);\n const accountUpdatedWithAmount = { ...selectedAccount, contributionAmount: selectedAccounts[rowIndex].contributionAmount };\n\n selectedAccounts.splice(rowIndex, 1, accountUpdatedWithAmount);\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n amountHandle = ({ floatValue = 0 }) => {\n const { selectedAccounts } = this.state.contribution;\n selectedAccounts[0].contributionAmount = floatValue;\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet(0, 'bankAccount', this.props.agentBankAccounts.find(bankAccount => bankAccount.BankAccountId === value));\n }\n\n contributionDateHandle = (date, day) => {\n const { selectedAccounts } = this.state.contribution;\n if (day === 'endDate') {\n selectedAccounts[0].endDate = date;\n this.contributionSet(1, 'selectedAccounts', selectedAccounts);\n }\n else {\n this.contributionSet(1, day, date);\n // if day1 is now showing after day2, update day2 to be 1 day past day1.\n if (day === 'day1' && dayjs(date).isSameOrAfter(this.state.contribution.day2)) {\n this.contributionSet(1, 'day2', dayjs(date).add(1, 'd'));\n this.nextRunDateGet(dayjs(date).add(1, 'd'), 'day2');\n }\n }\n\n this.nextRunDateGet(date, day);\n }\n\n contributionFormat = () => {\n const { contribution } = this.state;\n if (contribution.type === MONTHLY) {\n contribution.day2 = null;\n }\n if (this.props.isEditing) {\n return this.contributionEditHandler(contribution);\n }\n else {\n return this.contributionCreateHandler(contribution);\n }\n }\n\n contributionSet = (step, key, value) => {\n this.setState(({ contribution }) => {\n return { contribution: { ...contribution, [key]: value } };\n }, () => {\n if (\n (step === 0 && this.state.step0ValidationHasRun) ||\n (step === 1 && this.state.step1ValidationHasRun)\n ) {\n this.formValidate(step);\n }\n });\n }\n\n contributionDatesDisable = (date) => {\n return this.props.contributionEnvironmentVars.ValidRecurringContributionDates.every(validContributionDate => {\n return !dayjs(validContributionDate).isSame(dayjs(date), 'day') ||\n dayjs(this.props.contributionEnvironmentVars.CurrentTradeDate).isAfter(dayjs(date), 'day');\n });\n }\n\n nextMinDateGet = (startDate = this.state.contribution.day1) => {\n let momentDate = dayjs(startDate).add(1, 'd');\n\n if (DISABLED_DATES.includes(momentDate.date())) {\n do {\n momentDate = dayjs(momentDate).add(1, 'd');\n }\n while (DISABLED_DATES.includes(momentDate.date()));\n }\n\n return momentDate;\n }\n\n nextRunDateCompose = (start) => {\n const {\n contributionDetails: { contribution: { day1, day2, endDate } },\n nextRunDates,\n text: { ContributionRecurring },\n } = this.props;\n\n if (\n endDate &&\n (dayjs(day1).isSameOrAfter(endDate) || dayjs(day2).isSameOrAfter(endDate))\n ) {\n return {ContributionRecurring.text_end_before_next_run};\n }\n\n return {ContributionRecurring.text_next_run} {dayjs(start === 'start1' ? nextRunDates.day1 : nextRunDates.day2).format('L')};\n }\n\n nextRunDateGet = (date, day) => {\n if (dayjs(date).isValid()) {\n this.props.getNextRunDate(date, day, MONTHLY);\n }\n }\n\n errorGet = (key) => {\n const error = this.state.errors.find(error => error.key === key);\n return error ? error.message : '';\n }\n\n formValidate = (step) => {\n const { ContributionRecurring } = this.props.text;\n const { MaximumRecurringOnlineContribution, MinimumRecurringOnlineContribution, CurrentTradeDate, MaximumRecurringContributionLeadDays } = this.props.contributionEnvironmentVars;\n const { selectedAccounts, bankAccount, day1, day2, type } = this.state.contribution;\n const { contributionAmount, endDate } = selectedAccounts[0];\n const errors = [];\n\n const maxContributionAmount = type === TWICE_MONTHLY ? MaximumRecurringOnlineContribution / 2 : MaximumRecurringOnlineContribution;\n const amountMessage = validator.amountValidator(contributionAmount, MinimumRecurringOnlineContribution, maxContributionAmount);\n if (amountMessage) {\n errors.push({\n key: 'amount',\n message: amountMessage\n });\n }\n\n switch (step) {\n case 0: {\n if (!bankAccount.BankAccountId) {\n errors.push({\n key: 'bankAccount',\n message: ContributionRecurring.err_bankAccount_select,\n });\n }\n\n this.setState({ errors, step0ValidationHasRun: true, stepHasError: errors.length > 0 });\n break;\n }\n case 1: {\n const day1Message = validator.calendarValidator(day1, CurrentTradeDate, dayjs(CurrentTradeDate).add(MaximumRecurringContributionLeadDays, 'd'));\n if (day1Message) {\n errors.push({\n key: 'day1',\n message: day1Message,\n });\n }\n\n if (type === TWICE_MONTHLY) {\n if (!dayjs(day2).isValid()) { // validates that day2 is populated while editing\n errors.push({\n key: 'day2',\n message: ContributionRecurring.err_second_date_required\n });\n }\n if (\n (dayjs(day2).isSameOrBefore(day1, 'day') || // validates that day2 occurs after day1\n dayjs(day2).isSameOrAfter(dayjs(day1).add(1, 'month'), 'day')) // validates that day2 is within a month of day1\n ) {\n errors.push({\n key: 'day2',\n message: ContributionRecurring.err_second_date_within_month\n });\n }\n }\n\n const endDateMessage = validator.calendarValidator(endDate);\n if (endDate && endDateMessage) {\n errors.push({\n key: 'endDate',\n message: endDateMessage\n });\n }\n else if (\n ((type === TWICE_MONTHLY && (dayjs(endDate).isSameOrBefore(day1, 'day') || dayjs(endDate).isSameOrBefore(day2, 'day'))) || // validates that end date occurs after day1 and day2\n (type === MONTHLY && dayjs(endDate).isSameOrBefore(day1, 'day'))) // validates that end date occurs after day1\n ) {\n errors.push({\n key: 'endDate',\n message: type === MONTHLY ? ContributionRecurring.err_end_date_after_start : ContributionRecurring.err_end_date_after_both\n });\n }\n this.setState({ errors, step1ValidationHasRun: true, stepHasError: errors.length > 0 });\n break;\n }\n default: break;\n }\n\n return errors.length === 0;\n }\n\n contributionCreateHandler = () => {\n return this.props.contributionCreate(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n contributionEditHandler = () => {\n return this.props.contributionEdit(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n renderStepComponent = step => {\n const { agentBankAccounts, bankAccountsLoading, contributionDetails, contributionEnvironmentVars, isEditing, toggleShowAddBank, nextRunDates, createdDate, text: { ContributionRecurring } } = this.props;\n const { contribution, errors, termsChecked, } = this.state;\n let stepComponent;\n\n switch (step) {\n case 0: {\n stepComponent = (\n \n );\n break;\n }\n\n case 1: {\n stepComponent = (\n \n );\n break;\n }\n\n case 2: {\n stepComponent = (\n this.setState({ termsChecked: !termsChecked })}\n />\n );\n break;\n }\n\n case 3: {\n stepComponent = (\n \n );\n break;\n }\n\n default:\n stepComponent =
    {ContributionRecurring.err_step_does_not_exist}
    ;\n }\n return stepComponent;\n }\n\n componentDidMount() {\n const { contributionDetails: { canContributeAccountList, contribution, selectedAccountId }, contributionEnvironmentVars: { CurrentTradeDate }, isEditing } = this.props;\n\n if (Object.keys(canContributeAccountList).length > 0) {\n if (isEditing) {\n this.setState({ contribution, contributionScreenshot: cloneDeep(contribution) });\n this.nextRunDateGet(contribution.day1, 'day1');\n this.nextRunDateGet(contribution.day2, 'day2');\n }\n else {\n const firstNonDisabledDate = DISABLED_DATES.includes(dayjs(CurrentTradeDate).date()) ? this.nextMinDateGet(CurrentTradeDate) : dayjs(CurrentTradeDate);\n const secondNonDisabledDate = DISABLED_DATES.includes(dayjs(CurrentTradeDate).add(1, 'd').date()) ? this.nextMinDateGet(dayjs(CurrentTradeDate).add(1, 'd')) : dayjs(CurrentTradeDate).add(1, 'd'); // eslint-disable-line\n this.contributionDateHandle(firstNonDisabledDate, 'day1');\n this.contributionDateHandle(secondNonDisabledDate, 'day2');\n this.contributionSet(0, 'selectedAccounts', [clone(canContributeAccountList.find(account => account.accountId === selectedAccountId))]);\n }\n }\n }\n\n render() {\n return (\n
    \n \n this.formValidate(step)}\n renderStepComponent={(step) => this.renderStepComponent(step)}\n handleSubmit={() => this.contributionFormat()}\n stepLabels={this.props.text.ContributionRecurring.lbl_step_labels}\n submitStep={2}\n termsChecked={this.state.termsChecked}\n renderConfirmModal={this.props.renderDuplicateConfirmModal}\n />\n \n\n \n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n notificationShow,\n getNextRunDate,\n})(LanguageHOC(Recurring)));\n","/*\n *\n * Step0AmountAndDate Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\n\nimport {\n Icon,\n FormHelperText,\n RadioGroup,\n FormControlLabel,\n Radio,\n Collapse,\n Button\n} from '@mui/material';\n\nimport { withStyles } from '@mui/styles';\n\nimport {\n CurrencyInput,\n currencyFormatter,\n Dropdown,\n DatePicker,\n InfoIcon,\n IconBtnTooltip\n} from '@frontend/common';\n\nimport {\n ANNUAL_EVENT,\n BIRTHDAY,\n} from '../../constants';\n\nimport transactionsStyles from 'components/Features/protected/Accounts/Transactions/styles.module.scss';\nimport styles from '../styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nStep0AmountAndDate.propTypes = {\n classes: PropTypes.object.isRequired,\n isEditing: PropTypes.bool.isRequired,\n errors: PropTypes.array.isRequired,\n contributionSet: PropTypes.func.isRequired,\n contributionDateHandle: PropTypes.func.isRequired,\n contribution: PropTypes.object.isRequired,\n contributionDetails: PropTypes.object.isRequired,\n contributionEnvironmentVars: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n errorGet: PropTypes.func.isRequired,\n accountSelect: PropTypes.func.isRequired,\n amountHandle: PropTypes.func.isRequired,\n addAccount: PropTypes.func.isRequired,\n removeAccount: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionSpecialStep0: PropTypes.shape({\n err_amount_min_max: PropTypes.func,\n lbl_add_account: PropTypes.string,\n lbl_amount: PropTypes.string,\n lbl_birthday: PropTypes.string,\n lbl_occasion: PropTypes.string,\n lbl_optional_end_date: PropTypes.string,\n lbl_remove_account: PropTypes.string,\n lbl_start_date: PropTypes.string,\n lbl_selected_account: PropTypes.string,\n text_multiple_annual_events: PropTypes.string,\n text_next_run: PropTypes.string,\n text_total: PropTypes.string,\n })\n })\n};\n\nexport function Step0AmountAndDate({\n classes,\n isEditing,\n errors,\n contribution: { day1, occasion, selectedAccounts, },\n contributionDetails: { canContributeAccountList, },\n contributionEnvironmentVars: { CurrentTradeDate, MaximumOneTimeOnlineContribution, MinimumOneTimeOnlineContribution, },\n errorGet,\n contributionSet,\n contributionDateHandle,\n accountSelect,\n amountHandle,\n addAccount,\n removeAccount,\n nextRunDates,\n text: { ContributionSpecialStep0 },\n}) {\n\n return (\n \n
    \n contributionSet(0, 'occasion', e.target.value)}\n value={occasion}\n >\n }\n label={BIRTHDAY.display}\n value={BIRTHDAY.id}\n />\n }\n label={\n \n
    {ANNUAL_EVENT.display}
    \n
    \n \n
    \n
    \n }\n value={ANNUAL_EVENT.id}\n />\n \n\n \n contributionDateHandle(date, 'day1')}\n value={day1 ? day1 : null}\n />\n {dayjs(nextRunDates.day1).isValid() && dayjs(day1).isValid() && {ContributionSpecialStep0.text_next_run} {dayjs(nextRunDates.day1).format('L')}}\n \n
    \n\n
    \n {selectedAccounts.map((selectedAccount, rowIndex) => {\n return (\n
    \n
    \n accountSelect(value, rowIndex)}\n options={(isEditing ? selectedAccounts : canContributeAccountList).map(account => ({\n value: account.accountId,\n display: `${account.beneficiary.name.toUpperCase()} ...${account.accountNumber.toString().slice(account.accountNumber.toString().length - 5)}`,\n props: isEditing\n ? {}\n : {\n disabled: (selectedAccounts.some(selAccount => selAccount.accountId === account.accountId)\n && selectedAccounts[rowIndex].accountId !== account.accountId)\n || account.overMaxBalance,\n },\n }))}\n FormControlProps={{ style: { width: '100%', minWidth: '256px', margin: '0px', textAlign: 'left', } }}\n MenuItemProps={{\n classes: { root: classes.root }\n }}\n />\n
    \n\n
    \n amountHandle(vals, rowIndex)}\n style={{ margin: '0px' }}\n value={selectedAccounts[rowIndex].contributionAmount}\n />\n
    \n\n {occasion === BIRTHDAY.id &&\n
    \n
    \n {selectedAccount.beneficiary.birthday && dayjs(selectedAccount.beneficiary.birthday).format('MMM D')}\n
    \n \n {selectedAccount.nextBdayRunDate && dayjs(selectedAccount.nextBdayRunDate).isValid() && {ContributionSpecialStep0.text_next_run} {dayjs(selectedAccount.nextBdayRunDate).format('L')}}\n
    \n }\n\n
    \n contributionDateHandle(date, 'endDate', rowIndex)}\n value={selectedAccount.endDate || null}\n sx={{ margin: '0px', width: '100%' }}\n slotProps={{ field: { clearable: true } }}\n />\n
    \n\n {rowIndex !== 0 &&\n
    \n removeAccount(rowIndex)}\n title={ContributionSpecialStep0.lbl_remove_account}\n iconProps={{ color: 'secondary' }}\n />\n
    \n }\n
    \n );\n })}\n\n {canContributeAccountList.length !== selectedAccounts.length && !isEditing && (\n
    \n add}\n onClick={addAccount}\n >\n {ContributionSpecialStep0.lbl_add_account}\n \n
    \n )}\n\n
    \n {errors.some(error => error.key === 'amount') &&\n
    \n \n {ContributionSpecialStep0.err_amount_min_max(currencyFormatter(MinimumOneTimeOnlineContribution), currencyFormatter(MaximumOneTimeOnlineContribution))}\n \n
    }\n
    \n
    {ContributionSpecialStep0.text_total}
    \n
    {currencyFormatter(selectedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(withStyles(muiStyles)(Step0AmountAndDate)));","/*\n *\n * Step1Bank Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Icon,\n} from '@mui/material';\nimport { withStyles } from '@mui/styles';\nimport {\n Dropdown,\n LoadingOverlay,\n} from '@frontend/common';\n\nimport styles from '../styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nStep1Bank.propTypes = {\n classes: PropTypes.object.isRequired,\n errors: PropTypes.array.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n bankAccountSelectHandle: PropTypes.func.isRequired,\n contribution: PropTypes.object.isRequired,\n errorGet: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ContributionSpecialStep1: PropTypes.shape({\n btn_add_bank: PropTypes.string,\n lbl_bank_account: PropTypes.string,\n lbl_add_bank: PropTypes.string,\n })\n })\n};\n\nexport function Step1Bank({\n classes,\n agentBankAccounts,\n bankAccountsLoading,\n toggleShowAddBank,\n contribution: { bankAccount },\n errorGet,\n bankAccountSelectHandle,\n text: { ContributionSpecialStep1 },\n}) {\n const agentAccountsFormatted = agentBankAccounts.map(account => {\n if (account.Nickname && account.Nickname.length > 0) {\n return {\n value: account.BankAccountId,\n display: `${account.Nickname}, ${account.MaskedBankAccountNumber}`\n };\n }\n else {\n return {\n value: account.BankAccountId,\n display: account.BankAccountId === 0 ? account.BankName : `${account.BankName}, ${account.MaskedBankAccountNumber}`\n };\n }\n });\n return (\n
    \n {agentBankAccounts.length > 0 ?\n
    \n \n \n \n
    \n \n add}\n onClick={toggleShowAddBank}\n >\n {ContributionSpecialStep1.btn_add_bank}\n \n \n
    \n
    \n :\n
    \n \n
    \n }\n
    \n );\n}\n\nexport default (LanguageHOC(withStyles(muiStyles)(Step1Bank)));","/*\n *\n * ReviewDetails Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n currencyFormatter,\n} from '@frontend/common';\nimport { BIRTHDAY, } from '../../constants';\nimport styles from '../styles.module.scss';\n\nReviewDetails.propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContrubutionOneTimeReview: PropTypes.shape({\n title_account_number: PropTypes.string,\n title_amount: PropTypes.string,\n title_bank_account: PropTypes.string,\n title_bene_name: PropTypes.string,\n title_end_date: PropTypes.string,\n title_next_run_date: PropTypes.string,\n title_total: PropTypes.string,\n text_none: PropTypes.string,\n }),\n ContributionSpecialReview: PropTypes.shape({\n text_none: PropTypes.string,\n title_account_number: PropTypes.string,\n title_amount: PropTypes.string,\n title_bank_account: PropTypes.string,\n title_bene_name: PropTypes.string,\n title_end_date: PropTypes.string,\n title_next_run_date: PropTypes.string,\n title_total: PropTypes.string,\n }),\n }).isRequired,\n};\n\nexport function ReviewDetails({\n contribution: { bankAccount, occasion, selectedAccounts, },\n nextRunDates,\n text: { ContributionSpecialReview },\n}) {\n const populatedAccounts = selectedAccounts.filter(account => account.accountId);\n return (\n \n
    \n
    \n
    {ContributionSpecialReview.title_bene_name}
    \n {populatedAccounts.map(account => (
    {account.beneficiary.name.toUpperCase()}
    ))}\n
    \n\n
    \n
    {ContributionSpecialReview.title_account_number}
    \n {populatedAccounts.map(account => (
    {account.accountNumber}
    ))}\n
    \n\n
    \n
    {ContributionSpecialReview.title_bank_account}
    \n
    {bankAccount.BankName} {bankAccount.BankAccountType}, {bankAccount.MaskedBankAccountNumber}
    \n
    \n\n
    \n
    {ContributionSpecialReview.title_next_run_date}
    \n {occasion === BIRTHDAY.id ?\n populatedAccounts.map(account =>
    {dayjs(account.nextBdayRunDate).format('L')}
    )\n :\n populatedAccounts.map(account =>
    {dayjs(nextRunDates.day1).format('L')}
    )\n }\n
    \n\n {populatedAccounts.some(account => account.endDate) && (\n
    \n
    {ContributionSpecialReview.title_end_date}
    \n {populatedAccounts.map(account => (
    {dayjs(account.endDate).isValid() ?
    {dayjs(account.endDate).format('L')}
    :
    {ContributionSpecialReview.text_none}
    }
    ))}\n
    \n )}\n\n
    \n
    {ContributionSpecialReview.title_amount}
    \n {populatedAccounts.map(account => (
    {currencyFormatter(account.contributionAmount)}
    ))}\n
    \n
    \n\n
    \n
    {ContributionSpecialReview.title_total}
    \n
    {currencyFormatter(populatedAccounts.map(account => account.contributionAmount).reduce((val1, val2) => val1 + val2, 0))}
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(ReviewDetails));","/*\n *\n * Step2Terms Component\n *\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Checkbox,\n} from '@frontend/common';\nimport ReviewDetails from './ReviewDetails';\nimport TermsConditions from 'components/Features/protected/Accounts/Transactions/Contributions/TermsCondition';\nimport { SPECIAL } from '../../constants';\nimport styles from '../styles.module.scss';\n\nStep2Terms.propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n termsChecked: PropTypes.bool.isRequired,\n toggleTermsChecked: PropTypes.func.isRequired,\n phoneEnvironmentVars: PropTypes.object.isRequired,\n text: PropTypes.shape({\n ContributionSpecialStep2: PropTypes.shape({\n lbl_read_terms: PropTypes.string,\n })\n })\n};\n\nexport function Step2Terms({\n contribution,\n nextRunDates,\n termsChecked,\n toggleTermsChecked,\n phoneEnvironmentVars,\n text,\n}) {\n return (\n \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport default (LanguageHOC(Step2Terms));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport ReviewDetails from './ReviewDetails';\n\nimport styles from '../styles.module.scss';\n\nexport class Step3PrintReview extends React.Component {\n static propTypes = {\n contribution: PropTypes.object.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n createdDate: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ContributionOneTimeStep3: PropTypes.shape({\n text_print_copy: PropTypes.string,\n text_timezone: PropTypes.string,\n })\n }),\n }\n\n render() {\n const { contribution, nextRunDates, createdDate, text, } = this.props;\n return (\n
    \n \n
    {dayjs(createdDate)\n .format('MM/DD/YYYY h:mm A')} {text.ContributionOneTimeStep3.text_timezone}
    \n
    \n {text.ContributionOneTimeStep3.text_print_copy}\n
    \n
    \n );\n }\n}\n\nexport default (LanguageHOC(Step3PrintReview));","/*\n*\n* Special Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { clone, isEqual, cloneDeep } from 'lodash';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Card,\n} from '@frontend/common';\nimport { getNextRunDate, } from 'components/Features/protected/Accounts/Transactions/actions';\nimport {\n ANNUAL_EVENT,\n BIRTHDAY,\n YEARLY,\n} from '../constants';\nimport TransactionStepper from 'components/Features/protected/Accounts/Transactions/TransactionStepper';\nimport { Step0AmountAndDate, Step1Bank, Step2Terms, Step3PrintReview, } from 'components/Features/protected/Accounts/Transactions/Contributions/Special/StepComponents/';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n contributionEnvironmentVars: state.static.environmentVars,\n contributionDetails: state.transactions.contributionDetails,\n agentBankAccounts: state.payments.agentBankAccounts,\n nextRunDates: state.transactions.nextRunDates.yearly,\n});\n\nexport class Special extends React.Component {\n static propTypes = {\n agentBankAccounts: PropTypes.array.isRequired,\n nextRunDates: PropTypes.object.isRequired,\n accountId: PropTypes.number.isRequired,\n isEditing: PropTypes.bool.isRequired,\n bankAccountsLoading: PropTypes.bool.isRequired,\n getNextRunDate: PropTypes.func.isRequired,\n contributionCreate: PropTypes.func.isRequired,\n contributionEdit: PropTypes.func.isRequired,\n toggleShowAddBank: PropTypes.func.isRequired,\n renderDuplicateConfirmModal: PropTypes.func.isRequired,\n duplicateContributionModalOpen: PropTypes.bool.isRequired,\n createdDate: PropTypes.string.isRequired,\n contributionEnvironmentVars: PropTypes.shape({\n CurrentTradeDate: PropTypes.string.isRequired,\n MaximumOneTimeOnlineContribution: PropTypes.number.isRequired,\n MinimumOneTimeOnlineContribution: PropTypes.number.isRequired,\n MaximumOnlineContributionAmount: PropTypes.number.isRequired,\n SupportPhoneNumber: PropTypes.string.isRequired,\n FaxNumber: PropTypes.string.isRequired,\n }),\n contributionDetails: PropTypes.shape({\n canContributeAccountList: PropTypes.array,\n contribution: PropTypes.shape({\n day1: PropTypes.string,\n occasion: PropTypes.string,\n }),\n selectedAccountId: PropTypes.number,\n // contribution: PropTypes.bool, TODO: Update this during edit story\n }).isRequired,\n text: PropTypes.shape({\n ContributionSpecial: PropTypes.shape({\n err_account_select: PropTypes.string,\n err_bankAccount_select: PropTypes.string,\n err_end_date_after_start: PropTypes.string,\n err_step_does_not_exist: PropTypes.string,\n lbl_step_labels: PropTypes.array,\n msg_unsaved_changes: PropTypes.string,\n })\n }),\n }\n\n state = {\n contribution: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: '',\n occasion: BIRTHDAY.id,\n selectedAccounts: [],\n type: YEARLY\n },\n contributionScreenshot: {\n bankAccount: {\n BankAccountId: '',\n BankName: '',\n MaskedBankAccountNumber: '',\n },\n day1: '',\n occasion: BIRTHDAY.id,\n selectedAccounts: [],\n type: YEARLY\n },\n errors: [],\n stepIndex: 0,\n step0ValidationHasRun: false,\n step1ValidationHasRun: false,\n termsChecked: false,\n stepHasError: false,\n };\n\n displayUnsavedChangesPrompt = () => {\n return !this.state.bankAccountsLoading && !isEqual(this.state.contribution, this.state.contributionScreenshot);\n }\n\n clearStepErrors = () => {\n this.setState({\n errors: [],\n });\n }\n\n accountSelect = (value, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const matchingAccount = this.props.contributionDetails.canContributeAccountList.find(agentAccount => agentAccount.accountId === value);\n\n const accountUpdatedWithInputData = {\n ...matchingAccount,\n contributionAmount: selectedAccounts[rowIndex].contributionAmount,\n endDate: selectedAccounts[rowIndex].endDate\n };\n\n selectedAccounts.splice(rowIndex, 1, accountUpdatedWithInputData);\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n this.nextRunDateGet({}, BIRTHDAY.id);\n }\n\n addAccount = () => {\n const { contribution: { selectedAccounts } } = this.state;\n const newSelectedAccounts = [...selectedAccounts, { accountId: '', contributionAmount: 0, endDate: '', beneficiary: { birthday: '' } }];\n this.contributionSet(0, 'selectedAccounts', newSelectedAccounts);\n }\n\n removeAccount = (rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n selectedAccounts.splice(rowIndex, 1);\n this.contributionSet('selectedAccounts', selectedAccounts);\n }\n\n amountHandle = ({ floatValue = 0 }, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n\n selectedAccounts[rowIndex].contributionAmount = floatValue;\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n }\n\n bankAccountSelectHandle = (value) => {\n this.contributionSet(1, 'bankAccount', this.props.agentBankAccounts.find(bankAccount => bankAccount.BankAccountId === value));\n }\n\n contributionDateHandle = (date, day, rowIndex) => {\n const { contribution: { selectedAccounts } } = this.state;\n const account = selectedAccounts[rowIndex];\n const formattedDate = date ? dayjs(date).format('L') : null; // formatted to prevent unintentially timezone conversion\n\n switch (day) {\n case 'endDate':\n account.endDate = formattedDate;\n this.contributionSet(0, 'selectedAccounts', selectedAccounts);\n break;\n case 'day1':\n // wait till user finishes typing the date\n this.contributionSet(0, day, formattedDate);\n if (dayjs(formattedDate).isValid()) {\n this.nextRunDateGet(formattedDate, day);\n }\n break;\n default: // do nothing\n }\n }\n\n contributionSet = (step, key, value) => {\n this.setState(({ contribution }) => {\n return { contribution: { ...contribution, [key]: value } };\n }, () => {\n if ((step === 0) || (step === 1)) {\n this.formValidate(step);\n }\n });\n }\n\n errorGet = (key, row) => {\n const error = this.state.errors.find(error => error.key === key && error.row === row);\n return error ? error.message : '';\n }\n\n formValidate = step => {\n const { contributionEnvironmentVars: { MaximumOneTimeOnlineContribution, MinimumOneTimeOnlineContribution, CurrentTradeDate }, nextRunDates, text: { ContributionSpecial } } = this.props;\n const { day1, occasion, selectedAccounts, bankAccount } = this.state.contribution;\n const errors = [];\n\n switch (step) {\n case 0: {\n selectedAccounts.forEach(({ accountId, contributionAmount, endDate, nextBdayRunDate }, index) => {\n\n const amountMessage = validator.amountValidator(contributionAmount, MinimumOneTimeOnlineContribution, MaximumOneTimeOnlineContribution); // validates amounts against min and max parameters\n if (accountId && amountMessage) {\n errors.push({\n key: 'amount',\n message: amountMessage,\n row: index\n });\n }\n if (!accountId && contributionAmount) { // validates all accounts that also have amounts entered have a beneficiary selected\n errors.push({\n key: 'account',\n message: ContributionSpecial.err_account_select,\n row: index\n });\n }\n\n if (occasion === ANNUAL_EVENT.id) { // validates day1 is selected\n const day1Message = validator.calendarValidator(day1, CurrentTradeDate, dayjs(CurrentTradeDate).add(1, 'y'));\n if (day1Message) { // validate date format\n errors.push({\n key: 'day1',\n message: day1Message,\n });\n }\n }\n\n const endDateMessage = validator.calendarValidator(endDate);\n if (endDate && endDateMessage) { // validate date format\n errors.push({\n key: 'endDate',\n message: endDateMessage,\n row: index\n });\n }\n else if ( // validates end date\n (occasion === ANNUAL_EVENT.id && dayjs(endDate).isSameOrBefore(nextRunDates.day1, 'day')) ||\n (occasion === BIRTHDAY.id && dayjs(endDate).isSameOrBefore(nextBdayRunDate, 'day'))\n ) {\n errors.push({\n key: 'endDate',\n message: ContributionSpecial.err_end_date_after_start,\n row: index\n });\n }\n\n });\n this.setState({ errors, step0ValidationHasRun: true, stepHasError: errors.length > 0, });\n break;\n }\n\n case 1: {\n if (!bankAccount.BankAccountId) {\n errors.push({\n key: 'bankAccount',\n message: ContributionSpecial.err_bankAccount_select,\n });\n }\n this.setState({ errors, step1ValidationHasRun: true, stepHasError: errors.length > 0, });\n break;\n }\n default: break;\n }\n return errors.length === 0;\n }\n\n nextRunDateGet = (date, day) => {\n\n if (day === BIRTHDAY.id) {\n const { selectedAccounts } = this.state.contribution;\n const selectedAccountsWithBirthdays = selectedAccounts.filter(account => account.beneficiary.birthday);\n const birthdays = selectedAccountsWithBirthdays.map(account => account.beneficiary.birthday);\n\n this.props.getNextRunDate(birthdays, day, YEARLY)\n .then(() => {\n this.props.nextRunDates.birthday.forEach((bday, index) => {\n selectedAccountsWithBirthdays[index].nextBdayRunDate = bday;\n });\n this.contributionSet('selectedAccounts', selectedAccounts);\n });\n }\n else {\n this.props.getNextRunDate(date, day, YEARLY);\n }\n }\n\n contributionCreateHandler = () => {\n return this.props.contributionCreate(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n contributionEditHandler = () => {\n return this.props.contributionEdit(this.state.contribution)\n .then(() => this.setState({ contributionScreenshot: cloneDeep(this.state.contribution) }));\n }\n\n renderStepComponent = step => {\n const { agentBankAccounts, bankAccountsLoading, contributionDetails, contributionEnvironmentVars, isEditing, toggleShowAddBank, nextRunDates, createdDate, text: { ContributionSpecial } } = this.props;\n const { contribution, errors, termsChecked, } = this.state;\n let stepComponent;\n\n switch (step) {\n case 0: {\n stepComponent = (\n \n );\n break;\n }\n\n case 1: {\n stepComponent = (\n \n );\n break;\n }\n\n case 2: {\n stepComponent = (\n this.setState({ termsChecked: !termsChecked })}\n />\n );\n break;\n }\n\n case 3: {\n stepComponent = (\n \n );\n break;\n }\n\n default:\n stepComponent =
    {ContributionSpecial.err_step_does_not_exist}
    ;\n }\n return stepComponent;\n }\n\n componentDidMount() {\n const { contributionDetails: { canContributeAccountList, contribution, selectedAccountId }, isEditing } = this.props;\n\n if (Object.keys(canContributeAccountList).length > 0) {\n if (isEditing) {\n this.setState({ contribution, contributionScreenshot: cloneDeep(contribution) },\n () => {\n this.nextRunDateGet(contribution.day1, contribution.occasion === BIRTHDAY.id ? BIRTHDAY.id : 'day1');\n });\n }\n else {\n // Need to go around contributionSet() helper so that nextRunDateGet() has account set to state. This can be replaced with the helper on future versions of React that do not batch state.\n this.setState(\n ({ contribution }) => {\n const contributionUpdated = {\n ...contribution,\n selectedAccounts: [clone(canContributeAccountList.find(agentAccount => agentAccount.accountId === selectedAccountId))]\n };\n return { contribution: contributionUpdated, contributionScreenshot: cloneDeep(contributionUpdated) };\n },\n () => this.nextRunDateGet('', BIRTHDAY.id)\n );\n }\n }\n }\n\n render() {\n const { isEditing, renderDuplicateConfirmModal, text: { ContributionSpecial } } = this.props;\n const { contribution, termsChecked, stepHasError, } = this.state;\n\n return (\n
    \n \n this.formValidate(step)}\n renderStepComponent={(step) => this.renderStepComponent(step)}\n handleSubmit={() => isEditing ? this.contributionEditHandler(contribution) : this.contributionCreateHandler(contribution)}\n stepLabels={ContributionSpecial.lbl_step_labels}\n submitStep={2}\n termsChecked={termsChecked}\n renderConfirmModal={renderDuplicateConfirmModal}\n />\n \n\n \n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n getNextRunDate,\n})(LanguageHOC(Special)));\n","/*\n*\n* GiactRejection Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n FormHelperText,\n} from '@mui/material';\nimport {\n Modal,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nGiactRejectionModal.propTypes = {\n open: PropTypes.bool.isRequired,\n handleCloseGiactRejectionModal: PropTypes.func.isRequired,\n text: PropTypes.shape({\n GiactRejectionModal: PropTypes.shape({\n btn_close: PropTypes.string,\n head_title: PropTypes.string,\n text_not_authenticated: PropTypes.string,\n text_rejection_language_1: PropTypes.string,\n text_rejection_language_2: PropTypes.string,\n text_rejection_language_3: PropTypes.string,\n text_rejection_language_4: PropTypes.func,\n text_giact_address_1: PropTypes.string,\n text_giact_address_2: PropTypes.string,\n text_giact_address_3: PropTypes.string,\n text_giact_address_4: PropTypes.string,\n text_rejection_language_5: PropTypes.string,\n text_rejection_language_6: PropTypes.string,\n text_rejection_language_7: PropTypes.string,\n text_rejection_language_8: PropTypes.string,\n })\n })\n};\n\nexport function GiactRejectionModal({ open, handleCloseGiactRejectionModal, text: { GiactRejectionModal }, }) {\n \n return (\n handleCloseGiactRejectionModal()}\n modal={false}\n maxWidth='md'\n fullWidth\n >\n
    \n \n {GiactRejectionModal.text_not_authenticated}\n \n
      \n
    • {GiactRejectionModal.text_rejection_language_1}
    • \n
    • {GiactRejectionModal.text_rejection_language_2}
    • \n
    \n

    {GiactRejectionModal.text_rejection_language_3}

    \n {GiactRejectionModal.text_rejection_language_4()}\n
      \n
    • {GiactRejectionModal.text_giact_address_1}
    • \n
    • {GiactRejectionModal.text_giact_address_2}
    • \n
    • {GiactRejectionModal.text_giact_address_3}
    • \n
    • {GiactRejectionModal.text_giact_address_4}
    • \n
    \n

    {GiactRejectionModal.text_rejection_language_5}https://www.giact.com/consumer-inquiries/

    \n

    {GiactRejectionModal.text_rejection_language_6}

    \n

    {GiactRejectionModal.text_rejection_language_7}info@my529.org{GiactRejectionModal.text_rejection_language_8}

    \n
    \n \n );\n}\n\nexport default LanguageHOC(GiactRejectionModal);","/*\n*\n* AddBankModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n TextField,\n MenuItem,\n FormControl,\n FormControlLabel,\n FormHelperText,\n RadioGroup,\n Radio,\n} from '@mui/material';\nimport {\n Modal,\n notificationShow,\n} from '@frontend/common';\nimport {\n checkRoutingNumber,\n createAgentBankAccount,\n createBeneficiaryBankAccount,\n} from 'components/Features/protected/Payments/actions';\n\nimport GiactRejectionModal from '../GiactRejectionModal';\nimport checkImage from './image/BankCheck.svg';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n allowedBankHolders: state.payments.allowedBankHolders,\n routingNumberBank: state.payments.routingNumberBank,\n GiactResultTypes: state.static.environmentVars.GiactResultTypes,\n ACHBankWithdrawalLanguage: state.static.environmentVars.ACHBankWithdrawalLanguage,\n});\n\nexport class AddBankModal extends React.Component {\n static propTypes = {\n agentOnly: PropTypes.bool, //used for transactions only\n routingNumberBank: PropTypes.string.isRequired,\n allowedBankHolders: PropTypes.array.isRequired,\n GiactResultTypes: PropTypes.object.isRequired,\n ACHBankWithdrawalLanguage: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n checkRoutingNumber: PropTypes.func.isRequired,\n createAgentBankAccount: PropTypes.func.isRequired,\n createBeneficiaryBankAccount: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n close: PropTypes.func.isRequired,\n isMobileView: PropTypes.bool.isRequired,\n handleGetBankAccounts: PropTypes.func.isRequired,\n handleShowValidationStart: PropTypes.func,\n text: PropTypes.shape({\n AddBankModal: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_agree: PropTypes.string,\n err_invalid_routing: PropTypes.string,\n err_copy: PropTypes.string,\n err_required: PropTypes.string,\n err_routing_length: PropTypes.string,\n err_accounts_match: PropTypes.string,\n err_allowable_chars: PropTypes.string,\n head_modal_title: PropTypes.string,\n lbl_account_holder: PropTypes.string,\n lbl_account_number: PropTypes.string,\n lbl_nickname: PropTypes.string,\n lbl_confirm_account_number: PropTypes.string,\n lbl_checking: PropTypes.string,\n lbl_routing: PropTypes.string,\n lbl_savings: PropTypes.string,\n msg_account_added: PropTypes.string,\n text_required_language_1: PropTypes.string,\n text_required_language_2: PropTypes.string,\n text_required_language_3: PropTypes.string,\n text_required_language_4: PropTypes.string,\n text_required_language_5: PropTypes.string,\n text_permission_bank_account_holder: PropTypes.string,\n }),\n Payments: PropTypes.shape({\n text_bank_hold_language: PropTypes.func,\n }),\n })\n }\n\n state = {\n newBankAccount: {\n accountHolder: '',\n accountType: '',\n routingNumber: '',\n accountNumber1: '',\n accountNumber2: '',\n nickname: '',\n },\n routingNumberBank: '',\n formErrors: {},\n apiErrors: [],\n isSaving: false,\n showGiactRejectionModal: false,\n permissionBankAccountHolderText: ''\n }\n\n inputFormat = (value) => {\n return value.replace(/[^0-9.]/g, '').replace(/(\\.*)\\./g, '');\n }\n\n onInputChange = e => {\n const { name, value } = e.target;\n\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n [name]: ''\n },\n newBankAccount: {\n ...this.state.newBankAccount,\n [name]: value,\n },\n apiErrors: []\n });\n\n // checking routing number is valid\n if (name === 'routingNumber') {\n if (value.length !== 9 && this.props.routingNumberBank) {\n this.setState({ routingNumberBank: '' });\n }\n if (value.length === 9) {\n this.props.checkRoutingNumber(value)\n .then(() => this.setState({ routingNumberBank: this.props.routingNumberBank, apiErrors: [] }))\n .catch((errors) => this.setState({\n routingNumberBank: '',\n apiErrors: errors.payload.data,\n formErrors: { ...this.state.formErrors, routingNumber: errors.payload.data[0].Message }\n }));\n }\n }\n\n // getting language after acct holder selection\n if (name === 'accountHolder') {\n const isBeneficiary = this.props.allowedBankHolders.find(bene => bene.id === value).isBeneficiary;\n this.setState({ permissionBankAccountHolderText: isBeneficiary ? this.props.text.AddBankModal.text_permission_bank_account_holder : '' });\n }\n }\n\n copyPrevent = (e) => {\n const confirmField = e.target;\n\n confirmField.onpaste = e => {\n const { formErrors } = this.state;\n e.preventDefault();\n formErrors.accountNumber2 = this.props.text.AddBankModal.err_copy;\n this.setState({ formErrors });\n };\n }\n\n formValidate = () => {\n const { err_required, err_routing_length, err_accounts_match, err_allowable_chars } = this.props.text.AddBankModal;\n const { newBankAccount: { accountHolder, accountType, routingNumber, accountNumber1, accountNumber2, nickname }, apiErrors } = this.state;\n const formErrors = {};\n\n // Account holder validation\n if (!accountHolder) {\n formErrors.accountHolder = err_required;\n }\n // Account type validation\n if (!accountType) {\n formErrors.accountType = err_required;\n }\n // Routing number validation\n if (!routingNumber) {\n formErrors.routingNumber = err_required;\n }\n if (routingNumber.length !== 9 && routingNumber.length > 0) {\n formErrors.routingNumber = err_routing_length;\n }\n // Account number validation\n if (!accountNumber1) {\n formErrors.accountNumber1 = err_required;\n }\n if (!accountNumber2) {\n formErrors.accountNumber2 = err_required;\n }\n if (accountNumber1 !== accountNumber2) {\n formErrors.accountNumber2 = err_accounts_match;\n }\n\n const regex = /^[A-Za-z0-9.\\s.,':#/-]+$/; // case insensitive, space, period, comma, single quote and hyphen.\n if (nickname && !regex.test(nickname)) {\n formErrors.nickname = err_allowable_chars;\n }\n\n // API errors\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'BankAccountNumber') {\n formErrors.accountNumber1 = error.Message;\n }\n\n if (error.Field === 'routingNumber') {\n formErrors.routingNumber = error.Message;\n }\n });\n }\n\n this.setState({ formErrors });\n\n return Object.keys(formErrors).length === 0; // returns True or False whether form is valid\n }\n\n onFormSubmit = e => {\n e.preventDefault();\n\n if (this.formValidate()) {\n this.setState({ isSaving: true, apiErrors: [] });\n const { allowedBankHolders, GiactResultTypes, text: { AddBankModal } } = this.props;\n const { newBankAccount } = this.state;\n\n const apiNewBankAccountInfo = {\n RoutingNumber: newBankAccount.routingNumber,\n BankAccountNumber: newBankAccount.accountNumber1,\n BankAccountType: newBankAccount.accountType,\n Nickname: newBankAccount.nickname,\n };\n\n // Check if accountHolder (id) matches the first id of the allowedBankHolders to see if it is the Agent or not.\n const isAgent = newBankAccount.accountHolder === allowedBankHolders[0].id;\n const createNewBankAccount = isAgent ?\n this.props.createAgentBankAccount :\n this.props.createBeneficiaryBankAccount;\n\n createNewBankAccount(apiNewBankAccountInfo, newBankAccount.accountHolder)\n .then(response => {\n const newBankAccount = response.payload.data;\n const GiactResult = newBankAccount.GiactResult;\n this.props.handleGetBankAccounts();\n this.closeModal();\n if (GiactResult === GiactResultTypes.Fail) {\n this.setState({ showGiactRejectionModal: true });\n return;\n }\n else if (GiactResult === GiactResultTypes.NA && this.props.handleShowValidationStart) { // check for ValidationStart function, since this is only handled on Payments page.\n this.props.handleShowValidationStart(newBankAccount);\n }\n this.props.notificationShow(AddBankModal.msg_account_added, 'success');\n })\n .catch(errors => {\n this.setState({\n apiErrors: errors.payload.data,\n isSaving: false\n }, () => this.formValidate());\n });\n }\n }\n\n closeModal = () => {\n const accountHolder = this.props.agentOnly ? this.props.allowedBankHolders[0].id : '';\n this.props.close();\n this.setState({\n newBankAccount: {\n accountHolder,\n accountType: '',\n routingNumber: '',\n accountNumber1: '',\n accountNumber2: '',\n },\n routingNumberBank: '',\n formErrors: {},\n isSaving: false,\n });\n }\n\n renderRequiredLanguage = () => {\n const { ACHBankWithdrawalLanguage, text: { AddBankModal, Payments, }, } = this.props;\n\n return (\n
    \n
      \n
    • {AddBankModal.text_required_language_1}
    • \n
    • {AddBankModal.text_required_language_2}
    • \n
    • {AddBankModal.text_required_language_3}
    • \n
    • {AddBankModal.text_required_language_4}
    • \n
    • {Payments.text_bank_hold_language(ACHBankWithdrawalLanguage)}
    • \n
    \n

    {AddBankModal.text_required_language_5}

    \n
    \n );\n }\n\n componentDidMount() {\n if (this.props.agentOnly) {\n this.setState({ newBankAccount: { ...this.state.newBankAccount, accountHolder: this.props.allowedBankHolders[0].id } });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.open !== this.props.open && this.props.open) {\n this.setState({ permissionBankAccountHolderText: '' });\n }\n }\n\n render() {\n const { newBankAccount, formErrors, isSaving, permissionBankAccountHolderText } = this.state;\n const { agentOnly, open, isMobileView, allowedBankHolders, text: { AddBankModal } } = this.props;\n\n return (\n \n \n
    \n
    \n
    \n \n {allowedBankHolders.map(accountHolder => (\n \n {accountHolder.name}\n \n ))}\n \n {Boolean(permissionBankAccountHolderText) &&\n
    \n {permissionBankAccountHolderText}\n
    \n }\n\n \n \n }\n label={AddBankModal.lbl_checking}\n labelPlacement='end'\n disabled={isSaving}\n />\n }\n label={AddBankModal.lbl_savings}\n labelPlacement='end'\n disabled={isSaving}\n />\n \n {formErrors.accountType && {formErrors.accountType}}\n \n e.target.value = this.inputFormat(e.target.value)}\n onChange={this.onInputChange}\n value={newBankAccount.routingNumber}\n inputProps={{ maxLength: '9' }}\n />\n e.target.value = this.inputFormat(e.target.value)}\n onChange={this.onInputChange}\n value={newBankAccount.accountNumber1}\n inputProps={{ maxLength: '17' }}\n />\n e.target.value = this.inputFormat(e.target.value)}\n onChange={this.onInputChange}\n onFocus={(e) => this.copyPrevent(e)}\n value={newBankAccount.accountNumber2}\n inputProps={{ maxLength: '17' }}\n />\n \n
    \n\n check\n
    \n\n {this.renderRequiredLanguage()}\n\n
    \n \n\n this.setState({ showGiactRejectionModal: false })}\n />\n
    \n );\n }\n}\n\nexport default connect(select, {\n checkRoutingNumber,\n createAgentBankAccount,\n createBeneficiaryBankAccount,\n notificationShow,\n})(LanguageHOC(AddBankModal));","/*\n*\n* Contributions Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n Tabs,\n Tab,\n} from '@mui/material';\nimport {\n Breadcrumbs,\n LoadingOverlay,\n notificationShow,\n ConfirmModal,\n Card,\n sizify,\n} from '@frontend/common';\nimport {\n MONTHLY,\n ONE_TIME,\n TWICE_MONTHLY,\n YEARLY\n} from './constants';\nimport {\n getContributionDetails,\n getScheduledTransaction,\n createContribution,\n editContribution,\n} from 'components/Features/protected/Accounts/Transactions/actions';\nimport { getAllowedBankHolders, getAgentBankAccounts, } from 'components/Features/protected/Payments/actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport OneTime from './OneTime';\nimport Recurring from './Recurring';\nimport Special from './Special';\nimport AddBankModal from 'components/Features/protected/Payments/AddBankModal';\n\nimport { tabletWidth, mobileWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n agentBankAccounts: state.payments.agentBankAccounts,\n contributionDetails: state.transactions.contributionDetails,\n contributionEnvironmentVars: state.static.environmentVars,\n userDetails: state.session.userDetails,\n});\n\nexport class Contributions extends React.Component {\n\n static propTypes = {\n loading: PropTypes.bool.isRequired,\n accountList: PropTypes.array.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n contributionEnvironmentVars: PropTypes.shape({\n MaximumBeneficiaryDeposit: PropTypes.number.isRequired,\n CurrentTradeDate: PropTypes.string.isRequired,\n TradeCutOffTime: PropTypes.string.isRequired,\n }),\n getContributionDetails: PropTypes.func.isRequired,\n contributionDetails: PropTypes.shape({\n contribution: PropTypes.object.isRequired,\n }),\n createContribution: PropTypes.func.isRequired,\n editContribution: PropTypes.func.isRequired,\n getAgentBankAccounts: PropTypes.func.isRequired,\n getAllowedBankHolders: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getNotifications: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n nav_title: PropTypes.string,\n }),\n Contributions: PropTypes.shape({\n head_title_account_owner: PropTypes.string,\n lbl_one_time: PropTypes.string,\n lbl_recurring: PropTypes.string,\n lbl_special_occasion: PropTypes.string,\n msg_contribution_scheduled: PropTypes.string,\n msg_contribution_updated: PropTypes.string,\n nav_title_edit: PropTypes.string,\n nav_title_new: PropTypes.string,\n title_duplicate_contribution: PropTypes.string,\n })\n }).isRequired,\n }\n\n state = {\n accountId: parseInt(this.props.match.params.accountId),\n isEditing: window.location.href.search('edit') > -1,\n tabIndex: 0,\n isTabletView: this.props.size.windowWidth < parseInt(tabletWidth),\n isMobileView: this.props.size.windowWidth < parseInt(mobileWidth),\n initialLoading: false,\n isLoading: false,\n showAddBankModal: false,\n bankAccountsLoading: false,\n duplicateContributionMessage: '',\n duplicateContributionModalOpen: false,\n ignoreDuplicates: false,\n createdDate: '',\n }\n\n\n contributionCreate = (contribution) => {\n this.setState({ isLoading: true });\n\n const formattedContribution = {\n AccountAmounts: contribution.selectedAccounts.filter(account => account.accountId).map(account => ({\n AccountId: account.accountId,\n Amount: account.contributionAmount,\n EndDate: account.endDate ? dayjs(account.endDate).format('MM/DD/YYYY') : null,\n })),\n BankAccountId: contribution.bankAccount.BankAccountId,\n IgnoreDuplicates: this.state.ignoreDuplicates,\n Occasion: contribution.occasion || null,\n ScheduleType: contribution.type.replace(/ /g, ''),\n TradeDate: contribution.day1 ? dayjs(contribution.day1).format('MM/DD/YYYY') : null,\n TradeDate2: contribution.day2 ? dayjs(contribution.day2).format('MM/DD/YYYY') : null,\n };\n\n return this.props.createContribution(formattedContribution)\n .then((response, error) => {\n this.setState({ isLoading: false });\n\n // handle duplicate contribution message here\n const messages = response.payload.data;\n const dupeMsgs = Array.isArray(messages) ? messages.filter(message => message.MessageType === 3) : [];\n\n if (dupeMsgs.length > 0) {\n const duplicateContributionMessage = dupeMsgs.map(message => message.Message).join('<\\br>');\n this.setState({\n duplicateContributionMessage,\n duplicateContributionModalOpen: true,\n });\n throw error; // stops TransactionStepper from progressing but brings up DuplicateConfirmModal\n }\n else {\n const createdDate = response.payload.data; // gets createdDate from server for timestamp display on print screen\n this.setState({ duplicateContribution: {}, createdDate });\n this.props.notificationShow(this.props.text.Contributions.msg_contribution_scheduled, 'success');\n this.props.getNotifications(); // refreshes app notifications\n }\n\n })\n .catch(error => {\n this.setState({ isLoading: false });\n throw error; // stops TransactionStepper from progressing\n });\n }\n\n contributionEdit = (contribution) => {\n this.setState({ isLoading: true });\n\n const formattedContribution = {\n Amount: contribution.selectedAccounts[0].contributionAmount,\n BankAccountId: contribution.bankAccount.BankAccountId,\n EndDate: contribution.selectedAccounts[0].endDate ? dayjs(contribution.selectedAccounts[0].endDate).format('MM/DD/YYYY') : null,\n Occasion: contribution.occasion || null,\n Frequency: contribution.type.replace(/ /g, ''),\n TradeDate: contribution.day1 ? dayjs(contribution.day1).format('MM/DD/YYYY') : null,\n TradeDate2: contribution.day2 ? dayjs(contribution.day2).format('MM/DD/YYYY') : null,\n };\n return this.props.editContribution(this.props.match.params.transactionId, formattedContribution)\n .then(response => {\n const createdDate = response.payload.data; // gets createdDate from server for timestamp display on print screen\n this.setState({ isLoading: false, createdDate });\n this.props.notificationShow(this.props.text.Contributions.msg_contribution_updated, 'success');\n this.props.getNotifications(); // refreshes app notifications\n })\n .catch(error => {\n this.setState({ isLoading: false });\n throw error; // stops TransactionStepper from progressing\n });\n }\n\n defaultTabGet = () => {\n if (this.state.isEditing) {\n switch (this.props.contributionDetails.contribution.type) {\n case ONE_TIME: this.setState({ tabIndex: 0 });\n break;\n case MONTHLY:\n case TWICE_MONTHLY: this.setState({ tabIndex: 1 });\n break;\n case YEARLY: this.setState({ tabIndex: 2 });\n break;\n default: this.setState({ tabIndex: 0 });\n }\n }\n else {\n this.setState({ tabIndex: 0 });\n }\n }\n\n onTabChange = (e, val) => {\n this.setState({ tabIndex: val });\n }\n\n updateContributionDetails = () => {\n this.props.getContributionDetails(this.state.accountId, this.props.accountList, this.props.contributionEnvironmentVars.MaximumBeneficiaryDeposit);\n }\n\n toggleShowAddBank = () => {\n this.setState({ showAddBankModal: !this.state.showAddBankModal });\n }\n\n handleGetBankAccounts = () => {\n this.setState({ bankAccountsLoading: true });\n this.props.getAgentBankAccounts()\n .then(() => {\n this.setState({ bankAccountsLoading: false });\n })\n .catch(() => {\n this.setState({ bankAccountsLoading: false });\n });\n }\n\n renderDuplicateConfirmModal = (onConfirm) => {\n // this modal gets passed into TransactionStepper, brings in onConfirm as arguement function so it can run handleSubmit in Stepper component.\n const { duplicateContributionModalOpen, duplicateContributionMessage, isLoading } = this.state;\n\n return (\n this.setState({ duplicateContributionModalOpen: false })}\n onConfirm={() => this.setState({ duplicateContributionModalOpen: false, ignoreDuplicates: true }, () => onConfirm())}\n isLoading={isLoading}\n />\n );\n }\n\n componentDidMount() {\n this.setState({ initialLoading: true });\n this.props.getAllowedBankHolders(this.props.userDetails, this.props.accountList);\n this.props.getAgentBankAccounts()\n .then(() => {\n this.props.getContributionDetails(this.state.accountId, this.props.accountList, this.props.agentBankAccounts, this.state.isEditing, this.props.contributionEnvironmentVars.MaximumBeneficiaryDeposit);\n this.setState({ initialLoading: false }, () => this.defaultTabGet());\n })\n .catch(() => {\n this.setState({ initialLoading: false });\n });\n }\n\n componentDidUpdate({ size }) {\n const { size: { windowWidth } } = this.props;\n if (size.windowWidth !== windowWidth) {\n this.setState({\n isTabletView: windowWidth < parseInt(tabletWidth),\n isMobileView: windowWidth < parseInt(mobileWidth),\n });\n }\n }\n\n render() {\n const {\n userDetails,\n text: { Accounts, AccountDetails, Contributions, },\n contributionDetails: { contribution, }\n } = this.props;\n const {\n accountId,\n isEditing,\n tabIndex,\n isMobileView,\n initialLoading,\n isLoading,\n bankAccountsLoading,\n duplicateContributionModalOpen,\n createdDate,\n } = this.state;\n const mobileTabStyle = isMobileView ? { fontSize: '12px', padding: '6px' } : {};\n\n return (\n
    \n \n
    \n
    \n \n
    \n\n\n
    \n \n {userDetails.name}\n \n
    \n\n
    \n this.onTabChange(e, val)}\n value={tabIndex}\n centered\n >\n \n \n \n \n\n {tabIndex === 0 && !this.props.loading && !initialLoading &&\n \n }\n\n {tabIndex === 1 &&\n \n }\n\n {tabIndex === 2 &&\n \n }\n
    \n\n
    \n\n this.toggleShowAddBank()}\n isMobileView={isMobileView}\n handleGetBankAccounts={this.handleGetBankAccounts}\n />\n\n \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n getContributionDetails,\n getScheduledTransaction,\n getAgentBankAccounts,\n getAllowedBankHolders,\n createContribution,\n editContribution,\n notificationShow,\n getNotifications,\n})(sizify(LanguageHOC(Contributions)));\n","/*\r\n*\r\n* AccountsInGroup Component\r\n*\r\n*/\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Modal,\r\n\r\n SmartTable,\r\n TableContainer,\r\n TableHeader,\r\n TablePagination,\r\n TableRows,\r\n} from '@frontend/common';\r\nimport LanguageHOC from 'utils/translations/LanguageHOC';\r\n\r\nAccountsInGroup.propTypes = {\r\n groupAccounts: PropTypes.array.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n onProportionalSelect: PropTypes.func.isRequired,\r\n proportionalDisabled: PropTypes.bool.isRequired,\r\n text: PropTypes.shape({\r\n Withdrawals: PropTypes.shape({\r\n withdraw_funds_modal: PropTypes.shape({\r\n btn_all_accts_label_long: PropTypes.string,\r\n btn_all_accts_label_short: PropTypes.string,\r\n btn_one_acct_label: PropTypes.string,\r\n listItem1: PropTypes.string,\r\n listItem2: PropTypes.string,\r\n modal_title: PropTypes.string,\r\n p1: PropTypes.string,\r\n p_all_accts_disabled: PropTypes.string,\r\n table_column1_title: PropTypes.string,\r\n table_column2_title: PropTypes.string,\r\n table_column3_title: PropTypes.string,\r\n title: PropTypes.string,\r\n })\r\n })\r\n }).isRequired\r\n};\r\n\r\nexport function AccountsInGroup({\r\n groupAccounts,\r\n loading,\r\n onClose,\r\n onProportionalSelect,\r\n open,\r\n proportionalDisabled,\r\n text\r\n}) {\r\n const tableData = groupAccounts.map(account => ({\r\n accountId: account.AccountId,\r\n accountNumber: account.AccountNumber,\r\n availableBalanceNumber: account.availableForWithdrawalNum,\r\n optionDescription: account.OptionName,\r\n }));\r\n\r\n const { Withdrawals: { withdraw_funds_modal } } = text;\r\n\r\n return (\r\n \r\n

    {withdraw_funds_modal.title}

    \r\n

    {withdraw_funds_modal.p1}

    \r\n
      \r\n
    1. {withdraw_funds_modal.listItem1}
    2. \r\n
    3. {withdraw_funds_modal.listItem2}
    4. \r\n
    \r\n {proportionalDisabled &&

    {withdraw_funds_modal.p_all_accts_disabled}

    }\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default LanguageHOC(AccountsInGroup);","export const cleanDigits = (str) => str.replace(/[^\\d]+/g, ''); // remove all non-digit characters\n\nexport const sanitizeHTML = (str) => (str ? str.replace(/[&\"'<>\\\\`:]/g, '') : str); // remove all dangerous tags\n\nexport const alphaNumericOnly = (str) => str.replace(/[^0-9a-zA-Z]/g, '');","/*\n*\n* Step0WithdrawalType Component\n* Withdrawal Type\n*\n*/\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n RECURRING,\n NONQUALIFIED,\n} from '../../../constants';\n\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n FormControl,\n FormHelperText,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nexport class Step0WithdrawalType extends Component {\n static propTypes = {\n isEditing: PropTypes.bool.isRequired,\n withdrawal: PropTypes.shape({\n frequency: PropTypes.string,\n withdrawalType: PropTypes.string.isRequired,\n }),\n withdrawalVariables: PropTypes.object.isRequired,\n radioButtonLabelGenerate: PropTypes.func.isRequired,\n withdrawalTypeHandle: PropTypes.func.isRequired,\n errors: PropTypes.shape({\n withdrawalTypeError: PropTypes.string.isRequired,\n }).isRequired,\n };\n\n componentDidMount() {\n const { withdrawalTypeHandle, withdrawal: { withdrawalType } } = this.props;\n withdrawalTypeHandle({ target: { value: withdrawalType } });\n }\n\n render() {\n const {\n isEditing,\n withdrawal: {\n frequency,\n withdrawalType,\n },\n withdrawalVariables,\n radioButtonLabelGenerate,\n withdrawalTypeHandle,\n errors: { withdrawalTypeError, },\n } = this.props;\n\n const isRecurring = frequency === RECURRING;\n const availableWithdrawalTypes = isRecurring ? withdrawalVariables.withdrawalTypes.filter(type => type.name !== NONQUALIFIED) : withdrawalVariables.withdrawalTypes;\n\n return (\n
    \n \n \n {availableWithdrawalTypes.map(type => (\n }\n disabled={isEditing}\n />\n ))}\n \n {withdrawalTypeError && {withdrawalTypeError}}\n \n
    \n );\n }\n}\n\nexport default LanguageHOC(Step0WithdrawalType);","/*\n*\n* Step1Recipient Component\n* Recipient\n*\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n ACCOUNT_OWNER,\n BENEFICIARY,\n K12_ED,\n HIGHER_ED,\n SCHOOL,\n RECURRING,\n} from '../../../constants';\n\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n FormControl,\n FormHelperText,\n} from '@mui/material';\n\nStep1Recipient.propTypes = {\n isEditing: PropTypes.bool.isRequired,\n recipient: PropTypes.string.isRequired,\n frequency: PropTypes.string.isRequired,\n withdrawalType: PropTypes.string.isRequired,\n recipientTypes: PropTypes.array.isRequired,\n radioButtonLabelGenerate: PropTypes.func.isRequired,\n recipientHandle: PropTypes.func.isRequired,\n recipientError: PropTypes.string.isRequired,\n};\n\nexport function Step1Recipient(props) {\n const {\n isEditing,\n recipient,\n frequency,\n withdrawalType,\n recipientTypes,\n radioButtonLabelGenerate,\n recipientHandle,\n recipientError,\n } = props;\n\n const accountOwner = recipientTypes.find(type => type.id === ACCOUNT_OWNER);\n const beneficiary = recipientTypes.find(type => type.id === BENEFICIARY);\n const school = recipientTypes.find(type => type.id === SCHOOL);\n const isRecurring = frequency === RECURRING;\n\n if (withdrawalType === K12_ED) {\n return radioButtonLabelGenerate(accountOwner);\n }\n else if (withdrawalType === HIGHER_ED) {\n return (\n \n \n }\n disabled={isEditing}\n />\n }\n disabled={isEditing}\n />\n {!isRecurring &&\n }\n disabled={isEditing}\n />\n }\n \n {recipientError &&\n {recipientError}\n }\n \n );\n }\n else {\n return (\n \n \n }\n disabled={isEditing}\n />\n }\n disabled={isEditing}\n />\n \n {recipientError && {recipientError}}\n \n );\n }\n}\n\nexport default Step1Recipient;","/*\n*\n* Step2AmountDate Component\n* Amount, Sell Date\n*\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport parse from 'html-react-parser';\n\nimport {\n FULL_BALANCE,\n PARTIAL_BALANCE,\n RECURRING,\n} from '../../../constants';\n\nimport {\n CurrencyInput,\n DatePicker,\n InfoIcon,\n currencyFormatter,\n} from '@frontend/common';\n\nimport {\n Checkbox,\n Radio,\n RadioGroup,\n FormControlLabel,\n Button,\n FormControl,\n Collapse,\n FormHelperText,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nStep2AmountDate.propTypes = {\n isEditing: PropTypes.bool.isRequired,\n partialWithdrawalMessageOpen: PropTypes.bool.isRequired,\n partialBalanceWithdrawalOnly: PropTypes.bool.isRequired,\n fullBalanceWithdrawalOnly: PropTypes.bool.isRequired,\n withdrawal: PropTypes.shape({\n amount: PropTypes.number,\n amountType: PropTypes.string.isRequired,\n leaveAccountOpen: PropTypes.bool.isRequired,\n proportionalAmounts: PropTypes.array.isRequired,\n sellDate: PropTypes.object,\n }),\n withdrawalScreenshot: PropTypes.shape({\n sellDate: PropTypes.object,\n }),\n isProportional: PropTypes.bool.isRequired,\n preTransactionDetails: PropTypes.object.isRequired,\n withdrawalVariables: PropTypes.object.isRequired,\n continueButtonHandle: PropTypes.func.isRequired,\n amountHandle: PropTypes.func.isRequired,\n dateHandle: PropTypes.func.isRequired,\n radioButtonLabelGenerate: PropTypes.func.isRequired,\n leaveAccountOpenHandle: PropTypes.func.isRequired,\n errors: PropTypes.shape({\n amountError: PropTypes.string.isRequired,\n amountTypeError: PropTypes.string.isRequired,\n withdrawalTypeError: PropTypes.string.isRequired,\n sellDateError: PropTypes.string.isRequired,\n startDateError: PropTypes.string.isRequired,\n endDateError: PropTypes.string.isRequired,\n }).isRequired,\n text: PropTypes.shape({\n Withdrawals: PropTypes.shape({\n step0_amount_date: PropTypes.object.isRequired,\n text_full_balance_info: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n disableStartDates: PropTypes.func.isRequired,\n disableSellDates: PropTypes.func.isRequired,\n diableDatesMoreThan90Days: PropTypes.func.isRequired,\n nextRunStartDates: PropTypes.array.isRequired,\n};\n\nexport function Step2AmountDate(props) {\n const {\n isEditing,\n partialWithdrawalMessageOpen,\n partialBalanceWithdrawalOnly,\n fullBalanceWithdrawalOnly,\n withdrawal: {\n amount,\n frequency,\n amountType,\n leaveAccountOpen,\n proportionalAmounts,\n sellDate,\n startDate,\n endDate,\n nextRunDate,\n },\n withdrawalScreenshot,\n isProportional,\n preTransactionDetails,\n withdrawalVariables,\n continueButtonHandle,\n amountHandle,\n amountTypeHandle,\n dateHandle,\n radioButtonLabelGenerate,\n leaveAccountOpenHandle,\n errors: {\n amountError,\n amountTypeError,\n sellDateError,\n startDateError,\n endDateError,\n },\n text: { Withdrawals: { step0_amount_date, text_full_balance_info } },\n disableStartDates,\n disableSellDates,\n nextRunStartDates,\n } = props;\n\n const getNextStartDate = (startDate, startDates, nextStartDates) => {\n const startDateNotChanged = dayjs(startDate).isSame(withdrawalScreenshot.startDate);\n let nextStartDate;\n if (isEditing && startDateNotChanged) {\n nextStartDate = nextRunDate;\n }\n else {\n // assuming starDates was sent to next run date api as an array and returned nextStartDates in the same order\n const startDateMoment = dayjs(startDate);\n const dateIndex = startDates.findIndex(date => dayjs(date).isSame(startDateMoment, 'date'));\n nextStartDate = nextStartDates[dateIndex];\n }\n\n return nextStartDate;\n };\n\n\n const isRecurring = frequency === RECURRING;\n // condition for partial withdrawals message\n const availableBalanceIsMoreThanMax = preTransactionDetails.totalAvailableForWithdrawalNum >= withdrawalVariables.maxWithdrawal;\n const areThereUncollectedFunds = preTransactionDetails.totalMarketValueNum > preTransactionDetails.totalAvailableBalanceNumber;\n\n const nextRunDateComponent = () => (\n
    \n Next run date: {dayjs(getNextStartDate(startDate, withdrawalVariables.startDates, nextRunStartDates)).format('L')}\n
    \n );\n\n const partialBalanceMessage = (\n
    \n
    \n {step0_amount_date.partial_balance.title}\n {availableBalanceIsMoreThanMax ?\n

    {step0_amount_date.partial_balance.more_than_max_p_long}

    \n :\n

    {step0_amount_date.partial_balance.more_than_max_p_short}

    \n }\n
      \n
    • {step0_amount_date.partial_balance.listItem1}
    • \n {areThereUncollectedFunds &&
    • {step0_amount_date.partial_balance.uncollected_funds_text}
    • }\n {availableBalanceIsMoreThanMax &&
    • {parse(step0_amount_date.partial_balance.html_listItem2_more_than_max(currencyFormatter(withdrawalVariables.maxWithdrawal)))}
    • }\n
    \n \n {step0_amount_date.continue_btn_label}\n \n
    \n
    \n );\n\n const partialBalanceOnlyComponent = (\n
    \n
    \n \n
    \n\n 0} key='partialProportionalAmount'>\n {proportionalAmounts.map(amount => (\n
    \n {step0_amount_date.proportional_amounts(amount.accountNumber, currencyFormatter(amount.amount))}\n
    \n ))}\n
    \n\n {isRecurring ?\n
    \n
    \n dateHandle(date, 'startDate')}\n shouldDisableDate={disableStartDates}\n value={startDate}\n />\n {step0_amount_date.sellDateText(isRecurring).map(text =>

    {text}

    )}
    }\n />\n
    \n {nextRunDateComponent()}\n
    \n dateHandle(date, 'endDate')}\n value={endDate}\n />\n
    \n
    \n :\n
    \n dateHandle(date, 'sellDate')}\n shouldDisableDate={disableSellDates}\n value={sellDate}\n />\n {step0_amount_date.sellDateText(isRecurring).map(text =>

    {text}

    )}
    }\n />\n
    \n }\n
    \n );\n\n const fullBalanceText = {\n name: 'Full Balance',\n messages: [text_full_balance_info]\n };\n\n const partialAndFullBalanceComponent = (\n
    \n \n \n }\n disabled={isRecurring || isEditing}\n />\n\n }\n disabled={fullBalanceWithdrawalOnly || isEditing}\n />\n \n {amountTypeError && {amountTypeError}}\n \n\n
    \n \n
    \n \n }\n />\n
    \n
    \n \n {amountType === PARTIAL_BALANCE && // prevents console errors from when it tries to mount but isn't rendered\n
    \n \n
    \n }\n
    \n 0}>\n {proportionalAmounts.map(amount => (\n
    \n Account {amount.accountNumber}: {currencyFormatter(amount.amount)}\n
    \n ))}\n
    \n
    \n\n {isRecurring ?\n
    \n
    \n dateHandle(date, 'startDate')}\n shouldDisableDate={disableStartDates}\n value={startDate}\n />\n {step0_amount_date.sellDateText(isRecurring).map(text =>

    {text}

    )}
    }\n />\n
    \n {nextRunDateComponent()}\n
    \n dateHandle(date, 'endDate')}\n value={endDate}\n />\n
    \n
    \n :\n
    \n dateHandle(date, 'sellDate')}\n shouldDisableDate={disableSellDates}\n value={sellDate}\n />\n {step0_amount_date.sellDateText(isRecurring).map(text =>

    {text}

    )}
    }\n />\n
    \n }\n
    \n );\n\n let component;\n if (Object.keys(preTransactionDetails).length > 0 && partialBalanceWithdrawalOnly) {\n component = partialWithdrawalMessageOpen ? partialBalanceMessage : partialBalanceOnlyComponent;\n }\n else {\n component = partialAndFullBalanceComponent;\n }\n\n return component;\n}\n\nexport default LanguageHOC(Step2AmountDate);","/*\n*\n* UpdateAgentAddressModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport {\n getPreTransactionDetails,\n} from 'components/Features/protected/Accounts/Transactions/actions';\n\nimport AddressCard from 'components/Features/protected/MyInfo/AddressCard';\n\nimport {\n LoadingOverlay,\n Modal\n} from '@frontend/common';\n\nimport { agentGet } from 'components/Features/protected/MyInfo/actions';\n\nconst select = (state) => ({\n agent: state.myInfo.agent,\n});\n\nexport class UpdateAgentAddressModal extends React.Component {\n static propTypes = {\n show: PropTypes.bool.isRequired,\n agentGet: PropTypes.func.isRequired,\n agent: PropTypes.shape({\n AgentId: PropTypes.number.isRequired,\n Addresses: PropTypes.shape({\n Physical: PropTypes.object,\n Mailing: PropTypes.object,\n Other: PropTypes.object,\n }),\n UtahResident: PropTypes.bool.isRequired,\n }).isRequired,\n handleCancel: PropTypes.func.isRequired,\n match: PropTypes.object.isRequired,\n getPreTransactionDetails: PropTypes.func.isRequired,\n modalTitle: PropTypes.string.isRequired,\n };\n\n state = {\n loading: false,\n };\n\n callbackOnAddressChange = () => {\n this.props.getPreTransactionDetails(this.props.match.params.accountId, this.props.match.params.groupId);\n }\n\n componentDidMount() {\n if (!this.props.agent.AgentId) {\n this.setState({ loading: true });\n this.props.agentGet()\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const { loading } = this.state;\n\n const {\n show,\n agent: { Addresses },\n handleCancel,\n modalTitle,\n } = this.props;\n\n return (\n
    \n \n \n null}\n isLoading={false}\n key='Agent_Check_Address'\n residentCheck={() => null}\n callbackOnAddressChange={this.callbackOnAddressChange}\n />\n \n \n
    \n\n );\n }\n\n}\n\nexport default withRouter(connect(select, {\n agentGet,\n getPreTransactionDetails,\n})(UpdateAgentAddressModal));","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n IconBtnTooltip,\n InfoIcon,\n} from '@frontend/common';\n\nimport UpdateAgentAddressModal from './UpdateAgentAddressModal';\nimport UpdateBeneAddressModal from '../../../../AccountDetails/BeneContact/UpdateBeneAddressModal';\n\nimport {\n ACCOUNT_OWNER,\n BENEFICIARY,\n ACCOUNT_TYPE_UGMA_UTMA,\n} from '../../constants';\n\nimport styles from './styles.module.scss';\n\nconst tippyProps = {\n trigger: 'click',\n hideOnClick: true,\n interactive: true,\n};\n\nconst select = (state) => ({\n preTransactionDetails: state.transactions.preTransactionDetails,\n});\n\nexport class CheckAddress extends React.Component {\n static propTypes = {\n stepIndex: PropTypes.number.isRequired,\n recipientAddress: PropTypes.object.isRequired,\n recipient: PropTypes.string.isRequired,\n agentAddressChanged: PropTypes.bool.isRequired,\n beneficiaryAddressChanged: PropTypes.bool.isRequired,\n preTransactionDetails: PropTypes.shape({\n AccountType: PropTypes.string.isRequired,\n }),\n text: PropTypes.shape({\n Payments: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n Withdrawals: PropTypes.shape({\n btn_change_agent_address: PropTypes.string,\n btn_change_bene_address: PropTypes.string,\n check_mailing_text: PropTypes.string,\n ao_school_address_modal_title: PropTypes.string,\n bene_school_address_modal_title: PropTypes.string,\n no_payment_accounts_text: PropTypes.func,\n }),\n }).isRequired,\n };\n\n state = {\n showChangeAddressModal: false,\n accountIsUGMAUTMA: this.props.preTransactionDetails.AccountType === ACCOUNT_TYPE_UGMA_UTMA,\n };\n\n addressChangeMsg = (checkRecipient) => {\n return {`Check withdrawals to the ${checkRecipient} are disabled because of a recent mailing address change.`};\n };\n\n render() {\n const { showChangeAddressModal, accountIsUGMAUTMA } = this.state;\n const {\n stepIndex,\n recipientAddress,\n recipient,\n agentAddressChanged,\n beneficiaryAddressChanged,\n text: {\n Payments,\n Withdrawals: {\n btn_change_agent_address,\n btn_change_bene_address,\n check_mailing_text,\n ao_school_address_modal_title,\n bene_school_address_modal_title,\n no_payment_accounts_text,\n }\n },\n } = this.props;\n\n const onClickUrl = () => this.props.history.push(Payments.nav_path);\n\n const checkNote = stepIndex !== 3 && (\n
    \n {check_mailing_text}\n
    \n );\n\n if (recipient === ACCOUNT_OWNER) {\n const agent = recipientAddress.agent;\n return (\n
    \n {agentAddressChanged ? this.addressChangeMsg('account agent/account owner') : checkNote}\n
    \n
    \n

    {agent.line1}

    \n {agent.line2 &&

    {agent.line2}

    }\n

    {agent.street1}

    \n {agent.street2 &&

    {agent.street2}

    }\n

    {agent.city}, {agent.state.Code} {agent.postalCode}

    \n
    \n {stepIndex === 2 &&\n
    \n this.setState({ showChangeAddressModal: true })}\n title={btn_change_agent_address}\n />\n {!accountIsUGMAUTMA &&\n \n }\n\n
    \n }\n
    \n\n this.setState({ showChangeAddressModal: false })}\n modalTitle={ao_school_address_modal_title}\n />\n
    \n );\n }\n else if (recipient === BENEFICIARY) {\n const beneficiary = recipientAddress.beneficiary;\n return (\n
    \n {beneficiaryAddressChanged ? this.addressChangeMsg('beneficiary') : checkNote}\n
    \n
    \n

    {beneficiary.name}

    \n

    {beneficiary.street1}

    \n {beneficiary.street2 &&

    {beneficiary.street2}

    }\n

    {beneficiary.city}, {beneficiary.state.Code} {beneficiary.postalCode}

    \n
    \n {stepIndex === 2 &&\n
    \n this.setState({ showChangeAddressModal: true })}\n title={btn_change_bene_address}\n />\n {!accountIsUGMAUTMA &&\n \n }\n
    \n }\n
    \n\n this.setState({ showChangeAddressModal: false })}\n modalTitle={bene_school_address_modal_title}\n />\n
    \n\n\n );\n }\n else {\n const school = recipientAddress.school;\n return (\n
    \n {checkNote}\n

    {school.name}

    \n {school.attn &&

    {school.attn}

    }\n

    {school.street1}

    \n

    {school.city} {school.state.Code} {school.postalCode}

    \n

    FBO: {school.fbo ? school.fbo : school.beneficiaryName}

    \n {school.studentIdNum &&

    Student ID: {school.studentIdNum}

    }\n
    \n );\n }\n }\n}\n\nexport default withRouter(connect(select, null)(LanguageHOC(CheckAddress)));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport CheckAddress from './CheckAddress';\n\nimport {\n Radio,\n RadioGroup,\n FormControlLabel,\n FormControl,\n Collapse,\n FormHelperText,\n} from '@mui/material';\n\nimport { withStyles } from '@mui/styles';\n\nimport {\n Dropdown,\n} from '@frontend/common';\n\nimport {\n ACH_PAYMENT,\n CHECK_PAYMENT,\n RECURRING,\n ONE_TIME,\n ACCOUNT_OWNER,\n HIGHER_ED,\n ELECTRONICSCHOOL_PAYMENT,\n} from '../../constants';\n\nimport styles from './styles.module.scss';\n\nconst muiStyles = () => ({\n root: {\n whiteSpace: 'normal',\n wordBreak: 'normal',\n overflowWrap: 'anywhere'\n }\n});\n\nexport class PaymentInfo extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n isEditing: PropTypes.bool.isRequired,\n stepIndex: PropTypes.number.isRequired,\n withdrawalVariables: PropTypes.object.isRequired,\n paymentType: PropTypes.string.isRequired,\n paymentTypeError: PropTypes.string.isRequired,\n paymentAccount: PropTypes.object.isRequired,\n bankAccountError: PropTypes.string.isRequired,\n paymentAccounts: PropTypes.array.isRequired,\n recipientAddress: PropTypes.object.isRequired,\n recipient: PropTypes.string.isRequired,\n agentAddressChanged: PropTypes.bool.isRequired,\n beneficiaryAddressChanged: PropTypes.bool.isRequired,\n paymentTypeHandle: PropTypes.func.isRequired,\n paymentAccountSelectHandle: PropTypes.func.isRequired,\n frequency: PropTypes.string.isRequired,\n accessCards: PropTypes.array.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n beneBankAccounts: PropTypes.array.isRequired,\n withdrawalType: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Payments: PropTypes.shape({\n nav_path: PropTypes.string.isRequired,\n text_bank_hold_language: PropTypes.func.isRequired,\n }).isRequired,\n Withdrawals: PropTypes.shape({\n electronic_request_text: PropTypes.string.isRequired,\n lbl_select_method: PropTypes.string.isRequired,\n no_payment_accounts_text: PropTypes.func.isRequired,\n }).isRequired,\n }).isRequired,\n };\n\n componentDidMount() {\n const { withdrawalVariables, paymentTypeHandle, frequency, agentBankAccounts, accessCards, withdrawalType } = this.props;\n\n // if one time and k12/non-qualified or only check available default to a check\n if (frequency === ONE_TIME) {\n if (\n (withdrawalVariables.paymentTypes.length === 1 && withdrawalVariables.paymentTypes[0].id === CHECK_PAYMENT)\n ||\n (agentBankAccounts.length === 0 && accessCards.length > 0 && (withdrawalType !== HIGHER_ED))\n ) {\n paymentTypeHandle({ target: { value: CHECK_PAYMENT } }); // default to a check\n }\n }\n else {\n if (withdrawalVariables.paymentTypes.length === 1 && withdrawalVariables.paymentTypes[0].id === CHECK_PAYMENT) {\n paymentTypeHandle({ target: { value: '' } }); // we should stop user for recurring\n }\n }\n }\n\n render() {\n const {\n classes,\n isEditing,\n stepIndex,\n withdrawalVariables,\n paymentType,\n paymentTypeError,\n paymentAccount,\n bankAccountError,\n paymentAccounts,\n recipientAddress,\n recipient,\n agentAddressChanged,\n beneficiaryAddressChanged,\n paymentTypeHandle,\n paymentAccountSelectHandle,\n frequency,\n accessCards,\n agentBankAccounts,\n beneBankAccounts,\n withdrawalType,\n text: {\n Payments: { nav_path, text_bank_hold_language, },\n Withdrawals: { electronic_request_text, no_payment_accounts_text, lbl_select_method, }\n }\n } = this.props;\n\n const isRecurring = frequency === RECURRING;\n let paymentTypes = withdrawalVariables.paymentTypes;\n paymentTypes = paymentTypes.filter(type => type.id !== ELECTRONICSCHOOL_PAYMENT);\n const isCheckOnly = paymentTypes.length === 1 && paymentTypes[0].id === CHECK_PAYMENT;\n let noBankAccounts;\n if (recipient === ACCOUNT_OWNER) {\n if (withdrawalType === HIGHER_ED)\n noBankAccounts = agentBankAccounts.length === 0 && accessCards.length === 0;\n else\n noBankAccounts = agentBankAccounts.length === 0;\n }\n else {\n noBankAccounts = beneBankAccounts.length === 0;\n }\n\n const onClickUrl = () => this.props.history.push(nav_path);\n\n const paymentAccountsFormatted = paymentAccounts.map(acct => {\n let display = acct.BankAccountId ? `${acct.BankName} ${acct.BankAccountType}, ${acct.MaskedBankAccountNumber}` : `${acct.Title}, ${acct.CardNumber}`;\n if (acct.Nickname && acct.Nickname.length > 0) {\n display = `${acct.Nickname}, ${acct.MaskedBankAccountNumber}`;\n }\n\n return {\n value: acct.BankAccountId || acct.AccessCardId,\n display,\n };\n });\n\n return (\n
    \n {!isCheckOnly &&\n \n \n {paymentTypes.map(type => {\n const isDisabled = isRecurring && type.name === CHECK_PAYMENT;\n return (\n }\n disabled={isDisabled || isEditing}\n />\n );\n })}\n \n {paymentTypeError && !noBankAccounts && {paymentTypeError}}\n \n }\n\n
    \n {paymentType === CHECK_PAYMENT && (\n \n )}\n {noBankAccounts && isRecurring &&
    {no_payment_accounts_text(onClickUrl)}
    }\n \n {!noBankAccounts &&\n (\n
    \n
    \n {electronic_request_text}\n {text_bank_hold_language(withdrawalVariables.ACHBankWithdrawalLanguage)}\n
    \n \n
    \n )\n }\n
    \n
    \n
    \n );\n }\n\n}\n\nexport default withRouter(LanguageHOC(withStyles(muiStyles)(PaymentInfo)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n Button,\n TextField,\n Collapse,\n FormHelperText,\n InputAdornment,\n Radio,\n RadioGroup,\n FormControl,\n FormControlLabel,\n} from '@mui/material';\n\nimport {\n Dropdown,\n ZipInput,\n IconBtnTooltip,\n InfoIcon,\n} from '@frontend/common';\n\nimport {\n MAIL,\n ELECTRONIC,\n} from 'components/Features/protected/Accounts/Transactions/Withdrawals/constants';\n\nimport styles from './styles.module.scss';\n\nexport class School extends Component {\n\n static propTypes = {\n recipientAddress: PropTypes.object.isRequired,\n usStates: PropTypes.array.isRequired,\n recipientAddressHandle: PropTypes.func.isRequired,\n isEditing: PropTypes.bool,\n errors: PropTypes.shape({\n schoolError: PropTypes.string,\n street1Error: PropTypes.string,\n cityError: PropTypes.string,\n stateError: PropTypes.string,\n postalCodeError: PropTypes.string,\n attnError: PropTypes.string,\n studentIdNumError: PropTypes.string,\n deliveryType: PropTypes.string,\n }).isRequired,\n stateSelectHandle: PropTypes.func.isRequired,\n handleSchoolSearch: PropTypes.func.isRequired,\n isSchoolRetained: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Withdrawals: PropTypes.object.isRequired,\n }).isRequired,\n handleElectronicSchoolDeliveryType: PropTypes.func,\n ElectronicSchoolDeliveryType: PropTypes.string,\n };\n\n renderElectronicSchoolOption() {\n const {\n recipientAddress,\n isEditing,\n errors: {\n schoolError,\n deliveryType,\n },\n text: {\n Withdrawals: {\n check_mailing_text,\n ElectronicSchoolPayment_fee_msg,\n ElectronicSchoolPayment_electronic_info,\n ElectronicSchoolPayment_mail_info,\n ElectronicSchoolPayment_mail_check,\n retained_school_address_txt,\n }\n },\n handleSchoolSearch,\n isSchoolRetained,\n } = this.props;\n\n const { ElectronicSchoolDeliveryType } = this.props;\n const displayBene = ElectronicSchoolDeliveryType ? this.renderBeneficiary() : '';\n let displaySchoolAddress = '';\n let displayMailCheckNotification = '';\n if (ElectronicSchoolDeliveryType === MAIL) {\n displaySchoolAddress = this.renderAddress();\n displayMailCheckNotification =
    {check_mailing_text}
    ;\n }\n return (\n <>\n
    \n null}\n value={recipientAddress.school.name}\n InputProps={{ \n endAdornment: (\n \n {!isEditing && \n }\n \n )\n }}\n />\n
    \n
    \n {recipientAddress.school.IsElectronicSchoolPaymentSchool &&\n \n this.props.handleElectronicSchoolDeliveryType(e.target.value)}\n name='deliveryType'\n >\n
    \n } label={ElectronicSchoolPayment_fee_msg} style={{ marginRight: '0px' }} />\n

    {msg}

    )} />\n
    \n
    \n
    } label={ElectronicSchoolPayment_mail_check} style={{ marginRight: '2px' }} />
    \n

    {msg}

    )} />
    \n
    \n
    {deliveryType}
    \n \n
    }\n
    \n
    \n {isSchoolRetained && ElectronicSchoolDeliveryType === MAIL &&
    {retained_school_address_txt}
    }\n {displayMailCheckNotification}\n {displaySchoolAddress}\n {displayBene}\n
    \n \n );\n }\n\n renderRegularOption() {\n const {\n recipientAddress,\n isEditing,\n errors: {\n schoolError,\n },\n handleSchoolSearch,\n isSchoolRetained,\n text: {\n Withdrawals: {\n check_mailing_text,\n retained_school_address_txt,\n ElectronicSchoolPayment_mail_info,\n }\n },\n } = this.props;\n\n return (\n
    \n
    \n {recipientAddress.school.name === ''\n ?\n \n \n Search Eligible Schools\n \n {schoolError && {schoolError}}\n \n : \n null}\n value={recipientAddress.school.name}\n InputProps={{ endAdornment: (\n \n {!isEditing &&\n }\n )\n }}\n />\n }\n
    \n \n \n
    \n
    \n
    {check_mailing_text}
    \n

    {msg}

    )} />
    \n
    \n {isSchoolRetained &&
    {retained_school_address_txt}
    }\n
    \n \n {this.renderAddress()}\n {this.renderBeneficiary()}\n
    \n
    \n );\n }\n\n renderAddress() {\n const {\n recipientAddress,\n usStates,\n recipientAddressHandle,\n errors: {\n street1Error,\n cityError,\n stateError,\n postalCodeError,\n attnError,\n },\n stateSelectHandle,\n } = this.props;\n\n return (\n <>\n
    \n recipientAddressHandle(e, 'name')} // eslint-disable-line brace-style\n fullWidth\n />\n
    \n
    \n recipientAddressHandle(e, 'attn')} // eslint-disable-line brace-style\n fullWidth\n />\n
    \n
    \n { e.persist(); recipientAddressHandle(e, 'street1'); }} // eslint-disable-line brace-style\n fullWidth\n inputProps={{\n maxLength: 40\n }}\n />\n
    \n
    \n { e.persist(); recipientAddressHandle(e, 'city'); }} // eslint-disable-line brace-style\n fullWidth\n inputProps={{\n maxLength: 25\n }}\n />\n
    \n
    \n ({ value: state.Code, display: state.Name }))}\n errorText={stateError}\n value={recipientAddress.school.state.Code || ''}\n onChange={stateSelectHandle}\n SelectProps={{\n MenuProps: {\n PaperProps: {\n style: { maxHeight: '300px' }\n }\n }\n }}\n />\n
    \n
    \n recipientAddressHandle(e, 'postalCode')}\n label='Postal Code'\n value={recipientAddress.school.postalCode}\n />\n
    \n \n );\n }\n\n renderBeneficiary() {\n const { recipientAddress, errors: { studentIdNumError } } = this.props;\n const bene = recipientAddress.school.beneficiaryName\n ? recipientAddress.school.beneficiaryName\n : recipientAddress.school.fbo;\n return (\n <>\n
    \n \n
    \n
    \n { e.persist(); this.props.recipientAddressHandle(e, 'studentIdNum'); }} // eslint-disable-line brace-style\n value={recipientAddress.school.studentIdNum}\n fullWidth\n />\n
    \n \n );\n }\n \n render() {\n const renderOption = this.props.recipientAddress.school.IsElectronicSchoolPaymentSchool\n ? this.renderElectronicSchoolOption()\n : this.renderRegularOption();\n\n return renderOption;\n }\n}\n\nexport default LanguageHOC(School);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { cloneDeep } from 'lodash';\n\nimport {\n ACCOUNT_OWNER,\n ACCOUNT_TYPE_UGMA_UTMA,\n BENEFICIARY,\n SCHOOL,\n RECURRING,\n ACCESS_CARD_PAYMENT,\n ACH_PAYMENT,\n HIGHER_ED,\n CHECK_PAYMENT,\n} from '../../../constants';\n\nimport CheckAddress from '../CheckAddress';\nimport PaymentInfo from '../PaymentInfo';\nimport School from '../School';\n\nimport styles from '../styles.module.scss';\n\nexport class Step2PaymentMethod extends Component {\n static propTypes = {\n isEditing: PropTypes.bool.isRequired,\n accountIsUGMAUTMA: PropTypes.bool.isRequired,\n withdrawal: PropTypes.shape({\n paymentAccount: PropTypes.object.isRequired,\n paymentType: PropTypes.string.isRequired,\n recipient: PropTypes.string.isRequired,\n recipientAddress: PropTypes.object.isRequired,\n frequency: PropTypes.string.isRequired,\n withdrawalType: PropTypes.string.isRequired,\n }).isRequired,\n preTransactionDetails: PropTypes.shape({\n AccountType: PropTypes.string.isRequired,\n agentAddressChanged: PropTypes.bool.isRequired,\n beneficiaryAddressChanged: PropTypes.bool.isRequired,\n }).isRequired,\n withdrawalVariables: PropTypes.object.isRequired,\n usStates: PropTypes.array.isRequired,\n accessCards: PropTypes.array.isRequired,\n agentBankAccounts: PropTypes.array.isRequired,\n beneBankAccounts: PropTypes.array.isRequired,\n errors: PropTypes.shape({\n bankAccountError: PropTypes.string.isRequired,\n paymentTypeError: PropTypes.string.isRequired,\n schoolError: PropTypes.string.isRequired,\n street1Error: PropTypes.string.isRequired,\n cityError: PropTypes.string.isRequired,\n stateError: PropTypes.string.isRequired,\n postalCodeError: PropTypes.string.isRequired,\n attnError: PropTypes.string.isRequired,\n studentIdNumError: PropTypes.string.isRequired,\n deliveryType: PropTypes.string.isRequired,\n }).isRequired,\n paymentTypeHandle: PropTypes.func.isRequired,\n paymentAccountSelectHandle: PropTypes.func.isRequired,\n recipientAddressHandle: PropTypes.func.isRequired,\n stateSelectHandle: PropTypes.func.isRequired,\n handleSchoolSearch: PropTypes.func.isRequired,\n isSchoolRetained: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Payments: PropTypes.shape({\n nav_path: PropTypes.string\n }).isRequired,\n Withdrawals: PropTypes.shape({\n no_payment_accounts_text: PropTypes.func,\n ugmautma_check_only_txt: PropTypes.string,\n }).isRequired,\n }).isRequired,\n handleElectronicSchoolDeliveryType: PropTypes.func.isRequired,\n ElectronicSchoolDeliveryType: PropTypes.string.isRequired,\n };\n\n componentDidMount() {\n const {\n accountIsUGMAUTMA,\n agentBankAccounts,\n beneBankAccounts,\n accessCards,\n paymentTypeHandle,\n withdrawal: {\n recipient,\n frequency,\n }\n } = this.props;\n\n // default to check\n if (frequency !== RECURRING) {\n if (\n (recipient === ACCOUNT_OWNER && agentBankAccounts.length === 0 && accessCards.length === 0) ||\n (recipient === BENEFICIARY && beneBankAccounts.length === 0) ||\n accountIsUGMAUTMA\n ) {\n paymentTypeHandle({ target: { value: CHECK_PAYMENT } });\n }\n }\n }\n\n render() {\n const {\n isEditing,\n withdrawal: {\n paymentAccount,\n paymentType,\n recipient,\n recipientAddress,\n frequency,\n withdrawalType\n },\n preTransactionDetails: {\n AccountType,\n agentAddressChanged,\n beneficiaryAddressChanged,\n },\n withdrawalVariables,\n usStates,\n accessCards,\n agentBankAccounts,\n beneBankAccounts,\n paymentTypeHandle,\n paymentAccountSelectHandle,\n recipientAddressHandle,\n stateSelectHandle,\n handleSchoolSearch,\n errors: {\n bankAccountError,\n paymentTypeError,\n schoolError,\n street1Error,\n cityError,\n stateError,\n postalCodeError,\n attnError,\n studentIdNumError,\n deliveryType,\n },\n isSchoolRetained,\n text: {\n Payments: {\n nav_path\n },\n Withdrawals: {\n no_payment_accounts_text,\n ugmautma_check_only_txt,\n }\n },\n } = this.props;\n const stepIndex = 2;\n const isRecurring = frequency === RECURRING;\n const isUgmaUtmaAccount = AccountType === ACCOUNT_TYPE_UGMA_UTMA;\n\n const onClickUrl = () => this.props.history.push(nav_path);\n\n let component;\n switch (recipient) {\n case ACCOUNT_OWNER:\n if (\n (agentBankAccounts.length === 0 && accessCards.length === 0) || isUgmaUtmaAccount\n )\n if (isRecurring) {\n component =
    {no_payment_accounts_text(onClickUrl)}
    ;\n }\n else\n component = (\n
    \n {isUgmaUtmaAccount &&
    {ugmautma_check_only_txt}
    }\n \n
    \n );\n else {\n // hide access card or bank accounts radio buttons if not available, when access card also hide if not Higher Ed\n const customWithdrawalVariables = cloneDeep(withdrawalVariables);\n if (accessCards.length === 0 || withdrawalType !== HIGHER_ED) {\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== ACCESS_CARD_PAYMENT);\n }\n\n if (agentBankAccounts.length === 0) {\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== ACH_PAYMENT);\n }\n\n if (frequency === RECURRING) {\n // remove check from payment methods if there\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== CHECK_PAYMENT);\n }\n\n component = (\n ({ ...account, id: account.BankAccountId || account.AccessCardId }))} // combine payment accounts and create id property}\n recipientAddress={recipientAddress}\n recipient={recipient}\n agentAddressChanged={agentAddressChanged}\n beneficiaryAddressChanged={beneficiaryAddressChanged}\n paymentTypeHandle={paymentTypeHandle}\n paymentAccountSelectHandle={paymentAccountSelectHandle}\n frequency={frequency}\n accessCards={accessCards}\n agentBankAccounts={agentBankAccounts}\n beneBankAccounts={beneBankAccounts}\n withdrawalType={withdrawalType}\n />\n );\n }\n\n break;\n case BENEFICIARY:\n if (\n beneBankAccounts.length === 0 || isUgmaUtmaAccount\n )\n if (isRecurring) {\n component =
    {no_payment_accounts_text(onClickUrl)}
    ;\n }\n else {\n component = (\n
    \n {isUgmaUtmaAccount &&
    {ugmautma_check_only_txt}
    }\n \n
    \n );\n }\n\n else {\n // always hide access cards or hide bank accounts radio buttons if not available\n const customWithdrawalVariables = cloneDeep(withdrawalVariables);\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== ACCESS_CARD_PAYMENT);\n if (beneBankAccounts.length === 0) {\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== ACH_PAYMENT);\n }\n\n if (frequency === RECURRING) {\n // remove check from payment methods if there\n customWithdrawalVariables.paymentTypes = customWithdrawalVariables.paymentTypes.filter(type => type.id !== CHECK_PAYMENT);\n }\n\n component = (\n \n );\n }\n\n break;\n case SCHOOL:\n component = (\n \n );\n break;\n default:\n component =
    Recipient not found!
    ;\n }\n\n return component;\n }\n\n\n}\n\nexport default withRouter(LanguageHOC(Step2PaymentMethod));","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n ACCOUNT_OWNER,\n BENEFICIARY,\n SCHOOL,\n} from '../../constants';\n\nimport styles from './styles.module.scss';\n\nBankInfo.propTypes = {\n recipientAddress: PropTypes.object.isRequired,\n paymentAccount: PropTypes.object.isRequired,\n recipient: PropTypes.string.isRequired,\n};\n\nexport function BankInfo(props) {\n const {\n recipient,\n paymentAccount,\n recipientAddress,\n } = props;\n\n let recipientName;\n switch (recipient) {\n case ACCOUNT_OWNER:\n recipientName = recipientAddress.agent.name;\n break;\n case BENEFICIARY:\n recipientName = recipientAddress.beneficiary.name;\n break;\n case SCHOOL:\n recipientName = recipientAddress.school.name;\n break;\n default:\n recipientName = 'Recipient not found.';\n }\n const paymentAccountDisplay = paymentAccount.BankAccountId\n ? `${paymentAccount.BankName} ${paymentAccount.BankAccountType}, ${paymentAccount.MaskedBankAccountNumber}`\n : `${paymentAccount.Title}, ${paymentAccount.CardNumber}`;\n\n return (\n
    \n

    {recipientName}

    \n

    {paymentAccountDisplay}

    \n
    \n );\n}\n\nexport default BankInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n currencyFormatter,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nimport {\n ACH_PAYMENT,\n ACCESS_CARD_PAYMENT,\n FULL_BALANCE,\n PARTIAL_BALANCE,\n RECURRING,\n ELECTRONIC,\n} from '../../../constants';\n\nimport BankInfo from '../BankInfo';\nimport CheckAddress from '../CheckAddress';\n\nimport styles from './styles.module.scss';\n\nexport class Step3Print extends React.Component {\n static propTypes = {\n withdrawal: PropTypes.shape({\n actualSellDate: PropTypes.string,\n amount: PropTypes.number,\n frequency: PropTypes.string,\n amountType: PropTypes.string,\n recipientAddress: PropTypes.object,\n recipient: PropTypes.string,\n proportionalAmounts: PropTypes.array,\n leaveAccountOpen: PropTypes.bool,\n paymentType: PropTypes.string,\n paymentDeliveryType: PropTypes.string,\n paymentAccount: PropTypes.object,\n actualStartDateDayOfMonth: PropTypes.number,\n actualEndDate: PropTypes.string,\n createdDate: PropTypes.string,\n }).isRequired,\n isProportional: PropTypes.bool.isRequired,\n preTransactionDetails: PropTypes.shape({\n agentAddressChanged: PropTypes.bool,\n beneficiaryAddressChanged: PropTypes.bool,\n groupAccounts: PropTypes.arrayOf(\n PropTypes.shape({\n AccountId: PropTypes.number,\n availableForWithdrawalNum: PropTypes.number,\n AllowFullWithdrawal: PropTypes.bool,\n })\n ),\n OptionName: PropTypes.string,\n AccountNumber: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Withdrawals: PropTypes.shape({\n step3_print_and_summary: PropTypes.object.isRequired,\n total_amount_full_balance: PropTypes.string,\n total_amount_full_balance_electronic: PropTypes.string,\n }).isRequired\n }).isRequired,\n };\n\n render() {\n const {\n withdrawal: {\n amount,\n frequency,\n amountType,\n recipientAddress,\n recipient,\n proportionalAmounts,\n leaveAccountOpen,\n paymentType,\n paymentDeliveryType,\n paymentAccount,\n actualSellDate,\n actualStartDateDayOfMonth,\n actualEndDate,\n createdDate,\n },\n isProportional,\n preTransactionDetails: {\n groupAccounts,\n OptionName,\n AccountNumber,\n agentAddressChanged,\n beneficiaryAddressChanged,\n },\n text: {\n Withdrawals: {\n step3_print_and_summary,\n total_amount_full_balance,\n total_amount_full_balance_electronic,\n }\n },\n } = this.props;\n const stepIndex = 3;\n\n const createdTime = dayjs(createdDate).format('MM/DD/YYYY h:mm A'); // eslint-disable-line\n\n let payeeAddress;\n let isElectronicSchoolPayment = false;\n switch (recipient) {\n case 'I':\n payeeAddress = recipientAddress.school;\n if (paymentDeliveryType === ELECTRONIC) {\n isElectronicSchoolPayment = true;\n }\n break;\n case 'P':\n payeeAddress = recipientAddress.agent;\n break;\n case 'B':\n payeeAddress = recipientAddress.beneficiary;\n break;\n default:\n payeeAddress = 'Incorrect recipient';\n }\n\n const isFullBalance = amountType === FULL_BALANCE;\n const closeAccount = amountType === PARTIAL_BALANCE ? false : !leaveAccountOpen;\n let tableData = [];\n const isRecurring = frequency === RECURRING;\n if (isProportional) {\n let tableId = 0;\n // multiple accounts\n tableData = proportionalAmounts.map(pAccount => ({\n tableId: ++tableId,\n accountNumber: pAccount.accountNumber,\n investmentOption: groupAccounts.find(gAccount => gAccount.AccountId === pAccount.accountId).OptionName,\n fullMarket: isFullBalance ? 'Yes' : 'No',\n leaveOpen: leaveAccountOpen ? 'Yes' : 'No',\n withdrawalAmount: isFullBalance ? 'Full Balance' : pAccount.amount,\n }));\n\n if (isElectronicSchoolPayment) {\n const feeRow = {\n tableId: ++tableId,\n accountNumber: AccountNumber,\n investmentOption: OptionName,\n fullMarket: '',\n leaveOpen: '',\n withdrawalAmount: isFullBalance ? currencyFormatter(3.5) : 3.5,\n };\n tableData.push(feeRow);\n }\n }\n else {\n // single account\n const amntRow = {\n tableId: 0,\n accountNumber: AccountNumber,\n investmentOption: OptionName,\n fullMarket: isFullBalance ? 'Yes' : 'No',\n leaveOpen: closeAccount ? 'No' : 'Yes',\n withdrawalAmount: isFullBalance ? 'Full Balance' : amount,\n };\n tableData.push(amntRow);\n\n if (isElectronicSchoolPayment) {\n const feeRow = {\n tableId: 1,\n accountNumber: AccountNumber,\n investmentOption: OptionName,\n fullMarket: '',\n leaveOpen: '',\n withdrawalAmount: isFullBalance ? currencyFormatter(3.5) : 3.5,\n };\n tableData.push(feeRow);\n }\n }\n\n const totalAmountOf = currencyFormatter(tableData.reduce((total, row) => total += row.withdrawalAmount, 0));\n let totalAmtMsg = '';\n let amountDataType = 'currency';\n if (isFullBalance) {\n totalAmtMsg = isElectronicSchoolPayment\n ? total_amount_full_balance_electronic\n : total_amount_full_balance;\n amountDataType = 'string';\n }\n else {\n totalAmtMsg = step3_print_and_summary.total_amount(totalAmountOf);\n }\n\n const displayTotal = proportionalAmounts.length > 0 || isElectronicSchoolPayment;\n\n return (\n
    \n

    {step3_print_and_summary.title}

    \n

    {step3_print_and_summary.comment1}

    \n
    \n

    {step3_print_and_summary.comment2}

    \n\n
    \n

    Payee

    \n

    {payeeAddress.name}

    \n\n {(paymentType === ACH_PAYMENT || paymentType === ACCESS_CARD_PAYMENT) ?\n
    \n

    {step3_print_and_summary.subtitle_payee_bank}

    \n \n
    \n :\n
    \n

    {step3_print_and_summary.subtitle_payee_address}

    \n \n
    \n }\n\n

    {step3_print_and_summary.subtitle_schedule}

    \n {isRecurring ?\n
    \n

    {step3_print_and_summary.frequency_recurring(dayjs(`01-${actualStartDateDayOfMonth}-2020`).format('Do'))}

    \n {actualEndDate &&

    {step3_print_and_summary.end_date_text(dayjs(actualEndDate).format('L'))}

    }\n
    \n :\n

    {step3_print_and_summary.frequency_onetime(dayjs(actualSellDate).format('L'))}

    \n }\n\n
    \n\n
    \n

    {step3_print_and_summary.table_title}

    \n

    {step3_print_and_summary.table_note}

    \n \n \n \n \n \n \n \n {displayTotal &&
    {totalAmtMsg}
    }\n
    \n\n
    {step3_print_and_summary.star_note}
    \n
    {createdTime} MT
    \n
    \n {step3_print_and_summary.print_note}\n
    \n
    \n );\n }\n}\n\nexport default LanguageHOC(Step3Print);\n\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\n\nimport {\n ACH_PAYMENT,\n ACCESS_CARD_PAYMENT,\n FULL_BALANCE,\n RECURRING,\n CHECK_PAYMENT,\n ELECTRONIC,\n} from '../../../constants';\n\nimport {\n currencyFormatter,\n} from '@frontend/common';\n\nimport {\n Checkbox,\n FormControlLabel,\n} from '@mui/material';\n\nimport CheckAddress from '../CheckAddress';\nimport BankInfo from '../BankInfo';\n\nimport styles from './styles.module.scss';\n\nStep3TermsAndConditions.propTypes = {\n termsChecked: PropTypes.bool.isRequired,\n withdrawal: PropTypes.shape({\n frequency: PropTypes.string.isRequired,\n amount: PropTypes.number.isRequired,\n amountType: PropTypes.string.isRequired,\n leaveAccountOpen: PropTypes.bool.isRequired,\n sellDate: PropTypes.object,\n startDate: PropTypes.object,\n endDate: PropTypes.object,\n withdrawalType: PropTypes.string.isRequired,\n paymentType: PropTypes.string.isRequired,\n paymentDeliveryType: PropTypes.string.isRequired,\n recipient: PropTypes.string.isRequired,\n recipientAddress: PropTypes.object.isRequired,\n paymentAccount: PropTypes.object.isRequired,\n }).isRequired,\n handleTermsChecked: PropTypes.func.isRequired,\n preTransactionDetails: PropTypes.shape({\n agentAddressChanged: PropTypes.bool.isRequired,\n beneficiaryAddressChanged: PropTypes.bool.isRequired,\n }).isRequired,\n withdrawalVariables: PropTypes.shape({\n paymentTypes: PropTypes.array.isRequired,\n withdrawalTypes: PropTypes.array.isRequired,\n }).isRequired,\n text: PropTypes.shape({\n Withdrawals: PropTypes.object.isRequired,\n }).isRequired,\n};\n\nconst ACH = 'Electronic Funds Transfer';\nconst ELECTRONIC_SCHOOL = 'Electronic Payment';\n\nexport function Step3TermsAndConditions(props) {\n const {\n termsChecked,\n withdrawal: {\n frequency,\n amount,\n amountType,\n leaveAccountOpen,\n sellDate,\n startDate,\n endDate,\n withdrawalType,\n paymentType,\n paymentDeliveryType,\n recipient,\n recipientAddress,\n paymentAccount,\n },\n preTransactionDetails: {\n agentAddressChanged,\n beneficiaryAddressChanged,\n },\n withdrawalVariables: {\n paymentTypes,\n withdrawalTypes\n },\n handleTermsChecked,\n text: { Withdrawals },\n } = props;\n const stepIndex = 3;\n\n const isRecurring = frequency === RECURRING;\n\n let amtDisplayMsg = '';\n let method = paymentTypes.find(type => type.id === paymentType).name;\n if (amountType.includes('Partial')) {\n if (recipientAddress.school.IsElectronicSchoolPaymentSchool) {\n if (paymentDeliveryType === ELECTRONIC) {\n amtDisplayMsg = `${currencyFormatter(Number(amount + 3.50))} (${currencyFormatter(amount)} + $3.50 Electronic Payment fee)`;\n method = ELECTRONIC_SCHOOL;\n }\n else {\n amtDisplayMsg = currencyFormatter(amount);\n method = CHECK_PAYMENT;\n }\n }\n else {\n amtDisplayMsg = currencyFormatter(amount);\n if (paymentType === CHECK_PAYMENT) {\n method = CHECK_PAYMENT;\n }\n else {\n method = ACH;\n }\n }\n }\n else {\n amtDisplayMsg = recipientAddress.school.IsElectronicSchoolPaymentSchool && paymentDeliveryType === ELECTRONIC\n ? 'Full Balance (less $3.50 Electronic School fee)'\n : 'Full Balance';\n }\n\n return [\n
    \n
    \n
    \n
    \n
    Amount
    \n {amtDisplayMsg}\n
    \n\n {amountType === FULL_BALANCE ?\n
    \n
    Account Status
    \n {leaveAccountOpen ? 'Will remain open' : 'Will be closed'}\n
    \n :\n null\n }\n\n {isRecurring ?\n
    \n
    Start Date
    \n {frequency} on {dayjs(startDate).format('L')}\n {endDate &&\n
    \n
    End Date
    \n Ending on {dayjs(endDate).format('L')}\n
    \n }\n
    :\n
    \n
    Sell Date
    \n {frequency} on {dayjs(sellDate).format('L')}\n
    \n }\n\n
    \n
    Withdrawal Type
    \n {withdrawalTypes.find(type => type.id === withdrawalType).name}\n
    \n\n
    \n
    Payment Method
    \n {method}\n
    \n
    \n\n
    \n {(paymentType === ACH_PAYMENT || paymentType === ACCESS_CARD_PAYMENT) ?\n
    \n
    Recipient
    \n \n
    \n :\n
    \n
    Recipient
    \n \n
    \n }\n
    \n
    \n
    ,\n
    \n

    {Withdrawals.step3_terms_and_conditions.title}

    \n

    {Withdrawals.step3_terms_and_conditions.title_help}

    \n\n
    {Withdrawals.step3_terms_and_conditions.p1.title}
    \n

    {Withdrawals.step3_terms_and_conditions.p1.text1}

    \n

    {Withdrawals.step3_terms_and_conditions.p1.text2}

    \n\n
    {Withdrawals.step3_terms_and_conditions.p2.title}
    \n

    {Withdrawals.step3_terms_and_conditions.p2.text1}

    \n

    {Withdrawals.step3_terms_and_conditions.p2.text2}

    \n\n
    {Withdrawals.step3_terms_and_conditions.p3.title}
    \n

    {Withdrawals.step3_terms_and_conditions.p3.text1}

    \n

    {Withdrawals.step3_terms_and_conditions.p3.text2}

    \n\n
    {Withdrawals.step3_terms_and_conditions.p4.title}
    \n

    {Withdrawals.step3_terms_and_conditions.p4.text1}

    \n

    {Withdrawals.step3_terms_and_conditions.p4.text2}

    \n

    {Withdrawals.step3_terms_and_conditions.p4.text3}

    \n
    ,\n \n \n }\n />\n
    \n ];\n}\n\nexport default LanguageHOC(Step3TermsAndConditions);","/*\n*\n* SchoolSearch Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Slide\n} from '@mui/material';\nimport {\n Modal,\n\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n} from '@frontend/common';\n\n\nexport function SchoolSearch({ loading, onClose, open, schools, schoolSelect, text: { Withdrawals } }) {\n return (\n \n schoolSelect(row.schoolId, row.ElectronicSchoolPaymentSchoolId),\n icon: 'add',\n iconTitle: Withdrawals.btn_add_school,\n }\n ]}\n >\n \n \n \n \n \n \n \n \n );\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nSchoolSearch.propTypes = {\n loading: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n schoolSelect: PropTypes.func.isRequired,\n schools: PropTypes.array.isRequired,\n text: PropTypes.shape({\n Withdrawals: PropTypes.shape({\n btn_add_school: PropTypes.string,\n }),\n }).isRequired,\n};\n\nexport default LanguageHOC(SchoolSearch);","/*\r\n*\r\n* NewWithdrawals Component\r\n*\r\n*/\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withRouter, Prompt } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport dayjs from 'dayjs';\r\nimport LanguageHOC from 'utils/translations/LanguageHOC';\r\nimport parse from 'html-react-parser';\r\nimport { isEqual, cloneDeep } from 'lodash';\r\nimport * as validator from 'utils/helpers/form_validation';\r\nimport { sanitizeHTML } from 'utils/helpers/sanitation';\r\n\r\nimport {\r\n ONE_TIME,\r\n RECURRING,\r\n MONTHLY,\r\n ACH_PAYMENT,\r\n ACCESS_CARD_PAYMENT,\r\n ACCOUNT_OWNER,\r\n BENEFICIARY,\r\n CHECK_PAYMENT,\r\n ELECTRONICSCHOOL_PAYMENT,\r\n K12_ED,\r\n HIGHER_ED,\r\n FULL_BALANCE,\r\n PARTIAL_BALANCE,\r\n SCHOOL,\r\n ACCOUNT_TYPE_UGMA_UTMA,\r\n ELECTRONIC,\r\n MAIL,\r\n} from '../constants';\r\n\r\nimport {\r\n Card,\r\n ConfirmModal,\r\n InfoIcon,\r\n LoadingOverlay,\r\n currencyFormatter,\r\n notificationShow,\r\n properCase,\r\n} from '@frontend/common';\r\n\r\nimport {\r\n createNewWithdrawal,\r\n updateWithdrawal,\r\n getSchools,\r\n getPreTransactionDetails,\r\n getScheduleRunDates,\r\n setWithdrawalSubmitted,\r\n getElectronicSchoolPaymentSchool,\r\n} from 'components/Features/protected/Accounts/Transactions/actions';\r\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\r\n\r\nimport {\r\n getBankAccounts,\r\n getAccessCards,\r\n savePOABankSelectionAgreement,\r\n} from 'components/Features/protected/Payments/actions';\r\n\r\nimport {\r\n Tab,\r\n Tabs,\r\n Button,\r\n Step,\r\n Stepper,\r\n StepButton,\r\n} from '@mui/material';\r\n\r\nimport Step0WithdrawalType from './StepComponents/Step0WithdrawalType';\r\nimport Step1Recipient from './StepComponents/Step1Recipient';\r\nimport Step2AmountDate from './StepComponents/Step2AmountDate';\r\nimport Step2PaymentMethod from './StepComponents/Step2PaymentMethod';\r\nimport Step3Print from './StepComponents/Step3Print';\r\nimport Step3TermsAndConditions from './StepComponents/Step3TermsAndConditions';\r\nimport SchoolSearch from '../../SchoolSearch';\r\n\r\nimport styles from './styles.module.scss';\r\n\r\nconst select = (state) => ({\r\n selectedTransaction: state.transactions.selectedTransaction,\r\n withdrawalVariables: state.static.withdrawalVariables,\r\n bankAccounts: state.payments.bankAccounts,\r\n accessCards: state.payments.accessCards,\r\n usStates: state.static.usStates,\r\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\r\n});\r\n\r\nexport class NewWithdrawals extends React.Component {\r\n static propTypes = {\r\n getNotifications: PropTypes.func.isRequired,\r\n getPreTransactionDetails: PropTypes.func.isRequired,\r\n setWithdrawalSubmitted: PropTypes.func.isRequired,\r\n getScheduleRunDates: PropTypes.func.isRequired,\r\n selectedTransaction: PropTypes.object,\r\n getSchools: PropTypes.func.isRequired,\r\n getElectronicSchoolPaymentSchool: PropTypes.func.isRequired,\r\n withdrawalVariables: PropTypes.shape({\r\n ACHBankWithdrawalDelay: PropTypes.number,\r\n minWithdrawal: PropTypes.number,\r\n maxWithdrawal: PropTypes.number,\r\n maxWithdrawalRecurring: PropTypes.number,\r\n numOfRollingDays: PropTypes.number,\r\n sellDates: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object\r\n ])),\r\n startDates: PropTypes.arrayOf(PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object\r\n ])),\r\n paymentTypes: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n })),\r\n withdrawalTypes: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n messages: PropTypes.arrayOf(PropTypes.string)\r\n })),\r\n recipientTypes: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n messages: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n }).isRequired,\r\n createNewWithdrawal: PropTypes.func.isRequired,\r\n updateWithdrawal: PropTypes.func.isRequired,\r\n isProportional: PropTypes.bool.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n notificationShow: PropTypes.func.isRequired,\r\n checkDisplayWarning: PropTypes.func.isRequired,\r\n preTransactionDetails: PropTypes.shape({\r\n totalMarketValueNum: PropTypes.number,\r\n totalAvailableBalanceNumber: PropTypes.number,\r\n BeneficiaryId: PropTypes.number,\r\n AccountId: PropTypes.number,\r\n AccountType: PropTypes.string,\r\n AllowFullWithdrawal: PropTypes.bool,\r\n agentAddress: PropTypes.shape({\r\n line1: PropTypes.string,\r\n line2: PropTypes.string,\r\n name: PropTypes.string,\r\n street1: PropTypes.string,\r\n street2: PropTypes.string,\r\n city: PropTypes.string,\r\n state: PropTypes.shape({ Code: PropTypes.string }),\r\n postalCode: PropTypes.string,\r\n }),\r\n beneficiaryAddress: PropTypes.shape({\r\n name: PropTypes.string,\r\n street1: PropTypes.string,\r\n street2: PropTypes.string,\r\n city: PropTypes.string,\r\n state: PropTypes.shape({ Code: PropTypes.string }),\r\n postalCode: PropTypes.string,\r\n }),\r\n beneficiaryName: PropTypes.string,\r\n totalAvailableForWithdrawalNum: PropTypes.number,\r\n groupAccounts: PropTypes.arrayOf(PropTypes.shape({\r\n AccountId: PropTypes.number,\r\n availableForWithdrawalNum: PropTypes.number,\r\n AllowFullWithdrawal: PropTypes.bool,\r\n })),\r\n agentAddressChanged: PropTypes.bool,\r\n beneficiaryAddressChanged: PropTypes.bool,\r\n schoolAddresses: PropTypes.array,\r\n }),\r\n getBankAccounts: PropTypes.func.isRequired,\r\n getAccessCards: PropTypes.func.isRequired,\r\n savePOABankSelectionAgreement: PropTypes.func,\r\n bankAccounts: PropTypes.array,\r\n accessCards: PropTypes.array,\r\n text: PropTypes.shape({\r\n AccountDetails: PropTypes.shape({\r\n nav_path: PropTypes.func,\r\n nav_title: PropTypes.string,\r\n }),\r\n Withdrawals: PropTypes.shape({\r\n msg_unsaved_changes: PropTypes.string,\r\n errors: PropTypes.object,\r\n poa_bank_modal_body: PropTypes.string,\r\n poa_bank_modal_title: PropTypes.string,\r\n step_labels: PropTypes.array,\r\n tab_labels: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n }).isRequired,\r\n usStates: PropTypes.array.isRequired,\r\n ADDRESS_TYPES: PropTypes.shape({\r\n Physical: PropTypes.string,\r\n Mailing: PropTypes.string,\r\n Other: PropTypes.string\r\n }).isRequired,\r\n };\r\n\r\n state = {\r\n withdrawalScreenshot: {},\r\n isEditing: window.location.href.includes('edit'),\r\n accountId: parseInt(this.props.match.params.accountId),\r\n groupId: parseInt(this.props.match.params.groupId),\r\n initLoading: true,\r\n tabIndex: 0,\r\n stepIndex: 0,\r\n completed: {},\r\n withdrawalRequestLoading: false,\r\n duplicateWithdrawalModalOpen: false,\r\n showPrintButtonPage: false,\r\n duplicateWithdrawalMessage: '',\r\n errors: [],\r\n partialBalanceWithdrawalOnly: false,\r\n fullBalanceWithdrawalOnly: false,\r\n partialWithdrawalMessageOpen: false,\r\n schools: [],\r\n schoolSearchOpen: false,\r\n isSchoolRetained: false,\r\n schoolSearchLoading: false,\r\n smallScreen: window.innerWidth <= 1200,\r\n step0ValidationHasRun: false,\r\n step1ValidationHasRun: false,\r\n step2ValidationHasRun: false,\r\n frequencyChangeDisabled: false,\r\n accountIsUGMAUTMA: false,\r\n termsChecked: false,\r\n nextRunStartDates: [],\r\n withdrawal: {\r\n amount: 0,\r\n pendingAmount: 0,\r\n amountType: '',\r\n paymentAccount: {},\r\n leaveAccountOpen: false,\r\n frequency: ONE_TIME,\r\n ignoreDuplicates: false,\r\n paymentType: '',\r\n paymentDeliveryType: '',\r\n proportionalAmounts: [],\r\n recipientAddress: {\r\n agent: this.props.preTransactionDetails.agentAddress,\r\n beneficiary: this.props.preTransactionDetails.beneficiaryAddress,\r\n school: {\r\n attn: '',\r\n name: '',\r\n street1: '',\r\n city: '',\r\n state: { Code: '' },\r\n postalCode: '',\r\n schoolId: '',\r\n fbo: this.props.preTransactionDetails.beneficiaryName,\r\n studentIdNum: '',\r\n },\r\n },\r\n recipient: '',\r\n sellDate: this.props.withdrawalVariables.sellDates.length > 0 ? dayjs(this.props.withdrawalVariables.sellDates[0]) : null,\r\n startDate: this.props.withdrawalVariables.startDates.length > 0 ? dayjs(this.props.withdrawalVariables.startDates[0]) : null,\r\n endDate: null,\r\n withdrawalType: '',\r\n actualSellDate: null,\r\n actualStartDateDayOfMonth: null,\r\n actualEndDate: null,\r\n createdDate: null,\r\n nextRunDate: null,\r\n },\r\n poaBank: null,\r\n savingPoaBankAgreement: false,\r\n poaBankModalOpen: false,\r\n paymentAccounts: [],\r\n IsElectronicSchoolPaymentSchool: false,\r\n };\r\n\r\n displayUnsavedChangesPrompt = () => {\r\n return !this.state.loading && !isEqual(this.state.withdrawal, this.state.withdrawalScreenshot);\r\n }\r\n\r\n disableSellDates = (date) => {\r\n return this.props.withdrawalVariables.sellDates.every(validWithdrawalDate => !dayjs(validWithdrawalDate).isSame(date, 'day'));\r\n };\r\n\r\n disableStartDates = (date) => {\r\n return this.props.withdrawalVariables.startDates.every(validWithdrawalDate => !dayjs(validWithdrawalDate).isSame(date, 'day'));\r\n };\r\n\r\n diableDatesMoreThan90Days = (date) => {\r\n date = dayjs(date);\r\n const dateNow = dayjs();\r\n return date.diff(dateNow, 'day') > this.props.withdrawalVariables.numOfRollingDays;\r\n }\r\n\r\n amountHandle = ({ floatValue = 0 }) => {\r\n this.withdrawalStateSet('amount', floatValue);\r\n\r\n if (this.props.isProportional) {\r\n this.proportionalAmountsSet(floatValue);\r\n }\r\n }\r\n\r\n amountTypeHandle = (e) => {\r\n const amountType = e.target.value;\r\n const { accountId } = this.state;\r\n const { isProportional, preTransactionDetails } = this.props;\r\n\r\n this.withdrawalStateSet('amountType', amountType, () => {\r\n switch (amountType) {\r\n case FULL_BALANCE:\r\n if (isProportional) {\r\n this.withdrawalStateSet('amount', preTransactionDetails.totalAvailableForWithdrawalNum);\r\n this.proportionalAmountsSet();\r\n }\r\n else {\r\n // set amount from the source account only\r\n const individualAvailableForWithdrawal = preTransactionDetails.groupAccounts.find(account => account.AccountId === accountId).availableForWithdrawalNum;\r\n this.withdrawalStateSet('amount', individualAvailableForWithdrawal);\r\n }\r\n break;\r\n case PARTIAL_BALANCE:\r\n if (isProportional) {\r\n this.withdrawalStateSet('amount', 0);\r\n this.proportionalAmountsSet();\r\n }\r\n else {\r\n this.withdrawalStateSet('amount', 0);\r\n }\r\n break;\r\n default:\r\n this.withdrawalStateSet('amount', 0);\r\n }\r\n });\r\n }\r\n\r\n savePoaBankAgreement = () => {\r\n const { poaBank } = this.state;\r\n const {\r\n savePOABankSelectionAgreement,\r\n getBankAccounts,\r\n } = this.props;\r\n\r\n this.setState({ savingPoaBankAgreement: true });\r\n savePOABankSelectionAgreement(poaBank.BankAccountId)\r\n .then(() => {\r\n // reload updated bank accounts and continue with bank selection\r\n return getBankAccounts()\r\n .then(() => {\r\n this.withdrawalStateSet('paymentAccount', poaBank);\r\n this.setState({\r\n savingPoaBankAgreement: false,\r\n poaBankModalOpen: false,\r\n poaBank: null,\r\n });\r\n });\r\n })\r\n .catch(() => this.setState({\r\n savingPoaBankAgreement: false,\r\n poaBankModalOpen: false,\r\n poaBank: null,\r\n }));\r\n }\r\n\r\n cancelPoaBankAgreement = () => {\r\n this.setState({\r\n poaBankModalOpen: false,\r\n poaBank: null,\r\n });\r\n }\r\n\r\n paymentAccountSelectHandle = (paymentId) => {\r\n // Searching through all bank accounts should be fast since there are not many.\r\n const selectedPaymentAccount = this.state.paymentAccounts.find(acct => acct.id === paymentId);\r\n if (selectedPaymentAccount.DoesOwnerNeedNotification && selectedPaymentAccount.AllowWithdrawals) { // only show if account can be used for withdrawals and is off the initial 7 business day hold\r\n this.setState({\r\n poaBankModalOpen: true,\r\n poaBank: selectedPaymentAccount,\r\n });\r\n }\r\n else {\r\n this.withdrawalStateSet('paymentAccount', selectedPaymentAccount);\r\n }\r\n }\r\n\r\n errorGet = (key) => {\r\n const error = this.state.errors.find(error => error.key === key);\r\n return error ? error.message : '';\r\n }\r\n\r\n formValidate = (nextStep = () => null) => {\r\n const {\r\n isProportional,\r\n preTransactionDetails: { totalAvailableForWithdrawalNum, groupAccounts },\r\n withdrawalVariables: { minWithdrawal, maxWithdrawal, maxWithdrawalRecurring, numOfRollingDays, ACHBankWithdrawalDelay, },\r\n text: { Withdrawals }\r\n } = this.props;\r\n const { withdrawal, accountId } = this.state;\r\n const paymentDeliveryType = withdrawal.paymentDeliveryType;\r\n\r\n switch (this.state.stepIndex) {\r\n case 0: { // Withdrawal Type\r\n this.setState(({ withdrawal: { withdrawalType } }) => {\r\n const errors = [];\r\n if (!withdrawalType) { // validates withdrawal type (HIGHER_ED, ACCOUNT_OWNER, K12_ED) is selected\r\n errors.push({\r\n key: 'withdrawalType',\r\n message: Withdrawals.errors.withdrawal_type,\r\n });\r\n }\r\n\r\n return { errors, step0ValidationHasRun: true };\r\n }, () => this.state.errors.length === 0 && nextStep());\r\n break;\r\n }\r\n case 1: { // Recipient\r\n this.setState(({ withdrawal: { recipient } }) => {\r\n const errors = [];\r\n if (!recipient) {\r\n errors.push({\r\n key: 'recipient',\r\n message: Withdrawals.errors.recipient_required,\r\n });\r\n }\r\n return { errors, step1ValidationHasRun: true };\r\n }, () => this.state.errors.length === 0 && nextStep());\r\n break;\r\n }\r\n case 2: { // Amount, Sell Date & Pay Method\r\n const currAccount = groupAccounts.find(account => account.AccountId === accountId);\r\n const individualAvailableForWithdrawal = currAccount.availableForWithdrawalNum;\r\n\r\n // I removed conditional for totalMarketValue\r\n // there is another scheduled individual full balance withdrawal\r\n this.setState(({\r\n isEditing,\r\n withdrawalScreenshot,\r\n withdrawal: {\r\n amount,\r\n pendingAmount,\r\n amountType,\r\n frequency,\r\n sellDate,\r\n startDate,\r\n endDate,\r\n paymentAccount,\r\n recipient,\r\n recipientAddress: { school },\r\n } }) => {\r\n const errors = [];\r\n const formattedPostal = school.postalCode.replace(/\\D/g, '');\r\n\r\n const startDateChanged = !dayjs(startDate).isSame(withdrawalScreenshot.startDate);\r\n\r\n if (amount < minWithdrawal) { // validates amount is more than min withdrawal\r\n if (amountType !== FULL_BALANCE) {\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.min_withdrawal(currencyFormatter(minWithdrawal)),\r\n });\r\n }\r\n }\r\n else if (isEditing) {\r\n // when editing switch to available for withdrawal + pending amount to edit available\r\n if (isProportional && amount > totalAvailableForWithdrawalNum + pendingAmount) {\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.exceeds_total_available,\r\n });\r\n }\r\n else if (!isProportional && amount > individualAvailableForWithdrawal + pendingAmount) {\r\n if (!(isEditing && amountType === FULL_BALANCE)) {\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.exceeds_individual_available,\r\n });\r\n }\r\n\r\n }\r\n }\r\n else {\r\n if (isProportional && amount > totalAvailableForWithdrawalNum) { // validates amount is less than available group balance for withdrawal\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.exceeds_total_available,\r\n });\r\n }\r\n else if (!isProportional && amount > individualAvailableForWithdrawal) { // validates amount is less than available individual balance for withdrawal\r\n if (!(isEditing && amountType === FULL_BALANCE))\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.exceeds_individual_available,\r\n });\r\n }\r\n }\r\n\r\n if (school.IsElectronicSchoolPaymentSchool) {\r\n\r\n let finalTotalAvailableForWithdrawalNum = totalAvailableForWithdrawalNum;\r\n let finalIndividualAvailableForWithdrawal = individualAvailableForWithdrawal;\r\n if (isEditing) {\r\n finalTotalAvailableForWithdrawalNum = totalAvailableForWithdrawalNum + pendingAmount;\r\n finalIndividualAvailableForWithdrawal = individualAvailableForWithdrawal + pendingAmount;\r\n }\r\n\r\n let ElectronicSchoolAmnt = amount;\r\n if (paymentDeliveryType === ELECTRONIC) {\r\n ElectronicSchoolAmnt = amountType === FULL_BALANCE ? Number(amount - 3.50) : Number(amount + 3.50);\r\n }\r\n\r\n if (isProportional && ElectronicSchoolAmnt > finalTotalAvailableForWithdrawalNum) {\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.amnt_with_fee,\r\n });\r\n }\r\n if (!isProportional && ElectronicSchoolAmnt > finalIndividualAvailableForWithdrawal) {\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.amnt_with_fee,\r\n });\r\n }\r\n }\r\n\r\n if (!amountType) { // validates amount type (full or partial) is selected\r\n errors.push({\r\n key: 'amountType',\r\n message: Withdrawals.errors.amount_type,\r\n });\r\n }\r\n\r\n if (frequency === ONE_TIME) {\r\n if (amount >= maxWithdrawal) { // validates amount is less than online maximum\r\n errors.push({\r\n key: 'amount',\r\n message: parse(Withdrawals.errors.max_withdrawal(currencyFormatter(maxWithdrawal))),\r\n });\r\n }\r\n // sell date\r\n if (!sellDate) { // validates a sell date is selected\r\n errors.push({\r\n key: 'sellDate',\r\n message: Withdrawals.errors.sell_date_required,\r\n });\r\n }\r\n else if (this.disableSellDates(sellDate)) { // validates that keyed-in date matches a valid sell date\r\n errors.push({\r\n key: 'sellDate',\r\n message: Withdrawals.errors.sell_date_valid,\r\n });\r\n }\r\n }\r\n else if (frequency === RECURRING) {\r\n if (withdrawal.paymentType === CHECK_PAYMENT) { // check is not allowed for recurring we should show an error and stop the user\r\n // this is to stop user from proceeding\r\n errors.push({\r\n key: 'paymentType',\r\n message: Withdrawals.errors.payment_method_required,\r\n });\r\n }\r\n\r\n if (amount >= maxWithdrawalRecurring) { // validates amount is less than online maximum divided by 3 for 90 days period\r\n errors.push({\r\n key: 'amount',\r\n message: Withdrawals.errors.max_withdrawal_recurring(currencyFormatter(maxWithdrawalRecurring)),\r\n });\r\n }\r\n // start date\r\n if (!startDate) { // validates a start date is selected\r\n errors.push({\r\n key: 'startDate',\r\n message: Withdrawals.errors.start_date_required,\r\n });\r\n }\r\n else if (!dayjs(startDate).isValid()) {\r\n errors.push({\r\n key: 'startDate',\r\n message: Withdrawals.errors.start_date_valid,\r\n });\r\n }\r\n else if (\r\n (!isEditing && this.disableStartDates(startDate)) ||\r\n (isEditing && startDateChanged && this.disableStartDates(startDate))\r\n ) {\r\n errors.push({\r\n key: 'startDate',\r\n message: Withdrawals.errors.start_date_enabled(numOfRollingDays),\r\n });\r\n }\r\n // optional end date\r\n if (endDate !== null) {\r\n if (!dayjs(endDate).isValid()) {\r\n errors.push({\r\n key: 'endDate',\r\n message: Withdrawals.errors.end_date_required,\r\n });\r\n }\r\n else if (dayjs(endDate).isSameOrBefore(startDate)) {\r\n errors.push({\r\n key: 'endDate',\r\n message: Withdrawals.errors.end_date_valid,\r\n });\r\n }\r\n }\r\n }\r\n\r\n switch (recipient) {\r\n case SCHOOL: {\r\n if (!school.IsElectronicSchoolPaymentSchool || paymentDeliveryType === MAIL) {\r\n if (school.name.length < 1) {\r\n errors.push({\r\n key: 'school',\r\n message: Withdrawals.errors.school_required,\r\n });\r\n }\r\n const street1Error = validator.street1Validator(school.street1.trim());\r\n if (street1Error) {\r\n errors.push({\r\n key: 'street1',\r\n message: street1Error,\r\n });\r\n }\r\n const cityError = validator.cityValidator(school.city.trim());\r\n if (cityError) {\r\n errors.push({\r\n key: 'city',\r\n message: cityError,\r\n });\r\n }\r\n if (!school.state.Code) {\r\n errors.push({\r\n key: 'state',\r\n message: Withdrawals.errors.state_required,\r\n });\r\n }\r\n if (formattedPostal.length !== 5 && formattedPostal.length !== 9) {\r\n errors.push({\r\n key: 'postalCode',\r\n message: Withdrawals.errors.postal_code_required,\r\n });\r\n }\r\n const attnError = validator.schoolAttnValidator(school.attn);\r\n if (attnError) {\r\n errors.push({\r\n key: 'attn',\r\n message: attnError,\r\n });\r\n }\r\n }\r\n\r\n if (school.IsElectronicSchoolPaymentSchool && paymentDeliveryType === '') {\r\n errors.push({\r\n key: 'deliveryType',\r\n message: 'Delivery Type is required',\r\n });\r\n }\r\n\r\n let studentIdNumError = '';\r\n if (school.IsElectronicSchoolPaymentSchool && paymentDeliveryType === ELECTRONIC) {\r\n let message = '';\r\n const student = school.ElectronicSchoolInfo.fields.find(field => field.id === 'student_id');\r\n if (student.pattern_message && !school.studentIdNum.match(student.pattern, '')) { // Electronic School validation\r\n message = student.pattern_message;\r\n }\r\n else if (school.studentIdNum === '') {\r\n message = 'Student ID is required.';\r\n }\r\n\r\n if (message !== '') {\r\n errors.push({\r\n key: 'studentIdNum',\r\n message,\r\n });\r\n }\r\n }\r\n else {\r\n studentIdNumError = validator.alphaNumericOnlyValidator(school.studentIdNum);\r\n if (studentIdNumError) {\r\n errors.push({\r\n key: 'studentIdNum',\r\n message: studentIdNumError,\r\n });\r\n }\r\n }\r\n break;\r\n }\r\n\r\n\r\n case ACCOUNT_OWNER:\r\n if (withdrawal.paymentType === ACH_PAYMENT && !paymentAccount.id) {\r\n errors.push({\r\n key: 'paymentAccount',\r\n message: Withdrawals.errors.payment_method_required,\r\n });\r\n }\r\n if (withdrawal.paymentType === ACH_PAYMENT && !paymentAccount.AllowWithdrawals) {\r\n errors.push({\r\n key: 'paymentAccount',\r\n message: Withdrawals.errors.payment_method_on_hold(ACHBankWithdrawalDelay),\r\n });\r\n }\r\n if (withdrawal.paymentType === ACCESS_CARD_PAYMENT && paymentAccount.AccessCardId && amount > paymentAccount.Capacity) { // check for amount exceeding selected Access Card capacity\r\n errors.push({\r\n key: amountType === FULL_BALANCE ? 'amountType' : 'amount', // if Full Balance is selected, show error under that type selection area instead\r\n message: Withdrawals.errors.exceeds_access_card_capcity,\r\n });\r\n }\r\n break;\r\n case BENEFICIARY:\r\n if (withdrawal.paymentType === ACH_PAYMENT && !paymentAccount.BankAccountId) {\r\n errors.push({\r\n key: 'paymentAccount',\r\n message: Withdrawals.errors.payment_method_required,\r\n });\r\n }\r\n if (withdrawal.paymentType === ACH_PAYMENT && !paymentAccount.AllowWithdrawals) {\r\n errors.push({\r\n key: 'paymentAccount',\r\n message: Withdrawals.errors.payment_method_on_hold(ACHBankWithdrawalDelay),\r\n });\r\n }\r\n break;\r\n\r\n default:\r\n // do nothing\r\n }\r\n\r\n if (!withdrawal.paymentType) {\r\n errors.push({\r\n key: 'paymentType',\r\n message: Withdrawals.errors.payment_type_required,\r\n });\r\n }\r\n\r\n return { errors, step2ValidationHasRun: true };\r\n }, () => this.state.errors.length === 0 && nextStep());\r\n break;\r\n }\r\n default: break;\r\n }\r\n }\r\n\r\n infoMessagesCompose = (messages) => {\r\n return (
    {messages.map(msg =>

    {msg}

    )}
    );\r\n }\r\n\r\n leaveAccountOpenHandle = () => {\r\n this.withdrawalStateSet('leaveAccountOpen', !this.state.withdrawal.leaveAccountOpen);\r\n }\r\n\r\n nextStepHandle = () => {\r\n // make sure user can't change the frequency after step 0\r\n this.setState(({ smallScreen, stepIndex, completed }) => {\r\n const nextIndex = stepIndex + 1;\r\n if (!smallScreen || nextIndex === 2) {\r\n window.scrollTo(0, 0);\r\n }\r\n const newCompleted = completed;\r\n newCompleted[stepIndex] = true;\r\n return ({\r\n frequencyChangeDisabled: true,\r\n stepIndex: nextIndex,\r\n completed: newCompleted,\r\n });\r\n });\r\n }\r\n\r\n clearWithdrawalByStep = (stepIndex) => {\r\n let clearedWithdrawalByStep = cloneDeep(this.state.withdrawal);\r\n // first clear the current step's values\r\n switch (stepIndex) {\r\n case 0:\r\n clearedWithdrawalByStep = {\r\n ...clearedWithdrawalByStep,\r\n amount: 0,\r\n paymentAccount: {},\r\n leaveAccountOpen: false,\r\n paymentType: '',\r\n proportionalAmounts: [],\r\n recipient: '',\r\n sellDate: this.props.withdrawalVariables.sellDates.length > 0 ? dayjs(this.props.withdrawalVariables.sellDates[0]) : null,\r\n startDate: this.props.withdrawalVariables.startDates.length > 0 ? dayjs(this.props.withdrawalVariables.startDates[0]) : null,\r\n endDate: null,\r\n actualSellDate: null,\r\n actualStartDateDayOfMonth: null,\r\n actualEndDate: null,\r\n createdDate: null,\r\n nextRunDate: null\r\n };\r\n break;\r\n\r\n case 1:\r\n clearedWithdrawalByStep = {\r\n ...clearedWithdrawalByStep,\r\n amount: 0,\r\n paymentAccount: {},\r\n leaveAccountOpen: false,\r\n proportionalAmounts: [],\r\n sellDate: this.props.withdrawalVariables.sellDates.length > 0 ? dayjs(this.props.withdrawalVariables.sellDates[0]) : null,\r\n startDate: this.props.withdrawalVariables.startDates.length > 0 ? dayjs(this.props.withdrawalVariables.startDates[0]) : null,\r\n endDate: null,\r\n actualSellDate: null,\r\n actualStartDateDayOfMonth: null,\r\n actualEndDate: null,\r\n createdDate: null,\r\n nextRunDate: null\r\n };\r\n break;\r\n\r\n case 2:\r\n clearedWithdrawalByStep = {\r\n ...clearedWithdrawalByStep,\r\n amount: 0,\r\n paymentAccount: {},\r\n leaveAccountOpen: false,\r\n proportionalAmounts: [],\r\n sellDate: this.props.withdrawalVariables.sellDates.length > 0 ? dayjs(this.props.withdrawalVariables.sellDates[0]) : null,\r\n startDate: this.props.withdrawalVariables.startDates.length > 0 ? dayjs(this.props.withdrawalVariables.startDates[0]) : null,\r\n endDate: null,\r\n actualSellDate: null,\r\n actualStartDateDayOfMonth: null,\r\n actualEndDate: null,\r\n createdDate: null,\r\n nextRunDate: null,\r\n };\r\n break;\r\n\r\n default: // nothing\r\n }\r\n\r\n return clearedWithdrawalByStep;\r\n }\r\n\r\n previousStepHandle = () => {\r\n const { paymentType, paymentDeliveryType } = this.state.withdrawal;\r\n // then make sure user can change the frequency when on step 0\r\n this.setState(({ stepIndex, completed, isEditing }) => {\r\n const previousIndex = stepIndex - 1;\r\n const newCompleted = completed;\r\n newCompleted[stepIndex] = false;\r\n const updatedState = {\r\n frequencyChangeDisabled: !(previousIndex === 0),\r\n stepIndex: previousIndex,\r\n completed: newCompleted,\r\n paymentDeliveryType,\r\n paymentType,\r\n errors: [], // assuming there are only errors on the current step\r\n };\r\n // allow clearing values on going back when creating a new withdrawal only\r\n if (!isEditing) {\r\n updatedState.withdrawal = this.clearWithdrawalByStep(stepIndex);\r\n }\r\n return (updatedState);\r\n });\r\n }\r\n\r\n paymentTypeHandle = e => {\r\n const { accessCards, preTransactionDetails: { AccountType } } = this.props;\r\n const { recipient, withdrawalType } = this.state.withdrawal;\r\n const paymentType = e?.target?.value || '';\r\n\r\n // clear payment account first\r\n if (e !== undefined) {\r\n this.withdrawalStateSet('paymentAccount', {}, () => {\r\n switch (recipient) {\r\n case ACCOUNT_OWNER: {\r\n const agentBankAccounts = this.getAgentBankAccounts();\r\n if (\r\n (agentBankAccounts.length === 0 && accessCards.length === 0)\r\n ||\r\n (agentBankAccounts.length === 0 && accessCards.length > 0 && (withdrawalType !== HIGHER_ED))\r\n ||\r\n (AccountType === ACCOUNT_TYPE_UGMA_UTMA)\r\n ) {\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n }\r\n else {\r\n this.withdrawalStateSet('paymentType', paymentType);\r\n // if access card also set the payment account\r\n if (accessCards.length === 1 && paymentType === ACCESS_CARD_PAYMENT)\r\n this.paymentAccountSelectHandle(accessCards[0].AccessCardId);\r\n }\r\n break;\r\n }\r\n case BENEFICIARY: {\r\n const beneBankAccounts = this.getBeneBankAccounts();\r\n if (beneBankAccounts.length === 0 || AccountType === ACCOUNT_TYPE_UGMA_UTMA)\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n else\r\n this.withdrawalStateSet('paymentType', paymentType);\r\n break;\r\n }\r\n case SCHOOL:\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n break;\r\n case ELECTRONICSCHOOL_PAYMENT:\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n this.withdrawalStateSet('paymenDeliveryType', ELECTRONIC);\r\n break;\r\n default:\r\n this.withdrawalStateSet('paymentType', '');\r\n }\r\n });\r\n }\r\n }\r\n\r\n proportionalAmountsSet = (value) => {\r\n const { preTransactionDetails: { groupAccounts } } = this.props;\r\n const { withdrawal: { amount, amountType } } = this.state;\r\n\r\n if (amountType === FULL_BALANCE) {\r\n this.withdrawalStateSet('proportionalAmounts', groupAccounts.map(account => ({\r\n accountId: account.AccountId,\r\n amount: account.marketValueNumber,\r\n accountNumber: account.AccountNumber\r\n })));\r\n }\r\n else {\r\n this.withdrawalStateSet('proportionalAmounts', groupAccounts.map(account => ({\r\n accountId: account.AccountId,\r\n amount: (value ? value : amount) * account.percentageOfTotalValue,\r\n accountNumber: account.AccountNumber\r\n })));\r\n }\r\n }\r\n\r\n radioButtonLabelGenerate = label => {\r\n return (\r\n \r\n
    {label.name}
    \r\n
    \r\n {label.id !== 'I' && }\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n recipientAddressHandle = (e, fieldName) => {\r\n if (e !== undefined) {\r\n const addresses = { ...this.state.withdrawal.recipientAddress };\r\n\r\n let value;\r\n if (fieldName === 'postalCode') {\r\n value = e.formattedValue;\r\n }\r\n else {\r\n value = e.target.value;\r\n }\r\n\r\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: { ...addresses.school, [fieldName]: value } });\r\n }\r\n }\r\n\r\n recipientHandle = (e) => {\r\n const recipient = e.target.value;\r\n this.withdrawalStateSet('recipient', recipient);\r\n // always reset payment type when recipient changed except when school then set to check\r\n if (recipient === SCHOOL) {\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n }\r\n else {\r\n this.withdrawalStateSet('paymentType', '');\r\n }\r\n }\r\n\r\n schoolSelect = (schoolId, ElectronicSchoolPaymentSchoolId) => {\r\n const addresses = { ...this.state.withdrawal.recipientAddress };\r\n const { preTransactionDetails } = this.props;\r\n const { schoolAddresses } = preTransactionDetails;\r\n const { schools } = this.state;\r\n const beneficiaryName = preTransactionDetails.beneficiaryName;\r\n\r\n const school = schoolId === '0'\r\n ? schools.find(school => school.ElectronicSchoolPaymentSchoolId === ElectronicSchoolPaymentSchoolId)\r\n : schools.find(school => school.schoolId === schoolId);\r\n\r\n const recipientAddress = schoolAddresses.find(address => address.schoolId === schoolId);\r\n const isSchoolRetained = recipientAddress !== undefined;\r\n\r\n if (school.IsElectronicSchoolPaymentSchool) {\r\n this.setState({ schoolSearchLoading: true });\r\n this.props.getElectronicSchoolPaymentSchool(school.ElectronicSchoolPaymentSchoolId)\r\n .then(response => {\r\n this.setState(\r\n { schoolSearchLoading: false, isSchoolRetained, schoolSearchOpen: false, IsElectronicSchoolPaymentSchool: true },\r\n () => {\r\n this.withdrawalStateSet('recipientAddress', {\r\n school: {\r\n fbo: school.fbo,\r\n name: school.name,\r\n IsElectronicSchoolPaymentSchool: school.IsElectronicSchoolPaymentSchool,\r\n ElectronicSchoolPaymentSchoolId: school.ElectronicSchoolPaymentSchoolId,\r\n fafsaId: school.fafsaId ? school.fafsaId : undefined,\r\n studentIdNum: '',\r\n beneficiaryName,\r\n schoolId,\r\n attn: isSchoolRetained && recipientAddress.attn ? recipientAddress.attn : '',\r\n city: isSchoolRetained && recipientAddress.city ? recipientAddress.city : '',\r\n postalCode: isSchoolRetained && recipientAddress.postalCode ? recipientAddress.postalCode : '',\r\n state: isSchoolRetained && recipientAddress.state ? recipientAddress.state : { Code: '' },\r\n street1: isSchoolRetained && recipientAddress.street1 ? recipientAddress.street1 : '',\r\n street2: isSchoolRetained && recipientAddress.street2 ? recipientAddress.street2 : '',\r\n street3: isSchoolRetained && recipientAddress.street3 ? recipientAddress.street3 : '',\r\n ElectronicSchoolInfo: response.payload.data,\r\n }\r\n });\r\n this.withdrawalStateSet('paymentType', ELECTRONICSCHOOL_PAYMENT);\r\n this.withdrawalStateSet('paymentDeliveryType', ELECTRONIC);\r\n }\r\n );\r\n });\r\n }\r\n else {\r\n this.setState(\r\n { isSchoolRetained, schoolSearchOpen: false, IsElectronicSchoolPaymentSchool: false },\r\n () => {\r\n this.withdrawalStateSet('recipientAddress', {\r\n ...addresses,\r\n school: {\r\n fbo: school.fbo,\r\n name: school.name,\r\n IsElectronicSchoolPaymentSchool: false,\r\n ElectronicSchoolPaymentSchoolId: '',\r\n fafsaId: school.fafsaId ? school.fafsaId : undefined,\r\n studentIdNum: '',\r\n beneficiaryName,\r\n schoolId,\r\n attn: isSchoolRetained && recipientAddress.attn ? recipientAddress.attn : '',\r\n city: isSchoolRetained && recipientAddress.city ? recipientAddress.city : '',\r\n postalCode: isSchoolRetained && recipientAddress.postalCode ? recipientAddress.postalCode : '',\r\n state: isSchoolRetained && recipientAddress.state ? recipientAddress.state : { Code: '' },\r\n street1: isSchoolRetained && recipientAddress.street1 ? recipientAddress.street1 : '',\r\n street2: isSchoolRetained && recipientAddress.street2 ? recipientAddress.street2 : '',\r\n street3: isSchoolRetained && recipientAddress.street3 ? recipientAddress.street3 : '',\r\n ElectronicSchoolInfo: {},\r\n }\r\n });\r\n this.withdrawalStateSet('paymentType', CHECK_PAYMENT);\r\n this.withdrawalStateSet('paymentDeliveryType', MAIL);\r\n }\r\n );\r\n }\r\n }\r\n\r\n schoolsGet() {\r\n if (this.state.schools.length === 0) {\r\n this.setState({ schoolSearchLoading: true });\r\n this.props.getSchools()\r\n .then(response => {\r\n const data = response.payload.data;\r\n let id = -1;\r\n if (data && data.length > 0) {\r\n const schools = data.map(school => {\r\n ++id;\r\n return {\r\n id,\r\n city: properCase(school.City),\r\n fafsaId: school.Code,\r\n name: properCase(school.Name),\r\n schoolId: school.CollegeId.toString(),\r\n state: school.State,\r\n IsElectronicSchoolPaymentSchool: school.IsElectronicSchoolPaymentSchool,\r\n ElectronicSchoolPaymentSchoolId: school.ElectronicSchoolPaymentSchoolId,\r\n };\r\n });\r\n this.setState({ schools });\r\n }\r\n })\r\n .finally(() => this.setState({ schoolSearchLoading: false }));\r\n }\r\n }\r\n\r\n continueButtonHandle = () => this.setState({ partialWithdrawalMessageOpen: false });\r\n\r\n dateHandle = (date, dateKey) => {\r\n this.withdrawalStateSet(dateKey, date);\r\n\r\n if (dateKey === 'startDate' || dateKey === 'sellDate')\r\n this.props.checkDisplayWarning(date);\r\n }\r\n\r\n stateSelectHandle = (value) => {\r\n const addresses = { ...this.state.withdrawal.recipientAddress };\r\n this.withdrawalStateSet('recipientAddress', { ...addresses, school: { ...addresses.school, state: { Code: value } } });\r\n }\r\n\r\n getAgentBankAccounts = () => {\r\n const { bankAccounts } = this.props;\r\n // get agent's bank accounts\r\n return bankAccounts\r\n .filter(bank => bank.IsVerified)\r\n .filter(bank => bank.BeneficiaryId === null);\r\n }\r\n\r\n getBeneBankAccounts = () => {\r\n const {\r\n bankAccounts,\r\n preTransactionDetails,\r\n } = this.props;\r\n // get bene's bank accounts\r\n return bankAccounts\r\n .filter(bank => bank.IsVerified)\r\n .filter(bank => bank.BeneficiaryId === preTransactionDetails.BeneficiaryId);\r\n }\r\n\r\n handleSchoolSearch = () => {\r\n this.setState({ schoolSearchOpen: true });\r\n this.schoolsGet();\r\n }\r\n\r\n goToPreviousPage = () => {\r\n this.props.history.goBack();\r\n }\r\n\r\n handleFinish = () => {\r\n this.props.history.goBack();\r\n }\r\n\r\n stepperButtonsCompose = () => {\r\n const {\r\n withdrawalRequestLoading,\r\n partialWithdrawalMessageOpen,\r\n stepIndex,\r\n termsChecked,\r\n withdrawal: {\r\n paymentType,\r\n recipient,\r\n },\r\n showPrintButtonPage,\r\n } = this.state;\r\n\r\n const cancelButton = (\r\n \r\n Cancel\r\n \r\n );\r\n const nextButton = (onClick, disabled = false) => (\r\n \r\n Next\r\n \r\n );\r\n const backButton = (\r\n this.previousStepHandle()}\r\n disabled={withdrawalRequestLoading}\r\n style={{ marginLeft: '5px', marginRight: '5px' }}\r\n >\r\n Back\r\n \r\n );\r\n const agreeButton = (\r\n this.handleWithdrawalRequest()}\r\n style={{ marginLeft: '5px', marginRight: '5px' }}\r\n >\r\n I agree\r\n \r\n );\r\n\r\n const finishButton = (\r\n \r\n Finish\r\n \r\n );\r\n\r\n const printButton = (\r\n \r\n Print\r\n \r\n );\r\n\r\n let buttons = [];\r\n switch (stepIndex) {\r\n case 0: // Withdrawal Type\r\n buttons = [\r\n cancelButton,\r\n nextButton(() => this.formValidate(this.nextStepHandle))\r\n ];\r\n break;\r\n case 1: // Recipient\r\n buttons = [\r\n cancelButton,\r\n backButton,\r\n nextButton(() => {\r\n this.formValidate(this.nextStepHandle);\r\n this.paymentTypeHandle();\r\n }),\r\n ];\r\n break;\r\n case 2: { // Amount, Sell Date & Pay Method\r\n const { preTransactionDetails: { agentAddressChanged, beneficiaryAddressChanged } } = this.props;\r\n\r\n if (!partialWithdrawalMessageOpen) {\r\n let isDisabled = false;\r\n if (recipient === ACCOUNT_OWNER && paymentType === CHECK_PAYMENT) {\r\n isDisabled = agentAddressChanged;\r\n }\r\n else if (recipient === BENEFICIARY) {\r\n isDisabled = beneficiaryAddressChanged;\r\n }\r\n buttons = [\r\n cancelButton,\r\n backButton,\r\n nextButton(() => {\r\n this.formValidate(this.nextStepHandle);\r\n this.paymentTypeHandle();\r\n }, isDisabled)\r\n ];\r\n }\r\n break;\r\n }\r\n case 3: // Review, Terms & Conditions\r\n if (!showPrintButtonPage) {\r\n buttons = [\r\n cancelButton,\r\n backButton,\r\n \r\n {agreeButton}\r\n \r\n ];\r\n }\r\n else {\r\n buttons = [\r\n printButton,\r\n finishButton\r\n ];\r\n }\r\n\r\n break;\r\n default: break;\r\n }\r\n return buttons;\r\n }\r\n\r\n handleTermsChecked = () => {\r\n this.setState({ termsChecked: !this.state.termsChecked });\r\n }\r\n\r\n stepperContentCompose = () => {\r\n const {\r\n stepIndex,\r\n withdrawal,\r\n termsChecked,\r\n partialWithdrawalMessageOpen,\r\n partialBalanceWithdrawalOnly,\r\n fullBalanceWithdrawalOnly,\r\n showPrintButtonPage,\r\n nextRunStartDates,\r\n isSchoolRetained,\r\n isEditing,\r\n withdrawalScreenshot,\r\n accountIsUGMAUTMA,\r\n } = this.state;\r\n\r\n const {\r\n isProportional,\r\n preTransactionDetails,\r\n withdrawalVariables,\r\n usStates,\r\n } = this.props;\r\n\r\n let content;\r\n switch (stepIndex) {\r\n case 0: // Withdrawal Type\r\n content = (\r\n \r\n );\r\n break;\r\n case 1: // Recipient\r\n content = (\r\n \r\n );\r\n break;\r\n case 2: // Amount, Sell Date & Pay Method\r\n content = (\r\n <>\r\n \r\n {!partialWithdrawalMessageOpen && // disable payment method selection while partial withdrawal message is open\r\n this.handleElectronicSchoolDeliveryType(ElectronicSchoolDeliveryType)}\r\n ElectronicSchoolDeliveryType={this.state.withdrawal.paymentDeliveryType}\r\n />}\r\n \r\n );\r\n break;\r\n case 3: // Review, Terms & Conditions\r\n content = showPrintButtonPage ? (\r\n \r\n )\r\n :\r\n (\r\n \r\n );\r\n break;\r\n default:\r\n content =
    Something wrong! Missing step component.
    ;\r\n }\r\n return content;\r\n }\r\n\r\n handleWithdrawalRequest = () => {\r\n const {\r\n accountId,\r\n groupId,\r\n withdrawal: {\r\n amount,\r\n amountType,\r\n paymentAccount,\r\n ignoreDuplicates,\r\n leaveAccountOpen,\r\n frequency,\r\n recipientAddress,\r\n paymentType,\r\n paymentDeliveryType,\r\n recipient,\r\n sellDate,\r\n startDate,\r\n endDate,\r\n withdrawalType,\r\n },\r\n isEditing,\r\n } = this.state;\r\n\r\n const {\r\n getPreTransactionDetails,\r\n setWithdrawalSubmitted,\r\n notificationShow,\r\n createNewWithdrawal,\r\n updateWithdrawal,\r\n ADDRESS_TYPES,\r\n isProportional,\r\n selectedTransaction,\r\n } = this.props;\r\n\r\n const isFullBalance = amountType === FULL_BALANCE;\r\n\r\n let WithdrawalType = '';\r\n if (paymentType === ELECTRONICSCHOOL_PAYMENT) { // possible types = CHECK_PAYMENT, ELECTRONICSCHOOL_PAYMENT\r\n WithdrawalType = paymentDeliveryType === MAIL ? CHECK_PAYMENT : ELECTRONICSCHOOL_PAYMENT;\r\n }\r\n else { // possible types = CHECK_PAYMENT, ACH_PAYMENT, ACCESS_CARD_PAYMENT\r\n WithdrawalType = paymentType;\r\n }\r\n\r\n const withdrawalBody = {\r\n AccountId: accountId,\r\n Amount: amount,\r\n amountType,\r\n AccessCardId: paymentAccount.AccessCardId || null,\r\n BankAccountId: paymentAccount.BankAccountId || null,\r\n CloseAccount: amountType === PARTIAL_BALANCE ? false : !leaveAccountOpen, // Always leave account open when partial\r\n ExpenseType: withdrawalType,\r\n FullBalance: isFullBalance,\r\n IgnoreDuplicates: ignoreDuplicates,\r\n PayeeAddress: recipient === SCHOOL ? {\r\n StreetAddress1: sanitizeHTML(recipientAddress.school.street1),\r\n City: sanitizeHTML(recipientAddress.school.city),\r\n State: sanitizeHTML(recipientAddress.school.state.Code),\r\n PostalCode: sanitizeHTML(recipientAddress.school.postalCode.replace(/ /g, '')),\r\n Type: ADDRESS_TYPES.Mailing, // Forced for the time being\r\n Country: 'US', // Forced for the time being\r\n } : null,\r\n PayeeType: recipient,\r\n Proportional: isProportional,\r\n School: {\r\n Department: sanitizeHTML(recipientAddress.school.attn),\r\n SchoolId: parseInt(sanitizeHTML(recipientAddress.school.schoolId)),\r\n StudentNumber: sanitizeHTML(recipientAddress.school.studentIdNum),\r\n SchoolName: sanitizeHTML(recipientAddress.school.name),\r\n ElectronicSchoolPaymentSchoolId: sanitizeHTML(recipientAddress.school.ElectronicSchoolPaymentSchoolId),\r\n },\r\n WithdrawalType,\r\n };\r\n\r\n // for recurring trade date omitted, only start date is required, end date is optional\r\n switch (frequency) {\r\n case RECURRING:\r\n withdrawalBody.StartDate = dayjs(startDate).format('MM/DD/YYYY');\r\n withdrawalBody.ScheduleType = MONTHLY;\r\n withdrawalBody.DayOfMonth = startDate.date(); // this should be forced to 0-28\r\n if (endDate)\r\n withdrawalBody.EndDate = dayjs(endDate).format('MM/DD/YYYY');\r\n break;\r\n case ONE_TIME:\r\n withdrawalBody.TradeDate = dayjs(sellDate).format('MM/DD/YYYY');\r\n withdrawalBody.ScheduleType = ONE_TIME;\r\n break;\r\n default: // something wrong, do nothing, no dates included should throw api error\r\n }\r\n\r\n this.setState({ withdrawalRequestLoading: true });\r\n this.withdrawalStateSet('leaveAccountOpen', !withdrawalBody.CloseAccount);\r\n\r\n if (isEditing) {\r\n updateWithdrawal(selectedTransaction.WithdrawalScheduleId, withdrawalBody)\r\n .then((response) => {\r\n const data = response.payload.data;\r\n const dupeMsgs = Array.isArray(data) ? data.filter(message => message.MessageType === 3) : [];\r\n if (dupeMsgs.length > 0) {\r\n const duplicateWithdrawalMessage = dupeMsgs.map(message => message.Message).join('<\\br>');\r\n this.setState({\r\n withdrawalRequestLoading: false,\r\n duplicateWithdrawalModalOpen: true,\r\n duplicateWithdrawalMessage\r\n });\r\n }\r\n else {\r\n // successfull withdrawal\r\n notificationShow('Withdrawal updated.', 'success');\r\n this.props.getNotifications(); // refreshes app notifications\r\n window.scrollTo(0, 0);\r\n // update actual dates\r\n const actualStartDateDayOfMonth = data.DayOfMonth;\r\n const actualEndDate = data.EndDate;\r\n const actualSellDate = data.SellDate;\r\n const createdDate = data.CreatedDate;\r\n // tell withdrawal details component through redux that it was submitted in order to update available for withdrawal value\r\n setWithdrawalSubmitted(true);\r\n // show print and finish buttons and only after that reload group account info and (racing cond)\r\n this.setState({\r\n withdrawalRequestLoading: false,\r\n showPrintButtonPage: true,\r\n withdrawal: { ...this.state.withdrawal, actualStartDateDayOfMonth, actualEndDate, actualSellDate, createdDate },\r\n }, () => {\r\n getPreTransactionDetails(accountId, groupId);\r\n // now withdrawal state is set take a screenshot of it for possible unsaved changes prompt\r\n const withdrawalScreenshot = cloneDeep(this.state.withdrawal);\r\n this.setState({ withdrawalScreenshot });\r\n });\r\n }\r\n })\r\n .catch(() => this.setState({ withdrawalRequestLoading: false }));\r\n }\r\n else {\r\n createNewWithdrawal(withdrawalBody)\r\n .then((response) => {\r\n const data = response.payload.data;\r\n const dupeMsgs = Array.isArray(data) ? data.filter(message => message.MessageType === 3) : [];\r\n if (dupeMsgs.length > 0) {\r\n const duplicateWithdrawalMessage = dupeMsgs.map(message => message.Message).join('<\\br>');\r\n this.setState({\r\n withdrawalRequestLoading: false,\r\n duplicateWithdrawalModalOpen: true,\r\n duplicateWithdrawalMessage\r\n });\r\n }\r\n else {\r\n // Qualtrics Intercept for full balance Withdrawal. Launches survey \r\n if (isFullBalance) {\r\n try {\r\n document.cookie = 'withdrawalCloseAcct=true';\r\n window.QSI.API.run(); // stimulate Targeting.php\r\n window.QSI.API.unload();\r\n window.QSI.API.load();\r\n window.QSI.API.run(); // stimulate Targeting.php\r\n }\r\n catch (error) {\r\n // return null;\r\n }\r\n }\r\n\r\n // successfull withdrawal\r\n notificationShow('New Withdrawal scheduled.', 'success');\r\n this.props.getNotifications(); // refreshes app notifications\r\n window.scrollTo(0, 0);\r\n // update actual dates\r\n const actualStartDateDayOfMonth = data.DayOfMonth;\r\n const actualEndDate = data.EndDate;\r\n const actualSellDate = data.SellDate;\r\n const createdDate = data.CreatedDate;\r\n // tell widhrawal details component through redux that it was submitted in order to update available for withdrawal value\r\n setWithdrawalSubmitted(true);\r\n // show print and finish buttons and only after that reload group account info and (racing cond)\r\n this.setState({\r\n withdrawalRequestLoading: false,\r\n showPrintButtonPage: true,\r\n withdrawal: { ...this.state.withdrawal, actualStartDateDayOfMonth, actualEndDate, actualSellDate, createdDate },\r\n }, () => {\r\n getPreTransactionDetails(accountId, groupId);\r\n // now withdrawal state is set take a screenshot of it for possible unsaved changes prompt\r\n const withdrawalScreenshot = cloneDeep(this.state.withdrawal);\r\n this.setState({ withdrawalScreenshot });\r\n });\r\n }\r\n })\r\n .catch(() => this.setState({ withdrawalRequestLoading: false }));\r\n }\r\n }\r\n\r\n withdrawalStateSet = (key, value, callback = () => null) => {\r\n // if there is a racing condition use callback to execute after state is set\r\n const { step0ValidationHasRun, step1ValidationHasRun, step2ValidationHasRun, stepIndex } = this.state;\r\n\r\n this.setState(({ withdrawal }) => {\r\n return { withdrawal: { ...withdrawal, [key]: value } };\r\n }, () => {\r\n if (\r\n (stepIndex === 0 && step0ValidationHasRun) ||\r\n (stepIndex === 1 && step1ValidationHasRun) ||\r\n (stepIndex === 2 && step2ValidationHasRun)\r\n ) {\r\n this.formValidate();\r\n }\r\n callback();\r\n });\r\n }\r\n\r\n withdrawalTypeHandle = (e) => {\r\n const withdrawalType = e.target.value;\r\n this.withdrawalStateSet('withdrawalType', withdrawalType);\r\n if (withdrawalType === K12_ED)\r\n this.withdrawalStateSet('recipient', ACCOUNT_OWNER); // Recipient gets set to ACCOUNT_OWNER if \"K-12 Tution\" is selected\r\n }\r\n\r\n onChangeFrequencyHandler = (e, tabIndex) => {\r\n const { isEditing, partialBalanceWithdrawalOnly, fullBalanceWithdrawalOnly } = this.state;\r\n\r\n // one time vs recurring\r\n this.setState({ tabIndex });\r\n // always force user to choose withdrawal, amount, and payment type after frequency changed\r\n this.withdrawalStateSet('withdrawalType', '');\r\n this.withdrawalStateSet('paymentType', '');\r\n if (!(partialBalanceWithdrawalOnly || fullBalanceWithdrawalOnly) && !isEditing)\r\n this.withdrawalStateSet('amountType', '');\r\n\r\n switch (tabIndex) {\r\n case 0:\r\n this.withdrawalStateSet('frequency', ONE_TIME);\r\n break;\r\n case 1:\r\n this.withdrawalStateSet('frequency', RECURRING);\r\n break;\r\n default:\r\n // do nothing\r\n }\r\n }\r\n\r\n checkPartialWithdrawalAllowed(currentAccount, preTransactionDetails) {\r\n const {\r\n isEditing,\r\n withdrawal: { pendingAmount, },\r\n } = this.state;\r\n const {\r\n isProportional,\r\n } = this.props;\r\n\r\n const allowFullWithdrawalIndividual = currentAccount.AllowFullWithdrawal;\r\n const allowFullWithdrawalGroup = preTransactionDetails.AllowFullWithdrawal;\r\n\r\n let fullBalanceWithdrawalOnly = false;\r\n const partialBalanceWithdrawalOnly = (isProportional && !allowFullWithdrawalGroup) || (!this.props.isProportional && !allowFullWithdrawalIndividual);\r\n const accountIsUGMAUTMA = preTransactionDetails.AccountType === ACCOUNT_TYPE_UGMA_UTMA;\r\n\r\n if (this.state.showPrintButtonPage) {\r\n this.setState({\r\n partialWithdrawalMessageOpen: isEditing ? false : partialBalanceWithdrawalOnly, // lets disable partial balance only preflight when editing\r\n partialBalanceWithdrawalOnly,\r\n });\r\n }\r\n else {\r\n let amountType = null;\r\n const updatedWithdrawal = this.state.withdrawal;\r\n\r\n if (\r\n !isProportional &&\r\n currentAccount.availableForWithdrawalNum + pendingAmount > 0 &&\r\n currentAccount.availableForWithdrawalNum + pendingAmount < 1\r\n ) {\r\n // only full balance is available\r\n amountType = FULL_BALANCE;\r\n fullBalanceWithdrawalOnly = true;\r\n }\r\n else if (!isEditing) {\r\n amountType = partialBalanceWithdrawalOnly ? PARTIAL_BALANCE : '';\r\n }\r\n\r\n\r\n if (amountType)\r\n updatedWithdrawal.amountType = amountType;\r\n\r\n if (amountType === FULL_BALANCE) {\r\n updatedWithdrawal.amount = preTransactionDetails.totalAvailableForWithdrawalNum + (isEditing ? pendingAmount : 0); // this is because API would give 0 amount\r\n }\r\n\r\n this.setState({\r\n partialWithdrawalMessageOpen: isEditing ? false : partialBalanceWithdrawalOnly,\r\n partialBalanceWithdrawalOnly: isEditing ? false : partialBalanceWithdrawalOnly,\r\n fullBalanceWithdrawalOnly: isEditing ? false : fullBalanceWithdrawalOnly,\r\n withdrawal: updatedWithdrawal,\r\n accountIsUGMAUTMA\r\n });\r\n }\r\n }\r\n\r\n setEditWithdrawal(selectedTransaction, paymentAccounts) {\r\n // set values & disable features when editing\r\n const frequency = selectedTransaction.WithdrawalScheduleType === ONE_TIME ? ONE_TIME : RECURRING;\r\n // set Tabs\r\n const tabIndex = frequency === RECURRING ? 1 : 0;\r\n const paymentAccount = paymentAccounts.find(acct => acct.id === selectedTransaction.BankAccountId || acct.id === selectedTransaction.AccessCardId);\r\n\r\n // also CustomAmounts.length === 0 is true when proportional, using Proportional boolean property instead\r\n // if CustomAmounts.lengtth !=== 0 it is always === 1 and one time withdrawal (and also Proportional === false)\r\n let amountType;\r\n if (selectedTransaction.Proportional) {\r\n amountType = selectedTransaction.FullMarketValue ? FULL_BALANCE : PARTIAL_BALANCE;\r\n }\r\n else {\r\n const individualFullMarketValue = selectedTransaction.CustomAmounts.find(amount => amount.AccountId === this.state.accountId).FullMarketValue;\r\n amountType = individualFullMarketValue ? FULL_BALANCE : PARTIAL_BALANCE;\r\n }\r\n\r\n const withdrawalToEdit = {\r\n amount: selectedTransaction.Amount,\r\n pendingAmount: selectedTransaction.Amount,\r\n amountType,\r\n paymentAccount: paymentAccount ? paymentAccount : {},\r\n leaveAccountOpen: selectedTransaction.CustomAmounts.length > 0 ? !(selectedTransaction.CustomAmounts[0].FullMarketValue && selectedTransaction.CustomAmounts[0].CloseAccount) :\r\n !(selectedTransaction.FullMarketValue && selectedTransaction.CloseAccounts),\r\n frequency,\r\n ignoreDuplicates: false,\r\n paymentType: selectedTransaction.WithdrawalType,\r\n paymentDeliveryType: selectedTransaction.WithdrawalType === ELECTRONICSCHOOL_PAYMENT ? ELECTRONIC : MAIL,\r\n proportionalAmounts: [],\r\n recipientAddress: {\r\n agent: this.props.preTransactionDetails.agentAddress,\r\n beneficiary: this.props.preTransactionDetails.beneficiaryAddress,\r\n school: {\r\n attn: selectedTransaction.SchoolDepartment,\r\n name: selectedTransaction.SchoolName,\r\n street1: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.StreetAddress1 : '',\r\n street2: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.StreetAddress2 : '',\r\n street3: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.StreetAddress3 : '',\r\n city: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.City : '',\r\n state: { Code: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.State : '' },\r\n postalCode: selectedTransaction.SchoolAddress ? selectedTransaction.SchoolAddress.PostalCode : '',\r\n schoolId: selectedTransaction.SchoolId,\r\n fbo: this.props.preTransactionDetails.beneficiaryName,\r\n studentIdNum: selectedTransaction.StudentId,\r\n IsElectronicSchoolPaymentSchool: selectedTransaction.IsElectronicSchoolPaymentSchool,\r\n ElectronicSchoolPaymentSchoolId: selectedTransaction.ElectronicSchoolPaymentSchoolId,\r\n ElectronicSchoolInfo: selectedTransaction.ElectronicSchoolInfo,\r\n },\r\n },\r\n recipient: selectedTransaction.PayeeType,\r\n sellDate: selectedTransaction.SellDate ? dayjs(selectedTransaction.SellDate) : null,\r\n startDate: selectedTransaction.StartDate ? dayjs(selectedTransaction.StartDate) : null,\r\n endDate: selectedTransaction.EndDate ? dayjs(selectedTransaction.EndDate) : null,\r\n withdrawalType: selectedTransaction.ExpenseType,\r\n actualSellDate: selectedTransaction.SellDate ? dayjs(selectedTransaction.SellDate) : null,\r\n actualStartDateDayOfMonth: selectedTransaction.DayOfMonth,\r\n actualEndDate: selectedTransaction.EndDate ? dayjs(selectedTransaction.EndDate) : null,\r\n nextRunDate: selectedTransaction.NextRunDate,\r\n };\r\n\r\n this.setState({ withdrawal: withdrawalToEdit }, () => {\r\n this.setState({ tabIndex });\r\n if (this.props.isProportional) {\r\n this.proportionalAmountsSet(selectedTransaction.Amount);\r\n }\r\n });\r\n }\r\n\r\n handleCombinePaymentAccounts = () => {\r\n const { bankAccounts, accessCards } = this.props;\r\n const paymentAccounts = [...bankAccounts, ...accessCards].map(account => ({ ...account, id: account.BankAccountId || account.AccessCardId })); // combine payment accounts and create id property\r\n\r\n this.setState({ paymentAccounts });\r\n return paymentAccounts;\r\n }\r\n\r\n handleElectronicSchoolDeliveryType(ElectronicSchoolDeliveryType) {\r\n const errors = cloneDeep(this.state.errors);\r\n const withdrawal = cloneDeep(this.state.withdrawal);\r\n let newErrors = [];\r\n if (ElectronicSchoolDeliveryType === MAIL) {\r\n newErrors = errors.filter(error => error.key !== 'studentIdNum');\r\n withdrawal.paymentType = ELECTRONICSCHOOL_PAYMENT;\r\n withdrawal.paymentDeliveryType = MAIL;\r\n }\r\n else {\r\n newErrors = errors.filter(error => error.key === 'amount');\r\n const { school } = withdrawal.recipientAddress;\r\n school.street1 = '';\r\n school.city = '';\r\n school.state = '';\r\n school.postalCode = '';\r\n withdrawal.recipientAddress.school = school;\r\n withdrawal.paymentType = ELECTRONICSCHOOL_PAYMENT;\r\n withdrawal.paymentDeliveryType = ELECTRONIC;\r\n }\r\n this.setState({ withdrawal, errors: newErrors });\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n preTransactionDetails,\r\n withdrawalVariables,\r\n selectedTransaction,\r\n setWithdrawalSubmitted,\r\n } = this.props;\r\n\r\n const { accountId } = this.state;\r\n\r\n // reset for not submitted yet\r\n setWithdrawalSubmitted(false);\r\n\r\n // when props get changed asynchronously but component managed to get mounted after\r\n if (preTransactionDetails.AccountId === accountId) {\r\n const currentAccount = preTransactionDetails.groupAccounts.find(account => account.AccountId === accountId);\r\n this.checkPartialWithdrawalAllowed(currentAccount, preTransactionDetails);\r\n }\r\n\r\n const promises = [];\r\n promises.push(this.props.getScheduleRunDates(withdrawalVariables.startDates, MONTHLY));\r\n promises.push(this.props.getBankAccounts());\r\n promises.push(this.props.getAccessCards());\r\n\r\n Promise.all(promises)\r\n .then(([nextRunStartDatesAction]) => {\r\n const paymentAccounts = this.handleCombinePaymentAccounts();\r\n this.setState({\r\n nextRunStartDates: nextRunStartDatesAction.payload.data,\r\n });\r\n if (this.state.isEditing) {\r\n if (selectedTransaction.WithdrawalType === ELECTRONICSCHOOL_PAYMENT) {\r\n this.props.getElectronicSchoolPaymentSchool(selectedTransaction.ElectronicSchoolPaymentSchoolId)\r\n .then(response => {\r\n selectedTransaction.ElectronicSchoolInfo = response.payload.data;\r\n return this.setEditWithdrawal(selectedTransaction, paymentAccounts);\r\n });\r\n }\r\n else {\r\n return this.setEditWithdrawal(selectedTransaction, paymentAccounts);\r\n }\r\n }\r\n return;\r\n })\r\n .then(() => {\r\n // now withdrawal state is set take a screenshot of it for possible unsaved changes prompt\r\n const withdrawalScreenshot = cloneDeep(this.state.withdrawal);\r\n this.setState({ withdrawalScreenshot });\r\n })\r\n .finally(() => {\r\n this.setState({ initLoading: false });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const {\r\n preTransactionDetails,\r\n checkDisplayWarning,\r\n } = this.props;\r\n\r\n const {\r\n accountId,\r\n withdrawal: { frequency, startDate, sellDate }\r\n } = this.state;\r\n\r\n // if recipient address changed update withdrawal\r\n if (!isEqual(prevProps.preTransactionDetails.agentAddress, this.props.preTransactionDetails.agentAddress)) {\r\n this.withdrawalStateSet('recipientAddress', { ...this.state.withdrawal.recipientAddress, agent: this.props.preTransactionDetails.agentAddress });\r\n }\r\n\r\n // if bene address changed update withdrawal\r\n if (!isEqual(prevProps.preTransactionDetails.beneficiaryAddress, this.props.preTransactionDetails.beneficiaryAddress)) {\r\n this.withdrawalStateSet('recipientAddress', { ...this.state.withdrawal.recipientAddress, beneficiary: this.props.preTransactionDetails.beneficiaryAddress });\r\n }\r\n\r\n // component might be already mounted when props get changed asynchronously\r\n const prevPropsAccountId = prevProps.preTransactionDetails.AccountId;\r\n if (prevPropsAccountId > 0 && prevPropsAccountId === accountId) {\r\n const isRecurring = frequency === RECURRING;\r\n // check the tradecutoff date warning\r\n if (isRecurring) {\r\n if (startDate)\r\n checkDisplayWarning(startDate);\r\n }\r\n else if (sellDate) {\r\n checkDisplayWarning(sellDate);\r\n }\r\n\r\n const currentAccountPrev = prevProps.preTransactionDetails.groupAccounts.find(account => account.AccountId === accountId);\r\n const currentAccount = preTransactionDetails.groupAccounts.find(account => account.AccountId === accountId);\r\n if (\r\n (prevProps.preTransactionDetails.AllowFullWithdrawal !== preTransactionDetails.AllowFullWithdrawal ||\r\n currentAccountPrev.AllowFullWithdrawal !== currentAccount.AllowFullWithdrawal ||\r\n prevState.withdrawal.pendingAmount !== this.state.withdrawal.pendingAmount)\r\n ) {\r\n this.checkPartialWithdrawalAllowed(currentAccount, preTransactionDetails);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n isEditing,\r\n initLoading,\r\n stepIndex,\r\n tabIndex,\r\n completed,\r\n withdrawalRequestLoading,\r\n duplicateWithdrawalModalOpen,\r\n duplicateWithdrawalMessage,\r\n schoolSearchOpen,\r\n smallScreen,\r\n withdrawal,\r\n frequencyChangeDisabled,\r\n accountIsUGMAUTMA,\r\n savingPoaBankAgreement,\r\n poaBankModalOpen,\r\n poaBank,\r\n schoolSearchLoading,\r\n schools,\r\n } = this.state;\r\n\r\n const {\r\n loading,\r\n text: { Withdrawals }\r\n } = this.props;\r\n\r\n const isRecurring = withdrawal.frequency === RECURRING;\r\n const frequencyTabsDisabled = frequencyChangeDisabled || accountIsUGMAUTMA || isEditing || (withdrawal.amount > 0 && withdrawal.amount < 1);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {initLoading ? :\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n
    \r\n \r\n \r\n this.setState({ stepIndex: 0 })}\r\n disabled\r\n >\r\n {Withdrawals.step_labels[0]}\r\n \r\n \r\n \r\n this.setState({ stepIndex: 1 })}\r\n disabled\r\n >\r\n {Withdrawals.step_labels[1]}\r\n \r\n \r\n \r\n this.setState({ stepIndex: 2 })}\r\n disabled\r\n >\r\n {isRecurring ? Withdrawals.step_labels[2].recurring : Withdrawals.step_labels[2].onetime}\r\n \r\n \r\n \r\n this.setState({ stepIndex: 3 })}\r\n completed={completed[3]}\r\n disabled\r\n >\r\n {Withdrawals.step_labels[3]}\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n {loading ? : this.stepperContentCompose()}\r\n
    \r\n\r\n
    \r\n {this.stepperButtonsCompose()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n this.setState({ schoolSearchOpen: false })}\r\n open={schoolSearchOpen}\r\n schoolSelect={this.schoolSelect}\r\n schools={schools}\r\n />\r\n\r\n \r\n\r\n \r\n {Withdrawals.poa_bank_modal_body}\r\n {poaBank !== null &&

    {poaBank.BankName} {poaBank.BankAccountType}, {poaBank.MaskedBankAccountNumber}

    }\r\n
    \r\n )}\r\n onModalClose={this.cancelPoaBankAgreement}\r\n onConfirm={this.savePoaBankAgreement}\r\n isLoading={savingPoaBankAgreement}\r\n />\r\n\r\n this.setState({ duplicateWithdrawalModalOpen: false })}\r\n onConfirm={() => this.setState({ duplicateWithdrawalModalOpen: false, withdrawal: { ...withdrawal, ignoreDuplicates: true } }, () => this.handleWithdrawalRequest())}\r\n isLoading={withdrawalRequestLoading}\r\n />\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(connect(select, {\r\n getNotifications,\r\n getPreTransactionDetails,\r\n setWithdrawalSubmitted,\r\n getScheduleRunDates,\r\n getSchools,\r\n notificationShow,\r\n createNewWithdrawal,\r\n updateWithdrawal,\r\n getBankAccounts,\r\n getAccessCards,\r\n savePOABankSelectionAgreement,\r\n getElectronicSchoolPaymentSchool,\r\n})(LanguageHOC(NewWithdrawals)));","/*\r\n*\r\n* WithdrawalDetails Component\r\n*\r\n*/\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport LanguageHOC from 'utils/translations/LanguageHOC';\r\nimport {\r\n Card,\r\n InfoIcon,\r\n currencyFormatter,\r\n} from '@frontend/common';\r\nimport styles from './styles.module.scss';\r\n\r\nconst select = (state) => ({\r\n redState: state,\r\n withdrawalSubmitted: state.transactions.withdrawalSubmitted,\r\n preTransactionDetails: state.transactions.preTransactionDetails,\r\n selectedTransaction: state.transactions.selectedTransaction,\r\n ACHBankWithdrawalLanguage: state.static.environmentVars.ACHBankWithdrawalLanguage,\r\n});\r\n\r\nexport class WithdrawalDetails extends React.Component {\r\n\r\n static propTypes = {\r\n isProportional: PropTypes.bool.isRequired,\r\n loading: PropTypes.bool.isRequired,\r\n selectedTransaction: PropTypes.shape({\r\n Amount: PropTypes.number\r\n }),\r\n preTransactionDetails: PropTypes.shape({\r\n AccountType: PropTypes.string.isRequired,\r\n AccountNumber: PropTypes.number.isRequired,\r\n totalAvailableForWithdrawal: PropTypes.string.isRequired,\r\n totalAvailableForWithdrawalNum: PropTypes.number.isRequired,\r\n OptionName: PropTypes.string.isRequired,\r\n agentName: PropTypes.string.isRequired,\r\n beneficiaryName: PropTypes.string.isRequired,\r\n groupAccounts: PropTypes.arrayOf(PropTypes.shape({\r\n AccountId: PropTypes.number.isRequired,\r\n availableForWithdrawal: PropTypes.string.isRequired,\r\n availableForWithdrawalNum: PropTypes.number.isRequired,\r\n marketValue: PropTypes.string.isRequired,\r\n })),\r\n }).isRequired,\r\n withdrawalSubmitted: PropTypes.bool.isRequired,\r\n text: PropTypes.shape({\r\n Withdrawals: PropTypes.shape({\r\n msg_available_balance: PropTypes.func,\r\n })\r\n }).isRequired,\r\n ACHBankWithdrawalLanguage: PropTypes.string.isRequired,\r\n };\r\n\r\n state = {\r\n isEditing: window.location.href.includes('edit'),\r\n pendingAmount: 0,\r\n };\r\n\r\n componentDidMount() {\r\n this.setState({ pendingAmount: this.props.selectedTransaction.Amount });\r\n }\r\n\r\n render() {\r\n const { isProportional, loading, preTransactionDetails, withdrawalSubmitted, text, ACHBankWithdrawalLanguage, } = this.props;\r\n const { isEditing, pendingAmount } = this.state;\r\n\r\n const showPendingAmount = (isEditing && !withdrawalSubmitted);\r\n\r\n const sourceAccountId = parseInt(this.props.match.params.accountId);\r\n const groupAvailableForWithdrawal = currencyFormatter(preTransactionDetails.totalAvailableForWithdrawalNum + (showPendingAmount ? pendingAmount : 0)); // using available for withdrawal\r\n const currentAccount = this.props.preTransactionDetails.groupAccounts.find(account => account.AccountId === sourceAccountId);\r\n let accountMarketValue, accountAvailableForWithdrawal;\r\n if (currentAccount) {\r\n accountMarketValue = currentAccount.marketValue;\r\n accountAvailableForWithdrawal = currencyFormatter(currentAccount.availableForWithdrawalNum + (showPendingAmount ? pendingAmount : 0)); // using available for withdrawal\r\n }\r\n else {\r\n accountMarketValue = 0;\r\n accountAvailableForWithdrawal = 0;\r\n }\r\n\r\n return (\r\n
    \r\n {isProportional ?\r\n \r\n
    \r\n
    \r\n
    Account Owner
    \r\n {!loading && preTransactionDetails.agentName}\r\n
    \r\n
    \r\n
    Beneficiary
    \r\n {!loading && preTransactionDetails.beneficiaryName}\r\n
    \r\n
    \r\n
    Account Numbers
    \r\n {!loading && preTransactionDetails.groupAccounts.map(account =>
    {account.AccountNumber}
    )}\r\n
    \r\n
    \r\n
    Account Type
    \r\n {!loading && preTransactionDetails.AccountType}\r\n
    \r\n
    \r\n \r\n
    Total Available For Withdrawal
    \r\n \r\n
    \r\n {!loading && groupAvailableForWithdrawal}\r\n
    \r\n
    \r\n \r\n :\r\n \r\n
    \r\n
    \r\n
    Account Owner
    \r\n {!loading && preTransactionDetails.agentName}\r\n
    \r\n
    \r\n
    Beneficiary
    \r\n {!loading && preTransactionDetails.beneficiaryName}\r\n
    \r\n
    \r\n
    Account Number
    \r\n {!loading && preTransactionDetails.AccountNumber}\r\n
    \r\n
    \r\n
    Current Option
    \r\n {!loading && preTransactionDetails.OptionName}\r\n
    \r\n
    \r\n
    Account Type
    \r\n {!loading && preTransactionDetails.AccountType}\r\n
    \r\n
    \r\n
    Market Value
    \r\n {!loading && accountMarketValue}\r\n\r\n
    \r\n
    \r\n
    \r\n
    Available For Withdrawal
    \r\n \r\n
    \r\n
    {!loading && accountAvailableForWithdrawal}
    \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(connect(select, {})(LanguageHOC(WithdrawalDetails)));","/* eslint-disable newline-per-chained-call */\r\n/*\r\n*\r\n* Withdrawals Component\r\n*\r\n*/\r\nimport React from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport dayjs from 'dayjs';\r\nimport AccountsInGroup from './AccountsInGroup';\r\nimport NewWithdrawals from './NewWithdrawals';\r\nimport WithdrawalDetails from './WithdrawalDetails';\r\nimport {\r\n getPreTransactionDetails,\r\n} from 'components/Features/protected/Accounts/Transactions/actions';\r\nimport {\r\n getServerDateTime,\r\n} from 'components/AppRoot/StaticResources/actions';\r\nimport {\r\n Breadcrumbs,\r\n notificationShow,\r\n LoadingOverlay,\r\n} from '@frontend/common';\r\nimport LanguageHOC from 'utils/translations/LanguageHOC';\r\n\r\nimport styles from './styles.module.scss';\r\n\r\nconst select = (state) => ({\r\n accountList: state.accounts.accountList,\r\n preTransactionDetails: state.transactions.preTransactionDetails,\r\n withdrawalVariables: state.static.withdrawalVariables,\r\n serverDateTime: state.static.serverDateTime,\r\n selectedTransaction: state.transactions.selectedTransaction,\r\n});\r\n\r\nexport class Withdrawals extends React.Component {\r\n\r\n static propTypes = {\r\n accountList: PropTypes.array.isRequired,\r\n getPreTransactionDetails: PropTypes.func.isRequired,\r\n notificationShow: PropTypes.func.isRequired,\r\n preTransactionDetails: PropTypes.object.isRequired,\r\n withdrawalVariables: PropTypes.shape({\r\n sellDates: PropTypes.array,\r\n tradeCutoff: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object\r\n ]),\r\n tradeCutoffWarningTime: PropTypes.number,\r\n }).isRequired,\r\n getServerDateTime: PropTypes.func.isRequired,\r\n serverDateTime: PropTypes.string.isRequired,\r\n text: PropTypes.shape({\r\n Transactions: PropTypes.shape({\r\n nav_path: PropTypes.func,\r\n }),\r\n Accounts: PropTypes.shape({\r\n nav_path: PropTypes.string,\r\n nav_title: PropTypes.string,\r\n }),\r\n AccountDetails: PropTypes.shape({\r\n nav_path: PropTypes.func,\r\n nav_title: PropTypes.string,\r\n }),\r\n Withdrawals: PropTypes.shape({\r\n title_edit_withdrawal: PropTypes.string,\r\n title_new_withdrawal: PropTypes.string,\r\n })\r\n }).isRequired,\r\n selectedTransaction: PropTypes.object,\r\n };\r\n\r\n state = {\r\n accountId: this.props.match.params.accountId,\r\n accountsInGroupModalOpen: false,\r\n displayWarning: false,\r\n isProportional: false,\r\n loading: false,\r\n isEditing: window.location.href.includes('edit'),\r\n };\r\n\r\n checkDisplayWarning = (date) => {\r\n const { tradeCutoff, tradeCutoffWarningTime } = this.props.withdrawalVariables;\r\n\r\n // show warning only when user selects sell or start date to be on the same day and a half an hour before trade cutoff time\r\n const dateNow = dayjs(this.props.serverDateTime); // using the local(true) makes this now adjust the time based on any timezone\r\n const tradeCutoffMinusWarningTime = dayjs(tradeCutoff).subtract(dayjs(tradeCutoffWarningTime), 'minute');\r\n const isDateOnTheSameDayAsTradeCutoff = dayjs(tradeCutoff).isSame(dayjs(date), 'day');\r\n\r\n if (isDateOnTheSameDayAsTradeCutoff && dateNow.isBetween(tradeCutoffMinusWarningTime, tradeCutoff)) {\r\n this.setState({ displayWarning: true });\r\n }\r\n else {\r\n this.setState({ displayWarning: false });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n match: { params },\r\n getPreTransactionDetails,\r\n selectedTransaction,\r\n } = this.props;\r\n\r\n const promises = [];\r\n\r\n // get current server MST datetime to use for displaying cutoff warning banner\r\n promises.push(this.props.getServerDateTime());\r\n\r\n // at this time selected transaction should be in redux\r\n if (this.state.isEditing)\r\n this.setState({ isProportional: selectedTransaction.Proportional });\r\n\r\n // This needs to be called each time withdrawal transactions starts to get updated info (for example scheduled transaction).\r\n promises.push(getPreTransactionDetails(params.accountId, params.groupId)\r\n .then(() => {\r\n if (this.props.preTransactionDetails.groupAccounts.length > 1) {\r\n this.setState({ accountsInGroupModalOpen: true });\r\n }\r\n }));\r\n\r\n this.setState({ loading: true });\r\n Promise.all(promises).finally(() => this.setState({ loading: false }));\r\n }\r\n\r\n render() {\r\n const { isEditing, displayWarning, isProportional, loading, accountsInGroupModalOpen, accountId } = this.state;\r\n const { preTransactionDetails, withdrawalVariables, text } = this.props;\r\n // To do proportional we need at least 2 accounts and all non zero\r\n const proportionalDisabled = preTransactionDetails.groupAccounts.length < 2 || preTransactionDetails.groupAccounts.filter(account => account.availableForWithdrawalNum === 0).length > 0;\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n {(displayWarning && !loading) ?\r\n
    \r\n {text.Withdrawals.cutoff_warning(dayjs(withdrawalVariables.tradeCutoff).format('h:mm A'))} {/* eslint-disable-line */}\r\n
    \r\n :\r\n null\r\n }\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {!isEditing &&\r\n this.setState({ accountsInGroupModalOpen: false })}\r\n onProportionalSelect={() => this.setState({ accountsInGroupModalOpen: false, isProportional: true })}\r\n groupAccounts={preTransactionDetails.groupAccounts}\r\n proportionalDisabled={proportionalDisabled}\r\n />\r\n }\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(connect(select, {\r\n getPreTransactionDetails,\r\n notificationShow,\r\n getServerDateTime,\r\n})(LanguageHOC(Withdrawals)));","/*\n*\n* Step1Amount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport dayjs from 'dayjs';\nimport parse from 'html-react-parser';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { verifyBirthdate } from '../../actions';\nimport {\n currencyFormatter,\n CurrencyInput,\n DatePicker,\n LoadingOverlay,\n} from '@frontend/common';\nimport {\n Button,\n Collapse,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n environmentVars: state.static.environmentVars,\n preTransactionDetails: state.transactions.preTransactionDetails,\n});\n\n\nexport class Step1Amount extends React.Component {\n\n static propTypes = {\n environmentVars: PropTypes.shape({\n DisbursementSignatureGuaranteeAmount: PropTypes.number,\n MaximumAge: PropTypes.number,\n MinimumOnlineWithdrawalAmount: PropTypes.number,\n }).isRequired,\n nextClickHandle: PropTypes.func.isRequired,\n preTransactionDetails: PropTypes.shape({\n AccountId: PropTypes.number,\n AgentId: PropTypes.number,\n AllowFullWithdrawal: PropTypes.bool,\n BeneficiaryId: PropTypes.number,\n totalAvailableForWithdrawal: PropTypes.string,\n totalAvailableForWithdrawalNum: PropTypes.number,\n totalMarketValueNum: PropTypes.number,\n totalAvailableBalanceNumber: PropTypes.number,\n }).isRequired,\n renderCancelButton: PropTypes.func.isRequired,\n setWithdrawalInfo: PropTypes.func.isRequired,\n text: PropTypes.shape({\n WithdrawalRequests: PropTypes.shape({\n btn_next: PropTypes.string,\n err_max_amount: PropTypes.func.isRequired,\n err_min_amount: PropTypes.func.isRequired,\n err_required_field: PropTypes.string,\n err_selection_required: PropTypes.string,\n head_amount: PropTypes.string,\n lbl_birthdate: PropTypes.string,\n lbl_full_balance: PropTypes.string,\n lbl_partial_balance: PropTypes.string,\n text_3rd_party: PropTypes.string,\n text_full_balance_info: PropTypes.string,\n }),\n Withdrawals: PropTypes.shape({\n errors: PropTypes.shape({\n max_withdrawal: PropTypes.func,\n }),\n step0_amount_date: PropTypes.object,\n }),\n }).isRequired,\n verifyBirthdate: PropTypes.func.isRequired,\n withdrawalInfo: PropTypes.shape({\n Amount: PropTypes.string,\n BeneficiaryBirthdate: PropTypes.string,\n IsFullBalance: PropTypes.string,\n }).isRequired,\n };\n\n state = {\n Amount: this.props.withdrawalInfo.Amount,\n BeneficiaryBirthdate: this.props.withdrawalInfo.BeneficiaryBirthdate,\n IsFullBalance: this.props.withdrawalInfo.IsFullBalance,\n formErrors: {},\n isLoading: false,\n partialWithdrawalWarningShow: false,\n };\n\n amountHandle = value => {\n this.setState({\n Amount: value,\n formErrors: {\n ...this.state.formErrors,\n Amount: '',\n }\n }, () => {\n const { Amount, IsFullBalance, BeneficiaryBirthdate } = this.state;\n this.props.setWithdrawalInfo({\n Amount,\n BeneficiaryBirthdate: dayjs(BeneficiaryBirthdate).format('MM/DD/YYYY'),\n IsFullBalance,\n });\n });\n }\n\n amountTypeSet = e => {\n const IsFullBalance = e.target.value === 'true';\n\n this.setState({\n Amount: IsFullBalance ? this.props.preTransactionDetails.totalAvailableForWithdrawalNum : '',\n IsFullBalance: e.target.value,\n formErrors: {\n ...this.state.formErrors,\n IsFullBalance: '',\n }\n }, () => {\n const { Amount, IsFullBalance, BeneficiaryBirthdate } = this.state;\n this.props.setWithdrawalInfo({\n Amount,\n BeneficiaryBirthdate: dayjs(BeneficiaryBirthdate).format('MM/DD/YYYY'),\n IsFullBalance,\n });\n });\n }\n\n birthdateHandle = e => {\n this.setState({\n BeneficiaryBirthdate: e.target.value,\n formErrors: {\n ...this.state.formErrors,\n BeneficiaryBirthdate: '',\n }\n }, () => {\n const { Amount, IsFullBalance, BeneficiaryBirthdate } = this.state;\n this.props.setWithdrawalInfo({\n Amount,\n BeneficiaryBirthdate: dayjs(BeneficiaryBirthdate).format('MM/DD/YYYY'),\n IsFullBalance,\n });\n });\n }\n\n birthdateVerify = () => {\n const { AccountId, AgentId, BeneficiaryId } = this.props.preTransactionDetails;\n\n const authInfo = {\n AccountId,\n AgentId,\n BeneficiaryBirthdate: dayjs(this.state.BeneficiaryBirthdate).format('MM/DD/YYYY'),\n BeneficiaryId,\n };\n\n this.setState({ isLoading: true });\n\n this.props.verifyBirthdate(authInfo)\n .then(() => this.nextHandle())\n .catch(err => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n BeneficiaryBirthdate: parse(err.payload.data[0].Message),\n },\n isLoading: false,\n });\n });\n }\n\n formValidate = e => {\n e.preventDefault();\n\n const { Amount, BeneficiaryBirthdate, IsFullBalance } = this.state;\n const { environmentVars: { DisbursementSignatureGuaranteeAmount, MinimumOnlineWithdrawalAmount }, preTransactionDetails: { totalAvailableForWithdrawal, totalAvailableForWithdrawalNum }, text: { WithdrawalRequests, Withdrawals } } = this.props;\n const formErrors = {};\n\n if (IsFullBalance === '') { // neither full balance or partial was selected\n formErrors.IsFullBalance = WithdrawalRequests.err_selection_required;\n }\n if (IsFullBalance === 'false') { // partial withdrawal errors\n if (!Amount) { // no amount has been entered\n formErrors.Amount = WithdrawalRequests.err_required_field;\n }\n if (parseInt(Amount) < MinimumOnlineWithdrawalAmount) { // amount is less than minimum\n formErrors.Amount = WithdrawalRequests.err_min_amount(currencyFormatter(MinimumOnlineWithdrawalAmount));\n }\n if (parseInt(Amount) > totalAvailableForWithdrawalNum) { // amount is greater than total available\n formErrors.Amount = WithdrawalRequests.err_max_amount(totalAvailableForWithdrawal);\n }\n if (parseInt(Amount) >= DisbursementSignatureGuaranteeAmount) { // amount is equal to or greater than $75k\n formErrors.Amount = Withdrawals.errors.max_withdrawal(DisbursementSignatureGuaranteeAmount);\n }\n }\n if (!BeneficiaryBirthdate) { // no birthdate was entered\n formErrors.BeneficiaryBirthdate = WithdrawalRequests.err_required_field;\n }\n if (Object.keys(formErrors).length === 0 || Object.values(formErrors).every(err => err === '')) { // if form is valid, check bday against API\n this.birthdateVerify();\n }\n\n this.setState({ formErrors });\n }\n\n nextHandle = () => {\n const { Amount, IsFullBalance, BeneficiaryBirthdate } = this.state;\n\n this.props.setWithdrawalInfo({\n Amount,\n BeneficiaryBirthdate: dayjs(BeneficiaryBirthdate).format('MM/DD/YYYY'),\n IsFullBalance,\n });\n this.props.nextClickHandle();\n }\n\n componentDidMount() {\n const { preTransactionDetails: { AllowFullWithdrawal }, withdrawalInfo: { Amount, BeneficiaryBirthdate, IsFullBalance } } = this.props;\n this.setState({\n Amount,\n BeneficiaryBirthdate,\n IsFullBalance: AllowFullWithdrawal ? IsFullBalance : 'false',\n partialWithdrawalWarningShow: !AllowFullWithdrawal,\n });\n }\n\n render() {\n const { Amount, BeneficiaryBirthdate, formErrors, IsFullBalance, isLoading, partialWithdrawalWarningShow } = this.state;\n const { environmentVars: { DisbursementSignatureGuaranteeAmount, MaximumAge }, preTransactionDetails, text: { WithdrawalRequests, Withdrawals } } = this.props;\n const availableBalanceIsMoreThanMax = preTransactionDetails.totalAvailableForWithdrawalNum > DisbursementSignatureGuaranteeAmount;\n const areThereUncollectedFunds = preTransactionDetails.totalMarketValueNum > preTransactionDetails.totalAvailableBalanceNumber;\n\n return (\n
    \n {partialWithdrawalWarningShow ?\n
    \n {Withdrawals.step0_amount_date.partial_balance.title}\n {availableBalanceIsMoreThanMax ?\n

    {Withdrawals.step0_amount_date.partial_balance.more_than_max_p_long}

    \n :\n

    {Withdrawals.step0_amount_date.partial_balance.more_than_max_p_short}

    \n }\n
      \n
    • {Withdrawals.step0_amount_date.partial_balance.listItem1}
    • \n {areThereUncollectedFunds &&
    • {Withdrawals.step0_amount_date.partial_balance.uncollected_funds_text}
    • }\n {availableBalanceIsMoreThanMax &&
    • {parse(Withdrawals.step0_amount_date.partial_balance.html_listItem2_more_than_max(currencyFormatter(DisbursementSignatureGuaranteeAmount)))}
    • }\n
    \n this.setState({ partialWithdrawalWarningShow: false })}\n style={{ marginTop: '12px' }}\n variant='text'\n color='primary'\n >\n {Withdrawals.step0_amount_date.continue_btn_label}\n \n
    \n :\n \n \n \n {preTransactionDetails.AllowFullWithdrawal && (\n <>\n }\n label={WithdrawalRequests.lbl_full_balance}\n />\n }\n label={WithdrawalRequests.lbl_partial_balance}\n />\n {formErrors.IsFullBalance && {formErrors.IsFullBalance}}\n \n )}\n \n \n\n \n this.setState({ Amount: value, formErrors: { ...this.state.formErrors, Amount: '' } })}\n style={{ alignSelf: 'start', maxWidth: '300px' }}\n value={Amount}\n variant='filled'\n />\n \n\n this.birthdateHandle({ target: { name: 'BeneficiaryBirthdate', value: e ? e.toDate() : e } })}\n openTo='year'\n sx={{ marginTop: '15px', maxWidth: '300px' }}\n value={BeneficiaryBirthdate}\n />\n\n
    \n {this.props.renderCancelButton()}\n \n \n {WithdrawalRequests.btn_next}\n \n \n
    \n
    \n }\n
    \n );\n }\n}\n\n\nexport default connect(select, {\n verifyBirthdate,\n})(LanguageHOC(Step1Amount));\n","/*\n*\n* Step2Recipient Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport School from 'components/Features/protected/Accounts/Transactions/Withdrawals/NewWithdrawals/StepComponents/School';\nimport { getSchools } from 'components/Features/protected/Accounts/Transactions/actions';\nimport SchoolSearch from '../../SchoolSearch';\nimport { Button } from '@mui/material';\nimport * as validator from 'utils/helpers/form_validation';\nimport { sanitizeHTML } from 'utils/helpers/sanitation';\n\nimport { properCase } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n preTransactionDetails: state.transactions.preTransactionDetails,\n usStates: state.static.usStates,\n});\n\nconst BLANK_SCHOOL = {\n attn: '',\n city: '',\n fbo: '',\n postalCode: '',\n schoolId: '',\n state: { Code: '' },\n street1: '',\n street2: '',\n street3: '',\n studentIdNum: '',\n};\n\nexport class Step2Recipient extends React.Component {\n static propTypes = {\n beneficiaryName: PropTypes.string.isRequired,\n getSchools: PropTypes.func.isRequired,\n nextClickHandle: PropTypes.func.isRequired,\n preTransactionDetails: PropTypes.shape({\n beneficiaryName: PropTypes.string,\n schoolAddresses: PropTypes.array,\n }).isRequired,\n renderBackButton: PropTypes.func.isRequired,\n renderCancelButton: PropTypes.func.isRequired,\n setWithdrawalInfo: PropTypes.func.isRequired,\n text: PropTypes.shape({\n WithdrawalRequests: PropTypes.shape({\n btn_next: PropTypes.string,\n err_field_required: PropTypes.string,\n err_school_required: PropTypes.string,\n }),\n }),\n usStates: PropTypes.array.isRequired,\n withdrawalInfo: PropTypes.shape({\n PayeeAddressLine1: PropTypes.string,\n PayeeAddressLine2: PropTypes.string,\n PayeeCity: PropTypes.string,\n PayeeState: PropTypes.string,\n PayeeZipCode: PropTypes.string,\n SchoolDepartment: PropTypes.string,\n SchoolId: PropTypes.string,\n SchoolName: PropTypes.string,\n StudentNumber: PropTypes.string,\n }).isRequired,\n };\n\n state = {\n formErrors: {\n schoolError: '',\n street1Error: '',\n cityError: '',\n stateError: '',\n postalCodeError: '',\n attnError: '',\n studentIdNumError: '',\n },\n loading: false,\n school: {\n attn: this.props.withdrawalInfo.SchoolDepartment,\n city: this.props.withdrawalInfo.PayeeCity,\n fbo: this.props.beneficiaryName,\n name: this.props.withdrawalInfo.SchoolName,\n postalCode: this.props.withdrawalInfo.PayeeZipCode,\n schoolId: this.props.withdrawalInfo.SchoolId,\n state: { Code: this.props.withdrawalInfo.PayeeState },\n street1: this.props.withdrawalInfo.PayeeAddressLine1,\n street2: this.props.withdrawalInfo.PayeeAddressLine2,\n studentIdNum: this.props.withdrawalInfo.StudentNumber,\n IsElectronicSchoolPaymentSchool: false,\n ElectronicSchoolPaymentSchoolId: '',\n },\n schools: [],\n schoolSearchOpen: false,\n };\n\n addressHandle = (e, fieldName) => {\n if (e !== undefined) {\n let formErrors = {\n ...this.state.formErrors,\n [`${fieldName}Error`]: '',\n };\n let value;\n if (fieldName === 'postalCode') {\n value = e.value;\n formErrors = {\n ...this.state.formErrors,\n postalCodeError: '',\n };\n }\n else {\n value = e.target.value;\n }\n\n this.setState({\n formErrors,\n school: {\n ...this.state.school,\n [fieldName]: value\n }\n });\n }\n }\n\n formValidate = () => {\n const formErrors = {};\n const { school } = this.state;\n const { err_school_required, } = this.props.text.WithdrawalRequests;\n\n formErrors.cityError = validator.cityValidator(school.city.trim());\n formErrors.postalCodeError = validator.postalCodeValidator(school.postalCode.trim());\n formErrors.schoolError = school.name.length < 1 ? err_school_required : '';\n formErrors.stateError = validator.stateValidator(school.state.Code);\n formErrors.street1Error = validator.street1Validator(school.street1.trim());\n formErrors.attnError = validator.schoolAttnValidator(school.attn || '');\n formErrors.studentIdNumError = validator.alphaNumericOnlyValidator(school.studentIdNum);\n\n this.setState({ formErrors });\n\n return Object.keys(formErrors).length === 0 || Object.values(formErrors).every(err => err === '');\n }\n\n nextHandle = e => {\n e.preventDefault();\n if (this.formValidate()) {\n const { school } = this.state;\n\n this.props.setWithdrawalInfo({\n PayeeAddressLine1: sanitizeHTML(school.street1),\n PayeeAddressLine2: sanitizeHTML(school.street2),\n PayeeCity: sanitizeHTML(school.city),\n PayeeState: sanitizeHTML(school.state.Code),\n PayeeZipCode: sanitizeHTML(school.postalCode),\n SchoolDepartment: sanitizeHTML(school.attn),\n SchoolId: sanitizeHTML(school.schoolId),\n SchoolName: sanitizeHTML(school.name),\n StudentNumber: school.studentIdNum ? sanitizeHTML(school.studentIdNum.trim()) : '', // remove trailing spaces for student id\n });\n this.props.nextClickHandle();\n }\n\n }\n\n schoolSearchHandle = () => {\n this.setState({ loading: true, schoolSearchOpen: true });\n this.props.getSchools()\n .then(response => {\n const data = response.payload.data;\n let id = -1;\n if (data && data.length > 0) {\n const schools = data.map(school => {\n ++id;\n return {\n id,\n attn: school.SchoolDepartment,\n fbo: school.beneficiaryName,\n postalCode: '',\n street1: '',\n street2: '',\n city: '',\n fafsaId: school.Code,\n name: properCase(school.Name),\n schoolId: school.CollegeId.toString(),\n state: '',\n IsElectronicSchoolPaymentSchool: false,\n };\n });\n this.setState({ schools });\n }\n })\n .finally(() => this.setState({ loading: false }));\n }\n\n schoolSelect = schoolId => {\n const { preTransactionDetails: { beneficiaryName, schoolAddresses } } = this.props;\n const { schools } = this.state;\n if (schools?.find(address => address.schoolId === schoolId)) {\n const school = schools.find(school => school.schoolId === schoolId);\n school.fbo = beneficiaryName;\n school.beneficiaryName = beneficiaryName;\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n schoolError: '',\n },\n school,\n });\n }\n else {\n const school = schoolAddresses.find(school => school.schoolId === schoolId);\n this.setState({\n formErrors: {\n schoolError: '',\n },\n school: {\n ...BLANK_SCHOOL,\n fbo: beneficiaryName,\n beneficiaryName,\n name: school.name,\n schoolId,\n IsElectronicSchoolPaymentSchool: false,\n }\n });\n }\n\n this.setState({ schoolSearchOpen: false }, () => {\n const { school } = this.state;\n this.props.setWithdrawalInfo({\n PayeeAddressLine1: sanitizeHTML(school.street1),\n PayeeAddressLine2: sanitizeHTML(school.street2),\n PayeeCity: sanitizeHTML(school.city),\n PayeeState: sanitizeHTML(school.state.Code),\n PayeeZipCode: sanitizeHTML(school.postalCode),\n SchoolDepartment: sanitizeHTML(school.attn),\n SchoolId: sanitizeHTML(school.schoolId),\n SchoolName: sanitizeHTML(school.name),\n StudentNumber: school.studentIdNum ? sanitizeHTML(school.studentIdNum.trim()) : '', // remove trailing spaces for student id\n });\n });\n }\n\n stateSelectHandle = value => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n stateError: '',\n },\n school: {\n ...this.state.school,\n state: { Code: value }\n }\n }, () => {\n const { school } = this.state;\n this.props.setWithdrawalInfo({\n PayeeAddressLine1: sanitizeHTML(school.street1),\n PayeeAddressLine2: sanitizeHTML(school.street2),\n PayeeCity: sanitizeHTML(school.city),\n PayeeState: sanitizeHTML(school.state.Code),\n PayeeZipCode: sanitizeHTML(school.postalCode),\n SchoolDepartment: sanitizeHTML(school.attn),\n SchoolId: sanitizeHTML(school.schoolId),\n SchoolName: sanitizeHTML(school.name),\n StudentNumber: school.studentIdNum ? sanitizeHTML(school.studentIdNum.trim()) : '', // remove trailing spaces for student id\n });\n });\n }\n\n render() {\n const { text: { WithdrawalRequests }, usStates } = this.props;\n const { formErrors, loading, school, schools, schoolSearchOpen } = this.state;\n\n return (\n
    \n \n\n this.setState({ schoolSearchOpen: false })}\n open={schoolSearchOpen}\n schoolSelect={this.schoolSelect}\n schools={schools}\n />\n\n
    \n {this.props.renderCancelButton()}\n\n {this.props.renderBackButton()}\n\n \n {WithdrawalRequests.btn_next}\n \n
    \n \n );\n }\n}\n\n\nexport default connect(select, {\n getSchools,\n})(LanguageHOC(Step2Recipient));\n","/*\n*\n* Review Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { currencyFormatter } from '@frontend/common';\nimport styles from './styles.module.scss';\n\n\nexport function Review({ activeStep, beneficiaryName, withdrawalInfo, text: { WithdrawalRequests } }) {\n const IsFullBalance = withdrawalInfo.IsFullBalance === 'true';\n return (\n
    \n
    \n

    {IsFullBalance ? `${WithdrawalRequests.head_amount}*` : WithdrawalRequests.head_amount}

    \n

    {currencyFormatter(withdrawalInfo.Amount)}

    \n
    \n
    \n

    {WithdrawalRequests.head_recipient}

    \n

    {withdrawalInfo.SchoolName}

    \n {withdrawalInfo.SchoolDepartment &&

    {withdrawalInfo.SchoolDepartment}

    }\n

    {withdrawalInfo.PayeeAddressLine1}

    \n

    {withdrawalInfo.PayeeCity}, {withdrawalInfo.PayeeState} {withdrawalInfo.PayeeZipCode}

    \n

    {WithdrawalRequests.lbl_fbo} {beneficiaryName}

    \n {withdrawalInfo.StudentNumber &&

    {WithdrawalRequests.lbl_student_id}: {withdrawalInfo.StudentNumber}

    }\n
    \n {IsFullBalance && activeStep === 3 &&
    {WithdrawalRequests.text_full_balance_note}
    }\n
    \n );\n}\n\nReview.propTypes = {\n activeStep: PropTypes.number.isRequired,\n beneficiaryName: PropTypes.string.isRequired,\n withdrawalInfo: PropTypes.shape({\n Amount: PropTypes.string,\n IsFullBalance: PropTypes.string,\n PayeeAddressLine1: PropTypes.string,\n PayeeCity: PropTypes.string,\n PayeeState: PropTypes.string,\n PayeeZipCode: PropTypes.string,\n SchoolDepartment: PropTypes.string,\n SchoolName: PropTypes.string,\n StudentNumber: PropTypes.string,\n }).isRequired,\n text: PropTypes.shape({\n WithdrawalRequests: PropTypes.shape({\n head_amount: PropTypes.string,\n head_recipient: PropTypes.string,\n lbl_fbo: PropTypes.string,\n lbl_student_id: PropTypes.string,\n text_full_balance_note: PropTypes.string,\n }),\n }).isRequired,\n};\n\nexport default LanguageHOC(Review);","/*\n*\n* Step3Terms Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { Checkbox } from '@frontend/common';\nimport {\n Button,\n FormHelperText,\n} from '@mui/material';\nimport { LoadingOverlay } from '@frontend/common';\nimport Review from '../Review';\n\nimport styles from './styles.module.scss';\n\nexport class Step3Terms extends React.Component {\n static propTypes = {\n activeStep: PropTypes.number.isRequired,\n beneficiaryName: PropTypes.string.isRequired,\n loading: PropTypes.bool.isRequired,\n nextClickHandle: PropTypes.func.isRequired,\n renderBackButton: PropTypes.func.isRequired,\n renderCancelButton: PropTypes.func.isRequired,\n text: PropTypes.shape({\n WithdrawalRequests: PropTypes.shape({\n btn_next: PropTypes.string,\n head_terms: PropTypes.string,\n lbl_agree_terms: PropTypes.string,\n text_terms_p1: PropTypes.array,\n text_terms_p2: PropTypes.array,\n text_terms_p3: PropTypes.array,\n text_terms_p4: PropTypes.array,\n }),\n }).isRequired,\n withdrawalInfo: PropTypes.shape({\n Amount: PropTypes.string,\n PayeeAddressLine1: PropTypes.string,\n PayeeCity: PropTypes.string,\n PayeeState: PropTypes.string,\n PayeeZipCode: PropTypes.string,\n SchoolDepartment: PropTypes.string,\n SchoolName: PropTypes.string,\n StudentNumber: PropTypes.string,\n }).isRequired,\n };\n\n state = {\n termsChecked: false,\n };\n\n formValidate = () => {\n let termsError = '';\n\n if (!this.state.termsChecked) {\n termsError = 'You must agree to the terms.';\n }\n\n this.setState({ termsError });\n\n return !termsError;\n }\n\n nextHandle = e => {\n e.preventDefault();\n\n if (this.formValidate()) {\n this.props.nextClickHandle();\n }\n }\n\n render() {\n const { activeStep, beneficiaryName, loading, text: { WithdrawalRequests }, withdrawalInfo } = this.props;\n\n return (\n
    \n \n\n \n\n
    \n

    {WithdrawalRequests.head_terms}

    \n

    {WithdrawalRequests.text_terms_p1[0]}

    \n

    {WithdrawalRequests.text_terms_p1[1]}

    \n

    {WithdrawalRequests.text_terms_p1[2]}

    \n\n

    {WithdrawalRequests.text_terms_p2[0]}

    \n

    {WithdrawalRequests.text_terms_p2[1]}

    \n

    {WithdrawalRequests.text_terms_p2[2]}

    \n\n

    {WithdrawalRequests.text_terms_p3[0]}

    \n

    {WithdrawalRequests.text_terms_p3[1]}

    \n

    {WithdrawalRequests.text_terms_p3[2]}

    \n\n

    {WithdrawalRequests.text_terms_p4[0]}

    \n

    {WithdrawalRequests.text_terms_p4[1]}

    \n

    {WithdrawalRequests.text_terms_p4[2]}

    \n

    {WithdrawalRequests.text_terms_p4[3]}

    \n
    \n\n
    \n {WithdrawalRequests.lbl_agree_terms}
    }\n onChange={e => this.setState({ termsChecked: e.target.checked, termsError: '', })}\n />\n {this.state.termsError && {this.state.termsError}}\n\n
    \n {this.props.renderCancelButton()}\n\n {this.props.renderBackButton()}\n \n {WithdrawalRequests.btn_next}\n \n
    \n \n \n
    \n );\n }\n}\n\n\nexport default LanguageHOC(Step3Terms);\n","/*\n*\n* Step4Print Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { withRouter } from 'react-router-dom';\nimport dayjs from 'dayjs';\nimport Review from '../Review';\nimport { Button } from '@mui/material';\n\nimport styles from './styles.module.scss';\n\n\nexport function Step4Print({ activeStep, beneficiaryName, history, text: { WithdrawalRequests }, withdrawalInfo }) {\n return (\n
    \n

    {WithdrawalRequests.head_confirmation}

    \n

    {WithdrawalRequests.text_submitted}

    \n\n \n\n
    \n

    {dayjs(withdrawalInfo.CreatedDate).format('MM/DD/YYYY h:mm A')} {WithdrawalRequests.text_timezone}

    {/* eslint-disable-line */}\n

    {WithdrawalRequests.text_print_copy}

    \n
    \n\n\n
    \n window.print()}\n variant='text'\n fullWidth\n >\n {WithdrawalRequests.btn_print}\n \n\n history.goBack()}\n variant='contained'\n color='primary'\n fullWidth\n >\n {WithdrawalRequests.btn_finish}\n \n
    \n\n
    \n );\n}\n\nStep4Print.propTypes = {\n activeStep: PropTypes.number.isRequired,\n beneficiaryName: PropTypes.string.isRequired,\n withdrawalInfo: PropTypes.object.isRequired,\n text: PropTypes.shape({\n WithdrawalRequests: PropTypes.shape({\n btn_finish: PropTypes.string,\n btn_print: PropTypes.string,\n head_confirmation: PropTypes.string,\n text_print_copy: PropTypes.string,\n text_submitted: PropTypes.string,\n text_timezone: PropTypes.string,\n })\n }).isRequired,\n};\n\nexport default withRouter(LanguageHOC(Step4Print));","/*\n*\n* WithdrawalRequests Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter, Prompt } from 'react-router-dom';\nimport { isEqual, cloneDeep } from 'lodash';\nimport dayjs from 'dayjs';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n getPreTransactionDetails,\n requestWithdrawal,\n} from 'components/Features/protected/Accounts/Transactions/actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\nimport {\n Button,\n Paper,\n Step,\n StepButton,\n StepLabel,\n Stepper,\n} from '@mui/material';\nimport {\n Breadcrumbs,\n Card,\n InfoIcon,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\nimport Step1Amount from './Step1Amount';\nimport Step2Recipient from './Step2Recipient';\nimport Step3Terms from './Step3Terms';\nimport Step4Print from './Step4Print';\nimport { tabletWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n preTransactionDetails: state.transactions.preTransactionDetails,\n});\n\nexport class WithdrawalRequests extends React.Component {\n\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n getPreTransactionDetails: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n preTransactionDetails: PropTypes.shape({\n AccountNumber: PropTypes.number,\n AgentId: PropTypes.number,\n BeneficiaryId: PropTypes.number,\n OptionName: PropTypes.string,\n beneficiaryName: PropTypes.string,\n totalAvailableForWithdrawal: PropTypes.string,\n }).isRequired,\n requestWithdrawal: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n }),\n AccountDetails: PropTypes.shape({\n nav_path: PropTypes.func,\n nav_title: PropTypes.string,\n }),\n WithdrawalRequests: PropTypes.shape({\n msg_unsaved_changes: PropTypes.string,\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n head_account_details: PropTypes.string,\n head_amount: PropTypes.string,\n head_recipient: PropTypes.string,\n head_terms: PropTypes.string,\n lbl_confirmation: PropTypes.string,\n msg_withdrawal_requested: PropTypes.string,\n nav_title: PropTypes.string,\n text_account_num: PropTypes.string,\n text_available_balance_info: PropTypes.array,\n text_available_for_withdrawal: PropTypes.string,\n text_bene: PropTypes.string,\n text_current_opt: PropTypes.string,\n }),\n }).isRequired,\n }\n\n state = {\n activeStep: 0,\n loading: false,\n steps: [\n this.props.text.WithdrawalRequests.head_amount,\n this.props.text.WithdrawalRequests.head_recipient,\n this.props.text.WithdrawalRequests.head_terms,\n this.props.text.WithdrawalRequests.lbl_confirmation,\n ],\n withdrawalInfo: {\n AccountGroupId: this.props.match.params.groupId,\n AccountId: this.props.match.params.accountId,\n AgentId: this.props.preTransactionDetails.AgentId,\n Amount: '',\n BeneficiaryBirthdate: '',\n BeneficiaryId: this.props.preTransactionDetails.BeneficiaryId,\n CreatedDate: dayjs().toDate(), // API requires this property\n IsFullBalance: '',\n IsRecurring: false, // API requires this property\n LastModifiedDate: dayjs().toDate(), // API requires this property\n PayeeAddressLine1: '',\n PayeeAddressLine2: '',\n PayeeCity: '',\n PayeeState: '',\n PayeeZipCode: '',\n SchoolDepartment: '',\n SchoolId: '',\n SchoolName: '',\n SessionIdentifier: 'API requires this property', // literally can say anything here\n StudentNumber: '',\n },\n withdrawalInfoScreenshot: {\n AccountGroupId: this.props.match.params.groupId,\n AccountId: this.props.match.params.accountId,\n AgentId: this.props.preTransactionDetails.AgentId,\n Amount: '',\n BeneficiaryBirthdate: '',\n BeneficiaryId: this.props.preTransactionDetails.BeneficiaryId,\n CreatedDate: dayjs().toDate(), // API requires this property\n IsFullBalance: '',\n IsRecurring: false, // API requires this property\n LastModifiedDate: dayjs().toDate(), // API requires this property\n PayeeAddressLine1: '',\n PayeeAddressLine2: '',\n PayeeCity: '',\n PayeeState: '',\n PayeeZipCode: '',\n SchoolDepartment: '',\n SchoolId: '',\n SchoolName: '',\n SessionIdentifier: 'API requires this property', // literally can say anything here\n StudentNumber: '',\n }\n };\n\n displayUnsavedChangesPrompt = () => {\n return !this.state.loading && !isEqual(this.state.withdrawalInfo, this.state.withdrawalInfoScreenshot);\n }\n\n backClickHandle = () => {\n this.setState({ activeStep: this.state.activeStep - 1 });\n window.scrollTo(0, 0);\n }\n\n nextClickHandle = () => {\n if (this.state.activeStep === 2) {\n this.requestWithdrawal();\n }\n else {\n this.setState({ activeStep: this.state.activeStep + 1 });\n }\n window.scrollTo(0, 0);\n }\n\n renderBackButton = () => {\n return (\n \n {this.props.text.WithdrawalRequests.btn_back}\n \n );\n }\n\n renderCancelButton = () => {\n return (\n this.props.history.goBack()}\n variant='text'\n color='primary'\n >\n {this.props.text.WithdrawalRequests.btn_cancel}\n \n );\n }\n\n requestWithdrawal = () => {\n this.setState({ loading: true });\n this.props.requestWithdrawal(this.state.withdrawalInfo)\n .then((response) => {\n const data = response.payload.data;\n const withdrawalInfo = { ...this.state.withdrawalInfo, CreatedDate: data.CreatedDate };\n this.setState({\n activeStep: this.state.activeStep + 1,\n loading: false,\n withdrawalInfo,\n withdrawalInfoScreenshot: cloneDeep(withdrawalInfo),\n });\n this.props.notificationShow(this.props.text.WithdrawalRequests.msg_withdrawal_requested, 'success');\n this.props.getNotifications(); // refreshes app notifications\n window.scrollTo(0, 0);\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n setWithdrawalInfo = info => {\n this.setState({\n withdrawalInfo: {\n ...this.state.withdrawalInfo,\n ...info,\n }\n });\n }\n\n stepClickHandle = (index) => {\n this.setState({ activeStep: index });\n }\n\n stepperContentGet = () => {\n switch (this.state.activeStep) {\n case 0: return (\n \n );\n case 1: return (\n \n );\n case 2: return (\n \n );\n case 3: return (\n \n );\n default: return;\n }\n }\n\n componentDidMount() {\n const { accountId, groupId } = this.props.match.params;\n this.setState({ loading: true });\n\n if (Object.keys(getPreTransactionDetails).length === 0) {\n this.props.getPreTransactionDetails(accountId, groupId)\n .then(() => {\n this.setState({ loading: false });\n });\n }\n }\n\n render() {\n const { activeStep, loading, steps } = this.state;\n const {\n match, preTransactionDetails,\n text: { Accounts, AccountDetails, WithdrawalRequests }\n } = this.props;\n\n return (\n loading ?\n
    \n \n
    \n :\n \n
    \n \n
    \n \n
    \n

    {WithdrawalRequests.text_bene}

    \n

    {preTransactionDetails.beneficiaryName}

    \n\n

    {WithdrawalRequests.text_account_num}

    \n

    {preTransactionDetails.AccountNumber}

    \n\n

    {WithdrawalRequests.text_current_opt}

    \n

    {preTransactionDetails.OptionName}

    \n\n
    \n

    {WithdrawalRequests.text_available_for_withdrawal}

    \n {WithdrawalRequests.text_available_balance_info.map(line =>

    {line}

    )}
    } />\n
    \n

    {preTransactionDetails.totalAvailableForWithdrawal}

    \n
    \n \n
    \n \n parseInt(tabletWidth)} // Only uses alternativeLabel for desktop and tablet\n orientation={window.innerWidth < parseInt(tabletWidth) ? 'vertical' : 'horizontal'} // Vertical orientation for mobile\n className='hideOnPrint'\n >\n {steps.map((label, index) => (\n activeStep === 3 ? // on confirmation step, disables other steps from being clickable\n \n this.stepClickHandle(index)}>\n {label}\n \n \n :\n \n this.stepClickHandle(index)}>\n {label}\n \n \n ))}\n \n\n
    \n {this.stepperContentGet()}\n
    \n
    \n\n \n \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n getNotifications,\n getPreTransactionDetails,\n notificationShow,\n requestWithdrawal,\n})(LanguageHOC(WithdrawalRequests)));\n","/*\n*\n* Transactions Component\n*\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Route,\n Switch,\n withRouter\n} from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n getAccounts,\n} from 'components/Features/protected/Accounts/actions';\nimport {\n getGroupAccounts,\n} from 'components/Features/protected/Accounts/Transactions/actions';\nimport {\n getEnvironmentVars,\n getServerDateTime\n} from 'components/AppRoot/StaticResources/actions';\n\nimport OptionChanges from 'components/Features/protected/Accounts/Transactions/OptionChanges';\nimport Transfers from 'components/Features/protected/Accounts/Transactions/Transfers';\nimport Contributions from 'components/Features/protected/Accounts/Transactions/Contributions';\nimport Withdrawals from 'components/Features/protected/Accounts/Transactions/Withdrawals';\nimport WithdrawalRequests from 'components/Features/protected/Accounts/Transactions/WithdrawalRequests';\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport PageNotFound from 'components/Features/public/PageNotFound';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n environmentVars: state.static.environmentVars,\n groupAccountList: state.transactions.groupAccountList,\n preTransactionDetails: state.transactions.preTransactionDetails,\n serverDateTime: state.static.serverDateTime,\n webMessages: state.static.webMessages,\n});\n\nexport class Transactions extends React.Component {\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n accountList: PropTypes.array.isRequired,\n environmentVars: PropTypes.shape({\n OneTimeContributionTaxYearMessageDisplayDate: PropTypes.string,\n TransactionTaxYearMessageDisplayDate: PropTypes.string,\n }).isRequired,\n groupAccountList: PropTypes.array.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getGroupAccounts: PropTypes.func.isRequired,\n getEnvironmentVars: PropTypes.func.isRequired,\n getServerDateTime: PropTypes.func.isRequired,\n preTransactionDetails: PropTypes.shape({\n AgentId: PropTypes.number,\n }).isRequired,\n serverDateTime: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({\n accounts_path: PropTypes.string,\n }),\n Transactions: PropTypes.shape({\n edit_path: PropTypes.string,\n nav_path: PropTypes.func,\n new_path: PropTypes.string,\n TRANSACTION_TYPES: PropTypes.shape({\n OPTION_CHANGE: PropTypes.object,\n TRANSFER: PropTypes.object,\n CONTRIBUTION: PropTypes.object,\n WITHDRAWAL: PropTypes.object,\n WITHDRAWAL_REQUEST: PropTypes.object,\n }),\n transactions_path: PropTypes.string,\n withdrawal_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n loading: false,\n };\n\n componentDidMount() {\n window.scrollTo(0, 0);\n this.setState({ loading: true });\n Promise.all([\n this.props.accountList.length === 0 && this.props.getAccounts(),\n this.props.groupAccountList.length === 0 && this.props.getGroupAccounts(),\n this.props.getEnvironmentVars(),\n this.props.getServerDateTime(),\n ])\n .then(() => {\n this.setState({ loading: false });\n });\n }\n\n render() {\n const {\n accountList,\n match: { params },\n preTransactionDetails,\n webMessages,\n text: { Accounts, Transactions }\n } = this.props;\n const { loading } = this.state;\n \n const account = accountList.find(account => account.accountId === parseInt(params.accountId)); // retrieves account by accountId param\n const permissions = account ? account.permissions : {}; // sets permissions to empty object in case user enters invalid accountId into URL\n\n return (\n
    \n {this.props.accountList.length > 0 &&\n \n {permissions.WithdrawalRequest && ([\n (\n <>\n \n \n \n )}\n />\n ])}\n {permissions.Withdraw && ([\n (\n <>\n \n \n \n )}\n />,\n (\n <>\n \n \n \n )}\n />\n ])}\n {permissions.OptionChange && ([\n (\n <>\n \n \n \n )}\n />,\n (\n <>\n \n \n \n )}\n />\n ])}\n {permissions.Transfer && ([\n (\n <>\n \n \n \n )}\n />,\n (\n <>\n \n \n \n )}\n />\n ])}\n {permissions.Contribute && ([\n (\n <>\n \n \n \n )}\n />,\n (\n <>\n \n \n \n )}\n />\n ])}\n ,\n \n }\n
    \n );\n }\n}\n\nexport default withRouter(connect(select, {\n getAccounts,\n getGroupAccounts,\n getEnvironmentVars,\n getServerDateTime,\n})(LanguageHOC(Transactions)));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isEqual } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { TextField } from '@mui/material';\nimport { Modal } from '@frontend/common';\n\nimport { editNickName, getBankAccounts } from '../actions';\n\n// const select = (state) => ({\n// allowedBankHolders: state.payments.allowedBankHolders,\n// });\n\nexport class EditBankModal extends React.Component {\n\n static propTypes = {\n editNickName: PropTypes.func.isRequired,\n getBankAccounts: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n close: PropTypes.func.isRequired,\n isMobileView: PropTypes.bool.isRequired,\n bankAccount: PropTypes.object.isRequired,\n text: PropTypes.shape({\n EditBankModal: PropTypes.shape({\n btn_save_nickname: PropTypes.string,\n err_allowable_chars: PropTypes.string,\n lbl_nickname: PropTypes.string,\n title_modal: PropTypes.string,\n }),\n })\n }\n\n state = {\n formErrors: {},\n nickname: '',\n isSaving: false\n }\n\n onInputChange = e => {\n const val = e.target.value;\n this.setState({ nickname: val });\n }\n\n formValidate = () => {\n const { err_allowable_chars } = this.props.text.EditBankModal;\n const { nickname } = this.state;\n const formErrors = {};\n\n const regex = /^[A-Za-z0-9.\\s.,':#/-]+$/; // case insensitive, space, period, comma, single quote and hyphen.\n if (nickname && !regex.test(nickname)) {\n formErrors.nickname = err_allowable_chars;\n }\n\n this.setState({ formErrors });\n return Object.keys(formErrors).length === 0; // returns True or False whether form is valid\n }\n\n onFormSubmit() {\n if (this.formValidate()) {\n const { BankAccountId } = this.props.bankAccount;\n const { nickname } = this.state;\n this.setState({ isSaving: true });\n this.props.editNickName(BankAccountId, nickname)\n // refresh bank accounts so it has the latest bank nicknames\n .then(() => this.props.getBankAccounts())\n .then(() => this.setState({ isSaving: false }))\n .then(() => this.props.close())\n .catch(() => this.setState({ isSaving: false }));\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.bankAccount, this.props.bankAccount)\n && this.props.bankAccount.Nickname && this.props.bankAccount.Nickname.length > 0) {\n this.setState({ nickname: this.props.bankAccount.Nickname });\n }\n }\n\n render() {\n const { formErrors, isSaving, nickname } = this.state;\n const { open, close, isMobileView, text: { EditBankModal } } = this.props;\n return (\n this.onFormSubmit(),\n label: EditBankModal.btn_save_nickname,\n disabled: isSaving,\n loading: isSaving,\n },\n ]}\n >\n
    \n \n
    \n \n );\n }\n}\n\nexport default connect(null, { editNickName, getBankAccounts })(LanguageHOC(EditBankModal));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Drawer,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nLearnMore.propTypes = {\n environmentVars: PropTypes.shape({\n ACHBankWithdrawalLanguage: PropTypes.string,\n DisbursementSignatureGuaranteeAmount: PropTypes.number,\n DisbursementSignatureGuaranteeRollingDays: PropTypes.number,\n }).isRequired,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n BankAccountsLearnMore: PropTypes.shape({ \n head_title: PropTypes.string, \n text_info_1: PropTypes.string,\n text_info_2: PropTypes.string,\n text_info_bank_hold: PropTypes.func,\n text_info_3: PropTypes.string,\n text_info_4: PropTypes.array,\n text_info_5: PropTypes.string,\n text_info_6: PropTypes.func,\n text_info_7: PropTypes.string,\n text_info_8: PropTypes.string,\n })\n }).isRequired,\n};\n\nexport function LearnMore({ environmentVars, open, onClose, text: { BankAccountsLearnMore }, }) {\n\n\n const learnMoreInfo = () => (\n
    \n
    \n \n
    \n
    \n

    {BankAccountsLearnMore.head_title}

    \n
    \n {/* eslint-disable-next-line react/no-unescaped-entities */}\n

    {BankAccountsLearnMore.text_info_1}

    \n

    {BankAccountsLearnMore.text_info_2}

    \n

    {BankAccountsLearnMore.text_info_bank_hold(environmentVars.ACHBankWithdrawalLanguage)}

    \n

    {BankAccountsLearnMore.text_info_3}

    \n
      \n {BankAccountsLearnMore.text_info_4.map(line =>
    • {line}
    • )}\n
    \n\n

    {BankAccountsLearnMore.text_info_5}

    \n
      \n {BankAccountsLearnMore.text_info_6(environmentVars.DisbursementSignatureGuaranteeAmount, environmentVars.DisbursementSignatureGuaranteeRollingDays).map(line =>
    • {line}
    • )}\n
    \n\n

    {BankAccountsLearnMore.text_info_7}

    \n

    {BankAccountsLearnMore.text_info_8}

    \n
    \n
    \n );\n\n return (\n \n {learnMoreInfo()}\n \n );\n}\n\nexport default LanguageHOC(LearnMore);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n Typography,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function LearnMoreDrawer({ open, onClose, text: { AccessCardsLearnMore }, }) {\n\n const learnMore = () => (\n
    \n
    \n \n
    \n
    \n

    {AccessCardsLearnMore.title_learn_more}

    \n {AccessCardsLearnMore.text_faq.map((qa, qaIndex) => {\n return (\n \n keyboard_arrow_down}\n aria-controls='learn-more'\n id='learn-more'\n >\n {qa.question}\n \n \n {Array.isArray(qa.answer)\n ? qa.answer.map((answer, index) => (\n Array.isArray(answer)\n ? qaIndex !== 18\n ?
      {answer.map((subAnswer, index) =>
    • {subAnswer}
    • )}
    \n :
      {answer.map((subAnswer, index) =>
    1. {subAnswer}
    2. )}
    \n :

    {answer}

    \n ))\n : {qa.answer}}\n
    \n
    \n );\n })}\n

    {AccessCardsLearnMore.learn_more_footer}

    \n
    \n );\n\n return (\n \n {learnMore()}\n \n );\n}\n\nLearnMoreDrawer.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n AccessCardsLearnMore: PropTypes.shape({\n title_learn_more: PropTypes.string,\n text_faq: PropTypes.array,\n learn_more_footer: PropTypes.string,\n }),\n }),\n};\n\nexport default LanguageHOC(LearnMoreDrawer);","/*\n*\n* ValidationStart Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Modal,\n} from '@frontend/common';\n\n\nValidationStartModal.propTypes = {\n open: PropTypes.bool.isRequired,\n validationStarted: PropTypes.bool.isRequired,\n selectedBankAccount: PropTypes.object.isRequired,\n isLoading: PropTypes.bool.isRequired,\n startMicroDeposits: PropTypes.func.isRequired,\n handleGetBankAccounts: PropTypes.func.isRequired,\n handleButtonIsLoading: PropTypes.func.isRequired,\n handleShowValidationStart: PropTypes.func.isRequired,\n handleValidationStarted: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ValidationStart: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_begin: PropTypes.string,\n btn_done: PropTypes.string,\n head_validate: PropTypes.func,\n text_complete_to_verify: PropTypes.string,\n text_step_1: PropTypes.string,\n text_step_2: PropTypes.string,\n text_step_3: PropTypes.string,\n text_step_4: PropTypes.string,\n text_step_5: PropTypes.string,\n text_step_done: PropTypes.string,\n })\n })\n};\n\nexport function ValidationStartModal({ \n open, \n validationStarted, \n selectedBankAccount, \n isLoading, \n startMicroDeposits,\n handleGetBankAccounts,\n handleButtonIsLoading, \n handleShowValidationStart, \n handleValidationStarted, \n text : {\n ValidationStart,\n }\n}) {\n const actionButtons = !validationStarted ?\n [\n {\n label: ValidationStart.btn_begin,\n loading: isLoading,\n action: () => {\n handleButtonIsLoading();\n startMicroDeposits(selectedBankAccount.BankAccountId)\n .then(() => {\n handleGetBankAccounts();\n handleValidationStarted();\n handleButtonIsLoading();\n })\n .catch(() => {\n handleButtonIsLoading();\n });\n },\n buttonType: 'contained',\n }\n ] :\n [\n {\n label: ValidationStart.btn_done,\n action: () => handleShowValidationStart(),\n buttonType: 'contained',\n },\n ];\n \n return (\n handleShowValidationStart()}\n modal={false}\n maxWidth='md'\n fullWidth\n actionButtons={actionButtons}\n includeLeftCancelBtn={!validationStarted}\n >\n {!validationStarted ?\n (
    \n

    \n {ValidationStart.text_complete_to_verify}\n

    \n
      \n
    • {ValidationStart.text_step_1}
    • \n
    • {ValidationStart.text_step_2}
    • \n
        \n
      • {ValidationStart.text_step_3}
      • \n
      • {ValidationStart.text_step_4}
      • \n
      \n
    \n

    {ValidationStart.text_step_5}

    \n
    ) :\n (\n
    \n

    {ValidationStart.text_step_done}

    \n
    \n )\n }\n \n );\n}\n\nexport default LanguageHOC(ValidationStartModal);","/*\n*\n* ValidationFinishModal Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n FormHelperText,\n InputAdornment,\n} from '@mui/material';\nimport {\n Modal,\n BaseNumberInput,\n notificationShow,\n} from '@frontend/common';\nimport {\n confirmMicroDeposits,\n} from '../actions';\n\nimport styles from './styles.module.scss';\n\n\nexport class ValidationFinishModal extends React.Component {\n static propTypes = {\n open: PropTypes.bool.isRequired,\n handleShowValidationFinish: PropTypes.func.isRequired,\n selectedBankAccount: PropTypes.object.isRequired,\n handleGetBankAccounts: PropTypes.func.isRequired,\n confirmMicroDeposits: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ValidationFinish: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_validate: PropTypes.string,\n err_required: PropTypes.string,\n err_full_amount: PropTypes.string,\n head_validate: PropTypes.func,\n lbl_amount1: PropTypes.string,\n lbl_amount2: PropTypes.string,\n msg_validated: PropTypes.string,\n text_exceeded_attempts_error: PropTypes.string,\n text_match_error: PropTypes.func,\n text_validation_instructions: PropTypes.string,\n })\n })\n };\n\n state = {\n validationAmounts: {\n amount1: '',\n amount2: ''\n },\n validationValues: { // this is only for validation needs\n amount1: '',\n amount2: ''\n },\n formErrors: {},\n apiError: {},\n isValidating: false,\n attemptsRemaining: null,\n }\n\n onInputChange = (name, e) => {\n this.setState({\n validationAmounts: {\n ...this.state.validationAmounts,\n [name]: e.formattedValue,\n },\n validationValues: { // values needed for validation\n ...this.state.validationValues,\n [name]: e.value,\n },\n },() => this.formValidate(name));\n }\n\n formValidate = (name) => {\n const { err_required, err_full_amount } = this.props.text.ValidationFinish;\n const { validationValues } = this.state;\n const formErrors = {};\n\n if (name === 'amount1' || name === 'all') {\n if (validationValues.amount1.length < 2 && validationValues.amount1.length > 0) {\n formErrors.amount1 = err_full_amount;\n }\n if (!validationValues.amount1) {\n formErrors.amount1 = err_required;\n }\n }\n if (name === 'amount2' || name === 'all') {\n if (validationValues.amount2.length < 2 && validationValues.amount2.length > 0) {\n formErrors.amount2 = err_full_amount;\n }\n if (!validationValues.amount2) {\n formErrors.amount2 = err_required;\n }\n }\n \n if (name === 'all') {\n this.setState({\n formErrors,\n });\n return Object.keys(formErrors).length !== 0;\n }\n else {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n [name]: formErrors[name],\n },\n });\n }\n }\n\n closeForm = () => {\n setTimeout(() => { // timeout needed to clear state, due to input change getting called after from the CurrencyInput component\n this.setState({ \n validationAmounts: {\n amount1: '',\n amount2: ''\n },\n validationValues: { // this is only for validation needs\n amount1: '',\n amount2: ''\n },\n formErrors: {}, \n apiError: {},\n });\n }, 250);\n this.props.handleShowValidationFinish();\n }\n\n onFormSubmit = () => {\n const { \n selectedBankAccount, \n confirmMicroDeposits, \n handleGetBankAccounts,\n notificationShow,\n text: { ValidationFinish },\n } = this.props;\n const { validationAmounts } = this.state;\n\n if (this.formValidate('all')) {\n return; // has errors, stop the submit\n }\n\n this.setState({ isValidating: true });\n confirmMicroDeposits(selectedBankAccount.BankAccountId, validationAmounts)\n .then(({ payload: { data } }) => {\n const verificationResponse = data;\n const apiError = {};\n\n handleGetBankAccounts();\n \n if (verificationResponse) {\n this.closeForm();\n notificationShow(ValidationFinish.msg_validated, 'success');\n } \n else if (this.state.attemptsRemaining > 1) {\n apiError.didNotMatch = true;\n }\n else if (this.state.attemptsRemaining === 1) {\n apiError.validationAttemptsExceeded = true;\n }\n\n this.setState({ isValidating: false, apiError, attemptsRemaining: this.state.attemptsRemaining - 1, });\n })\n .catch(() => {\n this.setState({ isValidating: false });\n });\n }\n\n componentDidMount() {\n this.setState({ attemptsRemaining: this.props.selectedBankAccount.VerificationAttemptsRemaining });\n }\n\n render() {\n const { \n open, \n selectedBankAccount,\n text: { ValidationFinish }\n } = this.props;\n const { validationAmounts, isValidating, formErrors, apiError } = this.state;\n const pluralize = this.state.attemptsRemaining > 1;\n const actionButtons = this.state.attemptsRemaining === 0 ?\n [\n {\n label: ValidationFinish.btn_back,\n action: () => this.closeForm(),\n buttonType: 'contained',\n },\n ] :\n [\n {\n label: ValidationFinish.btn_validate,\n loading: isValidating,\n action: () => this.onFormSubmit(),\n buttonType: 'contained',\n }\n ];\n \n return (\n 0}\n >\n

    \n {ValidationFinish.text_validation_instructions}\n

    \n {this.state.attemptsRemaining !== 0 &&\n
    \n this.onInputChange('amount1', e)}\n errorText={formErrors.amount1}\n error={Boolean(formErrors.amount1)}\n disabled={isValidating}\n isNumericFormat={false} // only way to format this the way we wanted was to use the PatternFormat version\n InputProps={{\n startAdornment: $,\n }}\n inputProps={{\n maxLength: '5',\n format: '0.##',\n }}\n />\n this.onInputChange('amount2', e)}\n errorText={formErrors.amount2}\n error={Boolean(formErrors.amount2)}\n disabled={isValidating}\n isNumericFormat={false} // only way to format this the way we wanted was to use the PatternFormat version\n InputProps={{\n startAdornment: $,\n }}\n inputProps={{\n maxLength: '5',\n format: '0.##',\n }}\n />\n
    }\n\n {apiError.didNotMatch && \n {ValidationFinish.text_match_error(this.state.attemptsRemaining, pluralize)}\n }\n {apiError.validationAttemptsExceeded && \n {ValidationFinish.text_exceeded_attempts_error}\n }\n \n );\n }\n}\n\nexport default connect(null, { notificationShow, confirmMicroDeposits, })(LanguageHOC(ValidationFinishModal));","/*\n*\n* Payments Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport {\n Button,\n FormHelperText,\n Icon,\n Menu,\n MenuItem,\n Paper,\n Switch,\n} from '@mui/material';\nimport {\n notificationShow,\n ConfirmModal,\n Modal,\n sizify,\n IconBtnTooltip,\n} from '@frontend/common';\nimport SkeletonLoader from 'src/utils/components/SkeletonLoader';\nimport ThirdPartyWarningModal from 'components/AppRoot/Navigation/Sidenav/ThirtPartyWarningModal';\nimport {\n getBankAccounts,\n getAccessCards,\n getGroupedBankAccounts,\n getAllowedBankHolders,\n deleteBankAccount,\n startMicroDeposits,\n renewBankAccount,\n poaApproval,\n getAccessCardURL\n} from 'components/Features/protected/Payments/actions';\nimport { agentGet } from 'components/Features/protected/MyInfo/actions';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\n\nimport AddBankModal from './AddBankModal';\nimport EditBankModal from 'components/Features/protected/Payments/EditBankModal';\nimport BankAccountsLearnMore from './BankAccountsLearnMore';\nimport AccessCardsLearnMore from './AccessCardsLearnMore';\nimport ValidationStartModal from './ValidationStartModal';\nimport ValidationFinishModal from './ValidationFinishModal';\n\nimport { tabletWidth, mobileWidth } from 'utils/config/_sassconfig.scss';\nimport styles from './styles.module.scss';\n\nimport OpenCPScreenshot from './OpenCPScreenshot.png';\nconst OPENCP_URL = 'https://my529accesscard.com';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList,\n bankAccounts: state.payments.bankAccounts,\n accessCards: state.payments.accessCards,\n groupedBankAccounts: state.payments.groupedBankAccounts,\n claims: state.session.claims,\n agent: state.myInfo.agent,\n environmentVars: state.static.environmentVars,\n});\n\n///////////// CardWithTitle Common parts /////////////////\nexport function CardWithTitle({ children, paperProps, ...props }) {\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nexport function PaperTitle({ children }) {\n return (
    {children}
    );\n}\n\nexport function PaperBodyContainer({ children, padding }) {\n return (
    {children}
    );\n}\n\nexport function PaperBodySection({ children }) {\n return (
    {children}
    );\n}\n\nexport function PaperButtonsContainer({ children }) {\n return (
    {children}
    );\n}\n\nexport function PaperBodyDivider() {\n return (
    );\n}\n\nexport function PaperBodySectionLabels({ topLabel, bottomLabel }) {\n return (\n
    \n

    {topLabel}

    \n

    {bottomLabel}

    \n
    \n );\n}\n\nCardWithTitle.propTypes = {\n paperProps: PropTypes.object,\n};\n\nPaperBodyContainer.propTypes = {\n padding: PropTypes.string,\n};\n\nPaperBodySectionLabels.propTypes = {\n topLabel: PropTypes.string,\n bottomLabel: PropTypes.string.isRequired,\n};\n///////////// END CardWithTitle Common parts /////////////////\n\nexport class Payments extends React.Component {\n static propTypes = {\n accountList: PropTypes.array.isRequired,\n bankAccounts: PropTypes.arrayOf(\n PropTypes.shape({\n AllowWithdrawals: PropTypes.bool.isRequired,\n BankAccountId: PropTypes.number.isRequired,\n BankAccountType: PropTypes.string.isRequired,\n BankName: PropTypes.string.isRequired,\n BeneficiaryId: PropTypes.number,\n BeneficiaryName: PropTypes.string,\n DoesOwnerNeedNotification: PropTypes.bool.isRequired,\n ExpirationDate: PropTypes.string.isRequired,\n ExpirationWarningDate: PropTypes.string.isRequired,\n GiactResult: PropTypes.string, //CHECK\n HasExceededFullVerificationAttempts: PropTypes.bool.isRequired,\n HasPendingACHTransactions: PropTypes.bool.isRequired,\n IsEligibleForPoa: PropTypes.bool.isRequired,\n IsPendingWithdrawalVerification: PropTypes.bool.isRequired,\n IsPoaApproved: PropTypes.bool.isRequired,\n IsVerified: PropTypes.bool.isRequired,\n MaskedBankAccountNumber: PropTypes.string.isRequired,\n Nickname: PropTypes.string,\n RoutingNumber: PropTypes.string.isRequired,\n VerificationAttemptsRemaining: PropTypes.number.isRequired,\n }),\n ).isRequired,\n accessCards: PropTypes.arrayOf(\n PropTypes.shape({\n AccessCardId: PropTypes.number,\n CardNumber: PropTypes.string,\n Title: PropTypes.string,\n })\n ).isRequired,\n groupedBankAccounts: PropTypes.object.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getBankAccounts: PropTypes.func.isRequired,\n getAccessCards: PropTypes.func.isRequired,\n getGroupedBankAccounts: PropTypes.func.isRequired,\n getAllowedBankHolders: PropTypes.func.isRequired,\n deleteBankAccount: PropTypes.func.isRequired,\n startMicroDeposits: PropTypes.func.isRequired,\n renewBankAccount: PropTypes.func.isRequired,\n poaApproval: PropTypes.func.isRequired,\n getAccessCardURL: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n agentGet: PropTypes.func.isRequired,\n agent: PropTypes.shape({\n AgentId: PropTypes.number,\n FirstName: PropTypes.string,\n MiddleName: PropTypes.string,\n LastName: PropTypes.string,\n }).isRequired,\n size: PropTypes.shape({\n windowWidth: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({\n Payments: PropTypes.shape({\n access_card_url_text: PropTypes.string,\n btn_add_bank: PropTypes.string,\n btn_apply_now: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_validate: PropTypes.string,\n btn_deposits_received: PropTypes.string,\n btn_renew: PropTypes.string,\n btn_remove: PropTypes.string,\n btn_ok: PropTypes.string,\n head_pending_ach: PropTypes.string,\n head_remove_account: PropTypes.string,\n head_renew_account: PropTypes.string,\n msg_poa_approved: PropTypes.string,\n msg_poa_not_approved: PropTypes.string,\n msg_removed: PropTypes.string,\n msg_renewed: PropTypes.string,\n text_account_not_validated: PropTypes.string,\n text_account_validated: PropTypes.string,\n text_account_on_hold: PropTypes.func,\n text_access_card_reqs: PropTypes.array,\n text_attempts_exceeded: PropTypes.string,\n text_bank_hold_language: PropTypes.func,\n text_confirm_remove: PropTypes.func,\n text_confirm_renew: PropTypes.func,\n text_expiration_warning: PropTypes.func,\n text_lpoa_switch: PropTypes.string,\n text_has_pending_transactions: PropTypes.string,\n text_my529_access_card: PropTypes.string,\n text_poa_not_approved: PropTypes.string,\n text_poa_approved: PropTypes.string,\n text_requirements: PropTypes.string,\n text_set_up_accounts: PropTypes.string,\n title_access_cards: PropTypes.string,\n txt_third_party_disclaimer: PropTypes.string,\n txt_third_party_warning_access_cards: PropTypes.string,\n txt_third_party_warning_access_cards_footer: PropTypes.func,\n txt_third_party_warning_for_info: PropTypes.string,\n }).isRequired,\n Withdrawals: PropTypes.shape({\n errors: PropTypes.shape({\n payment_method_on_hold: PropTypes.func,\n })\n }).isRequired,\n }).isRequired,\n environmentVars: PropTypes.shape({\n ACHBankWithdrawalDelay: PropTypes.number,\n ACHBankWithdrawalLanguage: PropTypes.string,\n DisbursementSignatureGuaranteeAmount: PropTypes.number,\n DisbursementSignatureGuaranteeRollingDays: PropTypes.number,\n }).isRequired,\n }\n\n state = {\n isMenuView: false,\n isMobileView: false,\n isLoading: false,\n isLoadingURL: false,\n buttonIsLoading: false,\n hasBankAccounts: false,\n hasAccessCards: false,\n showBankAccountsLearnMore: false,\n showAccessCardsLearnMore: false,\n showAddBankModal: false,\n showEditBankModal: false,\n showGiactRejectionModal: false,\n showCancelConfirmModal: false,\n showRenewConfirmModal: false,\n showHasPendingTransactionsModal: false,\n showNicknameModal: false,\n showValidationStartModal: false,\n validationStarted: false,\n showValidationFinishModal: false,\n selectedBankAccount: {},\n menuAnchorPoints: {},\n addAccountMenuOpen: false,\n showAccessCardApplicationThirdPartyWarning: false,\n showGeneralThirdPartyWarning: false,\n accessCardEligible: false,\n accountBeingEdited: {},\n accessCardURL: '',\n\n hasPrecondition: false,\n post2FAAuthFunction: '',\n post2FAAction: '',\n past2FABankAccount: {}\n }\n\n handleGetBankAccounts = () => {\n const { getBankAccounts, getAccessCards, getGroupedBankAccounts, } = this.props;\n this.setState({ isLoading: true });\n Promise.all([\n getBankAccounts(),\n getAccessCards(),\n ])\n .then(() => {\n const { bankAccounts, accessCards, } = this.props;\n getGroupedBankAccounts();\n this.setState({ isLoading: false, hasBankAccounts: bankAccounts.length > 0, hasAccessCards: accessCards.length > 0 });\n })\n .catch(() => {\n const { bankAccounts, accessCards, } = this.props;\n this.setState({ isLoading: false, hasBankAccounts: bankAccounts.length > 0, hasAccessCards: accessCards.length > 0 });\n });\n }\n\n menuClose = (accountId) => {\n this.setState({ menuAnchorPoints: { ...this.state.menuAnchorPoints, [accountId]: null } });\n }\n\n menuOpen = (event, accountId) => {\n this.setState({ menuAnchorPoints: { ...this.state.menuAnchorPoints, [accountId]: event.currentTarget } });\n }\n\n toggleShowBankAccountsLearnMore = () => {\n this.setState({ showBankAccountsLearnMore: !this.state.showBankAccountsLearnMore });\n }\n\n toggleShowAccessCardsLearnMore = () => {\n this.setState({ showAccessCardsLearnMore: !this.state.showAccessCardsLearnMore });\n }\n\n toggleShowAddBank = () => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'toggleShowAddBank'\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'toggleShowAddBank'\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({\n hasPrecondition: false,\n showAddBankModal: !this.state.showAddBankModal,\n post2FAAuthFunction: ''\n });\n }\n }\n\n handleShowRemoveBankConfirm = (bankAccount) => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleShowRemoveBankConfirm',\n post2FABankAccount: bankAccount\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleShowRemoveBankConfirm',\n post2FABankAccount: bankAccount\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n if (bankAccount.HasPendingACHTransactions) {\n this.setState({\n hasPrecondition: false,\n showHasPendingTransactionsModal: true,\n post2FAAuthFunction: '',\n post2FABankAccount: {}\n });\n }\n else {\n this.setState({\n hasPrecondition: false,\n selectedBankAccount: bankAccount,\n showCancelConfirmModal: true,\n post2FAAuthFunction: '',\n post2FABankAccount: {}\n });\n }\n }\n }\n\n handleDeleteBankAccount = () => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleDeleteBankAccount'\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleDeleteBankAccount',\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n this.setState({ buttonIsLoading: true });\n this.props.deleteBankAccount(this.state.selectedBankAccount.BankAccountId)\n .then(() => {\n this.props.notificationShow(this.props.text.Payments.msg_removed, 'success');\n this.handleGetBankAccounts();\n this.setState({\n hasPrecondition: false,\n buttonIsLoading: false,\n showCancelConfirmModal: false,\n post2FAAuthFunction: ''\n });\n })\n .catch(() => this.setState({ buttonIsLoading: false, showCancelConfirmModal: false }));\n }\n }\n\n handleRenewBankAccount = () => {\n this.setState({ buttonIsLoading: true });\n this.props.renewBankAccount(this.state.selectedBankAccount.BankAccountId)\n .then(() => {\n this.props.notificationShow(this.props.text.Payments.msg_renewed, 'success');\n this.handleGetBankAccounts();\n this.setState({ buttonIsLoading: false, showRenewConfirmModal: false });\n })\n .catch(() => this.setState({ buttonIsLoading: false, showRenewConfirmModal: false }));\n }\n\n handleApproveLPOA = bankAccount => {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleApproveLPOA',\n post2FABankAccount: bankAccount\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleApproveLPOA',\n post2FABankAccount: bankAccount\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else if (!bankAccount.AllowWithdrawals && !bankAccount.IsPoaApproved) {\n this.props.notificationShow(this.props.text.Withdrawals.errors.payment_method_on_hold(this.props.environmentVars.ACHBankWithdrawalDelay), 'error');\n }\n else {\n const { msg_poa_approved, msg_poa_not_approved, } = this.props.text.Payments;\n const notificationMessage = !bankAccount.IsPoaApproved ? msg_poa_approved : msg_poa_not_approved;\n const approvalApiEndpoint = !bankAccount.IsPoaApproved ? 'Approve' : 'Unapprove';\n\n this.setState({ isLoading: true, hasPrecondition: false });\n this.props.poaApproval(approvalApiEndpoint, bankAccount.BankAccountId)\n .then(() => {\n this.props.notificationShow(notificationMessage, 'success');\n this.handleGetBankAccounts();\n })\n .catch(() => this.setState({ isLoading: false }));\n }\n }\n\n handleAddAccountMenuClose = (event) => {\n if (this.addAccountMenuAnchor.current && this.addAccountMenuAnchor.current.contains(event.target)) {\n return;\n }\n\n this.setState({ addAccountMenuOpen: false });\n };\n\n renderLearnMoreButton = (forAccessCards = false) => {\n return (\n \n {this.props.text.Payments.btn_learn_more}\n \n );\n }\n\n renderNoBankAccounts = () => {\n return (\n
    \n

    {this.props.text.Payments.text_set_up_accounts}

    \n
    \n {this.renderLearnMoreButton()}\n \n {this.props.text.Payments.btn_add_bank}\n \n
    \n
    \n );\n }\n\n renderNoAccessCards = () => {\n return (\n
    \n

    {this.props.text.Payments.text_my529_access_card}

    \n

    {this.props.text.Payments.txt_third_party_disclaimer}

    \n
    \n {this.renderLearnMoreButton(true)}\n \n {this.props.text.Payments.btn_apply_now}\n \n
    \n
    \n );\n }\n\n renderHasPendingTransactionsModal = () => {\n const { head_pending_ach, text_has_pending_transactions, btn_ok } = this.props.text.Payments;\n return (\n this.setState({ showHasPendingTransactionsModal: false })}\n modal={false}\n actionButtons={[\n {\n label: btn_ok,\n action: () => this.setState({ showHasPendingTransactionsModal: false }),\n buttonType: 'contained',\n }\n ]}\n >\n

    \n {text_has_pending_transactions}\n

    \n \n );\n }\n\n handleApplyForAccessCard = () => {\n this.setState({ showAccessCardApplicationThirdPartyWarning: true, isLoadingURL: true });\n this.props.getAccessCardURL()\n .then((response) => {\n const accessCardURL = response.payload.data;\n this.setState({ isLoadingURL: false, accessCardURL });\n })\n .catch(() => {\n this.setState({ showAccessCardApplicationThirdPartyWarning: false, isLoadingURL: false });\n });\n }\n\n handleAccountButtons(bankAccount, actionType) {\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleAccountButtons',\n post2FABankAccount: bankAccount,\n post2FAAction: actionType,\n },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n {\n hasPrecondition: true,\n post2FAAuthFunction: 'handleAccountButtons',\n post2FABankAccount: bankAccount,\n post2FAAction: actionType,\n },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n if (actionType === 'validate') {\n this.setState({\n hasPrecondition: false,\n showValidationStartModal: true,\n validationStarted: false,\n selectedBankAccount: bankAccount,\n post2FAAuthFunction: '',\n post2FAAction: '',\n post2FABankAccount: {}\n });\n }\n else { // deposits recieved\n this.setState({\n hasPrecondition: false,\n showValidationFinishModal: true,\n selectedBankAccount: bankAccount,\n post2FAAuthFunction: '',\n post2FAAction: '',\n post2FABankAccount: {}\n });\n }\n }\n }\n\n renderAccessCardButtons = () => {\n const { Payments } = this.props.text;\n\n return (\n \n
    this.setState({ showGeneralThirdPartyWarning: true })}>\n {Payments.access_card_url_text}\n
    \n
    \n );\n }\n\n renderAccountButtons = (bankAccount, isExpiring, lpoaApprovalStatus) => {\n const { btn_validate, btn_deposits_received, btn_renew, btn_remove, text_lpoa_switch, } = this.props.text.Payments;\n const { BankAccountId, IsVerified, IsPendingWithdrawalVerification, HasExceededFullVerificationAttempts, IsEligibleForPoa, IsPoaApproved, BeneficiaryName, Nickname } = bankAccount;\n const accountBeingEdited = {\n BankAccountId,\n Nickname,\n };\n return (\n \n\n
    \n this.setState(\n { accountBeingEdited },\n () => this.setState({ showEditBankModal: true })\n )}\n />\n
    \n {IsVerified && IsEligibleForPoa && !BeneficiaryName &&\n
    \n

    {text_lpoa_switch}

    \n this.handleApproveLPOA(bankAccount)}\n value={IsPoaApproved}\n inputProps={{ 'aria-label': 'secondary checkbox' }}\n />\n

    {lpoaApprovalStatus}

    \n
    \n }\n {!IsVerified && !IsPendingWithdrawalVerification && !HasExceededFullVerificationAttempts &&\n }\n {!IsVerified && IsPendingWithdrawalVerification &&\n }\n {isExpiring &&\n }\n this.handleShowRemoveBankConfirm(bankAccount)}\n >\n {btn_remove}\n \n
    \n );\n }\n\n renderAccessCardMenu = (accessCard) => {\n const { Payments } = this.props.text;\n const { CardNumber } = accessCard;\n\n return (\n \n this.menuOpen(event, CardNumber)}\n />\n this.menuClose(CardNumber)}\n open={Boolean(this.state.menuAnchorPoints[CardNumber])}\n >\n {\n this.setState({ showGeneralThirdPartyWarning: true });\n this.menuClose(CardNumber);\n }}\n >\n {Payments.access_card_url_text}\n \n \n \n );\n }\n\n renderAccountMenu = (bankAccount, isExpiring, lpoaApprovalStatus) => {\n const { btn_validate, btn_deposits_received, btn_renew, btn_remove, text_lpoa_switch, } = this.props.text.Payments;\n const { BankAccountId, IsVerified, IsPendingWithdrawalVerification, HasExceededFullVerificationAttempts, IsEligibleForPoa, IsPoaApproved, BeneficiaryName, } = bankAccount;\n\n return (\n \n {IsVerified && IsEligibleForPoa && !BeneficiaryName &&\n
    \n

    {text_lpoa_switch}

    \n this.handleApproveLPOA(bankAccount)}\n value={IsPoaApproved}\n inputProps={{ 'aria-label': 'secondary checkbox' }}\n />\n

    {lpoaApprovalStatus}

    \n
    \n }\n this.menuOpen(event, BankAccountId)}\n />\n this.menuClose(BankAccountId)}\n open={Boolean(this.state.menuAnchorPoints[BankAccountId])}\n >\n {!IsVerified && !IsPendingWithdrawalVerification && !HasExceededFullVerificationAttempts &&\n {\n this.setState({ showValidationStartModal: true, validationStarted: false, selectedBankAccount: bankAccount });\n this.menuClose(BankAccountId);\n }}\n >\n {btn_validate}\n \n }\n {!IsVerified && IsPendingWithdrawalVerification &&\n {\n this.setState({ showValidationFinishModal: true, selectedBankAccount: bankAccount });\n this.menuClose(BankAccountId);\n }}\n >\n {btn_deposits_received}\n \n }\n {isExpiring &&\n {\n this.setState({ showRenewConfirmModal: true, selectedBankAccount: bankAccount });\n this.menuClose(BankAccountId);\n }}\n >\n {btn_renew}\n \n }\n {\n this.handleShowRemoveBankConfirm(bankAccount);\n this.menuClose(BankAccountId);\n }}\n >\n {btn_remove}\n \n \n
    \n );\n }\n\n renderBankAccountDetailsAndButtons(bankAccount) {\n const { ACHBankWithdrawalDelay, } = this.props.environmentVars;\n const {\n text_expiration_warning,\n text_poa_approved, text_poa_not_approved,\n text_account_validated,\n text_account_not_validated,\n text_attempts_exceeded,\n text_account_on_hold,\n } = this.props.text.Payments;\n const {\n AllowWithdrawals,\n BankName,\n MaskedBankAccountNumber,\n BankAccountType,\n HasExceededFullVerificationAttempts,\n ExpirationWarningDate,\n ExpirationDate,\n IsPoaApproved,\n IsVerified,\n Nickname\n } = bankAccount;\n const isExpiring = dayjs().isSameOrAfter(dayjs(ExpirationWarningDate), 'day');\n const expirationDate = dayjs(ExpirationDate).format('MM/DD/YYYY');\n const lpoaApprovalStatus = IsPoaApproved ? text_poa_approved : text_poa_not_approved;\n const renderButtons = this.state.isMenuView ?\n this.renderAccountMenu(bankAccount, isExpiring, lpoaApprovalStatus) :\n this.renderAccountButtons(bankAccount, isExpiring, lpoaApprovalStatus);\n let validationStatus = IsVerified ?\n

    {text_account_validated}

    :\n

    {text_account_not_validated}

    ;\n\n if (HasExceededFullVerificationAttempts) {\n validationStatus =

    {text_attempts_exceeded}

    ;\n }\n\n return (\n \n
    \n
    \n account_balance\n
    \n
    \n
    \n

    {BankName}

    \n

    {BankAccountType}

    \n {validationStatus}\n
    \n {IsVerified && !AllowWithdrawals && !isExpiring && // display hold language, if bank account is validated but still on 7 business day mail letter hold; exclude expiring bank accounts\n

    {text_account_on_hold(ACHBankWithdrawalDelay)}

    }\n

    {MaskedBankAccountNumber}

    \n
    {Nickname}
    \n
    \n {isExpiring &&\n \n {text_expiration_warning(expirationDate)}\n }\n
    \n {renderButtons}\n
    \n );\n }\n\n renderAccessCardDetailsAndButtons(accessCard) {\n const {\n Title,\n CardNumber,\n } = accessCard;\n\n const renderButtons = this.state.isMenuView ?\n this.renderAccessCardMenu(accessCard) :\n this.renderAccessCardButtons();\n\n return (\n \n
    \n
    \n credit_card\n
    \n
    \n
    \n

    {Title}

    \n
    \n

    {CardNumber}

    \n
    \n
    \n {renderButtons}\n
    \n );\n }\n\n renderBlankAccountCard = () => {\n return (\n \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n\n renderPaymentAccounts = () => {\n const { groupedBankAccounts, accessCards, text: { Payments } } = this.props;\n const { isLoading, hasAccessCards, hasBankAccounts, accessCardEligible, } = this.state;\n\n return (\n <>\n
    \n {(hasBankAccounts) &&\n
    \n \n
    \n }\n\n {/* BANK ACCOUNT SECTION */}\n {isLoading\n ? this.renderBlankAccountCard()\n : Object.keys(groupedBankAccounts).map(accountOwner => {\n const bankAccountGroup = groupedBankAccounts[accountOwner];\n return (\n \n
    \n {accountOwner}\n \n {bankAccountGroup.map((bankAccount) => {\n return (\n \n \n {this.renderBankAccountDetailsAndButtons(bankAccount)}\n \n );\n })}\n \n \n
    \n
    \n );\n })}\n\n {hasBankAccounts &&\n
    \n {this.renderLearnMoreButton()}\n
    }\n\n {/* ACCESS CARD SECTION */}\n {hasAccessCards &&\n \n
    \n {Payments.title_access_cards}\n \n {accessCards.map(accessCard => {\n return (\n \n \n {this.renderAccessCardDetailsAndButtons(accessCard)}\n \n );\n })}\n \n
    \n {Payments.text_requirements}\n
      \n {Payments.text_access_card_reqs.map((req, index) => (\n
    • {req}
    • \n ))}\n
    \n
    \n
    \n
    \n
    }\n\n {hasAccessCards &&\n
    \n

    {Payments.txt_third_party_disclaimer}

    \n {this.renderLearnMoreButton(true)}\n
    }\n\n {!hasBankAccounts && !isLoading && this.renderNoBankAccounts()}\n {!hasAccessCards && !isLoading && accessCardEligible && this.renderNoAccessCards()}\n
    \n \n );\n }\n\n initBankAccounts = (agent) => {\n const userDetails = {\n agentId: agent.AgentId,\n name: `${agent.FirstName} ${agent.MiddleName} ${agent.LastName}`\n };\n this.props.getAllowedBankHolders(userDetails, this.props.accountList);\n this.handleGetBankAccounts();\n\n const menuAnchorPoints = {};\n // Creates menu anchor point for every account, since each menu includes links to the individual bank account\n Object.keys(this.props.groupedBankAccounts).forEach(owner => {\n this.props.groupedBankAccounts[owner].forEach(bankAccount => {\n menuAnchorPoints[bankAccount.BankAccountId] = null;\n });\n });\n\n this.setState({ menuAnchorPoints });\n }\n\n componentDidMount() {\n const { agent, claims, } = this.props;\n const accessCardEligible = claims.AccessCardEligible === 'True';\n\n this.setState({ accessCardEligible });\n if (!agent.AgentId) {\n this.setState({ isLoading: true });\n this.props.agentGet()\n .then(() => {\n this.initBankAccounts(this.props.agent);\n })\n .finally(() => this.setState({ isLoading: false }));\n }\n else {\n this.initBankAccounts(agent);\n }\n }\n\n componentDidUpdate({ size }) {\n const { size: { windowWidth } } = this.props;\n if (size.windowWidth !== windowWidth) {\n this.setState({\n isMenuView: windowWidth < parseInt(tabletWidth),\n isMobileView: windowWidth < parseInt(mobileWidth),\n });\n }\n\n const multiStatus = protectAction(this.props.claims);\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n const funcName = this.state.post2FAAuthFunction;\n this[funcName](this.state.post2FABankAccount, this.state.post2FAAction);\n }\n }\n\n render() {\n const {\n environmentVars,\n text: { Payments, },\n } = this.props;\n const {\n showAddBankModal,\n showEditBankModal,\n showBankAccountsLearnMore,\n showAccessCardsLearnMore,\n showValidationStartModal,\n validationStarted,\n showValidationFinishModal,\n showAccessCardApplicationThirdPartyWarning,\n showGeneralThirdPartyWarning,\n selectedBankAccount,\n buttonIsLoading,\n accessCardURL,\n } = this.state;\n\n return (\n
    \n

    \n {Payments.text_bank_hold_language(environmentVars.ACHBankWithdrawalLanguage)}\n

    \n\n {this.renderPaymentAccounts()}\n\n this.toggleShowAddBank()}\n isMobileView={this.state.isMobileView}\n handleGetBankAccounts={this.handleGetBankAccounts}\n handleShowGiactRejectionModal={() => this.setState({ showGiactRejectionModal: true })}\n handleShowValidationStart={(newBankAccount) => this.setState({ showValidationStartModal: true, validationStarted: false, selectedBankAccount: newBankAccount })}\n />\n this.setState({ showEditBankModal: false, accountBeingEdited: {} })}\n isMobileView={this.state.isMobileView}\n bankAccount={this.state.accountBeingEdited}\n />\n \n \n this.setState({ showCancelConfirmModal: false })}\n onConfirm={() => this.handleDeleteBankAccount()}\n isLoading={buttonIsLoading}\n />\n this.setState({ showRenewConfirmModal: false })}\n onConfirm={() => this.handleRenewBankAccount()}\n isLoading={buttonIsLoading}\n />\n {this.renderHasPendingTransactionsModal()}\n this.setState({ showValidationStartModal: !this.state.showValidationStartModal })}\n handleValidationStarted={() => this.setState({ validationStarted: !this.state.validationStarted })}\n handleButtonIsLoading={() => this.setState({ buttonIsLoading: !this.state.buttonIsLoading })}\n />\n this.setState({ showValidationFinishModal: !showValidationFinishModal })}\n selectedBankAccount={selectedBankAccount}\n handleGetBankAccounts={this.handleGetBankAccounts}\n />\n this.setState({ showAccessCardApplicationThirdPartyWarning: false })}\n eventLabel='Discover Access Cards' // for Google analytics\n thirdPartyURL={accessCardURL}\n imageSrc={OpenCPScreenshot}\n warningLanguage={Payments.txt_third_party_warning_access_cards}\n footer={Payments.txt_third_party_warning_access_cards_footer(OPENCP_URL)}\n maxWidth='lg'\n />\n this.setState({ showGeneralThirdPartyWarning: false })}\n eventLabel='Access Cards Homepage'\n thirdPartyURL={OPENCP_URL}\n warningLanguage={Payments.txt_third_party_warning_for_info}\n />\n
    \n );\n }\n}\n\n\nexport default connect(\n select,\n {\n getBankAccounts,\n getAccessCards,\n getGroupedBankAccounts,\n getAllowedBankHolders,\n deleteBankAccount,\n startMicroDeposits,\n renewBankAccount,\n poaApproval,\n getAccessCardURL,\n get2FAPrecondition,\n getRSAPrecondition,\n notificationShow,\n agentGet,\n }\n)(sizify(LanguageHOC(Payments)));\n","/*\n*\n* Documents Actions\n*\n*/\nimport {\n GETrequest,\n POSTrequest,\n} from 'utils/helpers/api_handler';\nimport {\n DOCUMENTS_GET,\n ACCOUNT_DOCUMENT_DOWNLOAD_DATA,\n ACCOUNT_CERTIFICATE_NAME,\n COUNTRIES_LIST_GET,\n} from './constants';\n\nexport function documentsGet() {\n const payload = GETrequest('/accounts/documents');\n\n return {\n type: DOCUMENTS_GET,\n payload,\n };\n}\n\nexport function downloadAccountDocumentData(url) {\n const payload = GETrequest(url);\n\n return {\n type: ACCOUNT_DOCUMENT_DOWNLOAD_DATA,\n payload,\n };\n}\n\nexport function updateAccountCertificateName(certificateFromName, accountId) {\n const payload = POSTrequest(`/accounts/${accountId}/documents/certificate?customName=${certificateFromName}`);\n\n return {\n type: ACCOUNT_CERTIFICATE_NAME,\n payload,\n };\n}\n\nexport function getCountries() {\n const response = GETrequest('/Parameters/Countries');\n return {\n type: COUNTRIES_LIST_GET,\n payload: response,\n };\n}","/*\n*\n* CertificateEdit Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n TextField,\n} from '@mui/material';\nimport {\n Modal,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nexport class CertificateEdit extends React.Component {\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n saveNameAndOpenDoc: PropTypes.func.isRequired,\n certificateCustomName: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Documents: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_save: PropTypes.string,\n err_required: PropTypes.string,\n lbl_from_name: PropTypes.string,\n text_edit_certificate: PropTypes.string,\n title_edit_certificate: PropTypes.string,\n })\n })\n };\n\n state = {\n certificateFromName: this.props.certificateCustomName,\n formErrors: {},\n isSaving: false,\n }\n\n onInputChange = (e, name) => {\n this.setState({\n [name]: e.target.value,\n formErrors: {\n ...this.state.formErrors,\n [name]: '',\n },\n verificationFailed: false,\n });\n }\n\n formValidate = () => {\n const { Documents } = this.props.text;\n const { certificateFromName } = this.state;\n const formErrors = {};\n\n if (!certificateFromName) {\n formErrors.certificateFromName = Documents.err_required;\n }\n\n this.setState({ formErrors });\n const hasErrors = Object.keys(formErrors).some(field => formErrors[field] !== '');\n\n return !hasErrors;\n }\n\n closeForm = () => {\n this.props.onClose();\n }\n\n onEditCertificate = () => {\n const { saveNameAndOpenDoc } = this.props;\n const { certificateFromName } = this.state;\n const isValid = this.formValidate();\n\n if (isValid) {\n this.setState({ isSaving: true });\n /* \n The & sign causes issues when submitting edits since the new From Name\n is sent in the API URL. This ensures that the & sign will save and appear\n correctly and safely.\n */\n const ampEncodedCertificateFromName = certificateFromName.replace(/&/g, '%26');\n saveNameAndOpenDoc(ampEncodedCertificateFromName);\n }\n }\n\n render() {\n const { \n open, \n text: { Documents }\n } = this.props;\n const { isSaving, formErrors, certificateFromName } = this.state;\n \n return (\n this.onEditCertificate(),\n buttonType: 'contained',\n }\n ]} \n >\n \n

    \n {Documents.text_edit_certificate}\n

    \n \n
    \n this.onInputChange(e, 'certificateFromName')}\n value={certificateFromName}\n inputProps={{\n maxLength: 40\n }}\n />\n
    \n
    \n \n );\n }\n}\n\nexport default connect(null, {})(LanguageHOC(CertificateEdit));","/*\n*\n* Documents Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n Paper,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n notificationShow,\n InfoIcon,\n createStatementPdfToNewWindow,\n createCertificatePdfToNewWindow,\n loadingAnimationHTML,\n loadingErrorHTML,\n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n TableToolbar,\n TAXFORM1099_COPY_PATHS,\n TAXFORMTC675_PATHS,\n TCFORM_ACCOUNT_TYPE_CODES,\n get1099QPdfBytes,\n getTC675HPdfBytes,\n mapPdfDataFrom1099QData,\n mapPdfDataFromTC675HData\n} from '@frontend/common';\n\nimport {\n documentsGet,\n downloadAccountDocumentData,\n updateAccountCertificateName,\n getCountries\n} from 'components/Features/protected/Documents/actions';\n\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport CertificateEditModal from './CertificateEditModal';\n\nimport styles from './styles.module.scss';\n\nconst blankSelectedCertificate = {\n CertificateCustomName: '',\n Url: '',\n Format: '',\n AccountId: '',\n};\n\nconst select = (state) => ({\n documents: state.documents.documents,\n DocumentTypes: state.static.environmentVars.DocumentTypes,\n webMessages: state.static.webMessages,\n countries: state.documents.countries,\n});\n\nexport class Documents extends React.Component {\n\n static propTypes = {\n webMessages: PropTypes.object.isRequired,\n documents: PropTypes.array.isRequired,\n DocumentTypes: PropTypes.shape({\n AccountCertificate: PropTypes.string,\n QuarterlyStatement: PropTypes.string,\n FederalTaxForm: PropTypes.string,\n UtahStateTaxForm: PropTypes.string,\n }).isRequired,\n documentsGet: PropTypes.func.isRequired,\n downloadAccountDocumentData: PropTypes.func.isRequired,\n updateAccountCertificateName: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n getNotifications: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Documents: PropTypes.shape({\n btn_open_pdf: PropTypes.string,\n msg_certificate_updated: PropTypes.string,\n msg_interested_party: PropTypes.string,\n nav_path: PropTypes.string,\n text_no_documents: PropTypes.string,\n title_account_number: PropTypes.string,\n title_account_type: PropTypes.string,\n title_bene_name: PropTypes.string,\n title_description: PropTypes.string,\n title_document_type: PropTypes.string,\n title_download: PropTypes.string,\n title_edit_certificate: PropTypes.string,\n title_quarter: PropTypes.string,\n title_view_additional: PropTypes.string,\n title_view_document: PropTypes.string,\n title_year: PropTypes.string,\n }),\n }),\n getCountries: PropTypes.func.isRequired,\n countries: PropTypes.array.isRequired,\n };\n\n state = {\n isLoading: false,\n isDownloading: false,\n openCertificateEdit: false,\n selectedCertificate: blankSelectedCertificate,\n hasInterestedPartyAccounts: false,\n containerEl: document.createElement('div'),\n }\n\n closeEditCertificateModalHandler = () => {\n this.setState({ openCertificateEdit: false, selectedCertificate: blankSelectedCertificate });\n }\n\n getDocuments = () => {\n this.setState({ isLoading: true });\n this.props.documentsGet()\n .then(() => {\n const hasInterestedPartyAccounts = this.props.documents.some(document => document.IsInterestedPartyDoc);\n this.setState({\n isLoading: false,\n hasInterestedPartyAccounts,\n });\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n\n certificateEditHandler(url, documentType, certificateFromName, accountId) {\n if (certificateFromName && accountId) {\n this.props.updateAccountCertificateName(certificateFromName, accountId)\n .then(() => {\n this.getDocuments(this.state.selectedCertificate.AccountNumber);\n this.props.notificationShow('Account Certificate Updated.', 'success');\n this.closeEditCertificateModalHandler();\n this.openPdfStatement(url, documentType);\n });\n }\n }\n\n openPdfStatement = (url, documentType, pdf1099Path) => {\n const { DocumentTypes, text, downloadAccountDocumentData, countries } = this.props;\n // const isTaxDoc = documentType === DocumentTypes.FederalTaxForm || documentType === DocumentTypes.UtahStateTaxForm;\n const statementWindow = window.open('', '_blank'); // needs to be outside of async call to work in Safari\n statementWindow.document.write(loadingAnimationHTML); // this will get replaced by generated pdf once the api loads all data\n let apiCall;\n switch (documentType) {\n // generate statement\n case DocumentTypes.QuarterlyStatement:\n apiCall = downloadAccountDocumentData(url)\n .then(response => createStatementPdfToNewWindow(response.payload.data, statementWindow, text.Documents.title_view_document));\n break;\n\n // generate account certificate\n case DocumentTypes.AccountCertificate:\n apiCall = downloadAccountDocumentData(url)\n .then(response => createCertificatePdfToNewWindow(response.payload.data, statementWindow));\n break;\n\n // load tax docs\n case DocumentTypes.FederalTaxForm:\n apiCall = downloadAccountDocumentData(url)\n .then(response => {\n const pdfData = mapPdfDataFrom1099QData(response.payload.data, countries);\n try {\n return get1099QPdfBytes(pdfData, pdf1099Path)\n .then(pdfBytes => {\n const file = new Blob([pdfBytes], { type: 'application/pdf' });\n const fileURL = URL.createObjectURL(file);\n statementWindow.location = fileURL; // appeases Safari where window.open is outside of async call\n });\n }\n catch (err) {\n return err;\n }\n });\n break;\n\n case DocumentTypes.UtahStateTaxForm:\n apiCall = downloadAccountDocumentData(url)\n .then(response => {\n try {\n const data = response.payload.data;\n const pdfData = mapPdfDataFromTC675HData(data, this.props.countries); // maps api parameters to pdf form inputs\n let pdfTC675HPath; // this path needs to be decided after data are loaded\n switch (data.AccountType) {\n case TCFORM_ACCOUNT_TYPE_CODES.INDIVIDUAL:\n pdfTC675HPath = TAXFORMTC675_PATHS.INDIVIDUAL_INSTRUCTIONS;\n break;\n case TCFORM_ACCOUNT_TYPE_CODES.INSTITUTIONAL:\n pdfTC675HPath = TAXFORMTC675_PATHS.INSTITUTIONAL_INSTRUCTIONS;\n break;\n case TCFORM_ACCOUNT_TYPE_CODES.UGMAUTMA:\n pdfTC675HPath = TAXFORMTC675_PATHS.UGMAUTMA_INSTRUCTIONS;\n break;\n default: // do nothing\n }\n\n return getTC675HPdfBytes(pdfData, pdfTC675HPath)\n .then(pdfBytes => {\n const file = new Blob([pdfBytes], { type: 'application/pdf' });\n const fileURL = URL.createObjectURL(file);\n statementWindow.location = fileURL; // appeases Safari where window.open is outside of async call\n });\n }\n catch (err) {\n return err;\n }\n });\n break;\n\n default:\n this.setState({ downloadLoading: false });\n this.props.notificationShow('Document type does not exist.', 'error');\n }\n\n // shared promise catch and finally\n apiCall && apiCall\n .catch(() => {\n // show error in a new tab by replacing its html content\n statementWindow.document.close(); // clear first\n statementWindow.document.write(loadingErrorHTML);\n })\n .finally(() => {\n this.setState({ downloadLoading: false });\n });\n }\n\n componentDidMount() {\n if (this.props.countries.length === 0) {\n this.props.getCountries();\n }\n\n if (this.props.documents.length === 0) {\n this.getDocuments();\n }\n else {\n const hasInterestedPartyAccounts = this.props.documents.some(document => document.IsInterestedPartyDoc);\n this.setState({\n hasInterestedPartyAccounts,\n });\n }\n }\n\n render() {\n const { documents, DocumentTypes, webMessages, text: { Documents } } = this.props;\n const { hasInterestedPartyAccounts, isDownloading, isLoading, openCertificateEdit, selectedCertificate } = this.state;\n\n const columns = [\n {\n key: 'DocumentType',\n title: Documents.title_document_type,\n type: 'string',\n },\n {\n key: 'BeneficiaryName',\n title: Documents.title_bene_name,\n type: 'string',\n },\n {\n key: 'AccountNumber',\n title: Documents.title_account_number,\n type: 'number',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'AccountType',\n title: Documents.title_account_type,\n type: 'string',\n hideOn: ['phone', 'tablet'],\n },\n {\n key: 'Year',\n title: Documents.title_year,\n type: 'number',\n customStyle: { width: '50px' }\n },\n {\n key: 'Quarter',\n title: Documents.title_quarter,\n type: 'number',\n customStyle: { width: '55px' },\n },\n {\n key: 'Description',\n title: Documents.title_description,\n type: 'string',\n hideOn: ['phone'],\n canFilter: false,\n },\n ];\n // only if the account owner has IP accounts, then add in the interested party chip identifier\n if (hasInterestedPartyAccounts) {\n columns.push({\n key: 'IsInterestedPartyDoc',\n title: '',\n type: 'string',\n canFilter: false,\n customStyle: { width: '35px', padding: '5px' },\n format: IsInterestedPartyDoc => IsInterestedPartyDoc ? : null,\n });\n }\n\n return (\n
    \n \n \n \n this.openPdfStatement(row.Url, row.DocumentType, TAXFORM1099_COPY_PATHS.COPY_B_MAIL_INSTRUCTIONS),\n },\n {\n displayName: Documents.title_view_additional,\n type: 'menu',\n onSelect: row => this.openPdfStatement(row.Supplement.Url, row.DocumentType),\n showIf: row => row.Supplement,\n },\n {\n displayName: Documents.title_edit_certificate,\n type: 'menu',\n onSelect: row => this.setState({ openCertificateEdit: true, selectedCertificate: row }),\n showIf: row => row.DocumentType === DocumentTypes.AccountCertificate,\n },\n ]}\n >\n \n \n \n \n \n \n \n \n \n\n this.certificateEditHandler(\n selectedCertificate.Url,\n selectedCertificate.DocumentType,\n certificateFromName,\n selectedCertificate.AccountId\n )}\n />\n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n documentsGet,\n downloadAccountDocumentData,\n updateAccountCertificateName,\n notificationShow,\n getNotifications,\n getCountries,\n})(LanguageHOC(Documents)));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport parse from 'html-react-parser';\nimport {\n Drawer,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Typography,\n Divider,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function Instructions({ open, onClose, text: { PayrollInstructions } }) {\n\n Instructions.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PayrollInstructions: PropTypes.shape({\n head_instructions: PropTypes.string,\n title_how: PropTypes.string,\n text_how1: PropTypes.string,\n text_how2: PropTypes.array,\n text_how3: PropTypes.string,\n text_how4: PropTypes.string,\n text_how5: PropTypes.string,\n title_provide_to_employer: PropTypes.string,\n text_provide1: PropTypes.string,\n text_provide2: PropTypes.string,\n })\n })\n };\n\n const renderPayroll = () => (\n
    \n
    \n \n
    \n \n

    {PayrollInstructions.head_instructions}

    \n \n keyboard_arrow_down}\n aria-controls='panel1a-content'\n id='panel1a-header'\n >\n {PayrollInstructions.title_how}\n \n \n
    \n
    {PayrollInstructions.text_how1}
    \n
      \n {PayrollInstructions.text_how2.map(line =>
    1. {line}
    2. )}\n
    \n

    {parse(PayrollInstructions.text_how3)}

    \n\n {PayrollInstructions.text_how4}\n
    {PayrollInstructions.text_how5}
    \n
    \n
    \n
    \n\n \n keyboard_arrow_down}\n aria-controls='panel1a-content'\n id='panel1a-header'\n >\n {PayrollInstructions.title_provide_to_employer}\n \n \n
    \n

    {PayrollInstructions.text_provide1}

    \n
    {PayrollInstructions.text_provide2}
    \n
    \n
    \n
    \n\n
    \n );\n\n return (\n \n {renderPayroll()}\n \n );\n}\n\nexport default LanguageHOC(Instructions);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport parse from 'html-react-parser';\n\nimport {\n Modal,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nPayrollTerms.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PayrollTerms: PropTypes.shape({\n head_terms: PropTypes.string,\n text_terms: PropTypes.array,\n text_terms_authorize: PropTypes.string,\n })\n }),\n};\n\nexport function PayrollTerms({ open, onClose, text: { PayrollTerms }, }) {\n\n\n const renderTerms = () => (\n
    \n

    {PayrollTerms.text_terms_authorize}

    \n
      \n {PayrollTerms.text_terms.map(line =>
    • {parse(line)}
    • )}\n
    \n
    \n );\n\n return (\n \n {renderTerms()}\n \n );\n}\n\nexport default LanguageHOC(PayrollTerms);","/*\n*\n* AddNonAgentAccount Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport * as validator from 'utils/helpers/form_validation';\nimport dayjs from 'dayjs';\nimport {\n FormHelperText,\n} from '@mui/material';\nimport {\n Modal,\n DatePicker,\n BaseNumberInput,\n} from '@frontend/common';\nimport {\n verifyNonAgentAccount,\n} from '../actions';\n\nimport styles from './styles.module.scss';\n\n\nexport class AddNonAgentAccount extends React.Component {\n static propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n verifyNonAgentAccount: PropTypes.func.isRequired,\n handleAddNonAgentAccount: PropTypes.func.isRequired,\n text: PropTypes.shape({\n PayrollContribution: PropTypes.shape({\n btn_add: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_next: PropTypes.string,\n err_date_past_today: PropTypes.string,\n err_invalid_account: PropTypes.string,\n err_required: PropTypes.string,\n head_account_number: PropTypes.string,\n lbl_birth_date: PropTypes.string,\n lbl_my529_account: PropTypes.string,\n text_add_account: PropTypes.string,\n title_add_account: PropTypes.string,\n title_bene_name: PropTypes.string,\n })\n })\n };\n\n state = {\n accountToVerify: {\n accountNumber: '',\n beneficiaryBirthdate: ''\n },\n isAccountVerified: false,\n verifiedAccount: {},\n formErrors: {},\n apiErrors: [],\n isValidating: false,\n verificationFailed: false,\n }\n\n onInputChange = (name, value) => {\n this.setState({\n accountToVerify: {\n ...this.state.accountToVerify,\n [name]: value,\n },\n formErrors: {\n ...this.state.formErrors,\n [name]: '',\n },\n verificationFailed: false,\n });\n }\n\n onAccountNumberChange = ({ value }) => {\n // clap the account number to 9 digits max\n value = parseInt(value.toString().slice(0, 9));\n this.onInputChange('accountNumber', value);\n }\n\n formValidate = () => {\n const { PayrollContribution } = this.props.text;\n const { accountToVerify: { accountNumber, beneficiaryBirthdate }, apiErrors } = this.state;\n const formErrors = {};\n\n if (!accountNumber) {\n formErrors.accountNumber = PayrollContribution.err_required;\n }\n\n formErrors.beneficiaryBirthdate = validator.calendarValidator(beneficiaryBirthdate);\n if (dayjs(beneficiaryBirthdate).isAfter(dayjs(), 'day')) {\n formErrors.beneficiaryBirthdate = PayrollContribution.err_date_past_today;\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => formErrors[error.Field] = error.Message);\n }\n\n this.setState({ apiErrors: [], formErrors });\n const hasErrors = Object.keys(formErrors).some(field => formErrors[field] !== '');\n\n return !hasErrors;\n }\n\n closeForm = () => {\n this.props.onClose();\n this.setState({\n accountToVerify: {\n accountNumber: '',\n beneficiaryBirthdate: ''\n },\n isAccountVerified: false,\n verifiedAccount: {},\n formErrors: {},\n apiErrors: [],\n isValidating: false,\n verificationFailed: false,\n });\n }\n\n onVerifyAccount = () => {\n const {\n verifyNonAgentAccount,\n } = this.props;\n const { accountToVerify } = this.state;\n\n const isValid = this.formValidate();\n\n if (isValid) {\n this.setState({ isValidating: true });\n verifyNonAgentAccount(accountToVerify)\n .then(({ payload: { data } }) => {\n if (!data) {\n this.setState({ isValidating: false, verificationFailed: true });\n }\n else {\n this.setState({ isValidating: false, isAccountVerified: true, verifiedAccount: data });\n }\n })\n .catch(errors => {\n this.setState({\n apiErrors: errors.payload.data,\n isValidating: false\n }, () => this.formValidate());\n });\n }\n }\n\n renderAccountVerification = () => {\n const { text: { PayrollContribution } } = this.props;\n const { accountToVerify: { accountNumber, beneficiaryBirthdate }, formErrors, verificationFailed } = this.state;\n\n return (\n \n

    \n {PayrollContribution.text_add_account}\n

    \n\n
    \n \n
    \n this.onInputChange('beneficiaryBirthdate', e ? dayjs(e).format('L') : e)}\n openTo='year'\n value={beneficiaryBirthdate || null}\n />\n
    \n\n {verificationFailed && \n {PayrollContribution.err_invalid_account}\n }\n \n );\n }\n\n renderVerifiedAccount = () => {\n const { text: { PayrollContribution } } = this.props;\n const { AccountNumber, BeneficiaryName } = this.state.verifiedAccount;\n\n return (\n \n
    \n
    {PayrollContribution.head_account_number}
    \n
    {AccountNumber}
    \n
    \n
    \n
    {PayrollContribution.title_bene_name}
    \n
    {BeneficiaryName}
    \n
    \n
    \n );\n }\n\n render() {\n const {\n open,\n text: { PayrollContribution }\n } = this.props;\n const { isValidating, isAccountVerified, verifiedAccount } = this.state;\n\n const actionButtons = this.state.isAccountVerified ?\n [\n {\n label: PayrollContribution.btn_add,\n action: () => {\n this.props.handleAddNonAgentAccount(verifiedAccount);\n this.closeForm();\n },\n buttonType: 'contained',\n },\n ] :\n [\n {\n label: PayrollContribution.btn_next,\n loading: isValidating,\n action: () => this.onVerifyAccount(),\n buttonType: 'contained',\n }\n ];\n\n return (\n \n {!isAccountVerified ? this.renderAccountVerification() : this.renderVerifiedAccount()}\n \n );\n }\n}\n\nexport default connect(null, { verifyNonAgentAccount, })(LanguageHOC(AddNonAgentAccount));","/*\n*\n* PayrollContribution Actions\n*\n*/\nimport {\n GETrequest,\n POSTrequest,\n} from 'utils/helpers/api_handler';\n\nimport {\n PAYROLL_GET,\n PAYROLL_UPDATE,\n NON_AGENT_ACCOUNT_VERIFY,\n} from './constants';\n\nexport function getPayroll() {\n const payload = GETrequest('/agents/Payroll');\n return {\n type: PAYROLL_GET,\n payload,\n };\n}\n\nexport function updatePayroll(updatedPayroll) {\n const payload = POSTrequest('/agents/Payroll', updatedPayroll);\n return {\n type: PAYROLL_UPDATE,\n payload,\n };\n}\n\nexport function verifyNonAgentAccount(nonAgentAccount) {\n // user can add a non-owned account to their payroll account list after verifying using an account number and bene birthday.\n // this is done so they can contribute to an account for a beneficiary, even if they are not the agent on the account.\n const payload = POSTrequest('/agents/Payroll/Verify', nonAgentAccount);\n return {\n type: NON_AGENT_ACCOUNT_VERIFY,\n payload,\n };\n}","/*\n*\n* PayrollContribution Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { withRouter } from 'react-router-dom';\nimport { cloneDeep } from 'lodash';\nimport parse from 'html-react-parser';\nimport * as validator from 'utils/helpers/form_validation';\n\nimport {\n Button,\n InputAdornment,\n TextField,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n Card,\n CurrencyInput,\n BaseNumberInput,\n currencyFormatter,\n Checkbox,\n notificationShow,\n loadingAnimationHTML,\n createPayrollPdfToNewWindow,\n Dropdown,\n} from '@frontend/common';\n\nimport {\n getPayroll,\n updatePayroll,\n} from 'components/Features/protected/PayrollContribution/actions';\n\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\nimport { AMOUNT, PERCENTAGE } from 'components/Features/protected/PayrollContribution/constants';\n\nimport Instructions from './Instructions';\nimport PayrollTerms from './PayrollTerms';\nimport AddNonAgentAccount from './AddNonAgentAccount';\nimport SkeletonLoader from 'utils/components/SkeletonLoader';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n userDetails: state.session.userDetails,\n payrollContributionData: state.payrollContribution.payrollContributionData,\n usStates: state.static.usStates,\n agentMailingAddress: state.myInfo.agent.Addresses.Mailing,\n accountList: state.accounts.accountList.filter(account => account.permissions.Contribute),\n});\n\n// eslint-disable-next-line react/prop-types\nfunction OptionButton({ label, value, active, disabled, onChange, style }) {\n return (\n onChange(value)}\n >\n {label}\n \n );\n}\n\nexport function Divider() {\n return (
    );\n}\n\nexport class PayrollContribution extends React.Component {\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n agentMailingAddress: PropTypes.object.isRequired,\n accountList: PropTypes.array.isRequired,\n payrollContributionData: PropTypes.object.isRequired,\n usStates: PropTypes.array.isRequired,\n getPayroll: PropTypes.func.isRequired,\n updatePayroll: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n text: PropTypes.shape({\n PayrollContribution: PropTypes.shape({\n btn_add_account: PropTypes.string,\n btn_agree: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_edit: PropTypes.string,\n btn_finish: PropTypes.string,\n btn_instructions: PropTypes.string,\n btn_print: PropTypes.string,\n btn_terms: PropTypes.string,\n err_required: PropTypes.string,\n err_total_amount: PropTypes.string,\n err_total_percent: PropTypes.string,\n head_account_number: PropTypes.string,\n head_beneficiary: PropTypes.string,\n head_other_accounts: PropTypes.string,\n head_own_accounts: PropTypes.string,\n lbl_employee: PropTypes.string,\n lbl_employer: PropTypes.string,\n lbl_pay_period_contribution: PropTypes.string,\n lbl_terms_agree: PropTypes.string,\n lbl_state: PropTypes.string,\n msg_account_added: PropTypes.string,\n msg_payroll_saved: PropTypes.string,\n msg_payroll_updated: PropTypes.string,\n nav_path: PropTypes.string,\n nav_title: PropTypes.string,\n text_current_allocations: PropTypes.string,\n text_important_bank_info: PropTypes.string,\n text_total: PropTypes.string,\n title_amount: PropTypes.string,\n title_employer: PropTypes.string,\n title_payroll_account: PropTypes.string,\n title_payroll_account_type: PropTypes.string,\n title_payroll_routing: PropTypes.string,\n })\n })\n }\n\n state = {\n apiErrors: [],\n isNewContribution: true,\n isEditing: false,\n isLoading: false,\n submitLoading: false,\n statementLoading: false,\n termsOpen: false,\n instructionsOpen: false,\n addAccountModalOpen: false,\n contributionInputType: AMOUNT,\n payPeriodContributionAmount: '',\n termsChecked: false,\n payrollData: {\n Employer: '',\n PayrollAccountAllocations: [],\n EmployerState: ''\n },\n totalAmount: 0,\n totalPercentage: 0,\n formErrors: {},\n showReview: false,\n }\n\n employerHandle = event => {\n const payrollData = cloneDeep(this.state.payrollData);\n payrollData.Employer = event.target.value;\n this.setState({\n payrollData,\n formErrors: { ...this.state.formErrors, employer: '' }\n });\n }\n\n contributionTypeHandle = type => {\n type === AMOUNT ? this.updateAmountWithPercentages() : this.updatePercentageWithAmounts();\n this.setState({ contributionInputType: type });\n }\n\n payPeriodAmountHandle = floatValue => {\n this.setState({\n payPeriodContributionAmount: floatValue,\n formErrors: { ...this.state.formErrors, payPeriodContributionAmount: '' }\n }, () => this.updateAmountWithPercentages());\n }\n\n amountHandle = ({ floatValue = 0 }, rowIndex) => {\n const { payPeriodContributionAmount } = this.state;\n const payrollData = cloneDeep(this.state.payrollData);\n payrollData.PayrollAccountAllocations[rowIndex].Amount = floatValue;\n\n if (payPeriodContributionAmount) {\n payrollData.PayrollAccountAllocations[rowIndex].Percentage = (floatValue / payPeriodContributionAmount) * 100;\n }\n\n const totalAmount = this.getTotalAmount(payrollData);\n const totalPercentage = this.getTotalPercentage(payrollData);\n this.setState({\n payrollData,\n totalAmount,\n totalPercentage,\n formErrors: { ...this.state.formErrors, totalAmount: '', totalPercentage: '' }\n });\n }\n\n percentHandle = (value, rowIndex) => {\n const { payPeriodContributionAmount } = this.state;\n const payrollData = cloneDeep(this.state.payrollData);\n payrollData.PayrollAccountAllocations[rowIndex].Percentage = value;\n\n if (payPeriodContributionAmount) {\n payrollData.PayrollAccountAllocations[rowIndex].Amount = (value / 100) * payPeriodContributionAmount;\n }\n\n const totalAmount = this.getTotalAmount(payrollData);\n const totalPercentage = this.getTotalPercentage(payrollData);\n this.setState({\n payrollData,\n totalAmount,\n totalPercentage,\n formErrors: { ...this.state.formErrors, totalAmount: '', totalPercentage: '' }\n });\n }\n\n stateSelectHandle = (value) => {\n this.setState({\n formErrors: { ...this.state.formErrors, stateCode: '' },\n payrollData: { ...this.state.payrollData, EmployerState: value },\n });\n }\n\n updateAmountWithPercentages = () => {\n const { payPeriodContributionAmount } = this.state;\n const payrollData = cloneDeep(this.state.payrollData);\n\n if (payPeriodContributionAmount) {\n payrollData.PayrollAccountAllocations.map(payrollAccount => {\n return payrollAccount.Amount = payrollAccount.Percentage ? parseFloat(((payrollAccount.Percentage / 100) * payPeriodContributionAmount).toFixed(2)) : 0;\n });\n }\n else {\n payrollData.PayrollAccountAllocations.map(payrollAccount => {\n return payrollAccount.Amount = 0;\n });\n }\n const totalAmount = this.getTotalAmount(payrollData);\n this.setState({ payrollData, totalAmount });\n }\n\n updatePercentageWithAmounts = () => {\n const { payPeriodContributionAmount } = this.state;\n const payrollData = cloneDeep(this.state.payrollData);\n\n if (payPeriodContributionAmount) {\n payrollData.PayrollAccountAllocations.map(payrollAccount => {\n return payrollAccount.Percentage = payrollAccount.Amount ? ((payrollAccount.Amount / payPeriodContributionAmount) * 100) : 0;\n });\n }\n else {\n payrollData.PayrollAccountAllocations.map(payrollAccount => {\n return payrollAccount.Percentage = 0;\n });\n }\n const totalPercentage = this.getTotalPercentage(payrollData);\n this.setState({ payrollData, totalPercentage });\n }\n\n getTotalAmount = payrollData => {\n return payrollData.PayrollAccountAllocations.reduce((total, { Amount }) => total + Amount, 0);\n }\n\n getTotalPercentage = payrollData => {\n return payrollData.PayrollAccountAllocations.reduce((total, { Percentage = 0 }) => total + parseFloat(Percentage), 0);\n }\n\n handleSubmit = () => {\n const { msg_payroll_saved, msg_payroll_updated } = this.props.text.PayrollContribution;\n const notificationMessage = this.state.isEditing ? msg_payroll_updated : msg_payroll_saved;\n const isValid = this.formValidate();\n if (isValid) {\n this.setState({ submitLoading: true });\n this.props.updatePayroll(this.state.payrollData)\n .then(() => {\n // response is updated payrollContributionData so it will get updated in state\n this.setState({\n submitLoading: false,\n payrollData: this.props.payrollContributionData,\n contributionInputType: AMOUNT,\n showReview: true,\n isEditing: false,\n isNewContribution: Boolean(!this.props.payrollContributionData.EffectiveDate),\n });\n this.props.notificationShow(notificationMessage, 'success');\n this.props.getNotifications(); // refreshes app notifications\n })\n .catch(err => {\n this.setState({\n apiErrors: err.payload.data,\n submitLoading: false,\n }, () => this.formValidate());\n });\n }\n }\n\n formValidate = () => {\n const { PayrollContribution } = this.props.text;\n const {\n apiErrors, payrollData: { Employer, EmployerState }, totalAmount, totalPercentage,\n payPeriodContributionAmount, contributionInputType,\n } = this.state;\n const formErrors = {};\n\n if (!Employer) {\n formErrors.employer = PayrollContribution.err_required;\n }\n\n if (contributionInputType === PERCENTAGE && !payPeriodContributionAmount) {\n formErrors.payPeriodContributionAmount = PayrollContribution.err_required;\n }\n if (contributionInputType === PERCENTAGE && totalPercentage.toFixed(2) !== '100.00') {\n formErrors.totalPercentage = PayrollContribution.err_total_percent;\n }\n\n if (!totalAmount) {\n formErrors.totalAmount = PayrollContribution.err_total_amount;\n }\n\n const stateError = validator.stateValidator(EmployerState);\n if (stateError) {\n formErrors.stateCode = stateError;\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(err => {\n if (err.Field.toLowerCase() === 'employer') {\n formErrors.employer = err.Message;\n window.scrollTo(0, 0);\n }\n else {\n formErrors[err.Field] = err.Message;\n }\n });\n }\n\n this.setState({ apiErrors: [], formErrors });\n\n return Object.keys(formErrors).length === 0;\n }\n\n handleAddNonAgentAccount = verifiedAccount => {\n const payrollData = cloneDeep(this.state.payrollData);\n const isAlreadyAdded = payrollData.PayrollAccountAllocations.some(account => account.AccountId === verifiedAccount.AccountId);\n if (!isAlreadyAdded) {\n payrollData.PayrollAccountAllocations.push(verifiedAccount);\n this.props.notificationShow(this.props.text.PayrollContribution.msg_account_added, 'success');\n }\n this.setState({ payrollData, hasNotOwnedAccounts: true, });\n }\n\n viewStatementHandle() {\n const { agentMailingAddress, userDetails } = this.props;\n const { payrollData, totalAmount } = this.state;\n\n const data = {\n ...payrollData,\n totalAmount,\n address: agentMailingAddress,\n agentName: userDetails.name,\n };\n const pdfWindow = window.open('', '_blank'); // needs to be outside of async call to work in Safari\n pdfWindow.document.write(loadingAnimationHTML); // this will get replaced by generated pdf once the api loads all data\n\n createPayrollPdfToNewWindow(data, pdfWindow);\n }\n\n renderEmployeeSection = () => {\n const { text: { PayrollContribution }, usStates, userDetails } = this.props;\n const {\n isLoading, payrollData, formErrors, contributionInputType,\n payPeriodContributionAmount\n } = this.state;\n\n return (\n
    \n
    \n

    {PayrollContribution.lbl_employee}

    \n

    {userDetails.name.toUpperCase()}

    \n
    \n\n
    \n this.employerHandle(e)}\n value={payrollData.Employer || ''}\n style={{ width: '100%' }}\n disabled={isLoading}\n inputProps={{\n maxLength: 40\n }}\n />\n
    \n\n
    \n {contributionInputType === PERCENTAGE &&\n this.payPeriodAmountHandle(floatValue)}\n value={payPeriodContributionAmount || ''}\n style={{ width: '100%', }}\n inputProps={{\n maxLength: '10',\n decimalScale: 2,\n fixedDecimalScale: true,\n thousandSeparator: true,\n allowNegative: false,\n }}\n />\n }\n
    \n\n
    \n ({ value: state.Code, display: state.Name }))}\n errorText={formErrors.stateCode}\n error={Boolean(formErrors.stateCode)}\n value={payrollData.EmployerState || ''}\n onChange={this.stateSelectHandle}\n SelectProps={{\n MenuProps: {\n PaperProps: {\n style: { maxHeight: '300px' }\n }\n }\n }}\n disabled={isLoading}\n\n />\n
    \n
    \n );\n }\n\n renderReviewDetails = () => {\n const { text: { PayrollContribution }, userDetails } = this.props;\n const {\n payrollData: {\n Employer,\n PayrollBankAccountNumber,\n PayrollBankAccountType,\n PayrollRoutingNumber,\n },\n totalAmount,\n showReview,\n } = this.state;\n return (\n
    \n {!showReview &&
    {PayrollContribution.text_current_allocations}
    }\n\n
    \n

    {PayrollContribution.lbl_employee}

    \n

    {userDetails.name.toUpperCase()}

    \n
    \n\n
    \n

    {PayrollContribution.title_employer}

    \n

    {Employer}

    \n
    \n\n
    \n

    {PayrollContribution.title_amount}

    \n

    {currencyFormatter(totalAmount)}

    \n
    \n\n
    \n

    {PayrollContribution.title_payroll_routing}

    \n

    {PayrollRoutingNumber}

    \n
    \n\n
    \n

    {PayrollContribution.title_payroll_account}

    \n

    {PayrollBankAccountNumber}

    \n
    \n\n
    \n

    {PayrollContribution.title_payroll_account_type}

    \n

    {PayrollBankAccountType}

    \n
    \n
    \n );\n }\n\n renderPayrollAccountList = () => {\n const { accountList, text: { PayrollContribution }, } = this.props;\n const {\n isNewContribution, isEditing, hasNotOwnedAccounts, payrollData: { PayrollAccountAllocations },\n contributionInputType, totalAmount, totalPercentage, isLoading, formErrors,\n } = this.state;\n\n return (\n
    \n\n
    \n
    {PayrollContribution.head_account_number}
    \n
    {PayrollContribution.head_beneficiary}
    \n
    \n
    \n this.contributionTypeHandle(AMOUNT)}\n style={{\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n }}\n />\n
    \n
    \n this.contributionTypeHandle(PERCENTAGE)}\n style={{\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n }}\n />\n
    \n
    \n
    \n\n \n\n {isLoading\n ? (\n accountList.map(row => (\n
    \n
    \n
    \n
    \n \n
    \n
    \n ))\n ) : (\n
    \n {hasNotOwnedAccounts &&

    {PayrollContribution.head_own_accounts}

    }\n
    \n {PayrollAccountAllocations.map((row, rowIndex) => (\n row.OwnedAccount &&
    \n
    {`xxxxxx${row.AccountNumber.toString().slice(row.AccountNumber.toString().length - 3)}`}
    \n
    {row.BeneficiaryName.toUpperCase()}
    \n
    \n {contributionInputType === AMOUNT ?\n this.renderDollarInputs(row, rowIndex)\n :\n this.renderPercentageInputs(row, rowIndex)\n }\n
    \n
    \n ))}\n {hasNotOwnedAccounts &&\n <>\n \n

    {PayrollContribution.head_other_accounts}

    \n {PayrollAccountAllocations.map((row, rowIndex) => (\n !row.OwnedAccount &&
    \n
    {`xxxxxx${row.AccountNumber.toString().slice(row.AccountNumber.toString().length - 3)}`}
    \n
    {row.BeneficiaryName.toUpperCase()}
    \n
    \n {contributionInputType === AMOUNT ?\n this.renderDollarInputs(row, rowIndex)\n :\n this.renderPercentageInputs(row, rowIndex)\n }\n
    \n
    \n ))}\n }\n
    \n
    \n )}\n\n \n\n
    \n
    \n {(isEditing || isNewContribution) && !isLoading &&\n this.setState({ addAccountModalOpen: true })}\n >\n {PayrollContribution.btn_add_account}\n \n }\n
    \n
    {PayrollContribution.text_total}
    \n
    \n {contributionInputType === AMOUNT ?\n $,\n inputProps: {\n style: { padding: '10px 12px 10px 0', },\n decimalScale: 2,\n fixedDecimalScale: true,\n thousandSeparator: true,\n allowNegative: false,\n }\n }}\n /> :\n \n }\n
    \n
    \n
    \n );\n }\n\n renderButtons = () => {\n const { btn_agree, btn_cancel, btn_finish, btn_edit, btn_print, } = this.props.text.PayrollContribution;\n const {\n isNewContribution, isEditing, showReview, isLoading, termsChecked,\n submitLoading, statementLoading,\n } = this.state;\n\n const cancelButton = (\n \n {btn_cancel}\n \n );\n const agreeButton = (\n \n \n {btn_agree}\n \n \n );\n const editButton = (\n this.setState({ isEditing: true })}\n >\n {btn_edit}\n \n );\n const printButton = (\n \n this.viewStatementHandle()}\n >\n {btn_print}\n \n \n );\n const finishButton = (\n \n {btn_finish}\n \n );\n\n let buttons = [];\n if (showReview) {\n buttons = [\n printButton,\n finishButton,\n ];\n }\n else if (!isEditing && !isNewContribution) {\n buttons = [\n cancelButton,\n printButton,\n editButton,\n ];\n }\n else if (isEditing || isNewContribution) {\n buttons = [\n cancelButton,\n agreeButton,\n ];\n }\n return buttons;\n }\n\n renderDollarInputs = (row, rowIndex) => {\n const { isEditing, isNewContribution } = this.state;\n\n return (\n this.amountHandle(vals, rowIndex)}\n value={row.Amount || ''}\n style={{ width: '100%', }}\n InputProps={{\n startAdornment: $,\n inputProps: {\n style: { padding: '10px 12px 10px 0', marginTop: 0 },\n margin: 'dense',\n maxLength: '10',\n decimalScale: 2,\n fixedDecimalScale: true,\n thousandSeparator: true,\n allowNegative: false,\n }\n }}\n />\n );\n }\n\n renderPercentageInputs = (row, rowIndex) => {\n const { isEditing, isNewContribution } = this.state;\n\n return (\n this.percentHandle(value, rowIndex)}\n InputProps={{\n endAdornment: %,\n inputProps: {\n decimalScale: 2,\n fixedDecimalScale: true,\n allowNegative: false,\n maxLength: '6',\n style: { padding: '10px 12px' },\n }\n }}\n style={{ width: '100%', }}\n />\n );\n }\n\n componentDidMount() {\n this.setState({ isLoading: true });\n if (Object.keys(this.props.payrollContributionData).length === 0) {\n this.props.getPayroll()\n .then(() => {\n const payrollData = this.props.payrollContributionData;\n const totalAmount = payrollData.PayrollAccountAllocations.reduce((total, { Amount }) => total + Amount, 0);\n const totalPercentage = payrollData.PayrollAccountAllocations.reduce((total, { Percentage = 0 }) => total + Percentage, 0);\n const hasNotOwnedAccounts = payrollData.PayrollAccountAllocations.some(account => !account.OwnedAccount);\n this.setState({\n payrollData,\n totalAmount,\n totalPercentage,\n isLoading: false,\n payPeriodContributionAmount: totalAmount,\n isNewContribution: Boolean(!payrollData.EffectiveDate),\n hasNotOwnedAccounts,\n }, () => this.updatePercentageWithAmounts());\n })\n .catch(() => {\n this.setState({ isLoading: false });\n });\n }\n else {\n const payrollData = this.props.payrollContributionData;\n const totalAmount = payrollData.PayrollAccountAllocations.reduce((total, { Amount }) => total + Amount, 0);\n const totalPercentage = payrollData.PayrollAccountAllocations.reduce((total, { Percentage = 0 }) => total + Percentage, 0);\n const hasNotOwnedAccounts = payrollData.PayrollAccountAllocations.some(account => !account.OwnedAccount);\n this.setState({\n payrollData,\n totalAmount,\n totalPercentage,\n isLoading: false,\n payPeriodContributionAmount: totalAmount,\n isNewContribution: Boolean(!payrollData.EffectiveDate),\n hasNotOwnedAccounts,\n }, () => this.updatePercentageWithAmounts());\n }\n }\n\n render() {\n const { PayrollContribution } = this.props.text;\n const {\n isEditing, showReview, termsOpen, instructionsOpen, isNewContribution,\n addAccountModalOpen, termsChecked,\n } = this.state;\n\n return (\n
    \n <>\n \n {isEditing || isNewContribution ? this.renderEmployeeSection() : this.renderReviewDetails()}\n {!showReview && this.renderPayrollAccountList()}\n\n {isEditing || isNewContribution ? (\n
    \n this.setState({ termsOpen: true })}\n >\n {PayrollContribution.btn_terms}\n \n this.setState({ termsChecked: !termsChecked })}\n color='primary'\n style={{ marginRight: 0 }}\n />\n
    \n ) : (\n

    {parse(PayrollContribution.text_important_bank_info)}

    \n )}\n\n
    \n {this.renderButtons()}\n
    \n
    \n
    \n this.setState({ instructionsOpen: true })}\n >\n {PayrollContribution.btn_instructions}\n \n
    \n \n\n this.setState({ addAccountModalOpen: false })}\n handleAddNonAgentAccount={this.handleAddNonAgentAccount}\n />\n\n this.setState({ termsOpen: false })}\n open={termsOpen}\n />\n\n this.setState({ instructionsOpen: false })}\n open={instructionsOpen}\n />\n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n getNotifications,\n getPayroll,\n updatePayroll,\n notificationShow,\n})(LanguageHOC(PayrollContribution)));\n","/*\n*\n* AddIp Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { addIp } from '../actions';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n Button,\n FormHelperText,\n TextField\n} from '@mui/material';\nimport {\n Checkbox,\n Modal,\n notificationShow,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n interestedParties: state.interestedParties.interestedParties,\n});\n\nexport class AddIp extends React.Component {\n\n static propTypes = {\n addIp: PropTypes.func.isRequired,\n handleIpActions: PropTypes.func.isRequired,\n interestedParties: PropTypes.arrayOf(PropTypes.shape({\n interestedPartyId: PropTypes.number,\n })).isRequired,\n notificationShow: PropTypes.func.isRequired,\n onModalClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n renderAccountSelection: PropTypes.func.isRequired,\n selectedAccounts: PropTypes.array.isRequired,\n text: PropTypes.shape({\n InterestedParties: PropTypes.shape({\n btn_add_ip: PropTypes.string,\n btn_add_ip_read_terms: PropTypes.string,\n btn_agree_terms: PropTypes.string,\n btn_close: PropTypes.string,\n btn_save: PropTypes.string,\n err_add_ip_terms_agree: PropTypes.string,\n err_copy_email: PropTypes.string,\n err_emails_must_match: PropTypes.string,\n lbl_email: PropTypes.string,\n lbl_email_confirm: PropTypes.string,\n msg_ip_added: PropTypes.string,\n text_add_ip_terms: PropTypes.func,\n }),\n }).isRequired,\n validateSelectedAccounts: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n loading: false,\n errors: {},\n newIp: {\n emailAddress1: '',\n emailAddress2: '',\n },\n showTerms: false,\n termsChecked: false,\n };\n\n addIp = () => {\n const { newIp: { emailAddress1, emailAddress2 } } = this.state;\n const isValid = this.formValidate();\n\n if (isValid) {\n const newIpInfo = {\n accountIds: this.props.selectedAccounts.map(acct => acct.accountId),\n emailAddress1,\n emailAddress2,\n };\n this.setState({ loading: true });\n this.props.addIp(newIpInfo)\n .then(() => {\n const newlyAddedIp = this.props.interestedParties[this.props.interestedParties.length - 1];\n this.closeModal();\n this.props.handleIpActions(newlyAddedIp.interestedPartyId, 'successModalOpen');\n this.props.notificationShow(this.props.text.InterestedParties.msg_ip_added, 'success');\n })\n .catch(res => {\n this.setState({\n apiErrors: res.payload.data,\n loading: false\n }, () => this.formValidate());\n });\n }\n }\n\n closeModal = () => {\n this.setState({\n errors: {},\n loading: false,\n newIp: {\n emailAddress1: '',\n emailAddress2: '',\n },\n });\n this.props.onModalClose();\n }\n\n formValidate = () => {\n const { apiErrors, newIp: { emailAddress1, emailAddress2 }, termsChecked, } = this.state;\n const errors = {};\n const accountIsSelected = this.props.validateSelectedAccounts();\n\n errors.emailAddress1 = validator.emailValidator(emailAddress1);\n errors.emailAddress2 = validator.emailValidator(emailAddress2);\n errors.terms = termsChecked ? '' : this.props.text.InterestedParties.err_add_ip_terms_agree;\n\n if (emailAddress1 !== emailAddress2) {\n errors.emailAddress2 = this.props.text.InterestedParties.err_emails_must_match;\n }\n if (errors.terms) { // scroll to bottom of modal if user has not agreed to terms\n const el = document.getElementById('bottomOfModal');\n el.scrollIntoView();\n }\n if (!accountIsSelected || errors.emailAddress1 || errors.emailAddress2) { // scroll to top of modal if there are errors there\n const modalEl = document.getElementById('topOfModal');\n modalEl.scrollIntoView();\n }\n if (apiErrors.length > 0) {\n apiErrors.map(err => errors[err.Field] = err.Message);\n }\n\n\n this.setState({ errors });\n return accountIsSelected && Object.keys(errors).every(err => errors[err] === '');\n }\n\n onEmailChange = e => {\n this.setState({\n apiErrors: [],\n errors: {\n ...this.state.errors,\n [e.target.name]: ''\n },\n newIp: {\n ...this.state.newIp,\n [e.target.name]: e.target.value\n }\n });\n }\n\n preventCopy = (e) => {\n const errors = cloneDeep(this.state.errors);\n const confirmSsnInput = e.target;\n\n confirmSsnInput.onpaste = e => {\n e.preventDefault();\n errors.emailAddress2 = this.props.text.InterestedParties.err_copy_email;\n this.setState({ errors });\n };\n }\n\n render() {\n const { open, renderAccountSelection, text: { InterestedParties } } = this.props;\n const { loading, errors, newIp, showTerms, termsChecked, } = this.state;\n\n return (\n this.addIp(),\n buttonType: 'contained',\n disabled: loading,\n label: InterestedParties.btn_save,\n loading,\n },\n ]}\n maxWidth='md'\n onCloseModal={this.closeModal}\n show={open}\n title={InterestedParties.btn_add_ip}\n includeLeftCancelBtn\n >\n \n \n {renderAccountSelection()}\n\n
    \n this.setState({ showTerms: !showTerms })}\n variant='text'\n color='primary'\n >\n {InterestedParties.btn_add_ip_read_terms}\n \n
    \n {InterestedParties.text_add_ip_terms()}\n
    \n this.setState({ errors: { ...errors, terms: '' }, termsChecked: !termsChecked })}\n />\n {errors.terms && {errors.terms}}\n
    \n \n );\n }\n}\n\n\nexport default connect(select, {\n addIp,\n notificationShow,\n})(LanguageHOC(AddIp));\n","/*\n*\n* DeleteIp Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { deleteIp } from '../actions';\nimport {\n ConfirmModal,\n notificationShow,\n} from '@frontend/common';\n\n\nexport class DeleteIp extends React.Component {\n static propTypes = {\n deleteIp: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onModalClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n selectedIp: PropTypes.object.isRequired,\n text: PropTypes.shape({\n InterestedParties: PropTypes.shape({\n head_delete_ip: PropTypes.string,\n msg_ip_deleted: PropTypes.string,\n text_confirm_delete_ip: PropTypes.func,\n }),\n }).isRequired,\n };\n\n state = {\n loading: false,\n };\n\n closeModal = () => {\n this.setState({ loading: false });\n this.props.onModalClose();\n }\n\n deleteIp = () => {\n const { selectedIp: { interestedPartyId }, text: { InterestedParties } } = this.props;\n this.setState({ loading: true });\n\n this.props.deleteIp(interestedPartyId)\n .then(() => {\n this.closeModal();\n this.props.notificationShow(InterestedParties.msg_ip_deleted, 'success');\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n render() {\n const { open, selectedIp, text: { InterestedParties } } = this.props;\n return (\n \n );\n }\n}\n\n\nexport default connect(null, {\n deleteIp,\n notificationShow,\n})(LanguageHOC(DeleteIp));\n","/*\n*\n* EditIp Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { editIp } from '../actions';\nimport {\n TextField,\n} from '@mui/material';\nimport {\n Modal,\n notificationShow,\n} from '@frontend/common';\n\n\nexport class EditIp extends React.Component {\n\n static propTypes = {\n editIp: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onModalClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n renderAccountSelection: PropTypes.func.isRequired,\n selectableAccounts: PropTypes.array.isRequired,\n selectedIp: PropTypes.object.isRequired,\n text: PropTypes.shape({\n InterestedParties: PropTypes.shape({\n btn_close: PropTypes.string,\n btn_edit_ip: PropTypes.string,\n btn_save: PropTypes.string,\n msg_ip_edited: PropTypes.string,\n }),\n }).isRequired,\n validateSelectedAccounts: PropTypes.func.isRequired,\n };\n\n state = {\n loading: false,\n };\n\n closeModal = () => {\n this.setState({ loading: false });\n this.props.onModalClose();\n }\n\n editIp = () => {\n const { selectableAccounts, selectedIp: { interestedPartyId } } = this.props;\n const isValid = this.props.validateSelectedAccounts();\n\n if (isValid) {\n this.setState({ loading: true });\n const accountIds = selectableAccounts.filter(acct => acct.selected).map(acct => acct.accountId);\n\n this.props.editIp({ interestedPartyId, accountIds })\n .then(() => {\n this.closeModal();\n this.props.notificationShow(this.props.text.InterestedParties.msg_ip_edited, 'success');\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n render() {\n const { open, selectedIp, renderAccountSelection, text: { InterestedParties } } = this.props;\n const { loading } = this.state;\n\n return (\n \n \n {renderAccountSelection()}\n \n );\n }\n}\n\n\nexport default connect(null, {\n editIp,\n notificationShow,\n})(LanguageHOC(EditIp));\n","/*\n*\n* LearnMore Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Icon,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\n\nexport function LearnMore({ text: { InterestedParties }, onClose, open }) {\n return (\n \n
    \n \n

    {InterestedParties.head_interested_parties}

    \n

    {InterestedParties.text_learn_more()}

    \n
    \n {InterestedParties.text_faq_questions.map((question, idx) => (\n \n expand_less}\n id='faq1-header'\n >\n {question}\n \n {InterestedParties.text_faq_answers()[idx]}\n \n ))}\n
    \n );\n}\n\nLearnMore.propTypes = {\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n InterestedParties: PropTypes.shape({\n btn_add_ip: PropTypes.string,\n head_interested_parties: PropTypes.string,\n text_faq_answers: PropTypes.func,\n text_faq_questions: PropTypes.array,\n text_learn_more: PropTypes.func,\n }),\n }).isRequired,\n};\n\nexport default LanguageHOC(LearnMore);","/*\n*\n* InterestedParties Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport AddIp from './AddIp';\nimport DeleteIp from './DeleteIp';\nimport EditIp from './EditIp';\nimport LearnMore from './LearnMore';\nimport {\n getInterestedParties,\n resendIpEmail,\n} from './actions';\nimport { get2FAPrecondition, getRSAPrecondition } from 'components/AppRoot/Navigation/actions';\nimport { protectAction } from 'utils/helpers/multifactor_handler';\nimport { MULTIFACTOR_TYPE } from 'components/AppRoot/Navigation/constants';\nimport {\n Button,\n FormHelperText,\n Paper,\n} from '@mui/material';\nimport {\n Checkbox,\n IconBtnTooltip,\n LoadingOverlay,\n Modal,\n notificationShow,\n \n SmartTable,\n TableContainer,\n TableHeader,\n TablePagination,\n TableRows,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountList: state.accounts.accountList.filter(acct => !acct.interestedPartyId), // only includes accounts where user is AO of account\n interestedParties: state.interestedParties.interestedParties,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n claims: state.session.claims,\n});\n\nexport class InterestedParties extends React.Component {\n\n static propTypes = {\n accountList: PropTypes.array.isRequired,\n getInterestedParties: PropTypes.func.isRequired,\n get2FAPrecondition: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n claims: PropTypes.object.isRequired,\n interestedParties: PropTypes.arrayOf(PropTypes.shape({\n accountsDetail: PropTypes.arrayOf(PropTypes.shape({\n accountNumber: PropTypes.number\n })),\n emailAddress1: PropTypes.string,\n firstName: PropTypes.string,\n interestedPartyId: PropTypes.number,\n lastName: PropTypes.string,\n pin: PropTypes.string,\n status: PropTypes.string,\n })).isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n resendIpEmail: PropTypes.func.isRequired,\n text: PropTypes.shape({\n InterestedParties: PropTypes.shape({\n btn_add_ip: PropTypes.string,\n btn_delete_ip: PropTypes.string,\n btn_edit_ip: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_resend_email: PropTypes.string,\n err_select_account: PropTypes.string,\n head_account: PropTypes.string,\n head_accounts: PropTypes.string,\n head_bene_name: PropTypes.string,\n head_email: PropTypes.string,\n head_email_sent: PropTypes.string,\n head_interested_parties: PropTypes.string,\n head_name: PropTypes.string,\n head_opt_name: PropTypes.string,\n head_pin: PropTypes.string,\n head_read_only: PropTypes.string,\n head_status: PropTypes.string,\n text_setup_ip_access: PropTypes.string,\n text_success: PropTypes.array,\n }),\n }).isRequired,\n };\n\n state = {\n addModalOpen: false,\n deleteModalOpen: false,\n editModalOpen: false,\n errors: {},\n learnMoreOpen: false,\n loading: false,\n selectableAccounts: [],\n selectedAccounts: [],\n selectedIp: {},\n successModalOpen: false,\n\n hasPrecondition: false,\n preIpId: {},\n preModalName: ''\n };\n\n handleIpActions = (ipId, modalName) => {\n this.setState({ preIpId: ipId, preModalName: modalName });\n const multiStatus = protectAction(this.props.claims);\n if (multiStatus === MULTIFACTOR_TYPE.TWO_FACTOR) {\n this.setState(\n { hasPrecondition: true },\n () => this.props.get2FAPrecondition().catch(() => null)\n );\n }\n else if (multiStatus === MULTIFACTOR_TYPE.RSA)\n this.setState(\n { hasPrecondition: true },\n () => this.props.getRSAPrecondition().catch(() => null)\n );\n else {\n const selectedIp = this.props.interestedParties.find(ip => ip.interestedPartyId === ipId) || {};\n this.setState({\n hasPrecondition: false,\n [modalName]: true,\n selectedIp,\n }, () => this.setSelectedAccounts());\n }\n }\n\n onAccountSelect = accountId => {\n const idx = this.state.selectableAccounts.findIndex(acct => acct.accountId === accountId);\n const updatedAccountSelections = cloneDeep(this.state.selectableAccounts);\n updatedAccountSelections[idx].selected = !updatedAccountSelections[idx].selected;\n\n this.setState({\n errors: {},\n selectableAccounts: updatedAccountSelections,\n selectedAccounts: updatedAccountSelections.filter(acct => acct.selected)\n });\n }\n\n onModalClose = () => {\n this.setState({\n addModalOpen: false,\n deleteModalOpen: false,\n editModalOpen: false,\n errors: {},\n selectedAccounts: [],\n successModalOpen: false,\n });\n }\n\n renderAccountSelection = () => {\n const { errors, selectableAccounts } = this.state;\n const { InterestedParties } = this.props.text;\n \n return selectableAccounts.length > 0 && (\n
    \n\n \n {errors.accountSelection}\n \n\n (\n
    \n this.onAccountSelect(row.accountId)}\n />\n
    \n )\n },\n ]}\n rows={selectableAccounts}\n idKey='accountId'\n loading={false}\n >\n \n \n \n \n \n \n
    \n );\n }\n\n renderAddIpBtn = () => {\n return ;\n }\n\n renderInfoButtons = () => {\n const { isAgent_AccessRole, interestedParties } = this.props;\n return (\n
    \n this.setState({ learnMoreOpen: true })}\n >\n {this.props.text.InterestedParties.btn_learn_more}\n \n {isAgent_AccessRole && interestedParties.length === 0 && this.renderAddIpBtn()}\n
    \n );\n }\n\n resendIpEmail = ipId => {\n this.setState({\n loading: true,\n selectedIp: this.props.interestedParties.find(ip => ip.interestedPartyId === ipId),\n });\n\n this.props.resendIpEmail(ipId)\n .then(() => {\n this.setState({\n loading: false,\n selectedIp: this.props.interestedParties.find(ip => ip.interestedPartyId === ipId),\n successModalOpen: true,\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n setSelectedAccounts = () => {\n const { selectedIp } = this.state;\n const selectableAccounts = [];\n this.props.accountList.forEach(acct => {\n if (acct.status === 'Open') {\n selectableAccounts.push({\n accountId: acct.accountId,\n accountNumber: acct.accountNumber,\n beneficiaryName: acct.beneficiary.name,\n optionName: acct.option.name,\n selected: selectedIp.accountIds ? selectedIp.accountIds.includes(acct.accountId) : false,\n });\n }\n });\n\n this.setState({\n selectableAccounts,\n selectedAccounts: selectableAccounts.filter(acct => acct.selected),\n });\n }\n\n validateSelectedAccounts = () => {\n const errors = {};\n\n if (this.state.selectedAccounts.length === 0) {\n errors.accountSelection = this.props.text.InterestedParties.err_select_account;\n }\n this.setState({ errors });\n return Object.keys(errors).length === 0;\n }\n\n componentDidMount() {\n if (this.props.interestedParties.length === 0) {\n this.setState({ loading: true });\n this.props.getInterestedParties()\n .finally(() => this.setState({ loading: false }));\n }\n }\n\n componentDidUpdate() {\n const multiStatus = protectAction(this.props.claims);\n if (this.state.hasPrecondition && multiStatus === MULTIFACTOR_TYPE.AUTH) {\n this.handleIpActions(this.state.preIpId, this.state.preModalName);\n }\n }\n\n render() {\n const { interestedParties, text: { InterestedParties } } = this.props;\n const { addModalOpen, deleteModalOpen, editModalOpen, learnMoreOpen, loading, successModalOpen, selectableAccounts, selectedAccounts, selectedIp } = this.state;\n\n return (\n \n {loading ?\n
    \n \n
    \n :\n
    \n {interestedParties.length > 0 ?\n \n
    \n {this.renderAddIpBtn()}\n
    \n \n
    {InterestedParties.head_interested_parties}
    \n {this.props.interestedParties.map((ip, idx) => (\n
    \n
    \n
    \n \n

    {ip.firstName} {ip.lastName}

    \n
    \n
    \n \n

    {ip.emailAddress1}

    \n
    \n
    \n \n

    {ip.pin}

    \n
    \n
    \n \n

    {ip.status}

    \n
    \n
    \n \n

    \n {ip.accountsDetail.map((acct, idx) => idx === ip.accountsDetail.length - 1 ? `${acct.accountNumber}` : `${acct.accountNumber}, `)} {/* do not add comma and space for last account num */}\n

    \n
    \n
    \n {ip.status !== 'Activated' && (\n this.resendIpEmail(ip.interestedPartyId)}\n title={InterestedParties.btn_resend_email}\n />\n )}\n this.handleIpActions(ip.interestedPartyId, 'editModalOpen')}\n title={InterestedParties.btn_edit_ip}\n />\n this.handleIpActions(ip.interestedPartyId, 'deleteModalOpen')}\n title={InterestedParties.btn_delete_ip}\n />\n
    \n
    \n {idx !== this.props.interestedParties.length - 1 &&
    } {/* do not add divider after last account */}\n
    \n ))}\n
    \n {this.renderInfoButtons()}\n
    \n :\n
    \n

    {InterestedParties.text_setup_ip_access}

    \n {this.renderInfoButtons()}\n
    \n }\n
    \n }\n\n this.setState({ learnMoreOpen: false })}\n open={learnMoreOpen}\n />\n \n {/* ADD INTERESTED PARTY MODAL */}\n this.renderAccountSelection()}\n selectedAccounts={selectedAccounts}\n validateSelectedAccounts={this.validateSelectedAccounts}\n />\n \n {/* DELETE INTERESTED PARTY MODAL */}\n \n\n {/* EDIT INTERESTED PARTY MODAL */}\n this.renderAccountSelection()}\n selectableAccounts={selectableAccounts}\n selectedAccounts={selectedAccounts}\n selectedIp={selectedIp}\n validateSelectedAccounts={this.validateSelectedAccounts}\n />\n\n {/* RESEND EMAIL / SUCCESS ON ADDING NEW IP MODAL */}\n \n

    {InterestedParties.text_success[0]}

    \n

    {InterestedParties.text_success[1]}

    \n

    {selectedIp.pin}

    \n

    {InterestedParties.text_success[2]}

    \n \n\n
    \n );\n }\n}\n\n\nexport default connect(select, {\n getInterestedParties,\n get2FAPrecondition,\n getRSAPrecondition,\n notificationShow,\n resendIpEmail,\n})(LanguageHOC(InterestedParties));\n","/*\n*\n* ChangeEmailWhileBlocked Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { camelCase } from 'lodash';\nimport { TextField } from '@mui/material';\nimport {\n Modal,\n notificationShow,\n} from '@frontend/common';\nimport { emailValidator } from 'utils/helpers/form_validation';\nimport { changeEmail } from 'components/Features/protected/MyInfo/actions';\nimport {\n clearStore,\n userLogout\n} from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n emailAddress: state.session.userDetails.email,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\n\nexport class ChangeEmailWhileBlocked extends React.Component {\n\n static propTypes = {\n changeEmail: PropTypes.func.isRequired,\n changeEmailModalOpen: PropTypes.bool.isRequired,\n clearStore: PropTypes.func.isRequired,\n closeChangeEmailModal: PropTypes.func.isRequired,\n emailAddress: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n ChangeEmailWhileBlocked: PropTypes.shape({\n text_verify_email1: PropTypes.string,\n text_verify_email2: PropTypes.string,\n text_verify_email3: PropTypes.string,\n }),\n EmailCard: PropTypes.shape({\n btn_cancel_change_email: PropTypes.string,\n btn_confirm_change_email: PropTypes.string,\n err_different_email: PropTypes.string,\n err_emails_must_match: PropTypes.string,\n err_required: PropTypes.string,\n err_valid_email: PropTypes.string,\n head_verify_email: PropTypes.string,\n lbl_new_email: PropTypes.string,\n lbl_new_email_confirm: PropTypes.string,\n msg_check_email_to_verify: PropTypes.func,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n formErrors: [],\n isSaving: false,\n newEmail: '',\n newEmailConfirm: '',\n };\n \n emailChange = () => {\n const { newEmail } = this.state;\n\n if (this.formValidate()) {\n this.setState({ isSaving: true });\n this.props.changeEmail(newEmail)\n .then(() => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.clearStore();\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n this.props.notificationShow(this.props.text.EmailCard.msg_check_email_to_verify(this.props.supportNumber), 'warning');\n });\n })\n .catch(response => {\n this.setState({\n apiErrors: response.payload.data,\n changeEmailModalOpen: false,\n isSaving: false\n }, () => this.formValidate());\n });\n }\n }\n errorGet = name => {\n const error = this.state.formErrors.find(error => error.name === name);\n return error ? error.message : '';\n }\n\n formValidate = () => {\n const { apiErrors, newEmail, newEmailConfirm } = this.state;\n const { err_different_email, err_emails_must_match, err_required } = this.props.text.EmailCard;\n const formErrors = [];\n\n if (!newEmail) {\n formErrors.push({\n name: 'newEmail',\n message: err_required\n });\n }\n\n if (!newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_required\n });\n }\n\n if (newEmail === this.props.emailAddress) {\n formErrors.push({\n name: 'newEmail',\n message: err_different_email\n });\n }\n\n if (newEmail) {\n const emailError = emailValidator(newEmail);\n emailError && formErrors.push({\n name: 'newEmail',\n message: emailError\n });\n }\n\n if (newEmail !== newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_emails_must_match\n });\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'Email') {\n formErrors.push({\n name: 'newEmail',\n message: error.Message\n });\n }\n else {\n formErrors.push({\n name: camelCase(error.Field),\n message: error.Message\n });\n }\n });\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return formErrors.length === 0;\n }\n\n onInputChange = (event, name) => {\n this.setState({\n [name]: event.target.value,\n formErrors: this.state.formErrors.filter(error => error.name !== name)\n });\n }\n\n render() {\n const { changeEmailModalOpen, closeChangeEmailModal, emailAddress, text: { ChangeEmailWhileBlocked, EmailCard } } = this.props;\n const { newEmail, newEmailConfirm } = this.state;\n\n return (\n closeChangeEmailModal(),\n label: EmailCard.btn_cancel_change_email,\n disabled: this.state.isSaving,\n }, {\n action: () => this.emailChange(),\n buttonType: 'contained',\n label: EmailCard.btn_confirm_change_email,\n loading: this.state.isSaving,\n }\n ]}\n DialogProps={{ 'aria-labelledby': EmailCard.btn_confirm_change_email }}\n onCloseModal={closeChangeEmailModal}\n show={changeEmailModalOpen}\n title={EmailCard.head_verify_email}\n >\n
    \n

    {ChangeEmailWhileBlocked.text_verify_email1}

    \n

    {emailAddress}

    \n

    {ChangeEmailWhileBlocked.text_verify_email2}

    \n

    {ChangeEmailWhileBlocked.text_verify_email3}

    \n this.onInputChange(e, 'newEmail')}\n value={newEmail}\n />\n this.onInputChange(e, 'newEmailConfirm')}\n value={newEmailConfirm}\n />\n
    \n \n );\n }\n}\n\n\nexport default connect(select, {\n changeEmail,\n clearStore,\n notificationShow,\n userLogout,\n})(LanguageHOC(ChangeEmailWhileBlocked));\n","/*\n*\n* AddMissingEmailWhileBlocked Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { camelCase } from 'lodash';\nimport { TextField } from '@mui/material';\nimport {\n Modal,\n notificationShow,\n} from '@frontend/common';\nimport { emailValidator } from 'utils/helpers/form_validation';\nimport { changeEmail } from 'components/Features/protected/MyInfo/actions';\nimport {\n clearStore,\n userLogout\n} from 'components/AppRoot/Navigation/actions';\n\nconst select = (state) => ({\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\n\nexport class AddMissingEmailWhileBlocked extends React.Component {\n\n static propTypes = {\n changeEmail: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n AddMissingEmailWhileBlocked: PropTypes.shape({\n text_missing_email1: PropTypes.string,\n text_missing_email2: PropTypes.string,\n text_missing_email3: PropTypes.string,\n }),\n EmailCard: PropTypes.shape({\n btn_cancel_change_email: PropTypes.string,\n btn_confirm_submit_email: PropTypes.string,\n btn_resend_email: PropTypes.string,\n err_different_email: PropTypes.string,\n err_emails_must_match: PropTypes.string,\n err_required: PropTypes.string,\n err_valid_email: PropTypes.string,\n head_missing_email: PropTypes.string,\n lbl_new_email: PropTypes.string,\n lbl_new_email_confirm: PropTypes.string,\n msg_check_email_to_verify: PropTypes.func,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n };\n\n state = {\n apiErrors: [],\n formErrors: [],\n isSaving: false,\n newEmail: '',\n newEmailConfirm: '',\n };\n \n emailSubmit = () => {\n const { newEmail } = this.state;\n\n if (this.formValidate()) {\n this.setState({ isSaving: true });\n this.props.changeEmail(newEmail)\n .then(() => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.props.clearStore();\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n this.props.notificationShow(this.props.text.EmailCard.msg_check_email_to_verify(this.props.supportNumber), 'warning');\n });\n })\n .catch(response => {\n this.setState({\n apiErrors: response.payload.data,\n isSaving: false\n }, () => this.formValidate());\n });\n }\n }\n errorGet = name => {\n const error = this.state.formErrors.find(error => error.name === name);\n return error ? error.message : '';\n }\n\n formValidate = () => {\n const { apiErrors, newEmail, newEmailConfirm } = this.state;\n const { err_emails_must_match, err_required } = this.props.text.EmailCard;\n const formErrors = [];\n\n if (!newEmail) {\n formErrors.push({\n name: 'newEmail',\n message: err_required\n });\n }\n\n if (!newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_required\n });\n }\n\n if (newEmail) {\n const emailError = emailValidator(newEmail);\n emailError && formErrors.push({\n name: 'newEmail',\n message: emailError\n });\n }\n\n if (newEmail !== newEmailConfirm) {\n formErrors.push({\n name: 'newEmailConfirm',\n message: err_emails_must_match\n });\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field === 'Email') {\n formErrors.push({\n name: 'newEmail',\n message: error.Message\n });\n }\n else {\n formErrors.push({\n name: camelCase(error.Field),\n message: error.Message\n });\n }\n });\n }\n\n this.setState({\n apiErrors: [],\n formErrors\n });\n\n return formErrors.length === 0;\n }\n\n onInputChange = (event, name) => {\n this.setState({\n [name]: event.target.value,\n formErrors: this.state.formErrors.filter(error => error.name !== name)\n });\n }\n\n render() {\n const { AddMissingEmailWhileBlocked, EmailCard, } = this.props.text;\n const { newEmail, newEmailConfirm } = this.state;\n\n return (\n this.emailSubmit(),\n buttonType: 'contained',\n label: EmailCard.btn_confirm_submit_email,\n loading: this.state.isSaving,\n }\n ]}\n DialogProps={{ 'aria-labelledby': EmailCard.btn_confirm_submit_email }}\n onCloseModal={() => null}\n show={true}\n title={EmailCard.head_missing_email}\n >\n
    \n

    {AddMissingEmailWhileBlocked.text_missing_email1}

    \n

    {AddMissingEmailWhileBlocked.text_missing_email2}

    \n

    {AddMissingEmailWhileBlocked.text_missing_email3}

    \n this.onInputChange(e, 'newEmail')}\n value={newEmail}\n />\n this.onInputChange(e, 'newEmailConfirm')}\n value={newEmailConfirm}\n />\n
    \n \n );\n }\n}\n\n\nexport default connect(select, {\n changeEmail,\n clearStore,\n notificationShow,\n userLogout,\n})(LanguageHOC(AddMissingEmailWhileBlocked));\n","/*\n*\n* VerifyEmail Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { \n Button,\n Paper \n} from '@mui/material';\nimport {\n Modal,\n notificationShow\n} from '@frontend/common';\nimport {\n clearStore,\n resendEmailValidation,\n userLogout\n} from 'components/AppRoot/Navigation/actions';\nimport ChangeEmailWhileBlocked from './ChangeEmailWhileBlocked';\nimport AddMissingEmailWhileBlocked from './AddMissingEmailWhileBlocked';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n emailAddress: state.session.userDetails.email,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\n\nexport class VerifyEmail extends React.Component {\n\n static propTypes = {\n clearStore: PropTypes.func.isRequired,\n emailAddress: PropTypes.string.isRequired,\n notificationShow: PropTypes.func.isRequired,\n resendEmailValidation: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n nav_path: PropTypes.string,\n }),\n VerifyEmail: PropTypes.shape({\n btn_change_email: PropTypes.string,\n btn_resend_email: PropTypes.string,\n head_validating_email_while_logged_in: PropTypes.string,\n msg_email_resent: PropTypes.string,\n msg_validating_while_logged_in: PropTypes.string,\n text_verify_email1: PropTypes.string,\n text_verify_email2: PropTypes.func,\n text_verify_email3: PropTypes.string,\n }),\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n validatingEmailWhileLoggedIn: PropTypes.bool.isRequired,\n isEmailMissing: PropTypes.bool.isRequired,\n };\n\n state = {\n changeEmailModalOpen: false,\n isResending: false,\n validatingEmailWhileLoggedInModalOpen: false,\n };\n\n emailResend = () => {\n this.setState({ isResending: true });\n this.props.resendEmailValidation()\n .then(() => {\n this.props.notificationShow(this.props.text.VerifyEmail.msg_email_resent, 'success');\n this.setState({ isResending: false });\n })\n .catch((response) => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => {\n this.setState({ isResending: false });\n this.props.clearStore();\n this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success');\n response.payload.data.forEach(error => this.props.notificationShow(error.Message, 'error'));\n });\n });\n }\n\n closeChangeEmailModal = () => {\n this.setState({ changeEmailModalOpen: false });\n }\n\n openChangeEmailModal = () => {\n this.setState({ changeEmailModalOpen: true });\n }\n\n componentDidMount() {\n if (this.props.validatingEmailWhileLoggedIn) {\n this.setState({ validatingEmailWhileLoggedInModalOpen: true });\n }\n }\n\n render() {\n const { isEmailMissing, emailAddress, supportNumber, text: { VerifyEmail } } = this.props;\n const { changeEmailModalOpen, isResending, validatingEmailWhileLoggedInModalOpen } = this.state;\n return (\n isEmailMissing ? // just display missing email modal\n \n : // otherwise, display verify email with resend and change options\n <>\n \n
    \n
    \n

    {emailAddress}

    \n this.openChangeEmailModal()}\n disabled={isResending}\n >\n {VerifyEmail.btn_change_email}\n
    \n {''}\n
    \n

    {VerifyEmail.text_verify_email1}

    \n

    {VerifyEmail.text_verify_email2(supportNumber)}

    \n

    {VerifyEmail.text_verify_email3}

    \n
    \n this.emailResend()}\n >\n {VerifyEmail.btn_resend_email}\n \n
    \n
    \n
    \n\n this.setState({ validatingEmailWhileLoggedInModalOpen: false })}\n show={validatingEmailWhileLoggedInModalOpen}\n title={VerifyEmail.head_validating_email_while_logged_in}\n >\n {VerifyEmail.msg_validating_while_logged_in}\n \n\n \n \n );\n }\n}\n\n\nexport default connect(select, {\n clearStore,\n notificationShow,\n resendEmailValidation,\n userLogout,\n})(LanguageHOC(VerifyEmail));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport dayjs from 'dayjs';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { getRegisteredDevice } from 'utils/helpers/registered_device_handler';\n\nimport {\n Button,\n FormControl,\n FormGroup,\n FormControlLabel,\n FormHelperText,\n Checkbox,\n Radio,\n RadioGroup,\n TextField,\n Slide\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n DatePicker,\n notificationShow\n} from '@frontend/common';\n\nimport {\n getDeviceToken,\n getSecurityQuestion,\n securityQuestionAnswer,\n getRSAStatus,\n rsaVerifyBirthday,\n getRSAQuestionSet,\n rsaAnswers\n} from '../../actions';\n\nimport {\n clearStore,\n userLogout,\n} from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n isIdentityVerified: state.multifactor.isIdentityVerified,\n isSecurityQuestionsLockedOut: state.multifactor.isSecurityQuestionsLockedOut,\n isRSALockedOut: state.multifactor.isRSALockedOut,\n isDOBValid: state.multifactor.isDOBValid,\n challengeQuestion: state.multifactor.challengeQuestion,\n challengeQuestionCount: state.multifactor.challengeQuestionCount,\n RSADOB: state.multifactor.string,\n RSAQuestionSet: state.multifactor.RSAQuestionSet,\n userDetails: state.session.userDetails,\n claims: state.session.claims\n});\n\nexport class VerifyIdentity extends Component {\n\n static propTypes = {\n getDeviceToken: PropTypes.func.isRequired,\n getRSAQuestionSet: PropTypes.func.isRequired,\n getSecurityQuestion: PropTypes.func.isRequired,\n securityQuestionAnswer: PropTypes.func.isRequired,\n getRSAStatus: PropTypes.func.isRequired,\n rsaVerifyBirthday: PropTypes.func.isRequired,\n rsaAnswers: PropTypes.func.isRequired,\n isIdentityVerified: PropTypes.bool.isRequired,\n isDOBValid: PropTypes.bool.isRequired,\n isSecurityQuestionsLockedOut: PropTypes.bool.isRequired,\n isRSALockedOut: PropTypes.bool.isRequired,\n challengeQuestion: PropTypes.string,\n challengeQuestionCount: PropTypes.number.isRequired,\n RSAQuestionSet: PropTypes.object.isRequired,\n clearStore: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n claims: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_change_dob: PropTypes.string,\n btn_confirm_dob: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_logout: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_submit_answer: PropTypes.string,\n btn_verify_dob: PropTypes.string,\n err_incorrect_answer: PropTypes.string,\n err_required: PropTypes.string,\n register_path: PropTypes.string,\n lbl_ao_name: PropTypes.string,\n lbl_ao_dob: PropTypes.string,\n lbl_question: PropTypes.string,\n msg_discrepancy: PropTypes.string,\n msg_dob_select: PropTypes.string,\n msg_locked_out: PropTypes.string,\n msg_maintain_security: PropTypes.string,\n msg_not_verified: PropTypes.string,\n msg_protection: PropTypes.string,\n msg_rsa_select: PropTypes.string,\n msg_unable_verify: PropTypes.string,\n verify_identity_path: PropTypes.string,\n verify_identity_title: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n isLoading: true,\n isUnableToVerify: false,\n hasRSADOBerror: false,\n RSADOBError: '',\n\n isSecurityAnswer: false,\n hasSecurityQuestion: false,\n securityQuestionError: '',\n SecurityAnswer: '',\n isRSADOB: false, // should render RSA DOB\n hasConfirmedDOB: false, // is RSA DOB confirmed by API\n RSADOB: null, // actual RSA date\n isRSAQuestions: false, // should render RSA Questions\n\n hasDisplayMessage: false,\n displayMessage: '',\n\n questionSet: {},\n regMethod: '',\n };\n\n checkRegisteredDevice() {\n const { claims, text: { Multifactor } } = this.props;\n if (claims.IdentityVerification !== 'Pending') { // check claim for RSA Bypass\n this.props.history.push(Multifactor.register_path);\n }\n else {\n const deviceGUID = getRegisteredDevice();\n if (deviceGUID) {\n this.props.getDeviceToken(deviceGUID)\n .then(() => {\n if (this.props.isIdentityVerified) {\n this.props.history.push(Multifactor.register_path);\n }\n else {\n this.challengeQuestions();\n }\n });\n }\n else {\n this.challengeQuestions();\n }\n }\n }\n\n challengeQuestions() {\n this.props.getSecurityQuestion()\n .then(() => {\n if (this.props.isSecurityQuestionsLockedOut && this.props.isRSALockedOut) {\n this.setState({\n isLoading: false,\n hasDisplayMessage: true,\n displayMessage: this.props.text.Multifactor.msg_unable_verify\n });\n }\n else if (!this.props.challengeQuestion) {\n this.props.getRSAStatus()\n .then(() => {\n if (this.props.isRSALockedOut) {\n this.setState({\n isLoading: false,\n hasDisplayMessage: true,\n displayMessage: this.props.text.Multifactor.msg_unable_verify\n });\n }\n else {\n this.setState({\n isLoading: false,\n hasSecurityQuestion: false,\n isRSADOB: true\n }, () => this.renderRSADOB()\n );\n }\n });\n }\n else {\n this.setState({ isLoading: false, hasSecurityQuestion: true });\n }\n });\n }\n\n sendSecurityAnswer = e => {\n e.preventDefault();\n const { SecurityAnswer } = this.state;\n const { text: { Multifactor } } = this.props;\n if (SecurityAnswer) {\n const answer = { answer: SecurityAnswer };\n this.setState({ isLoading: true, securityQuestionError: '' });\n this.props.securityQuestionAnswer(answer)\n .then(() => {\n if (this.props.isIdentityVerified) {\n this.props.history.push(this.props.text.Multifactor.register_path);\n }\n else if (this.props.isSecurityQuestionsLockedOut) {\n this.props.getRSAStatus()\n .then(() => {\n if (this.props.isRSALockedOut) {\n this.setState({\n isLoading: false,\n hasSecurityQuestion: false,\n isRSADOB: false,\n hasDisplayMessage: true,\n displayMessage: this.props.text.Multifactor.msg_unable_verify\n });\n }\n else {\n this.setState({\n isLoading: false,\n hasSecurityQuestion: false,\n isRSADOB: true\n });\n }\n });\n }\n else {\n const incorrectAnswerMsg = this.props.challengeQuestionCount > 0\n ? Multifactor.err_incorrect_answer\n : '';\n\n this.props.getSecurityQuestion()\n .then(() => {\n this.setState({\n isLoading: false,\n SecurityAnswer: '',\n hasSecurityQuestion: true,\n isSecurityAnswer: true,\n securityQuestionError: incorrectAnswerMsg\n });\n });\n }\n });\n }\n else {\n this.setState({ isSecurityAnswer: true, securityQuestionError: Multifactor.err_required });\n }\n }\n\n handleInput = name => e => {\n if (name === 'SecurityAnswer') {\n this.setState({ isSecurityAnswer: false, securityQuestionError: '' });\n }\n this.setState({ [name]: e.target.value });\n }\n\n renderSecurityQuestion() {\n const { challengeQuestion, text: { Multifactor } } = this.props;\n const { isSecurityAnswer, SecurityAnswer, securityQuestionError, isLoading } = this.state;\n return (\n \n

    {Multifactor.msg_not_verified}

    \n
    \n
    {Multifactor.lbl_question}
    \n
    {challengeQuestion}
    \n
    \n \n
    \n
    \n \n {Multifactor.btn_submit_answer}\n \n \n );\n }\n\n onInputChange = (name, e) => {\n const dob = e.target.value ? dayjs(e.target.value).format('MM/DD/YYYY') : null;\n this.setState({ [name]: dob, hasRSADOBerror: false, RSADOBError: '' });\n }\n\n sendRSADOB = e => {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const { hasConfirmedDOB, RSADOB } = this.state;\n if (!dayjs(RSADOB).isValid()) {\n this.setState({\n hasRSADOBerror: true,\n RSADOBError: Multifactor.err_required\n });\n }\n else {\n if (!hasConfirmedDOB) {\n this.setState({\n isLoading: false,\n hasSecurityQuestion: false,\n hasDisplayMessage: false,\n hasConfirmedDOB: true,\n isRSADOB: true,\n }, () => this.renderRSADOB());\n }\n else {\n const birthdate = { birthdate: dayjs(this.state.RSADOB).format('YYYY-MM-DD') };\n this.setState({ isLoading: true });\n this.props.rsaVerifyBirthday(birthdate)\n .then(() => {\n if (this.props.isRSALockedOut) { // 2 bad DOB's provided\n this.setState({ isLoading: false });\n this.props.notificationShow(Multifactor.msg_unable_verify, 'error');\n setTimeout(() => this.logOut(), 4000);\n }\n else if (this.props.isDOBValid) { // Good RSA date, get RSA questions\n this.props.getRSAQuestionSet()\n .then(() => {\n if (this.props.RSAQuestionSet.length === 0 || this.props.isRSALockedOut) { // API returns no RSA Questions\n this.setState({ isLoading: false });\n this.props.notificationShow(Multifactor.msg_unable_verify, 'error');\n setTimeout(() => this.logOut(), 4000);\n }\n else {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n hasDisplayMessage: false,\n isRSAQuestions: true,\n questionSet: this.props.RSAQuestionSet\n });\n }\n });\n }\n else { // RSA confirmed invalid date, display discrepancy message\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n hasConfirmedDOB: false,\n isRSAQuestions: false,\n hasDisplayMessage: true,\n displayMessage: Multifactor.msg_discrepancy\n });\n }\n });\n }\n }\n }\n\n renderRSADOB() {\n const { userDetails, text: { Multifactor } } = this.props;\n const { hasConfirmedDOB, hasRSADOBerror, RSADOB, RSADOBError, isLoading } = this.state;\n if (hasConfirmedDOB) {\n return (\n \n

    {Multifactor.msg_maintain_security}

    \n

    {Multifactor.msg_protection}

    \n
    \n
    {Multifactor.lbl_ao_name}
    \n
    {userDetails.name}
    \n
    {Multifactor.lbl_ao_dob}
    \n
    {dayjs(RSADOB).format('MM/DD/YYYY')}
    \n
    \n \n {Multifactor.btn_confirm_dob}\n \n this.setState({ RSADOB: null, isRSADOB: true, hasConfirmedDOB: false, hasRSADOBerror: false, RSADOBError: '' })}\n >\n {Multifactor.btn_change_dob}\n \n \n );\n }\n else {\n const datePickerWidth = window.innerWidth < 600 ? '95%' : '40%';\n return (\n \n

    {Multifactor.msg_maintain_security}

    \n

    {Multifactor.msg_protection}

    \n

    {Multifactor.msg_dob_select}

    \n
    \n this.onInputChange('RSADOB', { target: { value: e || '' } })}\n openTo='year'\n value={RSADOB}\n sx={{ width: datePickerWidth }}\n />\n
    \n \n {Multifactor.btn_verify_dob}\n \n \n );\n }\n\n }\n\n handleOptions = e => {\n const questionSet = cloneDeep(this.state.questionSet);\n let unparsed = null;\n if (e.target.name.includes('|')) {\n unparsed = e.target.name;\n }\n if (e.target.value.includes('|')) {\n unparsed = e.target.value;\n }\n if (unparsed) {\n const qId = unparsed.substr(0, unparsed.indexOf('|'));\n const cId = unparsed.substr(unparsed.indexOf('|') + 1, unparsed.length);\n const questionsIndex = questionSet.Questions.findIndex(\n question => question.QuestionId === parseInt(qId)\n );\n\n // clear all other choices before selecting new choice\n questionSet.Questions[questionsIndex].Choices.forEach(choice => delete choice.isSelected);\n\n const choiceIndex = questionSet.Questions[questionsIndex].Choices.findIndex(\n choice => choice.ChoiceId === parseInt(cId)\n );\n questionSet.Questions[questionsIndex].Choices[choiceIndex].isSelected = true;\n this.setState({ questionSet });\n }\n else {\n console.log('Unable to parse question and/or choice ids'); // eslint-disable-line\n }\n }\n\n validateRSAForm() {\n // validate choices have been made\n const { text: { Multifactor } } = this.props;\n const questionSet = cloneDeep(this.state.questionSet);\n\n // validate choices have been made\n let isFormValidated = true;\n questionSet.Questions.forEach(question => {\n const displayError = question.Choices.some(choice => choice.isSelected);\n if (!displayError) {\n question.errorMessage = Multifactor.err_required;\n isFormValidated = false;\n }\n else {\n delete question.errorMessage;\n }\n });\n\n this.setState({ questionSet });\n return isFormValidated;\n }\n\n sendRSAAnswers = e => {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const questionSet = cloneDeep(this.state.questionSet);\n\n if (this.validateRSAForm()) { // questions without selected answers\n\n // build Answer Set\n const answerSet = {};\n answerSet.questionSetId = questionSet.QuestionSetId;\n answerSet.transactionid = questionSet.TransactionId;\n answerSet.answers = [];\n questionSet.Questions.forEach(question => {\n const answer = {\n questionId: question.QuestionId,\n choices: []\n };\n question.Choices.forEach(choice => {\n if (choice.isSelected) {\n answer.choices.push({\n choiceId: choice.ChoiceId,\n text: choice.Text\n });\n }\n });\n answerSet.answers.push(answer);\n });\n\n this.setState({ isLoading: true });\n this.props.rsaAnswers(answerSet)\n .then(() => {\n if (this.props.isIdentityVerified) {\n this.props.history.push(this.props.text.Multifactor.register_path);\n }\n else {\n const { RSAQuestionSet } = this.props;\n if (RSAQuestionSet.Questions.length > 0) {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n isRSAQuestions: true,\n questionSet: RSAQuestionSet\n }, () => this.renderRSAQandA());\n }\n else {\n this.props.getRSAQuestionSet()\n .then(() => {\n const latestSet = this.props.RSAQuestionSet;\n if (latestSet && latestSet.Questions.length === 0) {\n this.setState({ isLoading: false },\n () => this.props.notificationShow(Multifactor.msg_unable_verify, 'error')\n );\n setTimeout(() => this.logOut(), 2000);\n }\n else {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n isRSAQuestions: true,\n questionSet: latestSet\n }, () => this.renderRSAQandA());\n }\n });\n }\n }\n });\n\n }\n }\n\n renderRSAQandA() {\n const { text: { Multifactor } } = this.props;\n const questions = this.state.questionSet.Questions ? cloneDeep(this.state.questionSet.Questions) : [];\n const questRendered = questions.map(question => {\n if (question.AnswerType === 'Single') {\n const choices = question.Choices.map(choice => {\n return (} label={choice.Text} />);\n });\n return (\n
    \n {question.Text}\n
    {question.HelpText}
    \n \n {choices}\n \n {question.errorMessage}\n
    \n );\n }\n else {\n const choices = question.Choices.map(choice => {\n return (\n }\n label={choice.Text}\n onChange={this.handleOptions}\n name={`${question.QuestionId}|${choice.ChoiceId}`}\n value={choice.ChoiceId}\n />\n );\n });\n return (\n
    \n {question.Text}\n
    {question.HelpText}
    \n \n \n {choices}\n \n {question.errorMessage}\n \n
    \n );\n }\n });\n\n return (\n \n

    {Multifactor.msg_rsa_select}

    \n\n \n {questRendered}\n \n {Multifactor.btn_submit_answer}\n \n
    \n
    \n );\n\n }\n\n displayMessage() {\n const { displayMessage } = this.state;\n return (\n
    \n

    {displayMessage}

    \n this.logOut()}\n >\n {this.props.text.Multifactor.btn_logout}\n \n
    \n );\n }\n\n logOut() {\n const token = sessionStorage.getItem('token');\n const { text: { Login } } = this.props;\n this.props.userLogout({ token })\n .finally(() => this.props.notificationShow(Login.msg_you_have_logged_out, 'success'));\n this.props.clearStore();\n }\n\n componentDidMount() {\n this.checkRegisteredDevice();\n }\n\n render() {\n const { text: { Multifactor } } = this.props;\n const { hasSecurityQuestion, isRSADOB, isRSAQuestions, hasDisplayMessage } = this.state;\n\n return (\n
    \n \n

    {Multifactor.verify_identity_title}

    \n\n {hasSecurityQuestion && this.renderSecurityQuestion()}\n {isRSADOB && this.renderRSADOB()}\n {isRSAQuestions && this.renderRSAQandA()}\n {hasDisplayMessage && this.displayMessage()}\n\n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n
    \n
    \n
    \n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n getDeviceToken,\n getSecurityQuestion,\n securityQuestionAnswer,\n getRSAStatus,\n rsaVerifyBirthday,\n getRSAQuestionSet,\n rsaAnswers,\n clearStore,\n userLogout,\n notificationShow\n})(LanguageHOC(VerifyIdentity)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { Button } from '@mui/material';\n\nimport { LoadingOverlay } from '@frontend/common';\n\nimport { resetClaims } from 'components/AppRoot/Navigation/actions';\n\nconst select = state => ({\n prev2faRoute: state.session.prev2faRoute,\n});\n\nexport class Confirmation extends Component {\n\n static propTypes = {\n prev2faRoute: PropTypes.string.isRequired,\n resetClaims: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_done: PropTypes.string,\n btn_learn_more: PropTypes.string,\n msg_congratulations: PropTypes.string,\n msg_later_prompt: PropTypes.string,\n msg_successful: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n };\n\n resetClaims() {\n this.setState({ isLoading: true });\n this.props.resetClaims()\n .then(() => {\n this.props.history.push(this.props.prev2faRoute);\n });\n }\n\n render() {\n const { text: { Multifactor } } = this.props;\n return (\n
    \n \n

    {Multifactor.msg_congratulations}

    \n

    {Multifactor.msg_successful}

    \n

    {Multifactor.msg_later_prompt}

    \n this.resetClaims()}\n >\n {Multifactor.btn_done}\n \n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(connect(select, { resetClaims })(LanguageHOC(Confirmation)));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { Button } from '@mui/material';\n\nexport class Welcome extends Component {\n\n static propTypes = {\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_get_started: PropTypes.string,\n btn_learn_more: PropTypes.string,\n msg_2FA: PropTypes.string,\n msg_2FA_explanation: PropTypes.string,\n nav_title: PropTypes.string,\n verify_identity_path: PropTypes.string,\n learn_more_url: PropTypes.string\n }),\n }).isRequired,\n };\n\n state = {\n learnMoreOpen: false,\n };\n\n render() {\n const { text: { Multifactor } } = this.props;\n return (\n
    \n {Multifactor.nav_title}\n

    {Multifactor.msg_2FA}

    \n

    {Multifactor.msg_2FA_explanation}

    \n this.props.history.push(Multifactor.verify_identity_path)}\n >\n {Multifactor.btn_get_started}\n \n window.open(Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {Multifactor.btn_learn_more}\n
    \n
    \n );\n }\n}\n\nexport default withRouter(LanguageHOC(Welcome));","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, withRouter, Route } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport { Paper } from '@mui/material';\n\nimport { My529Logo } from '@frontend/common';\n\nimport Register from './Registration/Register/index';\nimport RegisterPhone from './Registration/RegisterPhone/index';\nimport RegisterAuthenticator from './Registration/RegisterAuthenticator/index';\nimport VerifyIdentity from './Registration/VerifyIdentity/index';\nimport Confirmation from './Registration/Confirmation/index';\nimport Welcome from './Registration/Welcome/index';\n\nimport styles from './styles.module.scss';\n\nexport class Multifactor extends Component {\n\n static propTypes = {\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n nav_path: PropTypes.string,\n register_path: PropTypes.string,\n authenticator_path: PropTypes.string,\n phone_path: PropTypes.string,\n preferred_path: PropTypes.string,\n preferred_response_path: PropTypes.string,\n confirmation_path: PropTypes.string,\n verify_identity_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n render() {\n const { text: { Multifactor } } = this.props;\n return (\n
    \n \n
    \n
    \n \n ()} />\n ()} />\n ()} />\n ()} />\n ()} />\n ()} />\n \n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(LanguageHOC(Multifactor));","/*\n*\n* Signup Actions\n*\n*/\nimport {\n CREATE_ACCOUNT,\n DELETE_APPLICATION,\n GET_EXISTING_BENEFICIARIES,\n GET_EXISTING_BENEFICIARY,\n GET_SIGNUP_APPLICATION,\n RESET_ACCOUNT_APPLICATION,\n SAVE_ACCOUNT_OWNER,\n SAVE_BENEFICIARY,\n SAVE_CUSTOMIZED_OPTION,\n SAVE_PREDEFINED_INVESTMENT_OPTION,\n SAVE_PROMO_CODE,\n} from './constants';\n\nimport {\n GETrequest,\n POSTrequest,\n PUTrequest,\n} from 'utils/helpers/api_handler';\n\nimport { convert3DCalculatorSchemaTo2D } from '@frontend/common';\n\nexport function createAccount() {\n const payload = POSTrequest('/SimpleSignup/Account');\n return {\n type: CREATE_ACCOUNT,\n payload\n };\n}\n\nexport function deleteApplication() {\n const payload = PUTrequest('/SimpleSignup/Delete');\n return {\n type: DELETE_APPLICATION,\n payload\n };\n}\n\nexport function getExistingBeneficiaries() {\n const payload = GETrequest('/SimpleSignup/Beneficiaries');\n return {\n type: GET_EXISTING_BENEFICIARIES,\n payload\n };\n}\n\nexport function getExistingBeneficiary(beneficiaryId) {\n const payload = GETrequest(`/SimpleSignup/Beneficiary/${beneficiaryId}`);\n return {\n type: GET_EXISTING_BENEFICIARY,\n payload\n };\n}\n\nexport function getSignupApplication() {\n const payload = GETrequest('/SimpleSignup');\n return {\n type: GET_SIGNUP_APPLICATION,\n payload\n };\n}\n\nexport function resetAccountApplication() {\n return {\n type: RESET_ACCOUNT_APPLICATION,\n };\n}\n\nexport function saveAccountOwner(accountOwnerInfo) {\n const payload = accountOwnerInfo.InterestedPartyId && !accountOwnerInfo.AgentId ?\n POSTrequest('/SimpleSignup/Agent', accountOwnerInfo) // saves new AO info for interested party\n :\n PUTrequest('/SimpleSignup/Agent', accountOwnerInfo); // saves AO info for existing AO or new AO\n return {\n type: SAVE_ACCOUNT_OWNER,\n payload\n };\n}\n\nexport function saveBeneficiary(beneficiaryInfo) {\n const payload = beneficiaryInfo.BeneficiaryId ?\n POSTrequest('/SimpleSignup/Beneficiary', beneficiaryInfo) // saves a new beneficiary\n :\n PUTrequest('/SimpleSignup/Beneficiary', beneficiaryInfo); // saves an existing beneficiary\n \n return {\n type: SAVE_BENEFICIARY,\n payload\n };\n}\n\nexport function savePredefinedInvestmentOption(InvestmentOptionId) {\n const payload = PUTrequest('/SimpleSignup/OptionAllocation', { InvestmentOptionId });\n return {\n type: SAVE_PREDEFINED_INVESTMENT_OPTION,\n payload\n };\n}\n\nexport function saveCustomizedOption(matrixAllocations, template) {\n const populatedTemplate = convert3DCalculatorSchemaTo2D(matrixAllocations, template);\n const payload = POSTrequest('/SimpleSignup/OptionAllocationCustom', populatedTemplate);\n return {\n type: SAVE_CUSTOMIZED_OPTION,\n payload\n };\n}\n\nexport function savePromoCode(PromotionalCode) {\n const payload = PUTrequest('/SimpleSignup/PromoCode', { PromotionalCode });\n return {\n type: SAVE_PROMO_CODE,\n payload\n };\n}","/*\n*\n* AccountOwnerStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { GETaddress } from 'utils/helpers/api_handler';\nimport * as validator from 'utils/helpers/form_validation';\nimport { saveAccountOwner } from '../actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\nimport {\n Button,\n Paper,\n Tab,\n Tabs,\n TextField,\n} from '@mui/material';\nimport {\n AddressTextFields,\n Checkbox,\n DatePicker,\n IconBtnTooltip,\n InfoIcon,\n notificationShow,\n PhoneNumberInput,\n SsnInput,\n} from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst errorTabStyles = {\n backgroundColor: 'rgba(255, 0, 0, 0.25)',\n color: 'rgb(255, 0, 0)',\n};\n\nconst select = (state) => ({\n accountOwnerInfo: state.signup.accountOwnerInfo,\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\n claims: state.session.claims,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n MaximumAge: state.static.environmentVars.MaximumAge,\n MinimumAccountOwnerAge: state.static.environmentVars.MinimumAccountOwnerAge,\n usStates: state.static.usStates,\n});\n\n\nexport class AccountOwnerStep extends React.Component {\n\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n accountOwnerInfo: PropTypes.shape({\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n OwnerBirthdate: PropTypes.string,\n OwnerFirstName: PropTypes.string,\n OwnerHomePhone: PropTypes.string,\n OwnerIsResident: PropTypes.bool,\n OwnerLastName: PropTypes.string,\n OwnerMiddleName: PropTypes.string,\n OwnerSSN1: PropTypes.string,\n OwnerSSN2: PropTypes.string,\n Physical: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n })\n }).isRequired,\n ADDRESS_TYPES: PropTypes.shape({\n Physical: PropTypes.string,\n Mailing: PropTypes.string,\n }).isRequired,\n claims: PropTypes.object.isRequired,\n getSignupApplication: PropTypes.func.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n MaximumAge: PropTypes.number.isRequired,\n MinimumAccountOwnerAge: PropTypes.number.isRequired,\n isLoading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onNextClick: PropTypes.func.isRequired,\n saveAccountOwner: PropTypes.func.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n text: PropTypes.shape({\n AccountOwnerStep: PropTypes.shape({\n btn_continue: PropTypes.string,\n err_copy_ssn: PropTypes.string,\n err_smarty_streets: PropTypes.string,\n err_ssns_must_match: PropTypes.string,\n head_account_owner: PropTypes.string,\n lbl_birthdate: PropTypes.string,\n lbl_clear_state: PropTypes.string,\n lbl_firstName: PropTypes.string,\n lbl_homePhone: PropTypes.string,\n lbl_lastName: PropTypes.string,\n lbl_middleName: PropTypes.string,\n lbl_ssn_tin: PropTypes.string,\n lbl_ssn_tin_confirm: PropTypes.string,\n lbl_utah_tax_payer: PropTypes.string,\n msg_ao_info_saved: PropTypes.string,\n text_what_is_ao: PropTypes.array,\n }),\n AddressCard: PropTypes.object,\n }).isRequired,\n usStates: PropTypes.array.isRequired,\n }\n\n state = {\n accountOwnerInfo: this.props.accountOwnerInfo,\n addressSuggestions: [],\n addressType: this.props.ADDRESS_TYPES.Mailing,\n apiErrors: [],\n autocompleteText: {\n Mailing: this.props.accountOwnerInfo.Mailing.StreetAddress1,\n Physical: this.props.accountOwnerInfo.Physical.StreetAddress1,\n },\n editSsn: true,\n formErrors: {\n Mailing: {},\n Physical: {}\n },\n };\n\n addressTabChange = (e, value) => {\n this.setState({ addressType: value });\n };\n\n autocompleteAddressSelect = (event, selection) => {\n const { accountOwnerInfo, addressType, autocompleteText, formErrors } = this.state;\n\n if (!selection) { // if user clears input\n this.setState({\n autocompleteText: {\n ...accountOwnerInfo[addressType],\n [addressType]: '',\n },\n accountOwnerInfo: {\n ...accountOwnerInfo,\n [addressType]: {\n ...accountOwnerInfo[addressType],\n StreetAddress1: ''\n }\n },\n addressSuggestions: [],\n });\n }\n else if (!Object.prototype.hasOwnProperty.call(selection, 'street_line')) { // if user sends too many requests in a short period, autocomplete stops sending suggestions back, so just set input to state\n this.setState({\n autocompleteText: {\n ...autocompleteText,\n [addressType]: selection\n },\n accountOwnerInfo: {\n ...accountOwnerInfo,\n [addressType]: {\n ...accountOwnerInfo[addressType],\n StreetAddress1: selection,\n }\n }\n });\n }\n else { // if all is working as expected and selection is valid SmartyStreets object\n this.setState({\n autocompleteText: {\n ...autocompleteText,\n [addressType]: selection.street_line.toUpperCase()\n },\n accountOwnerInfo: {\n ...accountOwnerInfo,\n [addressType]: {\n ...accountOwnerInfo[addressType],\n City: selection.city.toUpperCase(),\n PostalCode: selection.zipcode.toUpperCase(),\n State: selection.state.toUpperCase(),\n StreetAddress1: selection.street_line.toUpperCase(),\n StreetAddress2: selection.secondary.toUpperCase()\n }\n },\n apiErrors: [],\n formErrors: {\n ...formErrors,\n [addressType]: {}\n }\n });\n }\n }\n\n autocompleteSuggestionsGet = event => {\n const { accountOwnerInfo, addressType, apiErrors, autocompleteText, formErrors } = this.state;\n\n this.setState({\n apiErrors: {\n ...apiErrors,\n [addressType]: []\n },\n autocompleteText: {\n ...autocompleteText,\n [addressType]: event.target.value\n },\n accountOwnerInfo: {\n ...accountOwnerInfo,\n [addressType]: {\n ...accountOwnerInfo[addressType],\n StreetAddress1: event.target.value\n }\n },\n formErrors: {\n ...formErrors,\n [addressType]: {\n ...formErrors[addressType],\n StreetAddress1: ''\n }\n }\n });\n\n if (event.target.value.trim()) { // Only make a request if there is text. Trims out leading spaces to avoid a Smarty Streets freakout\n return GETaddress(event.target.value)\n .then(res => {\n if (res.data.suggestions !== null) {\n this.setState({ addressSuggestions: res.data.suggestions });\n }\n })\n .catch(res => {\n if (res !== 'short-criteria') {\n this.props.notificationShow(this.props.text.AddressCard.err_smarty_streets, 'error');\n }\n this.setState({ addressSuggestions: [] });\n });\n }\n }\n\n formValidate = () => {\n const { accountOwnerInfo, apiErrors, editSsn } = this.state;\n const { ADDRESS_TYPES, MinimumAccountOwnerAge, MaximumAge, text: { AccountOwnerStep } } = this.props;\n const formErrors = { ...this.state.formErrors };\n\n // If editing, validate SSN. Encrypted SSN will not run through the validator.\n formErrors.OwnerSSN1 = editSsn ? validator.socialSecurityNumValidator(accountOwnerInfo.OwnerSSN1) : '';\n formErrors.OwnerSSN2 = editSsn ? validator.socialSecurityNumValidator(accountOwnerInfo.OwnerSSN2) : '';\n\n if (!formErrors.OwnerSSN2 && editSsn && accountOwnerInfo.OwnerSSN1 !== accountOwnerInfo.OwnerSSN2) { // checks if there is SSN2 error and gives that priority\n formErrors.OwnerSSN2 = AccountOwnerStep.err_ssns_must_match;\n }\n\n formErrors.OwnerBirthdate = validator.accountOwnerBirthdateValidator(accountOwnerInfo.OwnerBirthdate, MinimumAccountOwnerAge, MaximumAge);\n formErrors.OwnerFirstName = validator.firstNameValidator(accountOwnerInfo.OwnerFirstName);\n formErrors.OwnerLastName = validator.lastNameValidator(accountOwnerInfo.OwnerLastName);\n formErrors.OwnerHomePhone = validator.phoneNumValidator(accountOwnerInfo.OwnerHomePhone);\n formErrors.Mailing.StreetAddress1 = validator.street1Validator(accountOwnerInfo.Mailing.StreetAddress1);\n accountOwnerInfo.Mailing.StreetAddress2 && (formErrors.Mailing.StreetAddress2 = validator.street1Validator(accountOwnerInfo.Mailing.StreetAddress2));\n formErrors.Mailing.City = validator.cityValidator(accountOwnerInfo.Mailing.City);\n formErrors.Mailing.State = validator.stateValidator(accountOwnerInfo.Mailing.State);\n formErrors.Mailing.PostalCode = validator.postalCodeValidator(accountOwnerInfo.Mailing.PostalCode);\n formErrors.OwnerMiddleName = validator.middleNameValidator(accountOwnerInfo.OwnerMiddleName);\n\n if (Object.keys(accountOwnerInfo.Physical).some(field => accountOwnerInfo.Physical[field] !== '')) { // if Physical address has anything in it, validation will run\n formErrors.Physical.StreetAddress1 = validator.street1Validator(accountOwnerInfo.Physical.StreetAddress1);\n accountOwnerInfo.Physical.StreetAddress2 && (formErrors.Physical.StreetAddress2 = validator.street1Validator(accountOwnerInfo.Physical.StreetAddress2));\n formErrors.Physical.City = validator.cityValidator(accountOwnerInfo.Physical.City);\n formErrors.Physical.State = validator.stateValidator(accountOwnerInfo.Physical.State);\n formErrors.Physical.PostalCode = validator.postalCodeValidator(accountOwnerInfo.Physical.PostalCode);\n }\n else {\n formErrors.Physical.StreetAddress1 = '';\n formErrors.Physical.City = '';\n formErrors.Physical.State = '';\n formErrors.Physical.PostalCode = '';\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field.includes(ADDRESS_TYPES.Mailing)) {\n switch (error.Field) {\n case 'OwnerMailingStreetAddress1': formErrors.Mailing.StreetAddress1 = error.Message; break;\n case 'OwnerMailingStreetAddress2': formErrors.Mailing.StreetAddress2 = error.Message; break;\n case 'OwnerMailingCity': formErrors.Mailing.City = error.Message; break;\n case 'OwnerMailingPostalCode': formErrors.Mailing.PostalCode = error.Message; break;\n case 'OwnerMailingState': formErrors.Mailing.State = error.Message; break;\n default: break;\n }\n }\n else if (error.Field.includes(ADDRESS_TYPES.Physical)) {\n switch (error.Field) {\n case 'OwnerPhysicalStreetAddress1': formErrors.Physical.StreetAddress1 = error.Message; break;\n case 'OwnerPhysicalStreetAddress2': formErrors.Physical.StreetAddress2 = error.Message; break;\n case 'OwnerPhysicalCity': formErrors.Physical.City = error.Message; break;\n case 'OwnerPhysicalPostalCode': formErrors.Physical.PostalCode = error.Message; break;\n case 'OwnerPhysicalState': formErrors.Physical.State = error.Message; break;\n default: break;\n }\n }\n else {\n formErrors[error.Field] = error.Message;\n }\n });\n }\n\n this.setState({ formErrors });\n\n const hasMailingErrors = Object.keys(formErrors.Mailing).some(mailingError => formErrors.Mailing[mailingError] !== '');\n const hasPhysicalErrors = Object.keys(formErrors.Physical).some(physicalError => formErrors.Physical[physicalError] !== '');\n const formWithoutAddresses = Object.keys(formErrors).filter(field => field !== ADDRESS_TYPES.Mailing && field !== ADDRESS_TYPES.Physical);\n const hasOtherErrors = formWithoutAddresses.some(error => formErrors[error] !== '');\n\n return !hasMailingErrors && !hasPhysicalErrors && !hasOtherErrors;\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n const isValid = this.formValidate();\n const { accountOwnerInfo } = this.state;\n const { claims: { AgentId, InterestedPartyId }, text: { AccountOwnerStep: { msg_ao_info_saved } } } = this.props;\n\n\n if (isValid) {\n this.props.setLoadingOn();\n\n const mappedAccountOwner = {\n ...accountOwnerInfo,\n AgentId,\n InterestedPartyId,\n OwnerBirthdate: dayjs(accountOwnerInfo.OwnerBirthdate).format('L'),\n OwnerSSN1: accountOwnerInfo.encryptedDataExists && accountOwnerInfo.OwnerSSN1.length === 4 ? `xxx-xx-${accountOwnerInfo.OwnerSSN1}` : accountOwnerInfo.OwnerSSN1, // if encrypted ssn, sends back expected format, otherwise passes value\n OwnerSSN2: accountOwnerInfo.encryptedDataExists && accountOwnerInfo.OwnerSSN2.length === 4 ? `xxx-xx-${accountOwnerInfo.OwnerSSN2}` : accountOwnerInfo.OwnerSSN2, // if encrypted ssn, sends back expected format, otherwise passes value\n OwnerMailingStreetAddress1: accountOwnerInfo.Mailing.StreetAddress1,\n OwnerMailingStreetAddress2: accountOwnerInfo.Mailing.StreetAddress2,\n OwnerMailingCity: accountOwnerInfo.Mailing.City,\n OwnerMailingState: accountOwnerInfo.Mailing.State,\n OwnerMailingPostalCode: accountOwnerInfo.Mailing.PostalCode,\n OwnerPhysicalStreetAddress1: accountOwnerInfo.Physical.StreetAddress1,\n OwnerPhysicalStreetAddress2: accountOwnerInfo.Physical.StreetAddress2,\n OwnerPhysicalCity: accountOwnerInfo.Physical.City,\n OwnerPhysicalState: accountOwnerInfo.Physical.State,\n OwnerPhysicalPostalCode: accountOwnerInfo.Physical.PostalCode,\n };\n\n this.props.saveAccountOwner(mappedAccountOwner)\n .then(() => {\n this.props.notificationShow(msg_ao_info_saved, 'success');\n this.props.getNotifications(); // refreshes app notifications\n this.props.getSignupApplication()\n .then(() => {\n this.props.setLoadingOff();\n this.props.onNextClick();\n })\n .catch(() => this.props.setLoadingOff);\n })\n .catch(errors => {\n this.props.setLoadingOff();\n this.setState({\n apiErrors: errors.payload.data,\n }, () => this.formValidate());\n });\n }\n }\n\n onAddressChange = (name, e) => {\n const { addressType } = this.state;\n\n this.setState({\n accountOwnerInfo: {\n ...this.state.accountOwnerInfo,\n [addressType]: {\n ...this.state.accountOwnerInfo[addressType],\n [name]: e.target.value\n }\n },\n apiErrors: [],\n formErrors: {\n ...this.state.formErrors,\n [addressType]: {\n ...this.state.formErrors[addressType],\n [name]: ''\n }\n }\n });\n }\n\n onEditSsn = () => {\n this.setState({\n accountOwnerInfo: {\n ...this.state.accountOwnerInfo,\n OwnerSSN1: '',\n OwnerSSN2: ''\n },\n editSsn: true,\n });\n }\n\n onInputChange = (e) => {\n const { apiErrors } = this.state;\n if (apiErrors.length > 0) { // removes API error object for related input being changed\n const apiErrorsModified = [...this.state.apiErrors];\n const errorIndex = apiErrorsModified.findIndex(error => error.Field === e.target.name); // gets index of error that relates to input being changed\n apiErrorsModified.splice(errorIndex, 1);\n\n this.setState({ apiErrors: apiErrorsModified });\n }\n\n this.setState({\n accountOwnerInfo: {\n ...this.state.accountOwnerInfo,\n [e.target.name]: e.target.value\n },\n apiErrors: [],\n formErrors: {\n ...this.state.formErrors,\n [e.target.name]: ''\n }\n });\n }\n\n preventCopy = (e) => {\n const formErrors = cloneDeep(this.state.formErrors);\n const confirmSsnInput = e.target;\n\n confirmSsnInput.onpaste = e => {\n e.preventDefault();\n formErrors.OwnerSSN2 = this.props.text.AccountOwnerStep.err_copy_ssn;\n this.setState({ formErrors });\n };\n }\n\n ssnCompose = () => { // Handles encrypted SSN inputs\n const { accountOwnerInfo: { encryptedDataExists }, isAgent_AccessRole, isLoading, text: { AccountOwnerStep } } = this.props;\n const { accountOwnerInfo: { OwnerSSN1, OwnerSSN2 }, editSsn, formErrors } = this.state;\n\n if (encryptedDataExists && !editSsn) { // if the birthdate is encrypted, and user is NOT editing\n return (\n
    \n
    \n \n {!isAgent_AccessRole && // hides the edit icon if AO is agent\n \n }\n
    \n
    \n \n {!isAgent_AccessRole && // hides the edit icon if AO is agent\n \n }\n
    \n\n
    \n );\n }\n else if (!encryptedDataExists || editSsn) { // if the user does not have an encrypted SSN, or if they do but are editing\n return (\n
    \n this.onInputChange({ target: { name: 'OwnerSSN1', value } })}\n value={OwnerSSN1}\n variant='filled'\n />\n this.onInputChange({ target: { name: 'OwnerSSN2', value } })}\n onFocus={e => this.preventCopy(e)}\n value={OwnerSSN2}\n variant='filled'\n />\n\n
    \n );\n }\n }\n\n utahTaxpayerToggle = e => {\n this.setState({\n accountOwnerInfo: {\n ...this.state.accountOwnerInfo,\n OwnerIsResident: e.target.checked,\n }\n });\n }\n\n componentDidMount() {\n if (this.props.accountOwnerInfo.encryptedDataExists) {\n this.setState({\n editSsn: false,\n });\n }\n }\n\n render() {\n const { accountOwnerInfo, addressSuggestions, addressType, autocompleteText, formErrors } = this.state;\n const { ADDRESS_TYPES, isAgent_AccessRole, isLoading, MaximumAge, MinimumAccountOwnerAge, text: { AccountOwnerStep }, usStates } = this.props;\n\n return (\n \n
    \n
    \n

    {AccountOwnerStep.head_account_owner}

    \n {AccountOwnerStep.text_what_is_ao.map(line =>
  • {line}
  • )}} />\n
    \n
    \n
    \n \n \n \n this.onInputChange({ target: { name: 'OwnerBirthdate', value, } })}\n openTo='year'\n value={accountOwnerInfo.OwnerBirthdate}\n />\n {this.ssnCompose()}\n this.onInputChange({ target: { name: 'OwnerHomePhone', value } })}\n value={accountOwnerInfo.OwnerHomePhone}\n variant='filled'\n />\n
    \n
    \n \n formErrors.Mailing[error] !== '') ? errorTabStyles : {}}\n value={ADDRESS_TYPES.Mailing}\n />\n formErrors.Physical[error] !== '') ? errorTabStyles : {}}\n value={ADDRESS_TYPES.Physical}\n />\n \n this.state.formErrors[this.state.addressType][inputName]}\n inputProps={{ disabled: isLoading || isAgent_AccessRole }}\n isReadOnly={false}\n onAutocompleteAddressSelect={this.autocompleteAddressSelect}\n onInputChange={this.onAddressChange}\n stateFormControlProps={{ variant: 'filled' }}\n textFieldProps={{ disabled: isLoading || isAgent_AccessRole, variant: 'filled' }}\n usStates={usStates}\n />\n
    \n
    \n \n
    \n
    \n isAgent_AccessRole ? this.props.onNextClick() : this.onFormSubmit(e)} // existing AOs cannot edit their info, so continue to Bene without saving\n variant='contained'\n fullWidth\n type='submit'\n >\n {AccountOwnerStep.btn_continue}\n \n
    \n
    \n
    \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n getNotifications,\n notificationShow,\n saveAccountOwner,\n})(LanguageHOC(AccountOwnerStep));\n","/*\n*\n* BeneficiaryStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { cloneDeep } from 'lodash';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { GETaddress } from 'utils/helpers/api_handler';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n getExistingBeneficiary,\n saveBeneficiary,\n} from '../actions';\nimport {\n Button,\n Paper,\n Tab,\n Tabs,\n TextField,\n} from '@mui/material';\nimport {\n AddressTextFields,\n Checkbox,\n DatePicker,\n Dropdown,\n IconBtnTooltip,\n InfoIcon,\n notificationShow,\n SsnInput,\n} from '@frontend/common';\nimport { BLANK_ADDRESS } from 'components/AppRoot/StaticResources/constants';\nimport { BLANK_BENE_INFO } from '../constants';\n\nimport styles from './styles.module.scss';\n\nconst errorTabStyles = {\n backgroundColor: 'rgba(255, 0, 0, 0.25)',\n color: 'rgb(255, 0, 0)',\n};\n\nconst select = (state) => ({\n accountOwnerInfo: state.signup.accountOwnerInfo,\n ADDRESS_TYPES: state.static.environmentVars.AddressTypes,\n BENEFICIARY_RELATIONSHIPS: state.static.environmentVars.RelationshipTypes,\n beneficiaryInfo: state.signup.beneficiaryInfo,\n existingBenesDetails: state.signup.existingBenesDetails,\n existingBenesList: state.signup.existingBenesList,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n MaximumAge: state.static.environmentVars.MaximumAge,\n usStates: state.static.usStates,\n});\n\nexport class BeneficiaryStep extends React.Component {\n static propTypes = {\n accountOwnerInfo: PropTypes.shape({\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n }),\n OwnerBirthdate: PropTypes.string,\n OwnerFirstName: PropTypes.string,\n OwnerIsResident: PropTypes.bool,\n OwnerLastName: PropTypes.string,\n OwnerMiddleName: PropTypes.string,\n OwnerSSN1: PropTypes.string,\n OwnerSSN2: PropTypes.string,\n Physical: PropTypes.shape({\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n })\n }),\n ADDRESS_TYPES: PropTypes.shape({\n Physical: PropTypes.string,\n Mailing: PropTypes.string,\n }).isRequired,\n /* eslint-disable id-length */\n BENEFICIARY_RELATIONSHIPS: PropTypes.shape({\n C: PropTypes.string,\n G: PropTypes.string,\n N: PropTypes.string,\n O: PropTypes.string,\n S: PropTypes.string,\n SP: PropTypes.string,\n }).isRequired,\n /* eslint-enable id-length */\n beneficiaryInfo: PropTypes.shape({\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n BeneficiaryBirthdate: PropTypes.string,\n BeneficiaryId: PropTypes.number,\n BeneficiaryFirstName: PropTypes.string,\n BeneficiaryLastName: PropTypes.string,\n BeneficiaryMiddleName: PropTypes.string,\n BeneficiarySSN1: PropTypes.string,\n BeneficiarySSN2: PropTypes.string,\n Physical: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n RelationshipToAccountOwner: PropTypes.string,\n }).isRequired,\n existingBenesDetails: PropTypes.object.isRequired,\n existingBenesList: PropTypes.array.isRequired,\n getExistingBeneficiary: PropTypes.func.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n MaximumAge: PropTypes.number.isRequired,\n isLoading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onBackClick: PropTypes.func.isRequired,\n onNextClick: PropTypes.func.isRequired,\n saveBeneficiary: PropTypes.func.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n text: PropTypes.shape({\n BeneficiaryStep: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_continue: PropTypes.string,\n err_copy_ssn: PropTypes.string,\n err_phone_number_too_short: PropTypes.string,\n err_smarty_streets: PropTypes.string,\n err_ssns_must_match: PropTypes.string,\n head_beneficiary: PropTypes.string,\n lbl_birthdate: PropTypes.string,\n lbl_cancel: PropTypes.string,\n lbl_clear_state: PropTypes.string,\n lbl_existing_bene: PropTypes.string,\n lbl_firstName: PropTypes.string,\n lbl_lastName: PropTypes.string,\n lbl_mailing_is_same_as_ao: PropTypes.string,\n lbl_middleName: PropTypes.string,\n lbl_physical_is_same_as_ao: PropTypes.string,\n lbl_relationship: PropTypes.string,\n lbl_ssn_tin: PropTypes.string,\n lbl_ssn_tin_confirm: PropTypes.string,\n lbl_utah_tax_payer: PropTypes.string,\n msg_bene_info_saved: PropTypes.string,\n text_what_is_bene: PropTypes.array,\n }),\n AddressCard: PropTypes.object,\n }).isRequired,\n usStates: PropTypes.array.isRequired,\n };\n\n state = {\n addressSuggestions: [],\n addressType: this.props.ADDRESS_TYPES.Mailing,\n apiErrors: [],\n autocompleteText: {\n Mailing: this.props.beneficiaryInfo.Mailing.StreetAddress1,\n Physical: this.props.beneficiaryInfo.Physical.StreetAddress1,\n },\n beneficiaryInfo: this.props.beneficiaryInfo,\n editSsn: true,\n existingBeneficiaryId: this.props.beneficiaryInfo.BeneficiaryId,\n formErrors: {\n Mailing: {},\n Physical: {},\n },\n };\n\n addressIsDisabled = () => {\n // disabled if checkbox is checked to make address same as AO is checked\n const { addressType, beneficiaryInfo: { BeneficiaryMailingAddressSameAsOwner, BeneficiaryPhysicalAddressSameAsOwner } } = this.state;\n const { ADDRESS_TYPES } = this.props;\n return (addressType === ADDRESS_TYPES.Physical && BeneficiaryPhysicalAddressSameAsOwner) || (addressType === ADDRESS_TYPES.Mailing && BeneficiaryMailingAddressSameAsOwner);\n }\n\n addressTabChange = (e, value) => {\n this.setState({ addressType: value });\n };\n\n autocompleteAddressSelect = (event, selection) => {\n const { beneficiaryInfo, addressType, autocompleteText, formErrors } = this.state;\n\n if (!selection) { // if user clears input\n this.setState({\n autocompleteText: {\n ...beneficiaryInfo[addressType],\n [addressType]: '',\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n [addressType]: {\n ...beneficiaryInfo[addressType],\n StreetAddress1: ''\n }\n },\n addressSuggestions: [],\n });\n }\n else if (!Object.prototype.hasOwnProperty.call(selection, 'street_line')) { // if user sends too many requests in a short period, autocomplete stops sending suggestions back, so just set input to state\n this.setState({\n autocompleteText: {\n ...autocompleteText,\n [addressType]: selection\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n [addressType]: {\n ...beneficiaryInfo[addressType],\n StreetAddress1: selection,\n }\n }\n });\n }\n else { // if all is working as expected and selection is valid SmartyStreets object\n this.setState({\n apiErrors: [],\n autocompleteText: {\n ...autocompleteText,\n [addressType]: selection.street_line.toUpperCase()\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n [addressType]: {\n ...beneficiaryInfo[addressType],\n City: selection.city.toUpperCase(),\n PostalCode: selection.zipcode.toUpperCase(),\n State: selection.state.toUpperCase(),\n StreetAddress1: selection.street_line.toUpperCase(),\n StreetAddress2: selection.secondary.toUpperCase()\n }\n },\n formErrors: {\n ...formErrors,\n [addressType]: {}\n }\n });\n }\n }\n\n autocompleteSuggestionsGet = (event) => {\n const { beneficiaryInfo, addressType, apiErrors, autocompleteText, formErrors } = this.state;\n\n this.setState({\n apiErrors: {\n ...apiErrors,\n [addressType]: []\n },\n autocompleteText: {\n ...autocompleteText,\n [addressType]: event.target.value\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n [addressType]: {\n ...beneficiaryInfo[addressType],\n StreetAddress1: event.target.value\n }\n },\n formErrors: {\n ...formErrors,\n [addressType]: {\n ...formErrors[addressType],\n StreetAddress1: ''\n }\n }\n });\n\n if (event.target.value.trim()) { // Only make a request if there is text. Trims out leading spaces to avoid a Smarty Streets freakout\n return GETaddress(event.target.value)\n .then(res => {\n if (res.data.suggestions !== null) {\n this.setState({ addressSuggestions: res.data.suggestions });\n }\n })\n .catch(res => {\n if (res !== 'short-criteria') {\n this.props.notificationShow(this.props.text.AddressCard.err_smarty_streets, 'error');\n }\n this.setState({ addressSuggestions: [] });\n });\n }\n }\n\n copyAddress = e => {\n const { accountOwnerInfo, ADDRESS_TYPES } = this.props;\n const { addressType, autocompleteText, beneficiaryInfo, formErrors } = this.state;\n const shouldCopy = e.target.checked;\n\n if (addressType === ADDRESS_TYPES.Mailing) {\n this.setState({\n apiErrors: [],\n autocompleteText: {\n ...autocompleteText,\n Mailing: shouldCopy ? accountOwnerInfo.Mailing.StreetAddress1 : ''\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n BeneficiaryMailingAddressSameAsOwner: shouldCopy,\n Mailing: shouldCopy ? accountOwnerInfo.Mailing : BLANK_ADDRESS,\n },\n formErrors: {\n ...formErrors,\n Mailing: {}, // need to clear errors in Mailing in the case of a PO box error from API\n Physical: {},\n },\n });\n }\n else {\n this.setState({\n apiErrors: [],\n autocompleteText: {\n ...autocompleteText,\n Physical: shouldCopy ? accountOwnerInfo.Physical.StreetAddress1 : ''\n },\n beneficiaryInfo: {\n ...beneficiaryInfo,\n BeneficiaryPhysicalAddressSameAsOwner: !this.state.beneficiaryInfo.BeneficiaryPhysicalAddressSameAsOwner,\n Physical: shouldCopy ? accountOwnerInfo.Physical : BLANK_ADDRESS,\n },\n formErrors: {\n ...formErrors,\n Mailing: {},\n Physical: {},\n }\n });\n }\n }\n\n formValidate = () => {\n const { apiErrors, beneficiaryInfo, editSsn } = this.state;\n const { ADDRESS_TYPES, MaximumAge, text: { BeneficiaryStep } } = this.props;\n const formErrors = { ...this.state.formErrors };\n\n // If editing, validate SSN. Encrypted SSN will not run through the validator.\n formErrors.BeneficiarySSN1 = editSsn ? validator.socialSecurityNumValidator(beneficiaryInfo.BeneficiarySSN1) : '';\n formErrors.BeneficiarySSN2 = editSsn ? validator.socialSecurityNumValidator(beneficiaryInfo.BeneficiarySSN2) : '';\n\n if (!formErrors.BeneficiarySSN2 && editSsn && beneficiaryInfo.BeneficiarySSN1 !== beneficiaryInfo.BeneficiarySSN2) { // checks if there is SSN2 error and gives that priority\n formErrors.BeneficiarySSN2 = BeneficiaryStep.err_ssns_must_match;\n }\n\n formErrors.BeneficiaryBirthdate = validator.beneficiaryBirthdateValidator(beneficiaryInfo.BeneficiaryBirthdate, MaximumAge);\n formErrors.BeneficiaryFirstName = validator.firstNameValidator(beneficiaryInfo.BeneficiaryFirstName);\n formErrors.BeneficiaryLastName = validator.lastNameValidator(beneficiaryInfo.BeneficiaryLastName);\n formErrors.Mailing.StreetAddress1 = validator.street1Validator(beneficiaryInfo.Mailing.StreetAddress1);\n beneficiaryInfo.Mailing.StreetAddress2 && (formErrors.Mailing.StreetAddress2 = validator.street1Validator(beneficiaryInfo.Mailing.StreetAddress2));\n formErrors.Mailing.City = validator.cityValidator(beneficiaryInfo.Mailing.City);\n formErrors.Mailing.State = validator.stateValidator(beneficiaryInfo.Mailing.State);\n formErrors.Mailing.PostalCode = validator.postalCodeValidator(beneficiaryInfo.Mailing.PostalCode);\n formErrors.BeneficiaryMiddleName = validator.middleNameValidator(beneficiaryInfo.BeneficiaryMiddleName);\n formErrors.RelationshipToAccountOwner = validator.beneficiaryRelationshipValidator(beneficiaryInfo.RelationshipToAccountOwner);\n\n if (Object.keys(beneficiaryInfo.Physical).some(field => beneficiaryInfo.Physical[field] !== '')) { // if Physical address has anything in it, validation will run\n formErrors.Physical.StreetAddress1 = validator.street1Validator(beneficiaryInfo.Physical.StreetAddress1);\n beneficiaryInfo.Physical.StreetAddress2 && (formErrors.Physical.StreetAddress2 = validator.street1Validator(beneficiaryInfo.Physical.StreetAddress2));\n formErrors.Physical.City = validator.cityValidator(beneficiaryInfo.Physical.City);\n formErrors.Physical.State = validator.stateValidator(beneficiaryInfo.Physical.State);\n formErrors.Physical.PostalCode = validator.postalCodeValidator(beneficiaryInfo.Physical.PostalCode);\n }\n else { // Clear validation errors for Physical if nothing is entered\n formErrors.Physical.StreetAddress1 = '';\n formErrors.Physical.City = '';\n formErrors.Physical.State = '';\n formErrors.Physical.PostalCode = '';\n }\n\n if (apiErrors.length > 0) {\n apiErrors.forEach(error => {\n if (error.Field.includes(ADDRESS_TYPES.Mailing)) {\n switch (error.Field) {\n case 'BeneficiaryMailingStreetAddress1': formErrors.Mailing.StreetAddress1 = error.Message; break;\n case 'BeneficiaryMailingStreetAddress2': formErrors.Mailing.StreetAddress2 = error.Message; break;\n case 'BeneficiaryMailingCity': formErrors.Mailing.City = error.Message; break;\n case 'BeneficiaryMailingPostalCode': formErrors.Mailing.PostalCode = error.Message; break;\n case 'BeneficiaryMailingState': formErrors.Mailing.State = error.Message; break;\n default: break;\n }\n }\n else if (error.Field.includes(ADDRESS_TYPES.Physical)) {\n switch (error.Field) {\n case 'BeneficiaryPhysicalStreetAddress1': formErrors.Physical.StreetAddress1 = error.Message; break;\n case 'BeneficiaryPhysicalStreetAddress2': formErrors.Physical.StreetAddress2 = error.Message; break;\n case 'BeneficiaryPhysicalCity': formErrors.Physical.City = error.Message; break;\n case 'BeneficiaryPhysicalPostalCode': formErrors.Physical.PostalCode = error.Message; break;\n case 'BeneficiaryPhysicalState': formErrors.Physical.State = error.Message; break;\n default: break;\n }\n }\n else {\n formErrors[error.Field] = error.Message;\n }\n });\n }\n\n this.setState({ formErrors });\n\n const hasMailingErrors = Object.keys(formErrors.Mailing).some(mailingError => formErrors.Mailing[mailingError] !== '');\n const hasPhysicalErrors = Object.keys(formErrors.Physical).some(physicalError => formErrors.Physical[physicalError] !== '');\n const formWithoutAddresses = Object.keys(formErrors).filter(field => field !== ADDRESS_TYPES.Mailing && field !== ADDRESS_TYPES.Physical);\n const hasOtherErrors = formWithoutAddresses.some(error => formErrors[error] !== '');\n\n return !hasMailingErrors && !hasPhysicalErrors && !hasOtherErrors;\n }\n\n getExistingBeneValue = () => {\n const { beneficiaryInfo: { BeneficiaryId } } = this.state;\n const isExisting = this.props.existingBenesList.some(bene => bene.BeneficiaryId === BeneficiaryId); // returns bool if any BeneficiaryId in existingBenesList matches the BeneficiaryId in state\n\n if (isExisting) { // Selects BeneficiaryId only if bene exists in existingBenesList. \n return BeneficiaryId;\n }\n return 0; // If Self is selected, the API will assign a BeneficiaryId (The API considers the BeneficiaryId the same as AgentId in this case) but this account may NOT be in the existingBenesList, causing the value to be undefined. This will default it to New Beneficiary in the drop down.\n }\n\n inputIsDisabled = () => {\n // disabled if loading\n // disabled if relationship to AO is self\n // disabled if existing beneficiary is selected\n const { BENEFICIARY_RELATIONSHIPS, isLoading } = this.props;\n const { existingBeneficiaryId, beneficiaryInfo: { RelationshipToAccountOwner } } = this.state;\n return isLoading || BENEFICIARY_RELATIONSHIPS[RelationshipToAccountOwner] === BENEFICIARY_RELATIONSHIPS.S || existingBeneficiaryId !== 0;\n }\n\n onAddressChange = (name, e) => {\n const { addressType } = this.state;\n\n this.setState({\n beneficiaryInfo: {\n ...this.state.beneficiaryInfo,\n [addressType]: {\n ...this.state.beneficiaryInfo[addressType],\n [name]: e.target.value\n }\n },\n apiErrors: [],\n formErrors: {\n ...this.state.formErrors,\n [addressType]: {\n ...this.state.formErrors[addressType],\n [name]: ''\n }\n }\n });\n }\n\n onEditSsn = () => {\n this.setState({\n beneficiaryInfo: {\n ...this.state.beneficiaryInfo,\n BeneficiarySSN1: '',\n BeneficiarySSN2: ''\n },\n editSsn: true,\n });\n }\n\n onExistingBeneSelect = beneId => {\n const { existingBenesDetails } = this.props;\n if (!beneId) { // if beneId is 0, clear the id and existing info from state\n this.setState({\n autocompleteText: {\n Mailing: '',\n Physical: '',\n },\n beneficiaryInfo: BLANK_BENE_INFO, // sets beneInfo back to empty object\n editSsn: true,\n existingBeneficiaryId: beneId,\n });\n }\n else if (existingBenesDetails[beneId]) { // if bene object is saved in store, use that\n this.setState({\n autocompleteText: {\n Mailing: existingBenesDetails[beneId].Mailing.StreetAddress1,\n Physical: existingBenesDetails[beneId].Physical.StreetAddress1,\n },\n apiErrors: [],\n beneficiaryInfo: existingBenesDetails[beneId],\n editSsn: false,\n existingBeneficiaryId: beneId,\n formErrors: {\n Mailing: {},\n Physical: {},\n },\n });\n }\n else { // fetch bene details from API\n this.props.setLoadingOn();\n this.props.getExistingBeneficiary(beneId)\n .then(() => {\n this.setState({\n autocompleteText: {\n Mailing: this.props.existingBenesDetails[beneId].Mailing.StreetAddress1,\n Physical: this.props.existingBenesDetails[beneId].Physical.StreetAddress1,\n },\n beneficiaryInfo: this.props.existingBenesDetails[beneId],\n editSsn: false,\n existingBeneficiaryId: beneId,\n });\n this.props.setLoadingOff();\n })\n .catch(() => this.props.setLoadingOff());\n }\n }\n\n onFormSubmit = (e) => {\n e.preventDefault();\n const isValid = this.formValidate();\n\n const { beneficiaryInfo } = this.state;\n const { msg_bene_info_saved } = this.props.text.BeneficiaryStep;\n\n const mappedBeneficiary = {\n ...beneficiaryInfo,\n BeneficiaryId: beneficiaryInfo.BeneficiaryId,\n BeneficiaryBirthdate: dayjs(beneficiaryInfo.BeneficiaryBirthdate).format('L'),\n BeneficiaryMailingAddressSameAsOwner: beneficiaryInfo.BeneficiaryMailingAddressSameAsOwner,\n BeneficiaryMailingCity: beneficiaryInfo.Mailing.City,\n BeneficiaryMailingPostalCode: beneficiaryInfo.Mailing.PostalCode,\n BeneficiaryMailingState: beneficiaryInfo.Mailing.State,\n BeneficiaryMailingStreetAddress1: beneficiaryInfo.Mailing.StreetAddress1,\n BeneficiaryMailingStreetAddress2: beneficiaryInfo.Mailing.StreetAddress2,\n BeneficiaryPhysicalAddressSameAsOwner: beneficiaryInfo.BeneficiaryPhysicalAddressSameAsOwner,\n BeneficiaryPhysicalCity: beneficiaryInfo.Physical.City,\n BeneficiaryPhysicalPostalCode: beneficiaryInfo.Physical.PostalCode,\n BeneficiaryPhysicalState: beneficiaryInfo.Physical.State,\n BeneficiaryPhysicalStreetAddress1: beneficiaryInfo.Physical.StreetAddress1,\n BeneficiaryPhysicalStreetAddress2: beneficiaryInfo.Physical.StreetAddress2,\n BeneficiarySSN1: beneficiaryInfo.BeneficiarySSN1,\n BeneficiarySSN2: beneficiaryInfo.BeneficiarySSN2,\n };\n\n if (isValid) {\n this.props.setLoadingOn();\n\n this.props.saveBeneficiary(mappedBeneficiary)\n .then(() => {\n this.props.setLoadingOff();\n this.props.notificationShow(msg_bene_info_saved, 'success');\n this.props.onNextClick();\n })\n .catch(errors => {\n this.props.setLoadingOff();\n this.setState({\n apiErrors: errors.payload.data.filter(error => error.Field)\n }, () => this.formValidate());\n });\n }\n }\n\n onInputChange = (e) => {\n this.setState({\n beneficiaryInfo: {\n ...this.state.beneficiaryInfo,\n [e.target.name]: e.target.value\n },\n apiErrors: [],\n formErrors: {\n ...this.state.formErrors,\n [e.target.name]: ''\n }\n });\n }\n\n onRelationshipChange = type => {\n const { accountOwnerInfo, BENEFICIARY_RELATIONSHIPS } = this.props;\n const { beneficiaryInfo } = this.state;\n\n if (BENEFICIARY_RELATIONSHIPS.S === BENEFICIARY_RELATIONSHIPS[type]) { // if they selected Self, copy AO info over\n this.setState({\n autocompleteText: {\n Mailing: accountOwnerInfo.Mailing.StreetAddress1,\n Physical: accountOwnerInfo.Physical.StreetAddress1,\n },\n beneficiaryInfo: {\n BeneficiaryBirthdate: accountOwnerInfo.OwnerBirthdate,\n BeneficiaryFirstName: accountOwnerInfo.OwnerFirstName,\n BeneficiaryIsResident: accountOwnerInfo.OwnerIsResident,\n BeneficiaryLastName: accountOwnerInfo.OwnerLastName,\n BeneficiaryMailingAddressSameAsOwner: true,\n BeneficiaryMiddleName: accountOwnerInfo.OwnerMiddleName,\n BeneficiaryPhysicalAddressSameAsOwner: true,\n BeneficiarySSN1: accountOwnerInfo.OwnerSSN1,\n BeneficiarySSN2: accountOwnerInfo.OwnerSSN2,\n Mailing: accountOwnerInfo.Mailing,\n Physical: accountOwnerInfo.Physical,\n RelationshipToAccountOwner: type,\n encryptedDataExists: accountOwnerInfo.encryptedDataExists,\n },\n editSsn: false,\n formErrors: {\n Mailing: {},\n Physical: {},\n },\n });\n }\n else if (BENEFICIARY_RELATIONSHIPS[beneficiaryInfo.RelationshipToAccountOwner] === BENEFICIARY_RELATIONSHIPS.S && type !== BENEFICIARY_RELATIONSHIPS.S) { // if they are switching from Self, clear form\n this.setState({\n autocompleteText: {\n Mailing: '',\n Physical: '',\n },\n beneficiaryInfo: {\n BeneficiaryBirthdate: '',\n BeneficiaryFirstName: '',\n BeneficiaryIsResident: false,\n BeneficiaryLastName: '',\n BeneficiaryMailingAddressSameAsOwner: false,\n BeneficiaryMiddleName: '',\n BeneficiaryPhysicalAddressSameAsOwner: false,\n BeneficiarySSN1: '',\n BeneficiarySSN2: '',\n Mailing: BLANK_ADDRESS,\n Physical: BLANK_ADDRESS,\n RelationshipToAccountOwner: type,\n encryptedDataExists: false,\n },\n editSsn: true,\n });\n }\n else { // if they are switching between any relationships other than Self, just update the relationship but do not clear the form\n this.setState({\n beneficiaryInfo: { ...beneficiaryInfo, RelationshipToAccountOwner: type },\n });\n }\n }\n\n preventCopy = (e) => {\n const formErrors = cloneDeep(this.state.formErrors);\n const confirmSsnInput = e.target;\n\n confirmSsnInput.onpaste = e => {\n e.preventDefault();\n formErrors.BeneficiarySSN2 = this.props.text.BeneficiaryStep.err_copy_ssn;\n this.setState({ formErrors });\n };\n }\n\n ssnCompose = () => { // Handles encrypted SSN inputs\n const { text: { BeneficiaryStep } } = this.props;\n const { beneficiaryInfo: { BeneficiarySSN1, BeneficiarySSN2, encryptedDataExists }, editSsn, formErrors } = this.state;\n const isDisabled = this.inputIsDisabled();\n\n if ((encryptedDataExists && !editSsn) || isDisabled) { // if the birthdate is encrypted and user is NOT editing, OR has selected relationship as Self\n return (\n
    \n
    \n \n {!isDisabled && ( // if user selects relationship as Self, hide ability to edit field - that must be done from AO step\n \n )}\n
    \n
    \n \n {!isDisabled && ( // if user selects relationship as Self, hide ability to edit field - that must be done from AO step\n \n )}\n
    \n\n
    \n );\n }\n else if (!encryptedDataExists || editSsn) { // if the user does not have an encrypted ssn, or if they do but are editing\n return (\n
    \n this.onInputChange({ target: { name: 'BeneficiarySSN1', value } })}\n value={BeneficiarySSN1}\n variant='filled'\n />\n this.onInputChange({ target: { name: 'BeneficiarySSN2', value } })}\n onFocus={e => this.preventCopy(e)}\n value={BeneficiarySSN2}\n variant='filled'\n />\n\n
    \n );\n }\n }\n\n utahTaxpayerToggle = e => {\n this.setState({\n beneficiaryInfo: {\n ...this.state.beneficiaryInfo,\n BeneficiaryIsResident: e.target.checked,\n }\n });\n }\n\n componentDidMount() {\n const { beneficiaryInfo } = this.state;\n\n if (beneficiaryInfo.encryptedDataExists) {\n this.setState({\n editSsn: false,\n });\n }\n }\n\n render() {\n const { addressType, addressSuggestions, autocompleteText, beneficiaryInfo, existingBeneficiaryId, formErrors } = this.state;\n const { ADDRESS_TYPES, BENEFICIARY_RELATIONSHIPS, existingBenesList, isAgent_AccessRole, MaximumAge, onBackClick, text: { BeneficiaryStep }, usStates } = this.props;\n const isDisabled = this.inputIsDisabled();\n const addressIsDisabled = this.addressIsDisabled();\n\n return (\n \n
    \n
    \n

    {BeneficiaryStep.head_beneficiary}

    \n {BeneficiaryStep.text_what_is_bene.map(line =>
  • {line}
  • )}} />\n
    \n
    \n
    \n {isAgent_AccessRole &&\n ({ display: bene.Name, value: bene.BeneficiaryId }))}\n value={beneficiaryInfo.BeneficiaryId ? this.getExistingBeneValue() : 0}\n />\n }\n ({ display: BENEFICIARY_RELATIONSHIPS[rel], value: rel }))}\n SelectProps={{ disabled: existingBeneficiaryId !== 0 }}\n value={beneficiaryInfo.RelationshipToAccountOwner}\n />\n \n \n \n this.onInputChange({ target: { name: 'BeneficiaryBirthdate', value, } })}\n openTo='year'\n value={beneficiaryInfo.BeneficiaryBirthdate || ''}\n />\n {this.ssnCompose()}\n
    \n
    \n \n formErrors.Mailing[error] !== '') ? errorTabStyles : {}}\n value={ADDRESS_TYPES.Mailing}\n />\n formErrors.Physical[error] !== '') ? errorTabStyles : {}}\n value={ADDRESS_TYPES.Physical}\n />\n \n {\n addressType === ADDRESS_TYPES.Mailing ?\n \n :\n \n }\n this.state.formErrors[this.state.addressType][inputName]}\n inputProps={{ disabled: isDisabled || addressIsDisabled }} // This needs to be disabled in two places - this one disables State select\n isReadOnly={false}\n onAutocompleteAddressSelect={this.autocompleteAddressSelect}\n onInputChange={this.onAddressChange}\n stateFormControlProps={{ variant: 'filled' }}\n textFieldProps={{ disabled: isDisabled || addressIsDisabled, variant: 'filled' }} // This needs to be disabled in two places - this one disables Textfields\n usStates={usStates}\n />\n
    \n
    \n \n
    \n
    \n \n {BeneficiaryStep.btn_back}\n \n \n {BeneficiaryStep.btn_continue}\n \n
    \n
    \n
    \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n getExistingBeneficiary,\n notificationShow,\n saveBeneficiary,\n})(LanguageHOC(BeneficiaryStep));\n","/*\n*\n* Summary Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n TextField,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountOwnerInfo: state.signup.accountOwnerInfo,\n beneficiaryInfo: state.signup.beneficiaryInfo,\n investmentInfo: state.signup.investmentInfo,\n predefinedOptions: state.optionChanges.predefinedOptions,\n});\n\n\nexport class Summary extends React.Component {\n static propTypes = {\n accountOwnerInfo: PropTypes.shape({\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n OwnerBirthdate: PropTypes.string,\n OwnerFirstName: PropTypes.string,\n OwnerHomePhone: PropTypes.string,\n OwnerIsResident: PropTypes.bool,\n OwnerLastName: PropTypes.string,\n OwnerMiddleName: PropTypes.string,\n OwnerSSN1: PropTypes.string,\n OwnerSSN2: PropTypes.string,\n Physical: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n })\n }).isRequired,\n beneficiaryInfo: PropTypes.shape({\n BeneficiaryIsResident: PropTypes.bool,\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n BeneficiaryBirthdate: PropTypes.string,\n BeneficiaryFirstName: PropTypes.string,\n BeneficiaryLastName: PropTypes.string,\n BeneficiaryMiddleName: PropTypes.string,\n BeneficiarySSN1: PropTypes.string,\n BeneficiarySSN2: PropTypes.string,\n Physical: PropTypes.shape({\n StreetAddress1: PropTypes.string,\n StreetAddress2: PropTypes.string,\n City: PropTypes.string,\n PostalCode: PropTypes.string,\n State: PropTypes.string,\n }),\n RelationshipToAccountOwner: PropTypes.string,\n }).isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isEditable: PropTypes.bool,\n investmentInfo: PropTypes.shape({\n InvestmentOptionId: PropTypes.number,\n Template: PropTypes.object,\n }).isRequired,\n onPromoCodeChange: PropTypes.func,\n onStepClick: PropTypes.func,\n predefinedOptions: PropTypes.array.isRequired,\n promoError: PropTypes.string,\n PromotionalCode: PropTypes.string.isRequired,\n showPromoCode: PropTypes.bool,\n text: PropTypes.shape({\n Summary: PropTypes.shape({\n head_account_owner: PropTypes.string,\n head_beneficiary: PropTypes.string,\n head_investment_option: PropTypes.string,\n head_mailing_address: PropTypes.string,\n head_physical_address: PropTypes.string,\n lbl_bene_utah_tax_payer: PropTypes.string,\n lbl_birthdate: PropTypes.string,\n lbl_cancel: PropTypes.string,\n lbl_city: PropTypes.string,\n lbl_clear_state: PropTypes.string,\n lbl_firstName: PropTypes.string,\n lbl_homePhone: PropTypes.string,\n lbl_lastName: PropTypes.string,\n lbl_middleName: PropTypes.string,\n lbl_postalCode: PropTypes.string,\n lbl_promo_code: PropTypes.string,\n lbl_relationship: PropTypes.string,\n lbl_ssn_tin: PropTypes.string,\n lbl_state: PropTypes.string,\n lbl_street1: PropTypes.string,\n lbl_street2: PropTypes.string,\n lbl_utah_tax_payer: PropTypes.string,\n msg_promo_applied: PropTypes.string,\n text_customized_ageBased: PropTypes.string,\n text_customized_static: PropTypes.string,\n text_no: PropTypes.string,\n text_yes: PropTypes.string,\n })\n }).isRequired,\n };\n\n static defaultProps = {\n isEditable: true,\n showPromoCode: true,\n };\n\n investmentOptionCompose = () => {\n const { investmentInfo: { InvestmentOptionId, Template }, predefinedOptions, text: { Summary } } = this.props;\n if (InvestmentOptionId) {\n return predefinedOptions.find(opt => opt.OptionId === InvestmentOptionId).Name;\n }\n return Template && Template.TemplateType === 'S' ? Summary.text_customized_static : Summary.text_customized_ageBased;\n }\n\n render() {\n const { accountOwnerInfo, beneficiaryInfo, isDisabled, isEditable, onPromoCodeChange, onStepClick, promoError, PromotionalCode, showPromoCode, text: { Summary } } = this.props;\n const phoneNumbersOnly = accountOwnerInfo.OwnerHomePhone.replace(/[^0-9.]+/g, ''); // removes formatting from API to ensure phone number is always formatted the same way, no matter what environment\n\n return (\n
    \n {/* PROMO CODE */}\n {showPromoCode && (\n )}\n\n {/* INVESTMENT OPTION INFORMATION */}\n
    \n
    \n

    {Summary.head_investment_option}

    \n {isEditable && (\n onStepClick(2)}\n />\n )}\n
    \n
    \n

    {this.investmentOptionCompose()}

    \n
    \n
    \n\n {/* ACCOUNT OWNER INFORMATION */}\n
    \n
    \n

    {Summary.head_account_owner}

    \n {isEditable && (\n onStepClick(0)}\n />\n )}\n
    \n
    \n
    \n
    \n

    {Summary.lbl_firstName}

    \n

    {accountOwnerInfo.OwnerFirstName}

    \n
    \n {accountOwnerInfo.OwnerMiddleName && ( // if Middlename is populated\n
    \n

    {Summary.lbl_middleName}

    \n

    {accountOwnerInfo.OwnerMiddleName}

    \n
    \n )}\n
    \n

    {Summary.lbl_lastName}

    \n

    {accountOwnerInfo.OwnerLastName}

    \n
    \n
    \n
    \n

    {Summary.lbl_birthdate}

    \n

    {accountOwnerInfo.OwnerBirthdate}

    \n
    \n
    \n

    {Summary.lbl_ssn_tin}

    \n

    {accountOwnerInfo.OwnerSSN1}

    \n
    \n {accountOwnerInfo.OwnerHomePhone && // some existing AOs do not have a home phone, so this will show nothing instead of an empty number\n
    \n

    {Summary.lbl_homePhone}

    \n

    ({phoneNumbersOnly.slice(0, 3)}) {phoneNumbersOnly.slice(3, 6)}-{phoneNumbersOnly.slice(6)}

    \n
    \n }\n
    \n\n
    \n
    \n

    {Summary.head_mailing_address}

    \n

    {Summary.lbl_street1}

    \n

    {accountOwnerInfo.Mailing.StreetAddress1}

    \n
    \n {accountOwnerInfo.Mailing.StreetAddress2 && ( // if StreetAddress2 is populated\n
    \n

    {Summary.lbl_street2}

    \n

    {accountOwnerInfo.Mailing.StreetAddress2}

    \n
    \n )}\n
    \n

    {Summary.lbl_city}, {Summary.lbl_state}, {Summary.lbl_postalCode}

    \n

    {accountOwnerInfo.Mailing.City}, {accountOwnerInfo.Mailing.State} {accountOwnerInfo.Mailing.PostalCode}

    \n
    \n {accountOwnerInfo.Physical.StreetAddress1 && ( // if Physical address exists\n
    \n
    \n

    {Summary.head_physical_address}

    \n

    {Summary.lbl_street1}

    \n

    {accountOwnerInfo.Physical.StreetAddress1}

    \n
    \n {accountOwnerInfo.Physical.StreetAddress2 && ( // if StreetAddress2 is populated\n
    \n

    {Summary.lbl_street2}

    \n

    {accountOwnerInfo.Physical.StreetAddress2}

    \n
    \n )}\n
    \n

    {Summary.lbl_city}, {Summary.lbl_state}, {Summary.lbl_postalCode}

    \n

    {accountOwnerInfo.Physical.City}, {accountOwnerInfo.Physical.State} {accountOwnerInfo.Physical.PostalCode}

    \n
    \n
    \n )}\n
    \n

    {Summary.lbl_utah_tax_payer}

    \n

    {accountOwnerInfo.OwnerIsResident ? Summary.text_yes : Summary.text_no}

    \n
    \n
    \n
    \n\n {/* BENEFICIARY INFORMATION */}\n
    \n
    \n

    {Summary.head_beneficiary}

    \n {isEditable && (\n onStepClick(1)}\n />\n )}\n
    \n
    \n
    \n
    \n

    {Summary.lbl_firstName}

    \n

    {beneficiaryInfo.BeneficiaryFirstName}

    \n
    \n {beneficiaryInfo.BeneficiaryMiddleName && ( // if Middlename is populated\n
    \n

    {Summary.lbl_middleName}

    \n

    {beneficiaryInfo.BeneficiaryMiddleName}

    \n
    \n )}\n
    \n

    {Summary.lbl_lastName}

    \n

    {beneficiaryInfo.BeneficiaryLastName}

    \n
    \n
    \n
    \n

    {Summary.lbl_birthdate}

    \n

    {beneficiaryInfo.BeneficiaryBirthdate}

    \n
    \n
    \n

    {Summary.lbl_ssn_tin}

    \n

    {beneficiaryInfo.BeneficiarySSN1}

    \n
    \n
    \n
    \n
    \n

    {Summary.head_mailing_address}

    \n

    {Summary.lbl_street1}

    \n

    {beneficiaryInfo.Mailing.StreetAddress1}

    \n
    \n {beneficiaryInfo.Mailing.StreetAddress2 && ( // if StreetAddress2 is populated\n
    \n

    {Summary.lbl_street2}

    \n

    {beneficiaryInfo.Mailing.StreetAddress2}

    \n
    \n )}\n
    \n

    {Summary.lbl_city}, {Summary.lbl_state}, {Summary.lbl_postalCode}

    \n

    {beneficiaryInfo.Mailing.City}, {beneficiaryInfo.Mailing.State} {beneficiaryInfo.Mailing.PostalCode}

    \n
    \n {beneficiaryInfo.Physical.StreetAddress1 && ( // if Physical address exists\n
    \n
    \n

    {Summary.head_physical_address}

    \n

    {Summary.lbl_street1}

    \n

    {beneficiaryInfo.Physical.StreetAddress1}

    \n
    \n {beneficiaryInfo.Physical.StreetAddress2 && ( // if StreetAddress2 is populated\n
    \n

    {Summary.lbl_street2}

    \n

    {beneficiaryInfo.Physical.StreetAddress2}

    \n
    \n )}\n
    \n

    {Summary.lbl_city}, {Summary.lbl_state}, {Summary.lbl_postalCode}

    \n

    {beneficiaryInfo.Physical.City}, {beneficiaryInfo.Physical.State} {beneficiaryInfo.Physical.PostalCode}

    \n
    \n
    \n )}\n
    \n

    {Summary.lbl_bene_utah_tax_payer}

    \n

    {beneficiaryInfo.BeneficiaryIsResident ? Summary.text_yes : Summary.text_no}

    \n
    \n
    \n
    \n
    \n );\n }\n}\n\n\nexport default connect(select, {})(LanguageHOC(Summary));\n","/*\n*\n* ConfirmationStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n getExistingBeneficiaries,\n resetAccountApplication\n} from '../actions';\nimport { refreshClaims } from 'components/AppRoot/Navigation/actions.js';\nimport { documentsGet } from 'components/Features/protected/Documents/actions';\nimport Summary from '../Summary';\nimport {\n Button,\n Paper,\n} from '@mui/material';\nimport { IconBtnTooltip } from '@frontend/common';\nimport { signupStepper } from 'utils/ga/events';\n\nimport styles from './styles.module.scss';\n\nconst select = state => ({\n AccountNumber: state.signup.AccountNumber,\n documents: state.documents.documents,\n personId: state.session.claims.PersonId,\n PromotionalCode: state.signup.PromotionalCode,\n});\n\nconst LOCATIONS = { HOME: 'home', SIGNUP: 'signup' };\n\n\nexport class ConfirmationStep extends React.Component {\n static propTypes = {\n AccountNumber: PropTypes.number.isRequired,\n documents: PropTypes.array.isRequired,\n documentsGet: PropTypes.func.isRequired,\n getExistingBeneficiaries: PropTypes.func.isRequired,\n onStepClick: PropTypes.func.isRequired,\n personId: PropTypes.string.isRequired,\n PromotionalCode: PropTypes.string.isRequired,\n refreshClaims: PropTypes.func.isRequired,\n resetAccountApplication: PropTypes.func.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ConfirmationStep: PropTypes.shape({\n btn_to_home: PropTypes.string,\n head_congratulations: PropTypes.string,\n text_account_created: PropTypes.string,\n text_account_number: PropTypes.string,\n text_add_another_account: PropTypes.string,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n nextLocation: '',\n };\n\n goToLocation = () => {\n window.scrollTo(0, 0); // this will scroll to the top if user chooses to add another account\n switch (this.state.nextLocation) {\n case LOCATIONS.HOME: this.props.history.push(this.props.text.Home.nav_path); break;\n case LOCATIONS.SIGNUP: this.props.onStepClick(1); break;\n default: break;\n }\n }\n\n setLocation = nextLocation => {\n this.setState({ nextLocation }, () => this.updateAccount());\n }\n\n updateAccount = () => {\n this.props.setLoadingOn();\n\n const apiCalls = [];\n\n if (!this.props.personId) { // only runs for brand new users\n apiCalls.push(this.props.refreshClaims());\n }\n\n if (this.props.documents.length > 0) { // if docs are already in store, re-fetch them to get new account certificates. Otherwise, the new certs will be fetched when Documents is loaded for the first time\n apiCalls.push(this.props.documentsGet());\n }\n \n Promise.all(apiCalls)\n .then(() => {\n this.goToLocation(); // goes to next location if user clicked button\n })\n .catch(() => this.props.setLoadingOff());\n }\n\n componentWillUnmount() { // this will run when user leaves page either by clicking a SSup button or left nav (existing users have access to left nav).\n this.props.getExistingBeneficiaries(); // re-fetches existing beneficiaries so new account is added to existingBenesList. Needs to occur AFTER refreshing claims.\n this.props.resetAccountApplication(); // clears application so a new bene can be added right away\n this.props.setLoadingOff();\n signupStepper('finish'); // Google Analytics url for goal tracking\n }\n\n render() {\n const { AccountNumber, PromotionalCode, text: { ConfirmationStep } } = this.props;\n\n return (\n \n
    \n
    \n window.print()}\n />\n
    \n
    \n

    {ConfirmationStep.head_congratulations}

    \n

    {ConfirmationStep.text_account_number}: {AccountNumber}

    \n

    {ConfirmationStep.text_account_created}

    \n
    \n\n \n\n
    \n this.setLocation(LOCATIONS.SIGNUP)}\n >\n {ConfirmationStep.text_add_another_account}\n \n this.setLocation(LOCATIONS.HOME)}\n variant='contained'\n >\n {ConfirmationStep.btn_to_home}\n \n
    \n
    \n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n documentsGet,\n getExistingBeneficiaries,\n refreshClaims,\n resetAccountApplication,\n})(LanguageHOC(ConfirmationStep)));\n","/*\n*\n* InvestmentOptionStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport parse from 'html-react-parser';\nimport {\n Button,\n Drawer,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n FormControl,\n FormControlLabel,\n Icon,\n Paper,\n Radio,\n RadioGroup,\n} from '@mui/material';\nimport { withStyles, } from '@mui/styles';\nimport {\n allNotificationsHide,\n IconBtnTooltip,\n InfoIcon,\n LoadingOverlay,\n Modal,\n notificationShow,\n CalculatorForm\n} from '@frontend/common';\nimport {\n getNewAgeBasedSchema,\n getNewStaticSchema,\n} from 'components/Features/protected/Accounts/Transactions/OptionChanges/actions.js';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\nimport { saveCustomizedOption, savePredefinedInvestmentOption } from '../actions';\nimport { mobileWidth, tabletWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\n\nconst muiStyles = () => ({\n expansionPanelBody: {\n background: '#F8F8F8',\n boxShadow: 'none',\n marginBottom: '0px',\n },\n expansionPanelSummaryContent: {\n margin: '20px 0px 0px 0px',\n },\n expansionPanelSummaryRoot: {\n margin: '0px',\n },\n expansionPanelDetails: {\n paddingTop: '0px'\n }\n});\n\nconst select = (state) => ({\n beneficiaryInfo: state.signup.beneficiaryInfo,\n customAgeBasedOption: state.optionChanges.predefinedOptions ? state.optionChanges.predefinedOptions.find(option => option.OptionId === 14) : {},\n customStaticOption: state.optionChanges.predefinedOptions ? state.optionChanges.predefinedOptions.find(option => option.OptionId === 12) : {},\n investmentInfo: state.signup.investmentInfo,\n newAgeBasedSchema: state.optionChanges.newAgeBasedSchema,\n newStaticSchema: state.optionChanges.newStaticSchema,\n predefinedEnrollmentDateOptions: state.optionChanges.predefinedOptions ? state.optionChanges.predefinedOptions.filter(option => option.isEnrollmentDate) : [],\n predefinedStaticOptions: state.optionChanges.predefinedOptions ? state.optionChanges.predefinedOptions.filter(option => option.isStatic) : [],\n programDescription: state.static.documents.programDescription,\n selectedExistingBene: state.signup.existingBenesList.find(bene => bene.BeneficiaryId === state.signup.beneficiaryInfo.BeneficiaryId) || {},\n ServerDateTime: state.static.ServerDateTime,\n});\n\n\nexport class InvestmentOptionStep extends React.Component {\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n allNotificationsHide: PropTypes.func.isRequired,\n beneficiaryInfo: PropTypes.shape({ BeneficiaryId: PropTypes.number }).isRequired,\n classes: PropTypes.object.isRequired,\n customAgeBasedOption: PropTypes.object.isRequired,\n customStaticOption: PropTypes.object.isRequired,\n existingBenesList: PropTypes.array.isRequired,\n getNewAgeBasedSchema: PropTypes.func.isRequired,\n getNewStaticSchema: PropTypes.func.isRequired,\n investmentInfo: PropTypes.shape({\n InvestmentOptionId: PropTypes.number,\n Template: PropTypes.object\n }).isRequired,\n newAgeBasedSchema: PropTypes.object.isRequired,\n newStaticSchema: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onBackClick: PropTypes.func.isRequired,\n onNextClick: PropTypes.func.isRequired,\n predefinedEnrollmentDateOptions: PropTypes.array.isRequired,\n predefinedStaticOptions: PropTypes.array.isRequired,\n programDescription: PropTypes.string.isRequired,\n saveCustomizedOption: PropTypes.func.isRequired,\n savePredefinedInvestmentOption: PropTypes.func.isRequired,\n selectedExistingBene: PropTypes.object.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n ServerDateTime: PropTypes.string,\n text: PropTypes.shape({\n InvestmentOptionStep: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_continue: PropTypes.string,\n btn_create_ageBased: PropTypes.string,\n btn_create_static: PropTypes.string,\n btn_details: PropTypes.string,\n btn_edit_ageBased: PropTypes.string,\n btn_edit_static: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_save: PropTypes.string,\n err_must_select_opt: PropTypes.string,\n head_enrollmentdate_opts: PropTypes.string,\n head_customized_opts: PropTypes.string,\n head_investment_opt_disclosures: PropTypes.string,\n head_investment_option: PropTypes.string,\n head_static_opts: PropTypes.string,\n msg_cannot_select_opt: PropTypes.string,\n msg_investment_opt_saved: PropTypes.string,\n msg_total_allocations_ageBased: PropTypes.string,\n msg_total_allocations_static: PropTypes.string,\n text_about_investment_opts: PropTypes.string,\n text_enrollmentdate_details1: PropTypes.string,\n text_enrollmentdate_details2: PropTypes.string,\n text_enrollmentdate_details3: PropTypes.string,\n text_enrollmentdate_summary: PropTypes.string,\n text_customized_details1: PropTypes.string,\n text_customized_details2: PropTypes.string,\n text_customized_review_performance: PropTypes.string,\n text_customized_summary: PropTypes.string,\n text_disclosures: PropTypes.func,\n text_options_on_mobile: PropTypes.string,\n text_static_details1: PropTypes.string,\n text_static_details2: PropTypes.string,\n text_static_details3: PropTypes.string,\n text_static_summary: PropTypes.string,\n title_options_on_mobile: PropTypes.string,\n }),\n }).isRequired,\n welcomeModalOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n enrollmentDateExpanded: false,\n customizedExpanded: false,\n customizedIsSaving: false,\n formErrors: {},\n investmentOptionValue: this.props.investmentInfo.InvestmentOptionId,\n showCustomizedAgeBased: false,\n showCustomizedStatic: false,\n showDisclosures: false,\n staticExpanded: false,\n template: {\n TemplateName: '',\n FundCategories: []\n },\n calculatorErrors: {},\n matrixAllocations: [],\n showModalWhenMobileAndCustomized: false,\n };\n\n closeCustomized = () => {\n this.setState({\n showCustomizedAgeBased: false,\n showCustomizedStatic: false,\n }, () => this.setCustomized()); // calling this will reset template\n\n this.props.allNotificationsHide();\n }\n\n continueHandle = e => {\n e.preventDefault();\n if (!this.state.investmentOptionValue && this.state.template.FundCategories.length > 0) {\n this.saveCustomized(e);\n }\n else {\n this.savePredefined(e);\n }\n }\n\n onAllocationChange = (matrixAllocations, calculatorErrors) => {\n this.setState({ matrixAllocations, calculatorErrors });\n const { hasAllocationAmountError, hasBracketTotalSumOver100Error } = calculatorErrors;\n // throw a toast on specific form errors\n if (hasAllocationAmountError || hasBracketTotalSumOver100Error) {\n hasBracketTotalSumOver100Error && this.props.notificationShow(hasBracketTotalSumOver100Error, 'error');\n hasAllocationAmountError && this.props.notificationShow(hasAllocationAmountError, 'error');\n }\n else {\n this.props.allNotificationsHide();\n }\n }\n\n customizedValidate = () => {\n const {\n calculatorErrors: {\n hasAnyBracketTotalNot100Error,\n hasAllocationAmountError,\n hasBracketTotalSumOver100Error\n }\n } = this.state;\n\n const errorMessages = [];\n hasAnyBracketTotalNot100Error && errorMessages.push(hasAnyBracketTotalNot100Error);\n hasBracketTotalSumOver100Error && errorMessages.push(hasBracketTotalSumOver100Error);\n hasAllocationAmountError && errorMessages.push(hasAllocationAmountError);\n\n if (errorMessages.length > 0) {\n errorMessages.forEach(message => {\n this.props.notificationShow(message, 'error');\n });\n }\n\n return errorMessages.length === 0; // returns true (is valid) if no error messages\n }\n\n expandSelection = () => {\n const { investmentInfo: { InvestmentOptionId, Template }, predefinedEnrollmentDateOptions, predefinedStaticOptions } = this.props;\n\n // expands panel where option is selected\n if (InvestmentOptionId && predefinedEnrollmentDateOptions.find(opt => opt.OptionId === InvestmentOptionId)) {\n this.setState({ enrollmentDateExpanded: true });\n }\n else if (InvestmentOptionId && predefinedStaticOptions.find(opt => opt.OptionId === InvestmentOptionId)) {\n this.setState({ staticExpanded: true });\n }\n else if (Template) {\n this.setState({ customizedExpanded: true });\n }\n // else, leave it as initial state (all collapsed)\n }\n\n formValidate = () => {\n const formErrors = {};\n if (!this.state.investmentOptionValue && !this.props.investmentInfo.Template) {\n formErrors.investmentOptionValue = this.props.text.InvestmentOptionStep.err_must_select_opt;\n }\n\n this.setState({ formErrors });\n return Object.values(formErrors).every(error => formErrors[error] === '');\n }\n\n openCustomized = templateType => {\n if (window.innerWidth <= parseInt(mobileWidth)) {\n this.setState({ showModalWhenMobileAndCustomized: true });\n }\n else {\n this.setState({\n [templateType]: true\n }, () => this.setCustomized());\n }\n }\n\n optionIsDisabled = option => { // disable options that an existing bene already has accounts for\n const { beneficiaryInfo, selectedExistingBene } = this.props;\n\n\n const options = selectedExistingBene.Options || [];\n\n if (beneficiaryInfo.BeneficiaryId) { // determines if an existing beneficiary is selected\n if (option === 'age-based') {\n return options.some(opt => opt.IsCustomAgeBased); // returns true if any existing option is age-based\n }\n else if (option === 'static') {\n return options.some(opt => opt.IsCustomStatic); // returns true if any existing option is static\n }\n return options.some(opt => opt.OptionId === option.OptionId); // returns true if any existing option equals the option ID being passed in\n }\n return false; // else, return false so that options aren't disabled\n }\n\n saveCustomized = e => {\n e.preventDefault();\n const { showCustomizedAgeBased, showCustomizedStatic } = this.state;\n let template;\n\n if (!showCustomizedAgeBased && !showCustomizedStatic && this.props.investmentInfo.Template) { // if user has not created a new customized template, nor selected an investment option, use customized template in props\n template = this.props.investmentInfo.Template;\n }\n else {\n template = { ...this.state.template };\n }\n\n if (this.customizedValidate()) {\n this.setState({ customizedIsSaving: true }); // need to use loading from state instead of setLoadingOn() because the bottom sheet hides the loader\n this.props.allNotificationsHide();\n this.props.saveCustomizedOption(this.state.matrixAllocations, template)\n .then(() => {\n this.props.notificationShow('Customized option created.', 'success');\n this.props.getNotifications(); // refreshes app notifications\n this.props.onNextClick();\n this.setState({ customizedIsSaving: false });\n })\n .catch(() => this.setState({ customizedIsSaving: false }));\n }\n }\n\n savePredefined = e => {\n e.preventDefault();\n\n if (this.formValidate()) {\n this.props.setLoadingOn();\n\n this.props.savePredefinedInvestmentOption(this.state.investmentOptionValue)\n .then(() => {\n this.props.notificationShow(this.props.text.InvestmentOptionStep.msg_investment_opt_saved, 'success');\n this.props.getNotifications(); // refreshes app notifications\n this.props.onNextClick();\n this.props.setLoadingOff();\n })\n .catch(() => this.props.setLoadingOff());\n }\n }\n\n setOptionId = e => {\n this.setState({\n formErrors: {\n ...this.state.formErrors,\n investmentOptionValue: ''\n },\n investmentOptionValue: parseInt(e.target.value),\n });\n }\n\n setCustomized = () => { // sets template type based on what button was clicked to open it, and then resets template back to original if no changes were saved\n const { investmentInfo: { Template }, newAgeBasedSchema, newStaticSchema } = this.props;\n const { showCustomizedAgeBased, showCustomizedStatic } = this.state;\n\n if (!showCustomizedAgeBased && !showCustomizedStatic && Template) { // if user is trying to proceed through this step without having anything open, but already has a template saved in the store\n this.setState({\n template: Template, // checks if user has previously completed age-based calc and sets that for editing\n });\n }\n\n else if (showCustomizedAgeBased) { // if we are showing age-based calc\n this.setState({\n template: Template && Template.TemplateType === 'A' ? Template : newAgeBasedSchema, // checks if user has previously completed age-based calc and sets that for editing\n });\n }\n else {\n this.setState({\n template: Template && Template.TemplateType === 'S' ? Template : newStaticSchema, // checks if user has previously completed static calc and sets that for editing\n });\n }\n }\n\n componentDidMount() {\n this.setState({ showDisclosures: true });\n\n this.expandSelection();\n\n // gets new templates if not already in store\n const promises = [];\n if (this.props.newAgeBasedSchema.FundCategories.length === 0)\n promises.push(this.props.getNewAgeBasedSchema());\n\n if (this.props.newStaticSchema.FundCategories.length === 0)\n promises.push(this.props.getNewStaticSchema());\n\n if (promises.length > 0)\n Promise.all(promises);\n }\n\n render() {\n const {\n enrollmentDateExpanded, customizedExpanded, customizedIsSaving, formErrors,\n investmentOptionValue, showCustomizedAgeBased, showCustomizedStatic, showDisclosures,\n staticExpanded, template\n } = this.state;\n const {\n classes, customAgeBasedOption, customStaticOption, investmentInfo: { Template },\n onBackClick, predefinedEnrollmentDateOptions, predefinedStaticOptions, programDescription,\n text: { InvestmentOptionStep }, welcomeModalOpen, ServerDateTime\n } = this.props;\n\n const saveAndCloseCustomizedButtons = (\n
    \n \n {InvestmentOptionStep.btn_cancel}\n \n \n \n {InvestmentOptionStep.btn_save}\n \n \n
    \n );\n\n return (\n \n \n
    \n
    \n

    {InvestmentOptionStep.head_investment_option}

    \n

    {InvestmentOptionStep.text_about_investment_opts}

    \n
    \n\n
    \n this.setState({ enrollmentDateExpanded: !enrollmentDateExpanded })}\n >\n expand_more}\n id='age-based-investment-options'\n >\n
    \n

    {InvestmentOptionStep.head_enrollmentdate_opts}

    \n

    {InvestmentOptionStep.text_enrollmentdate_summary}

    \n
    \n \n \n
    \n
    \n

    {InvestmentOptionStep.text_enrollmentdate_details1}

    \n

    {InvestmentOptionStep.text_enrollmentdate_details2}

    \n
    \n

    \n {InvestmentOptionStep.text_enrollmentdate_details3}\n

    {/* TODO use links from API when it becomes available */}\n {window.innerWidth <= parseInt(tabletWidth) ? // shows icon on tablet and smaller, shows button text on desktop\n window.open(predefinedEnrollmentDateOptions[0].OptionOnlineLink, '_blank', 'noopener noreferrer')}\n title={InvestmentOptionStep.btn_details}\n />\n :\n }\n
    \n
    \n \n this.setOptionId(e)}\n >\n {predefinedEnrollmentDateOptions.map(option => (\n
    \n
    \n }\n label={\n
    \n
    {option.Name}
    \n {option.OptionOnlineDescription\n && }\n
    \n }\n labelPlacement='end'\n value={option.OptionId}\n />\n
    \n
    \n ))}\n \n
    \n
    \n \n \n\n this.setState({ staticExpanded: !staticExpanded })}\n >\n expand_more}\n >\n
    \n

    {InvestmentOptionStep.head_static_opts}

    \n

    {InvestmentOptionStep.text_static_summary}

    \n
    \n \n \n
    \n
    \n

    {InvestmentOptionStep.text_static_details1}

    \n

    {InvestmentOptionStep.text_static_details2}

    \n

    {InvestmentOptionStep.text_static_details3}

    {/* TODO use links from API when it becomes available */}\n
    \n \n this.setOptionId(e)}\n >\n {predefinedStaticOptions.map(option => (\n
    \n
    \n }\n label={\n
    \n
    {option.Name}
    \n {option.OptionOnlineDescription\n && }\n
    \n }\n labelPlacement='end'\n value={option.OptionId}\n />\n
    \n {window.innerWidth <= parseInt(tabletWidth) ? // shows icon on tablet and smaller, shows button text on desktop\n window.open(option.OptionOnlineLink, '_blank', 'noopener noreferrer')}\n title={InvestmentOptionStep.btn_details}\n />\n :\n \n }\n
    \n ))}\n \n
    \n
    \n
    \n \n\n this.setState({ customizedExpanded: !customizedExpanded })}\n >\n expand_more}\n >\n
    \n

    {InvestmentOptionStep.head_customized_opts}

    \n

    {InvestmentOptionStep.text_customized_summary}

    \n
    \n \n \n
    \n

    {InvestmentOptionStep.text_customized_details1}

    \n

    {InvestmentOptionStep.text_customized_details2}

    \n

    {InvestmentOptionStep.text_customized_review_performance}

    {/* TODO use links from API when it becomes available */}\n
    \n
    \n this.openCustomized('showCustomizedAgeBased')}\n variant='text'\n >\n {Template && Template.TemplateType === 'A' ? InvestmentOptionStep.btn_edit_ageBased : InvestmentOptionStep.btn_create_ageBased}\n \n {customAgeBasedOption.OptionOnlineDescription\n && }\n window.open(customAgeBasedOption.OptionOnlineLink, '_blank', 'noopener noreferrer')}\n title={InvestmentOptionStep.btn_details}\n />\n
    \n
    \n this.openCustomized('showCustomizedStatic')}\n variant='text'\n >\n {Template && Template.TemplateType === 'S' ? InvestmentOptionStep.btn_edit_static : InvestmentOptionStep.btn_create_static}\n \n {customStaticOption.OptionOnlineDescription\n && }\n window.open(customStaticOption.OptionOnlineLink, '_blank', 'noopener noreferrer')}\n title={InvestmentOptionStep.btn_details}\n />\n
    \n
    \n
    \n
    \n \n\n {Boolean(formErrors.investmentOptionValue) &&
    {formErrors.investmentOptionValue}
    }\n
    \n \n {InvestmentOptionStep.btn_back}\n \n \n variant='contained'\n type='submit'\n >\n {InvestmentOptionStep.btn_continue}\n \n
    \n \n
    \n
    \n\n \n
    \n {saveAndCloseCustomizedButtons}\n \n {saveAndCloseCustomizedButtons}\n
    \n
    \n this.setState({ showDisclosures: false })}\n DialogProps={{ style: welcomeModalOpen ? { zIndex: 1 } : {} }} // keeps the disclosures modal behind the welcome modal\n actionButtons={[\n {\n action: () => this.setState({ showDisclosures: false }),\n label: InvestmentOptionStep.btn_ok,\n }\n ]}\n >\n
      \n {InvestmentOptionStep.text_disclosures(programDescription).map((line, idx) => idx !== 7 &&
    • {line}
    • )}\n
    \n

    {InvestmentOptionStep.text_disclosures(programDescription)[7]}

    \n \n\n this.setState({ showModalWhenMobileAndCustomized: false }),\n }\n ]}\n fullScreen={false}\n onCloseModal={() => this.setState({ showModalWhenMobileAndCustomized: false })}\n show={this.state.showModalWhenMobileAndCustomized}\n title={InvestmentOptionStep.title_options_on_mobile}\n >\n {InvestmentOptionStep.text_options_on_mobile}\n \n
    \n );\n }\n}\n\n\nexport default withStyles(muiStyles)(connect(select, {\n getNotifications,\n allNotificationsHide,\n getNewAgeBasedSchema,\n getNewStaticSchema,\n notificationShow,\n saveCustomizedOption,\n savePredefinedInvestmentOption,\n})(LanguageHOC(InvestmentOptionStep)));\n","/*\n*\n* ReviewStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Paper,\n} from '@mui/material';\nimport { savePromoCode } from '../actions';\nimport Summary from '../Summary';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n PromotionalCode: state.signup.PromotionalCode,\n});\n\nexport class ReviewStep extends React.Component {\n static propTypes = {\n isLoading: PropTypes.bool.isRequired,\n onBackClick: PropTypes.func.isRequired,\n onNextClick: PropTypes.func.isRequired,\n onStepClick: PropTypes.func.isRequired,\n PromotionalCode: PropTypes.string.isRequired,\n savePromoCode: PropTypes.func.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n text: PropTypes.shape({\n ReviewStep: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_continue: PropTypes.string,\n head_review: PropTypes.string,\n text_review: PropTypes.array,\n })\n }).isRequired,\n };\n\n state = {\n PromotionalCode: this.props.PromotionalCode,\n promoError: '',\n };\n\n onPromoCodeChange = e => {\n this.setState({\n PromotionalCode: e.target.value,\n promoError: '',\n });\n }\n\n saveAndContinue = () => {\n const { onNextClick, savePromoCode, setLoadingOff, setLoadingOn } = this.props;\n\n setLoadingOn();\n\n savePromoCode(this.state.PromotionalCode)\n .then(() => {\n onNextClick();\n setLoadingOff();\n })\n .catch(error => {\n this.setState({ promoError: error.payload.data[0].Message });\n setLoadingOff();\n });\n }\n\n render() {\n const { isLoading, onBackClick, onStepClick, text: { ReviewStep } } = this.props;\n\n return (\n \n
    \n
    \n

    {ReviewStep.head_review}

    \n {ReviewStep.text_review.map(line =>

    {line}

    )}\n
    \n\n \n\n
    \n \n {ReviewStep.btn_back}\n \n \n {ReviewStep.btn_continue}\n \n
    \n
    \n
    \n );\n }\n}\n\n\nexport default connect(select, {\n savePromoCode,\n})(LanguageHOC(ReviewStep));\n","/*\n*\n* TermsConditionsStep Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport parse from 'html-react-parser';\nimport {\n Button,\n Paper\n} from '@mui/material';\nimport {\n Checkbox,\n IconBtnTooltip,\n notificationShow,\n} from '@frontend/common';\n\nimport { createAccount } from '../actions';\nimport { getAccounts, getAccountsSummary } from 'components/Features/protected/Accounts/actions';\nimport { setDisableLeftMenu } from 'components/AppRoot/Navigation/actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n faxNumber: state.static.environmentVars.FaxNumber,\n phoneNumber: state.static.environmentVars.SupportPhoneNumber,\n programDescription: state.static.documents.programDescription,\n});\n\n\nexport class TermsConditionsStep extends React.Component {\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n getAccounts: PropTypes.func.isRequired,\n getAccountsSummary: PropTypes.func.isRequired,\n setDisableLeftMenu: PropTypes.func.isRequired,\n createAccount: PropTypes.func.isRequired,\n faxNumber: PropTypes.string.isRequired,\n isLoading: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n onBackClick: PropTypes.func.isRequired,\n onNextClick: PropTypes.func.isRequired,\n phoneNumber: PropTypes.string.isRequired,\n programDescription: PropTypes.string.isRequired,\n setLoadingOff: PropTypes.func.isRequired,\n setLoadingOn: PropTypes.func.isRequired,\n text: PropTypes.shape({\n TermsConditionsStep: PropTypes.shape({\n btn_back: PropTypes.string,\n btn_i_agree: PropTypes.string,\n head_terms: PropTypes.string,\n msg_account_created: PropTypes.string,\n text_terms_intro: PropTypes.string,\n text_read_understand_agree: PropTypes.func,\n text_terms1: PropTypes.array,\n text_terms2: PropTypes.array,\n text_terms3: PropTypes.func,\n text_terms4: PropTypes.string,\n })\n }).isRequired,\n };\n\n state = {\n termsChecked: false,\n };\n\n onAccountCreate = () => {\n this.props.setLoadingOn();\n this.props.setDisableLeftMenu(true);\n\n this.props.createAccount()\n .then(() => this.props.getAccounts()) // updates accounts list\n .then(() => this.props.getAccountsSummary()) // builds account summary object from freshly fetched account list\n .then(() => {\n this.props.setLoadingOff();\n this.props.setDisableLeftMenu(false);\n this.props.notificationShow(this.props.text.TermsConditionsStep.msg_account_created, 'success');\n this.props.getNotifications(); // refreshes app notifications\n this.props.onNextClick();\n\n try {\n document.cookie = 'openAcct=true'; // Qualtrics Intercept for account creation. Launches survey\n window.QSI.API.run(); // stimulate Targeting.php\n window.QSI.API.unload();\n window.QSI.API.load();\n window.QSI.API.run(); // stimulate Targeting.php\n }\n catch (error) { \n // return null;\n }\n \n })\n .catch(() => {\n this.props.setLoadingOff();\n this.props.setDisableLeftMenu(false);\n });\n }\n\n render() {\n const { isLoading, faxNumber, onBackClick, phoneNumber, programDescription, text: { TermsConditionsStep } } = this.props;\n return (\n \n
    \n
    \n window.print()}\n />\n
    \n

    {TermsConditionsStep.head_terms}

    \n {TermsConditionsStep.text_terms_intro}\n
      \n {TermsConditionsStep.text_terms1.map(line =>
    1. {line}
    2. )}\n\n
        \n {TermsConditionsStep.text_terms2.map(line =>
      1. {line}
      2. )}\n
      \n\n
    3. {TermsConditionsStep.text_terms3(faxNumber, phoneNumber)}
    4. \n
    5. {TermsConditionsStep.text_terms4}
    6. \n
    \n\n {parse(TermsConditionsStep.text_read_understand_agree(programDescription))}
    }\n onChange={e => this.setState({ termsChecked: e.target.checked })}\n />\n\n
    \n\n
    \n \n {TermsConditionsStep.btn_back}\n \n \n {TermsConditionsStep.btn_i_agree}\n \n
    \n \n );\n }\n}\n\n\nexport default connect(select, {\n getNotifications,\n createAccount,\n notificationShow,\n getAccounts,\n getAccountsSummary,\n setDisableLeftMenu,\n})(LanguageHOC(TermsConditionsStep));\n","/*\n*\n* Welcome Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Icon,\n} from '@mui/material';\nimport { My529Logo } from '@frontend/common';\nimport reader from './reader.jpg';\nimport { tabletWidth } from 'utils/config/_sassconfig.scss';\n\nimport styles from './styles.module.scss';\n\n\nexport function Welcome({ activeStep, closeModal, isAgent_AccessRole, isNewUser_AccessRole, isIpOnly_AccessRole, open, text, text: { SignupWelcome } }) {\n\n const fullScreen = window.innerWidth < parseInt(tabletWidth);\n const showNewWelcome = (isNewUser_AccessRole && activeStep === 0) || (isIpOnly_AccessRole && activeStep === 0) || (isAgent_AccessRole && activeStep === 1);\n\n const stepsToComplete = [\n text.AccountOwnerStep.head_account_owner,\n text.BeneficiaryStep.head_beneficiary,\n text.InvestmentOptionStep.head_investment_option,\n text.ReviewStep.head_review,\n ];\n\n return (\n \n \n
    \n {SignupWelcome.text_child_reading}\n \n
    \n
    \n\n \n
    \n
    \n

    {showNewWelcome ? SignupWelcome.head_welcome : SignupWelcome.head_welcome_back},

    \n

    {showNewWelcome ? SignupWelcome.text_new_welcome : SignupWelcome.text_welcome_back}

    \n
    \n\n
    \n

    {SignupWelcome.text_steps_remaining}

    \n {stepsToComplete.map((step, idx) => (\n
    \n {activeStep > idx ? done : }\n

    {step}

    \n
    \n ))}\n
    \n
    \n\n
    \n closeModal()}\n variant='outlined'\n >\n {showNewWelcome ? SignupWelcome.btn_get_started : SignupWelcome.btn_continue}\n \n
    \n\n
    \n \n );\n}\n\nWelcome.propTypes = {\n activeStep: PropTypes.number, // left off the \".isRequired\" b/c sometimes this is null and it will throw a console error\n closeModal: PropTypes.func.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n isNewUser_AccessRole: PropTypes.bool.isRequired,\n isIpOnly_AccessRole: PropTypes.bool.isRequired,\n open: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n AccountOwnerStep: PropTypes.shape({ head_account_owner: PropTypes.string }),\n BeneficiaryStep: PropTypes.shape({ head_beneficiary: PropTypes.string }),\n InvestmentOptionStep: PropTypes.shape({ head_investment_option: PropTypes.string }),\n ReviewStep: PropTypes.shape({ head_review: PropTypes.string }),\n SignupWelcome: PropTypes.shape({\n btn_continue: PropTypes.string,\n btn_get_started: PropTypes.string,\n head_welcome: PropTypes.string,\n head_welcome_back: PropTypes.string,\n text_child_reading: PropTypes.string,\n text_new_welcome: PropTypes.string,\n text_steps_remaining: PropTypes.string,\n text_steps_to_complete: PropTypes.string,\n text_welcome_back: PropTypes.string,\n }),\n }).isRequired,\n};\n\nexport default LanguageHOC(Welcome);","/*\n*\n* Signup Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { getPredefinedOptions } from 'components/Features/protected/Accounts/Transactions/OptionChanges/actions.js';\nimport AccountOwnerStep from './AccountOwnerStep';\nimport BeneficiaryStep from './BeneficiaryStep';\nimport ConfirmationStep from './ConfirmationStep';\nimport InvestmentOptionStep from './InvestmentOptionStep';\nimport ReviewStep from './ReviewStep';\nimport TermsConditionsStep from './TermsConditionsStep';\nimport Welcome from './Welcome';\n\nimport Banner from 'components/Features/Banner';\nimport { BANNER_LOCATIONS } from 'components/AppRoot/StaticResources/constants';\n\nimport {\n Button,\n Step,\n StepButton,\n StepLabel,\n Stepper,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n Modal,\n notificationShow,\n} from '@frontend/common';\n\nimport {\n deleteApplication,\n getExistingBeneficiaries,\n getSignupApplication\n} from './actions';\nimport { getNotifications, } from 'components/AppRoot/Navigation/actions';\n\nimport { tabletWidth } from 'utils/config/_sassconfig.scss';\n\nimport { signupStepper } from 'utils/ga/events';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n accountOwnerInfo: state.signup.accountOwnerInfo,\n activeStep: state.signup.activeStep,\n beneficiaryInfo: state.signup.beneficiaryInfo,\n existingBenesList: state.signup.existingBenesList,\n isAgent_AccessRole: state.session.isAgent_AccessRole,\n isIpOnly_AccessRole: state.session.isIpOnly_AccessRole,\n isNewUser_AccessRole: state.session.isNewUser_AccessRole,\n splashHasDisplayed: state.session.splashHasDisplayed,\n predefinedOptions: state.optionChanges.predefinedOptions,\n webMessages: state.static.webMessages,\n});\n\nexport class Signup extends React.Component {\n static propTypes = {\n getNotifications: PropTypes.func.isRequired,\n webMessages: PropTypes.object.isRequired,\n accountOwnerInfo: PropTypes.shape({\n encryptedDataExists: PropTypes.bool,\n Mailing: PropTypes.shape({\n StreetAddress1: PropTypes.string\n }),\n OwnerFirstName: PropTypes.string\n }).isRequired,\n activeStep: PropTypes.number,\n beneficiaryInfo: PropTypes.shape({\n BeneficiarySSN1: PropTypes.string,\n encryptedDataExists: PropTypes.bool,\n }).isRequired,\n deleteApplication: PropTypes.func.isRequired,\n existingBenesList: PropTypes.array.isRequired,\n getExistingBeneficiaries: PropTypes.func.isRequired,\n getPredefinedOptions: PropTypes.func.isRequired,\n getSignupApplication: PropTypes.func.isRequired,\n isAgent_AccessRole: PropTypes.bool.isRequired,\n isIpOnly_AccessRole: PropTypes.bool.isRequired,\n isNewUser_AccessRole: PropTypes.bool.isRequired,\n splashHasDisplayed: PropTypes.bool.isRequired,\n notificationShow: PropTypes.func.isRequired,\n predefinedOptions: PropTypes.array.isRequired,\n text: PropTypes.shape({\n Signup: PropTypes.shape({\n btn_close: PropTypes.string,\n btn_delete_application: PropTypes.string,\n head_delete_account_application: PropTypes.string,\n lbl_ao_step: PropTypes.string,\n lbl_bene_step: PropTypes.string,\n lbl_confirmation_step: PropTypes.string,\n lbl_investment_step: PropTypes.string,\n lbl_review_step: PropTypes.string,\n lbl_terms_step: PropTypes.string,\n msg_application_deleted: PropTypes.string,\n text_delete_application_data: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n activeStep: this.props.activeStep,\n deleteApplicationModalOpen: false,\n isLoading: false,\n steps: [\n this.props.text.Signup.lbl_ao_step,\n this.props.text.Signup.lbl_bene_step,\n this.props.text.Signup.lbl_investment_step,\n this.props.text.Signup.lbl_review_step,\n this.props.text.Signup.lbl_terms_step,\n this.props.text.Signup.lbl_confirmation_step,\n ],\n welcomeModalOpen: false,\n };\n\n closeDeleteModal = () => {\n this.setState({ deleteApplicationModalOpen: false });\n }\n\n deleteApplicationButtonCompose = () => {\n const { accountOwnerInfo, beneficiaryInfo, isAgent_AccessRole, text: { Signup } } = this.props;\n\n const btn = (\n
    \n \n
    \n );\n\n if (!isAgent_AccessRole && accountOwnerInfo.encryptedDataExists && this.state.activeStep !== 5) { // user has no accounts and has saved at least AO info, and it's not the confirmation step\n return btn;\n }\n else if (isAgent_AccessRole && beneficiaryInfo.encryptedDataExists && this.state.activeStep !== 5) { // user has accounts and has saved at least bene info\n return btn;\n }\n }\n\n onBackClick = () => {\n this.setState({ activeStep: this.state.activeStep - 1 });\n window.scrollTo(0, 0);\n }\n\n onDeleteApplication = () => {\n this.setLoadingOn();\n\n this.props.deleteApplication()\n .then(() => {\n this.closeDeleteModal();\n this.props.notificationShow(this.props.text.Signup.msg_application_deleted, 'success');\n this.props.getNotifications(); // refreshes app notifications\n this.setState({\n activeStep: this.props.activeStep,\n isLoading: false,\n });\n window.scrollTo(0, 0);\n })\n .catch(() => this.setLoadingOff());\n }\n\n onNextClick = () => {\n const activeStep = this.state.activeStep + 1;\n\n this.setState({ activeStep });\n signupStepper(activeStep); // Google Analytics url for goal tracking\n window.scrollTo(0, 0);\n }\n\n onStepClick = (index) => {\n this.setState({ activeStep: index });\n }\n\n setLoadingOff = () => {\n this.setState({ isLoading: false });\n }\n\n setLoadingOn = () => {\n this.setState({ isLoading: true });\n }\n\n stepperContentGet = () => {\n const { accountOwnerInfo, beneficiaryInfo } = this.props;\n\n switch (this.state.activeStep) {\n case 0: return (\n this.props.getSignupApplication()}\n isLoading={this.state.isLoading}\n key={accountOwnerInfo.Mailing.StreetAddress1}\n onBackClick={this.onBackClick}\n onNextClick={this.onNextClick}\n setLoadingOff={this.setLoadingOff}\n setLoadingOn={this.setLoadingOn}\n {...this.props}\n />\n );\n case 1: return (\n \n );\n case 2: return (\n \n );\n case 3: return (\n \n );\n case 4: return (\n \n );\n case 5: return (\n \n );\n default: break;\n }\n }\n\n componentDidMount() {\n const { accountOwnerInfo, existingBenesList, isAgent_AccessRole, predefinedOptions } = this.props;\n const apiCalls = [];\n\n // gets investment option info - needed for review and option selection\n if (predefinedOptions.length === 0) {\n apiCalls.push(this.props.getPredefinedOptions());\n }\n\n // gets the partially saved application the first time it loads only\n if (!accountOwnerInfo.OwnerFirstName) {\n apiCalls.push(this.props.getSignupApplication());\n }\n\n // gets grouped accounts for existing beneficiaries\n if (isAgent_AccessRole && existingBenesList.length === 0) {\n apiCalls.push(this.props.getExistingBeneficiaries());\n }\n\n if (apiCalls.length > 0) {\n this.setLoadingOn();\n\n Promise.all(apiCalls)\n .then(() => {\n this.setState({\n activeStep: this.props.activeStep,\n welcomeModalOpen: true,\n });\n this.setLoadingOff();\n })\n .catch(() => this.setLoadingOff());\n }\n }\n\n render() {\n const { activeStep, isLoading, steps, welcomeModalOpen, } = this.state;\n const {\n isAgent_AccessRole,\n isIpOnly_AccessRole,\n isNewUser_AccessRole,\n text: { Signup },\n webMessages,\n splashHasDisplayed,\n } = this.props;\n\n return (\n <>\n
    \n {activeStep === 2 && }\n\n parseInt(tabletWidth)} // Only uses alternativeLabel for desktop and tablet\n orientation={window.innerWidth < parseInt(tabletWidth) ? 'vertical' : 'horizontal'} // Vertical orientation for mobile\n >\n {steps.map((label, index) => (\n activeStep === 5 ? // On confirmation step, disables all steps from being clicklable\n \n this.onStepClick(index)}>\n {label}\n \n \n : // On any step except the last, user can click back to previous step\n \n this.onStepClick(index)}>\n {label}\n \n \n ))}\n \n \n
    \n {this.stepperContentGet()}\n
    \n
    \n\n {this.deleteApplicationButtonCompose()}\n
    \n\n this.setState({ deleteApplicationModalOpen: false })}\n show={this.state.deleteApplicationModalOpen}\n title={Signup.head_delete_account_application}\n >\n {Signup.text_delete_application_data}\n \n\n this.setState({ welcomeModalOpen: false })}\n isAgent_AccessRole={isAgent_AccessRole}\n isIpOnly_AccessRole={isIpOnly_AccessRole}\n isNewUser_AccessRole={isNewUser_AccessRole}\n open={welcomeModalOpen && splashHasDisplayed}\n />\n\n \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n getNotifications,\n deleteApplication,\n getExistingBeneficiaries,\n getSignupApplication,\n getPredefinedOptions,\n notificationShow,\n})(LanguageHOC(Signup)));\n","/*\n*\n* AddBirthdate Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport * as validator from 'utils/helpers/form_validation';\nimport {\n LoadingOverlay,\n notificationShow,\n DatePicker\n} from '@frontend/common';\nimport { Button } from '@mui/material';\nimport {\n refreshClaims,\n saveBirthdate\n} from 'components/AppRoot/Navigation/actions';\nimport { userLogout } from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n agentName: state.session.userDetails.name,\n MaximumAge: state.static.environmentVars.MaximumAge,\n MinimumAccountOwnerAge: state.static.environmentVars.MinimumAccountOwnerAge,\n supportNumber: state.static.environmentVars.SupportPhoneNumber,\n});\n\n\nexport class AddBirthdate extends React.Component {\n\n static propTypes = {\n agentName: PropTypes.string.isRequired,\n history: PropTypes.object.isRequired,\n MaximumAge: PropTypes.number.isRequired,\n MinimumAccountOwnerAge: PropTypes.number.isRequired,\n notificationShow: PropTypes.func.isRequired,\n refreshClaims: PropTypes.func.isRequired,\n saveBirthdate: PropTypes.func.isRequired,\n supportNumber: PropTypes.string.isRequired,\n text: PropTypes.shape({\n AddBirthdate: PropTypes.shape({\n btn_logout: PropTypes.string,\n head_incomplete_records: PropTypes.string,\n lbl_birthdate: PropTypes.string,\n lbl_submit: PropTypes.string,\n msg_birthdate_updated: PropTypes.string,\n text_incomplete_records: PropTypes.string,\n text_support: PropTypes.func,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n })\n }).isRequired,\n userLogout: PropTypes.func.isRequired,\n };\n\n state = {\n birthdate: '',\n error: '',\n loading: false,\n };\n\n birthdateSave = e => {\n e.preventDefault();\n\n if (this.validateBirthdate()) {\n this.setState({ loading: true });\n\n this.props.saveBirthdate({ birthdate: this.state.birthdate.format('MM/DD/YYYY') })\n .then(() => {\n this.props.refreshClaims()\n .then(() => {\n this.props.notificationShow(this.props.text.AddBirthdate.msg_birthdate_updated, 'success');\n this.props.history.push(this.props.text.Home.nav_path);\n });\n })\n .catch(() => this.setState({ loading: false }));\n }\n }\n\n logout = () => {\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .then(() => this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success'));\n }\n\n setBirthdate = e => {\n this.setState({ birthdate: e });\n }\n\n validateBirthdate = () => {\n const error = validator.accountOwnerBirthdateValidator(this.state.birthdate, this.props.MinimumAccountOwnerAge, this.props.MaximumAge);\n this.setState({ error });\n return error === ''; // returns true if bdate is valid\n }\n\n render() {\n const { birthdate, error, loading } = this.state;\n const { agentName, MaximumAge, MinimumAccountOwnerAge, supportNumber, text, } = this.props;\n\n return (\n
    \n

    {text.AddBirthdate.head_incomplete_records}

    \n

    {text.AddBirthdate.text_incomplete_records}

    \n

    {agentName}

    \n
    \n \n\n \n
    \n \n {text.AddBirthdate.btn_logout}\n \n \n {text.AddBirthdate.lbl_submit}\n \n
    \n
    \n\n \n

    {text.AddBirthdate.text_support(supportNumber)}

    \n
    \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n notificationShow,\n refreshClaims,\n saveBirthdate,\n userLogout,\n})(LanguageHOC(AddBirthdate)));\n","/*\n*\n* PreflightLoader Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport {\n closeTransactionLoader,\n openPreflightModal,\n transactionPreview\n} from '../actions';\n\nimport {\n Modal,\n LoadingOverlay,\n} from '@frontend/common';\nimport { Icon } from '@mui/material';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n preflightLoaderOpen: state.transactions.preflightLoaderOpen,\n previewDetails: state.transactions.previewDetails,\n preflightAccount: state.transactions.preflightAccount,\n preflightTransactionType: state.transactions.preflightTransactionType,\n});\n\nexport class PreflightLoader extends React.Component {\n static propTypes = {\n closeTransactionLoader: PropTypes.func.isRequired,\n openPreflightModal: PropTypes.func.isRequired,\n preflightAccount: PropTypes.shape({\n accountId: PropTypes.number.isRequired,\n AccountGroupId: PropTypes.number.isRequired,\n }).isRequired,\n preflightLoaderOpen: PropTypes.bool.isRequired,\n preflightTransactionType: PropTypes.string.isRequired,\n previewDetails: PropTypes.shape({\n canContinue: PropTypes.bool.isRequired,\n errors: PropTypes.arrayOf(PropTypes.string),\n }),\n transactionPreview: PropTypes.func.isRequired,\n text: PropTypes.shape({\n Transactions: PropTypes.shape({\n btn_cancel: PropTypes.string,\n nav_path: PropTypes.func,\n preflight_in_progress_message: PropTypes.string,\n preflight_title_suffix: PropTypes.func,\n transaction_title: PropTypes.func,\n })\n }).isRequired,\n };\n\n state = {\n preflightInProgress: true,\n };\n\n componentDidMount() {\n const {\n preflightAccount,\n preflightTransactionType,\n transactionPreview,\n preflightLoaderOpen,\n text,\n closeTransactionLoader,\n history\n } = this.props;\n if (preflightLoaderOpen) {\n transactionPreview(preflightAccount.accountId, preflightTransactionType)\n .then(() => {\n const { previewDetails } = this.props;\n if (previewDetails.canContinue && previewDetails.errors.length === 0) {\n // preflight success\n closeTransactionLoader();\n history.push(text.Transactions.nav_path(preflightAccount.accountId, preflightTransactionType, 'new', ':transactionId', preflightAccount.AccountGroupId));\n }\n else {\n this.setState({\n preflightInProgress: false,\n });\n }\n })\n .catch(() => {\n this.setState({\n preflightInProgress: false,\n });\n });\n }\n }\n\n render() {\n const { previewDetails, preflightLoaderOpen, closeTransactionLoader, preflightTransactionType, text } = this.props;\n const { preflightInProgress } = this.state;\n\n const preflightTitle = text.Transactions.transaction_title(preflightTransactionType);\n const preflightTitleSuffix = text.Transactions.preflight_title_suffix(preflightTransactionType);\n\n return (\n closeTransactionLoader()}\n actionButtons={[\n {\n label: text.Transactions.btn_cancel,\n action: () => closeTransactionLoader(),\n disabled: preflightInProgress,\n loading: preflightInProgress,\n },\n ]}\n fullScreen={false}\n >\n
    \n {preflightInProgress && [\n \n {text.Transactions.preflight_in_progress_message}\n
    ,\n \n ]}\n {!preflightInProgress && !previewDetails.canContinue && previewDetails.errors.length > 0 && (\n
    \n
    {preflightTitle}{preflightTitleSuffix}
    \n {previewDetails.errors.map((error, index) => (\n \n close\n {error}\n
    \n ))}\n
    \n )}\n \n \n );\n }\n}\n\n\nexport default withRouter(connect(select, {\n closeTransactionLoader,\n openPreflightModal,\n transactionPreview,\n})(LanguageHOC(PreflightLoader)));\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { setRegisteredDevice } from 'utils/helpers/registered_device_handler';\n\nimport {\n Button,\n FormControlLabel,\n FormHelperText,\n Paper,\n Radio,\n RadioGroup,\n TextField,\n Checkbox\n} from '@mui/material';\n\nimport {\n My529Logo,\n LoadingOverlay,\n notificationShow,\n} from '@frontend/common';\n\nimport {\n deviceTokenCreate,\n getPreferredMethod,\n savePreferredMethod,\n getTwoFactorToken,\n twoFactorTokenVerification,\n} from '../actions';\n\nimport {\n toggle2FADialog,\n getRSAPrecondition,\n resetClaims,\n refreshClaims,\n userLogout\n} from 'components/AppRoot/Navigation/actions';\n\nimport { regMethodTypes } from '../constants';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n preferredInfo: state.multifactor.preferredInfo,\n VerificationInfo: state.multifactor.VerificationInfo,\n is2FADialogOpen: state.session.is2FADialogOpen,\n claims: state.session.claims,\n isWithdrawal: state.session.isWithdrawal,\n deviceToken: state.multifactor.deviceToken,\n ServerDateTime: state.static.environmentVars.ServerDateTime,\n TwoFADeviceCookieExpirationInDays: state.static.environmentVars.TwoFADeviceCookieExpirationInDays,\n});\n\nconst displayTypes = {\n PHONE_AUTH: 'PHONE_AUTH',\n ONE_TOUCH: 'ONE_TOUCH'\n};\n\nexport class Authentication extends Component {\n\n static propTypes = {\n deviceTokenCreate: PropTypes.func.isRequired,\n deviceToken: PropTypes.string.isRequired,\n claims: PropTypes.object.isRequired,\n getPreferredMethod: PropTypes.func.isRequired,\n savePreferredMethod: PropTypes.func.isRequired,\n getTwoFactorToken: PropTypes.func.isRequired,\n twoFactorTokenVerification: PropTypes.func.isRequired,\n notificationShow: PropTypes.func.isRequired,\n toggle2FADialog: PropTypes.func.isRequired,\n getRSAPrecondition: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n resetClaims: PropTypes.func.isRequired,\n refreshClaims: PropTypes.func.isRequired,\n preferredInfo: PropTypes.object.isRequired,\n VerificationInfo: PropTypes.object.isRequired,\n is2FADialogOpen: PropTypes.bool.isRequired,\n isWithdrawal: PropTypes.bool.isRequired,\n ServerDateTime: PropTypes.string.isRequired,\n TwoFADeviceCookieExpirationInDays: PropTypes.number.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_call_again: PropTypes.string,\n btn_calling: PropTypes.string,\n btn_cancel: PropTypes.string,\n btn_enter_token: PropTypes.string,\n btn_request_code: PropTypes.string,\n btn_resend_code: PropTypes.string,\n btn_sec_code: PropTypes.string,\n btn_send_newpush: PropTypes.string,\n btn_sending: PropTypes.string,\n btn_submit_code: PropTypes.string,\n btn_submit_token: PropTypes.string,\n btn_use_phone: PropTypes.string,\n btn_use_token: PropTypes.string,\n err_code_required: PropTypes.string,\n err_invalid_token: PropTypes.string,\n err_token_required: PropTypes.string,\n err_options: PropTypes.string,\n lbl_call: PropTypes.string,\n lbl_remember_device: PropTypes.string,\n lbl_text: PropTypes.string,\n lbl_token: PropTypes.string,\n msg_attempts_remaining: PropTypes.string,\n msg_token_attempts_remaining: PropTypes.string,\n msg_enter_authenticator: PropTypes.string,\n msg_security_code: PropTypes.func,\n msg_send_security_code: PropTypes.func,\n msg_we_called: PropTypes.func,\n preferred_response_path: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n isDialogOpen: false,\n isWorking: false,\n preferredMethod: '',\n regMethod: '',\n regMethodError: '',\n attemptWarning: '',\n isRegisterDevice: false,\n\n token: '',\n hasToken: false,\n tokenError: '',\n authType: 0, // 0 = Reg/Auth, 1 = Protected Action\n };\n\n submitPhoneMethod() {\n const { text: { Multifactor } } = this.props;\n const { regMethod } = this.state;\n if (regMethod) {\n this.setState({ isLoading: true });\n this.props.getTwoFactorToken(regMethod)\n .then(() => {\n this.setState({ isLoading: false, preferredMethod: displayTypes.PHONE_AUTH });\n });\n this.setState({ preferredMethod: displayTypes.PHONE_AUTH });\n }\n else {\n this.setState({ regMethodError: Multifactor.err_options });\n }\n }\n\n renderPhoneMethod() {\n const { preferredInfo, text: { Multifactor } } = this.props;\n const { regMethod, regMethodError, authType, isLoading } = this.state;\n const lastFour = preferredInfo.PhoneNumber\n ? preferredInfo.PhoneNumber.substr(preferredInfo.PhoneNumber.length - 4, preferredInfo.PhoneNumber.length)\n : '';\n return (\n
    \n

    {Multifactor.msg_send_security_code(lastFour)}

    \n
    \n \n } label={Multifactor.lbl_text} />\n } label={Multifactor.lbl_call} />\n \n {regMethodError}\n
    \n this.submitPhoneMethod()}\n disabled={isLoading}\n >\n {Multifactor.btn_request_code}\n \n\n {preferredInfo.VerifiedAppCode &&\n this.setState({ preferredMethod: regMethodTypes.INAPPTOKEN })}\n >\n {Multifactor.btn_use_token}\n \n }\n\n authType === 0 ? this.logout() : this.props.toggle2FADialog()}\n >\n {Multifactor.btn_cancel}\n \n
    \n );\n }\n\n submitPhoneCode(e) {\n e.preventDefault();\n const { token, regMethod } = this.state;\n const { text: { Multifactor } } = this.props;\n if (token) {\n this.setState({ isLoading: true, isWorking: true });\n Promise.all([\n this.props.twoFactorTokenVerification(token, regMethod),\n this.props.getPreferredMethod()\n ])\n .then(() => {\n const { VerificationInfo } = this.props;\n if (VerificationInfo.Verified) {\n const params = {\n AlwaysRequired: this.props.preferredInfo.AlwaysRequired,\n PreferredMethod: regMethod // submits selected method based on if text or phone is choosen\n };\n this.props.savePreferredMethod(params)\n .then(() => {\n this.registerDevice();\n this.props.resetClaims()\n .then(() => {\n this.displayRSAModal();\n });\n });\n }\n else {\n if (VerificationInfo.AttemptsRemaining === 0) {\n this.logout();\n }\n else if (VerificationInfo.AttemptsRemaining === 1) {\n this.setState({\n isLoading: false,\n isWorking: false,\n attemptWarning: Multifactor.msg_attempts_remaining\n });\n }\n else {\n this.setState({\n isLoading: false,\n isWorking: false,\n tokenError: Multifactor.err_invalid_token\n });\n }\n }\n })\n .catch(() => null);\n }\n else {\n this.setState({\n hasToken: true,\n tokenError: Multifactor.err_code_required\n });\n }\n }\n\n reSubmitPhoneCode() {\n const { regMethod } = this.state;\n this.setState({ isWorking: true, attemptWarning: '' });\n setTimeout(() => {\n this.setState({ isWorking: false });\n }, 5000);\n this.props.getTwoFactorToken(regMethod)\n .catch(() => null);\n }\n\n renderPhoneAuthenticate() {\n const { preferredInfo, text: { Multifactor } } = this.props;\n const {\n token, hasToken, tokenError, attemptWarning,\n regMethod, isWorking, isLoading, authType, isRegisterDevice } = this.state;\n const lastFour = preferredInfo.PhoneNumber\n ? preferredInfo.PhoneNumber.substr(preferredInfo.PhoneNumber.length - 4, preferredInfo.PhoneNumber.length)\n : '';\n const sendConfirmMsg = regMethod === regMethodTypes.CALL ? Multifactor.msg_we_called(lastFour) : Multifactor.msg_security_code(lastFour);\n const secondaryBtn = regMethod === regMethodTypes.CALL\n ? isWorking ? Multifactor.btn_calling : Multifactor.btn_call_again\n : isWorking ? Multifactor.btn_sending : Multifactor.btn_resend_code;\n return (\n
    \n

    {Multifactor.btn_sec_code}

    \n {sendConfirmMsg}\n this.submitPhoneCode(e)}\n >\n {!preferredInfo.AlwaysRequired && authType === 0 &&\n
    \n this.setState({ isRegisterDevice: !isRegisterDevice })}\n name='authy-register-device'\n color='primary'\n />\n }\n label={Multifactor.lbl_remember_device}\n />\n
    \n }\n
    \n \n
    \n
    {attemptWarning}
    \n \n {Multifactor.btn_submit_code}\n \n \n this.reSubmitPhoneCode()}\n disabled={isWorking}\n >\n {secondaryBtn}\n \n authType === 0 ? this.logout() : this.props.toggle2FADialog()}\n >\n {Multifactor.btn_cancel}\n \n
    \n );\n }\n\n submitAuthenticator(e) {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const { token } = this.state;\n if (token) {\n this.setState({ isLoading: true });\n Promise.all([\n this.props.twoFactorTokenVerification(token, regMethodTypes.INAPPTOKEN),\n this.props.getPreferredMethod()\n ])\n .then(() => {\n const { VerificationInfo } = this.props;\n if (VerificationInfo.Verified) {\n const params = {\n AlwaysRequired: this.props.preferredInfo.AlwaysRequired,\n PreferredMethod: regMethodTypes.INAPPTOKEN\n };\n this.props.savePreferredMethod(params)\n .then(() => {\n this.registerDevice();\n this.props.resetClaims()\n .then(() => {\n this.displayRSAModal();\n });\n });\n }\n else {\n if (VerificationInfo.AttemptsRemaining === 0) {\n this.logout();\n }\n else if (VerificationInfo.AttemptsRemaining === 1) {\n this.setState({\n isLoading: false,\n isWorking: false,\n attemptWarning: Multifactor.msg_token_attempts_remaining\n });\n }\n else {\n this.setState({\n isLoading: false,\n isWorking: false,\n tokenError: Multifactor.err_invalid_token,\n });\n }\n }\n })\n .catch(() => null);\n }\n else {\n this.setState({\n tokenError: Multifactor.err_token_required,\n hasToken: true\n });\n }\n }\n\n renderAuthenticator() {\n const { text: { Multifactor }, preferredInfo } = this.props;\n const {\n token, hasToken, attemptWarning,\n tokenError, authType, isRegisterDevice, isLoading\n } = this.state;\n\n const isDomestic = preferredInfo.CountryCode === '+1';\n\n return (\n
    \n

    {Multifactor.msg_enter_authenticator}

    \n this.submitAuthenticator(e)}\n >\n {!preferredInfo.AlwaysRequired && authType === 0 && authType === 0 &&\n
    \n this.setState({ isRegisterDevice: !isRegisterDevice })}\n name='authy-register-device'\n color='primary'\n />\n }\n label={Multifactor.lbl_remember_device}\n />\n
    \n }\n
    \n \n
    {attemptWarning}
    \n
    \n \n {Multifactor.btn_submit_token}\n \n \n {preferredInfo.PhoneNumber && isDomestic && // show only for US phone numbers\n this.setState({ preferredMethod: regMethodTypes.SMS })}\n >\n {Multifactor.btn_use_phone}\n \n }\n\n authType === 0 ? this.logout() : this.props.toggle2FADialog()}\n >\n {Multifactor.btn_cancel}\n \n
    \n );\n }\n\n displayRSAModal() {\n if (this.props.isWithdrawal) {\n this.props.getRSAPrecondition().catch(() => null);\n }\n }\n\n registerDevice() {\n const { ServerDateTime, TwoFADeviceCookieExpirationInDays } = this.props;\n if (this.state.isRegisterDevice) {\n this.props.deviceTokenCreate()\n .then(() => {\n setRegisteredDevice(this.props.deviceToken, ServerDateTime, TwoFADeviceCookieExpirationInDays);\n });\n }\n }\n\n logout() {\n const token = sessionStorage.getItem('token');\n this.setState({ preferredMethod: 'NADA' }, () => {\n this.props.toggle2FADialog();\n this.props.userLogout({ token });\n setTimeout(() => this.props.notificationShow(this.props.text.Login.msg_you_have_logged_out, 'success'), 500);\n });\n }\n\n handleOptions = e => {\n this.setState({ regMethod: e.target.value });\n }\n\n handleInput = name => e => {\n this.setState({ [name]: e.target.value, hasToken: false, tokenError: '' });\n }\n\n renderMethod() {\n const method = this.state.preferredMethod;\n switch (method) {\n case regMethodTypes.SMS:\n case regMethodTypes.CALL: { return this.renderPhoneMethod(); }\n case regMethodTypes.INAPPTOKEN: { return this.renderAuthenticator(); }\n case displayTypes.PHONE_AUTH: { return this.renderPhoneAuthenticate(); }\n default: break;\n }\n }\n\n componentDidMount() {\n const authType = this.props.claims.AccountBlocked === 'True' ? 0 : 1;\n if (this.props.is2FADialogOpen) {\n this.setState({ isLoading: true, authType });\n this.props.getPreferredMethod()\n .then(() => {\n const preferredMethod = this.props.preferredInfo.PreferredMethod;\n if (preferredMethod === null) {\n this.props.refreshClaims();\n }\n else {\n this.setState({ isLoading: false, preferredMethod, regMethod: preferredMethod });\n }\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.preferredMethod !== this.state.preferredMethod) {\n this.renderMethod();\n }\n }\n\n render() {\n const { isLoading } = this.state;\n return (\n
    \n \n
    \n \n
    \n {this.renderMethod()}\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(select, {\n deviceTokenCreate,\n setRegisteredDevice,\n getPreferredMethod,\n savePreferredMethod,\n getTwoFactorToken,\n twoFactorTokenVerification,\n resetClaims,\n refreshClaims,\n userLogout,\n toggle2FADialog,\n getRSAPrecondition,\n notificationShow\n})(LanguageHOC(Authentication));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport { getRegisteredDevice } from 'utils/helpers/registered_device_handler';\n\nimport {\n Button,\n Dialog\n} from '@mui/material';\n\nimport { My529Logo } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nexport function AuthyDown({ text, isOpen, continueInPlace, logout, history }) {\n let display;\n if (history.location.pathname && history.location.pathname.includes(text.Multifactor.register_path)) { // this should include both txt/phone and authenticator now\n display = (\n \n \n {text.Navigation.menu_log_out}\n \n window.open(text.Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {text.Multifactor.btn_learn_more}\n \n \n );\n }\n else {\n if (history.location.pathname === text.Home.nav_path) { // login or protected transactions\n const device = getRegisteredDevice();\n if (device === '') { // challenged at login\n display = (\n \n \n {text.Navigation.menu_log_out}\n \n window.open(text.Multifactor.learn_more_url, '_blank', 'noopener noreferrer')}\n >\n {text.Multifactor.btn_learn_more}\n \n \n );\n }\n else { // challenged at transactions\n display = (\n \n \n {text.Multifactor.btn_try_again}\n \n \n );\n }\n }\n else { // challenged on non transaction protected actions\n display = (\n \n \n {text.Multifactor.btn_try_again}\n \n \n );\n }\n }\n\n return (\n \n
    \n
    \n

    {text.Multifactor.msg_2FA_unavailable}

    \n
    {text.Multifactor.msg_2FA_down_apology}
    \n {display}\n
    \n
    \n \n );\n}\n\nAuthyDown.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n continueInPlace: PropTypes.func.isRequired,\n logout: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_learn_more: PropTypes.string,\n btn_try_again: PropTypes.string,\n msg_2FA_unavailable: PropTypes.string,\n learn_more_url: PropTypes.string,\n register_path: PropTypes.string,\n rsa_path: PropTypes.string,\n msg_2FA_down_apology: PropTypes.string,\n }),\n Navigation: PropTypes.shape({\n menu_log_out: PropTypes.string\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string\n }),\n }).isRequired,\n};\n\nexport default withRouter(LanguageHOC(AuthyDown));","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport LanguageHOC from 'utils/translations/LanguageHOC';\nimport dayjs from 'dayjs';\nimport { cloneDeep } from 'lodash';\n\nimport {\n Button,\n FormControl,\n FormGroup,\n FormControlLabel,\n FormHelperText,\n Checkbox,\n Radio,\n RadioGroup,\n} from '@mui/material';\n\nimport {\n LoadingOverlay,\n DatePicker,\n notificationShow\n} from '@frontend/common';\n\nimport {\n clearStore,\n userLogout,\n resetClaims,\n toggleRSADialog\n} from 'components/AppRoot/Navigation/actions';\n\nimport {\n getRSAStatus,\n rsaVerifyBirthday,\n getRSAQuestionSet,\n rsaAnswers\n} from '../actions';\n\nimport { My529Logo } from '@frontend/common';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n isRSALockedOut: state.multifactor.isRSALockedOut,\n isIdentityVerified: state.multifactor.isIdentityVerified,\n isDOBValid: state.multifactor.isDOBValid,\n RSADOB: state.multifactor.string,\n RSAQuestionSet: state.multifactor.RSAQuestionSet,\n userDetails: state.session.userDetails\n});\n\nexport class RSA extends React.Component {\n\n static propTypes = {\n getRSAQuestionSet: PropTypes.func.isRequired,\n getRSAStatus: PropTypes.func.isRequired,\n rsaVerifyBirthday: PropTypes.func.isRequired,\n rsaAnswers: PropTypes.func.isRequired,\n clearStore: PropTypes.func.isRequired,\n userLogout: PropTypes.func.isRequired,\n resetClaims: PropTypes.func.isRequired,\n toggleRSADialog: PropTypes.func.isRequired,\n isIdentityVerified: PropTypes.bool.isRequired,\n isDOBValid: PropTypes.bool.isRequired,\n isRSALockedOut: PropTypes.bool.isRequired,\n RSAQuestionSet: PropTypes.object.isRequired,\n notificationShow: PropTypes.func.isRequired,\n userDetails: PropTypes.object.isRequired,\n text: PropTypes.shape({\n Multifactor: PropTypes.shape({\n btn_cancel: PropTypes.string,\n btn_change_dob: PropTypes.string,\n btn_confirm_dob: PropTypes.string,\n btn_learn_more: PropTypes.string,\n btn_logout: PropTypes.string,\n btn_ok: PropTypes.string,\n btn_submit_answer: PropTypes.string,\n btn_verify_dob: PropTypes.string,\n err_incorrect_answer: PropTypes.string,\n err_required: PropTypes.string,\n register_path: PropTypes.string,\n lbl_ao_name: PropTypes.string,\n lbl_ao_dob: PropTypes.string,\n lbl_question: PropTypes.string,\n msg_discrepancy: PropTypes.string,\n msg_dob_select: PropTypes.string,\n msg_locked_out: PropTypes.string,\n msg_maintain_security: PropTypes.string,\n msg_not_verified: PropTypes.string,\n msg_protection: PropTypes.string,\n msg_rsa_select: PropTypes.string,\n msg_unable_verify: PropTypes.string,\n verify_identity_path: PropTypes.string,\n verify_identity_title: PropTypes.string,\n learn_more_url: PropTypes.string,\n }),\n Login: PropTypes.shape({\n msg_you_have_logged_out: PropTypes.string,\n }),\n Home: PropTypes.shape({\n nav_path: PropTypes.string,\n }),\n }).isRequired,\n };\n\n state = {\n isLoading: false,\n isRSADOB: true, // should render RSA DOB\n isRSAQuestions: false, // should render RSA Questions\n isUnableToVerify: false,\n\n hasRSADOBerror: false,\n hasConfirmedDOB: false, // is RSA DOB confirmed by API\n hasDisplayMessage: false,\n\n RSADOBError: '',\n RSADOB: null, // actual RSA date\n displayMessage: '',\n questionSet: {},\n regMethod: '',\n };\n\n sendRSADOB = e => {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const { hasConfirmedDOB, RSADOB } = this.state;\n if (!dayjs(RSADOB).isValid()) {\n this.setState({\n hasRSADOBerror: true,\n RSADOBError: Multifactor.err_required\n });\n }\n else {\n if (!hasConfirmedDOB) {\n this.setState({\n isLoading: false,\n hasSecurityQuestion: false,\n hasDisplayMessage: false,\n hasConfirmedDOB: true,\n isRSADOB: true,\n }, () => this.renderRSADOB());\n }\n else {\n const birthdate = { birthdate: dayjs(this.state.RSADOB).format('YYYY-MM-DD') };\n this.setState({ isLoading: true });\n this.props.rsaVerifyBirthday(birthdate)\n .then(() => {\n if (this.props.isRSALockedOut) { // 2 bad DOB's provided\n this.setState({ isLoading: false });\n this.props.notificationShow(Multifactor.msg_unable_verify, 'error');\n setTimeout(() => this.logOut(), 4000);\n }\n else if (this.props.isDOBValid) { // Good RSA date, get RSA questions\n this.props.getRSAQuestionSet()\n .then(() => {\n if (this.props.RSAQuestionSet.length === 0 || this.props.isRSALockedOut) { // API returns no RSA Questions\n this.setState({ isLoading: false });\n this.props.notificationShow(Multifactor.msg_unable_verify, 'error');\n setTimeout(() => this.logOut(), 4000);\n }\n else {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n hasDisplayMessage: false,\n isRSAQuestions: true,\n questionSet: this.props.RSAQuestionSet\n });\n }\n });\n }\n else { // RSA confirmed invalid date, display discrepancy message\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n hasConfirmedDOB: false,\n isRSAQuestions: false,\n hasDisplayMessage: true,\n displayMessage: Multifactor.msg_discrepancy\n });\n }\n });\n }\n }\n }\n\n onInputChange = (name, e) => {\n const dob = e.target.value ? dayjs(e.target.value) : null;\n this.setState({ [name]: dob, hasRSADOBerror: false, RSADOBError: '' });\n }\n\n renderRSADOB() {\n const { userDetails, text: { Multifactor } } = this.props;\n const { hasConfirmedDOB, hasRSADOBerror, RSADOB, RSADOBError, isLoading } = this.state;\n if (hasConfirmedDOB) {\n return (\n \n

    {Multifactor.msg_maintain_security}

    \n

    {Multifactor.msg_protection}

    \n
    \n
    {Multifactor.lbl_ao_name}
    \n
    {userDetails.name}
    \n
    {Multifactor.lbl_ao_dob}
    \n
    {dayjs(RSADOB).format('MM/DD/YYYY')}
    \n
    \n \n {Multifactor.btn_confirm_dob}\n \n this.setState({ RSADOB: null, isRSADOB: true, hasConfirmedDOB: false, hasRSADOBerror: false, RSADOBError: '' })}\n >\n {Multifactor.btn_change_dob}\n \n this.props.toggleRSADialog()}\n >\n {Multifactor.btn_cancel}\n \n \n );\n }\n else {\n const datePickerWidth = window.innerWidth < 600 ? '95%' : '40%';\n return (\n \n

    {Multifactor.msg_maintain_security}

    \n

    {Multifactor.msg_protection}

    \n

    {Multifactor.msg_dob_select}

    \n
    \n this.onInputChange('RSADOB', { target: { value: e || '' } })}\n openTo='year'\n value={RSADOB}\n sx={{ width: datePickerWidth }}\n />\n
    \n \n {Multifactor.btn_verify_dob}\n \n this.props.toggleRSADialog()}\n >\n {Multifactor.btn_cancel}\n \n \n );\n }\n\n }\n\n handleOptions = e => {\n const questionSet = cloneDeep(this.state.questionSet);\n let unparsed = null;\n if (e.target.name.includes('|')) {\n unparsed = e.target.name;\n }\n if (e.target.value.includes('|')) {\n unparsed = e.target.value;\n }\n if (unparsed) {\n const qId = unparsed.substr(0, unparsed.indexOf('|'));\n const cId = unparsed.substr(unparsed.indexOf('|') + 1, unparsed.length);\n const questionsIndex = questionSet.Questions.findIndex(\n question => question.QuestionId === parseInt(qId)\n );\n\n // clear all other choices before selecting new choice\n questionSet.Questions[questionsIndex].Choices.forEach(choice => delete choice.isSelected);\n\n const choiceIndex = questionSet.Questions[questionsIndex].Choices.findIndex(\n choice => choice.ChoiceId === parseInt(cId)\n );\n questionSet.Questions[questionsIndex].Choices[choiceIndex].isSelected = true;\n this.setState({ questionSet });\n }\n else {\n console.log('Unable to parse question and/or choice ids'); // eslint-disable-line\n }\n }\n\n validateRSAForm() {\n // validate choices have been made\n const { text: { Multifactor } } = this.props;\n const questionSet = cloneDeep(this.state.questionSet);\n\n // validate choices have been made\n let isFormValidated = true;\n questionSet.Questions.forEach(question => {\n const displayError = question.Choices.some(choice => choice.isSelected);\n if (!displayError) {\n question.errorMessage = Multifactor.err_required;\n isFormValidated = false;\n }\n else {\n delete question.errorMessage;\n }\n });\n\n this.setState({ questionSet });\n return isFormValidated;\n }\n\n sendRSAAnswers = e => {\n e.preventDefault();\n const { text: { Multifactor } } = this.props;\n const questionSet = cloneDeep(this.state.questionSet);\n\n if (this.validateRSAForm()) { // questions without selected answers\n\n // build Answer Set\n const answerSet = {};\n answerSet.questionSetId = questionSet.QuestionSetId;\n answerSet.transactionid = questionSet.TransactionId;\n answerSet.answers = [];\n questionSet.Questions.forEach(question => {\n const answer = {\n questionId: question.QuestionId,\n choices: []\n };\n question.Choices.forEach(choice => {\n if (choice.isSelected) {\n answer.choices.push({\n choiceId: choice.ChoiceId,\n text: choice.Text\n });\n }\n });\n answerSet.answers.push(answer);\n });\n\n this.setState({ isLoading: true });\n this.props.rsaAnswers(answerSet)\n .then(() => {\n if (this.props.isIdentityVerified) {\n this.props.resetClaims()\n .then(() => {\n this.props.toggleRSADialog();\n });\n }\n else {\n const { RSAQuestionSet } = this.props;\n if (RSAQuestionSet.Questions.length > 0) {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n isRSAQuestions: true,\n questionSet: RSAQuestionSet\n }, () => this.renderRSAQandA());\n }\n else {\n this.props.getRSAQuestionSet()\n .then(() => {\n const latestSet = this.props.RSAQuestionSet;\n if (latestSet && latestSet.Questions.length === 0) {\n this.setState({ isLoading: false },\n () => this.props.notificationShow(Multifactor.msg_unable_verify, 'error')\n );\n setTimeout(() => this.logOut(), 2000);\n }\n else {\n this.setState({\n isLoading: false,\n isRSADOB: false,\n hasSecurityQuestion: false,\n isRSAQuestions: true,\n questionSet: latestSet\n }, () => this.renderRSAQandA());\n }\n });\n }\n }\n });\n\n }\n }\n\n renderRSAQandA() {\n const { text: { Multifactor } } = this.props;\n const questions = this.state.questionSet.Questions ? cloneDeep(this.state.questionSet.Questions) : [];\n const questRendered = questions.map(question => {\n if (question.AnswerType === 'Single') {\n const choices = question.Choices.map(choice => {\n return (} label={choice.Text} />);\n });\n return (\n
    \n {question.Text}\n
    {question.HelpText}
    \n \n {choices}\n \n {question.errorMessage}\n
    \n );\n }\n else {\n const choices = question.Choices.map(choice => {\n return (\n }\n label={choice.Text}\n onChange={this.handleOptions}\n name={`${question.QuestionId}|${choice.ChoiceId}`}\n value={choice.ChoiceId}\n />\n );\n });\n return (\n
    \n {question.Text}\n
    {question.HelpText}
    \n \n \n {choices}\n \n {question.errorMessage}\n \n
    \n );\n }\n });\n\n return (\n \n

    {Multifactor.msg_rsa_select}

    \n\n \n {questRendered}\n \n {Multifactor.btn_submit_answer}\n \n this.props.toggleRSADialog()}\n >\n {Multifactor.btn_cancel}\n \n
    \n
    \n );\n\n }\n\n displayMessage() {\n const { displayMessage } = this.state;\n return (\n
    \n

    {displayMessage}

    \n this.logOut()}\n >\n {this.props.text.Multifactor.btn_logout}\n \n
    \n );\n }\n\n logOut() {\n const { text: { Login } } = this.props;\n const token = sessionStorage.getItem('token');\n this.props.userLogout({ token })\n .finally(() => this.props.notificationShow(Login.msg_you_have_logged_out, 'success'));\n this.props.clearStore();\n }\n\n render() {\n const { text: { Multifactor } } = this.props;\n const { isRSADOB, isRSAQuestions, hasDisplayMessage } = this.state;\n\n return (\n
    \n
    \n
    \n
    \n \n

    {Multifactor.verify_identity_title}

    \n\n {isRSADOB && this.renderRSADOB()}\n {isRSAQuestions && this.renderRSAQandA()}\n {hasDisplayMessage && this.displayMessage()}\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default connect(select, {\n getRSAStatus,\n rsaVerifyBirthday,\n getRSAQuestionSet,\n rsaAnswers,\n toggleRSADialog,\n clearStore,\n userLogout,\n notificationShow,\n resetClaims\n})(LanguageHOC(RSA));","// import { store } from 'src/index'; TRANSLATIONS uncomment line to activate Spanish titles\nimport { default as English } from 'utils/translations/en.js';\n// import { default as Spanish } from 'utils/translations/es.js'; TRANSLATIONS uncomment line to activate Spanish titles\nimport { ROUTE_ACCESS } from 'components/AppRoot/Navigation/RequiredAccess.js';\n\n\nexport function getTitle(path, userAccess) {\n // const text = store.getState().session.language === 'es' ? Spanish : English; TRANSLATIONS uncomment line and remove below line to display Spanish titles\n const text = English;\n const {\n AccountDetails,\n Accounts,\n AddBirthdate,\n Payments,\n Documents,\n Home,\n ForgotPassword,\n ForgotUsername,\n Lpoa,\n Gifting,\n InterestedParties,\n InterestedPartiesActivation,\n Login,\n MyInfo,\n Multifactor,\n PayrollContribution,\n Register,\n ResendEmail,\n ResetPassword,\n Signup,\n SetupUser,\n VerifyEmail,\n PageNotFound,\n LpoaAccount,\n ValidateEmail,\n TransactionsHub,\n } = text;\n\n // Priority is placed to titles placed LOWER on this list\n const routes = [\n { matcher: Home.nav_path, title: Home.nav_title, visible: ROUTE_ACCESS.Home.includes(userAccess) },\n { matcher: ValidateEmail.nav_path, title: ValidateEmail.nav_title, visible: true },\n { matcher: AddBirthdate.nav_path, title: AddBirthdate.nav_title, visible: ROUTE_ACCESS.AddBirthdate.includes(userAccess) },\n { matcher: Accounts.nav_path, title: Accounts.nav_title, visible: ROUTE_ACCESS.Accounts.includes(userAccess) },\n { matcher: AccountDetails.nav_path_regex, title: AccountDetails.nav_title, visible: ROUTE_ACCESS.Accounts.includes(userAccess) },\n { matcher: Payments.nav_path, title: Payments.nav_title, visible: ROUTE_ACCESS.Payments.includes(userAccess) },\n { matcher: Documents.nav_path, title: Documents.nav_title, visible: ROUTE_ACCESS.Documents.includes(userAccess) },\n { matcher: ForgotPassword.nav_path, title: ForgotPassword.nav_title, visible: true },\n { matcher: ForgotUsername.nav_path, title: ForgotUsername.nav_title, visible: true },\n { matcher: InterestedPartiesActivation.nav_path, title: InterestedPartiesActivation.nav_title, visible: true },\n { matcher: InterestedParties.nav_path, title: InterestedParties.nav_title, visible: ROUTE_ACCESS.InterestedParties.includes(userAccess) },\n { matcher: Gifting.nav_path, title: Gifting.nav_title, visible: ROUTE_ACCESS.Gifting.includes(userAccess) },\n { matcher: `${Gifting.nav_path}/[0-9]`, title: Gifting.manage_title, visible: ROUTE_ACCESS.Gifting.includes(userAccess) },\n { matcher: Lpoa.nav_path, title: Lpoa.nav_title, visible: ROUTE_ACCESS.Lpoa.includes(userAccess) },\n { matcher: Login.nav_path, title: Login.nav_title, visible: true },\n { matcher: MyInfo.nav_path, title: MyInfo.nav_title, visible: ROUTE_ACCESS.MyInfo.includes(userAccess) },\n { matcher: Multifactor.nav_path, title: Multifactor.nav_title, visible: ROUTE_ACCESS.Multifactor.includes(userAccess) },\n { matcher: PayrollContribution.nav_path, title: PayrollContribution.nav_title, visible: ROUTE_ACCESS.PayrollContribution.includes(userAccess) },\n { matcher: ResendEmail.nav_path, title: ResendEmail.nav_title, visible: true },\n { matcher: Register.nav_path, title: Register.nav_title, visible: true },\n { matcher: ResetPassword.nav_path, title: ResetPassword.nav_title, visible: true },\n { matcher: Signup.nav_path, title: Signup.nav_title, visible: ROUTE_ACCESS.Signup.includes(userAccess) },\n { matcher: SetupUser.nav_path, title: SetupUser.nav_title, visible: true },\n { matcher: VerifyEmail.nav_path, title: VerifyEmail.nav_title, visible: ROUTE_ACCESS.VerifyEmail.includes(userAccess) },\n { matcher: LpoaAccount.nav_path, title: LpoaAccount.nav_title, visible: true },\n { matcher: TransactionsHub.nav_path, title: TransactionsHub.nav_title, visible: true },\n ];\n\n const matchingRoute = routes.reverse().find(route => path.match(new RegExp(route.matcher, 'i'))); // make match case insensitive\n let title = '';\n\n if (matchingRoute && matchingRoute.visible) {\n title = matchingRoute.title;\n }\n else {\n title = PageNotFound.nav_title;\n }\n\n document.title = title;\n return title;\n}","import React from 'react';\nimport { persistClientErrors } from './error_handler';\n\n\nexport class ErrorBoundary extends React.Component {\n\n state = { \n error: '',\n errorInfo: ''\n };\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error,\n errorInfo\n });\n persistClientErrors({\n name: error.name,\n message: error.message,\n stack: error.stack,\n });\n }\n \n render() {\n \n const styles = {\n position: 'fixed',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n };\n \n \n if (this.state.errorInfo) {\n return (\n
    \n Oops! Something didn't go as planned.\n
    \n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;","/*\n*\n* ViewInvestmentPath Component\n*\n*/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\n\nimport ViewOptionChange from 'components/Features/protected/Accounts/Transactions/OptionChanges/ViewOptionChange';\n\nimport { accountInvestmentPathGet } from 'components/Features/protected/Accounts/actions';\n\nconst select = (state) => ({\n investmentPath: state.accounts.investmentPath,\n});\n\nexport class ViewInvestmentPath extends React.Component {\n\n static propTypes = {\n accountInvestmentPathGet: PropTypes.func.isRequired,\n investmentPath: PropTypes.object,\n };\n\n state = {\n loading: true,\n }\n\n componentDidMount() {\n const {\n match,\n accountInvestmentPathGet,\n } = this.props;\n\n accountInvestmentPathGet(match.params.accountId)\n .then(() => {\n this.setState({ loading: false });\n })\n .catch(() => this.setState({ loading: false }));\n }\n\n render() {\n const { match, investmentPath } = this.props;\n const { loading } = this.state;\n return (\n \n );\n }\n}\n\nexport default withRouter(connect(select, {\n accountInvestmentPathGet,\n})(ViewInvestmentPath));","import { useEffect } from 'react';\nimport { withRouter } from 'react-router-dom';\n\nfunction ScrollToTop({ history }) {\n useEffect(() => {\n const unlisten = history.listen(() => {\n window.scrollTo(0, 0);\n });\n return () => {\n unlisten();\n };\n }, [history]);\n\n return (null);\n}\n\nexport default withRouter(ScrollToTop);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n Switch,\n withRouter,\n} from 'react-router-dom';\n\nimport {\n Dialog,\n Slide\n} from '@mui/material';\n\nimport LanguageHOC from 'utils/translations/LanguageHOC';\n\nimport {\n LegalFooter,\n SplashScreen\n} from '@frontend/common';\n\nimport ProtectedRoute from './ProtectedRoute';\nimport PublicRoute from './PublicRoute';\n\nimport Header from './Header';\nimport Sidenav from './Sidenav';\nimport NotificationsDrawer from './NotificationsDrawer';\nimport AppTour from './AppTour';\n\nimport Login from 'components/Features/public/Login';\nimport PageNotFound from 'components/Features/public/PageNotFound';\nimport ForgotPassword from 'components/Features/public/ForgotPassword';\nimport Register from 'components/Features/public/RegistrationType/Register';\nimport ResendEmail from 'components/Features/public/ResendEmail';\nimport ResetPassword from 'components/Features/public/ResetPassword';\nimport ValidateEmail from 'components/Features/public/ValidateEmail';\nimport ForgotUsername from 'components/Features/public/ForgotUsername';\nimport SetupUser from 'components/Features/public/RegistrationType/SetupUser';\nimport LpoaAccount from 'components/Features/public/LpoaAccount';\nimport InterestedPartiesActivation from 'components/Features/public/InterestedPartiesActivation';\n\nimport Accounts from 'components/Features/protected/Accounts';\nimport TransactionHub from 'components/Features/protected/TransactionsHub';\nimport Home from 'components/Features/protected/Home';\nimport Lpoa from 'components/Features/protected/Lpoa';\nimport Gifting from 'components/Features/protected/Gifting/Dashboard';\nimport Manage from 'components/Features/protected/Gifting/Manage';\nimport MyInfo from 'components/Features/protected/MyInfo';\nimport Transactions from 'components/Features/protected/Accounts/Transactions';\nimport Payments from 'components/Features/protected/Payments';\nimport Documents from 'components/Features/protected/Documents';\nimport PayrollContribution from 'components/Features/protected/PayrollContribution';\nimport InterestedParties from 'components/Features/protected/InterestedParties';\n\n// Potentially Blocked Components - see ProtectedRoute\nimport VerifyEmail from 'components/Features/protected/VerifyEmail';\nimport Multifactor from 'components/Features/protected/Multifactor';\nimport Signup from 'components/Features/protected/Signup';\nimport AddBirthdate from 'components/Features/protected/AddBirthdate';\n\nimport PreflightLoader from 'components/Features/protected/Accounts/Transactions/PreflightLoader';\nimport Authentication from 'components/Features/protected/Multifactor/Authentication';\nimport AuthyDown from 'components/Features/protected/Multifactor/AuthyDown';\nimport RSA from 'components/Features/protected/Multifactor/RSA';\n\nimport { getTitle } from 'utils/helpers/title_handler';\nimport ErrorBoundary from 'utils/helpers/error_boundary';\nimport { clearState } from 'utils/helpers/state_handler';\nimport { ROUTE_ACCESS } from './RequiredAccess';\nimport { REASONS_BLOCKED } from './constants';\n\nimport ViewInvestmentPath from 'components/Features/protected/Accounts/AccountDetails/ViewInvestmentPath';\n\nimport ScrollToTop from './ScrollToTop';\n\nimport {\n userLogout,\n resetClaims,\n toggle2FADialog,\n toggleAuthyDownDialog,\n toggleSplashHasDisplayed,\n} from 'components/AppRoot/Navigation/actions';\n\nimport styles from './styles.module.scss';\n\nconst select = (state) => ({\n isAccountListLoaded: state.accounts.isAccountListLoaded,\n uiPermissions: state.accounts.uiPermissions,\n documents: state.static.documents,\n isValid: state.session.isValid,\n preflightLoaderOpen: state.transactions.preflightLoaderOpen,\n sidenavOpen: state.session.sidenavOpen,\n userAccess: state.session.userAccess,\n is2FADialogOpen: state.session.is2FADialogOpen,\n isRSADialogOpen: state.session.isRSADialogOpen,\n isAuthyDownDialogOpen: state.session.isAuthyDownDialogOpen,\n accountBlocked: state.session.accountBlocked,\n reasonBlocked: state.session.reasonBlocked,\n splashHasDisplayed: state.session.splashHasDisplayed,\n isNewUser_AccessRole: state.session.isNewUser_AccessRole,\n});\n\nexport class Navigation extends Component {\n\n static propTypes = {\n isAccountListLoaded: PropTypes.bool.isRequired,\n userLogout: PropTypes.func.isRequired,\n resetClaims: PropTypes.func.isRequired,\n toggle2FADialog: PropTypes.func.isRequired,\n toggleAuthyDownDialog: PropTypes.func.isRequired,\n toggleSplashHasDisplayed: PropTypes.func.isRequired,\n splashHasDisplayed: PropTypes.bool.isRequired,\n documents: PropTypes.object,\n isValid: PropTypes.bool.isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string,\n search: PropTypes.string,\n }).isRequired,\n preflightLoaderOpen: PropTypes.bool.isRequired,\n sidenavOpen: PropTypes.bool.isRequired,\n is2FADialogOpen: PropTypes.bool.isRequired,\n isAuthyDownDialogOpen: PropTypes.bool.isRequired,\n isRSADialogOpen: PropTypes.bool.isRequired,\n isNewUser_AccessRole: PropTypes.bool.isRequired,\n text: PropTypes.shape({\n Accounts: PropTypes.shape({ nav_path: PropTypes.string }),\n TransactionsHub: PropTypes.shape({ nav_path: PropTypes.string }),\n AccountDetails: PropTypes.shape({ nav_path: PropTypes.func, investment_path: PropTypes.string, }),\n AddBirthdate: PropTypes.shape({ nav_path: PropTypes.string }),\n Home: PropTypes.shape({ nav_path: PropTypes.string }),\n ForgotPassword: PropTypes.shape({ nav_path: PropTypes.string }),\n Gifting: PropTypes.shape({ nav_path: PropTypes.string }),\n Login: PropTypes.shape({ nav_path: PropTypes.string, msg_you_have_logged_out: PropTypes.string }),\n MyInfo: PropTypes.shape({ nav_path: PropTypes.string }),\n Payments: PropTypes.shape({ nav_path: PropTypes.string }),\n ResetPassword: PropTypes.shape({ nav_path: PropTypes.string }),\n Signup: PropTypes.shape({ nav_path: PropTypes.string }),\n Transactions: PropTypes.shape({ nav_path: PropTypes.func }),\n ValidateEmail: PropTypes.shape({ nav_path: PropTypes.string }),\n ForgotUsername: PropTypes.shape({ nav_path: PropTypes.string }),\n Documents: PropTypes.shape({ nav_path: PropTypes.string }),\n PayrollContribution: PropTypes.shape({ nav_path: PropTypes.string }),\n Register: PropTypes.shape({ nav_path: PropTypes.string }),\n ResendEmail: PropTypes.shape({ nav_path: PropTypes.string }),\n SetupUser: PropTypes.shape({ nav_path: PropTypes.string }),\n VerifyEmail: PropTypes.shape({ nav_path: PropTypes.string }),\n Multifactor: PropTypes.shape({ nav_path: PropTypes.string }),\n Lpoa: PropTypes.shape({ nav_path: PropTypes.string }),\n InterestedParties: PropTypes.shape({ nav_path: PropTypes.string }),\n LpoaAccount: PropTypes.shape({ nav_path: PropTypes.string }),\n InterestedPartiesActivation: PropTypes.shape({ nav_path: PropTypes.string }),\n }).isRequired,\n userAccess: PropTypes.string.isRequired,\n uiPermissions: PropTypes.shape({\n canAddInterestedParties: PropTypes.bool,\n canManageBankAccounts: PropTypes.bool,\n giftingEnabled: PropTypes.bool,\n noBeneAccounts: PropTypes.bool,\n }).isRequired,\n accountBlocked: PropTypes.bool.isRequired,\n reasonBlocked: PropTypes.string.isRequired,\n };\n\n state = {\n validatingEmailWhileLoggedIn: false,\n };\n\n continueInPlace() {\n this.props.toggleAuthyDownDialog();\n this.props.toggle2FADialog();\n }\n\n componentDidMount() {\n const { isValid, location, text: { ValidateEmail } } = this.props;\n const storedVersion = localStorage.getItem('aa_version');\n if (!storedVersion || storedVersion !== window.appVersion) {\n clearState();\n localStorage.setItem('aa_version', window.appVersion);\n }\n if (location.pathname === ValidateEmail.nav_path && isValid) {\n // triggers a modal in VerifyEmail component if user is logged in and trying to paste an email validation code into the URL\n // user must validate in new tab so AccountBlock claim gets properly updated\n this.setState({ validatingEmailWhileLoggedIn: true });\n }\n }\n\n render() {\n const {\n history, isValid, sidenavOpen, is2FADialogOpen, isRSADialogOpen,\n isAuthyDownDialogOpen, text, userAccess, uiPermissions,\n accountBlocked, reasonBlocked, toggleSplashHasDisplayed, splashHasDisplayed,\n isAccountListLoaded, isNewUser_AccessRole, documents,\n } = this.props;\n const token = sessionStorage.getItem('token');\n\n return (\n
    \n \n\n
    \n \n
    \n\n \n
    \n
    {/* eslint-disable-line */}\n \n \n \n \n \n \n \n \n ,\n \n \n \n \n\n \n \n \n {accountBlocked && reasonBlocked === REASONS_BLOCKED.NO_BIRTHDATE && }\n\n \n {!uiPermissions.noBeneAccounts && }\n \n \n {uiPermissions.giftingEnabled && }\n {uiPermissions.giftingEnabled && }\n \n \n { /*This route must appear lower in the list or it will be given routing priority over transactions */}\n {uiPermissions.canManageBankAccounts && }\n \n \n {uiPermissions.canAddInterestedParties && }\n \n\n \n \n
    \n {isValid && history.location.pathname === text.Home.nav_path\n && !accountBlocked && !reasonBlocked && splashHasDisplayed && isAccountListLoaded &&\n } {/* Needs to be on home route so new SSup users do not see app tour */}\n\n
    {/* eslint-disable-line */}\n \n
    \n
    \n {isValid && }\n\n \n \n \n\n \n \n \n\n {/* Splash Screen while accounts are loading */}\n {/* Splash should only display on valid user, after 2FA/RSA, or any other validation requirements */}\n {isValid && !accountBlocked && !reasonBlocked && !splashHasDisplayed &&\n }\n\n this.continueInPlace()}\n logout={() => this.props.userLogout({ token })}\n text={text}\n history={history}\n />\n
    \n );\n }\n}\n\nconst Transition = React.forwardRef(function Transition(props, ref) { // eslint-disable-line\n return ;\n});\n\nexport default withRouter(connect(select, {\n userLogout,\n resetClaims,\n toggle2FADialog,\n toggleAuthyDownDialog,\n toggleSplashHasDisplayed,\n})(LanguageHOC(Navigation)));","export const loadState = () => {\n try {\n const serializedState = sessionStorage.getItem('aa_state');\n if (serializedState === null) {\n return undefined;\n }\n return JSON.parse(serializedState);\n }\n catch (err) {\n return undefined;\n }\n};\n\nexport const saveState = (state) => {\n /* eslint-disable */\n try {\n const serializedState = JSON.stringify(state);\n sessionStorage.setItem('aa_state', serializedState);\n }\n catch (err) {\n throw err;\n \n }\n};\n\nexport const clearState = () => { // eslint-disable-line no-unused-vars\n sessionStorage.removeItem('aa_state');\n};","/* \n*\n* AppRoot\n*\n*/\nimport React from 'react';\nimport { ThemeProvider, createTheme, StyledEngineProvider, } from '@mui/material/styles';\nimport material_ui_theme from 'utils/config/material_ui_theme';\nimport { Notifications } from '@frontend/common';\nimport Navigation from './Navigation';\n\nimport './styles.scss';\n\nexport function AppRoot() {\n return (\n \n \n \n \n \n \n );\n}","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport { createRoot, } from 'react-dom/client';\nimport { BrowserRouter } from 'react-router-dom';\nimport { configureStore } from '@reduxjs/toolkit';\nimport { Provider } from 'react-redux';\nimport promise from 'redux-promise';\n\nimport { get, set, clear, } from 'idb-keyval';\n\nimport { apiMessages } from 'utils/helpers/middleware';\n\nimport throttle from 'lodash/throttle';\n\nimport rootReducer from './reducers';\n\nimport { AppRoot } from 'components/AppRoot/index';\n\nif (process.env.NODE_ENV !== 'test') {\n require('./utils/ga/analytics.js');\n}\n\nexport let store = {};\n\nif (process.env.NODE_ENV !== 'test') {\n get('osprey_idb') // retrieve redux store from IndexedDB\n .then(val => {\n let preloadedState = undefined;\n const token = sessionStorage.getItem('token');\n if (val && token) {\n preloadedState = JSON.parse(val);\n }\n else {\n sessionStorage.removeItem('token');\n clear();\n }\n\n // check if in dev environment\n const URL = window.location.host;\n const isDevEnv = Boolean(window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) // eslint-disable-line no-underscore-dangle\n && (URL.includes('localhost') || URL.includes('dev') || URL.includes('qa'));\n\n // create store\n store = configureStore({\n reducer: rootReducer,\n preloadedState,\n middleware: [promise, apiMessages],\n devTools: isDevEnv, // makes sure devTools are turn off in prod\n });\n\n // save redux store to IndexedDB\n store.subscribe(throttle(() => {\n const serializedState = JSON.stringify(store.getState());\n set('osprey_idb', serializedState);\n }), 1000);\n\n const container = document.getElementById('root');\n const root = createRoot(container);\n\n root.render(\n \n \n \n \n \n );\n });\n}\nelse {\n store = configureStore({\n reducer: rootReducer,\n middleware: [promise, apiMessages],\n // makes sure devTools are turned off in prod\n devTools: Boolean(window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__), // eslint-disable-line\n });\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"acard_faq_table\":\"en_acard_faq_table__SfEfZ\",\"acard_faq_td\":\"en_acard_faq_td__nR3vK\",\"acard_faq_th\":\"en_acard_faq_th__32PkE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"topBarContainer\":\"styles_topBarContainer__3rNtG\",\"topBar\":\"styles_topBar__c2f_n\",\"titleColumn\":\"styles_titleColumn__1k0q8\",\"closeIconColumn\":\"styles_closeIconColumn__2hPA4\",\"prrCalculator\":\"styles_prrCalculator__1qW12\",\"beneficiary\":\"styles_beneficiary__3IGCc\",\"data\":\"styles_data__2Ag-Z\",\"dataTILE\":\"styles_dataTILE__z5ttH\",\"label\":\"styles_label__p1yuY\",\"labelTILE\":\"styles_labelTILE__2qdwC\",\"rorContainer\":\"styles_rorContainer__2H-BZ\",\"rorTitle\":\"styles_rorTitle__3V8rW\",\"ppr\":\"styles_ppr__25aMl\",\"positiveReturn\":\"styles_positiveReturn__1ZSLe\",\"negativeReturn\":\"styles_negativeReturn__6vuE6\",\"pprNotAvailable\":\"styles_pprNotAvailable__32Z4A\",\"buttons\":\"styles_buttons__xfwGj\",\"NA\":\"styles_NA__Njjyt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"pprPercentageContainer\":\"styles_pprPercentageContainer__3u5sH\",\"pprPercentage\":\"styles_pprPercentage__H6ihe\",\"buttonIcons\":\"styles_buttonIcons__2uGdG\",\"ppr\":\"styles_ppr__3hNDR\",\"positiveReturn\":\"styles_positiveReturn__2nPul\",\"negativeReturn\":\"styles_negativeReturn__1Fn-X\",\"pprNotAvailable\":\"styles_pprNotAvailable__3PMdN\",\"accountDetails\":\"styles_accountDetails__2fgAX\",\"beneficiaryNameSection\":\"styles_beneficiaryNameSection__2iZpF\",\"accountNumber\":\"styles_accountNumber__1fCEG\",\"totalBalance\":\"styles_totalBalance__15hmS\",\"pprContainer\":\"styles_pprContainer__3Yq7b\",\"scholarshipEntity\":\"styles_scholarshipEntity__ciBte\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__xesgl\",\"levelSelectionContainer\":\"styles_levelSelectionContainer__1NUhH\",\"review\":\"styles_review__2eFRv\",\"taxSelectionSeparator\":\"styles_taxSelectionSeparator__1yigW\",\"formsTitle\":\"styles_formsTitle__14ycB\",\"formsRow\":\"styles_formsRow__7x5uZ\",\"formSelection\":\"styles_formSelection__3UL4P\",\"formSelectionLabel\":\"styles_formSelectionLabel__2-pZj\",\"agreeToTerms\":\"styles_agreeToTerms__3eTHO\",\"printButton\":\"styles_printButton__sUju5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"closeIcon\":\"styles_closeIcon__1S8R6\",\"notificationsTitle\":\"styles_notificationsTitle__2iCa_\",\"notificationContainer\":\"styles_notificationContainer__bmBOn\",\"notificationContainerNotViewed\":\"styles_notificationContainerNotViewed__2tKO2\",\"fromTime\":\"styles_fromTime__3D8KR\",\"notificationStatus\":\"styles_notificationStatus__1zUIr\",\"iconContainer\":\"styles_iconContainer__2cumA\",\"notificationType\":\"styles_notificationType__31Rk7\",\"notificationHeader\":\"styles_notificationHeader__7lVqW\",\"notificationsText\":\"styles_notificationsText__24Jek\",\"noNotifications\":\"styles_noNotifications__3u43Y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"filterAndSearch\":\"styles_filterAndSearch__1Wp-f\",\"filter\":\"styles_filter__3ICRZ\",\"search\":\"styles_search__2g82W\",\"balanceByDateContainer\":\"styles_balanceByDateContainer__28kLj\",\"accountValueContainer\":\"styles_accountValueContainer__2jRCk\",\"hasNoBalance\":\"styles_hasNoBalance__rKgay\",\"beneName\":\"styles_beneName__2gaNs\",\"optionName\":\"styles_optionName__3TXj2\",\"accountDivider\":\"styles_accountDivider__1HUpf\",\"dateFilter\":\"styles_dateFilter__2Myz9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"row\":\"styles_row__38Yr5\",\"forMobile\":\"styles_forMobile__4wBfc\",\"col\":\"styles_col__H1kyB\",\"title\":\"styles_title__3Qh1E\",\"arrow\":\"styles_arrow__2nIKn\",\"end\":\"styles_end__2zqSV\",\"header\":\"styles_header__3yRQj\",\"drawerHeaderItem\":\"styles_drawerHeaderItem__2mZn2\",\"closeButton\":\"styles_closeButton__m9Grd\",\"closeButtonArrow\":\"styles_closeButtonArrow__3VEP6\",\"drawerContent\":\"styles_drawerContent__30jWP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryContainer\":\"styles_summaryContainer__29eeX\",\"subSummaryContainer\":\"styles_subSummaryContainer__1dX6r\",\"summaryTitle\":\"styles_summaryTitle__1rPDM\",\"summarySubtitle\":\"styles_summarySubtitle__3HSIG\",\"summaryTable\":\"styles_summaryTable__E9RHI\",\"createdTime\":\"styles_createdTime__24uBr\",\"print\":\"styles_print__wPSzw\",\"totalAmountOf\":\"styles_totalAmountOf__1ZPvs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2VQG2\",\"form\":\"styles_form__2OwfF\",\"infoContainer\":\"styles_infoContainer__1RTPo\",\"addressesContainer\":\"styles_addressesContainer__2uVBl\",\"residentContainer\":\"styles_residentContainer__3rwkF\",\"stepperButtons\":\"styles_stepperButtons__36lxe\",\"headerContainer\":\"styles_headerContainer__N_H7b\",\"addressCheckbox\":\"styles_addressCheckbox__3_Pgq\",\"ssnContainer\":\"styles_ssnContainer__3R0Rj\",\"ssnInputs\":\"styles_ssnInputs__3t63G\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"amountDateContainer\":\"styles_amountDateContainer__2uRvu\",\"partialBalanceMessaging\":\"styles_partialBalanceMessaging__sHWpN\",\"sellDate\":\"styles_sellDate__3hLG_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"ChallengeQuestions\":\"styles_ChallengeQuestions__1ZwQR\",\"questionLabel\":\"styles_questionLabel__1Vmlv\",\"question\":\"styles_question__1cCuF\",\"answer\":\"styles_answer__3qO-r\",\"DOBcontainer\":\"styles_DOBcontainer__nFHyF\",\"aoNameLabel\":\"styles_aoNameLabel__1jE83\",\"aoName\":\"styles_aoName__rhS9I\",\"aoDOBLabel\":\"styles_aoDOBLabel__HFtiN\",\"aoDOB\":\"styles_aoDOB__2gH_9\",\"DOB\":\"styles_DOB__nDd_2\",\"errorMsg\":\"styles_errorMsg__3RrHN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"detailTitle\":\"styles_detailTitle__2CjVc\",\"detailText\":\"styles_detailText__3McwG\",\"homeContainer\":\"styles_homeContainer__23B5E\",\"overviewHeading\":\"styles_overviewHeading__3ur1g\",\"accountsHeading\":\"styles_accountsHeading__5twEa\",\"titleAndFilter\":\"styles_titleAndFilter__1hlyn\",\"filter\":\"styles_filter__2qtoM\",\"search\":\"styles_search__2ambp\",\"ownerInfo\":\"styles_ownerInfo__37on9\",\"accountsHeadingContainer\":\"styles_accountsHeadingContainer__17bkr\",\"accountsSummaryContainer\":\"styles_accountsSummaryContainer__AqD_g\",\"viewIcon\":\"styles_viewIcon__1EnaR\",\"transactionsAccordion\":\"styles_transactionsAccordion__wy-Ig\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3Y12j\",\"step1\":\"styles_step1__3dvcz\",\"step1text\":\"styles_step1text__2bsnb\",\"step2\":\"styles_step2__18cgO\",\"step2text\":\"styles_step2text__2w9OD\",\"qrcode\":\"styles_qrcode__2U9OL\",\"step3\":\"styles_step3__1lrnj\",\"step3text\":\"styles_step3text__3iRKW\",\"my529token\":\"styles_my529token__3tKBk\",\"attemptWarning\":\"styles_attemptWarning__3mH5b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"breadcrumbs\":\"styles_breadcrumbs__hZAAB\",\"container\":\"styles_container__2w_-O\",\"stepperContent\":\"styles_stepperContent__1hoQk\",\"accountDetailsContainer\":\"styles_accountDetailsContainer__3vyRC\",\"availableForWithdrawal\":\"styles_availableForWithdrawal__2CM0U\",\"loader\":\"styles_loader__3iKY1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2nhhG\",\"form\":\"styles_form__t9HKd\",\"infoContainer\":\"styles_infoContainer__3xCtP\",\"addressesContainer\":\"styles_addressesContainer__2g64N\",\"residentContainer\":\"styles_residentContainer__3w_5x\",\"stepperButtons\":\"styles_stepperButtons__2ZPrY\",\"headerContainer\":\"styles_headerContainer__mRfzG\",\"ssnContainer\":\"styles_ssnContainer__3x9Tx\",\"ssnInputs\":\"styles_ssnInputs__2nOdh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"ChallengeQuestions\":\"styles_ChallengeQuestions__8of3h\",\"questionLabel\":\"styles_questionLabel__3yLFB\",\"question\":\"styles_question__289NR\",\"answer\":\"styles_answer__3fsjd\",\"DOBcontainer\":\"styles_DOBcontainer__2ZJgE\",\"aoNameLabel\":\"styles_aoNameLabel__2RE-u\",\"aoName\":\"styles_aoName__1zUqj\",\"aoDOBLabel\":\"styles_aoDOBLabel__1GlYT\",\"aoDOB\":\"styles_aoDOB__3LK_W\",\"DOB\":\"styles_DOB__25QSM\",\"container\":\"styles_container__DC16V\",\"body\":\"styles_body__1PVAM\",\"logo\":\"styles_logo__Lyl0h\",\"errorMsg\":\"styles_errorMsg__Yms44\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"linkContainer\":\"styles_linkContainer__ddUU_\",\"linkDivider\":\"styles_linkDivider__2g5Xm\",\"dividerLeft\":\"styles_dividerLeft__1xsfv\",\"dividerText\":\"styles_dividerText__15G8c\",\"dividerRight\":\"styles_dividerRight__323hi\",\"button\":\"styles_button__2wMwt\",\"recaptcha\":\"styles_recaptcha__2IIB2\",\"maintenanceMsgContainer\":\"styles_maintenanceMsgContainer__GVI-K\",\"maintenanceMsg\":\"styles_maintenanceMsg__d6Yim\",\"financialAdvisorLoginButton\":\"styles_financialAdvisorLoginButton__1KNfr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3vY45\",\"logo\":\"styles_logo__15YL4\",\"failedRSA\":\"styles_failedRSA__3V9b7\",\"accountCreatedContainer\":\"styles_accountCreatedContainer__cVQEs\",\"accountCreatedTitle\":\"styles_accountCreatedTitle__R0s3S\",\"newAccountNumber\":\"styles_newAccountNumber__3-hVd\",\"button\":\"styles_button__3DlmR\",\"navButtons\":\"styles_navButtons__1Hu6b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"valueGraphContainer\":\"styles_valueGraphContainer__2ksZM\",\"fullscreenGraphContainer\":\"styles_fullscreenGraphContainer__2C7nD\",\"tooltip\":\"styles_tooltip__tV7r4\",\"tooltipLegend\":\"styles_tooltipLegend__UpZ_z\",\"tooltipName\":\"styles_tooltipName__3lg2z\",\"tooltipBalance\":\"styles_tooltipBalance___TmM2\",\"tooltipLine\":\"styles_tooltipLine__298l8\",\"xAxis\":\"styles_xAxis__36ecW\",\"yAxis\":\"styles_yAxis__19YTH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1Vcwd\",\"authCodeEntryComponent\":\"styles_authCodeEntryComponent__3VGuF\",\"codeInput\":\"styles_codeInput__fme2A\",\"poaName\":\"styles_poaName__19WGP\",\"navButtons\":\"styles_navButtons__12rWx\",\"button\":\"styles_button__utVGD\",\"learnMore\":\"styles_learnMore__3perB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"styles_text__2PNvW\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1scbk\",\"label\":\"styles_label__3d7zs\",\"options\":\"styles_options__sbFdd\",\"auth_container\":\"styles_auth_container__3gGtR\",\"authenticator\":\"styles_authenticator__jSWZb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"verifyAccountText\":\"styles_verifyAccountText__1O3uu\",\"verifyInputs\":\"styles_verifyInputs__2ufll\",\"emptyDiv\":\"styles_emptyDiv__369Oc\",\"verifyTitle\":\"styles_verifyTitle__2yjia\",\"verifyDetail\":\"styles_verifyDetail__EGEyj\",\"verifiedAccountDetails\":\"styles_verifiedAccountDetails__Y_mri\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"subTitle\":\"styles_subTitle__3dtua\",\"list\":\"styles_list__sxetS\",\"threeItemRow\":\"styles_threeItemRow__1uA_Y\",\"threeItemCell\":\"styles_threeItemCell__1RZX4\",\"cellValues\":\"styles_cellValues__2sbc3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"contentContainer\":\"styles_contentContainer__vs-4q\",\"welcomeContainer\":\"styles_welcomeContainer__tuFoF\",\"stepsContainer\":\"styles_stepsContainer__2BfjJ\",\"progressContainer\":\"styles_progressContainer__3-w3T\",\"imgContainer\":\"styles_imgContainer__2KkGg\",\"picture\":\"styles_picture__2lg_-\",\"logo\":\"styles_logo__3Da1B\",\"buttonContainer\":\"styles_buttonContainer__31JcD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__23yaW\",\"transactionButtons\":\"styles_transactionButtons__3GOI7\",\"transactionsCard\":\"styles_transactionsCard__2-fbc\",\"upcomingTransactionsCard\":\"styles_upcomingTransactionsCard__3NcXM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1xfH1\",\"otherInfo\":\"styles_otherInfo___Kn3z\",\"headerContainer\":\"styles_headerContainer__24uhh\",\"formContainer\":\"styles_formContainer__3efjB\",\"logo\":\"styles_logo__9Q2my\",\"recaptcha\":\"styles_recaptcha__2wXqE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"beneAddressRow\":\"styles_beneAddressRow__3vr2L\",\"buttonIcons\":\"styles_buttonIcons__YCUQL\",\"beneAddressRowContainer\":\"styles_beneAddressRowContainer__NMS1T\",\"beneAddress\":\"styles_beneAddress__3oPjD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__1F0Jz\",\"divider\":\"styles_divider__2yINL\",\"closeIcon\":\"styles_closeIcon__jPboV\",\"learnMoreInfo\":\"styles_learnMoreInfo__10ELY\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__iKKtL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"accountsContainer\":\"styles_accountsContainer__afGvT\",\"tabsContainer\":\"styles_tabsContainer__3lRnx\",\"accountSelector\":\"styles_accountSelector__2wr59\",\"selected\":\"styles_selected__3CLPh\",\"accountLinks\":\"styles_accountLinks__1s_IK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1nyJs\",\"paperlessContainer\":\"styles_paperlessContainer__D5uYS\",\"buttonSettings\":\"styles_buttonSettings__Scqmg\",\"paperlessIcon\":\"styles_paperlessIcon__2ka6h\",\"paperless\":\"styles_paperless__2u181\",\"paperlessLabel\":\"styles_paperlessLabel__131rl\",\"paperlessText\":\"styles_paperlessText__qDm-R\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"Transfer_container\":\"styles_Transfer_container__3QVO2\",\"Transfer_stepperButton\":\"styles_Transfer_stepperButton__1IJwZ\",\"InfoIcon_container\":\"styles_InfoIcon_container__15lwH\",\"Transfer_stepperContent\":\"styles_Transfer_stepperContent__2XoYi\",\"step_0\":\"styles_step_0__1Bmrt\",\"step_1\":\"styles_step_1__9vaWo\",\"step_2\":\"styles_step_2__3Ixac\",\"currentTime\":\"styles_currentTime__dzJmT\",\"print\":\"styles_print__WFwes\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"featuresContainer\":\"styles_featuresContainer__3q4ro\",\"featuresChildren\":\"styles_featuresChildren__3z1iU\",\"featuresChildrenShiftFull\":\"styles_featuresChildrenShiftFull__1CPuk\",\"featuresChildrenShiftMini\":\"styles_featuresChildrenShiftMini__1hmRc\",\"legalFooter\":\"styles_legalFooter__2505r\",\"legalFooterShiftFull\":\"styles_legalFooterShiftFull__diqxZ\",\"legalFooterShiftMini\":\"styles_legalFooterShiftMini__2A0sU\"};","/*\n*\n* Google Analytics Helpers\n*\n*/\n\n// sends stuff to GA\nexport function sendPageView(url) {\n window.ga('send', 'pageview', url);\n}\n\nexport function sendClickEvent(eventCategory, eventLabel) {\n window.ga('send', 'event', {\n eventAction: 'click',\n eventCategory,\n eventLabel,\n });\n}\n\n// removes IDs from URLs so that pages can be tracked as a whole and sensitive data is removed before getting recorded by GA\nexport function urlScrub(path) {\n if (path.match(/\\baccounts\\b\\/(\\d+)\\/\\btransactions/)) { // Transactions\n let accountRoute = path.replace(/^\\/accounts\\/(\\d+)\\/transactions/, '/accounts//transactions/');\n\n if (path.match(/\\btransfers\\/(\\d+)\\/edit/)) { // Transfers Edit\n accountRoute = accountRoute.replace(/transfers\\/(\\d+)\\/edit/, 'transfers//edit');\n }\n if (path.match(/\\bcontributions\\/(\\d+)\\/edit/)) { // Contributions Edit\n accountRoute = accountRoute.replace(/contributions\\/(\\d+)\\/edit/, 'contributions//edit');\n }\n else if (path.match(/\\bwithdrawals/)) { // Withdrawals\n accountRoute = accountRoute.replace(/withdrawals\\/groups\\/(\\d+)/, 'withdrawals/groups/');\n }\n else if (path.match(/\\bwithdrawal-requests/)) { // Withdrawal Requests (CSA)\n accountRoute = accountRoute.replace(/withdrawal-requests\\/groups\\/(\\d+)/, 'withdrawal-requests/groups/');\n }\n return accountRoute;\n }\n else if (path.match(/\\baccounts\\b\\/(\\d+)/)) { // Account Details\n return path.replace(/^\\/accounts\\/(\\d+)/, '/accounts/');\n }\n else if (path.match(/\\baccounts\\b\\/(\\d+)\\/\\binvestment-path/)) { // Account Details Investment Path\n return path.replace(/\\baccounts\\b\\/(\\d+)\\/\\binvestment-path/, '/accounts//investment-path');\n }\n\n else {\n return path;\n }\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"tableContainer\":\"styles_tableContainer__1LZSX\",\"startDate\":\"styles_startDate__2Ae3C\",\"endDate\":\"styles_endDate__2joF5\",\"exportButton\":\"styles_exportButton__2Rga-\",\"dateFilterContainer\":\"styles_dateFilterContainer__3SBrQ\",\"dateFilters\":\"styles_dateFilters__1tMwF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"tableContainer\":\"styles_tableContainer__hHDcL\",\"startDate\":\"styles_startDate__2LUjA\",\"endDate\":\"styles_endDate__3LED3\",\"exportButton\":\"styles_exportButton__KMTQe\",\"dateFilterContainer\":\"styles_dateFilterContainer__3QU2p\",\"dateFilters\":\"styles_dateFilters__1Kyf3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1uaeO\",\"phone\":\"styles_phone__33giz\",\"login\":\"styles_login__1SSgH\",\"toggle\":\"styles_toggle__2UpvX\",\"OtherOptions\":\"styles_OtherOptions__2l_XY\",\"authenticator\":\"styles_authenticator__2Mh4C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stepperContentContainer\":\"styles_stepperContentContainer__1vVjB\",\"stepperContent\":\"styles_stepperContent__2UiNt\",\"stepperStepsContainer\":\"styles_stepperStepsContainer__3u-io\",\"stepperButtons\":\"styles_stepperButtons__xA6uq\",\"stepperSteps\":\"styles_stepperSteps__cuXBu\",\"stepper\":\"styles_stepper__25S-M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3lZ9g\",\"optionChanges\":\"styles_optionChanges__WqoEk\",\"newOptionChanges\":\"styles_newOptionChanges__SeRKm\",\"optionChangeDetails\":\"styles_optionChangeDetails__2A5KW\",\"accountInfo\":\"styles_accountInfo__2MckR\",\"pageNav\":\"styles_pageNav__1LeDu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"Transfer_destinationRow\":\"styles_Transfer_destinationRow__1H_mX\",\"Transfer_numberInput\":\"styles_Transfer_numberInput__H7kkr\",\"iconPlaceholder\":\"styles_iconPlaceholder__3y3pO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"addAccountIcon\":\"styles_addAccountIcon__1J0hY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"button\":\"styles_button__2AN_C\",\"mainText\":\"styles_mainText__1qZ3p\",\"supportText\":\"styles_supportText__3xc-V\",\"header\":\"styles_header__3vLeg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__1WY_w\",\"closeIcon\":\"styles_closeIcon__3H4qu\",\"learnMoreInfo\":\"styles_learnMoreInfo__1qRm4\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__3jGyI\",\"levelSelectionContainer\":\"styles_levelSelectionContainer__1DW07\",\"review\":\"styles_review__eSa5G\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"questionAndAnswer\":\"styles_questionAndAnswer__1rH5r\",\"helpText\":\"styles_helpText__2B0of\",\"rsaQuestionsButton\":\"styles_rsaQuestionsButton__3eZzw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"benContactForm\":\"styles_benContactForm__3SOR9\",\"form\":\"styles_form__3GY5a\",\"readOnlyAddress\":\"styles_readOnlyAddress__1ofOw\",\"titleContainer\":\"styles_titleContainer__383Qk\",\"tabs\":\"styles_tabs__QSyH7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transaction_container\":\"styles_Transaction_container__1772Z\",\"transactionNavigation\":\"styles_transactionNavigation__2Mg8W\",\"transactionTitle\":\"styles_transactionTitle__2a-mi\",\"transactionTableWrapper\":\"styles_transactionTableWrapper__3rKAX\",\"transactionTable\":\"styles_transactionTable__3EFCA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"optionDetails\":\"styles_optionDetails__n5Pxo\",\"option\":\"styles_option__3jJKE\",\"optionName\":\"styles_optionName__3y6UK\",\"remainingOptions\":\"styles_remainingOptions__1IoKl\",\"optionDetailsContainer\":\"styles_optionDetailsContainer__3mDI7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transaction_container\":\"styles_Transaction_container__2fV5r\",\"transactionNavigation\":\"styles_transactionNavigation__2CvET\",\"transactionTitle\":\"styles_transactionTitle__EHO6E\",\"transactionTableWrapper\":\"styles_transactionTableWrapper__18Ycl\",\"transactionTable\":\"styles_transactionTable__1IShm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__2uF6L\",\"divider\":\"styles_divider__2u5nE\",\"closeIcon\":\"styles_closeIcon__SdO4T\",\"learnMoreInfo\":\"styles_learnMoreInfo__2uB93\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__2zGcF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stepperContentContainer\":\"styles_stepperContentContainer__1r7Dn\",\"stepperContent\":\"styles_stepperContent__2wqcX\",\"stepperSteps\":\"styles_stepperSteps__2rtXj\",\"stepper\":\"styles_stepper__oSLPe\",\"stepperButtons\":\"styles_stepperButtons__2yuVd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__3nZx8\",\"divider\":\"styles_divider__2hm_L\",\"closeIcon\":\"styles_closeIcon__dyrVi\",\"learnMoreInfo\":\"styles_learnMoreInfo__1ZCAo\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__3wB-B\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"transfersContainer\":\"styles_transfersContainer__24Hnq\",\"pageNav\":\"styles_pageNav__2cDvK\",\"detailsContainer\":\"styles_detailsContainer__3S9fZ\",\"children\":\"styles_children__1t51q\",\"learnMoreButton\":\"styles_learnMoreButton__2QXXz\",\"loading\":\"styles_loading__AMuie\",\"scheduledTable\":\"styles_scheduledTable__GDRNT\",\"historyTable\":\"styles_historyTable__3Qy32\",\"scheduledContainer\":\"styles_scheduledContainer__RXNC6\",\"historyContainer\":\"styles_historyContainer__1tjHE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"addBankModalContainer\":\"styles_addBankModalContainer__Ust-u\",\"AddBank_formAndCheckContainer\":\"styles_AddBank_formAndCheckContainer__2_T7l\",\"AddBank_accountForm\":\"styles_AddBank_accountForm__2b24Z\",\"checkImage\":\"styles_checkImage__VkSjb\",\"dialogActions\":\"styles_dialogActions__37J-Z\",\"AddBank_requiredLanguage\":\"styles_AddBank_requiredLanguage__2VGlB\",\"AddBank_checkImage\":\"styles_AddBank_checkImage__1y004\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__181wQ\",\"contributions\":\"styles_contributions__NRkx-\",\"breadcrumbs\":\"styles_breadcrumbs__1Z-0-\",\"accountDetails\":\"styles_accountDetails__2SLVm\",\"contributionsTabs\":\"styles_contributionsTabs__3cBcE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"stepperButton\":\"styles_stepperButton__1wLR3\",\"stepperButtons\":\"styles_stepperButtons__2yk4m\",\"radioButtonsInfoIcon\":\"styles_radioButtonsInfoIcon__2wiuo\",\"radioButtonsLabelText\":\"styles_radioButtonsLabelText__3S7a4\",\"radioButtonsLabel\":\"styles_radioButtonsLabel__2LmHs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__WHlrl\",\"newWithdrawals\":\"styles_newWithdrawals__dNW3R\",\"pageNav\":\"styles_pageNav__odNPK\",\"tradeCutoffWarning\":\"styles_tradeCutoffWarning__3jC9T\",\"withdrawalDetails\":\"styles_withdrawalDetails__iuzC9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"step1Container\":\"styles_step1Container__1IfbL\",\"radioContainer\":\"styles_radioContainer__32gBz\",\"amountAccordion\":\"styles_amountAccordion__2I5Ab\",\"stepperButtons\":\"styles_stepperButtons__2WsyR\",\"partialBalanceMessage\":\"styles_partialBalanceMessage__VHOgr\",\"datepickerContainer\":\"styles_datepickerContainer__1G8L1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"divider\":\"styles_divider__IHmkZ\",\"closeIcon\":\"styles_closeIcon__19d-Z\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__3R7Nu\",\"learnMoreInfo\":\"styles_learnMoreInfo__2PTOd\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__BiSDP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"learnMoreInfoContainer\":\"styles_learnMoreInfoContainer__2uqR4\",\"divider\":\"styles_divider__4JYad\",\"closeIcon\":\"styles_closeIcon__AQ_Wm\",\"learnMoreInfo\":\"styles_learnMoreInfo__iKZbf\",\"learnMoreInfoHeader\":\"styles_learnMoreInfoHeader__1nGo7\",\"learnMoreInfoText\":\"styles_learnMoreInfoText__1EV7t\",\"learnMoreInfoText_footer\":\"styles_learnMoreInfoText_footer__dtf-O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__9H6Dh\",\"title\":\"styles_title__3a5Nc\",\"sectionsContainer\":\"styles_sectionsContainer__1THha\",\"section\":\"styles_section__2BQ2H\",\"sectionItem\":\"styles_sectionItem__30SPH\",\"sectionTitle\":\"styles_sectionTitle__lBzik\",\"sectionSubTitle\":\"styles_sectionSubTitle__FRQAg\",\"emptySubtitle\":\"styles_emptySubtitle__3TByw\",\"titleInfoContainer\":\"styles_titleInfoContainer__6Z2AK\",\"infoColumn\":\"styles_infoColumn__3jbYU\",\"learnMoreButton\":\"styles_learnMoreButton__1GAc1\",\"infoIconByTitle\":\"styles_infoIconByTitle__LO1eF\",\"detailsRow\":\"styles_detailsRow__1bDw7\",\"navButtons\":\"styles_navButtons__1KTMB\",\"copyAddress\":\"styles_copyAddress__1TIIl\",\"aboveButtonsMessage\":\"styles_aboveButtonsMessage__jzHCQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2Prmw\",\"body\":\"styles_body__1HLap\",\"logo\":\"styles_logo__2lDHZ\",\"instructions\":\"styles_instructions__3FWGd\",\"attemptWarning\":\"styles_attemptWarning__2lFkr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"Transfer_termsCheckbox\":\"styles_Transfer_termsCheckbox__19ahU\",\"Transfer_reviewCloseAccount\":\"styles_Transfer_reviewCloseAccount__1ZFDl\",\"Transfer_reviewAccountNumber\":\"styles_Transfer_reviewAccountNumber__1x8uN\",\"Transfer_reviewBeneficiaryName\":\"styles_Transfer_reviewBeneficiaryName__38oGB\",\"Transfer_reviewAccountType\":\"styles_Transfer_reviewAccountType__LTJv0\",\"Transfer_reviewAccountOption\":\"styles_Transfer_reviewAccountOption__u_Vny\",\"Transfer_reviewOptionChange\":\"styles_Transfer_reviewOptionChange__2jFfn\",\"Transfer_reviewAmount\":\"styles_Transfer_reviewAmount__2x39V\",\"Transfer_reviewTotalAmount\":\"styles_Transfer_reviewTotalAmount__2CwaS\",\"TransferFrom_reviewContainer\":\"styles_TransferFrom_reviewContainer__17obZ\",\"TransferFrom_reviewContainerCompact\":\"styles_TransferFrom_reviewContainerCompact__2IBF-\",\"TransferTo_reviewContainer\":\"styles_TransferTo_reviewContainer__OkHER\",\"TransferTo_reviewContainerCompact\":\"styles_TransferTo_reviewContainerCompact__KB-Pk\",\"Transfer_detailsTitle\":\"styles_Transfer_detailsTitle__sj9VS\",\"Transfer_detail\":\"styles_Transfer_detail__Wh26r\",\"mobile\":\"styles_mobile__3S373\",\"Transfer_termsAndConditions\":\"styles_Transfer_termsAndConditions__1S46k\",\"desktop\":\"styles_desktop__5i5ZD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__bPeBO\",\"divider\":\"styles_divider__36FtF\",\"payrollAccounts\":\"styles_payrollAccounts__AIf3v\",\"accountNumberHeader\":\"styles_accountNumberHeader__3CpvX\",\"beneficiaryNameHeader\":\"styles_beneficiaryNameHeader__27mK9\",\"inputsHeader\":\"styles_inputsHeader__2GsD1\",\"accountNumber\":\"styles_accountNumber__16NDT\",\"beneficiaryName\":\"styles_beneficiaryName__2zoEV\",\"inputs\":\"styles_inputs__3DCU_\",\"differentAccountButton\":\"styles_differentAccountButton__3L9AS\",\"totalText\":\"styles_totalText__3u8E2\",\"totalAmount\":\"styles_totalAmount__3QnGz\",\"employeeNameSection\":\"styles_employeeNameSection__35X7_\",\"employerInput\":\"styles_employerInput__16poe\",\"payPeriodContributionInput\":\"styles_payPeriodContributionInput___lN4o\",\"stateInput\":\"styles_stateInput__u1YsC\",\"employeeSection\":\"styles_employeeSection__1Xsi_\",\"headers\":\"styles_headers__18lCE\",\"payrollAccountRow\":\"styles_payrollAccountRow__3Ks8J\",\"totalRow\":\"styles_totalRow__3jKAC\",\"currentAllocationText\":\"styles_currentAllocationText__UIulz\",\"reviewEmployee\":\"styles_reviewEmployee__3ezWP\",\"reviewEmployer\":\"styles_reviewEmployer__3ae3B\",\"reviewAmount\":\"styles_reviewAmount__3iLP-\",\"reviewRouting\":\"styles_reviewRouting__3FLVg\",\"reviewBankAccount\":\"styles_reviewBankAccount__3q03T\",\"reviewBankAccountType\":\"styles_reviewBankAccountType__Mj5Xo\",\"reviewDetails\":\"styles_reviewDetails__2DnQ9\",\"accountListLabels\":\"styles_accountListLabels__3Pqr-\",\"topLabel\":\"styles_topLabel__1ey-F\",\"reviewDetail\":\"styles_reviewDetail__vQs9l\",\"employeeName\":\"styles_employeeName__3t3gc\",\"typeInputButton\":\"styles_typeInputButton__3gDZb\",\"checkbox\":\"styles_checkbox__3BNXO\",\"checkBoxLabel\":\"styles_checkBoxLabel__3XZUw\",\"termsButton\":\"styles_termsButton__3bee2\",\"buttonsContainer\":\"styles_buttonsContainer__23RzS\",\"instructionsButton\":\"styles_instructionsButton__tQ2Eo\",\"importantText\":\"styles_importantText__2wy-P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"newAccountSubLanguage\":\"styles_newAccountSubLanguage__2Y7N9\",\"buttons\":\"styles_buttons__q30xs\",\"passwordRequirements\":\"styles_passwordRequirements__3NIss\",\"termsAndConditions\":\"styles_termsAndConditions__1-mmo\",\"termsAndConditionsContainer\":\"styles_termsAndConditionsContainer__2g0t2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Transaction_container\":\"styles_Transaction_container__Q67qw\",\"transactionNavigation\":\"styles_transactionNavigation__scERe\",\"transactionTitle\":\"styles_transactionTitle__2b-9v\",\"transactionTableWrapper\":\"styles_transactionTableWrapper__3tG5G\",\"transactionTable\":\"styles_transactionTable__29vX6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"transactionButton\":\"styles_transactionButton__gnptE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"bannerContainer\":\"styles_bannerContainer__3ryqu\",\"imageContainer\":\"styles_imageContainer__2s0os\",\"bannerImage\":\"styles_bannerImage__2nRkd\",\"closeButton\":\"styles_closeButton__1yspb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"occasionSelectionContainer\":\"styles_occasionSelectionContainer__1ZW05\",\"occasionSelectionBday\":\"styles_occasionSelectionBday__2zrND\",\"occasionSelectionAnnualEvent\":\"styles_occasionSelectionAnnualEvent__3gZad\",\"annualEventDateContainer\":\"styles_annualEventDateContainer__1-FBo\",\"radioButtonsLabelText\":\"styles_radioButtonsLabelText__19Eeb\",\"radioButtonLabel\":\"styles_radioButtonLabel__1-LRv\",\"accounts\":\"styles_accounts__2VKpN\",\"amount\":\"styles_amount__oe4MF\",\"birthdayContainer\":\"styles_birthdayContainer__1pm4P\",\"endDateContainer\":\"styles_endDateContainer__2Zivd\",\"removeAccount\":\"styles_removeAccount__2JPwA\",\"hideIcon\":\"styles_hideIcon__3yVCa\",\"step0Container\":\"styles_step0Container__2iNJQ\",\"step0Birthday\":\"styles_step0Birthday__5loS4\",\"step0AnnualEvent\":\"styles_step0AnnualEvent__8-amR\",\"currencyInput\":\"styles_currencyInput__1nPNb\",\"errors\":\"styles_errors__2ysEM\",\"totalAndErrorsContainer\":\"styles_totalAndErrorsContainer__H2cWq\",\"detail\":\"styles_detail__Kdk6E\",\"totalAmountStep0\":\"styles_totalAmountStep0__23Lb5\",\"totalAmountStep2\":\"styles_totalAmountStep2__vZ2dZ\",\"birthday\":\"styles_birthday__lDJYW\",\"birthdayLabel\":\"styles_birthdayLabel__1z41A\",\"bankAccount\":\"styles_bankAccount__lFgE_\",\"reviewContainer\":\"styles_reviewContainer__3NVH1\",\"reviewAccountNumber\":\"styles_reviewAccountNumber__1A-kQ\",\"reviewAmount\":\"styles_reviewAmount__pArYP\",\"reviewBankAccount\":\"styles_reviewBankAccount__3xu8N\",\"reviewBeneficiaryName\":\"styles_reviewBeneficiaryName__3fEp8\",\"reviewEndDate\":\"styles_reviewEndDate__jEamN\",\"reviewNextDate\":\"styles_reviewNextDate__1TgP5\",\"detailsTitle\":\"styles_detailsTitle__2GWub\",\"termsContainer\":\"styles_termsContainer__FIQDD\",\"terms\":\"styles_terms__n7TbC\",\"checkbox\":\"styles_checkbox__1rS9s\",\"icon\":\"styles_icon__18vfe\",\"currentTime\":\"styles_currentTime__xM0HL\",\"print\":\"styles_print__2FtH5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"optionDetails\":\"styles_optionDetails__2rFV9\",\"zeroOptionChangesRemaining\":\"styles_zeroOptionChangesRemaining__UfwSm\",\"detailsTitle\":\"styles_detailsTitle__20yWU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"reviewContainer\":\"styles_reviewContainer__17qxg\",\"recipient\":\"styles_recipient__3zUji\",\"amount\":\"styles_amount__2JZsP\",\"fullBalanceNote\":\"styles_fullBalanceNote__2YAMc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1A3mQ\",\"termsContainer\":\"styles_termsContainer__cNNx6\",\"stepperButtons\":\"styles_stepperButtons__3GVGs\",\"form\":\"styles_form__GFrRi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1KqrK\",\"timestamp\":\"styles_timestamp__2OTMN\",\"stepperButtons\":\"styles_stepperButtons__37i9h\",\"createdDate\":\"styles_createdDate__3C4Ia\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"validateDepositsText\":\"styles_validateDepositsText__2EpMK\",\"amountInputs\":\"styles_amountInputs__ZtTiC\",\"amountInput\":\"styles_amountInput__1Mie5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__LfLLF\",\"headerContainer\":\"styles_headerContainer__1FLCZ\",\"stepperButtons\":\"styles_stepperButtons__2S0OC\",\"printButton\":\"styles_printButton__U2F0C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2fWTI\",\"formContainer\":\"styles_formContainer__25rl9\",\"buttons\":\"styles_buttons__LmpHV\",\"support\":\"styles_support__37jgx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"bankHoldLanguage\":\"styles_bankHoldLanguage__2ykXg\",\"noAccounts_container\":\"styles_noAccounts_container__YEU9S\",\"noAccounts_disclaimer\":\"styles_noAccounts_disclaimer__Zs0X_\",\"noAccounts_header\":\"styles_noAccounts_header__11YzF\",\"buttons_noAccounts\":\"styles_buttons_noAccounts__3RXF2\",\"bankAccountsSummaryContainer\":\"styles_bankAccountsSummaryContainer__3aHm3\",\"accountOwnerContainer\":\"styles_accountOwnerContainer__2VKdD\",\"addBankButtonContainer_hasAccounts\":\"styles_addBankButtonContainer_hasAccounts__3TvRm\",\"learnMoreButton_hasAccounts\":\"styles_learnMoreButton_hasAccounts__12GXH\",\"buttonsContainer_noAccounts\":\"styles_buttonsContainer_noAccounts__3gU36\",\"bankDetailsContainer\":\"styles_bankDetailsContainer__3nNLW\",\"icon\":\"styles_icon__1SzJy\",\"bankDetails\":\"styles_bankDetails__12PF1\",\"lpoaSwitch\":\"styles_lpoaSwitch__35U4F\",\"bankName\":\"styles_bankName__2d7qw\",\"bankNameSmall\":\"styles_bankNameSmall__1nner\",\"nickName\":\"styles_nickName__3n8bq\",\"bankAccountType\":\"styles_bankAccountType__3WZFL\",\"bankAccountTypeSmall\":\"styles_bankAccountTypeSmall__3G3LN\",\"validatedStatus\":\"styles_validatedStatus__17Pds\",\"validatedStatusSmall\":\"styles_validatedStatusSmall__MO0ne\",\"notValidatedStatus\":\"styles_notValidatedStatus__MoihX\",\"notValidatedStatusSmall\":\"styles_notValidatedStatusSmall__12UYH\",\"bankHold\":\"styles_bankHold__3Vd3P\",\"accessCardReqsContainer\":\"styles_accessCardReqsContainer__CxjUl\",\"accessCardReqs\":\"styles_accessCardReqs__2Nx9n\",\"accessCardLink\":\"styles_accessCardLink__3TjSQ\",\"paperContainer\":\"styles_paperContainer__28ibA\",\"paperTitle\":\"styles_paperTitle__2s89Q\",\"paperBodyContainer\":\"styles_paperBodyContainer__1lVrZ\",\"paperBodySection\":\"styles_paperBodySection__C0aKU\",\"paperTopLabel\":\"styles_paperTopLabel__30mWZ\",\"labelTILE\":\"styles_labelTILE__3fW4Z\",\"paperBottomLabel\":\"styles_paperBottomLabel__CIfRA\",\"paperButtons\":\"styles_paperButtons__i7ltv\",\"paperDivider\":\"styles_paperDivider__2nD8Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"manageGifting\":\"styles_manageGifting__3Phr7\",\"tableTitle\":\"styles_tableTitle__3nVFd\",\"buttons\":\"styles_buttons__3a_o2\",\"picture\":\"styles_picture__3pxki\",\"customText\":\"styles_customText__3_vSa\",\"beneficiary\":\"styles_beneficiary__YLlG-\",\"url\":\"styles_url__2eukm\",\"ao\":\"styles_ao__sbi2I\",\"pageviewscode\":\"styles_pageviewscode__2fDNq\",\"acct\":\"styles_acct__a4SWi\",\"social\":\"styles_social__2SoLu\",\"history\":\"styles_history__2yhcR\",\"label\":\"styles_label__2YpQN\",\"labelTILE\":\"styles_labelTILE__VNCmI\",\"data\":\"styles_data__2KsbV\",\"dataTILE\":\"styles_dataTILE__1m89t\",\"acctType\":\"styles_acctType__DWjf2\",\"messageLength\":\"styles_messageLength__3z1NN\",\"giftingLink\":\"styles_giftingLink__NuhSW\",\"removeButton\":\"styles_removeButton__3zPWn\",\"acctSettings\":\"styles_acctSettings__mT-Ky\",\"hideLastName\":\"styles_hideLastName__2z9n5\",\"hideLastNameInfo\":\"styles_hideLastNameInfo__2hGKp\",\"hideLastNameLabel\":\"styles_hideLastNameLabel__3EohO\",\"hideLastNameStatus\":\"styles_hideLastNameStatus__1nC6Y\",\"hideLastNameSwitch\":\"styles_hideLastNameSwitch__A9UJX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"styles_error__3-qfr\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"step0Container\":\"styles_step0Container__2RJrM\",\"accountContainer\":\"styles_accountContainer__1g2PQ\",\"amount\":\"styles_amount__est-9\",\"bankAccount\":\"styles_bankAccount__3HWT9\",\"errorsContainer\":\"styles_errorsContainer__Csjsb\",\"account\":\"styles_account__1APi2\",\"accountLabel\":\"styles_accountLabel__1kOb8\",\"currencyInput\":\"styles_currencyInput__10_ct\",\"noBankAccount\":\"styles_noBankAccount__2UZg8\",\"addButton\":\"styles_addButton__1OseC\",\"step1Container\":\"styles_step1Container__32Xah\",\"step1RadioButtons\":\"styles_step1RadioButtons__KBK6v\",\"step1Date1\":\"styles_step1Date1__1woKO\",\"step1Date2\":\"styles_step1Date2__2sFWu\",\"endDate\":\"styles_endDate__f7roR\",\"reviewContainer\":\"styles_reviewContainer__ef8cG\",\"reviewInfoAccountNum\":\"styles_reviewInfoAccountNum__3E_WN\",\"reviewInfoBen\":\"styles_reviewInfoBen__3czqw\",\"reviewInfoSched\":\"styles_reviewInfoSched__3gso_\",\"reviewInfoNextDate\":\"styles_reviewInfoNextDate__2b6d-\",\"reviewInfoEndDate\":\"styles_reviewInfoEndDate__2U3rc\",\"reviewInfoAmount\":\"styles_reviewInfoAmount__21wdV\",\"reviewInfoBankAccount\":\"styles_reviewInfoBankAccount__3sBwq\",\"detailsTitle\":\"styles_detailsTitle__3ON5H\",\"termsContainer\":\"styles_termsContainer__12FzG\",\"terms\":\"styles_terms__1761O\",\"checkbox\":\"styles_checkbox__2e2eU\",\"printContainer\":\"styles_printContainer__20HMk\",\"currentTime\":\"styles_currentTime__1m4NU\",\"print\":\"styles_print__2Z6Sn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3PZoH\",\"title\":\"styles_title__3tOey\",\"titleWithInfoIcon\":\"styles_titleWithInfoIcon__17lW8\",\"contentLighter\":\"styles_contentLighter__3AxMg\",\"row\":\"styles_row__2f8k5\",\"col\":\"styles_col__3JlzF\",\"aoName\":\"styles_aoName__iXdFk\",\"logo\":\"styles_logo__1Qyu4\",\"passwordRequirements\":\"styles_passwordRequirements__vv68s\",\"addressType\":\"styles_addressType__Hl5E4\",\"addressVerLine\":\"styles_addressVerLine__NoIQq\",\"addressStreet1\":\"styles_addressStreet1__M5DNG\",\"addressStreet2\":\"styles_addressStreet2__2w6Mv\",\"addressStreet3\":\"styles_addressStreet3__1cTgx\",\"addressCity\":\"styles_addressCity__11kyT\",\"addressStatePostal\":\"styles_addressStatePostal__1V0OY\",\"addressCountry\":\"styles_addressCountry__2Hg8F\",\"addressContainer\":\"styles_addressContainer__105s5\",\"addressComma\":\"styles_addressComma__1ojZE\",\"phoneType\":\"styles_phoneType__1EOcK\",\"phoneVerLine\":\"styles_phoneVerLine__2zTRY\",\"phoneNum\":\"styles_phoneNum__3dYnu\",\"phoneContainer\":\"styles_phoneContainer__3FWHv\",\"address\":\"styles_address___9WOm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"step0Container\":\"styles_step0Container__23Dme\",\"step0AccountsContainer\":\"styles_step0AccountsContainer__35tVt\",\"accountListDropdown\":\"styles_accountListDropdown__1V7rX\",\"amountInput\":\"styles_amountInput__1P03x\",\"removeAccountIcon\":\"styles_removeAccountIcon__keLpO\",\"totalAndErrorsContainer\":\"styles_totalAndErrorsContainer__3Saem\",\"totalAmountStep0\":\"styles_totalAmountStep0__1lMPL\",\"step1Container\":\"styles_step1Container__jZMe8\",\"datePicker\":\"styles_datePicker__2dtbD\",\"bankAccount\":\"styles_bankAccount__2Mg7u\",\"bankMenu\":\"styles_bankMenu__1oR1e\",\"addBankIcon\":\"styles_addBankIcon__1CArW\",\"removeAccount\":\"styles_removeAccount__1exbQ\",\"reviewContainer\":\"styles_reviewContainer__y5aHS\",\"detailsTitle\":\"styles_detailsTitle__1O4h9\",\"reviewAccountNumber\":\"styles_reviewAccountNumber__3LVoX\",\"reviewBeneficiaryName\":\"styles_reviewBeneficiaryName__24CA6\",\"reviewBankAccount\":\"styles_reviewBankAccount__1YyLo\",\"reviewDate\":\"styles_reviewDate__3g6_Y\",\"reviewAmount\":\"styles_reviewAmount__2By-w\",\"totalAmountStep2\":\"styles_totalAmountStep2__1o8s_\",\"termsContainer\":\"styles_termsContainer__2KWeB\",\"terms\":\"styles_terms__ksbU0\",\"checkbox\":\"styles_checkbox__13a6R\",\"printContainer\":\"styles_printContainer__1S5hm\",\"currentTime\":\"styles_currentTime__2vHVa\",\"print\":\"styles_print__qI3ON\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__1Bmj2\",\"shrug\":\"styles_shrug__1e8um\",\"bounce\":\"styles_bounce__3RHdF\",\"message\":\"styles_message__3ZHs_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__YBhHS\",\"body\":\"styles_body__4uXbW\",\"logo\":\"styles_logo__AzPiX\",\"instructions\":\"styles_instructions__17Vag\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2-14p\",\"loadingContainer\":\"styles_loadingContainer__1SBO2\",\"message\":\"styles_message__17kdV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2BmdB\",\"content\":\"styles_content__1DNP9\",\"navButtons\":\"styles_navButtons__3IFv3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3NGQY\",\"content\":\"styles_content__2J3OE\",\"navButtons\":\"styles_navButtons__2ytc4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"promoCodeInput\":\"styles_promoCodeInput__3v8X3\",\"successMessage\":\"styles_successMessage__Tb5Lj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"search\":\"styles_search__uJ6FE\",\"searchMenu\":\"styles_searchMenu__2S58v\",\"show\":\"styles_show__3DsDr\",\"searchOverlayShow\":\"styles_searchOverlayShow__18ObN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"readOnlyAddress\":\"styles_readOnlyAddress__1fC_E\",\"titleContainer\":\"styles_titleContainer__2GGLj\",\"tabs\":\"styles_tabs__3VNK4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"closeIcon\":\"styles_closeIcon__1PjzH\",\"termsContainer\":\"styles_termsContainer__36Omv\",\"terms\":\"styles_terms__1Ai0g\",\"termsHeader\":\"styles_termsHeader__nfhS8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"termsConditions_container\":\"styles_termsConditions_container__xatva\",\"termsConditions_modalHeader\":\"styles_termsConditions_modalHeader__XnwI7\",\"termsConditions_modalSubheader\":\"styles_termsConditions_modalSubheader__NnqRK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"instructionsContainer\":\"styles_instructionsContainer__3wCAX\",\"divider\":\"styles_divider__1Pjws\",\"closeIcon\":\"styles_closeIcon__2dnD5\",\"instructionsHeader\":\"styles_instructionsHeader__1ZWuC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"termsContainer\":\"styles_termsContainer__2kogJ\",\"showTerms\":\"styles_showTerms__3gkG4\",\"hideTerms\":\"styles_hideTerms__3LJpv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__RbSwv\",\"body\":\"styles_body__21-ZA\",\"logo\":\"styles_logo__ODuhn\",\"instructions\":\"styles_instructions__39WJ2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2qFU-\",\"headerContainer\":\"styles_headerContainer__ri9on\",\"stepperButtons\":\"styles_stepperButtons__342Mc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2rpng\",\"stepperButtons\":\"styles_stepperButtons__3xEoZ\",\"printButton\":\"styles_printButton__1fexM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2OfEh\",\"stepperContentContainer\":\"styles_stepperContentContainer__1a6m-\",\"deleteButton\":\"styles_deleteButton__10wSz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"preparingModal\":\"styles_preparingModal__vKm_a\",\"preparingMessage\":\"styles_preparingMessage__1yhUh\",\"preparingError\":\"styles_preparingError__1_3jL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"logo\":\"styles_logo__2T0sw\",\"container\":\"styles_container__2eevl\",\"msg\":\"styles_msg__3kmuS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"accountOwnerHeader\":\"styles_accountOwnerHeader__kNRPO\",\"beneficiaryHeader\":\"styles_beneficiaryHeader__3tW_f\",\"investmentOptionHeader\":\"styles_investmentOptionHeader__3Kw83\",\"fieldContainer\":\"styles_fieldContainer__24XQm\",\"investmentOption\":\"styles_investmentOption__332N9\",\"aoNameContainer\":\"styles_aoNameContainer__3c0xF\",\"beneNameContainer\":\"styles_beneNameContainer__2xOYx\",\"reviewStepDivider\":\"styles_reviewStepDivider__1HvcG\",\"stepperButtons\":\"styles_stepperButtons__LbZkH\",\"headerContainer\":\"styles_headerContainer__3zMzq\",\"investmentOptionContainer\":\"styles_investmentOptionContainer__1caMd\",\"accountOwnerContainer\":\"styles_accountOwnerContainer__vBrf8\",\"beneficiaryContainer\":\"styles_beneficiaryContainer__1Os69\",\"promoCode\":\"styles_promoCode__2dlTA\",\"container\":\"styles_container__2hqIM\",\"accountOwnerInfo\":\"styles_accountOwnerInfo__DUbiK\",\"accountOwnerAddress\":\"styles_accountOwnerAddress__3BMaM\",\"beneficiaryInfo\":\"styles_beneficiaryInfo__3zh36\",\"beneficiaryAddress\":\"styles_beneficiaryAddress__3xq66\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"totalAmtAndAddAcctBtn\":\"styles_totalAmtAndAddAcctBtn__3G24G\",\"totalAmtAndAddAcctBtnTILE\":\"styles_totalAmtAndAddAcctBtnTILE__1wb5o\",\"label\":\"styles_label__26f-o\",\"accountsSummaryContainer\":\"styles_accountsSummaryContainer__2pwPQ\",\"accountsSummaryContainerTILE\":\"styles_accountsSummaryContainerTILE__1HqfE\",\"beneficiaryAccountTypeContainer\":\"styles_beneficiaryAccountTypeContainer__1Z91e\",\"accountType\":\"styles_accountType__1_zCy\",\"accountTypeInterestedParty\":\"styles_accountTypeInterestedParty__2btYi\",\"closedAccount\":\"styles_closedAccount__1LS_Z\",\"accountGroupInfoContainer\":\"styles_accountGroupInfoContainer__oytcb\",\"beneNameAndTotalContainer\":\"styles_beneNameAndTotalContainer__1KEQz\",\"scholarshipEntity\":\"styles_scholarshipEntity__1UOvX\",\"totalContainer\":\"styles_totalContainer__1_AmK\",\"marketDateContainer\":\"styles_marketDateContainer__2chrc\",\"accountRow\":\"styles_accountRow__2JLpM\",\"accountInfoContainer\":\"styles_accountInfoContainer__1NgS_\",\"accountInfoContainerTILE\":\"styles_accountInfoContainerTILE__e8ck3\",\"accountNumberAndOptionContainer\":\"styles_accountNumberAndOptionContainer__2YOl-\",\"accountValueContainer\":\"styles_accountValueContainer__NdFl-\",\"transactionLinks\":\"styles_transactionLinks__2_xBh\",\"optionName\":\"styles_optionName__unvVJ\",\"totalValue\":\"styles_totalValue__1nc_4\",\"personalRateReturnContainer\":\"styles_personalRateReturnContainer__2pvWF\",\"accountIsClosed\":\"styles_accountIsClosed__1oRpb\",\"accountBorder\":\"styles_accountBorder__2Z7gX\",\"age\":\"styles_age__1SJlF\",\"data\":\"styles_data__3zktO\",\"negativeReturn\":\"styles_negativeReturn__3HlXG\",\"positiveReturn\":\"styles_positiveReturn__1LCwo\",\"closedAccountBanner\":\"styles_closedAccountBanner__1dHYy\",\"buttonAndAcctSummContainer\":\"styles_buttonAndAcctSummContainer__xYLSD\",\"filterAndSearch\":\"styles_filterAndSearch__3awog\",\"filter\":\"styles_filter__30HCE\",\"search\":\"styles_search__X3tW3\",\"dateOpened\":\"styles_dateOpened__2Fbjh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2kT6S\",\"accountDetailsContainer\":\"styles_accountDetailsContainer__1BT_c\",\"accountDetailsLeft\":\"styles_accountDetailsLeft__34ThT\",\"accountDetailsRight\":\"styles_accountDetailsRight__2LZCy\",\"closedAccountBanner\":\"styles_closedAccountBanner__3CY2b\",\"accountDetailsCard\":\"styles_accountDetailsCard__2lRnQ\",\"upcomingTransactionsCard\":\"styles_upcomingTransactionsCard__2fyR0\",\"transactionsCard\":\"styles_transactionsCard__1_1mx\",\"accountType\":\"styles_accountType__1RbPu\",\"accountTypeInterestedParty\":\"styles_accountTypeInterestedParty__oDIra\",\"combinedDetails\":\"styles_combinedDetails__ME2w1\",\"beneContact\":\"styles_beneContact__U8aZq\",\"valueDetails\":\"styles_valueDetails__NsbEZ\",\"transactionBtns\":\"styles_transactionBtns__3wwWD\",\"successorsContainer\":\"styles_successorsContainer__3QPNj\",\"currentAllocation\":\"styles_currentAllocation__7y2Ud\",\"topLabel\":\"styles_topLabel__2twhc\",\"beneficiaryName\":\"styles_beneficiaryName__29cAl\",\"accountNumber\":\"styles_accountNumber__1Q0tc\",\"balance\":\"styles_balance__3vLpZ\",\"pprPercentage\":\"styles_pprPercentage__YRbJM\",\"option\":\"styles_option__4owZX\",\"optionChangesRemaining\":\"styles_optionChangesRemaining__1g2kn\",\"openedDate\":\"styles_openedDate__1cNya\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"paperContainer\":\"styles_paperContainer__ASfEn\",\"paperTitle\":\"styles_paperTitle__191_E\",\"dashRow\":\"styles_dashRow__FOCrM\",\"beneficiary\":\"styles_beneficiary__1NYtT\",\"code\":\"styles_code__2A85n\",\"acct\":\"styles_acct__A4GEp\",\"status\":\"styles_status__1n8L1\",\"hideName\":\"styles_hideName__3KuDQ\",\"manage\":\"styles_manage__1VNMf\",\"label\":\"styles_label__3yiBd\",\"labelTILE\":\"styles_labelTILE__35hD8\",\"data\":\"styles_data__3LdUX\",\"dataTILE\":\"styles_dataTILE__3et1y\",\"acctType\":\"styles_acctType__3F9Jv\",\"learnMore\":\"styles_learnMore__etjaJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"banner\":\"styles_banner__B24-H\",\"bannerMessages\":\"styles_bannerMessages__NYQZN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons\":\"styles_buttons__2x3yK\",\"recaptcha\":\"styles_recaptcha__3uzBf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttons\":\"styles_buttons__F6tAx\",\"divPadding\":\"styles_divPadding__E24Nx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"buttons\":\"styles_buttons__2dD83\",\"recaptcha\":\"styles_recaptcha__11uRE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordRequirements\":\"styles_passwordRequirements__1Ep-r\",\"termsAndConditionsContainer\":\"styles_termsAndConditionsContainer__33kE6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"chartContainer\":\"styles_chartContainer__38FG5\",\"allocationChart\":\"styles_allocationChart__3Dytx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"emailAddress\":\"styles_emailAddress__36jdd\",\"titleContainer\":\"styles_titleContainer__2FEtB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3m1zm\",\"attemptWarning\":\"styles_attemptWarning__1BV_4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3cvB6\",\"stepperButtons\":\"styles_stepperButtons__3K4K6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"editCertificateText\":\"styles_editCertificateText__1bzfS\",\"fromNameInput\":\"styles_fromNameInput__2CL5n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__2ZZft\",\"row\":\"styles_row__1CbDC\",\"col\":\"styles_col__uSZza\",\"label\":\"styles_label__3g-wU\",\"toggle\":\"styles_toggle__3H1Us\",\"header\":\"styles_header__2kXas\",\"header_description\":\"styles_header_description__3kc4j\",\"dropDownStyle\":\"styles_dropDownStyle__3jAPQ\",\"eachDropDown\":\"styles_eachDropDown__2qSeX\",\"divider\":\"styles_divider__3R4A_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"container\":\"styles_container__3PaGt\",\"emailAddress\":\"styles_emailAddress__3o-1K\",\"containerCard\":\"styles_containerCard__16F5k\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__31JlS\",\"accountDetailsCard\":\"styles_accountDetailsCard__NwNgx\",\"loading\":\"styles_loading__1oxdt\",\"cardContentContainerNonProportional\":\"styles_cardContentContainerNonProportional__1xtS0\",\"cardContentContainerProportional\":\"styles_cardContentContainerProportional__6nmzC\",\"acctNum\":\"styles_acctNum__3r6by\",\"acctType\":\"styles_acctType__1z-hX\",\"accountOwner\":\"styles_accountOwner__b-A4c\",\"availableBalance\":\"styles_availableBalance__6YhIX\",\"beneficiary\":\"styles_beneficiary__3-ziW\",\"currentOpt\":\"styles_currentOpt__2sdYW\",\"marketVal\":\"styles_marketVal__XQrSW\",\"groupAvailableBalance\":\"styles_groupAvailableBalance__2gfxI\",\"detailsTitle\":\"styles_detailsTitle__xGEUQ\",\"availableBalanceInfo\":\"styles_availableBalanceInfo__1gAfd\",\"groupAvailableBalanceInfo\":\"styles_groupAvailableBalanceInfo__15bkD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"styles_error__3j18W\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"row\":\"styles_row__20NM9\",\"rowCentered\":\"styles_rowCentered__2qswM\",\"checkAddressContainer\":\"styles_checkAddressContainer__1k0DP\",\"checkMailingMessage\":\"styles_checkMailingMessage__1XYvu\",\"electronicRequestMessage\":\"styles_electronicRequestMessage__2uP6l\",\"schoolAddressContainer\":\"styles_schoolAddressContainer__3hVB-\",\"retainedSchoolAddress\":\"styles_retainedSchoolAddress__Wlulb\",\"paymentType\":\"styles_paymentType__4MlwV\",\"searchSchools\":\"styles_searchSchools__1lgWw\",\"ugmautma\":\"styles_ugmautma__3LUhQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"lpoaHeader\":\"styles_lpoaHeader__1QMs0\",\"button\":\"styles_button__3_Os1\",\"actionHeader\":\"styles_actionHeader__1T5Uw\",\"addEditHelpText\":\"styles_addEditHelpText__ef7v6\",\"actionButtons\":\"styles_actionButtons__3NbNT\",\"lpoaHeaderName\":\"styles_lpoaHeaderName__2jG3_\",\"borderTop\":\"styles_borderTop__1AsBt\",\"lpoaList\":\"styles_lpoaList__2Xg4_\",\"paperContainer\":\"styles_paperContainer__2EyHn\",\"paperTitle\":\"styles_paperTitle__1JxYn\",\"dashRow\":\"styles_dashRow__18wei\",\"checkbox\":\"styles_checkbox__2-Gki\",\"beneficiary\":\"styles_beneficiary__1RddG\",\"poaLevel\":\"styles_poaLevel__3IfR7\",\"fedTaxDocs\":\"styles_fedTaxDocs__4Pemj\",\"stateTaxDocs\":\"styles_stateTaxDocs__XiEbS\",\"label\":\"styles_label__71hJb\",\"labelTILE\":\"styles_labelTILE__2PLJn\",\"data\":\"styles_data__3fWMT\",\"dataTILE\":\"styles_dataTILE__3GAp5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#0072CF\",\"accent\":\"#41AD49\",\"accent2\":\"#EA7125\",\"error\":\"#E50000\",\"text\":\"rgba(0, 0, 0, 0.87)\",\"lightHeaderText\":\"rgba(0, 0, 0, 0.54)\",\"warn\":\"#fae500\",\"linkText\":\"#0072CF\",\"darkPrimary\":\"#0059B6\",\"lightGray\":\"#F5F5F4\",\"mobileWidth\":\"600px\",\"tabletWidth\":\"768px\",\"desktopWidth\":\"1024px\",\"balanceOverTimeContainer\":\"styles_balanceOverTimeContainer__3IgwI\",\"balanceByDateSection\":\"styles_balanceByDateSection__1GwJD\",\"overviewContainer\":\"styles_overviewContainer__3F3Rc\",\"balanceOverTimeSection\":\"styles_balanceOverTimeSection__PrNWP\",\"balanceOverTimeFullscreen\":\"styles_balanceOverTimeFullscreen__AfmnH\",\"graphDateFilterContainer\":\"styles_graphDateFilterContainer__ah67Z\",\"dateFilterChips\":\"styles_dateFilterChips__3Llop\",\"datePickers\":\"styles_datePickers__65DPX\",\"startDate\":\"styles_startDate__1zPEU\",\"endDate\":\"styles_endDate__2d1lV\",\"aboveGraphContainer\":\"styles_aboveGraphContainer__2CiJy\",\"dropdownContainer\":\"styles_dropdownContainer__jZCNI\",\"accountDropdown\":\"styles_accountDropdown__34osn\",\"savingsCalulatorButton\":\"styles_savingsCalulatorButton__2jhAK\",\"toolTipContainer\":\"styles_toolTipContainer__2n3ZP\",\"balanceGraphContainer\":\"styles_balanceGraphContainer__1Kkm-\",\"balanceGraphFullscreenContainer\":\"styles_balanceGraphFullscreenContainer__24f9C\",\"warningDisplayContainer\":\"styles_warningDisplayContainer__31MAK\",\"butterfly\":\"styles_butterfly__3Qqxl\",\"warningHeader\":\"styles_warningHeader__1M_lV\",\"warningText\":\"styles_warningText__Vjcce\"};"],"sourceRoot":""}