{"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/types/Subtotal.ts","../../../projects/coinflowlabs/src/lib/common/NSure.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/EventBus.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/common/card-form/cardEntryLayout.ts","../../../projects/coinflowlabs/src/lib/common/card-form/cardFormSkeleton.ts","../../../projects/coinflowlabs/src/lib/common/types/nftCartItem.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowProtectionSession.ts","../../../projects/coinflowlabs/src/lib/common/Forter.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowPurchaseProtectionHeaders.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowProtectionInit.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-form-v2.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n  Connection,\n  VersionedTransaction,\n  PublicKey,\n  Signer,\n  Transaction,\n} from '@solana/web3.js';\nimport {Currency, Subtotal} from './types/Subtotal';\nimport {GiftCardCartItem} from './types/giftCardCartItem';\nimport {nftCartItem} from './types/nftCartItem';\nimport {CryptoCartItem} from './types/cryptoCartItem';\nimport {MoneyTopUpCartItem} from './types/moneyTopUpCartItem';\n\nexport enum WithdrawCategory {\n  USER = 'user',\n  BUSINESS = 'business',\n  FIRST_PARTY = 'firstParty',\n}\n\nexport enum WithdrawSpeed {\n  ASAP = 'asap',\n  SAME_DAY = 'same_day',\n  STANDARD = 'standard',\n  CARD = 'card',\n  IBAN = 'iban',\n  PIX = 'pix',\n  EFT = 'eft',\n  VENMO = 'venmo',\n  PAYPAL = 'paypal',\n  WIRE = 'wire',\n  INTERAC = 'interac',\n}\n\nexport enum SettlementType {\n  Credits = 'Credits',\n  USDC = 'USDC',\n  Bank = 'Bank', // Deprecated, is the same as USDC\n}\n\n/**\n * Configuration for a single custom pay-in fee line item.\n * Pass via the `customPayInFees` field on `/checkout/link` or `/checkout/jwt-token`.\n */\nexport interface PurchaseCustomPayInFee {\n  lineItemLabel: string;\n  fee:\n    | {\n        isFixed: true;\n        percent: null;\n        currency: Currency;\n        cents: number;\n      }\n    | {\n        isFixed: false;\n        percent: number;\n        currency: null;\n        cents: null;\n      };\n}\n\n/**\n * Configuration for zero authorization flow - controls saved payment method visibility.\n */\nexport interface ZeroAuthSavedPaymentMethods {\n  disableSavedPaymentMethods: boolean;\n}\n\n/**\n * Configuration for zero authorization flow - verify existing card mode.\n * Shows the \"Verify Card\" flow for a specific saved card.\n * The card token will be validated to ensure it belongs to the current user's wallet.\n * If the card doesn't belong to the user, falls back to \"Add New Card\" view.\n */\nexport interface ZeroAuthVerifyCard {\n  cardToken: string;\n}\n\n/**\n * Configuration for zero authorization flow.\n * The presence of this object indicates the checkout is in zero auth mode.\n *\n * Two mutually exclusive modes:\n * - Saved payment methods: `{ disableSavedPaymentMethods: boolean }` - show or hide saved methods\n * - Verify card: `{ cardToken: \"token\" }` - verify a specific saved card\n */\nexport type ZeroAuthorizationConfig =\n  | ZeroAuthSavedPaymentMethods\n  | ZeroAuthVerifyCard;\n\nexport function isZeroAuthVerifyCard(\n  config: ZeroAuthorizationConfig\n): config is ZeroAuthVerifyCard {\n  return 'cardToken' in config;\n}\n\nexport function isZeroAuthSavedPaymentMethods(\n  config: ZeroAuthorizationConfig\n): config is ZeroAuthSavedPaymentMethods {\n  return 'disableSavedPaymentMethods' in config;\n}\n\nexport enum MerchantStyle {\n  Rounded = 'rounded',\n  Sharp = 'sharp',\n  Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n  primary?: string;\n  background?: string;\n  cardBackground?: string;\n  backgroundAccent?: string;\n  backgroundAccent2?: string;\n  textColor?: string;\n  textColorAccent?: string;\n  textColorAction?: string;\n  ctaColor?: string;\n  font?: string;\n  style?: MerchantStyle;\n  fontSize?: string;\n  fontWeight?: string;\n  cardNumberPlaceholder?: string;\n  cvvPlaceholder?: string;\n  expirationPlaceholder?: string;\n  placeholderColor?: string;\n  showCardIcon?: boolean;\n};\n\ninterface BaseCustomerInfo {\n  verificationId?: string;\n  displayName?: string;\n  address?: string;\n  city?: string;\n  state?: string;\n  zip?: string;\n  country?: string;\n  ip?: string;\n  lat?: string;\n  lng?: string;\n  /**\n   * Date of birth in YYYY-MM-DD format\n   */\n  dob?: string;\n  email?: string;\n}\n\nexport interface NameCustomerInfo extends BaseCustomerInfo {\n  /**\n   * @hidden\n   */\n  name?: string;\n}\n\nexport interface SplitNameCustomerInfo extends BaseCustomerInfo {\n  /**\n   * @minLength 1\n   */\n  firstName: string;\n  /**\n   * @minLength 1\n   */\n  lastName: string;\n}\n\nexport type CustomerInfo = SplitNameCustomerInfo | NameCustomerInfo;\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n  | 'solana'\n  | 'eth'\n  | 'polygon'\n  | 'base'\n  | 'arbitrum'\n  | 'stellar'\n  | 'monad'\n  | 'tempo'\n  | 'user';\nexport type CoinflowEnvs =\n  | 'prod'\n  | 'staging'\n  | 'staging-live'\n  | 'sandbox'\n  | 'local';\n\nexport interface CoinflowTypes {\n  merchantId: string;\n  env?: CoinflowEnvs;\n  loaderBackground?: string;\n  blockchain?: CoinflowBlockchain | undefined;\n  handleHeightChange?: (height: string) => void;\n  theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type MergeWithOptionalDiff<A, B> =\n  // shared fields (required)\n  Pick<A, Extract<keyof A, keyof B>> &\n    Pick<B, Extract<keyof B, keyof A>> &\n    // A-only fields (optional)\n    Partial<Omit<A, keyof B>> &\n    // B-only fields (optional)\n    Partial<Omit<B, keyof A>>;\n\nexport type OnSuccessMethod = (\n  args:\n    | {\n        paymentId: string;\n        hash?: string | undefined;\n      }\n    | string\n) => void | Promise<void>;\n\nexport type AuthDeclinedWalletCallInfo = {\n  title: string;\n  code: string;\n  action: string;\n  message: string;\n  total: string;\n};\n\nexport type OnAuthDeclinedMethod = (\n  args: AuthDeclinedWalletCallInfo\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n  publicKey: PublicKey | null;\n  signTransaction?: <T extends Transaction | VersionedTransaction>(\n    transaction: T\n  ) => Promise<T>;\n  sendTransaction: <T extends Transaction | VersionedTransaction>(\n    transaction: T\n  ) => Promise<string>;\n  signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n  | AccessList\n  | Array<[string, Array<string>]>\n  | Record<string, Array<string>>;\n\nexport type EthWallet = {\n  address: string | null | undefined;\n  sendTransaction: (transaction: {\n    to: string;\n    from?: string;\n    nonce?: Bytes | bigint | string | number;\n\n    gasLimit?: Bytes | bigint | string | number;\n    gasPrice?: Bytes | bigint | string | number;\n\n    data?: BytesLike;\n    value?: Bytes | bigint | string | number;\n    chainId?: number;\n\n    type?: number;\n    accessList?: AccessListish;\n\n    maxPriorityFeePerGas?: Bytes | bigint | string | number;\n    maxFeePerGas?: Bytes | bigint | string | number;\n\n    customData?: Record<string, any>;\n    ccipReadEnabled?: boolean;\n  }) => Promise<{hash: string}>;\n  signMessage: (message: string) => Promise<string>;\n};\n\nexport interface StellarWallet {\n  address: string | null;\n  sendTransaction: (base64Xdr: string) => Promise<string>;\n  signTransaction: (base64Xdr: string) => Promise<string>;\n  signMessage: (message: string) => Promise<string>;\n}\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n  wallet: SolanaWallet;\n  connection: Connection;\n  blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n  sessionKey: string;\n  blockchain?: undefined;\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n  wallet: EthWallet;\n  blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum' | 'monad' | 'tempo';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarHistoryProps extends CoinflowTypes {\n  wallet: StellarWallet;\n  blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'monad';\n}\n\nexport interface CoinflowTempoHistoryProps extends CoinflowEvmHistoryProps {\n  blockchain: 'tempo';\n}\n\nexport type CoinflowHistoryProps =\n  | CoinflowSolanaHistoryProps\n  | CoinflowPolygonHistoryProps\n  | CoinflowEthHistoryProps\n  | CoinflowBaseHistoryProps\n  | CoinflowArbitrumHistoryProps\n  | CoinflowStellarHistoryProps\n  | CoinflowMonadHistoryProps\n  | CoinflowTempoHistoryProps\n  | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/**\n * Cart item details required for Coinflow Chargeback Protection. Required if the merchant uses chargeback protection.\n */\nexport type CartClassOmitted = CartItemClassOmitted[];\n\nexport type ChargebackProtectionData = CartClassOmitted;\nexport enum ChargebackProtectionAccountType {\n  GUEST = 'guest',\n  PRIVATE = 'private',\n  BUSINESS = 'business',\n}\n\nexport type CartItemClassOmitted =\n  | NftCartItemClassOmitted\n  | Omit<GiftCardCartItem, 'listPrice'>\n  | CryptoCartItem\n  | MoneyTopUpCartItem;\nexport type ChargebackProtectionItem = CartItemClassOmitted;\n\nexport type NftCartItemClassOmitted = Omit<\n  nftCartItem,\n  'sellingPrice' | 'itemClass'\n>;\n\nexport type Cart = CartItem[];\nexport type CartItem =\n  | Omit<nftCartItem, 'listPrice' | 'sellingPrice'>\n  | Omit<GiftCardCartItem, 'listPrice'>\n  | CryptoCartItem\n  | MoneyTopUpCartItem;\n\nexport enum ThreeDsChallengePreference {\n  NoPreference = 'NoPreference',\n  Frictionless = 'Frictionless',\n  Challenge = 'Challenge',\n}\n\nexport enum PaymentMethods {\n  card = 'card',\n  ach = 'ach',\n  fasterPayments = 'fasterPayments',\n  sepa = 'sepa',\n  pix = 'pix',\n  usdc = 'usdc',\n  googlePay = 'googlePay',\n  applePay = 'applePay',\n  credits = 'credits',\n  crypto = 'crypto',\n  wire = 'wire',\n  cashApp = 'cashApp',\n  apa = 'apa',\n  paypal = 'paypal',\n  venmo = 'venmo',\n  interac = 'interac',\n}\n\nexport const paymentMethodLabels: Record<PaymentMethods, string> = {\n  [PaymentMethods.card]: 'Card',\n  [PaymentMethods.ach]: 'ACH',\n  [PaymentMethods.fasterPayments]: 'Faster Payments',\n  [PaymentMethods.sepa]: 'SEPA',\n  [PaymentMethods.pix]: 'PIX',\n  [PaymentMethods.usdc]: 'USDC',\n  [PaymentMethods.googlePay]: 'Google Pay',\n  [PaymentMethods.applePay]: 'Apple Pay',\n  [PaymentMethods.credits]: 'Credits',\n  [PaymentMethods.crypto]: 'Crypto',\n  [PaymentMethods.wire]: 'Wire Transfer',\n  [PaymentMethods.cashApp]: 'CashApp',\n  [PaymentMethods.apa]: 'APA',\n  [PaymentMethods.paypal]: 'PayPal',\n  [PaymentMethods.venmo]: 'Venmo',\n  [PaymentMethods.interac]: 'Interac',\n};\n\nexport interface CoinflowCommonPaymentIntentProps extends Omit<\n  CoinflowTypes,\n  'blockchain'\n> {\n  paymentIntentId: string;\n  onSuccess?: OnSuccessMethod;\n  onAuthDeclined?: OnAuthDeclinedMethod;\n  /**\n   * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n   * If false or undefined, maintains default behavior (unchecked).\n   */\n  partialUsdcChecked?: boolean;\n  /**\n   * The DeviceID gotten from the Coinflow SDK:\n   *  https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n   */\n  deviceId?: string;\n  /**\n   * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n   *\n   * Example:\n   * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n   * Subsequent origins that will render foo.com: bar.com\n   * The origin array would then be: [https://foo.com,https://bar.com]\n   */\n  origins?: string[];\n  /**\n   * End-user wallet used for wallet-authenticated payment-intent checkout flows.\n   *\n   * Required when the target payment intent type depends on a customer wallet\n   * (for example: EVM/Solana/Stellar transaction intents or credits/USDC signing flows).\n   *\n   * The wallet implementation must match the active blockchain.\n   */\n  wallet?: WalletTypes;\n  blockchain?:\n    | 'solana'\n    | 'eth'\n    | 'polygon'\n    | 'base'\n    | 'arbitrum'\n    | 'stellar'\n    | 'monad';\n}\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n  subtotal?: Subtotal;\n  presentment?: Currency;\n  onSuccess?: OnSuccessMethod;\n  sessionKey?: string;\n  onAuthDeclined?: OnAuthDeclinedMethod;\n  webhookInfo?: {\n    [key: string]: any;\n  };\n  email?: string;\n  chargebackProtectionData?: ChargebackProtectionData;\n  chargebackProtectionAccountType?: ChargebackProtectionAccountType;\n  planCode?: string;\n  /**\n   * The payment methods displayed on the UI. If omitted, all available payment methods will be displayed.\n   */\n  allowedPaymentMethods?: PaymentMethods[];\n  customerInfo?: CustomerInfo;\n  settlementType?: SettlementType;\n  authOnly?: boolean;\n  /**\n   * @deprecated Use zeroAuthorizationConfig instead for more control over zero auth behavior.\n   * Simple boolean flag for zero authorization mode. When true, defaults to showing saved payment methods.\n   */\n  isZeroAuthorization?: boolean;\n  /**\n   * Configuration for zero authorization flow. Takes precedence over isZeroAuthorization if both are provided.\n   * Use this to control whether saved payment methods are shown and to pre-select a specific card for verification.\n   */\n  zeroAuthorizationConfig?: ZeroAuthorizationConfig;\n  /**\n   * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.\n   * If false or undefined, maintains default behavior (unchecked).\n   */\n  partialUsdcChecked?: boolean;\n  /**\n   * The DeviceID gotten from the Coinflow SDK:\n   *  https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection\n   */\n  deviceId?: string;\n  jwtToken?: string;\n  /**\n   * Your company email address that the customer can contact.\n   */\n  supportEmail?: string;\n  /**\n   * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n   *\n   * Example:\n   * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n   * Subsequent origins that will render foo.com: bar.com\n   * The origin array would then be: [https://foo.com,https://bar.com]\n   */\n  origins?: string[];\n  threeDsChallengePreference?: ThreeDsChallengePreference;\n  destinationAuthKey?: string;\n  accountFundingTransaction?: AccountFundingTransaction;\n  /**\n   * Custom preset deposit amounts (in dollars) to display in the AmountSelector.\n   * Only the first 3 values are used. Defaults to [10, 25, 50] if not provided.\n   */\n  depositAmounts?: number[];\n}\n\nexport interface WithGeo {\n  /**\n   * End-user GPS coordinates for `BlockingRuleMethod.GEOLOCATION` enforcement.\n   * Required only when the merchant has a geolocation rule configured. The\n   * web build reads the browser Geolocation API directly; React Native hosts\n   * must request the fix from the platform (e.g. `expo-location`,\n   * `react-native-geolocation`) and forward the result here.\n   */\n  userLocation?: {lat: number; lng: number};\n}\n\n/**\n * Used for Account Funding Transactions\n */\nexport interface AccountFundingTransaction {\n  /**\n   * Recipient information for Account Funding Transactions (AFT).\n   * Required when AFT is enabled and type requires it.\n   */\n  recipientAftInfo?: RecipientAftInfo;\n}\n\nexport interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps {\n  wallet: SolanaWallet;\n  transaction?: Transaction | VersionedTransaction;\n  partialSigners?: Signer[];\n  debugTx?: boolean;\n  connection: Connection;\n  blockchain: 'solana';\n  rent?: {lamports: string | number};\n  nativeSolToConvert?: {lamports: string | number};\n  redemptionCheck?: boolean;\n}\n\nexport interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {\n  sessionKey: string;\n  wallet?: undefined;\n  blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n  transaction?: EvmTransactionData;\n  wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'arbitrum';\n}\n\nexport interface CoinflowStellarPurchaseProps extends CoinflowCommonPurchaseProps {\n  wallet: StellarWallet;\n  transaction?: string;\n  blockchain: 'stellar';\n}\n\nexport interface CoinflowMonadPurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'monad';\n}\n\nexport interface CoinflowTempoPurchaseProps extends CoinflowEvmPurchaseProps {\n  blockchain: 'tempo';\n}\n\nexport type CoinflowPurchaseProps =\n  | CoinflowSolanaPurchaseProps\n  | CoinflowSessionKeyPurchaseProps\n  | CoinflowPolygonPurchaseProps\n  | CoinflowEthPurchaseProps\n  | CoinflowBasePurchaseProps\n  | CoinflowArbitrumPurchaseProps\n  | CoinflowStellarPurchaseProps\n  | CoinflowMonadPurchaseProps\n  | CoinflowTempoPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n  onSuccess?: OnSuccessMethod;\n  tokens?: string[];\n  lockDefaultToken?: boolean;\n  amount?: number;\n  email?: string;\n  bankAccountLinkRedirect?: string;\n  additionalWallets?: {\n    wallet: string;\n    blockchain:\n      | 'solana'\n      | 'eth'\n      | 'polygon'\n      | 'base'\n      | 'arbitrum'\n      | 'monad'\n      | 'tempo'\n      | 'stellar';\n  }[];\n  lockAmount?: boolean;\n  transactionSigner?: string;\n  /**\n   * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n   *\n   * Example:\n   * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n   * Subsequent origins that will render foo.com: bar.com\n   * The origin array would then be: [https://foo.com,https://bar.com]\n   */\n  origins?: string[];\n  /**\n   * If the withdrawer is authenticated with a sessionKey pass it here.\n   */\n  sessionKey?: string;\n  /**\n   * Array of allowed withdrawal speeds. If not provided, all speeds are allowed.\n   */\n  allowedWithdrawSpeeds?: WithdrawSpeed[];\n  /**\n   * End-user GPS coordinates for `BlockingRuleMethod.GEOLOCATION` enforcement.\n   * Required only when the merchant has a geolocation rule configured. The\n   * web build reads the browser Geolocation API directly; React Native hosts\n   * must request the fix from the platform (e.g. `expo-location`,\n   * `react-native-geolocation`) and forward the result here.\n   */\n  userLocation?: {lat: number; lng: number};\n}\n\nexport type WalletTypes = SolanaWallet | EthWallet | StellarWallet;\n\nexport interface SolanaWalletProps {\n  wallet: SolanaWallet;\n  connection: Connection;\n  blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n  SolanaWalletProps;\n\ninterface EvmWalletProps {\n  wallet: EthWallet;\n  usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n  blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n  EthWalletProps;\n\nexport interface PolygonWalletProps {\n  blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n  PolygonWalletProps;\n\nexport interface BaseWalletProps {\n  blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n  BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n  blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n  ArbitrumWalletProps;\n\nexport interface StellarWalletProps {\n  wallet: StellarWallet;\n  blockchain: 'stellar';\n}\n\nexport type CoinflowStellarWithdrawProps = CoinflowCommonWithdrawProps &\n  StellarWalletProps;\n\nexport interface MonadWalletProps {\n  blockchain: 'monad';\n}\n\nexport type CoinflowMonadWithdrawProps = CoinflowEvmWithdrawProps &\n  MonadWalletProps;\n\nexport interface TempoWalletProps {\n  blockchain: 'tempo';\n}\n\nexport type CoinflowTempoWithdrawProps = CoinflowEvmWithdrawProps &\n  TempoWalletProps;\n\nexport type CoinflowWithdrawProps =\n  | CoinflowSolanaWithdrawProps\n  | CoinflowEthWithdrawProps\n  | CoinflowPolygonWithdrawProps\n  | CoinflowBaseWithdrawProps\n  | CoinflowArbitrumWithdrawProps\n  | CoinflowStellarWithdrawProps\n  | CoinflowMonadWithdrawProps\n  | CoinflowTempoWithdrawProps;\n\nexport interface CommonEvmRedeem {\n  /**\n   * Whether the UI should wait\n   * for the transaction to be sent and\n   * the hash to be returned.\n   */\n  waitForHash?: boolean;\n}\n\n/**\n * (EVM only) If your contract sends the item/service being purchased via a custom \"receiver\" field, then utilize this object.\n *\n * The coinflow contract calls the \"to\" contract, which transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n */\nexport interface NormalRedeem extends CommonEvmRedeem {\n  /**\n   * Transaction to be called.\n   */\n  transaction: {\n    /**\n     * The merchant's whitelisted contract\n     */\n    to: string;\n    /**\n     * The data to call this contract with, HEX encoded.\n     *\n     * The coinflow contract calls the \"to\" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the \"receiver\" address defined in the contract function arguments.\n     */\n    data: string;\n  };\n}\n\n/**\n * (EVM only) If your know the ID of the NFT being purchased, then utilize this object.\n *\n * The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.\n */\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n  /**\n   * The address of the Nft's Contract\n   *\n   * @minLength 42 Please provide a valid EVM Address (42 Characters Long)\n   * @maxLength 42 Please provide a valid EVM Address (42 Characters Long)\n   */\n  nftContract: string;\n  /**\n   * The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.\n   *\n   * @minLength 1 Please provide a valid Nft Id\n   */\n  nftId: string;\n}\n\n/**\n * (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.\n */\nexport interface SafeMintRedeem extends NormalRedeem {\n  type: 'safeMint';\n  nftContract?: string;\n}\n\n/**\n * (EVM only) If your contract returns the NFT ID, then utilize this object.\n *\n * The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.\n */\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n  type: 'returned';\n  nftContract?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n  type: 'token';\n  destination: string;\n}\n\n/**\n * If your contract exists on a chain supported by Decent, pass this object in order to call it.\n */\nexport interface DecentRedeem extends CommonEvmRedeem {\n  type: 'decent';\n  /**\n   * ID of the destination chain you will be using\n   * Find your chain ID here: https://chainlist.org/\n   */\n  dstChainId: number;\n  /**\n   * Address on that chain of the token you will be receiving\n   */\n  dstToken: string;\n  /**\n   * The contract address which will be called on the destination chain\n   */\n  contractAddress: string;\n  contractData: string;\n  /**\n   * Amount of the token on the destination chain you will be receiving\n   */\n  cost: {\n    /**\n     * This is the raw amount of the token\n     * ex: 50000000000000n\n     */\n    amount: string;\n    /**\n     * Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL).\n     * If native dstToken should be the 0 address (0x00...)\n     */\n    isNative: boolean;\n  };\n}\n\n/**\n * (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here.\n *\n * Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.\n */\nexport type EvmTransactionData =\n  | SafeMintRedeem\n  | ReturnedTokenIdRedeem\n  | KnownTokenIdRedeem\n  | NormalRedeem\n  | TokenRedeem\n  | DecentRedeem;\n\nexport interface CoinflowIFrameProps\n  extends\n    Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n    Pick<\n      CoinflowCommonPurchaseProps,\n      | 'chargebackProtectionData'\n      | 'chargebackProtectionAccountType'\n      | 'webhookInfo'\n      | 'subtotal'\n      | 'presentment'\n      | 'customerInfo'\n      | 'settlementType'\n      | 'email'\n      | 'planCode'\n      | 'deviceId'\n      | 'jwtToken'\n      | 'origins'\n      | 'threeDsChallengePreference'\n      | 'supportEmail'\n      | 'allowedPaymentMethods'\n      | 'accountFundingTransaction'\n      | 'partialUsdcChecked'\n      | 'isZeroAuthorization'\n      | 'zeroAuthorizationConfig'\n      | 'depositAmounts'\n    >,\n    Pick<\n      CoinflowCommonWithdrawProps,\n      | 'bankAccountLinkRedirect'\n      | 'additionalWallets'\n      | 'transactionSigner'\n      | 'lockAmount'\n      | 'lockDefaultToken'\n      | 'origins'\n      | 'allowedWithdrawSpeeds'\n    >,\n    Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n    Pick<\n      CoinflowSolanaPurchaseProps,\n      'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'\n    >,\n    WithGeo {\n  walletPubkey: string | null | undefined;\n  sessionKey?: string;\n  route: string;\n  routePrefix?: string;\n  transaction?: string;\n  tokens?: string[] | PublicKey[];\n  merchantCss?: string;\n  color?: 'white' | 'black';\n  disableApplePay?: boolean;\n  disableGooglePay?: boolean;\n  theme?: MerchantTheme;\n  usePermit?: boolean;\n  handleHeightChangeId: string | number;\n}\n\nexport interface CoinflowIntentsIFrameProps {\n  theme?: MerchantTheme;\n  merchantCss?: string;\n  color?: 'white' | 'black';\n  intentId: string;\n  route: string;\n  routePrefix?: string;\n  handleHeightChangeId: string | number;\n  env?: CoinflowEnvs;\n  loaderBackground?: string;\n  handleHeightChange?: (height: string) => void;\n  origins?: string[];\n  deviceId?: string;\n  walletPubkey?: string | undefined | null;\n  blockchain?:\n    | 'solana'\n    | 'eth'\n    | 'polygon'\n    | 'base'\n    | 'arbitrum'\n    | 'stellar'\n    | 'monad';\n}\n\nexport enum CardType {\n  VISA = 'VISA',\n  MASTERCARD = 'MSTR',\n  AMEX = 'AMEX',\n  DISCOVER = 'DISC',\n}\n\nexport interface RecipientAftInfo {\n  /**\n   * @minLength 2\n   */\n  firstName: string;\n  /**\n   * @minLength 2\n   */\n  lastName: string;\n  /**\n   * @minLength 2\n   */\n  address1: string;\n  /**\n   * @minLength 2\n   */\n  city: string;\n  /**\n   * @minLength 2\n   */\n  postalCode: string;\n  /**\n   * @minLength 2\n   */\n  state?: string;\n  /**\n   * @minLength 2\n   * @maxLength 2\n   */\n  countryCode: string;\n  /**\n   * Recipients Date Of Birth in YYYMMDD format.\n   * @pattern ^\\d{8}$\n   */\n  dateOfBirth?: string;\n  /**\n   * @pattern ^\\d+$\n   */\n  phoneNumber?: string;\n  documentReference?: string;\n}\n\nexport const RN_REDIRECT_MESSAGE_NAME = 'rnredirect'; // DO NOT CHANGE\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n//   web3 = require('@solana/web3.js');\n//   base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","export enum Currency {\n  USD = 'USD',\n  AED = 'AED',\n  AFN = 'AFN',\n  ALL = 'ALL',\n  AMD = 'AMD',\n  ANG = 'ANG',\n  AOA = 'AOA',\n  ARS = 'ARS',\n  AUD = 'AUD',\n  AWG = 'AWG',\n  AZN = 'AZN',\n  BAM = 'BAM',\n  BBD = 'BBD',\n  BDT = 'BDT',\n  BGN = 'BGN',\n  BHD = 'BHD',\n  BIF = 'BIF',\n  BMD = 'BMD',\n  BND = 'BND',\n  BOB = 'BOB',\n  BRL = 'BRL',\n  BSD = 'BSD',\n  BTN = 'BTN',\n  BWP = 'BWP',\n  BYN = 'BYN',\n  BZD = 'BZD',\n  CAD = 'CAD',\n  CHF = 'CHF',\n  CLF = 'CLF',\n  CLP = 'CLP',\n  CNY = 'CNY',\n  COP = 'COP',\n  CRC = 'CRC',\n  CUP = 'CUP',\n  CVE = 'CVE',\n  CZK = 'CZK',\n  DJF = 'DJF',\n  DKK = 'DKK',\n  DOP = 'DOP',\n  DZD = 'DZD',\n  EGP = 'EGP',\n  ETB = 'ETB',\n  EUR = 'EUR',\n  FJD = 'FJD',\n  GBP = 'GBP',\n  GEL = 'GEL',\n  GHS = 'GHS',\n  GMD = 'GMD',\n  GNF = 'GNF',\n  GTQ = 'GTQ',\n  GYD = 'GYD',\n  HKD = 'HKD',\n  HNL = 'HNL',\n  HTG = 'HTG',\n  HUF = 'HUF',\n  IDR = 'IDR',\n  ILS = 'ILS',\n  INR = 'INR',\n  IQD = 'IQD',\n  IRR = 'IRR',\n  ISK = 'ISK',\n  JMD = 'JMD',\n  JOD = 'JOD',\n  JPY = 'JPY',\n  KES = 'KES',\n  KGS = 'KGS',\n  KHR = 'KHR',\n  KMF = 'KMF',\n  KRW = 'KRW',\n  KWD = 'KWD',\n  KYD = 'KYD',\n  KZT = 'KZT',\n  LAK = 'LAK',\n  LBP = 'LBP',\n  LKR = 'LKR',\n  LRD = 'LRD',\n  LSL = 'LSL',\n  LYD = 'LYD',\n  MAD = 'MAD',\n  MDL = 'MDL',\n  MGA = 'MGA',\n  MKD = 'MKD',\n  MMK = 'MMK',\n  MNT = 'MNT',\n  MOP = 'MOP',\n  MRU = 'MRU',\n  MUR = 'MUR',\n  MWK = 'MWK',\n  MVR = 'MVR',\n  MXN = 'MXN',\n  MYR = 'MYR',\n  MZN = 'MZN',\n  NAD = 'NAD',\n  NGN = 'NGN',\n  NIO = 'NIO',\n  NOK = 'NOK',\n  NPR = 'NPR',\n  NZD = 'NZD',\n  OMR = 'OMR',\n  PAB = 'PAB',\n  PEN = 'PEN',\n  PGK = 'PGK',\n  PHP = 'PHP',\n  PKR = 'PKR',\n  PLN = 'PLN',\n  PYG = 'PYG',\n  QAR = 'QAR',\n  RON = 'RON',\n  RSD = 'RSD',\n  RWF = 'RWF',\n  SAR = 'SAR',\n  SCR = 'SCR',\n  SDG = 'SDG',\n  SEK = 'SEK',\n  SGD = 'SGD',\n  SLE = 'SLE',\n  SLL = 'SLL',\n  SOS = 'SOS',\n  SRD = 'SRD',\n  STN = 'STN',\n  SVC = 'SVC',\n  SYP = 'SYP',\n  SZL = 'SZL',\n  THB = 'THB',\n  TJS = 'TJS',\n  TMT = 'TMT',\n  TND = 'TND',\n  TOP = 'TOP',\n  TRY = 'TRY',\n  TTD = 'TTD',\n  TWD = 'TWD',\n  TZS = 'TZS',\n  UAH = 'UAH',\n  UGX = 'UGX',\n  UYU = 'UYU',\n  UZS = 'UZS',\n  VND = 'VND',\n  VUV = 'VUV',\n  WST = 'WST',\n  XAF = 'XAF',\n  XCD = 'XCD',\n  XOF = 'XOF',\n  XPF = 'XPF',\n  YER = 'YER',\n  ZAR = 'ZAR',\n  ZMW = 'ZMW',\n  ZWL = 'ZWL',\n\n  CDF = 'CDF',\n  ERN = 'ERN',\n  FKP = 'FKP',\n  KPW = 'KPW',\n  RUB = 'RUB',\n  SBD = 'SBD',\n  SHP = 'SHP',\n  SSP = 'SSP',\n  VES = 'VES',\n}\n\nexport const CurrencyToISO4217: Record<Currency, string> = {\n  [Currency.AED]: '784',\n  [Currency.AFN]: '971',\n  [Currency.ALL]: '008',\n  [Currency.AMD]: '051',\n  [Currency.ANG]: '532',\n  [Currency.AOA]: '973',\n  [Currency.AUD]: '036',\n  [Currency.AWG]: '533',\n  [Currency.AZN]: '944',\n  [Currency.BAM]: '977',\n  [Currency.BBD]: '052',\n  [Currency.BDT]: '050',\n  [Currency.BGN]: '975',\n  [Currency.BHD]: '048',\n  [Currency.BIF]: '108',\n  [Currency.BND]: '096',\n  [Currency.BOB]: '068',\n  [Currency.BRL]: '986',\n  [Currency.BTN]: '064',\n  [Currency.BWP]: '072',\n  [Currency.BZD]: '084',\n  [Currency.CAD]: '124',\n  [Currency.CHF]: '756',\n  [Currency.CLP]: '152',\n  [Currency.CNY]: '156',\n  [Currency.COP]: '170',\n  [Currency.CRC]: '188',\n  [Currency.CVE]: '132',\n  [Currency.CZK]: '203',\n  [Currency.DJF]: '262',\n  [Currency.DKK]: '208',\n  [Currency.DOP]: '214',\n  [Currency.DZD]: '012',\n  [Currency.EGP]: '818',\n  [Currency.ETB]: '230',\n  [Currency.EUR]: '978',\n  [Currency.GBP]: '826',\n  [Currency.GEL]: '981',\n  [Currency.GHS]: '936',\n  [Currency.GMD]: '270',\n  [Currency.GNF]: '324',\n  [Currency.GTQ]: '320',\n  [Currency.GYD]: '328',\n  [Currency.HKD]: '344',\n  [Currency.HNL]: '340',\n  [Currency.HTG]: '332',\n  [Currency.HUF]: '348',\n  [Currency.IDR]: '360',\n  [Currency.INR]: '356',\n  [Currency.IQD]: '368',\n  [Currency.IRR]: '364',\n  [Currency.ISK]: '352',\n  [Currency.JMD]: '388',\n  [Currency.JOD]: '400',\n  [Currency.JPY]: '392',\n  [Currency.KES]: '404',\n  [Currency.KGS]: '417',\n  [Currency.KHR]: '116',\n  [Currency.KMF]: '174',\n  [Currency.KRW]: '410',\n  [Currency.KWD]: '414',\n  [Currency.KYD]: '136',\n  [Currency.KZT]: '398',\n  [Currency.LKR]: '144',\n  [Currency.LRD]: '430',\n  [Currency.LSL]: '426',\n  [Currency.LYD]: '434',\n  [Currency.MAD]: '504',\n  [Currency.MDL]: '498',\n  [Currency.MGA]: '969',\n  [Currency.MKD]: '807',\n  [Currency.MMK]: '104',\n  [Currency.MNT]: '496',\n  [Currency.MOP]: '446',\n  [Currency.MRU]: '929',\n  [Currency.MUR]: '480',\n  [Currency.MVR]: '462',\n  [Currency.MXN]: '484',\n  [Currency.MYR]: '458',\n  [Currency.NAD]: '516',\n  [Currency.NGN]: '566',\n  [Currency.NIO]: '558',\n  [Currency.NOK]: '578',\n  [Currency.NPR]: '524',\n  [Currency.NZD]: '554',\n  [Currency.OMR]: '512',\n  [Currency.PAB]: '590',\n  [Currency.PEN]: '604',\n  [Currency.PHP]: '608',\n  [Currency.PKR]: '586',\n  [Currency.PLN]: '985',\n  [Currency.PYG]: '600',\n  [Currency.QAR]: '634',\n  [Currency.RON]: '946',\n  [Currency.RSD]: '941',\n  [Currency.RWF]: '646',\n  [Currency.SAR]: '682',\n  [Currency.SCR]: '690',\n  [Currency.SDG]: '938',\n  [Currency.SEK]: '752',\n  [Currency.SGD]: '702',\n  [Currency.SLE]: '925',\n  [Currency.SLL]: '694',\n  [Currency.SOS]: '706',\n  [Currency.STN]: '930',\n  [Currency.SVC]: '222',\n  [Currency.SYP]: '760',\n  [Currency.SZL]: '748',\n  [Currency.THB]: '764',\n  [Currency.TJS]: '972',\n  [Currency.TMT]: '934',\n  [Currency.TND]: '788',\n  [Currency.TRY]: '949',\n  [Currency.TTD]: '780',\n  [Currency.TWD]: '901',\n  [Currency.TZS]: '834',\n  [Currency.UAH]: '980',\n  [Currency.UGX]: '800',\n  [Currency.USD]: '840',\n  [Currency.UYU]: '858',\n  [Currency.UZS]: '860',\n  [Currency.VND]: '704',\n  [Currency.XAF]: '950',\n  [Currency.XCD]: '951',\n  [Currency.XOF]: '952',\n  [Currency.XPF]: '953',\n  [Currency.YER]: '886',\n  [Currency.ZAR]: '710',\n  [Currency.ZMW]: '967',\n  [Currency.ARS]: '032',\n  [Currency.BMD]: '060',\n  [Currency.BSD]: '044',\n  [Currency.BYN]: '933',\n  [Currency.CUP]: '192',\n  [Currency.FJD]: '242',\n  [Currency.ILS]: '376',\n  [Currency.LAK]: '418',\n  [Currency.LBP]: '422',\n  [Currency.MWK]: '454',\n  [Currency.MZN]: '943',\n  [Currency.PGK]: '598',\n  [Currency.SRD]: '968',\n  [Currency.TOP]: '776',\n  [Currency.VUV]: '548',\n  [Currency.WST]: '882',\n  [Currency.ZWL]: '932',\n  [Currency.CLF]: '990',\n  [Currency.CDF]: '976',\n  [Currency.ERN]: '232',\n  [Currency.FKP]: '238',\n  [Currency.KPW]: '408',\n  [Currency.RUB]: '643',\n  [Currency.SBD]: '090',\n  [Currency.SHP]: '654',\n  [Currency.SSP]: '728',\n  [Currency.VES]: '928',\n};\n\nexport type WithdrawCurrency =\n  | Currency.USD\n  | Currency.EUR\n  | Currency.GBP\n  | Currency.BRL\n  | Currency.CAD;\n\nexport const WithdrawCurrencies = {\n  [Currency.USD]: Currency.USD,\n  [Currency.EUR]: Currency.EUR,\n  [Currency.GBP]: Currency.GBP,\n  [Currency.BRL]: Currency.BRL,\n  [Currency.CAD]: Currency.CAD,\n} as const;\n\nexport function isWithdrawCurrency(\n  currency: Currency\n): currency is WithdrawCurrency {\n  return currency in WithdrawCurrencies;\n}\n\nexport type BankingCurrency =\n  | Currency.USD\n  | Currency.EUR\n  | Currency.GBP\n  | Currency.CAD\n  | Currency.BRL;\n\nexport const BankingCurrencies = {\n  [Currency.USD]: Currency.USD,\n  [Currency.EUR]: Currency.EUR,\n  [Currency.GBP]: Currency.GBP,\n  [Currency.CAD]: Currency.CAD,\n  [Currency.BRL]: Currency.BRL,\n} as const;\n\nexport function isBankingCurrency(\n  currency: Currency\n): currency is BankingCurrency {\n  return currency in BankingCurrencies;\n}\n\nconst FourDecimalCurrencies = new Set<Currency>([Currency.CLF]);\n\nconst ThreeDecimalCurrencies = new Set<Currency>([\n  Currency.BHD,\n  Currency.IQD,\n  Currency.JOD,\n  Currency.KWD,\n  Currency.LYD,\n  Currency.OMR,\n  Currency.TND,\n]);\n\nconst ZeroDecimalCurrencies = new Set<Currency>([\n  Currency.BIF,\n  Currency.CLP,\n  Currency.DJF,\n  Currency.GNF,\n  Currency.ISK,\n  Currency.JPY,\n  Currency.KMF,\n  Currency.PYG,\n  Currency.RWF,\n  Currency.UGX,\n  Currency.VND,\n  Currency.VUV,\n  Currency.XAF,\n  Currency.XOF,\n  Currency.XPF,\n]);\n\nexport function getCurrencyDecimals(currency: Currency): number {\n  if (FourDecimalCurrencies.has(currency)) return 4;\n  if (ThreeDecimalCurrencies.has(currency)) return 3;\n  if (ZeroDecimalCurrencies.has(currency)) return 0;\n  return 2;\n}\n\nexport interface Cents {\n  /**\n   * @isInt Cents must be an integer\n   * @minimum 0 Minimum Cents is 0\n   */\n  cents: number;\n}\n\nexport interface CurrencyCents extends Cents {\n  currency: Currency;\n}\n\nexport interface RemainingLimit extends CurrencyCents {\n  type: 'single transaction' | 'daily' | 'monthly';\n}\n\nexport interface TypedCurrencyCents<T extends Currency> extends Cents {\n  currency: T;\n}\n\nexport function isTypedCurrencyCents<T extends Currency>(\n  cents: CurrencyCents,\n  currency: T\n): cents is TypedCurrencyCents<T> {\n  return cents.currency === currency;\n}\nexport interface ExchangeRate<T extends Currency = Currency> {\n  base: Currency;\n  rate: number;\n  to: T;\n}\n\nexport function invertRate<T extends Currency = Currency>(ex: {\n  base: T;\n  rate: number;\n  to: Currency;\n}) {\n  return {\n    base: ex.to,\n    rate: 1 / ex.rate,\n    to: ex.base,\n  } as ExchangeRate<T>;\n}\n\nexport interface TokenSubtotal {\n  /**\n   * The tokens address\n   *\n   * Solana - Token Mint Address\n   * Evm - Token Contract Address\n   */\n  address: string;\n  /**\n   * Number of tokens\n   */\n  amount: number | string;\n  /**\n   * Number of decimals for the token\n   */\n  decimals?: number;\n}\n\nexport type Subtotal = CurrencyCents | Cents | TokenSubtotal;\n","import nsureSDK from '@nsure-ai/web-client-sdk';\n\nfunction getNSureDeviceId(): string | null {\n  if (typeof window !== 'undefined') {\n    const urlDeviceId = new URLSearchParams(window.location.search).get(\n      'deviceId'\n    );\n    if (urlDeviceId) return urlDeviceId;\n  }\n\n  if (nsureSDK) return nsureSDK.getDeviceId();\n  return null;\n}\n\nexport default getNSureDeviceId;\n","import {\n  CoinflowBlockchain,\n  CoinflowEnvs,\n  CoinflowIFrameProps,\n  CoinflowIntentsIFrameProps,\n  CoinflowPurchaseProps,\n  CustomerInfo,\n  WithGeo,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {Currency} from './types/Subtotal';\nimport getNSureDeviceId from './NSure';\n\nexport class CoinflowUtils {\n  env: CoinflowEnvs;\n  url: string;\n\n  constructor(env?: CoinflowEnvs) {\n    this.env = env ?? 'prod';\n    if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n    else if (this.env === 'local') this.url = 'http://localhost:5000';\n    else this.url = `https://api-${this.env}.coinflow.cash`;\n  }\n\n  async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n    return fetch(this.url + `/merchant/view/${merchantId}`)\n      .then(response => response.json())\n      .then(\n        (json: {\n          nSurePartnerId: string | undefined;\n          nSureSettings: {nSurePartnerId: string | undefined};\n        }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n      )\n      .catch(e => {\n        console.error(e);\n        return undefined;\n      });\n  }\n\n  static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n    if (!env || env === 'prod') return 'https://coinflow.cash';\n    // @ts-expect-error This is for testing\n    if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n    if (env === 'local') return 'http://localhost:3000';\n\n    return `https://${env}.coinflow.cash`;\n  }\n\n  static getCoinflowAppBaseUrl(env?: CoinflowEnvs): string {\n    if (!env || env === 'prod') return 'https://app.coinflow.cash';\n    // @ts-expect-error This is for testing\n    if (env === 'ngrok') return 'https://coinflow.ngrok.app';\n    if (env === 'local') return 'http://localhost:3003';\n\n    return `https://app-${env}.coinflow.cash`;\n  }\n\n  static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n    if (!env || env === 'prod') return 'https://api.coinflow.cash';\n    if (env === 'local') return 'http://localhost:5000';\n\n    return `https://api-${env}.coinflow.cash`;\n  }\n\n  static getCoinflowUrl({\n    walletPubkey,\n    sessionKey,\n    route,\n    routePrefix,\n    env,\n    subtotal,\n    presentment,\n    transaction,\n    blockchain = 'solana',\n    webhookInfo,\n    email,\n    loaderBackground,\n    handleHeightChangeId,\n    bankAccountLinkRedirect,\n    additionalWallets,\n    chargebackProtectionData,\n    chargebackProtectionAccountType,\n    merchantCss,\n    color,\n    rent,\n    lockDefaultToken,\n    tokens,\n    planCode,\n    disableApplePay,\n    disableGooglePay,\n    customerInfo,\n    settlementType,\n    lockAmount,\n    nativeSolToConvert,\n    theme,\n    usePermit,\n    transactionSigner,\n    authOnly,\n    deviceId,\n    jwtToken,\n    origins,\n    threeDsChallengePreference,\n    supportEmail,\n    destinationAuthKey,\n    allowedPaymentMethods,\n    accountFundingTransaction,\n    partialUsdcChecked,\n    redemptionCheck,\n    allowedWithdrawSpeeds,\n    isZeroAuthorization,\n    zeroAuthorizationConfig,\n    userLocation,\n    depositAmounts,\n    baseUrl,\n  }: CoinflowIFrameProps & {baseUrl?: string} & WithGeo): string {\n    const prefix = routePrefix\n      ? `/${routePrefix}/${blockchain}`\n      : `/${blockchain}`;\n    const url = new URL(\n      prefix + route,\n      baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n    );\n\n    if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n    if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n    if (transaction) {\n      url.searchParams.append('transaction', transaction);\n    }\n\n    if (subtotal) {\n      if ('cents' in subtotal) {\n        url.searchParams.append('cents', subtotal.cents.toString());\n        if ('currency' in subtotal) {\n          url.searchParams.append('currency', subtotal.currency.toString());\n        } else {\n          url.searchParams.append('currency', Currency.USD);\n        }\n      } else {\n        url.searchParams.append('token', subtotal.address.toString());\n        url.searchParams.append('amount', subtotal.amount.toString());\n      }\n    }\n\n    if (presentment) url.searchParams.append('presentment', presentment);\n\n    if (webhookInfo) {\n      url.searchParams.append(\n        'webhookInfo',\n        LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n      );\n    }\n\n    if (theme) {\n      url.searchParams.append(\n        'theme',\n        LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n      );\n    }\n\n    if (customerInfo) {\n      url.searchParams.append(\n        'customerInfo',\n        LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n      );\n    }\n\n    if (email) {\n      url.searchParams.append('email', email);\n    }\n    if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n    if (tokens) {\n      url.searchParams.append('tokens', tokens.toString());\n    }\n\n    if (loaderBackground) {\n      url.searchParams.append('loaderBackground', loaderBackground);\n    }\n\n    if (handleHeightChangeId) {\n      url.searchParams.append(\n        'useHeightChange',\n        handleHeightChangeId.toString()\n      );\n    }\n\n    if (bankAccountLinkRedirect) {\n      url.searchParams.append(\n        'bankAccountLinkRedirect',\n        bankAccountLinkRedirect\n      );\n    }\n\n    if (additionalWallets)\n      url.searchParams.append(\n        'additionalWallets',\n        LZString.compressToEncodedURIComponent(\n          JSON.stringify(additionalWallets)\n        )\n      );\n\n    if (chargebackProtectionData)\n      url.searchParams.append(\n        'chargebackProtectionData',\n        LZString.compressToEncodedURIComponent(\n          JSON.stringify(chargebackProtectionData)\n        )\n      );\n    if (chargebackProtectionAccountType)\n      url.searchParams.append(\n        'chargebackProtectionAccountType',\n        chargebackProtectionAccountType\n      );\n    if (deviceId) {\n      url.searchParams.append('deviceId', deviceId);\n    } else {\n      const deviceId = getNSureDeviceId();\n      if (deviceId) url.searchParams.append('deviceId', deviceId);\n    }\n\n    if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n    if (color) url.searchParams.append('color', color);\n    if (rent) url.searchParams.append('rent', rent.lamports.toString());\n    if (redemptionCheck) url.searchParams.append('redemptionCheck', 'true');\n    if (nativeSolToConvert)\n      url.searchParams.append(\n        'nativeSolToConvert',\n        nativeSolToConvert.lamports.toString()\n      );\n    if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n    if (planCode) url.searchParams.append('planCode', planCode);\n\n    if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n    if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n    if (settlementType)\n      url.searchParams.append('settlementType', settlementType);\n\n    if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n    if (usePermit === false) url.searchParams.append('usePermit', 'false');\n    if (transactionSigner)\n      url.searchParams.append('transactionSigner', transactionSigner);\n    if (authOnly === true) url.searchParams.append('authOnly', 'true');\n\n    // zeroAuthorizationConfig takes precedence over isZeroAuthorization\n    if (zeroAuthorizationConfig) {\n      url.searchParams.append(\n        'zeroAuthorizationConfig',\n        JSON.stringify(zeroAuthorizationConfig)\n      );\n    } else if (isZeroAuthorization === true) {\n      url.searchParams.append('isZeroAuthorization', 'true');\n    }\n\n    if (partialUsdcChecked === true)\n      url.searchParams.append('partialUsdcChecked', 'true');\n    if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n    if (origins)\n      url.searchParams.append(\n        'origins',\n        LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n      );\n\n    if (allowedPaymentMethods)\n      url.searchParams.append(\n        'allowedPaymentMethods',\n        allowedPaymentMethods.join(',')\n      );\n\n    if (depositAmounts)\n      url.searchParams.append('depositAmounts', depositAmounts.join(','));\n\n    if (threeDsChallengePreference)\n      url.searchParams.append(\n        'threeDsChallengePreference',\n        threeDsChallengePreference\n      );\n\n    if (destinationAuthKey)\n      url.searchParams.append('destinationAuthKey', destinationAuthKey);\n\n    if (accountFundingTransaction)\n      url.searchParams.append(\n        'accountFundingTransaction',\n        LZString.compressToEncodedURIComponent(\n          JSON.stringify(accountFundingTransaction)\n        )\n      );\n\n    if (allowedWithdrawSpeeds)\n      url.searchParams.append(\n        'allowedWithdrawSpeeds',\n        allowedWithdrawSpeeds.join(',')\n      );\n\n    if (userLocation) {\n      url.searchParams.append('lat', userLocation.lat.toString());\n      url.searchParams.append('lng', userLocation.lng.toString());\n    }\n\n    return url.toString();\n  }\n\n  static getCoinflowIntentsUrl({\n    baseUrl,\n    route,\n    color,\n    theme,\n    env,\n    origins,\n    deviceId,\n    merchantCss,\n    loaderBackground,\n    handleHeightChangeId,\n  }: CoinflowIntentsIFrameProps & {baseUrl?: string}): string {\n    const url = new URL(\n      route,\n      baseUrl ?? CoinflowUtils.getCoinflowBaseUrl(env)\n    );\n    if (origins)\n      url.searchParams.append(\n        'origins',\n        LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n      );\n    if (deviceId) {\n      url.searchParams.append('deviceId', deviceId);\n    } else {\n      const deviceId = getNSureDeviceId();\n      if (deviceId) url.searchParams.append('deviceId', deviceId);\n    }\n\n    if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n    if (color) url.searchParams.append('color', color);\n    if (loaderBackground) {\n      url.searchParams.append('loaderBackground', loaderBackground);\n    }\n\n    if (handleHeightChangeId) {\n      url.searchParams.append(\n        'useHeightChange',\n        handleHeightChangeId.toString()\n      );\n    }\n\n    if (theme) {\n      url.searchParams.append(\n        'theme',\n        LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n      );\n    }\n\n    return url.toString();\n  }\n\n  static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n    if (!props.blockchain) return undefined;\n\n    return this.byBlockchain<() => string | undefined>(props.blockchain, {\n      solana: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        if (!web3)\n          throw new Error('@solana/web3.js dependency is required for Solana');\n        if (!base58) throw new Error('bs58 dependency is required for Solana');\n        if (!transaction) return undefined;\n        return base58.encode(\n          Uint8Array.from(\n            (transaction as VersionedTransaction | Transaction).serialize({\n              requireAllSignatures: false,\n              verifySignatures: false,\n            })\n          )\n        );\n      },\n      polygon: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      eth: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      base: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      arbitrum: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      stellar: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        if (!transaction) return undefined;\n        // Transaction is already base64 XDR string, pass through directly\n        return transaction as string;\n      },\n      monad: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      tempo: () => {\n        if (!('transaction' in props)) return undefined;\n        const {transaction} = props;\n        return LZString.compressToEncodedURIComponent(\n          JSON.stringify(transaction)\n        );\n      },\n      user: () => {\n        return undefined;\n      },\n    })();\n  }\n\n  static byBlockchain<T>(\n    blockchain: CoinflowBlockchain,\n    args: {\n      solana: T;\n      eth: T;\n      polygon: T;\n      base: T;\n      arbitrum: T;\n      stellar: T;\n      monad: T;\n      tempo: T;\n      user: T;\n    }\n  ): T {\n    switch (blockchain) {\n      case 'solana':\n        return args.solana;\n      case 'polygon':\n        return args.polygon;\n      case 'eth':\n        return args.eth;\n      case 'base':\n        return args.base;\n      case 'arbitrum':\n        return args.arbitrum;\n      case 'stellar':\n        return args.stellar;\n      case 'monad':\n        return args.monad;\n      case 'tempo':\n        return args.tempo;\n      case 'user':\n        return args.user;\n      default:\n        throw new Error('blockchain not supported!');\n    }\n  }\n}\n\nexport interface FullName {\n  firstName: string;\n  lastName: string;\n}\n\nexport function getCustomerName(\n  info: CustomerInfo | undefined\n): FullName | undefined {\n  if (!info) return undefined;\n\n  let firstName: string | undefined, lastName: string | undefined;\n  if ('name' in info && info.name) {\n    firstName = info.name.split(' ')[0];\n    lastName = info.name.split(' ').slice(1).join(' ');\n  }\n\n  if ('firstName' in info && info.firstName) firstName = info.firstName;\n\n  if ('lastName' in info && info.lastName) lastName = info.lastName;\n\n  if (firstName && lastName)\n    return {\n      firstName,\n      lastName,\n    };\n  return undefined;\n}\n\nexport function recordFrontendError({\n  event,\n  error,\n  env,\n  merchantId,\n}: {\n  event: string;\n  error: any;\n  env: CoinflowEnvs;\n  merchantId?: string;\n}) {\n  const isError = error instanceof Error;\n  const message = isError ? error.message : error;\n  const stackTrace = isError ? error.stack : '';\n  fetch(\n    `${CoinflowUtils.getCoinflowApiUrl(env)}/api/telemetry/frontend-error`,\n    {\n      method: 'POST',\n      body: JSON.stringify({message, stackTrace, merchantId, event}),\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  ).catch(() => {});\n}\n","import {\n  AuthDeclinedWalletCallInfo,\n  CoinflowBlockchain,\n  CoinflowPurchaseProps,\n  EthWallet,\n  OnAuthDeclinedMethod,\n  OnSuccessMethod,\n  SolanaWallet,\n  StellarWallet,\n  WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n  | {method: IFrameMessageMethods; data: string}\n  | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n  method: IFrameMessageMethods.Success;\n  data: string;\n  info: {paymentId: string; hash?: string};\n};\n\ntype AuthDeclinedWalletCall = {\n  method: IFrameMessageMethods.AuthDeclined;\n  data: string;\n  info: AuthDeclinedWalletCallInfo;\n};\n\nexport interface IFrameMessageHandlers {\n  handleSendTransaction: (transaction: string) => Promise<string>;\n  handleSignMessage?: (message: string) => Promise<string>;\n  handleSignTransaction?: (transaction: string) => Promise<string>;\n  handleHeightChange?: (height: string) => void;\n  onSuccess: OnSuccessMethod | undefined;\n  onAuthDeclined: OnAuthDeclinedMethod | undefined;\n  /**\n   * Called when the iframe opens/closes an in-page overlay (e.g. the PayPal\n   * approval modal). `state` is 'open' or 'close'.\n   */\n  handleOverlay?: (state: string) => void;\n}\n\nexport enum IFrameMessageMethods {\n  SignMessage = 'signMessage',\n  SignTransaction = 'signTransaction',\n  SendTransaction = 'sendTransaction',\n  HeightChange = 'heightChange',\n  Success = 'success',\n  AuthDeclined = 'authDeclined',\n  Loaded = 'loaded',\n  AccountLinked = 'accountLinked',\n  Redirect = 'redirect',\n  Overlay = 'overlay',\n}\n\nexport function getWalletPubkey(\n  input: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain'>\n): string | null | undefined {\n  let wallet: WalletTypes | undefined;\n  if (\n    'signer' in input &&\n    typeof input.signer === 'object' &&\n    input.signer &&\n    'wallet' in input.signer\n  )\n    wallet = input.signer.wallet as WalletTypes;\n  else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n  if (!wallet) return;\n\n  if (typeof wallet === 'string') return wallet;\n\n  if (typeof wallet === 'object') {\n    if ('publicKey' in wallet)\n      return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n    if ('address' in wallet)\n      return wallet.address ? (wallet.address as string) : undefined;\n  }\n\n  return null;\n}\n\nexport function handleIFrameMessage(\n  rawMessage: string,\n  handlers: IFrameMessageHandlers,\n  handleHeightChangeId: string | number\n): Promise<string> | void {\n  let walletCall: WalletCall;\n  try {\n    walletCall = JSON.parse(rawMessage);\n    if (!('method' in walletCall) || !('data' in walletCall)) return;\n  } catch (e) {\n    console.error('handleIFrameMessage JSON parse', e);\n    return;\n  }\n\n  const {data, method} = walletCall;\n  switch (method) {\n    case IFrameMessageMethods.SignMessage:\n      if (!handlers.handleSignMessage) return;\n      return handlers.handleSignMessage(data);\n    case IFrameMessageMethods.SignTransaction:\n      if (!handlers.handleSignTransaction) return;\n      return handlers.handleSignTransaction(data);\n    case IFrameMessageMethods.SendTransaction:\n      return handlers.handleSendTransaction(data);\n    case IFrameMessageMethods.HeightChange + ':' + handleHeightChangeId:\n      if (!handlers.handleHeightChange) return;\n      return handlers.handleHeightChange(data);\n    case IFrameMessageMethods.Success:\n      if (!handlers.onSuccess) return;\n      handlers.onSuccess((walletCall as SuccessWalletCall).info);\n      return;\n    case IFrameMessageMethods.AuthDeclined:\n      if (!handlers.onAuthDeclined) return;\n      handlers.onAuthDeclined((walletCall as AuthDeclinedWalletCall).info);\n      return;\n    case IFrameMessageMethods.Loaded:\n      return;\n    case IFrameMessageMethods.AccountLinked:\n      return;\n    case IFrameMessageMethods.Redirect:\n      window.open(data, '_blank');\n      return;\n    case IFrameMessageMethods.Overlay:\n      if (!handlers.handleOverlay) return;\n      handlers.handleOverlay(data);\n      return;\n  }\n\n  console.warn(\n    `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n  );\n}\n\nexport function getHandlers(\n  props: Pick<\n    CoinflowPurchaseProps,\n    'wallet' | 'blockchain' | 'onSuccess' | 'onAuthDeclined'\n  >\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n  let chain: CoinflowBlockchain | undefined;\n  let wallet: WalletTypes | undefined;\n  if (\n    'signer' in props &&\n    typeof props.signer === 'object' &&\n    props.signer &&\n    'blockchain' in props.signer &&\n    'wallet' in props.signer\n  ) {\n    chain = props.signer.blockchain as CoinflowBlockchain;\n    wallet = props.signer.wallet as WalletTypes;\n  } else if ('blockchain' in props && props.blockchain) {\n    chain = props.blockchain;\n    wallet = props.wallet;\n  }\n\n  if (!chain) {\n    return {\n      handleSendTransaction: () => {\n        throw new Error('handleSendTransaction Not Implemented');\n      },\n      handleSignMessage: () => {\n        throw new Error('handleSendTransaction Not Implemented');\n      },\n      handleSignTransaction: () => {\n        throw new Error('handleSendTransaction Not Implemented');\n      },\n      onSuccess: props.onSuccess,\n      onAuthDeclined: props.onAuthDeclined,\n    };\n  }\n\n  return CoinflowUtils.byBlockchain(chain, {\n    solana: () =>\n      getSolanaWalletHandlers({\n        wallet: wallet as SolanaWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    eth: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    polygon: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    base: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    arbitrum: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    stellar: () =>\n      getStellarWalletHandlers({\n        wallet: wallet as StellarWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    monad: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    tempo: () =>\n      getEvmWalletHandlers({\n        wallet: wallet as EthWallet,\n        onSuccess: props.onSuccess,\n        onAuthDeclined: props.onAuthDeclined,\n      }),\n    user: () => getSessionKeyHandlers(props),\n  })();\n}\n\nfunction getSolanaWalletHandlers({\n  wallet,\n  onSuccess,\n  onAuthDeclined,\n}: {\n  wallet: SolanaWallet;\n  onSuccess: OnSuccessMethod | undefined;\n  onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n  return {\n    handleSendTransaction: async (transaction: string) => {\n      const tx = getSolanaTransaction(transaction);\n      return await wallet.sendTransaction(tx);\n    },\n    handleSignMessage: async (message: string) => {\n      const signMessage = wallet.signMessage;\n      if (!signMessage) {\n        throw new Error('signMessage is not supported by this wallet');\n      }\n\n      const signedMessage = await signMessage(\n        new TextEncoder().encode(message)\n      );\n      if (!base58) throw new Error('bs58 dependency is required');\n      return base58.encode(signedMessage);\n    },\n    handleSignTransaction: async (transaction: string) => {\n      const signTransaction = wallet.signTransaction;\n      if (!signTransaction) {\n        throw new Error('signTransaction is not supported by this wallet');\n      }\n      const tx = getSolanaTransaction(transaction);\n      const signedTransaction = await signTransaction(tx);\n      if (!base58) throw new Error('bs58 dependency is required');\n      return base58.encode(\n        Uint8Array.from(\n          signedTransaction.serialize({\n            requireAllSignatures: false,\n            verifySignatures: false,\n          })\n        )\n      );\n    },\n    onSuccess,\n    onAuthDeclined,\n  };\n}\n\nfunction getSolanaTransaction(\n  data: string\n): Transaction | VersionedTransaction {\n  if (!web3)\n    throw new Error(\n      '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n    );\n\n  if (!base58)\n    throw new Error(\n      'bs58 is not defined. Please install bs58 into your project'\n    );\n\n  const parsedUInt8Array = base58.decode(data);\n  const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n  if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n  return vtx;\n}\n\nfunction getEvmWalletHandlers({\n  wallet,\n  onSuccess,\n  onAuthDeclined,\n}: {\n  wallet: EthWallet;\n  onSuccess?: OnSuccessMethod;\n  onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n  return {\n    handleSendTransaction: async (transaction: string) => {\n      const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n      const {hash} = await wallet.sendTransaction(tx);\n      return hash;\n    },\n    handleSignMessage: async (message: string) => {\n      return wallet.signMessage(message);\n    },\n    onSuccess,\n    onAuthDeclined,\n  };\n}\n\nfunction getStellarWalletHandlers({\n  wallet,\n  onSuccess,\n  onAuthDeclined,\n}: {\n  wallet: StellarWallet;\n  onSuccess: OnSuccessMethod | undefined;\n  onAuthDeclined: OnAuthDeclinedMethod | undefined;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n  return {\n    handleSendTransaction: async (transaction: string) => {\n      // transaction is unsigned base64 XDR\n      // dapp needs to handle sending and confirming\n      throw new Error(\n        `sendTransaction is not supported on stellar, error when sending: ${transaction}`\n      );\n    },\n    handleSignMessage: async (message: string) => {\n      if (!wallet.signMessage) {\n        throw new Error('signMessage is not supported by this wallet');\n      }\n      // Returns base64-encoded signature\n      return await wallet.signMessage(message);\n    },\n    handleSignTransaction: async (transaction: string) => {\n      if (!wallet.signTransaction) {\n        throw new Error('signTransaction is not supported by this wallet');\n      }\n      // Returns signed base64 XDR\n      return await wallet.signTransaction(transaction);\n    },\n    onSuccess,\n    onAuthDeclined,\n  };\n}\n\nfunction getSessionKeyHandlers({\n  onSuccess,\n  onAuthDeclined,\n}: Pick<CoinflowPurchaseProps, 'onSuccess' | 'onAuthDeclined'>): Omit<\n  IFrameMessageHandlers,\n  'handleHeightChange'\n> {\n  return {\n    handleSendTransaction: async () => {\n      return Promise.resolve('');\n    },\n    onSuccess,\n    onAuthDeclined,\n  };\n}\n","export type EventBusCallback = (event: Event) => void;\n\nexport class EventBus {\n  public static on(type: string, callback: EventBusCallback) {\n    document.addEventListener(type, callback);\n  }\n\n  public static dispatch(type: string, data: any) {\n    document.dispatchEvent(new CustomEvent(type, {detail: data}));\n  }\n\n  public static remove(type: string, callback: EventBusCallback) {\n    document.removeEventListener(type, callback);\n  }\n}\n","// Type definitions for TokenEx iframe integration\n/// <reference path=\"./TokenEx.global.d.ts\" />\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport type {Properties as CSSProperties} from 'csstype';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n  tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n  [CardType.VISA]: 'visa',\n  [CardType.MASTERCARD]: 'masterCard',\n  [CardType.AMEX]: 'americanExpress',\n  [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n  origin: string;\n  timestamp: string;\n  tokenExID: string;\n  tokenScheme: string;\n  authenticationKey: string;\n  pci: true;\n  token?: string;\n  use3DS?: boolean;\n  threeDSMethodNotificationUrl?: string;\n}\n\nexport interface CardFormInputStyles {\n  base: CSSProperties | string;\n  placeholder?: CSSProperties | string;\n  focus?: CSSProperties | string;\n  error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n  token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n  env: CoinflowEnvs;\n  css: CardFormInputStyles & {cvv: CardFormInputStyles};\n  debug?: boolean;\n  origins: string[];\n  font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n  token: string;\n  cardType: CardType;\n  env: CoinflowEnvs;\n  css: CardFormInputStyles & {cvv: CardFormInputStyles};\n  debug?: boolean;\n  origins: string[];\n  font?: string;\n}\n\nexport interface VersionDetail {\n  threeDSMethodURL: string;\n  acsStartProtocolVersion: string;\n  acsEndProtocolVersion: string;\n  threeDSServerStartVersion: string;\n  threeDSServerEndVersion?: string;\n  acsInfoInd: [string];\n  directoryServerID: string;\n  dsStartProtocolVersion: string;\n  dsEndProtocolVersion: string;\n  dsIdentifier: string;\n  threeDSServerTransID: string;\n}\n\nexport interface TokenizationResponse {\n  cardType: string;\n  cvvIncluded: true;\n  firstSix: string;\n  lastFour: string;\n  referenceNumber: string;\n  token: string;\n  tokenHMAC: string;\n  recommended3dsVersion?: Record<string, string>;\n  threeDSecureResponse?: VersionDetail[];\n}\n","import type {Properties as CSSProperties} from 'csstype';\nimport {\n  TokenizationResponse,\n  TokenExCvvContainerID,\n  TokenExIframe,\n  TokenExIFrameConfiguration,\n  CARD_TYPE_MAPPING,\n  TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport type MerchantIdOrCheckoutJwt =\n  | {checkoutJwt: string}\n  | {merchantId: string};\n\nexport interface CommonDoInitializeTokenExIframeArgs {\n  css: string;\n  debug?: boolean;\n  font?: string;\n  origins: string[];\n  tokenExScriptLoaded: boolean;\n  env: CoinflowEnvs;\n  setCachedToken: (s: string | undefined) => void;\n  setLoaded: (b: boolean) => void;\n}\n\nexport type DoInitializeTokenExIframeArgs =\n  CommonDoInitializeTokenExIframeArgs & MerchantIdOrCheckoutJwt;\n\nexport type DoInitializeCvvOnlyTokenExIframeArgs =\n  DoInitializeTokenExIframeArgs & {\n    token: string;\n    cardType: CardType;\n  };\n\nexport type GetIFrameConfigArgs = {\n  token?: string;\n  origins: string[];\n  env: CoinflowEnvs;\n} & MerchantIdOrCheckoutJwt;\n\nexport async function getIframeConfig(\n  args: GetIFrameConfigArgs\n): Promise<TokenExIFrameConfiguration> {\n  const {token, origins, env} = args;\n  return new Promise((resolve, reject) => {\n    fetch(new CoinflowUtils(env).url + '/api/tokenize/iframe/config', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify({\n        origins,\n        token,\n        merchantId: 'merchantId' in args ? args.merchantId : undefined,\n        checkoutJwt: 'checkoutJwt' in args ? args.checkoutJwt : undefined,\n      }),\n    })\n      .then(async res => {\n        resolve((await res.json()) as TokenExIFrameConfiguration);\n      })\n      .catch(e => reject(e));\n  });\n}\n\nexport function setTokenExScriptTag({\n  env,\n  setTokenExScriptLoaded,\n}: {\n  env: CoinflowEnvs;\n  setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n  const scriptTagId = 'tokenex-script';\n  if (document.head.querySelector(`#${scriptTagId}`)) {\n    setTokenExScriptLoaded(true);\n  }\n\n  const sdkScriptTag = document.createElement('script');\n  sdkScriptTag.src =\n    env === 'prod'\n      ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n      : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n  sdkScriptTag.id = scriptTagId;\n\n  document.head.appendChild(sdkScriptTag);\n\n  document.getElementById(scriptTagId)!.addEventListener('load', () => {\n    console.log('Setting tokenExScriptLoaded to true!');\n    setTokenExScriptLoaded(true);\n  });\n}\n\nfunction loadIframe({\n  iframe,\n  setCachedToken,\n  setLoaded,\n}: {\n  setCachedToken: (s: string | undefined) => void;\n  setLoaded: (b: boolean) => void;\n  iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n  const tokenize = async (): Promise<TokenizationResponse> => {\n    iframe.tokenize();\n    return await new Promise<TokenizationResponse>((resolve, reject) => {\n      iframe.on('tokenize', (data: TokenizationResponse) => {\n        setCachedToken(data.token);\n        resolve(data);\n      });\n      iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n        // noinspection PointlessBooleanExpressionJS\n        const isInvalid = !data.isValid || data.isCvvValid === false;\n        if (isInvalid) reject(data);\n      });\n    });\n  };\n\n  iframe.on('change', () => setCachedToken(undefined));\n  iframe.on('cvvChange', () => setCachedToken(undefined));\n\n  iframe.on('load', () => {\n    setTimeout(() => setLoaded(true), 350);\n    const el: HTMLIFrameElement | null = document.querySelector(\n      '#tx_iframe_tokenExCardNumber'\n    );\n    if (el) {\n      // noinspection JSDeprecatedSymbols\n      el.scrolling = 'no';\n    }\n  });\n\n  iframe.on('focus', () => {\n    iframe.focus();\n  });\n  iframe.on('cvvFocus', () => {\n    iframe.cvvFocus();\n  });\n\n  setLoaded(false);\n  iframe.load();\n\n  return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n  args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n  const {token, cardType} = args;\n  return await doInitialize(TokenExCvvContainerID, args, {\n    cvvOnly: true,\n    cvv: true,\n    cvvContainerID: TokenExCvvContainerID,\n    placeholder: 'CVV',\n    token,\n    cardType: CARD_TYPE_MAPPING[cardType],\n  });\n}\n\nexport async function doInitializeTokenExIframe(\n  args: DoInitializeTokenExIframeArgs\n) {\n  return await doInitialize(TokenExCardNumberIframeId, args, {\n    cvv: true,\n    cvvContainerID: TokenExCvvContainerID,\n    cvvPlaceholder: 'CVV',\n  });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n  args: DoInitializeTokenExIframeArgs\n) {\n  return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n  id: string,\n  args: DoInitializeTokenExIframeArgs,\n  configOverrides: Partial<TokenEx.Config>\n) {\n  const {tokenExScriptLoaded, css, debug, font, setCachedToken, setLoaded} =\n    args;\n  if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n    console.warn(\n      'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n    );\n    return;\n  }\n  const iframeConfig = await getIframeConfig({\n    ...args,\n    token: configOverrides.token,\n  });\n  const {styles} = getStyles(css);\n  const config = {\n    ...iframeConfig,\n    placeholder: '0000 0000 0000 0000',\n    enablePrettyFormat: true,\n    styles,\n    font,\n    debug: debug ?? false,\n    ...configOverrides,\n  };\n  const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n  return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n  const css = JSON.parse(s);\n  const styles = {\n    base: CSSPropertiesToComponent(css.base),\n    focus: CSSPropertiesToComponent(css.focus),\n    error: CSSPropertiesToComponent(css.error),\n    placeholder: CSSPropertiesToComponent(css.placeholder),\n    cvv: {\n      base: CSSPropertiesToComponent(css.cvv?.base),\n      focus: CSSPropertiesToComponent(css.cvv?.focus),\n      error: CSSPropertiesToComponent(css.cvv?.error),\n      placeholder: CSSPropertiesToComponent(css?.placeholder),\n    },\n  };\n\n  return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n  dict: CSSProperties | string | undefined\n): string {\n  if (!dict) return '';\n  if (typeof dict === 'string') return dict;\n\n  let str = '';\n  for (const [key, value] of Object.entries(dict)) {\n    let clo = '';\n    key.split('').forEach(lt => {\n      if (lt.toUpperCase() === lt) {\n        clo += '-' + lt.toLowerCase();\n      } else {\n        clo += lt;\n      }\n    });\n    str += clo + ':' + value + ';';\n  }\n  return str;\n}\n","/**\n * Single source of truth for the card-entry responsive layout.\n *\n * The real card-entry form (`UnifiedCardEntry` in the core-flows app) and the\n * React/Vue/Angular skeleton loaders all render the same grid. Historically the\n * form drove the inline↔two-row switch from JS (a ResizeObserver toggling React\n * state) while the skeletons hard-coded their own guesses, so the two drifted.\n *\n * This module defines the grid templates and the breakpoint ONCE, as pure data\n * plus a CSS builder, so every consumer reflows at exactly the same width via a\n * CSS container query — no JS width measurement, nothing to keep in sync.\n */\n\nexport type CardEntryInputName = 'card-number' | 'expiration' | 'cvv';\n\n/**\n * Minimum width (px) each field needs before the row is too cramped and the\n * layout drops to two rows. Mirrors the real form's field sizing.\n */\nexport const CARD_ENTRY_MIN_WIDTHS: Record<CardEntryInputName, number> = {\n  'card-number': 180,\n  expiration: 96,\n  cvv: 80,\n};\n\n/** Notional gap (px) between fields, summed into the reflow breakpoint. */\nexport const CARD_ENTRY_SLOT_GAP_PX = 8;\n\n/** Field row height — matches the real form's `3rem` grid rows. */\nexport const CARD_ENTRY_ROW_HEIGHT = '3rem';\nexport const CARD_ENTRY_ROW_HEIGHT_PX = 48;\n/** 1px accent line between rows / between exp & cvv in the two-row layout. */\nexport const CARD_ENTRY_DIVIDER_PX = 1;\n/**\n * The form draws its fields inside a 1px border, so the query container (the\n * full iframe width) is 2px wider than the field row that `minRowWidth`\n * describes. The breakpoint bakes this in so form and skeleton flip together.\n */\nexport const CARD_ENTRY_BORDER_PX = 1;\n/**\n * The form insets its box by this much on every side (Tailwind `m-0.5`) so the\n * focus ring has room and isn't clipped at the iframe edge. It adds to the box's\n * rendered height, so the skeleton's height guess includes it to avoid a jump\n * when the loaded form replaces the skeleton.\n */\nexport const CARD_ENTRY_MARGIN_PX = 2;\n\n/** Inline (wide-layout) track width for each field. */\nconst INLINE_SLOT_WIDTH: Record<CardEntryInputName, string> = {\n  'card-number': '1fr',\n  expiration: '96px',\n  cvv: '80px',\n};\n\n/** grid-area name a field occupies. */\nconst FIELD_AREA: Record<CardEntryInputName, string> = {\n  'card-number': 'card',\n  expiration: 'exp',\n  cvv: 'cvv',\n};\n\nexport type CardEntryConfig = {\n  /** Mounted fields, in DOM/visual order. */\n  inputs: CardEntryInputName[];\n  /** Whether the animated card-brand icon renders left of the PAN slot. */\n  hasIcon?: boolean;\n  /** Whether the layout may drop to two rows when narrow (default true). */\n  allowTwoRow?: boolean;\n};\n\nexport type CardEntryDivider = {area: string; orientation: 'v' | 'h'};\n\nexport type CardEntryLayout = {\n  /** grid-template for the wide (inline) layout. */\n  inline: string;\n  /** grid-template for the narrow (two-row) layout, or null if it never reflows. */\n  twoRow: string | null;\n  /**\n   * Container width (px) below which the two-row layout applies, measured on the\n   * query container (full iframe width, incl. the form's border). Null when the\n   * config never reflows.\n   */\n  breakpointPx: number | null;\n  /** grid-area names that hold a field, in DOM order (same in both layouts). */\n  fieldAreas: string[];\n  /** Whether an `icon` area is present (both layouts). */\n  hasIconArea: boolean;\n  /** Accent-line elements shown only in the two-row layout. */\n  twoRowDividers: CardEntryDivider[];\n};\n\nfunction has(inputs: CardEntryInputName[], name: CardEntryInputName): boolean {\n  return inputs.includes(name);\n}\n\n/** The reflow breakpoint on the field row, before adding the form border. */\nfunction minRowWidthPx(inputs: CardEntryInputName[]): number {\n  const fields = inputs.reduce(\n    (sum, name) => sum + CARD_ENTRY_MIN_WIDTHS[name],\n    0\n  );\n  const gaps = Math.max(0, inputs.length - 1) * CARD_ENTRY_SLOT_GAP_PX;\n  return fields + gaps;\n}\n\n/** grid-template for the single-row inline layout. */\nfunction inlineTemplate({\n  inputs,\n  hasIcon,\n}: {\n  inputs: CardEntryInputName[];\n  hasIcon: boolean;\n}): string {\n  const areas: string[] = [];\n  const cols: string[] = [];\n  const pushSlot = (area: string, width: string) => {\n    if (areas.length > 0) {\n      areas.push(`d${area.toUpperCase()}`);\n      cols.push('1px');\n    }\n    areas.push(area);\n    cols.push(width);\n  };\n  if (hasIcon && has(inputs, 'card-number')) pushSlot('icon', 'auto');\n  for (const name of inputs)\n    pushSlot(FIELD_AREA[name], INLINE_SLOT_WIDTH[name]);\n  return `\"${areas.join(' ')}\" ${CARD_ENTRY_ROW_HEIGHT} / ${cols.join(' ')}`;\n}\n\n/** grid-template + dividers for the two-row layout (PAN on top). */\nfunction twoRowTemplate({\n  inputs,\n  hasIcon,\n}: {\n  inputs: CardEntryInputName[];\n  hasIcon: boolean;\n}): {template: string; dividers: CardEntryDivider[]} | null {\n  const showsCard = has(inputs, 'card-number');\n  const showsExp = has(inputs, 'expiration');\n  const showsCvv = has(inputs, 'cvv');\n  if (!showsCard || (!showsExp && !showsCvv)) return null;\n\n  const rows = `${CARD_ENTRY_ROW_HEIGHT} ${CARD_ENTRY_DIVIDER_PX}px ${CARD_ENTRY_ROW_HEIGHT}`;\n\n  if (showsExp && showsCvv) {\n    const areas = hasIcon\n      ? '\"icon card card card\" \"dHR dHR dHR dHR\" \"exp exp dEV cvv\"'\n      : '\"card card card\" \"dHR dHR dHR\" \"exp dEV cvv\"';\n    const cols = hasIcon\n      ? 'auto minmax(0, 1fr) 1px minmax(0, 1fr)'\n      : 'minmax(0, 1fr) 1px minmax(0, 1fr)';\n    return {\n      template: gridShorthand(areas, rows, cols),\n      dividers: [\n        {area: 'dHR', orientation: 'h'},\n        {area: 'dEV', orientation: 'v'},\n      ],\n    };\n  }\n\n  const onlyBottom = showsExp ? 'exp' : 'cvv';\n  const areas = hasIcon\n    ? `\"icon card\" \"dHR dHR\" \"${onlyBottom} ${onlyBottom}\"`\n    : `\"card\" \"dHR\" \"${onlyBottom}\"`;\n  const cols = hasIcon ? 'auto minmax(0, 1fr)' : 'minmax(0, 1fr)';\n  return {\n    template: gridShorthand(areas, rows, cols),\n    dividers: [{area: 'dHR', orientation: 'h'}],\n  };\n}\n\n/**\n * Compose a `grid-template` shorthand from a multi-row areas string, a matching\n * row-size list, and the column list — e.g. `\"a\" \"b\" 3rem 1px / 1fr`.\n */\nfunction gridShorthand(areas: string, rows: string, cols: string): string {\n  const areaRows = areas.match(/\"[^\"]*\"/g) ?? [];\n  const rowSizes = rows.split(/\\s+/);\n  const withRowSizes = areaRows\n    .map((row, i) => `${row} ${rowSizes[i] ?? ''}`.trim())\n    .join(' ');\n  return `${withRowSizes} / ${cols}`;\n}\n\n/** Resolve the full layout (templates + breakpoint + areas) for a config. */\nexport function buildCardEntryLayout({\n  inputs,\n  hasIcon = false,\n  allowTwoRow = true,\n}: CardEntryConfig): CardEntryLayout {\n  const fieldAreas = inputs.map(name => FIELD_AREA[name]);\n\n  // A lone field fills the width and never reflows (matches the real form's\n  // single-input case — the fixed slot width and the icon are ignored).\n  if (inputs.length === 1) {\n    return {\n      inline: `\"${fieldAreas[0]}\" ${CARD_ENTRY_ROW_HEIGHT} / 1fr`,\n      twoRow: null,\n      breakpointPx: null,\n      fieldAreas,\n      hasIconArea: false,\n      twoRowDividers: [],\n    };\n  }\n\n  const hasIconArea = hasIcon && has(inputs, 'card-number');\n  const inline = inlineTemplate({inputs, hasIcon: hasIconArea});\n  const twoRow = allowTwoRow\n    ? twoRowTemplate({inputs, hasIcon: hasIconArea})\n    : null;\n\n  return {\n    inline,\n    twoRow: twoRow?.template ?? null,\n    breakpointPx: twoRow\n      ? minRowWidthPx(inputs) + 2 * CARD_ENTRY_BORDER_PX\n      : null,\n    fieldAreas,\n    hasIconArea,\n    twoRowDividers: twoRow?.dividers ?? [],\n  };\n}\n\n/**\n * Container-query CSS that switches `gridSelector` between the inline and\n * two-row templates at the layout's breakpoint. The element matched by\n * `gridSelector` must be a descendant of a `container-type: inline-size`\n * ancestor named `containerName`.\n *\n * `extraBaseRules` are emitted before the `@container` block (e.g. the default\n * hidden state of two-row-only dividers); `extraCompactRules` are emitted inside\n * it (e.g. revealing those dividers / hiding wide-only chrome). Keeping the base\n * state first ensures the compact rules win when the query matches.\n */\nexport function buildCardEntryGridCss({\n  gridSelector,\n  layout,\n  containerName,\n  extraBaseRules = '',\n  extraCompactRules = '',\n}: {\n  gridSelector: string;\n  layout: CardEntryLayout;\n  containerName?: string;\n  extraBaseRules?: string;\n  extraCompactRules?: string;\n}): string {\n  const base = `${gridSelector} { display: grid; grid-template: ${layout.inline}; }\n${extraBaseRules}`;\n  if (!layout.twoRow || layout.breakpointPx === null) return base;\n  const container = containerName ? `${containerName} ` : '';\n  return `${base}\n@container ${container}(width < ${layout.breakpointPx}px) {\n  ${gridSelector} { grid-template: ${layout.twoRow}; }\n  ${extraCompactRules}\n}`;\n}\n","/**\n * Framework-agnostic definitions for the V2 card-form skeleton loader.\n *\n * The React, Vue, and Angular libraries all render the same skeleton while the\n * card-form iframe loads. The grid templates and breakpoint come from the shared\n * {@link buildCardEntryLayout} — the SAME source of truth the real form uses —\n * so the skeleton reflows at exactly the width the loaded form does. Only the\n * box styling and per-framework wiring live here.\n */\n\nimport {\n  buildCardEntryGridCss,\n  buildCardEntryLayout,\n  CardEntryInputName,\n  CardEntryLayout,\n  CARD_ENTRY_BORDER_PX,\n  CARD_ENTRY_DIVIDER_PX,\n  CARD_ENTRY_MARGIN_PX,\n  CARD_ENTRY_ROW_HEIGHT_PX,\n} from './cardEntryLayout';\n\nexport type CardFormVariant = 'card-form' | 'card-number-form' | 'cvv-form';\n\n/** Which fields each iframe variant mounts. */\nconst VARIANT_INPUTS: Record<CardFormVariant, CardEntryInputName[]> = {\n  'card-form': ['card-number', 'expiration', 'cvv'],\n  'card-number-form': ['card-number', 'expiration'],\n  'cvv-form': ['cvv'],\n};\n\n// The iframe skeletons render without the optional card-brand icon.\nconst CARD_ENTRY_LAYOUTS: Record<CardFormVariant, CardEntryLayout> = {\n  'card-form': buildCardEntryLayout({inputs: VARIANT_INPUTS['card-form']}),\n  'card-number-form': buildCardEntryLayout({\n    inputs: VARIANT_INPUTS['card-number-form'],\n  }),\n  'cvv-form': buildCardEntryLayout({inputs: VARIANT_INPUTS['cvv-form']}),\n};\n\n// Iframe height (px) to guess before it reports its real height. Matches the\n// form's rendered height so the skeleton→form swap doesn't jump: field row(s) +\n// the 1px border and the box's `m-0.5` margin on top and bottom.\nconst CARD_ENTRY_VERTICAL_CHROME_PX =\n  2 * CARD_ENTRY_BORDER_PX + 2 * CARD_ENTRY_MARGIN_PX;\nexport const INLINE_SKELETON_HEIGHT_PX =\n  CARD_ENTRY_ROW_HEIGHT_PX + CARD_ENTRY_VERTICAL_CHROME_PX;\n/** Two-row layouts are a second field row plus the 1px divider taller. */\nexport const COMPACT_SKELETON_HEIGHT_PX =\n  2 * CARD_ENTRY_ROW_HEIGHT_PX +\n  CARD_ENTRY_DIVIDER_PX +\n  CARD_ENTRY_VERTICAL_CHROME_PX;\n\nexport type SkeletonLayout = {\n  /** Single-row grid used at the iframe's default (wide) width. */\n  inline: string;\n  /** Two-row grid applied below `compactMaxWidthPx`; omitted when it never reflows. */\n  compact?: string;\n  /** Container width (px) below which the two-row grid applies. */\n  compactMaxWidthPx?: number;\n  /** grid-area names to render one skeleton box for, in DOM order (same in both layouts). */\n  areas: string[];\n};\n\nfunction toSkeletonLayout(layout: CardEntryLayout): SkeletonLayout {\n  return {\n    inline: layout.inline,\n    compact: layout.twoRow ?? undefined,\n    compactMaxWidthPx: layout.breakpointPx ?? undefined,\n    areas: layout.fieldAreas,\n  };\n}\n\nexport const SKELETON_LAYOUTS: Record<CardFormVariant, SkeletonLayout> = {\n  'card-form': toSkeletonLayout(CARD_ENTRY_LAYOUTS['card-form']),\n  'card-number-form': toSkeletonLayout(CARD_ENTRY_LAYOUTS['card-number-form']),\n  'cvv-form': toSkeletonLayout(CARD_ENTRY_LAYOUTS['cvv-form']),\n};\n\n/** Name of the shared pulse keyframes; referenced by the box `animation`. */\nexport const SKELETON_PULSE_ANIMATION_NAME =\n  'coinflow-card-form-skeleton-pulse';\n\n/**\n * Duration (ms) of the skeleton's opacity fade-out. Matches the `opacity 300ms`\n * transition each renderer applies. Renderers unmount the skeleton on\n * `transitionend`, but that event can be skipped (reduced-motion, an ancestor\n * `display:none`, or opacity already 0) — so they also use this as a fallback\n * timeout to force the unmount and avoid a stuck (invisible) skeleton.\n */\nexport const SKELETON_FADE_MS = 300;\n\n/**\n * Whether the given container width would trigger the variant's two-row layout.\n * Mirrors the real form's container query (`width < breakpoint`). Variants\n * without a two-row layout never reflow.\n */\nexport function shouldStackSkeleton({\n  variant,\n  width,\n}: {\n  variant: CardFormVariant;\n  width: number;\n}): boolean {\n  const {compact, compactMaxWidthPx} = SKELETON_LAYOUTS[variant];\n  return (\n    compact !== undefined &&\n    compactMaxWidthPx !== undefined &&\n    width > 0 &&\n    width < compactMaxWidthPx\n  );\n}\n\n/**\n * Height to guess before the iframe reports its real height. The two-row layout\n * is a field row plus divider taller than the inline one.\n */\nexport function guessSkeletonHeightPx({\n  variant,\n  width,\n}: {\n  variant: CardFormVariant;\n  width: number;\n}): number {\n  return shouldStackSkeleton({variant, width})\n    ? COMPACT_SKELETON_HEIGHT_PX\n    : INLINE_SKELETON_HEIGHT_PX;\n}\n\n/**\n * The `grid-template` to apply for the given container width. Frameworks that\n * drive the layout from JS (Vue, Angular) call this from their resize observer;\n * React instead injects a CSS container query via {@link buildSkeletonCss}.\n */\nexport function getSkeletonGridTemplate({\n  variant,\n  width,\n}: {\n  variant: CardFormVariant;\n  width: number;\n}): string {\n  const {inline, compact} = SKELETON_LAYOUTS[variant];\n  if (compact && shouldStackSkeleton({variant, width})) return compact;\n  return inline;\n}\n\n/** Stable class name for a variant's skeleton grid element. */\nexport function getSkeletonGridClass(variant: CardFormVariant): string {\n  return `coinflow-card-form-skeleton-grid--${variant}`;\n}\n\n/**\n * CSS (keyframes + grid + container-query breakpoint) for the container-query\n * driven renderer used by React, where the skeleton root is a query container.\n */\nexport function buildSkeletonCss(variant: CardFormVariant): string {\n  const gridClass = getSkeletonGridClass(variant);\n  const grid = buildCardEntryGridCss({\n    gridSelector: `.${gridClass}`,\n    layout: CARD_ENTRY_LAYOUTS[variant],\n    extraBaseRules: `.${gridClass} { gap: 0; flex: 1; }`,\n  });\n  return `@keyframes ${SKELETON_PULSE_ANIMATION_NAME} {0%,100%{opacity:1}50%{opacity:0.4}}\n${grid}`;\n}\n\n/**\n * Padding (px) to inset the skeleton grid by, applied on the skeleton root. It\n * equals the form's own chrome — its `m-0.5` margin plus 1px border — so the\n * boxes land in the same area the real fields will, and the grid fills the root\n * exactly (no dead space that would make the boxes look too short).\n */\nexport const SKELETON_ROOT_PADDING_PX =\n  CARD_ENTRY_MARGIN_PX + CARD_ENTRY_BORDER_PX;\n\n/**\n * Inline style for each skeleton box, MINUS the `background` — the fill color is\n * theme-dependent (see {@link getSkeletonColors}) so each renderer merges it in.\n * A hairline margin keeps a subtle gap between boxes while letting them fill\n * nearly the full field height (the root padding handles the outer inset). Uses\n * string units so it renders identically in React, Vue, and Angular.\n */\nexport const SKELETON_BOX_STYLE = {\n  minWidth: '0',\n  margin: '1px',\n  borderRadius: '4px',\n  opacity: '1',\n  animation: `${SKELETON_PULSE_ANIMATION_NAME} 1.5s ease-in-out infinite`,\n} as const;\n\nexport type SkeletonColors = {\n  /** Faint backdrop behind the boxes. */\n  backdrop: string;\n  /** Box fill. */\n  box: string;\n};\n\n// Dark surface → light skeleton; light surface → dark skeleton (the original\n// look); unknown → a neutral mid-grey that reads on either.\nconst DARK_SURFACE_COLORS: SkeletonColors = {\n  backdrop: 'rgba(255, 255, 255, 0.05)',\n  box: 'rgba(255, 255, 255, 0.30)',\n};\nconst LIGHT_SURFACE_COLORS: SkeletonColors = {\n  backdrop: 'rgba(0, 0, 0, 0.04)',\n  box: 'rgba(0, 0, 0, 0.30)',\n};\nconst NEUTRAL_COLORS: SkeletonColors = {\n  backdrop: 'rgba(128, 128, 128, 0.08)',\n  box: 'rgba(128, 128, 128, 0.38)',\n};\n\n/** Parse a hex (#rgb/#rrggbb/#rrggbbaa) or rgb()/rgba() string to [r,g,b]. */\nfunction parseRgb(color: string): [number, number, number] | null {\n  const c = color.trim().toLowerCase();\n  let hex = c.startsWith('#') ? c.slice(1) : '';\n  if (hex && /^[0-9a-f]+$/.test(hex)) {\n    if (hex.length === 3)\n      hex = hex\n        .split('')\n        .map(x => x + x)\n        .join('');\n    if (hex.length === 8) hex = hex.slice(0, 6);\n    if (hex.length === 6)\n      return [\n        parseInt(hex.slice(0, 2), 16),\n        parseInt(hex.slice(2, 4), 16),\n        parseInt(hex.slice(4, 6), 16),\n      ];\n  }\n  const m = c.match(/rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)/);\n  if (m) return [Number(m[1]), Number(m[2]), Number(m[3])];\n  return null;\n}\n\n/**\n * Best-effort skeleton palette. The skeleton renders in the SDK (parent), so it\n * can't see the form's resolved colors — it only has the optional `theme` the\n * integrator passed. When `theme.background` is a parseable color we tint the\n * skeleton light-on-dark or dark-on-light to match; otherwise we fall back to a\n * neutral mid-grey that stays visible on any surface.\n */\nexport function getSkeletonColors(theme?: {\n  background?: string;\n}): SkeletonColors {\n  const rgb = theme?.background ? parseRgb(theme.background) : null;\n  if (!rgb) return NEUTRAL_COLORS;\n  const [r, g, b] = rgb;\n  const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n  return luminance < 0.5 ? DARK_SURFACE_COLORS : LIGHT_SURFACE_COLORS;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* oxlint-disable */\n\nimport {AnyObject} from './AnyObject';\nimport {SellerInfo} from './CartitemCommon';\n\n/**\n * An nft cart item\n */\nexport type nftCartItem = {\n  /**\n   * Denotes the cart item class. The item schema is chosen based on this value\n   */\n  itemClass: 'nft';\n  /**\n   * The name of the related product\n   *\n   * @minLength 1\n   */\n  productName: string;\n  /**\n   * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n   */\n  productType: productType;\n  /**\n   * The item's list price\n   */\n  listPrice?: {\n    /**\n     * The amount in the currency, which is specified in the `currency` property\n     */\n    valueInCurrency?: number;\n    /**\n     * Currency specified as a three letter code according to ISO 4217\n     */\n    currency?: string;\n  };\n  /**\n   * The item's list price\n   */\n  sellingPrice: {\n    /**\n     * The amount in the currency, which is specified in the `currency` property\n     */\n    valueInCurrency?: number;\n    /**\n     * Currency specified as a three-letter code according to ISO 4217\n     */\n    currency?: string;\n  };\n  /**\n   * The number of units sold\n   */\n  quantity: number;\n  /**\n   * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n   */\n  rawProductData?: AnyObject;\n  seller?: SellerInfo;\n  transactionHistory?: TransactionHistoryItem[];\n};\n\ntype TransactionHistoryItem = {\n  txHash: string;\n  blockNumber: number;\n  txTime: string;\n  assetID: string;\n  registryContract: string;\n  from: string;\n  to: string;\n  paymentToken: string;\n  paymentAmount: string;\n  chain: string;\n  txType: string;\n};\n\nexport type productType =\n  | 'inGameProduct'\n  | 'gameOfSkill'\n  | 'dataStorage'\n  | 'computingResources'\n  | 'sportsTicket'\n  | 'eSportsTicket'\n  | 'musicTicket'\n  | 'conferenceTicket'\n  | 'virtualSportsTicket'\n  | 'virtualESportsTicket'\n  | 'virtualMusicTicket'\n  | 'virtualConferenceTicket'\n  | 'alcohol'\n  | 'DLC'\n  | 'subscription'\n  | 'fundACause'\n  | 'realEstate'\n  | 'computingContract'\n  | 'digitalArt'\n  | 'topUp'\n  | 'ownershipContract'\n  | 'inGameCurrency'\n  | 'digitalCollectibles'\n  | 'digitalCollectiblesMarketplace'\n  | 'digitalGiftingMarketplace'\n  | 'sweepstakes'\n  | 'virtualSportsEvents'\n  | 'contractInvoicing'\n  | 'onlineCasino'\n  | 'cryptoOnramp'\n  | 'gaming'\n  | 'travelDocuments'\n  | 'musicStreaming'\n  | 'digitalContent'\n  | 'eBooks'\n  | 'digitalSubscriptionContent';\n\nexport namespace nftCartItem {\n  /**\n   * Denotes the cart item class. The item schema is chosen based on this value\n   */\n  export enum itemClass {\n    NFT = 'nft',\n  }\n\n  /**\n   * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n   */\n  export enum productType {\n    IN_GAME_PRODUCT = 'inGameProduct',\n    GAME_OF_SKILL = 'gameOfSkill',\n    DATA_STORAGE = 'dataStorage',\n    COMPUTING_RESOURCES = 'computingResources',\n    SPORTS_TICKET = 'sportsTicket',\n    E_SPORTS_TICKET = 'eSportsTicket',\n    MUSIC_TICKET = 'musicTicket',\n    CONFERENCE_TICKET = 'conferenceTicket',\n    VIRTUAL_SPORTS_TICKET = 'virtualSportsTicket',\n    VIRTUAL_ESPORTS_TICKET = 'virtualESportsTicket',\n    VIRTUAL_MUSIC_TICKET = 'virtualMusicTicket',\n    VIRTUAL_CONFERENCE_TICKET = 'virtualConferenceTicket',\n    ALCOHOL = 'alcohol',\n    DLC = 'DLC',\n    SUBSCRIPTION = 'subscription',\n    FUND_ACAUSE = 'fundACause',\n    REAL_ESTATE = 'realEstate',\n    COMPUTING_CONTRACT = 'computingContract',\n    DIGITAL_ART = 'digitalArt',\n    TOP_UP = 'topUp',\n    OWNERSHIP_CONTRACT = 'ownershipContract',\n    IN_GAME_CURRENCY = 'inGameCurrency',\n    MONEY_TOP_UP_CART_ITEM = 'moneyTopUpCartItem',\n  }\n}\n","import {CoinflowEnvs} from './CoinflowTypes';\nimport {recordFrontendError} from './CoinflowUtils';\n\ndeclare global {\n  interface Window {\n    Verisoul?: {\n      session: () => Promise<{session_id: string}>;\n    };\n  }\n}\n\nlet cachedSessionId: string | null = null;\n\nexport async function initProtectionSession({\n  merchantId,\n  env,\n}: {\n  merchantId: string;\n  env: CoinflowEnvs;\n}): Promise<void> {\n  if (cachedSessionId) return;\n\n  if (typeof window !== 'undefined') {\n    try {\n      const result = await window.Verisoul?.session();\n      if (result?.session_id) cachedSessionId = result.session_id;\n    } catch (e) {\n      console.error(e);\n      recordFrontendError({event: 'ProtectionInit', env, merchantId, error: e});\n    }\n  }\n}\n\nexport function getProtectionSessionId(): string | null {\n  return cachedSessionId;\n}\n\nexport default getProtectionSessionId;\n","const FORTER_COOKIE_NAME = 'forterToken';\n\n// Defense-in-depth: the attacker-influenceable cookie is later sent as the `x-forter-token` header / Forter `forterTokenCookie`; since tokens are opaque, long, uncontrolled-alphabet strings, don't use a narrow allowlist — just bound the length and reject control / CR / LF chars that could enable header injection.\nconst MAX_FORTER_TOKEN_LENGTH = 1024;\n// eslint-disable-next-line no-control-regex\nconst FORTER_TOKEN_UNSAFE_PATTERN = /[\\x00-\\x1F\\x7F]/;\n\n// Forter sets the `forterToken` cookie asynchronously and some WebViews (notably React Native) only surface it transiently/late, so a just-in-time checkout read often comes back empty even when nSure and Verisoul succeed; cache and prefer the captured token (see captureForterToken) as Verisoul does, and keep it current latest-wins since Forter re-emits a more complete token after its handshake (later `ftr:tokenReady` events overwrite it and the cookie poll keeps refreshing) rather than freezing on the first partial token.\nlet cachedForterToken: string | null = null;\n// Whether `cachedForterToken` came from the authoritative `ftr:tokenReady` event, the reliable source in cross-origin iframes / WebViews where the cookie is partitioned or stale, so a cookie read must never clobber an event-sourced value.\nlet cachedFromEvent = false;\n// Ensures only one cookie-poll loop runs at a time (captureForterToken can be called from several mounted protection components).\nlet pollActive = false;\n\nfunction sanitizeForterToken(raw: string | undefined | null): string | null {\n  if (!raw) return null;\n  let token = raw;\n  try {\n    token = decodeURIComponent(raw);\n  } catch {\n    // keep raw if it isn't valid percent-encoding\n  }\n  if (!token) return null;\n  if (token.length > MAX_FORTER_TOKEN_LENGTH) return null;\n  if (FORTER_TOKEN_UNSAFE_PATTERN.test(token)) return null;\n  return token;\n}\n\n// Reads the Forter cookie. Matches `forterToken` exactly, then falls back to any `*forter*token*` cookie name in case Forter changes/prefixes it.\nfunction readForterCookie(): string | null {\n  if (typeof document === 'undefined' || !document.cookie) return null;\n\n  let fallback: string | null = null;\n  for (const part of document.cookie.split(';')) {\n    const eq = part.indexOf('=');\n    if (eq === -1) continue;\n    const name = part.slice(0, eq).trim();\n    const value = part.slice(eq + 1);\n    if (name === FORTER_COOKIE_NAME) return value;\n    const lower = name.toLowerCase();\n    if (lower.includes('forter') && lower.includes('token')) fallback = value;\n  }\n  return fallback;\n}\n\nexport function getForterToken(): string | null {\n  return cachedForterToken ?? sanitizeForterToken(readForterCookie());\n}\n\n// Forter dispatches `ftr:tokenReady` on `document` with the token in `event.detail` once computed; this is cookie-INDEPENDENT and so the reliable source in cross-origin iframes / WebViews where the forterToken cookie is partitioned/blocked (the cookie still works as a fallback on web).\nconst FORTER_TOKEN_READY_EVENT = 'ftr:tokenReady';\n\nfunction handleForterTokenReady(event: Event): void {\n  const detail = (event as CustomEvent<unknown>).detail;\n  const token = typeof detail === 'string' ? sanitizeForterToken(detail) : null;\n  if (!token) return;\n  // Latest-wins: stay subscribed so each re-emission overwrites the cache with the newer, more complete token (see note on cachedForterToken).\n  cachedForterToken = token;\n  cachedFromEvent = true;\n}\n\n// Capture and cache the Forter token shortly after the SDK script is injected so it is available to getForterToken() by checkout time: primary source is the `ftr:tokenReady` event and the cookie is polled as a fallback, and if neither surfaces log a diagnostic (cookie names + Forter globals only — never values) to reveal whether the SDK exposes the token at all in this context.\nexport function captureForterToken({\n  timeoutMs = 15_000,\n  intervalMs = 250,\n}: {timeoutMs?: number; intervalMs?: number} = {}): void {\n  if (typeof window === 'undefined') return;\n\n  // Stay subscribed for the page lifetime so every `ftr:tokenReady` overwrites the cache (latest-wins); addEventListener dedupes the same handler, so calling this from multiple mounts registers it only once.\n  if (typeof document !== 'undefined') {\n    document.addEventListener(FORTER_TOKEN_READY_EVENT, handleForterTokenReady);\n  }\n\n  if (pollActive) return;\n  pollActive = true;\n\n  const start = Date.now();\n  const tick = () => {\n    // Keep refreshing from the cookie (latest-wins among cookie reads) until the window closes, but never clobber an event-sourced token — the event is authoritative where the cookie is partitioned / stale.\n    if (!cachedFromEvent) {\n      const token = sanitizeForterToken(readForterCookie());\n      if (token) cachedForterToken = token;\n    }\n    if (Date.now() - start >= timeoutMs) {\n      pollActive = false;\n      if (!cachedForterToken) logForterTokenMissing();\n      return;\n    }\n    window.setTimeout(tick, intervalMs);\n  };\n  tick();\n}\n\nfunction logForterTokenMissing(): void {\n  if (typeof document === 'undefined') return;\n  const cookieNames = (document.cookie || '')\n    .split(';')\n    .map(part => part.split('=')[0].trim())\n    .filter(Boolean);\n  const forterGlobals =\n    typeof window !== 'undefined'\n      ? Object.keys(window).filter(key => /ftr|forter/i.test(key))\n      : [];\n  console.warn(\n    '[forter] token never surfaced after init.',\n    'cookieNames:',\n    cookieNames,\n    'forterGlobals:',\n    forterGlobals\n  );\n}\n\n// Resolve once a Forter token is available, or after `timeoutMs` if it never surfaces: Forter issues its device token asynchronously (~1s after the SDK loads, via `ftr:tokenReady` / forterToken cookie), so a fast charge — notably saved-card / \"1-click\" purchases — can read getForterToken() before it exists and send an empty x-forter-token, so await this at charge time to populate the header; fail-open by resolving to whatever getForterToken() returns at the deadline (possibly null) rather than blocking the purchase, and return immediately when a token is already cached so it adds no latency in the common case.\nexport async function awaitForterToken({\n  timeoutMs = 2_000,\n  intervalMs = 100,\n}: {timeoutMs?: number; intervalMs?: number} = {}): Promise<string | null> {\n  const existing = getForterToken();\n  if (existing) return existing;\n  if (typeof window === 'undefined') return null;\n\n  return new Promise<string | null>(resolve => {\n    const start = Date.now();\n    const poll = () => {\n      const token = getForterToken();\n      if (token) return resolve(token);\n      if (Date.now() - start >= timeoutMs) return resolve(getForterToken());\n      window.setTimeout(poll, intervalMs);\n    };\n    window.setTimeout(poll, intervalMs);\n  });\n}\n\nexport default getForterToken;\n","import getNSureDeviceId from './NSure';\nimport {getProtectionSessionId} from './CoinflowProtectionSession';\nimport getForterToken from './Forter';\n\nexport const DEVICE_ID_HEADER = 'x-device-id';\nexport const SESSION_ID_HEADER = 'x-session-id';\nexport const REFERRER_HEADER = 'x-coinflow-referrer';\nexport const FORTER_TOKEN_HEADER = 'x-forter-token';\n\nexport type CoinflowProtectionHeadersType = {\n  [DEVICE_ID_HEADER]: string | null;\n  [SESSION_ID_HEADER]: string | null;\n  [FORTER_TOKEN_HEADER]: string | null;\n};\n\nexport function getCoinflowProtectionHeaders(): CoinflowProtectionHeadersType {\n  return {\n    [DEVICE_ID_HEADER]: getNSureDeviceId(),\n    [SESSION_ID_HEADER]: getProtectionSessionId(),\n    [FORTER_TOKEN_HEADER]: getForterToken(),\n  };\n}\n\nfunction getReferrer(): string | null {\n  try {\n    return document.referrer || null;\n  } catch {\n    return null;\n  }\n}\n\nexport type CoinflowPurchaseHeadersType = CoinflowProtectionHeadersType & {\n  [REFERRER_HEADER]: string | null;\n};\n\nexport function getCoinflowPurchaseHeaders(): CoinflowPurchaseHeadersType {\n  return {\n    ...getCoinflowProtectionHeaders(),\n    [REFERRER_HEADER]: getReferrer(),\n  };\n}\n","import nsureSDK from '@nsure-ai/web-client-sdk';\nimport {CoinflowUtils, recordFrontendError} from './CoinflowUtils';\nimport {initProtectionSession} from './CoinflowProtectionSession';\nimport {CoinflowEnvs} from './CoinflowTypes';\n\nconst NSURE_APP_ID = '9JBW2RHC7JNJN8ZQ';\n\nconst PROTECTION_SESSION_PROJECT_IDS: Record<string, string> = {\n  prod: '315da543-c486-435a-aa21-53844c469822',\n  sandbox: 'e9f629c4-80ee-4c6d-967e-62af47d8679e',\n};\n\nexport async function initCoinflowProtection({\n  coinflowEnv,\n  merchantId,\n}: {\n  coinflowEnv: CoinflowEnvs;\n  merchantId: string;\n}): Promise<void> {\n  const env = coinflowEnv === 'prod' ? 'prod' : 'sandbox';\n\n  const hasUrlDeviceId =\n    typeof window !== 'undefined' &&\n    new URLSearchParams(window.location.search).has('deviceId');\n\n  if (!hasUrlDeviceId) {\n    const partnerId = await new CoinflowUtils(coinflowEnv).getNSurePartnerId(\n      merchantId\n    );\n    if (partnerId) {\n      const appId = NSURE_APP_ID;\n      try {\n        nsureSDK.init(appId, partnerId);\n      } catch (e) {\n        console.error('Failed to initialize nSure SDK:', e);\n        recordFrontendError({\n          event: 'NSureInit',\n          error: e,\n          env: coinflowEnv,\n          merchantId,\n        });\n      }\n    }\n  }\n\n  // Initialize protection session (Verisoul)\n  if (typeof document !== 'undefined') {\n    const existing = document.querySelector('script[verisoul-project-id]');\n    if (!existing) {\n      const projectId =\n        PROTECTION_SESSION_PROJECT_IDS[env] ??\n        PROTECTION_SESSION_PROJECT_IDS['sandbox'];\n      if (projectId) {\n        await new Promise<void>(resolve => {\n          const script = document.createElement('script');\n          script.src = `https://js.v.coinflow.sh/${env}/bundle.js`;\n          script.async = true;\n          script.setAttribute('verisoul-project-id', projectId);\n          script.onload = () => {\n            initProtectionSession({merchantId, env: coinflowEnv}).then(resolve);\n          };\n          script.onerror = e => {\n            recordFrontendError({\n              event: 'ProtectionError',\n              error: e,\n              env: coinflowEnv,\n              merchantId,\n            });\n            resolve();\n          };\n          document.head.appendChild(script);\n        });\n      }\n    }\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport {\n  CoinflowIFrameProps,\n  CoinflowUtils,\n  handleIFrameMessage,\n  IFrameMessageHandlers,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-coinflow-iframe',\n  standalone: true,\n  imports: [],\n  template: ` <iframe\n    width=\"100%\"\n    height=\"100%\"\n    #iframe\n    scrolling=\"{{ iframeProps?.handleHeightChangeId ? 'no' : 'yes' }}\"\n    allow=\"payment;camera;clipboard-write;geolocation\"\n    title=\"withdraw\"\n    frameBorder=\"0\"\n    [src]=\"dynamicUrl\"\n    credentialless\n    (load)=\"handleIframeLoad()\"\n  ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n  @Input() iframeProps!: CoinflowIFrameProps;\n  @Input() messageHandlers!: IFrameMessageHandlers;\n  @Input() onLoad?: () => void | Promise<void>;\n  @Input() waitForLoadedMessage?: boolean;\n\n  @Output() messageEvent = new EventEmitter<any>();\n\n  dynamicUrl?: SafeResourceUrl;\n  @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n  private isLoading = true;\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n    this.dynamicUrl =\n      this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n  }\n\n  @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n    if (\n      !event.origin.includes(\n        CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n      )\n    )\n      return;\n\n    this.messageEvent.emit(event);\n\n    if (this.waitForLoadedMessage) {\n      try {\n        const message = JSON.parse(event.data);\n        if (\n          message &&\n          typeof message === 'object' &&\n          message.method === 'loaded'\n        ) {\n          this.isLoading = false;\n          this.onLoad?.();\n        }\n      } catch (error) {\n        // Ignore parse errors\n      }\n    }\n\n    const promise = handleIFrameMessage(\n      event.data,\n      this.messageHandlers,\n      this.iframeProps.handleHeightChangeId\n    );\n    if (!promise) return;\n    promise\n      .then(this.sendMessage.bind(this))\n      .catch(e => this.sendMessage('ERROR ' + e.message));\n  }\n\n  sendMessage(message: string) {\n    if (!this.iframe || !this.iframe.nativeElement) return;\n    this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n  }\n\n  handleIframeLoad() {\n    if (this.waitForLoadedMessage) return;\n\n    this.isLoading = false;\n    this.onLoad?.();\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n  CoinflowIFrameProps,\n  CoinflowPurchaseProps,\n  CoinflowUtils,\n  getHandlers,\n  getWalletPubkey,\n  IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\n\n@Component({\n  selector: 'lib-coinflow-purchase',\n  standalone: true,\n  imports: [CoinflowIFrameComponent],\n  template:\n    ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"purchaseProps?.onLoad\" [waitForLoadedMessage]=\"true\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n  @Input() purchaseProps!: CoinflowPurchaseProps & WithOnLoad;\n  iframeProps?: CoinflowIFrameProps;\n  messageHandlers?: IFrameMessageHandlers;\n\n  ngOnInit() {\n    const walletPubkey = getWalletPubkey(this.purchaseProps);\n    this.messageHandlers = getHandlers(this.purchaseProps);\n    this.messageHandlers.handleHeightChange =\n      this.purchaseProps.handleHeightChange;\n\n    const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n    this.iframeProps = {\n      ...this.purchaseProps,\n      walletPubkey,\n      route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n      transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n      handleHeightChangeId,\n    };\n  }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n  selector: 'lib-coinflow-purchase-history',\n  standalone: true,\n  imports: [],\n  template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n  selector: 'lib-coinflow-purchase-protection',\n  standalone: true,\n  imports: [],\n  template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n  CoinflowIFrameProps,\n  CoinflowWithdrawProps,\n  getHandlers,\n  getWalletPubkey,\n  IFrameMessageHandlers,\n} from './common';\nimport {WithOnLoad} from '../public-api';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n  selector: 'lib-coinflow-withdraw',\n  standalone: true,\n  imports: [CoinflowIFrameComponent],\n  template:\n    '  <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\" [onLoad]=\"withdrawProps?.onLoad\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n  @Input() withdrawProps!: CoinflowWithdrawProps & WithOnLoad;\n  iframeProps?: CoinflowIFrameProps;\n  messageHandlers?: IFrameMessageHandlers;\n\n  ngOnInit() {\n    const walletPubkey = getWalletPubkey(this.withdrawProps);\n    this.messageHandlers = getHandlers(this.withdrawProps);\n    this.messageHandlers.handleHeightChange =\n      this.withdrawProps.handleHeightChange;\n\n    const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n    this.iframeProps = {\n      ...this.withdrawProps,\n      walletPubkey,\n      route: `/withdraw/${this.withdrawProps?.merchantId}`,\n      transaction: undefined,\n      handleHeightChangeId,\n    };\n  }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n  selector: 'lib-coinflow-withdraw-history',\n  standalone: true,\n  imports: [],\n  template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n  doInitializeCvvOnlyTokenExIframe,\n  doInitializeTokenExCardOnlyIframe,\n  doInitializeTokenExIframe,\n  MerchantIdOrCheckoutJwt,\n  TokenExIframe,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CardFormService {\n  loaded = false;\n  tokenExIframe: TokenExIframe | undefined = undefined;\n\n  setTokenExIframe(iframe: TokenExIframe | undefined) {\n    this.tokenExIframe = iframe;\n  }\n\n  setCachedToken() {}\n\n  setLoaded(input: boolean) {\n    this.loaded = input;\n  }\n\n  async initializeCvvOnlyTokenExIframe(\n    args: Omit<\n      Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n      'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n    > &\n      MerchantIdOrCheckoutJwt\n  ) {\n    const iframe = await doInitializeCvvOnlyTokenExIframe({\n      ...args,\n      tokenExScriptLoaded: true,\n      setCachedToken: this.setCachedToken.bind(this),\n      setLoaded: this.setLoaded.bind(this),\n    });\n    this.setTokenExIframe(iframe);\n    if (iframe) iframe.load();\n    return iframe;\n  }\n\n  async initializeTokenExIframe(\n    args: Omit<\n      Parameters<typeof doInitializeTokenExIframe>[0],\n      'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n    > &\n      MerchantIdOrCheckoutJwt\n  ) {\n    console.log('initializeTokenExIframe');\n    const iframe = await doInitializeTokenExIframe({\n      ...args,\n      tokenExScriptLoaded: true,\n      setCachedToken: this.setCachedToken.bind(this),\n      setLoaded: this.setLoaded.bind(this),\n    });\n    console.log('iframe', iframe);\n    this.setTokenExIframe(iframe);\n    if (iframe) iframe.load();\n    console.log('LOADED');\n    return iframe;\n  }\n\n  async initializeTokenExCardOnlyIframe(\n    args: Omit<\n      Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n      'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n    > &\n      MerchantIdOrCheckoutJwt\n  ) {\n    const iframe = await doInitializeTokenExCardOnlyIframe({\n      ...args,\n      tokenExScriptLoaded: true,\n      setCachedToken: this.setCachedToken.bind(this),\n      setLoaded: this.setLoaded.bind(this),\n    });\n    this.setTokenExIframe(iframe);\n    if (iframe) iframe.load();\n    return iframe;\n  }\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n  CoinflowCardNumberInputProps,\n  MerchantIdOrCheckoutJwt,\n  setTokenExScriptTag,\n  TokenExCardNumberIframeId,\n  TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n  selector: 'lib-coinflow-card-number-input',\n  standalone: true,\n  imports: [],\n  template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput implements OnDestroy {\n  private cardFormService = inject(CardFormService);\n  @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n  private iframe: TokenExIframe | undefined = undefined;\n\n  private onScriptLoaded() {\n    this.cardFormService\n      .initializeTokenExIframe({\n        ...this.args,\n        css: JSON.stringify(this.args.css),\n      })\n      .then(iframe => (this.iframe = iframe))\n      .catch(e => console.error(e));\n  }\n\n  private initializeTokenEx() {\n    setTokenExScriptTag({\n      env: this.args.env,\n      setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n    });\n  }\n\n  public reinitialize() {\n    this.iframe = undefined;\n    this.initializeTokenEx();\n  }\n\n  ngOnInit() {\n    this.initializeTokenEx();\n  }\n\n  ngOnDestroy() {\n    this.iframe = undefined;\n  }\n\n  tokenize() {\n    return this.iframe!.tokenize();\n  }\n\n  protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input, OnDestroy} from '@angular/core';\nimport {\n  CoinflowCardNumberInputProps,\n  MerchantIdOrCheckoutJwt,\n  setTokenExScriptTag,\n  TokenExCardNumberIframeId,\n  TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n  selector: 'lib-coinflow-card-number-only-input',\n  standalone: true,\n  imports: [],\n  template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput implements OnDestroy {\n  private cardFormService = inject(CardFormService);\n  @Input() args!: CoinflowCardNumberInputProps & MerchantIdOrCheckoutJwt;\n  private iframe: TokenExIframe | undefined = undefined;\n\n  private onScriptLoaded() {\n    this.cardFormService\n      .initializeTokenExCardOnlyIframe({\n        ...this.args,\n        css: JSON.stringify(this.args.css),\n      })\n      .then(iframe => (this.iframe = iframe))\n      .catch(e => console.error(e));\n  }\n\n  private initializeTokenEx() {\n    setTokenExScriptTag({\n      env: this.args.env,\n      setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n    });\n  }\n\n  public reinitialize() {\n    this.iframe = undefined;\n    this.initializeTokenEx();\n  }\n\n  ngOnInit() {\n    this.initializeTokenEx();\n  }\n\n  ngOnDestroy() {\n    this.iframe = undefined;\n  }\n\n  tokenize() {\n    return this.iframe!.tokenize();\n  }\n\n  protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n  selector: 'lib-coinflow-cvv-input',\n  standalone: true,\n  imports: [],\n  template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n  protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n  Component,\n  inject,\n  Input,\n  OnDestroy,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  CoinflowCvvOnlyInputProps,\n  MerchantIdOrCheckoutJwt,\n  setTokenExScriptTag,\n  TokenExCvvContainerID,\n  TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n  selector: 'lib-coinflow-cvv-only-input',\n  standalone: true,\n  imports: [],\n  template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent implements OnDestroy {\n  private cardFormService = inject(CardFormService);\n  @Input() args!: CoinflowCvvOnlyInputProps & MerchantIdOrCheckoutJwt;\n  private iframe: TokenExIframe | undefined = undefined;\n\n  private onScriptLoaded() {\n    this.cardFormService\n      .initializeCvvOnlyTokenExIframe({\n        ...this.args,\n        css: JSON.stringify(this.args.css),\n      })\n      .then(iframe => {\n        this.iframe = iframe;\n      })\n      .catch(e => console.error(e));\n  }\n\n  private cleanup() {\n    if (this.iframe) {\n      const iframeElement = document.querySelector(`#${TokenExCvvContainerID}`);\n      if (iframeElement) iframeElement.innerHTML = '';\n      this.iframe = undefined;\n    }\n  }\n\n  private initializeTokenEx() {\n    setTokenExScriptTag({\n      env: this.args.env,\n      setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.args && !changes.args.firstChange) {\n      this.reinitialize();\n    }\n  }\n\n  public reinitialize() {\n    this.cleanup();\n    setTimeout(() => {\n      this.initializeTokenEx();\n    }, 500);\n  }\n\n  ngOnInit() {\n    this.initializeTokenEx();\n  }\n\n  ngOnDestroy() {\n    this.iframe = undefined;\n  }\n\n  tokenize() {\n    return this.iframe!.tokenize();\n  }\n\n  protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport {NgStyle} from '@angular/common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport LZString from 'lz-string';\nimport {\n  CardFormVariant,\n  CoinflowEnvs,\n  CoinflowUtils,\n  getSkeletonColors,\n  getSkeletonGridTemplate,\n  guessSkeletonHeightPx,\n  IFrameMessageMethods,\n  INLINE_SKELETON_HEIGHT_PX,\n  MerchantTheme,\n  SKELETON_BOX_STYLE,\n  SKELETON_FADE_MS,\n  SKELETON_LAYOUTS,\n  SKELETON_ROOT_PADDING_PX,\n  SkeletonLayout,\n} from '../common';\n\nexport interface CardFormArgs {\n  merchantId: string;\n  env?: CoinflowEnvs;\n  theme?: MerchantTheme;\n  variant: CardFormVariant;\n  token?: string;\n  onLoad?: () => void;\n}\n\nexport interface CardFormTokenResponse {\n  token: string;\n  expMonth?: string;\n  expYear?: string;\n}\n\n@Component({\n  selector: 'lib-coinflow-card-form',\n  standalone: true,\n  imports: [NgStyle],\n  styles: [\n    `\n      @keyframes coinflow-card-form-skeleton-pulse {\n        0%,\n        100% {\n          opacity: 1;\n        }\n        50% {\n          opacity: 0.4;\n        }\n      }\n    `,\n  ],\n  template: `<div\n    #wrapper\n    [style.position]=\"'relative'\"\n    [style.width]=\"'100%'\"\n    [style.height]=\"height\"\n  >\n    @if (rendered) {\n    <div\n      role=\"status\"\n      aria-label=\"Loading card form\"\n      (transitionend)=\"onSkeletonTransitionEnd($event)\"\n      [ngStyle]=\"skeletonRootStyle\"\n    >\n      <div [ngStyle]=\"gridStyle\">\n        @for (area of areas; track area) {\n        <div [ngStyle]=\"boxStyle(area)\"></div>\n        }\n      </div>\n    </div>\n    }\n    <iframe\n      #cardFormIframe\n      [src]=\"url\"\n      title=\"Card Form\"\n      frameBorder=\"0\"\n      allow=\"payment\"\n      [style.width]=\"'100%'\"\n      [style.height]=\"height\"\n      [style.border]=\"'none'\"\n      [style.opacity]=\"loaded ? 1 : 0\"\n      [style.transition]=\"'opacity 300ms linear, height 150ms ease-out'\"\n    ></iframe>\n  </div>`,\n})\nexport class CoinflowCardForm implements OnInit, OnDestroy {\n  @Input() args!: CardFormArgs;\n  @ViewChild('cardFormIframe', {static: true})\n  iframeRef!: ElementRef<HTMLIFrameElement>;\n  @ViewChild('wrapper', {static: true})\n  wrapperRef!: ElementRef<HTMLElement>;\n\n  url?: SafeResourceUrl;\n  loaded = false;\n  iframeHeight: number | null = null;\n\n  // Guess the skeleton height/layout from the iframe's width until it reports\n  // its real height: compact (stacked) layouts are twice as tall as inline.\n  private layout!: SkeletonLayout;\n  areas: string[] = [];\n  private guessHeight = INLINE_SKELETON_HEIGHT_PX;\n  private gridTemplate = '';\n\n  // Keep the skeleton mounted while it fades out so the opacity transition can\n  // play, then unmount on transition end. Remount instantly when shown again.\n  rendered = true;\n\n  private observer: ResizeObserver | null = null;\n  private unmountTimer: ReturnType<typeof setTimeout> | null = null;\n\n  constructor(private sanitizer: DomSanitizer, private zone: NgZone) {}\n\n  ngOnInit() {\n    this.layout = SKELETON_LAYOUTS[this.args.variant];\n    this.areas = this.layout.areas;\n    this.gridTemplate = this.layout.inline;\n    this.buildUrl();\n    this.observeWidth();\n  }\n\n  ngOnDestroy() {\n    this.observer?.disconnect();\n    if (this.unmountTimer) clearTimeout(this.unmountTimer);\n  }\n\n  get height(): string {\n    return this.loaded && this.iframeHeight\n      ? `${this.iframeHeight}px`\n      : `${this.guessHeight}px`;\n  }\n\n  get skeletonRootStyle() {\n    return {\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      width: '100%',\n      height: '100%',\n      display: 'flex',\n      pointerEvents: 'none',\n      flexDirection: 'column',\n      gap: '8px',\n      padding: `${SKELETON_ROOT_PADDING_PX}px`,\n      boxSizing: 'border-box',\n      borderRadius: '8px',\n      background: this.skeletonColors.backdrop,\n      opacity: this.loaded ? '0%' : '100%',\n      transition: 'opacity 300ms linear, height 150ms ease-out',\n    };\n  }\n\n  get gridStyle() {\n    return {\n      display: 'grid',\n      gap: 0,\n      flex: 1,\n      width: '100%',\n      gridTemplate: this.gridTemplate,\n    };\n  }\n\n  // Best-effort skeleton tint from the merchant theme's background (neutral when\n  // absent), so the loader reads on light and dark forms alike.\n  get skeletonColors() {\n    return getSkeletonColors(this.args.theme);\n  }\n\n  boxStyle(area: string) {\n    return {\n      ...SKELETON_BOX_STYLE,\n      background: this.skeletonColors.box,\n      gridArea: area,\n    };\n  }\n\n  @HostListener('window:message', ['$event'])\n  onMessage(event: MessageEvent) {\n    // Only honor messages from THIS instance's iframe. Multiple card forms on\n    // one page each listen on `window`, so without this every instance would\n    // apply every other iframe's height/loaded events to itself.\n    if (event.source !== this.iframeRef?.nativeElement?.contentWindow) return;\n    this.handleMessage(event.data, event.origin);\n  }\n\n  onSkeletonTransitionEnd(e: TransitionEvent) {\n    if (e.propertyName === 'opacity' && this.loaded) this.rendered = false;\n  }\n\n  private observeWidth() {\n    // Measure the wrapper div, not the iframe: a freshly-mounted <iframe> is a\n    // replaced element with an intrinsic 300px default width before its\n    // width:100% resolves, which would briefly (and wrongly) trip the compact\n    // breakpoint. A block div reports the true container width immediately.\n    const el = this.wrapperRef?.nativeElement;\n    if (!el || !this.layout.compact) return;\n\n    const measure = () => {\n      const width = el.clientWidth;\n      this.guessHeight = guessSkeletonHeightPx({\n        variant: this.args.variant,\n        width,\n      });\n      this.gridTemplate = getSkeletonGridTemplate({\n        variant: this.args.variant,\n        width,\n      });\n    };\n    measure();\n    this.observer = new ResizeObserver(() => this.zone.run(measure));\n    this.observer.observe(el);\n  }\n\n  private buildUrl() {\n    const baseUrl = CoinflowUtils.getCoinflowBaseUrl(this.args.env);\n    const iframeUrl = new URL(`/form/v2/${this.args.variant}`, baseUrl);\n    iframeUrl.searchParams.append('merchantId', this.args.merchantId);\n    iframeUrl.searchParams.append('useHeightChange', 'true');\n    if (this.args.theme) {\n      iframeUrl.searchParams.append(\n        'theme',\n        LZString.compressToEncodedURIComponent(JSON.stringify(this.args.theme))\n      );\n    }\n    if (this.args.token) {\n      iframeUrl.searchParams.append('token', this.args.token);\n    }\n    this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\n      iframeUrl.toString()\n    );\n  }\n\n  private handleMessage(data: string, origin: string) {\n    const expectedOrigin = new URL(\n      CoinflowUtils.getCoinflowBaseUrl(this.args.env)\n    ).origin;\n    if (origin !== expectedOrigin) return;\n    try {\n      const parsed = JSON.parse(data);\n      if (parsed.method === IFrameMessageMethods.Loaded) {\n        this.loaded = true;\n        this.args.onLoad?.();\n        // Fallback unmount: `transitionend` may never fire (reduced-motion, an\n        // ancestor display:none, or opacity already 0), so force cleanup after\n        // the fade window.\n        if (this.unmountTimer) clearTimeout(this.unmountTimer);\n        this.unmountTimer = setTimeout(() => {\n          this.zone.run(() => (this.rendered = false));\n        }, SKELETON_FADE_MS);\n      } else if (parsed.method === IFrameMessageMethods.HeightChange) {\n        const parsedHeight = Number(parsed.data);\n        if (Number.isFinite(parsedHeight) && parsedHeight > 0) {\n          this.iframeHeight = parsedHeight;\n        }\n      }\n    } catch {\n      // not JSON\n    }\n  }\n\n  tokenize(): Promise<CardFormTokenResponse> {\n    return new Promise((resolve, reject) => {\n      const iframe = this.iframeRef?.nativeElement;\n      if (!iframe?.contentWindow) {\n        reject(new Error('Card form iframe not loaded'));\n        return;\n      }\n\n      const handler = (event: MessageEvent) => {\n        const {data, origin} = event;\n        const expectedOrigin = new URL(\n          CoinflowUtils.getCoinflowBaseUrl(this.args.env)\n        ).origin;\n        if (origin !== expectedOrigin) return;\n        try {\n          const parsed = JSON.parse(data);\n          if (parsed.method !== 'tokenize') return;\n\n          window.removeEventListener('message', handler);\n\n          if (\n            typeof parsed.data === 'string' &&\n            parsed.data.startsWith('ERROR')\n          ) {\n            reject(new Error(parsed.data.replace('ERROR ', '')));\n            return;\n          }\n\n          const responseData =\n            typeof parsed.data === 'string'\n              ? JSON.parse(parsed.data)\n              : parsed.data;\n          resolve(responseData);\n        } catch {\n          // not relevant\n        }\n      };\n\n      window.addEventListener('message', handler);\n      const targetOrigin = new URL(\n        CoinflowUtils.getCoinflowBaseUrl(this.args.env)\n      ).origin;\n      iframe.contentWindow.postMessage('tokenize', targetOrigin);\n    });\n  }\n}\n\n/** @deprecated Use CoinflowCardForm instead */\nexport const CoinflowCardFormV2 = CoinflowCardForm;\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n  CoinflowIFrameProps,\n  CoinflowPurchaseProps,\n  CoinflowUtils,\n  getHandlers,\n  getWalletPubkey,\n  IFrameMessageHandlers,\n} from '../common';\nimport {WithOnLoad} from '../../public-api';\n\n@Component({\n  selector: 'lib-coinflow-mobile-wallet-button',\n  standalone: true,\n  imports: [CoinflowIFrameComponent],\n  template: ` <div style=\"position: relative; height: 100%;\">\n    <div\n      [style.background-color]=\"purchaseProps.color\"\n      [style.display]=\"overlayDisplayOverride ?? display\"\n      [style.opacity]=\"opacity\"\n      [style.align-items]=\"alignItems\"\n      style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n    >\n      <ng-content></ng-content>\n    </div>\n    <div style=\"position: relative; z-index: 10; height: 100%;\">\n      <lib-coinflow-iframe\n        (messageEvent)=\"handleMessage($event)\"\n        ng-if=\"iframeProps && messageHandlers\"\n        [iframeProps]=\"iframeProps!\"\n        [messageHandlers]=\"messageHandlers!\"\n        [onLoad]=\"purchaseProps?.onLoad\"\n        [waitForLoadedMessage]=\"true\"\n      ></lib-coinflow-iframe>\n    </div>\n  </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n  @Input() purchaseProps!: CoinflowPurchaseProps &\n    WithOnLoad & {\n      color: 'white' | 'black';\n      onError?: (message: string) => void;\n    };\n\n  @Input() route!: string;\n  @Input() overlayDisplayOverride: string | undefined;\n  @Input() alignItems: string | undefined;\n  opacity: number = 0.8;\n  display: string = 'flex';\n\n  iframeProps?: CoinflowIFrameProps;\n  messageHandlers?: IFrameMessageHandlers;\n\n  handleMessage({data}: {data: string}) {\n    try {\n      const res = JSON.parse(data);\n\n      console.log({data});\n      if ('method' in res && res.data.startsWith('ERROR')) {\n        this.purchaseProps.onError?.(res.info);\n        return;\n      }\n\n      if ('method' in res && res.method === 'loaded') {\n        this.opacity = 1;\n        setTimeout(() => {\n          this.display = 'none';\n        }, 2000);\n      }\n    } catch (e) {}\n  }\n\n  ngOnInit() {\n    const walletPubkey = getWalletPubkey(this.purchaseProps);\n    this.messageHandlers = getHandlers(this.purchaseProps);\n    this.messageHandlers.handleHeightChange =\n      this.purchaseProps.handleHeightChange;\n\n    const handleHeightChangeId = Math.random().toString(16).substring(2);\n\n    this.iframeProps = {\n      ...this.purchaseProps,\n      walletPubkey,\n      route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n      routePrefix: 'form',\n      transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n      handleHeightChangeId,\n    };\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n  selector: 'lib-coinflow-apple-pay-button',\n  standalone: true,\n  imports: [CoinflowMobileWalletButtonComponent],\n  template: ` <lib-coinflow-mobile-wallet-button\n    ng-if=\"iframeProps && messageHandlers\"\n    [purchaseProps]=\"purchaseProps\"\n    route=\"apple-pay\"\n  >\n    <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n      <svg\n        id=\"svg-logo\"\n        x=\"0\"\n        y=\"3.85\"\n        height=\"7.3\"\n        width=\"35\"\n        className=\"logo\"\n        viewBox=\"0 0 105 43\"\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      >\n        <title>Apple Logo</title>\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n          <g [attr.fill]=\"fill()\">\n            <path\n              d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n            ></path>\n            <path\n              d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n            ></path>\n            <path\n              d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n            ></path>\n            <path\n              d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n            ></path>\n            <path\n              d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n            ></path>\n          </g>\n        </g>\n      </svg>\n    </svg>\n  </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n  @Input() purchaseProps!: CoinflowPurchaseProps & {\n    color: 'white' | 'black';\n    onError?: (message: string) => void;\n  };\n\n  fill() {\n    return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n  }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n  selector: 'coinflow-google-pay-overlay',\n  standalone: true,\n  imports: [],\n  template: `\n    @if (color === 'white') {\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n        <g fill=\"none\" fill-rule=\"evenodd\">\n          <path\n            d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n            fill=\"#5F6368\"\n          />\n          <path\n            d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n            fill=\"#4285F4\"\n          />\n          <path\n            d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n            fill=\"#34A853\"\n          />\n          <path\n            d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n            fill=\"#FABB05\"\n          />\n          <path\n            d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n            fill=\"#E94235\"\n          />\n          <path d=\"M0 0h41.285v18H0z\" />\n        </g>\n      </svg>\n    } @else {\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n        <g fill=\"none\" fill-rule=\"evenodd\">\n          <path\n            d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n            fill=\"#FFF\"\n          />\n          <path\n            d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n            fill=\"#4285F4\"\n          />\n          <path\n            d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n            fill=\"#34A853\"\n          />\n          <path\n            d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n            fill=\"#FABB05\"\n          />\n          <path\n            d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n            fill=\"#E94235\"\n          />\n        </g>\n      </svg>\n    }\n  `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n  @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n  selector: 'lib-coinflow-google-pay-button',\n  standalone: true,\n  imports: [\n    CoinflowMobileWalletButtonComponent,\n    CoinflowGooglePayOverlayComponent,\n  ],\n  template: `<lib-coinflow-mobile-wallet-button\n    ng-if=\"iframeProps && messageHandlers\"\n    [purchaseProps]=\"purchaseProps\"\n    route=\"google-pay\"\n    alignItems=\"center\"\n    overlayDisplayOverride=\"flex\"\n  >\n    <coinflow-google-pay-overlay\n      [color]=\"purchaseProps.color\"\n    ></coinflow-google-pay-overlay>\n  </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n  @Input() purchaseProps!: CoinflowPurchaseProps & {\n    color: 'white' | 'black';\n    onError?: (message: string) => void;\n  };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\nexport * from './lib/card-form/coinflow-card-form-v2.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n\nexport * from './lib/common';\n\nexport type WithOnLoad = {\n  onLoad?: () => void | Promise<void>;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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AA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AAEX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EA9JW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAgKb,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK;AACrB,IA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"}