@coinflowlabs/angular 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,6 +4,14 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
4
4
 
5
5
  # Changelog
6
6
 
7
+ ## 1.3.2
8
+
9
+ - Internal change to a query parameter name for zero authorization
10
+
11
+ ## 1.3.1
12
+
13
+ - Added `redemptionCheck` to purchase (Solana only)
14
+
7
15
  ## 1.3.0
8
16
 
9
17
  - Added `allowedWithdrawSpeeds` query parameter to allow merchants to specify what withdraw speeds are allowed. The default is all.
@@ -3,6 +3,7 @@ import { EventEmitter, HostListener, ViewChild, Output, Input, Component, Inject
3
3
  import * as SolanaWeb3Js from '@solana/web3.js';
4
4
  import base58Imported from 'bs58';
5
5
  import LZString from 'lz-string';
6
+ import nsureSDK from '@nsure-ai/web-client-sdk';
6
7
  import * as i1 from '@angular/platform-browser';
7
8
 
8
9
  var WithdrawCategory;
@@ -20,6 +21,9 @@ var WithdrawSpeed;
20
21
  WithdrawSpeed["PIX"] = "pix";
21
22
  WithdrawSpeed["EFT"] = "eft";
22
23
  WithdrawSpeed["VENMO"] = "venmo";
24
+ WithdrawSpeed["PAYPAL"] = "paypal";
25
+ WithdrawSpeed["WIRE"] = "wire";
26
+ WithdrawSpeed["INTERAC"] = "interac";
23
27
  })(WithdrawSpeed || (WithdrawSpeed = {}));
24
28
  var SettlementType;
25
29
  (function (SettlementType) {
@@ -52,7 +56,22 @@ var PaymentMethods;
52
56
  PaymentMethods["credits"] = "credits";
53
57
  PaymentMethods["crypto"] = "crypto";
54
58
  PaymentMethods["instantBankTransfer"] = "instantBankTransfer";
59
+ PaymentMethods["wire"] = "wire";
55
60
  })(PaymentMethods || (PaymentMethods = {}));
61
+ const paymentMethodLabels = {
62
+ [PaymentMethods.card]: 'Card',
63
+ [PaymentMethods.ach]: 'ACH',
64
+ [PaymentMethods.fasterPayments]: 'Faster Payments',
65
+ [PaymentMethods.sepa]: 'SEPA',
66
+ [PaymentMethods.pix]: 'PIX',
67
+ [PaymentMethods.usdc]: 'USDC',
68
+ [PaymentMethods.googlePay]: 'Google Pay',
69
+ [PaymentMethods.applePay]: 'Apple Pay',
70
+ [PaymentMethods.credits]: 'Credits',
71
+ [PaymentMethods.crypto]: 'Crypto',
72
+ [PaymentMethods.instantBankTransfer]: 'Instant Bank Transfer',
73
+ [PaymentMethods.wire]: 'Wire Transfer',
74
+ };
56
75
  var CardType;
57
76
  (function (CardType) {
58
77
  CardType["VISA"] = "VISA";
@@ -81,6 +100,7 @@ var Currency;
81
100
  Currency["AED"] = "AED";
82
101
  Currency["AFN"] = "AFN";
83
102
  Currency["ALL"] = "ALL";
103
+ Currency["AMD"] = "AMD";
84
104
  Currency["ANG"] = "ANG";
85
105
  Currency["AOA"] = "AOA";
86
106
  Currency["ARS"] = "ARS";
@@ -214,6 +234,7 @@ var Currency;
214
234
  Currency["UZS"] = "UZS";
215
235
  Currency["VND"] = "VND";
216
236
  Currency["VUV"] = "VUV";
237
+ Currency["WST"] = "WST";
217
238
  Currency["XAF"] = "XAF";
218
239
  Currency["XCD"] = "XCD";
219
240
  Currency["XOF"] = "XOF";
@@ -222,11 +243,21 @@ var Currency;
222
243
  Currency["ZAR"] = "ZAR";
223
244
  Currency["ZMW"] = "ZMW";
224
245
  Currency["ZWL"] = "ZWL";
246
+ Currency["CDF"] = "CDF";
247
+ Currency["ERN"] = "ERN";
248
+ Currency["FKP"] = "FKP";
249
+ Currency["KPW"] = "KPW";
250
+ Currency["RUB"] = "RUB";
251
+ Currency["SBD"] = "SBD";
252
+ Currency["SHP"] = "SHP";
253
+ Currency["SSP"] = "SSP";
254
+ Currency["VES"] = "VES";
225
255
  })(Currency || (Currency = {}));
226
256
  const CurrencyToISO4217 = {
227
257
  [Currency.AED]: '784',
228
258
  [Currency.AFN]: '971',
229
259
  [Currency.ALL]: '008',
260
+ [Currency.AMD]: '051',
230
261
  [Currency.ANG]: '532',
231
262
  [Currency.AOA]: '973',
232
263
  [Currency.AUD]: '036',
@@ -367,8 +398,18 @@ const CurrencyToISO4217 = {
367
398
  [Currency.SRD]: '968',
368
399
  [Currency.TOP]: '776',
369
400
  [Currency.VUV]: '548',
401
+ [Currency.WST]: '882',
370
402
  [Currency.ZWL]: '932',
371
403
  [Currency.CLF]: '990',
404
+ [Currency.CDF]: '976',
405
+ [Currency.ERN]: '232',
406
+ [Currency.FKP]: '238',
407
+ [Currency.KPW]: '408',
408
+ [Currency.RUB]: '643',
409
+ [Currency.SBD]: '090',
410
+ [Currency.SHP]: '654',
411
+ [Currency.SSP]: '728',
412
+ [Currency.VES]: '928',
372
413
  };
373
414
  const WithdrawCurrencies = {
374
415
  [Currency.USD]: Currency.USD,
@@ -380,6 +421,52 @@ const WithdrawCurrencies = {
380
421
  function isWithdrawCurrency(currency) {
381
422
  return currency in WithdrawCurrencies;
382
423
  }
424
+ const BankingCurrencies = {
425
+ [Currency.USD]: Currency.USD,
426
+ [Currency.EUR]: Currency.EUR,
427
+ [Currency.GBP]: Currency.GBP,
428
+ [Currency.CAD]: Currency.CAD,
429
+ [Currency.BRL]: Currency.BRL,
430
+ };
431
+ function isBankingCurrency(currency) {
432
+ return currency in BankingCurrencies;
433
+ }
434
+ const FourDecimalCurrencies = new Set([Currency.CLF]);
435
+ const ThreeDecimalCurrencies = new Set([
436
+ Currency.BHD,
437
+ Currency.IQD,
438
+ Currency.JOD,
439
+ Currency.KWD,
440
+ Currency.LYD,
441
+ Currency.OMR,
442
+ Currency.TND,
443
+ ]);
444
+ const ZeroDecimalCurrencies = new Set([
445
+ Currency.BIF,
446
+ Currency.CLP,
447
+ Currency.DJF,
448
+ Currency.GNF,
449
+ Currency.ISK,
450
+ Currency.JPY,
451
+ Currency.KMF,
452
+ Currency.PYG,
453
+ Currency.RWF,
454
+ Currency.UGX,
455
+ Currency.VND,
456
+ Currency.VUV,
457
+ Currency.XAF,
458
+ Currency.XOF,
459
+ Currency.XPF,
460
+ ]);
461
+ function getCurrencyDecimals(currency) {
462
+ if (FourDecimalCurrencies.has(currency))
463
+ return 4;
464
+ if (ThreeDecimalCurrencies.has(currency))
465
+ return 3;
466
+ if (ZeroDecimalCurrencies.has(currency))
467
+ return 0;
468
+ return 2;
469
+ }
383
470
  function isTypedCurrencyCents(cents, currency) {
384
471
  return cents.currency === currency;
385
472
  }
@@ -420,7 +507,7 @@ class CoinflowUtils {
420
507
  return 'http://localhost:5000';
421
508
  return `https://api-${env}.coinflow.cash`;
422
509
  }
423
- static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, allowedWithdrawSpeeds, }) {
510
+ static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, }) {
424
511
  const prefix = routePrefix
425
512
  ? `/${routePrefix}/${blockchain}`
426
513
  : `/${blockchain}`;
@@ -484,9 +571,7 @@ class CoinflowUtils {
484
571
  }
485
572
  else {
486
573
  if (typeof window !== 'undefined') {
487
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
488
- // @ts-ignore
489
- const deviceId = window?.nSureSDK?.getDeviceId();
574
+ const deviceId = nsureSDK.getDeviceId();
490
575
  if (deviceId)
491
576
  url.searchParams.append('deviceId', deviceId);
492
577
  }
@@ -497,6 +582,8 @@ class CoinflowUtils {
497
582
  url.searchParams.append('color', color);
498
583
  if (rent)
499
584
  url.searchParams.append('rent', rent.lamports.toString());
585
+ if (redemptionCheck)
586
+ url.searchParams.append('redemptionCheck', 'true');
500
587
  if (nativeSolToConvert)
501
588
  url.searchParams.append('nativeSolToConvert', nativeSolToConvert.lamports.toString());
502
589
  if (lockDefaultToken)
@@ -517,6 +604,8 @@ class CoinflowUtils {
517
604
  url.searchParams.append('transactionSigner', transactionSigner);
518
605
  if (authOnly === true)
519
606
  url.searchParams.append('authOnly', 'true');
607
+ if (isZeroAuthorization === true)
608
+ url.searchParams.append('isZeroAuthorization', 'true');
520
609
  if (partialUsdcChecked === true)
521
610
  url.searchParams.append('partialUsdcChecked', 'true');
522
611
  if (jwtToken)
@@ -1855,5 +1944,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImpor
1855
1944
  * Generated bundle index. Do not edit.
1856
1945
  */
1857
1946
 
1858
- export { CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, setTokenExScriptTag };
1947
+ export { BankingCurrencies, CARD_TYPE_MAPPING, CardType, CoinflowApplePayButtonComponent, CoinflowCardNumberInput, CoinflowCardNumberOnlyInput, CoinflowCvvInputComponent, CoinflowCvvOnlyInputComponent, CoinflowGooglePayButtonComponent, CoinflowIFrameComponent, CoinflowPurchaseComponent, CoinflowPurchaseHistoryComponent, CoinflowPurchaseProtectionComponent, CoinflowUtils, CoinflowWithdrawComponent, CoinflowWithdrawHistoryComponent, Currency, CurrencyToISO4217, EventBus, IFrameMessageMethods, MerchantStyle, PaymentMethods, SettlementType, ThreeDsChallengePreference, TokenExCardNumberIframeId, TokenExCvvContainerID, WithdrawCategory, WithdrawCurrencies, WithdrawSpeed, doInitializeCvvOnlyTokenExIframe, doInitializeTokenExCardOnlyIframe, doInitializeTokenExIframe, getCurrencyDecimals, getCustomerName, getHandlers, getIframeConfig, getWalletPubkey, handleIFrameMessage, isBankingCurrency, isTypedCurrencyCents, isWithdrawCurrency, nftCartItem, paymentMethodLabels, setTokenExScriptTag };
1859
1948
  //# sourceMappingURL=coinflowlabs-angular.mjs.map
@@ -1 +1 @@
1
- {"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/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/types/nftCartItem.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/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}\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}\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank', // Deprecated, is the same as USDC\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 backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n ctaColor?: string;\n font?: string;\n style?: MerchantStyle;\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}\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 | '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 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\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';\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 type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\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 'listPrice' | '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 instantBankTransfer = 'instantBankTransfer',\n}\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\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 * 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/docs/implement-chargeback-protection#how-to-add-chargeback-protection\n *\n * window?.nSureSDK?.getDeviceId()\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\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\n 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}\n\nexport interface CoinflowSessionKeyPurchaseProps\n 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\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\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: 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum';\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\nexport type WalletTypes = SolanaWallet | EthWallet;\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 type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps;\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\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirOrderIdItem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n orderId: string;\n}\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItems = ReservoirItem | ReservoirItem[];\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n type: 'reservoir';\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n items: ReservoirItems;\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n taker?: 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 | ReservoirRedeem;\n\nexport interface CoinflowIFrameProps\n extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\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 >,\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'\n > {\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 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 * @pattern ^\\d{8}$\n */\n dateOfBirth: string;\n /**\n * @pattern ^\\d+$\n */\n phoneNumber?: string;\n documentReference?: string;\n}\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 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 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\nexport const CurrencyToISO4217: Record<Currency, string> = {\n [Currency.AED]: '784',\n [Currency.AFN]: '971',\n [Currency.ALL]: '008',\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.ZWL]: '932',\n [Currency.CLF]: '990',\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 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 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}\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 {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\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';\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 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 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 allowedWithdrawSpeeds,\n }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\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 (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const deviceId = window?.nSureSDK?.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\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 (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 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 (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 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 (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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 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 '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","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\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\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}\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 }\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 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 signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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\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\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\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","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {AnyObject} from './AnyObject';\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?: {\n id: string;\n email: string;\n firstName: string;\n lastName: string;\n dob: string;\n rawSellerData: Record<string, any>;\n };\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 {\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\"\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 {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';\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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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;AACb,CAAC,EAlJW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAoJb,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,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;;AAUhB,MAAM,kBAAkB,GAAG;AAChC,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AAC5B,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;;AAGxB,SAAU,kBAAkB,CAChC,QAAkB,EAAA;IAElB,OAAO,QAAQ,IAAI,kBAAkB;AACvC;AAkBM,SAAU,oBAAoB,CAClC,KAAoB,EACpB,QAAW,EAAA;AAEX,IAAA,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;AACpC;;MCtUa,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,MAAM;AACxB,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,GAAG,GAAG,2BAA2B;AAC1D,aAAA,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO;AAAE,YAAA,IAAI,CAAC,GAAG,GAAG,uBAAuB;;YAC5D,IAAI,CAAC,GAAG,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,gBAAgB;IACzD;IAEA,MAAM,iBAAiB,CAAC,UAAkB,EAAA;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA,eAAA,EAAkB,UAAU,CAAA,CAAE;aACnD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAChC,aAAA,IAAI,CACH,CAAC,IAGA,KAAK,IAAI,CAAC,aAAa,EAAE,cAAc,IAAI,IAAI,CAAC,cAAc;aAEhE,KAAK,CAAC,CAAC,IAAG;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,kBAAkB,CAAC,GAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,uBAAuB;;QAE1D,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,4BAA4B;QACxD,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,uBAAuB;QAEnD,OAAO,CAAA,QAAA,EAAW,GAAG,CAAA,cAAA,CAAgB;IACvC;IAEA,OAAO,iBAAiB,CAAC,GAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,2BAA2B;QAC9D,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,uBAAuB;QAEnD,OAAO,CAAA,YAAA,EAAe,GAAG,CAAA,cAAA,CAAgB;IAC3C;AAEA,IAAA,OAAO,cAAc,CAAC,EACpB,YAAY,EACZ,UAAU,EACV,KAAK,EACL,WAAW,EACX,GAAG,EACH,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,GAAG,QAAQ,EACrB,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACD,EAAA;QACpB,MAAM,MAAM,GAAG;AACb,cAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,UAAU,CAAA;AAC/B,cAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAE1E,QAAA,IAAI,YAAY;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;AACjE,QAAA,IAAI,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;QAEjE,IAAI,WAAW,EAAE;YACf,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;QACrD;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3D,gBAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,oBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACnE;qBAAO;oBACL,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;gBACnD;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7D,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,WAAW;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;QAEpE,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,aAAa,EACb,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CACpE;QACH;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,OAAO,EACP,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC9D;QACH;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,cAAc,EACd,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CACrE;QACH;QAEA,IAAI,KAAK,EAAE;YACT,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;QACzC;AACA,QAAA,IAAI,YAAY;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;QAEvE,IAAI,MAAM,EAAE;AACV,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtD;QAEA,IAAI,gBAAgB,EAAE;YACpB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QAC/D;QAEA,IAAI,oBAAoB,EAAE;AACxB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,iBAAiB,EACjB,oBAAoB,CAAC,QAAQ,EAAE,CAChC;QACH;QAEA,IAAI,uBAAuB,EAAE;YAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,yBAAyB,EACzB,uBAAuB,CACxB;QACH;AAEA,QAAA,IAAI,iBAAiB;AACnB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,mBAAmB,EACnB,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAClC,CACF;AAEH,QAAA,IAAI,wBAAwB;AAC1B,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,0BAA0B,EAC1B,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CACzC,CACF;QACH,IAAI,QAAQ,EAAE;YACZ,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC/C;aAAO;AACL,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;;;gBAGjC,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AAChD,gBAAA,IAAI,QAAQ;oBAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC7D;QACF;AAEA,QAAA,IAAI,WAAW;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;AACpE,QAAA,IAAI,KAAK;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AAClD,QAAA,IAAI,IAAI;AAAE,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACnE,QAAA,IAAI,kBAAkB;AACpB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,oBAAoB,EACpB,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CACvC;AACH,QAAA,IAAI,gBAAgB;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;AACzE,QAAA,IAAI,QAAQ;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;AAE3D,QAAA,IAAI,eAAe;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;AACvE,QAAA,IAAI,gBAAgB;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC;AACzE,QAAA,IAAI,cAAc;YAChB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;AAE3D,QAAA,IAAI,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;QAE7D,IAAI,SAAS,KAAK,KAAK;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;AACtE,QAAA,IAAI,iBAAiB;YACnB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;QACjE,IAAI,QAAQ,KAAK,IAAI;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;QAClE,IAAI,kBAAkB,KAAK,IAAI;YAC7B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC;AACvD,QAAA,IAAI,QAAQ;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC3D,QAAA,IAAI,OAAO;AACT,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,SAAS,EACT,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAChE;AAEH,QAAA,IAAI,qBAAqB;AACvB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,uBAAuB,EACvB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAChC;AAEH,QAAA,IAAI,0BAA0B;YAC5B,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,4BAA4B,EAC5B,0BAA0B,CAC3B;AAEH,QAAA,IAAI,kBAAkB;YACpB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;AAEnE,QAAA,IAAI,yBAAyB;AAC3B,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,2BAA2B,EAC3B,QAAQ,CAAC,6BAA6B,CACpC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAC1C,CACF;AAEH,QAAA,IAAI,qBAAqB;AACvB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CACrB,uBAAuB,EACvB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAChC;AAEH,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;IACvB;IAEA,OAAO,cAAc,CAAC,KAA4B,EAAA;QAChD,IAAI,CAAC,KAAK,CAAC,UAAU;AAAE,YAAA,OAAO,SAAS;AAEvC,QAAA,OAAO,IAAI,CAAC,YAAY,CAA2B,KAAK,CAAC,UAAU,EAAE;YACnE,MAAM,EAAE,MAAK;AACX,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;AAC3B,gBAAA,IAAI,CAAC,IAAI;AACP,oBAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AACtE,gBAAA,IAAI,CAAC,MAAM;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACtE,gBAAA,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,SAAS;AAClC,gBAAA,OAAO,MAAM,CAAC,MAAM,CACjB,WAAkD,CAAC,SAAS,CAAC;AAC5D,oBAAA,oBAAoB,EAAE,KAAK;AAC3B,oBAAA,gBAAgB,EAAE,KAAK;AACxB,iBAAA,CAAC,CACH;YACH,CAAC;YACD,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAAE,oBAAA,OAAO,SAAS;AAC/C,gBAAA,MAAM,EAAC,WAAW,EAAC,GAAG,KAAK;gBAC3B,OAAO,QAAQ,CAAC,6BAA6B,CAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;YACH,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,OAAO,SAAS;YAClB,CAAC;AACF,SAAA,CAAC,EAAE;IACN;AAEA,IAAA,OAAO,YAAY,CACjB,UAA8B,EAC9B,IAOC,EAAA;QAED,QAAQ,UAAU;AAChB,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM;AACpB,YAAA,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,OAAO;AACrB,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG;AACjB,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI;AAClB,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,QAAQ;AACtB,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI;AAClB,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;;IAElD;AACD;AAOK,SAAU,eAAe,CAC7B,IAA8B,EAAA;AAE9B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,SAAS;IAE3B,IAAI,SAA6B,EAAE,QAA4B;IAC/D,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC/B,QAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpD;AAEA,IAAA,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS;AAAE,QAAA,SAAS,GAAG,IAAI,CAAC,SAAS;AAErE,IAAA,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;AAAE,QAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAEjE,IAAI,SAAS,IAAI,QAAQ;QACvB,OAAO;YACL,SAAS;YACT,QAAQ;SACT;AACH,IAAA,OAAO,SAAS;AAClB;;IC5UY;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,oBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EATW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAW1B,SAAU,eAAe,CAC7B,KAA2D,EAAA;AAE3D,IAAA,IAAI,MAA+B;IACnC,IACE,QAAQ,IAAI,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;AAChC,QAAA,KAAK,CAAC,MAAM;QACZ,QAAQ,IAAI,KAAK,CAAC,MAAM;AAExB,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAqB;AACxC,SAAA,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;AAAE,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM;AAEjE,IAAA,IAAI,CAAC,MAAM;QAAE;IAEb,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,QAAA,OAAO,MAAM;AAE7C,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI,WAAW,IAAI,MAAM;AACvB,YAAA,OAAO,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,SAAS;QAEnE,IAAI,SAAS,IAAI,MAAM;AACrB,YAAA,OAAO,MAAM,CAAC,OAAO,GAAI,MAAM,CAAC,OAAkB,GAAG,SAAS;IAClE;AAEA,IAAA,OAAO,IAAI;AACb;SAEgB,mBAAmB,CACjC,UAAkB,EAClB,QAA+B,EAC/B,oBAAqC,EAAA;AAErC,IAAA,IAAI,UAAsB;AAC1B,IAAA,IAAI;AACF,QAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC;YAAE;IAC5D;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC;QAClD;IACF;AAEA,IAAA,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,UAAU;IACjC,QAAQ,MAAM;QACZ,KAAK,oBAAoB,CAAC,WAAW;YACnC,IAAI,CAAC,QAAQ,CAAC,iBAAiB;gBAAE;AACjC,YAAA,OAAO,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACzC,KAAK,oBAAoB,CAAC,eAAe;YACvC,IAAI,CAAC,QAAQ,CAAC,qBAAqB;gBAAE;AACrC,YAAA,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC7C,KAAK,oBAAoB,CAAC,eAAe;AACvC,YAAA,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC7C,QAAA,KAAK,oBAAoB,CAAC,YAAY,GAAG,GAAG,GAAG,oBAAoB;YACjE,IAAI,CAAC,QAAQ,CAAC,kBAAkB;gBAAE;AAClC,YAAA,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC1C,KAAK,oBAAoB,CAAC,OAAO;YAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE;AACzB,YAAA,QAAQ,CAAC,SAAS,CAAE,UAAgC,CAAC,IAAI,CAAC;YAC1D;QACF,KAAK,oBAAoB,CAAC,YAAY;YACpC,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAAE;AAC9B,YAAA,QAAQ,CAAC,cAAc,CAAE,UAAqC,CAAC,IAAI,CAAC;YACpE;QACF,KAAK,oBAAoB,CAAC,MAAM;YAC9B;QACF,KAAK,oBAAoB,CAAC,aAAa;YACrC;;AAGJ,IAAA,OAAO,CAAC,IAAI,CACV,CAAA,sDAAA,EAAyD,MAAM,CAAA,eAAA,EAAkB,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA,CAAE,CACvH;AACH;AAEM,SAAU,WAAW,CACzB,KAGC,EAAA;AAED,IAAA,IAAI,KAAqC;AACzC,IAAA,IAAI,MAA+B;IACnC,IACE,QAAQ,IAAI,KAAK;AACjB,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;AAChC,QAAA,KAAK,CAAC,MAAM;QACZ,YAAY,IAAI,KAAK,CAAC,MAAM;AAC5B,QAAA,QAAQ,IAAI,KAAK,CAAC,MAAM,EACxB;AACA,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAgC;AACrD,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAqB;IAC7C;SAAO,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE;AACpD,QAAA,KAAK,GAAG,KAAK,CAAC,UAAU;AACxB,QAAA,MAAM,GAAG,KAAK,CAAC,MAAM;IACvB;IAEA,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;YACL,qBAAqB,EAAE,MAAK;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,iBAAiB,EAAE,MAAK;AACtB,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,qBAAqB,EAAE,MAAK;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;YAC1D,CAAC;YACD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC;IACH;AAEA,IAAA,OAAO,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE;AACvC,QAAA,MAAM,EAAE,MACN,uBAAuB,CAAC;AACtB,YAAA,MAAM,EAAE,MAAsB;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,GAAG,EAAE,MACH,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,OAAO,EAAE,MACP,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,IAAI,EAAE,MACJ,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,QAAQ,EAAE,MACR,oBAAoB,CAAC;AACnB,YAAA,MAAM,EAAE,MAAmB;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC;AACJ,QAAA,IAAI,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC;AACzC,KAAA,CAAC,EAAE;AACN;AAEA,SAAS,uBAAuB,CAAC,EAC/B,MAAM,EACN,SAAS,EACT,cAAc,GAKf,EAAA;IACC,OAAO;AACL,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC;AAC5C,YAAA,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,CAAC;AACD,QAAA,iBAAiB,EAAE,OAAO,OAAe,KAAI;AAC3C,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW;YACtC,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;YAChE;AAEA,YAAA,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAClC;AACD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAC3D,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QACrC,CAAC;AACD,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe;YAC9C,IAAI,CAAC,eAAe,EAAE;AACpB,gBAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;YACpE;AACA,YAAA,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC;AAC5C,YAAA,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAC3D,YAAA,OAAO,MAAM,CAAC,MAAM,CAClB,iBAAiB,CAAC,SAAS,CAAC;AAC1B,gBAAA,oBAAoB,EAAE,KAAK;AAC3B,gBAAA,gBAAgB,EAAE,KAAK;AACxB,aAAA,CAAC,CACH;QACH,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;AAEA,SAAS,oBAAoB,CAC3B,IAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,IAAI;AACP,QAAA,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF;AAEH,IAAA,IAAI,CAAC,MAAM;AACT,QAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;IAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC;AACnE,IAAA,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC5E,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,oBAAoB,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,cAAc,GAKf,EAAA;IACC,OAAO;AACL,QAAA,qBAAqB,EAAE,OAAO,WAAmB,KAAI;AACnD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpE,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;AAC/C,YAAA,OAAO,IAAI;QACb,CAAC;AACD,QAAA,iBAAiB,EAAE,OAAO,OAAe,KAAI;AAC3C,YAAA,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;QACpC,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;AAEA,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,cAAc,GAC8C,EAAA;IAI5D,OAAO;QACL,qBAAqB,EAAE,YAAW;AAChC,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,CAAC;QACD,SAAS;QACT,cAAc;KACf;AACH;;MCzSa,QAAQ,CAAA;AACZ,IAAA,OAAO,EAAE,CAAC,IAAY,EAAE,QAA0B,EAAA;AACvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC3C;AAEO,IAAA,OAAO,QAAQ,CAAC,IAAY,EAAE,IAAS,EAAA;AAC5C,QAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IAC/D;AAEO,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,QAA0B,EAAA;AAC3D,QAAA,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9C;AACD;;ACdD;AAKO,MAAM,yBAAyB,GAAG;AAClC,MAAM,qBAAqB,GAAG;AAK9B,MAAM,iBAAiB,GAA6B;AACzD,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM;AACvB,IAAA,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY;AACnC,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,iBAAiB;AAClC,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU;;;AC2B1B,eAAe,eAAe,CACnC,IAAyB,EAAA;IAEzB,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,GAAG,IAAI;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACrC,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,6BAA6B,EAAE;AAChE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AACnC,aAAA;AACD,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO;gBACP,KAAK;AACL,gBAAA,UAAU,EAAE,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS;AAC9D,gBAAA,WAAW,EAAE,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS;aAClE,CAAC;SACH;AACE,aAAA,IAAI,CAAC,OAAM,GAAG,KAAG;YAChB,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAgC;AAC3D,QAAA,CAAC;aACA,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAA,CAAC,CAAC;AACJ;SAEgB,mBAAmB,CAAC,EAClC,GAAG,EACH,sBAAsB,GAIvB,EAAA;IACC,MAAM,WAAW,GAAG,gBAAgB;IACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC,EAAE;QAClD,sBAAsB,CAAC,IAAI,CAAC;IAC9B;IAEA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,IAAA,YAAY,CAAC,GAAG;AACd,QAAA,GAAG,KAAK;AACN,cAAE;cACA,sDAAsD;AAC5D,IAAA,YAAY,CAAC,EAAE,GAAG,WAAW;AAE7B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IAEvC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAClE,QAAA,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;QACnD,sBAAsB,CAAC,IAAI,CAAC;AAC9B,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,cAAc,EACd,SAAS,GAKV,EAAA;AACC,IAAA,MAAM,QAAQ,GAAG,YAA0C;QACzD,MAAM,CAAC,QAAQ,EAAE;QACjB,OAAO,MAAM,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,KAAI;YACjE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAA0B,KAAI;AACnD,gBAAA,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC;AACf,YAAA,CAAC,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAA6C,KAAI;;AAEtE,gBAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;AAC5D,gBAAA,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC;AAC7B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,IAAA,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;AAEvD,IAAA,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;QACrB,UAAU,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QACtC,MAAM,EAAE,GAA6B,QAAQ,CAAC,aAAa,CACzD,8BAA8B,CAC/B;QACD,IAAI,EAAE,EAAE;;AAEN,YAAA,EAAE,CAAC,SAAS,GAAG,IAAI;QACrB;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;QACtB,MAAM,CAAC,KAAK,EAAE;AAChB,IAAA,CAAC,CAAC;AACF,IAAA,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;QACzB,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAA,CAAC,CAAC;IAEF,SAAS,CAAC,KAAK,CAAC;IAChB,MAAM,CAAC,IAAI,EAAE;AAEb,IAAA,OAAO,EAAC,GAAG,MAAM,EAAE,QAAQ,EAAC;AAC9B;AAEO,eAAe,gCAAgC,CACpD,IAA0C,EAAA;AAE1C,IAAA,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,IAAI;AAC9B,IAAA,OAAO,MAAM,YAAY,CAAC,qBAAqB,EAAE,IAAI,EAAE;AACrD,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,WAAW,EAAE,KAAK;QAClB,KAAK;AACL,QAAA,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;AACtC,KAAA,CAAC;AACJ;AAEO,eAAe,yBAAyB,CAC7C,IAAmC,EAAA;AAEnC,IAAA,OAAO,MAAM,YAAY,CAAC,yBAAyB,EAAE,IAAI,EAAE;AACzD,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,cAAc,EAAE,KAAK;AACtB,KAAA,CAAC;AACJ;AAEO,eAAe,iCAAiC,CACrD,IAAmC,EAAA;AAEnC,IAAA,OAAO,MAAM,YAAY,CAAC,yBAAyB,EAAE,IAAI,EAAE,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;AAC1E;AAEA,eAAe,YAAY,CACzB,EAAU,EACV,IAAmC,EACnC,eAAwC,EAAA;AAExC,IAAA,MAAM,EAAC,mBAAmB,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAC,GACtE,IAAI;IACN,IAAI,CAAC,mBAAmB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAC1D,QAAA,OAAO,CAAC,IAAI,CACV,iHAAiH,CAClH;QACD;IACF;AACA,IAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AACzC,QAAA,GAAG,IAAI;QACP,KAAK,EAAE,eAAe,CAAC,KAAK;AAC7B,KAAA,CAAC;IACF,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,CAAC,GAAG,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,YAAY;AACf,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,kBAAkB,EAAE,IAAI;QACxB,MAAM;QACN,IAAI;QACJ,KAAK,EAAE,KAAK,IAAI,KAAK;AACrB,QAAA,GAAG,eAAe;KACnB;IACD,MAAM,MAAM,GAAsC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;IAE5E,OAAO,UAAU,CAAC,EAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAC,CAAC;AACxD;AAEA,SAAS,SAAS,CAAC,CAAS,EAAA;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,IAAI,EAAE,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,QAAA,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAA,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAA,WAAW,EAAE,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,QAAA,GAAG,EAAE;YACH,IAAI,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;YAC7C,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YAC/C,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/C,YAAA,WAAW,EAAE,wBAAwB,CAAC,GAAG,EAAE,WAAW,CAAC;AACxD,SAAA;KACF;IAED,OAAO,EAAC,MAAM,EAAC;AACjB;AAEA,SAAS,wBAAwB,CAC/B,IAAwC,EAAA;AAExC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI;IAEzC,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC/C,IAAI,GAAG,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AACzB,YAAA,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;AAC3B,gBAAA,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE;YAC/B;iBAAO;gBACL,GAAG,IAAI,EAAE;YACX;AACF,QAAA,CAAC,CAAC;QACF,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;ACnPA;AACA;AACA;AACA;AAwGM,IAAW;AAAjB,CAAA,UAAiB,WAAW,EAAA;AAC1B;;AAEG;AACH,IAAA,IAAY,SAEX;AAFD,IAAA,CAAA,UAAY,SAAS,EAAA;AACnB,QAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,IAAA,CAAC,EAFW,SAAS,GAAT,WAAA,CAAA,SAAS,KAAT,qBAAS,GAAA,EAAA,CAAA,CAAA;AAIrB;;AAEG;AACH,IAAA,IAAY,WAwBX;AAxBD,IAAA,CAAA,UAAY,WAAW,EAAA;AACrB,QAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,QAAA,WAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;AAC7B,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,QAAA,WAAA,CAAA,qBAAA,CAAA,GAAA,oBAA0C;AAC1C,QAAA,WAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAC9B,QAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,eAAiC;AACjC,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,QAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,kBAAsC;AACtC,QAAA,WAAA,CAAA,uBAAA,CAAA,GAAA,qBAA6C;AAC7C,QAAA,WAAA,CAAA,wBAAA,CAAA,GAAA,sBAA+C;AAC/C,QAAA,WAAA,CAAA,sBAAA,CAAA,GAAA,oBAA2C;AAC3C,QAAA,WAAA,CAAA,2BAAA,CAAA,GAAA,yBAAqD;AACrD,QAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,QAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,QAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;AACxC,QAAA,WAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,QAAA,WAAA,CAAA,QAAA,CAAA,GAAA,OAAgB;AAChB,QAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;AACxC,QAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,gBAAmC;AACnC,QAAA,WAAA,CAAA,wBAAA,CAAA,GAAA,oBAA6C;AAC/C,IAAA,CAAC,EAxBW,WAAW,GAAX,WAAA,CAAA,WAAW,KAAX,uBAAW,GAAA,EAAA,CAAA,CAAA;AAyBzB,CAAC,EApCgB,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;MCzEf,uBAAuB,CAAA;AAYlC,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;AANnB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;QAIxC,IAAA,CAAA,SAAS,GAAG,IAAI;IAEsB;IAE9C,QAAQ,GAAA;QACN,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,WAAW,CAAC;IAC9D;AAE4C,IAAA,aAAa,CAAC,KAAU,EAAA;AAClE,QAAA,IACE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CACpB,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACvD;YAED;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AACtC,gBAAA,IACE,OAAO;oBACP,OAAO,OAAO,KAAK,QAAQ;AAC3B,oBAAA,OAAO,CAAC,MAAM,KAAK,QAAQ,EAC3B;AACA,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,MAAM,IAAI;gBACjB;YACF;YAAE,OAAO,KAAK,EAAE;;YAEhB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,mBAAmB,CACjC,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,CAAC,oBAAoB,CACtC;AACD,QAAA,IAAI,CAAC,OAAO;YAAE;QACd;aACG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,aAAA,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAc,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC;IACpE;IAEA,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,oBAAoB;YAAE;AAE/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,IAAI;IACjB;8GAnEW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbxB,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEA,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWC,YAAA,CAAA;AACZ,iBAAA;iFAEU,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBAGoB,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;gBAWyB,aAAa,EAAA,CAAA;sBAAxD,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MCnC/B,yBAAyB,CAAA;IAKpC,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;AACZ,YAAA,KAAK,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;YACvD,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7D,oBAAoB;SACrB;IACH;8GApBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFlC,uNAAuN,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAF/M,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAItB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EACN,uNAAuN;AAC1N,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;;;MCZU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yFAFjC,2CAA2C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE1C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,2CAA2C;AACtD,iBAAA;;;MCCY,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,4FAFpC,8CAA8C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE7C,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,8CAA8C;AACzD,iBAAA;;;MCWY,yBAAyB,CAAA;IAKpC,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;AACZ,YAAA,KAAK,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;AACpD,YAAA,WAAW,EAAE,SAAS;YACtB,oBAAoB;SACrB;IACH;8GApBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFlC,0LAA0L,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAFlL,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAItB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EACN,0LAA0L;AAC7L,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;;;MCXU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yFAFjC,2CAA2C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE1C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,2CAA2C;AACtD,iBAAA;;;MCKY,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,aAAa,GAA8B,SAAS;AAoErD,IAAA;AAlEC,IAAA,gBAAgB,CAAC,MAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;IAC7B;AAEA,IAAA,cAAc,KAAI;AAElB,IAAA,SAAS,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;IAEA,MAAM,8BAA8B,CAClC,IAIyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC;AACpD,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,MAAM;IACf;IAEA,MAAM,uBAAuB,CAC3B,IAIyB,EAAA;AAEzB,QAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;AAC7C,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrB,QAAA,OAAO,MAAM;IACf;IAEA,MAAM,+BAA+B,CACnC,IAIyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,MAAM,iCAAiC,CAAC;AACrD,YAAA,GAAG,IAAI;AACP,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,EAAE;AACzB,QAAA,OAAO,MAAM;IACf;8GArEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCKY,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAoClC,IAAA,CAAA,yBAAyB,GAAG,yBAAyB;AACzE,IAAA;IAnCS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,uBAAuB,CAAC;YACvB,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;AACA,aAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrC,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GArCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,oHAFxB,gDAAgD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE/C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,gDAAgD;AAC3D,iBAAA;8BAGU,IAAI,EAAA,CAAA;sBAAZ;;;MCFU,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAoClC,IAAA,CAAA,yBAAyB,GAAG,yBAAyB;AACzE,IAAA;IAnCS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,+BAA+B,CAAC;YAC/B,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;AACA,aAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrC,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACvB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GArCW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yHAF5B,gDAAgD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE/C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,gDAAgD;AAC3D,iBAAA;8BAGU,IAAI,EAAA,CAAA;sBAAZ;;;MCTU,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOqB,IAAA,CAAA,qBAAqB,GAAG,qBAAqB;AACjE,IAAA;8GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kFAF1B,6CAA6C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE5C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,6CAA6C;AACxD,iBAAA;;;MCcY,6BAA6B,CAAA;AAN1C,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAEzC,IAAA,CAAA,MAAM,GAA8B,SAAS;QAsDlC,IAAA,CAAA,qBAAqB,GAAG,qBAAqB;AACjE,IAAA;IArDS,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,8BAA8B,CAAC;YAC9B,GAAG,IAAI,CAAC,IAAI;YACZ,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACnC;aACA,IAAI,CAAC,MAAM,IAAG;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAE,CAAC;AACzE,YAAA,IAAI,aAAa;AAAE,gBAAA,aAAa,CAAC,SAAS,GAAG,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;QACzB;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,mBAAmB,CAAC;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,OAAO,EAAE;QACd,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,EAAE;QAC1B,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAO,CAAC,QAAQ,EAAE;IAChC;8GAvDW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,sIAF9B,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAE3C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,4CAA4C;AACvD,iBAAA;8BAGU,IAAI,EAAA,CAAA;sBAAZ;;;MCcU,mCAAmC,CAAA;AA1BhD,IAAA,WAAA,GAAA;QAoCE,IAAA,CAAA,OAAO,GAAW,GAAG;QACrB,IAAA,CAAA,OAAO,GAAW,MAAM;AAyCzB,IAAA;IApCC,aAAa,CAAC,EAAC,IAAI,EAAiB,EAAA;AAClC,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAE5B,YAAA,OAAO,CAAC,GAAG,CAAC,EAAC,IAAI,EAAC,CAAC;AACnB,YAAA,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACnD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtC;YACF;YAEA,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC9C,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC;gBAChB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM;gBACvB,CAAC,EAAE,IAAI,CAAC;YACV;QACF;AAAE,QAAA,OAAO,CAAC,EAAE,EAAC;IACf;IAEA,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,kBAAkB;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAEvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpE,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;YACZ,KAAK,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAA,CAAE;AACzD,YAAA,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7D,oBAAoB;SACrB;IACH;8GAnDW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBpC,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArBG,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAuBtB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBA1B/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,QAAA,CAAA;AACR,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;MCGU,+BAA+B,CAAA;IAM1C,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM;IAC/D;8GARW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1ChC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC2B,sCAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAzC3B,mCAAmC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA2ClC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBA9C3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,mCAAmC,CAAC;AAC9C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC2B,sCAAA,CAAA;AACtC,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;;;MCUU,iCAAiC,CAAA;8GAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvDlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBA3D7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA;AACF,iBAAA;8BAEU,KAAK,EAAA,CAAA;sBAAb;;;MCtCU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZjC,CAAA;;;;;;;;;;wCAU4B,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbpC,mCAAmC,0JACnC,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAcxB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAnB5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,mCAAmC;wBACnC,iCAAiC;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAU4B,uCAAA,CAAA;AACvC,iBAAA;8BAEU,aAAa,EAAA,CAAA;sBAArB;;;ACzBH;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"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/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/types/nftCartItem.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/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}\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\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: 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};\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 | '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 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\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';\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 type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\n/** Purchase **/\n\nexport type CartClassOmitted = CartItemClassOmitted[];\nexport type ChargebackProtectionData = CartClassOmitted;\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 'listPrice' | '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 instantBankTransfer = 'instantBankTransfer',\n wire = 'wire',\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.instantBankTransfer]: 'Instant Bank Transfer',\n [PaymentMethods.wire]: 'Wire Transfer',\n};\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n subtotal?: Subtotal;\n presentment?: Currency;\n onSuccess?: OnSuccessMethod;\n onAuthDeclined?: OnAuthDeclinedMethod;\n webhookInfo?: {\n [key: string]: any;\n };\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\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 isZeroAuthorization?: boolean;\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 * nSureSDK.getDeviceId()\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\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\n 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\n 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\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\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: 'solana' | 'eth' | 'polygon' | 'base' | 'arbitrum';\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\nexport type WalletTypes = SolanaWallet | EthWallet;\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 type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps;\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\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirOrderIdItem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n orderId: string;\n}\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport type ReservoirItems = ReservoirItem | ReservoirItem[];\n\n/** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n type: 'reservoir';\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n items: ReservoirItems;\n /** @deprecated Reservoir decided to sunset Reservoir NFT, including their API and associated services, effective October 15, 2025. */\n taker?: 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 | ReservoirRedeem;\n\nexport interface CoinflowIFrameProps\n extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\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 >,\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 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 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","// 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 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}\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 {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n CustomerInfo,\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 nsureSDK from '@nsure-ai/web-client-sdk';\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 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 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 }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\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 (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n if (typeof window !== 'undefined') {\n const deviceId = nsureSDK.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\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 if (isZeroAuthorization === true)\n url.searchParams.append('isZeroAuthorization', 'true');\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 (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 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 (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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 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 '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","import {\n AuthDeclinedWalletCallInfo,\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n OnAuthDeclinedMethod,\n OnSuccessMethod,\n SolanaWallet,\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\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}\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 }\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 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 signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\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 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\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\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\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","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-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 {\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\"\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 {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';\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,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,IAA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"}
@@ -16,7 +16,10 @@ export declare enum WithdrawSpeed {
16
16
  IBAN = "iban",
17
17
  PIX = "pix",
18
18
  EFT = "eft",
19
- VENMO = "venmo"
19
+ VENMO = "venmo",
20
+ PAYPAL = "paypal",
21
+ WIRE = "wire",
22
+ INTERAC = "interac"
20
23
  }
21
24
  export declare enum SettlementType {
22
25
  Credits = "Credits",
@@ -55,6 +58,7 @@ interface BaseCustomerInfo {
55
58
  * Date of birth in YYYY-MM-DD format
56
59
  */
57
60
  dob?: string;
61
+ email?: string;
58
62
  }
59
63
  export interface NameCustomerInfo extends BaseCustomerInfo {
60
64
  /**
@@ -184,8 +188,10 @@ export declare enum PaymentMethods {
184
188
  applePay = "applePay",
185
189
  credits = "credits",
186
190
  crypto = "crypto",
187
- instantBankTransfer = "instantBankTransfer"
191
+ instantBankTransfer = "instantBankTransfer",
192
+ wire = "wire"
188
193
  }
194
+ export declare const paymentMethodLabels: Record<PaymentMethods, string>;
189
195
  export interface CoinflowCommonPurchaseProps extends CoinflowTypes {
190
196
  subtotal?: Subtotal;
191
197
  presentment?: Currency;
@@ -204,6 +210,7 @@ export interface CoinflowCommonPurchaseProps extends CoinflowTypes {
204
210
  customerInfo?: CustomerInfo;
205
211
  settlementType?: SettlementType;
206
212
  authOnly?: boolean;
213
+ isZeroAuthorization?: boolean;
207
214
  /**
208
215
  * If true, pre-checks the partial USDC payment checkbox when USDC balance is available.
209
216
  * If false or undefined, maintains default behavior (unchecked).
@@ -211,9 +218,9 @@ export interface CoinflowCommonPurchaseProps extends CoinflowTypes {
211
218
  partialUsdcChecked?: boolean;
212
219
  /**
213
220
  * The DeviceID gotten from the Coinflow SDK:
214
- * https://docs.coinflow.cash/docs/implement-chargeback-protection#how-to-add-chargeback-protection
221
+ * https://docs.coinflow.cash/guides/checkout/fraud-protection/chargeback-protection/implement-chargeback-protection#how-to-add-chargeback-protection
215
222
  *
216
- * window?.nSureSDK?.getDeviceId()
223
+ * nSureSDK.getDeviceId()
217
224
  */
218
225
  deviceId?: string;
219
226
  jwtToken?: string;
@@ -257,6 +264,7 @@ export interface CoinflowSolanaPurchaseProps extends CoinflowCommonPurchaseProps
257
264
  nativeSolToConvert?: {
258
265
  lamports: string | number;
259
266
  };
267
+ redemptionCheck?: boolean;
260
268
  }
261
269
  export interface CoinflowSessionKeyPurchaseProps extends CoinflowCommonPurchaseProps {
262
270
  sessionKey: string;
@@ -474,7 +482,7 @@ export interface DecentRedeem extends CommonEvmRedeem {
474
482
  * 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.
475
483
  */
476
484
  export type EvmTransactionData = SafeMintRedeem | ReturnedTokenIdRedeem | KnownTokenIdRedeem | NormalRedeem | TokenRedeem | DecentRedeem | ReservoirRedeem;
477
- export interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey'> {
485
+ export interface CoinflowIFrameProps extends Omit<CoinflowTypes, 'merchantId' | 'handleHeightChange'>, Pick<CoinflowCommonPurchaseProps, 'chargebackProtectionData' | 'webhookInfo' | 'subtotal' | 'presentment' | 'customerInfo' | 'settlementType' | 'email' | 'planCode' | 'deviceId' | 'jwtToken' | 'origins' | 'threeDsChallengePreference' | 'supportEmail' | 'allowedPaymentMethods' | 'accountFundingTransaction' | 'partialUsdcChecked' | 'isZeroAuthorization'>, Pick<CoinflowCommonWithdrawProps, 'bankAccountLinkRedirect' | 'additionalWallets' | 'transactionSigner' | 'lockAmount' | 'lockDefaultToken' | 'origins' | 'allowedWithdrawSpeeds'>, Pick<CoinflowEvmPurchaseProps, 'authOnly'>, Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'destinationAuthKey' | 'redemptionCheck'> {
478
486
  walletPubkey: string | null | undefined;
479
487
  sessionKey?: string;
480
488
  route: string;
@@ -526,9 +534,10 @@ export interface RecipientAftInfo {
526
534
  */
527
535
  countryCode: string;
528
536
  /**
537
+ * Recipients Date Of Birth in YYYMMDD format.
529
538
  * @pattern ^\d{8}$
530
539
  */
531
- dateOfBirth: string;
540
+ dateOfBirth?: string;
532
541
  /**
533
542
  * @pattern ^\d+$
534
543
  */
@@ -6,7 +6,7 @@ export declare class CoinflowUtils {
6
6
  getNSurePartnerId(merchantId: string): Promise<string | undefined>;
7
7
  static getCoinflowBaseUrl(env?: CoinflowEnvs): string;
8
8
  static getCoinflowApiUrl(env?: CoinflowEnvs): string;
9
- static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, allowedWithdrawSpeeds, }: CoinflowIFrameProps): string;
9
+ static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, presentment, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChangeId, bankAccountLinkRedirect, additionalWallets, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, allowedPaymentMethods, accountFundingTransaction, partialUsdcChecked, redemptionCheck, allowedWithdrawSpeeds, isZeroAuthorization, }: CoinflowIFrameProps): string;
10
10
  static getTransaction(props: CoinflowPurchaseProps): string | undefined;
11
11
  static byBlockchain<T>(blockchain: CoinflowBlockchain, args: {
12
12
  solana: T;
@@ -3,6 +3,7 @@ export declare enum Currency {
3
3
  AED = "AED",
4
4
  AFN = "AFN",
5
5
  ALL = "ALL",
6
+ AMD = "AMD",
6
7
  ANG = "ANG",
7
8
  AOA = "AOA",
8
9
  ARS = "ARS",
@@ -136,6 +137,7 @@ export declare enum Currency {
136
137
  UZS = "UZS",
137
138
  VND = "VND",
138
139
  VUV = "VUV",
140
+ WST = "WST",
139
141
  XAF = "XAF",
140
142
  XCD = "XCD",
141
143
  XOF = "XOF",
@@ -143,7 +145,16 @@ export declare enum Currency {
143
145
  YER = "YER",
144
146
  ZAR = "ZAR",
145
147
  ZMW = "ZMW",
146
- ZWL = "ZWL"
148
+ ZWL = "ZWL",
149
+ CDF = "CDF",
150
+ ERN = "ERN",
151
+ FKP = "FKP",
152
+ KPW = "KPW",
153
+ RUB = "RUB",
154
+ SBD = "SBD",
155
+ SHP = "SHP",
156
+ SSP = "SSP",
157
+ VES = "VES"
147
158
  }
148
159
  export declare const CurrencyToISO4217: Record<Currency, string>;
149
160
  export type WithdrawCurrency = Currency.USD | Currency.EUR | Currency.GBP | Currency.BRL | Currency.CAD;
@@ -155,6 +166,16 @@ export declare const WithdrawCurrencies: {
155
166
  readonly CAD: Currency.CAD;
156
167
  };
157
168
  export declare function isWithdrawCurrency(currency: Currency): currency is WithdrawCurrency;
169
+ export type BankingCurrency = Currency.USD | Currency.EUR | Currency.GBP | Currency.CAD | Currency.BRL;
170
+ export declare const BankingCurrencies: {
171
+ readonly USD: Currency.USD;
172
+ readonly EUR: Currency.EUR;
173
+ readonly GBP: Currency.GBP;
174
+ readonly CAD: Currency.CAD;
175
+ readonly BRL: Currency.BRL;
176
+ };
177
+ export declare function isBankingCurrency(currency: Currency): currency is BankingCurrency;
178
+ export declare function getCurrencyDecimals(currency: Currency): number;
158
179
  export interface Cents {
159
180
  /**
160
181
  * @isInt Cents must be an integer
@@ -1,4 +1,5 @@
1
1
  import { AnyObject } from './AnyObject';
2
+ import { SellerInfo } from './CartitemCommon';
2
3
  /**
3
4
  * An nft cart item
4
5
  */
@@ -51,14 +52,21 @@ export type nftCartItem = {
51
52
  * Any additional data that the store can provide on the product, e.g. description, link to image, etc.
52
53
  */
53
54
  rawProductData?: AnyObject;
54
- seller?: {
55
- id: string;
56
- email: string;
57
- firstName: string;
58
- lastName: string;
59
- dob: string;
60
- rawSellerData: Record<string, any>;
61
- };
55
+ seller?: SellerInfo;
56
+ transactionHistory?: TransactionHistoryItem[];
57
+ };
58
+ type TransactionHistoryItem = {
59
+ txHash: string;
60
+ blockNumber: number;
61
+ txTime: string;
62
+ assetID: string;
63
+ registryContract: string;
64
+ from: string;
65
+ to: string;
66
+ paymentToken: string;
67
+ paymentAmount: string;
68
+ chain: string;
69
+ txType: string;
62
70
  };
63
71
  export type productType = 'inGameProduct' | 'gameOfSkill' | 'dataStorage' | 'computingResources' | 'sportsTicket' | 'eSportsTicket' | 'musicTicket' | 'conferenceTicket' | 'virtualSportsTicket' | 'virtualESportsTicket' | 'virtualMusicTicket' | 'virtualConferenceTicket' | 'alcohol' | 'DLC' | 'subscription' | 'fundACause' | 'realEstate' | 'computingContract' | 'digitalArt' | 'topUp' | 'ownershipContract' | 'inGameCurrency' | 'digitalCollectibles' | 'digitalCollectiblesMarketplace' | 'digitalGiftingMarketplace' | 'sweepstakes' | 'virtualSportsEvents' | 'contractInvoicing' | 'onlineCasino' | 'cryptoOnramp' | 'gaming' | 'travelDocuments' | 'musicStreaming' | 'digitalContent' | 'eBooks' | 'digitalSubscriptionContent';
64
72
  export declare namespace nftCartItem {
@@ -97,3 +105,4 @@ export declare namespace nftCartItem {
97
105
  MONEY_TOP_UP_CART_ITEM = "moneyTopUpCartItem"
98
106
  }
99
107
  }
108
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinflowlabs/angular",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",