@miden-npm/react 2.1.6 → 2.1.7
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/dist/index.cjs +12 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/provider.tsx","../src/hooks.ts","../src/buzapay-checkout/checkout-button.tsx","../src/utils/object.util.ts","../src/utils/api.util.ts","../src/utils/string.util.ts","../src/utils/input.util.ts","../src/utils/error.util.ts","../src/utils/card-scheme.util.ts","../src/apis/checkout.api.ts","../src/apis/encrypt.api.ts","../src/apis/resources.api.ts","../src/components/base/input-error.tsx","../src/components/icons/icon-loader.tsx","../src/components/icons/icon-chevron-left.tsx","../src/components/icons/icon-buzapay-icon.tsx","../src/components/icons/icon-check-circle.tsx","../src/components/icons/icon-copy-success.tsx","../src/components/icons/icon-chevron-up.tsx","../src/components/icons/icon-chevron-down.tsx","../src/components/icons/icon-usdt.tsx","../src/components/icons/icon-usdc.tsx","../src/components/icons/icon-arrow-swap.tsx","../src/components/icons/icon-lock.tsx","../src/components/icons/icon-miden-logo.tsx","../src/components/icons/icon-close.tsx","../src/components/icons/icon-courthouse.tsx","../src/components/icons/icon-coin.tsx","../src/components/icons/icon-cards.tsx","../src/components/icons/icon-qr-code.tsx","../src/components/base/button.tsx","../src/components/base/back.tsx","../src/components/base/card.tsx","../src/components/base/radio-group.tsx","../src/components/base/image.tsx","../src/components/base/copy.tsx","../src/components/base/label-info.tsx","../src/components/base/success.tsx","../src/components/base/hint.tsx","../src/components/base/select.tsx","../src/components/base/currency-amount.tsx","../src/components/base/input.tsx","../src/components/base/circular-countdown.tsx","../src/buzapay-checkout/checkout-iframe.tsx","../src/buzapay-checkout/checkout-card.tsx","../src/components/pay-by-card.tsx","../src/components/base/phone-number-input.tsx","../src/components/pay-by-transfer.tsx","../src/components/pay-by-stable-coin.tsx","../src/miden-checkout/checkout-button.tsx","../src/miden-checkout/checkout-iframe.tsx","../src/miden-checkout/checkout-card.tsx"],"sourcesContent":["import type {\n MidenPGConfig,\n CreatePaymentIntentParams,\n PaymentIntent,\n ConfirmCardPaymentParams,\n} from \"./types/types\";\n\nexport class MidenPGClient {\n private readonly base: string;\n constructor(private readonly cfg: MidenPGConfig) {\n this.base = cfg.apiBaseUrl ?? \"https://api.buzapay.com\"; // change to real base\n }\n\n async createPaymentIntent(\n params: CreatePaymentIntentParams\n ): Promise<PaymentIntent> {\n const res = await fetch(`${this.base}/v1/payment_intents`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Publishable-Key\": this.cfg.publishableKey,\n },\n body: JSON.stringify(params),\n });\n if (!res.ok) throw new Error(`Failed to create PI: ${res.status}`);\n return res.json();\n }\n\n async confirmCardPayment(\n params: ConfirmCardPaymentParams\n ): Promise<{ status: PaymentIntent[\"status\"]; id: string }> {\n const res = await fetch(`${this.base}/v1/payment_intents/confirm`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Publishable-Key\": this.cfg.publishableKey,\n },\n body: JSON.stringify(params),\n });\n if (!res.ok) throw new Error(`Failed to confirm: ${res.status}`);\n return res.json();\n }\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport type { MidenPGConfig } from \"./types/types\";\nimport { MidenPGClient } from \"./client\";\n\nconst Ctx = createContext<MidenPGClient | null>(null);\n\nexport const MidenPGProvider: React.FC<\n React.PropsWithChildren<{ config: MidenPGConfig }>\n> = ({ config, children }) => {\n const client = useMemo(\n () => new MidenPGClient(config),\n [config.publishableKey, config.apiBaseUrl]\n );\n return <Ctx.Provider value={client}>{children}</Ctx.Provider>;\n};\n\nexport const useMidenPGClient = () => {\n const ctx = useContext(Ctx);\n if (!ctx)\n throw new Error(\"useMidenPGClient must be used within MidenPGProvider\");\n return ctx;\n};\n","import { useCallback } from \"react\";\nimport { useMidenPGClient } from \"./provider\";\nimport type {\n ConfirmCardPaymentParams,\n CreatePaymentIntentParams,\n} from \"./types/types\";\n\nexport function usePaymentIntents() {\n const client = useMidenPGClient();\n\n const create = useCallback(\n (p: CreatePaymentIntentParams) => client.createPaymentIntent(p),\n [client]\n );\n const confirm = useCallback(\n (p: ConfirmCardPaymentParams) => client.confirmCardPayment(p),\n [client]\n );\n\n return { create, confirm };\n}\n","import { useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { BaseButton, BaseInputError } from \"../components/base\";\nimport { BzpCheckoutIframe } from \"./checkout-iframe\";\n\ninterface IBzpCheckoutButtonProps {\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject: IPaymentObject;\n mode?: \"redirect\" | \"iframe\";\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutButton({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n mode = \"redirect\",\n onError,\n}: IBzpCheckoutButtonProps) {\n const [message, setMessage] = useState(\"\");\n const [launchUrl, setLaunchUrl] = useState(\"\");\n const [urlLaunchUrl, setUrlLaunchUrl] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"buzapay\"\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n setLaunchUrl(response.launchUrl);\n setUrlLaunchUrl(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n setMessage(\"Payment link created successfully\");\n\n if (mode === \"redirect\") {\n // Use the URL from the response, not the (stale) state.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n return urlLaunchUrl && mode === \"iframe\" ? (\n <BzpCheckoutIframe\n url={urlLaunchUrl}\n secretKey={secretKey}\n environment={environment}\n />\n ) : (\n <div>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n loading={loading}\n onClick={generatePaymentLinkHandler}\n />\n <BaseInputError errorMessage={message} />\n </div>\n );\n}\n","import { IDeviceInformation } from \"../types/checkout.type\";\n\nexport const checkObjectTruthy = <T extends object>(obj: T): boolean => {\n if (obj == null || typeof obj !== \"object\") return false;\n return Object.values(obj as Record<string, unknown>).every(Boolean);\n};\n\nexport const getQueryParams = (url: string): Record<string, string> => {\n const params: Record<string, string> = {};\n const searchParams = new URL(url).searchParams;\n\n searchParams.forEach((value, key) => {\n params[key] = value;\n });\n\n return params;\n};\n\nexport function buildDeviceInformation(\n partial?: Partial<IDeviceInformation>,\n): IDeviceInformation {\n const language = navigator.language || (navigator.languages?.[0] ?? \"\");\n const tzOffsetMinutes = String(new Date().getTimezoneOffset()); // e.g. 300 for Toronto (UTC-5) depending on DST\n\n return {\n httpBrowserLanguage: language,\n httpBrowserJavaEnabled:\n typeof navigator.javaEnabled === \"function\"\n ? navigator.javaEnabled()\n : false,\n httpBrowserJavaScriptEnabled: true, // if this code runs, JS is enabled\n httpBrowserColorDepth: String(screen.colorDepth ?? \"\"),\n httpBrowserScreenHeight: String(screen.height ?? \"\"),\n httpBrowserScreenWidth: String(screen.width ?? \"\"),\n httpBrowserTimeDifference: tzOffsetMinutes,\n userAgentBrowserValue: navigator.userAgent ?? \"\",\n deviceChannel: \"BROWSER\",\n deviceIpAddress: \"\",\n httpAcceptContent: language, // browsers don't expose Accept header; use language as a proxy (or set app value)\n ...partial,\n };\n}\n\nexport const toastConfig: any = {\n position: \"top-right\",\n style: { fontSize: \"12px\" },\n};\n","export const getBaseUrl = (\n mode: string,\n caller: \"buzapay\" | \"miden\",\n): string => {\n if (mode === \"sandbox\") {\n return caller === \"buzapay\"\n ? \"https://sandbox-api.buzapay.com/payment-gateway-api\"\n : \"https://sandbox-api.midencards.io/miden-web\";\n } else if (mode === \"prod\") {\n return caller === \"buzapay\"\n ? \"https://api.buzapay.com/payment-gateway-api\"\n : \"https://api.midencards.io/miden-web\";\n }\n return \"\";\n};\n\nexport const getBaseAppUrl = (\n mode: string,\n caller: \"buzapay\" | \"miden\",\n): string => {\n if (mode === \"sandbox\") {\n return caller === \"buzapay\"\n ? \"https://sandbox-merchant.buzapay.com\"\n : \"https://sandbox.midencards.io\";\n } else if (mode === \"prod\") {\n return caller === \"buzapay\"\n ? \"https://merchant.buzapay.com\"\n : \"https://midencards.io\";\n }\n return \"\";\n};\n","export const currencySign = (currency: string): string => {\n if (currency === \"USD\") return \"$\";\n if (currency === \"NGN\") return \"₦\";\n if (currency === \"EUR\") return \"€\";\n if (currency === \"GBP\") return \"£\";\n if (currency === \"JPY\") return \"¥\";\n if (currency === \"CNY\") return \"¥\";\n if (currency === \"USDC\" || currency === \"usdc\") return \"$⧫\";\n if (currency === \"USDT\" || currency === \"usdt\") return \"₮\";\n return \"$\";\n};\n\nexport const formatAmount = (\n value: number | string,\n currency?: string\n): string => {\n const num = typeof value === \"string\" ? parseFloat(value) : value;\n if (isNaN(num)) return \"0\";\n return `${currency ? currencySign(currency) : \"\"}${num?.toLocaleString(\n \"en-US\"\n )}`;\n};\n\nexport const truncateString = (str: string, num: number): string => {\n if (str.length <= num) {\n return str;\n }\n return str.slice(0, num) + \"...\";\n};\n","import { ICountryDropdown } from \"../types\";\n\nexport const restrictToNumericKeys = (event: KeyboardEvent): void => {\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n \"Home\",\n \"End\",\n \".\",\n ];\n\n if (\n (event.ctrlKey || event.metaKey) &&\n [\"a\", \"c\", \"v\", \"x\"].includes(event.key.toLowerCase())\n ) {\n return; // allow copy/paste/select\n }\n\n // Prevent non-numeric keys\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Prevent multiple decimals\n if (\n event.key === \".\" &&\n (event.target as HTMLInputElement).value.includes(\".\")\n ) {\n event.preventDefault();\n }\n};\n\nexport const COUNTRIES: ICountryDropdown[] = [\n { name: 'Afghanistan', code: 'AF', phoneCode: '+93', flag: '🇦🇫' },\n { name: 'Albania', code: 'AL', phoneCode: '+355', flag: '🇦🇱' },\n { name: 'Algeria', code: 'DZ', phoneCode: '+213', flag: '🇩🇿' },\n { name: 'American Samoa', code: 'AS', phoneCode: '+1', flag: '🇦🇸' },\n { name: 'Andorra', code: 'AD', phoneCode: '+376', flag: '🇦🇩' },\n { name: 'Angola', code: 'AO', phoneCode: '+244', flag: '🇦🇴' },\n { name: 'Anguilla', code: 'AI', phoneCode: '+1', flag: '🇦🇮' },\n { name: 'Antarctica', code: 'AQ', phoneCode: '+672', flag: '🇦🇶' },\n { name: 'Antigua and Barbuda', code: 'AG', phoneCode: '+1', flag: '🇦🇬' },\n { name: 'Argentina', code: 'AR', phoneCode: '+54', flag: '🇦🇷' },\n { name: 'Armenia', code: 'AM', phoneCode: '+374', flag: '🇦🇲' },\n { name: 'Aruba', code: 'AW', phoneCode: '+297', flag: '🇦🇼' },\n { name: 'Australia', code: 'AU', phoneCode: '+61', flag: '🇦🇺' },\n { name: 'Austria', code: 'AT', phoneCode: '+43', flag: '🇦🇹' },\n { name: 'Azerbaijan', code: 'AZ', phoneCode: '+994', flag: '🇦🇿' },\n { name: 'Bahamas', code: 'BS', phoneCode: '+1', flag: '🇧🇸' },\n { name: 'Bahrain', code: 'BH', phoneCode: '+973', flag: '🇧🇭' },\n { name: 'Bangladesh', code: 'BD', phoneCode: '+880', flag: '🇧🇩' },\n { name: 'Barbados', code: 'BB', phoneCode: '+1', flag: '🇧🇧' },\n { name: 'Belarus', code: 'BY', phoneCode: '+375', flag: '🇧🇾' },\n { name: 'Belgium', code: 'BE', phoneCode: '+32', flag: '🇧🇪' },\n { name: 'Belize', code: 'BZ', phoneCode: '+501', flag: '🇧🇿' },\n { name: 'Benin', code: 'BJ', phoneCode: '+229', flag: '🇧🇯' },\n { name: 'Bermuda', code: 'BM', phoneCode: '+1', flag: '🇧🇲' },\n { name: 'Bhutan', code: 'BT', phoneCode: '+975', flag: '🇧🇹' },\n { name: 'Bolivia', code: 'BO', phoneCode: '+591', flag: '🇧🇴' },\n { name: 'Bosnia and Herzegovina', code: 'BA', phoneCode: '+387', flag: '🇧🇦' },\n { name: 'Botswana', code: 'BW', phoneCode: '+267', flag: '🇧🇼' },\n { name: 'Bouvet Island', code: 'BV', phoneCode: '+47', flag: '🇧🇻' },\n { name: 'Brazil', code: 'BR', phoneCode: '+55', flag: '🇧🇷' },\n { name: 'British Indian Ocean Territory', code: 'IO', phoneCode: '+246', flag: '🇮🇴' },\n { name: 'Brunei Darussalam', code: 'BN', phoneCode: '+673', flag: '🇧🇳' },\n { name: 'Bulgaria', code: 'BG', phoneCode: '+359', flag: '🇧🇬' },\n { name: 'Burkina Faso', code: 'BF', phoneCode: '+226', flag: '🇧🇫' },\n { name: 'Burundi', code: 'BI', phoneCode: '+257', flag: '🇧🇮' },\n { name: 'Cambodia', code: 'KH', phoneCode: '+855', flag: '🇰🇭' },\n { name: 'Cameroon', code: 'CM', phoneCode: '+237', flag: '🇨🇲' },\n { name: 'Canada', code: 'CA', phoneCode: '+1', flag: '🇨🇦' },\n { name: 'Cape Verde', code: 'CV', phoneCode: '+238', flag: '🇨🇻' },\n { name: 'Cayman Islands', code: 'KY', phoneCode: '+1', flag: '🇰🇾' },\n { name: 'Central African Republic', code: 'CF', phoneCode: '+236', flag: '🇨🇫' },\n { name: 'Chad', code: 'TD', phoneCode: '+235', flag: '🇹🇩' },\n { name: 'Chile', code: 'CL', phoneCode: '+56', flag: '🇨🇱' },\n { name: 'China', code: 'CN', phoneCode: '+86', flag: '🇨🇳' },\n { name: 'Christmas Island', code: 'CX', phoneCode: '+61', flag: '🇨🇽' },\n { name: 'Cocos (Keeling) Islands', code: 'CC', phoneCode: '+61', flag: '🇨🇨' },\n { name: 'Colombia', code: 'CO', phoneCode: '+57', flag: '🇨🇴' },\n { name: 'Comoros', code: 'KM', phoneCode: '+269', flag: '🇰🇲' },\n { name: 'Congo', code: 'CG', phoneCode: '+242', flag: '🇨🇬' },\n { name: 'Congo, Democratic Republic of the', code: 'CD', phoneCode: '+243', flag: '🇨🇩' },\n { name: 'Cook Islands', code: 'CK', phoneCode: '+682', flag: '🇨🇰' },\n { name: 'Costa Rica', code: 'CR', phoneCode: '+506', flag: '🇨🇷' },\n { name: 'Côte d\\'Ivoire', code: 'CI', phoneCode: '+225', flag: '🇨🇮' },\n { name: 'Croatia', code: 'HR', phoneCode: '+385', flag: '🇭🇷' },\n { name: 'Cuba', code: 'CU', phoneCode: '+53', flag: '🇨🇺' },\n { name: 'Cyprus', code: 'CY', phoneCode: '+357', flag: '🇨🇾' },\n { name: 'Czech Republic', code: 'CZ', phoneCode: '+420', flag: '🇨🇿' },\n { name: 'Denmark', code: 'DK', phoneCode: '+45', flag: '🇩🇰' },\n { name: 'Djibouti', code: 'DJ', phoneCode: '+253', flag: '🇩🇯' },\n { name: 'Dominica', code: 'DM', phoneCode: '+1', flag: '🇩🇲' },\n { name: 'Dominican Republic', code: 'DO', phoneCode: '+1', flag: '🇩🇴' },\n { name: 'Ecuador', code: 'EC', phoneCode: '+593', flag: '🇪🇨' },\n { name: 'Egypt', code: 'EG', phoneCode: '+20', flag: '🇪🇬' },\n { name: 'El Salvador', code: 'SV', phoneCode: '+503', flag: '🇸🇻' },\n { name: 'Equatorial Guinea', code: 'GQ', phoneCode: '+240', flag: '🇬🇶' },\n { name: 'Eritrea', code: 'ER', phoneCode: '+291', flag: '🇪🇷' },\n { name: 'Estonia', code: 'EE', phoneCode: '+372', flag: '🇪🇪' },\n { name: 'Ethiopia', code: 'ET', phoneCode: '+251', flag: '🇪🇹' },\n { name: 'Falkland Islands (Malvinas)', code: 'FK', phoneCode: '+500', flag: '🇫🇰' },\n { name: 'Faroe Islands', code: 'FO', phoneCode: '+298', flag: '🇫🇴' },\n { name: 'Fiji', code: 'FJ', phoneCode: '+679', flag: '🇫🇯' },\n { name: 'Finland', code: 'FI', phoneCode: '+358', flag: '🇫🇮' },\n { name: 'France', code: 'FR', phoneCode: '+33', flag: '🇫🇷' },\n { name: 'French Guiana', code: 'GF', phoneCode: '+594', flag: '🇬🇫' },\n { name: 'French Polynesia', code: 'PF', phoneCode: '+689', flag: '🇵🇫' },\n { name: 'French Southern Territories', code: 'TF', phoneCode: '+262', flag: '🇹🇫' },\n { name: 'Gabon', code: 'GA', phoneCode: '+240', flag: '🇬🇦' },\n { name: 'Gambia', code: 'GM', phoneCode: '+220', flag: '🇬🇲' },\n { name: 'Georgia', code: 'GE', phoneCode: '+995', flag: '🇬🇪' },\n { name: 'Germany', code: 'DE', phoneCode: '+49', flag: '🇩🇪' },\n { name: 'Ghana', code: 'GH', phoneCode: '+233', flag: '🇬🇭' },\n { name: 'Gibraltar', code: 'GI', phoneCode: '+350', flag: '🇬🇮' },\n { name: 'Greece', code: 'GR', phoneCode: '+30', flag: '🇬🇷' },\n { name: 'Greenland', code: 'GL', phoneCode: '+299', flag: '🇬🇱' },\n { name: 'Grenada', code: 'GD', phoneCode: '+1', flag: '🇬🇩' },\n { name: 'Guadeloupe', code: 'GP', phoneCode: '+590', flag: '🇬🇵' },\n { name: 'Guam', code: 'GU', phoneCode: '+1', flag: '🇬🇺' },\n { name: 'Guatemala', code: 'GT', phoneCode: '+502', flag: '🇬🇹' },\n { name: 'Guernsey', code: 'GG', phoneCode: '+44', flag: '🇬🇬' },\n { name: 'Guinea', code: 'GN', phoneCode: '+224', flag: '🇬🇳' },\n { name: 'Guinea-Bissau', code: 'GW', phoneCode: '+245', flag: '🇬🇼' },\n { name: 'Guyana', code: 'GY', phoneCode: '+592', flag: '🇬🇾' },\n { name: 'Haiti', code: 'HT', phoneCode: '+509', flag: '🇭🇹' },\n { name: 'Heard Island and McDonald Islands', code: 'HM', phoneCode: '+672', flag: '🇭🇲' },\n { name: 'Holy See (Vatican City State)', code: 'VA', phoneCode: '+39', flag: '🇻🇦' },\n { name: 'Honduras', code: 'HN', phoneCode: '+504', flag: '🇭🇳' },\n { name: 'Hong Kong', code: 'HK', phoneCode: '+852', flag: '🇭🇰' },\n { name: 'Hungary', code: 'HU', phoneCode: '+36', flag: '🇭🇺' },\n { name: 'Iceland', code: 'IS', phoneCode: '+354', flag: '🇮🇸' },\n { name: 'India', code: 'IN', phoneCode: '+91', flag: '🇮🇳' },\n { name: 'Indonesia', code: 'ID', phoneCode: '+62', flag: '🇮🇩' },\n { name: 'Iran, Islamic Republic of', code: 'IR', phoneCode: '+98', flag: '🇮🇷' },\n { name: 'Iraq', code: 'IQ', phoneCode: '+964', flag: '🇮🇶' },\n { name: 'Ireland', code: 'IE', phoneCode: '+353', flag: '🇮🇪' },\n { name: 'Isle of Man', code: 'IM', phoneCode: '+44', flag: '🇮🇲' },\n { name: 'Israel', code: 'IL', phoneCode: '+972', flag: '🇮🇱' },\n { name: 'Italy', code: 'IT', phoneCode: '+39', flag: '🇮🇹' },\n { name: 'Jamaica', code: 'JM', phoneCode: '+1', flag: '🇯🇲' },\n { name: 'Japan', code: 'JP', phoneCode: '+81', flag: '🇯🇵' },\n { name: 'Jersey', code: 'JE', phoneCode: '+44', flag: '🇯🇪' },\n { name: 'Jordan', code: 'JO', phoneCode: '+962', flag: '🇯🇴' },\n { name: 'Kazakhstan', code: 'KZ', phoneCode: '+7', flag: '🇰🇿' },\n { name: 'Kenya', code: 'KE', phoneCode: '+254', flag: '🇰🇪' },\n { name: 'Kiribati', code: 'KI', phoneCode: '+686', flag: '🇰🇮' },\n { name: 'Korea, Democratic People\\'s Republic of', code: 'KP', phoneCode: '+850', flag: '🇰🇵' },\n { name: 'Korea, Republic of', code: 'KR', phoneCode: '+82', flag: '🇰🇷' },\n { name: 'Kuwait', code: 'KW', phoneCode: '+965', flag: '🇰🇼' },\n { name: 'Kyrgyzstan', code: 'KG', phoneCode: '+996', flag: '🇰🇬' },\n { name: 'Lao People\\'s Democratic Republic', code: 'LA', phoneCode: '+856', flag: '🇱🇦' },\n { name: 'Latvia', code: 'LV', phoneCode: '+371', flag: '🇱🇻' },\n { name: 'Lebanon', code: 'LB', phoneCode: '+961', flag: '🇱🇧' },\n { name: 'Lesotho', code: 'LS', phoneCode: '+266', flag: '🇱🇸' },\n { name: 'Liberia', code: 'LR', phoneCode: '+231', flag: '🇱🇷' },\n { name: 'Libya', code: 'LY', phoneCode: '+218', flag: '🇱🇾' },\n { name: 'Liechtenstein', code: 'LI', phoneCode: '+423', flag: '🇱🇮' },\n { name: 'Lithuania', code: 'LT', phoneCode: '+370', flag: '🇱🇹' },\n { name: 'Luxembourg', code: 'LU', phoneCode: '+352', flag: '🇱🇺' },\n { name: 'Macao', code: 'MO', phoneCode: '+853', flag: '🇲🇴' },\n { name: 'Macedonia, the former Yugoslav Republic of', code: 'MK', phoneCode: '+389', flag: '🇲🇰' },\n { name: 'Madagascar', code: 'MG', phoneCode: '+261', flag: '🇲🇬' },\n { name: 'Malawi', code: 'MW', phoneCode: '+265', flag: '🇲🇼' },\n { name: 'Malaysia', code: 'MY', phoneCode: '+60', flag: '🇲🇾' },\n { name: 'Maldives', code: 'MV', phoneCode: '+960', flag: '🇲🇻' },\n { name: 'Mali', code: 'ML', phoneCode: '+223', flag: '🇲🇱' },\n { name: 'Malta', code: 'MT', phoneCode: '+356', flag: '🇲🇹' },\n { name: 'Marshall Islands', code: 'MH', phoneCode: '+692', flag: '🇲🇭' },\n { name: 'Martinique', code: 'MQ', phoneCode: '+596', flag: '🇲🇶' },\n { name: 'Mauritania', code: 'MR', phoneCode: '+222', flag: '🇲🇷' },\n { name: 'Mauritius', code: 'MU', phoneCode: '+230', flag: '🇲🇺' },\n { name: 'Mayotte', code: 'YT', phoneCode: '+262', flag: '🇾🇹' },\n { name: 'Mexico', code: 'MX', phoneCode: '+52', flag: '🇲🇽' },\n { name: 'Micronesia, Federated States of', code: 'FM', phoneCode: '+691', flag: '🇫🇲' },\n { name: 'Moldova, Republic of', code: 'MD', phoneCode: '+373', flag: '🇲🇩' },\n { name: 'Monaco', code: 'MC', phoneCode: '+377', flag: '🇲🇨' },\n { name: 'Mongolia', code: 'MN', phoneCode: '+976', flag: '🇲🇳' },\n { name: 'Montenegro', code: 'ME', phoneCode: '+382', flag: '🇲🇪' },\n { name: 'Montserrat', code: 'MS', phoneCode: '+1', flag: '🇲🇸' },\n { name: 'Morocco', code: 'MA', phoneCode: '+212', flag: '🇲🇦' },\n { name: 'Mozambique', code: 'MZ', phoneCode: '+258', flag: '🇲🇿' },\n { name: 'Myanmar', code: 'MM', phoneCode: '+95', flag: '🇲🇲' },\n { name: 'Namibia', code: 'NA', phoneCode: '+264', flag: '🇳🇦' },\n { name: 'Nauru', code: 'NR', phoneCode: '+674', flag: '🇳🇷' },\n { name: 'Nepal', code: 'NP', phoneCode: '+977', flag: '🇳🇵' },\n { name: 'Netherlands', code: 'NL', phoneCode: '+31', flag: '🇳🇱' },\n { name: 'New Caledonia', code: 'NC', phoneCode: '+687', flag: '🇳🇨' },\n { name: 'New Zealand', code: 'NZ', phoneCode: '+64', flag: '🇳🇿' },\n { name: 'Nicaragua', code: 'NI', phoneCode: '+505', flag: '🇳🇮' },\n { name: 'Niger', code: 'NE', phoneCode: '+227', flag: '🇳🇪' },\n { name: 'Nigeria', code: 'NG', phoneCode: '+234', flag: '🇳🇬' },\n { name: 'Niue', code: 'NU', phoneCode: '+683', flag: '🇳🇺' },\n { name: 'Norfolk Island', code: 'NF', phoneCode: '+672', flag: '🇳🇫' },\n { name: 'Northern Mariana Islands', code: 'MP', phoneCode: '+1', flag: '🇲🇵' },\n { name: 'Norway', code: 'NO', phoneCode: '+47', flag: '🇳🇴' },\n { name: 'Oman', code: 'OM', phoneCode: '+968', flag: '🇴🇲' },\n { name: 'Pakistan', code: 'PK', phoneCode: '+92', flag: '🇵🇰' },\n { name: 'Palau', code: 'PW', phoneCode: '+680', flag: '🇵🇼' },\n { name: 'Palestinian Territory, Occupied', code: 'PS', phoneCode: '+970', flag: '🇵🇸' },\n { name: 'Panama', code: 'PA', phoneCode: '+507', flag: '🇵🇦' },\n { name: 'Papua New Guinea', code: 'PG', phoneCode: '+675', flag: '🇵🇬' },\n { name: 'Paraguay', code: 'PY', phoneCode: '+595', flag: '🇵🇾' },\n { name: 'Peru', code: 'PE', phoneCode: '+51', flag: '🇵🇪' },\n { name: 'Philippines', code: 'PH', phoneCode: '+63', flag: '🇵🇭' },\n { name: 'Pitcairn', code: 'PN', phoneCode: '+64', flag: '🇵🇳' },\n { name: 'Poland', code: 'PL', phoneCode: '+48', flag: '🇵🇱' },\n { name: 'Portugal', code: 'PT', phoneCode: '+351', flag: '🇵🇹' },\n { name: 'Puerto Rico', code: 'PR', phoneCode: '+1', flag: '🇵🇷' },\n { name: 'Qatar', code: 'QA', phoneCode: '+974', flag: '🇶🇦' },\n { name: 'Réunion', code: 'RE', phoneCode: '+262', flag: '🇷🇪' },\n { name: 'Romania', code: 'RO', phoneCode: '+40', flag: '🇷🇴' },\n { name: 'Russian Federation', code: 'RU', phoneCode: '+7', flag: '🇷🇺' },\n { name: 'Rwanda', code: 'RW', phoneCode: '+250', flag: '🇷🇼' },\n { name: 'Saint Barthélemy', code: 'BL', phoneCode: '+590', flag: '🇧🇱' },\n { name: 'Saint Helena, Ascension and Tristan da Cunha', code: 'SH', phoneCode: '+290', flag: '🇸🇭' },\n { name: 'Saint Kitts and Nevis', code: 'KN', phoneCode: '+1', flag: '🇰🇳' },\n { name: 'Saint Lucia', code: 'LC', phoneCode: '+1', flag: '🇱🇨' },\n { name: 'Saint Martin (French part)', code: 'MF', phoneCode: '+590', flag: '🇲🇫' },\n { name: 'Saint Pierre and Miquelon', code: 'PM', phoneCode: '+508', flag: '🇵🇲' },\n { name: 'Saint Vincent and the Grenadines', code: 'VC', phoneCode: '+1', flag: '🇻🇨' },\n { name: 'Samoa', code: 'WS', phoneCode: '+685', flag: '🇼🇸' },\n { name: 'San Marino', code: 'SM', phoneCode: '+378', flag: '🇸🇲' },\n { name: 'Sao Tome and Principe', code: 'ST', phoneCode: '+239', flag: '🇸🇹' },\n { name: 'Saudi Arabia', code: 'SA', phoneCode: '+966', flag: '🇸🇦' },\n { name: 'Senegal', code: 'SN', phoneCode: '+221', flag: '🇸🇳' },\n { name: 'Serbia', code: 'RS', phoneCode: '+381', flag: '🇷🇸' },\n { name: 'Seychelles', code: 'SC', phoneCode: '+248', flag: '🇸🇨' },\n { name: 'Sierra Leone', code: 'SL', phoneCode: '+232', flag: '🇸🇱' },\n { name: 'Singapore', code: 'SG', phoneCode: '+65', flag: '🇸🇬' },\n { name: 'Sint Maarten (Dutch part)', code: 'SX', phoneCode: '+1', flag: '🇸🇽' },\n { name: 'Slovakia', code: 'SK', phoneCode: '+421', flag: '🇸🇰' },\n { name: 'Slovenia', code: 'SI', phoneCode: '+386', flag: '🇸🇮' },\n { name: 'Solomon Islands', code: 'SB', phoneCode: '+677', flag: '🇸🇧' },\n { name: 'Somalia', code: 'SO', phoneCode: '+252', flag: '🇸🇴' },\n { name: 'South Africa', code: 'ZA', phoneCode: '+27', flag: '🇿🇦' },\n { name: 'South Georgia and the South Sandwich Islands', code: 'GS', phoneCode: '+500', flag: '🇬🇸' },\n { name: 'South Sudan', code: 'SS', phoneCode: '+211', flag: '🇸🇸' },\n { name: 'Spain', code: 'ES', phoneCode: '+34', flag: '🇪🇸' },\n { name: 'Sri Lanka', code: 'LK', phoneCode: '+94', flag: '🇱🇰' },\n { name: 'Sudan', code: 'SD', phoneCode: '+249', flag: '🇸🇩' },\n { name: 'Suriname', code: 'SR', phoneCode: '+597', flag: '🇸🇷' },\n { name: 'Svalbard and Jan Mayen', code: 'SJ', phoneCode: '+47', flag: '🇸🇯' },\n { name: 'Swaziland', code: 'SZ', phoneCode: '+268', flag: '🇸🇿' },\n { name: 'Sweden', code: 'SE', phoneCode: '+46', flag: '🇸🇪' },\n { name: 'Switzerland', code: 'CH', phoneCode: '+41', flag: '🇨🇭' },\n { name: 'Syrian Arab Republic', code: 'SY', phoneCode: '+963', flag: '🇸🇾' },\n { name: 'Taiwan, Province of China', code: 'TW', phoneCode: '+886', flag: '🇹🇼' },\n { name: 'Tajikistan', code: 'TJ', phoneCode: '+992', flag: '🇹🇯' },\n { name: 'Tanzania, United Republic of', code: 'TZ', phoneCode: '+255', flag: '🇹🇿' },\n { name: 'Thailand', code: 'TH', phoneCode: '+66', flag: '🇹🇭' },\n { name: 'Timor-Leste', code: 'TL', phoneCode: '+670', flag: '🇹🇱' },\n { name: 'Togo', code: 'TG', phoneCode: '+228', flag: '🇹🇬' },\n { name: 'Tokelau', code: 'TK', phoneCode: '+690', flag: '🇹🇰' },\n { name: 'Tonga', code: 'TO', phoneCode: '+676', flag: '🇹🇴' },\n { name: 'Trinidad and Tobago', code: 'TT', phoneCode: '+1', flag: '🇹🇹' },\n { name: 'Tunisia', code: 'TN', phoneCode: '+216', flag: '🇹🇳' },\n { name: 'Turkey', code: 'TR', phoneCode: '+90', flag: '🇹🇷' },\n { name: 'Turkmenistan', code: 'TM', phoneCode: '+993', flag: '🇹🇲' },\n { name: 'Turks and Caicos Islands', code: 'TC', phoneCode: '+1', flag: '🇹🇨' },\n { name: 'Tuvalu', code: 'TV', phoneCode: '+688', flag: '🇹🇻' },\n { name: 'Uganda', code: 'UG', phoneCode: '+256', flag: '🇺🇬' },\n { name: 'Ukraine', code: 'UA', phoneCode: '+380', flag: '🇺🇦' },\n { name: 'United Arab Emirates', code: 'AE', phoneCode: '+971', flag: '🇦🇪' },\n { name: 'United Kingdom', code: 'GB', phoneCode: '+44', flag: '🇬🇧' },\n { name: 'United States', code: 'US', phoneCode: '+1', flag: '🇺🇸' },\n { name: 'United States Minor Outlying Islands', code: 'UM', phoneCode: '+1', flag: '🇺🇲' },\n { name: 'Uruguay', code: 'UY', phoneCode: '+598', flag: '🇺🇾' },\n { name: 'Uzbekistan', code: 'UZ', phoneCode: '+998', flag: '🇺🇿' },\n { name: 'Vanuatu', code: 'VU', phoneCode: '+678', flag: '🇻🇺' },\n { name: 'Venezuela, Bolivarian Republic of', code: 'VE', phoneCode: '+58', flag: '🇻🇪' },\n { name: 'Viet Nam', code: 'VN', phoneCode: '+84', flag: '🇻🇳' },\n { name: 'Virgin Islands, British', code: 'VG', phoneCode: '+1', flag: '🇻🇬' },\n { name: 'Virgin Islands, U.S.', code: 'VI', phoneCode: '+1', flag: '🇻🇮' },\n { name: 'Wallis and Futuna', code: 'WF', phoneCode: '+681', flag: '🇼🇫' },\n { name: 'Western Sahara', code: 'EH', phoneCode: '+212', flag: '🇪🇭' },\n { name: 'Yemen', code: 'YE', phoneCode: '+967', flag: '🇾🇪' },\n { name: 'Zambia', code: 'ZM', phoneCode: '+260', flag: '🇿🇲' },\n { name: 'Zimbabwe', code: 'ZW', phoneCode: '+263', flag: '🇿🇼' }\n];","export interface RulesListItem {\n rule: string;\n value?: string; // optional (for rules without a value)\n}\n\nconst validateRegex = (value: string, regex: RegExp) => regex.test(value);\n\nfunction parseRules(rules: string): RulesListItem[] {\n if (!rules) return [];\n return rules.split(\"|\").map((chunk) => {\n const [rule, val] = chunk.split(\":\");\n return { rule: rule as string, value: val };\n });\n}\n\nexport function getValidationErrorMessage(\n rulesStr: string,\n inputValue: string,\n label: string\n): string | null {\n const errors: string[] = [];\n const rules = parseRules(rulesStr);\n const lowerLabel = (label || \"This field\").toLowerCase();\n const v = inputValue ?? \"\";\n\n const num = Number(v);\n const hasNum = !Number.isNaN(num);\n\n for (const r of rules) {\n switch (r.rule) {\n case \"required\":\n if (!v) errors.push(`The ${lowerLabel} field is required`);\n break;\n\n case \"alpha\":\n if (!validateRegex(v, /^[a-zA-Z]+$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters`\n );\n break;\n\n case \"at_least_one_uppercase\":\n if (!validateRegex(v, /.*[A-Z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one uppercase character`\n );\n break;\n\n case \"at_least_one_lowercase\":\n if (!validateRegex(v, /.*[a-z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one lowercase character`\n );\n break;\n\n case \"at_least_one_number\":\n if (!validateRegex(v, /.*\\d.*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one number`\n );\n break;\n\n case \"alpha_num\":\n if (!validateRegex(v, /^[a-z0-9]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and numbers`\n );\n break;\n\n case \"num_spaces\":\n if (!validateRegex(v, /^[0-9\\s]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain space and numbers`\n );\n break;\n\n case \"alpha_spaces\":\n if (!validateRegex(v, /^[A-Za-z\\s]*$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and spaces`\n );\n break;\n\n case \"numeric\":\n if (!validateRegex(v, /^\\d+$/))\n errors.push(`The ${lowerLabel} field must only contain numbers`);\n break;\n\n case \"no_special\":\n if (validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must not contain special characters`\n );\n break;\n\n case \"at_least_one_special\":\n if (!validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must contain at least one special character`\n );\n break;\n\n case \"email\":\n if (!validateRegex(v, /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/)) {\n errors.push(\"Please enter a valid email address\");\n }\n break;\n\n case \"is\":\n if (r.value !== v) errors.push(`Value entered must be ${r.value}`);\n break;\n\n case \"is_not\":\n if (r.value === v) errors.push(`Value entered must not be ${r.value}`);\n break;\n\n case \"char_length\":\n if (v.length !== Number(r.value))\n errors.push(\n `The ${lowerLabel} field must be ${r.value} characters long`\n );\n break;\n\n case \"min_char_length\":\n if (v.length < Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be less than ${r.value} characters long`\n );\n break;\n\n case \"max_char_length\":\n if (v.length > Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be greater than ${r.value} characters long`\n );\n break;\n\n // Age rules treat the value as a number (strict numeric compare)\n case \"age\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Age entered must be ${r.value}`);\n break;\n\n case \"min_age\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Age entered must not be less than ${r.value}`);\n break;\n\n case \"max_age\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Age entered must not be greater than ${r.value}`);\n break;\n\n // Numeric value rules (general numbers)\n case \"num_is\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Number entered must be ${r.value}`);\n break;\n\n case \"num_is_not\":\n if (hasNum && num === Number(r.value))\n errors.push(`Number entered must not be ${r.value}`);\n break;\n\n case \"min_number\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Number entered must not be less than ${r.value}`);\n break;\n\n case \"max_number\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Number entered must not be greater than ${r.value}`);\n break;\n\n default:\n // Unknown rule: ignore silently (or push a generic error if you prefer)\n break;\n }\n }\n\n return errors.length > 0 ? errors[0] : null;\n}\n\nexport const validateGroup = (\n values: Record<string, string>,\n rulesMap: Record<string, string>,\n prettyLabels?: Record<string, string> // optional: override labels in messages\n) => {\n const out: Record<string, string> = {};\n for (const [field, rules] of Object.entries(rulesMap)) {\n if (!rules) continue;\n const label = prettyLabels?.[field] ?? field;\n const err = getValidationErrorMessage(rules, values[field] ?? \"\", label);\n if (err) out[field] = err;\n }\n return out;\n};\n","export enum CardSchemes {\n Visa = 1,\n MasterCard = 2,\n Verve = 3,\n MastercardAndVisa = 4,\n AmericanExpress = 5,\n Discover = 6,\n JCB = 7,\n DinersClub = 8,\n Maestro = 9,\n UnionPay = 10,\n UnionPay3DS = 11, // based on known test BINs only\n UnionPayNon3DS = 12, // based on known test BINs only\n UATP = 13,\n PayPak = 14,\n Jaywan = 15,\n Mada = 16, // mada-only\n MadaVisa = 17,\n MadaMastercard = 18,\n Unknown = 19,\n}\n\n// ---------- Generic scheme regexes ----------\nconst VISA_RE = /^4\\d{12}(\\d{3}){0,2}$/; // 13, 16, 19 digits\nconst MC_RE =\n /^(?:5[1-5]\\d{14}|2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d{2}|7(?:[01]\\d|20))\\d{12})(?:\\d{0,3})?$/; // 16-19\nconst AMEX_RE = /^(34|37)\\d{13}$/; // 15\nconst DISCOVER_RE =\n /^(?:6011|65|64[4-9]|622(?:12[6-9]|1[3-9]\\d|[2-8]\\d{2}|9(?:0\\d|1\\d|2[0-5])))\\d{12,15}$/; // 16-19\nconst JCB_RE = /^(?:35(?:2[8-9]|[3-8]\\d))\\d{12,15}$/; // 16-19\nconst DINERS_RE = /^(?:3(?:0[0-5]\\d|095|6\\d|[89]\\d))\\d{11,13}$/; // 14-16\nconst MAESTRO_RE = /^(?:50|5[6-9]|6[0-9])\\d{10,17}$/; // 12-19\nconst UNIONPAY_RE = /^62\\d{14,17}$/; // 16-19\nconst UATP_RE = /^1\\d{14}$/; // 15\n\n// ---------- Known local/test BINs ----------\nconst VERVE_BIN6_RANGES: Array<[number, number]> = [\n [506099, 506198],\n [650002, 650027],\n];\nconst VERVE_BIN6_SINGLES = new Set<number>([507865, 507866]);\nconst PAYPAK_BIN6 = new Set<number>([220545, 220543]);\nconst JAYWAN_BIN7 = new Set<number>([6690109]);\nconst MADA_ONLY_BIN6 = new Set<number>([968209, 873646]);\nconst MADA_VISA_BIN6 = new Set<number>([422818, 486094]);\nconst MADA_MC_BIN6 = new Set<number>([529741, 543357]);\nconst UNIONPAY_3DS_BIN6 = new Set<number>([620108]);\nconst UNIONPAY_NON3DS_BIN6 = new Set<number>([621423]);\n\nexport function cardTypeHandler(cardNumber: string): string {\n const scheme = detect(cardNumber);\n return CardSchemes[scheme]; // numeric enum reverse mapping -> name\n}\n\nexport function detect(cardNumber: string): CardSchemes {\n if (!cardNumber || !cardNumber.trim()) return CardSchemes.Unknown;\n\n // Normalize: digits only\n const digits = cardNumber.replace(/\\D/g, '');\n if (digits.length < 12 || digits.length > 19) return CardSchemes.Unknown;\n\n // ---------- 1) Exact local/test BIN routing FIRST ----------\n if (digits.length >= 6) {\n const bin6 = parseInt(digits.slice(0, 6), 10);\n\n // mada-only\n if (MADA_ONLY_BIN6.has(bin6) && digits.length >= 16 && digits.length <= 19)\n return CardSchemes.Mada;\n\n // mada Visa\n if (MADA_VISA_BIN6.has(bin6) && VISA_RE.test(digits)) return CardSchemes.MadaVisa;\n\n // mada Mastercard\n if (MADA_MC_BIN6.has(bin6) && MC_RE.test(digits)) return CardSchemes.MadaMastercard;\n\n // PayPak\n if (PAYPAK_BIN6.has(bin6) && digits.length === 16) return CardSchemes.PayPak;\n\n // UnionPay test BINs with 3DS status\n if (UNIONPAY_3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay3DS;\n if (UNIONPAY_NON3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPayNon3DS;\n\n // Verve\n if (isVerve(bin6, digits.length)) return CardSchemes.Verve;\n }\n\n if (digits.length >= 7) {\n const bin7 = parseInt(digits.slice(0, 7), 10);\n\n // Jaywan\n if (JAYWAN_BIN7.has(bin7) && digits.length === 16) return CardSchemes.Jaywan;\n }\n\n // ---------- 2) Generic schemes ----------\n if (UATP_RE.test(digits)) return CardSchemes.UATP;\n if (AMEX_RE.test(digits)) return CardSchemes.AmericanExpress;\n if (DISCOVER_RE.test(digits)) return CardSchemes.Discover;\n if (JCB_RE.test(digits)) return CardSchemes.JCB;\n if (DINERS_RE.test(digits)) return CardSchemes.DinersClub;\n if (MC_RE.test(digits)) return CardSchemes.MasterCard;\n if (VISA_RE.test(digits)) return CardSchemes.Visa;\n if (UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay;\n if (MAESTRO_RE.test(digits)) return CardSchemes.Maestro;\n\n return CardSchemes.Unknown;\n}\n\nfunction isVerve(bin6: number, length: number): boolean {\n if (length < 16 || length > 19) return false;\n const inRange = VERVE_BIN6_RANGES.some(([start, end]) => bin6 >= start && bin6 <= end);\n return inRange || VERVE_BIN6_SINGLES.has(bin6);\n}\n","import {\n IAuthorizeCardPaymentPayload,\n IGeneratePaymentAccountPayload,\n IGenerateStableCoinAddress,\n IPaymentObject,\n} from \"../types\";\nimport { getBaseUrl } from \"../utils\";\n\nexport async function createPaymentLink(\n paymentObject: IPaymentObject,\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-link2\",\n miden: \"api/v1/accrual/checkout/generate-payment-link\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n body: JSON.stringify({\n ...paymentObject,\n LinkName: `${Date.now()}-Link`,\n }),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function authorizeCardPayment(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/authorize-card-3ds-payment-sdk\",\n miden: \"api/v1/accrual/card/authorize\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function validateCardPaymentOtp(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/card-payment/validate-otp\",\n miden: \"\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function resendCardPaymentOtp(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/card-payment/resend-otp\",\n miden: \"\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getPaymentReferenceDetails(\n environment: string,\n paymentReference: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/checkout/details/${paymentReference}`,\n miden: `api/v1/accrual/checkout/details/${paymentReference}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generatePaymentAccount(\n environment: string,\n { merchantId, ...rest }: IGeneratePaymentAccountPayload,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-account\",\n miden: \"api/v1/accrual/checkout/generate-payment-account\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generateStableCoinAddress(\n environment: string,\n { merchantId, ...rest }: IGenerateStableCoinAddress,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-walletaddress\",\n miden: \"api/v1/accrual/checkout/generate-wallet-address\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function midenConfirmPayment(\n environment: string,\n reference: string,\n merchantId: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n miden: `api/v1/accrual/checkout/confirm-payment/${reference}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n uniqueKey: merchantId,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n","import CryptoJS from \"crypto-js\";\n\nexport function encryptPayload(merchantId: string, formData = {}) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n const postDataObj = JSON.stringify(formData);\n\n const encryptedData = CryptoJS.AES.encrypt(\n CryptoJS.enc.Utf8.parse(postDataObj),\n key,\n {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n }\n );\n\n return {\n requestParam: encryptedData.toString(),\n };\n}\n\nexport function decryptPayload(merchantId: string, payload: string) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n\n const decryptedData = CryptoJS.AES.decrypt(payload, key, {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n\n const decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);\n return JSON.parse(decryptedText);\n}\n","import { getBaseUrl } from \"../utils\";\n\nexport async function getCountries(\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/countries-iso\",\n miden: \"api/v1/accrual/utils/countries\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getCountryStates(\n countryIso3: string,\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/state-by-country/${countryIso3}`,\n miden: `api/v1/accrual/utils/state-by-country/${countryIso3}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoins(\n environment: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/stable-coin\",\n miden: \"api/v1/accrual/checkout/stable-coin\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoinNetworks(\n environment: string,\n stableCoin: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/checkout/networks/${stableCoin}`,\n miden: `api/v1/accrual/checkout/networks/${stableCoin}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n","interface IBaseInputErrorProps {\n errorMessage: string;\n}\n\nexport function BaseInputError({ errorMessage }: IBaseInputErrorProps) {\n return (\n <p className=\"mb-0 text-body-3xs font-normal text-red-500\">\n {errorMessage}\n </p>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n size?: number | string;\n color?: string;\n className?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconLoader({\n size = 24,\n color = \"currentColor\",\n className = \"\",\n ...props\n}: IIconProps) {\n return (\n <svg\n className={`animate-spin ${className}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role=\"img\"\n aria-label=\"loading\"\n {...props}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke={color}\n strokeWidth={4}\n />\n <path\n className=\"opacity-75\"\n fill={color}\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronLeft({\n width = 17,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M10.5 14.28C10.3734 14.28 10.2467 14.2333 10.1467 14.1333L5.80002 9.78668C5.09335 9.08001 5.09335 7.92001 5.80002 7.21335L10.1467 2.86668C10.34 2.67335 10.66 2.67335 10.8534 2.86668C11.0467 3.06001 11.0467 3.38001 10.8534 3.57335L6.50669 7.92001C6.18669 8.24001 6.18669 8.76001 6.50669 9.08001L10.8534 13.4267C11.0467 13.62 11.0467 13.94 10.8534 14.1333C10.7534 14.2267 10.6267 14.28 10.5 14.28Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconBuzapayIcon({\n width = 15,\n height = 13,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 15 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M9.97919 0.5C10.8854 0.5 11.6276 0.585938 12.2057 0.757812C12.7891 0.924479 13.2188 1.22396 13.4948 1.65625C13.7761 2.08333 13.9167 2.6901 13.9167 3.47656C13.9167 4.1849 13.7526 4.77083 13.4245 5.23438C13.0964 5.69792 12.5938 5.95312 11.9167 6C12.8021 6.08854 13.4401 6.40625 13.8307 6.95312C14.2214 7.49479 14.4167 8.17708 14.4167 9C14.4167 9.71354 14.3334 10.2995 14.1667 10.7578C14.0052 11.2161 13.7318 11.5729 13.3464 11.8281C12.961 12.0781 12.4375 12.2526 11.7761 12.3516C11.1198 12.4505 10.2995 12.5 9.31512 12.5H0.416687V0.5H9.97919ZM2.91669 7.77344H5.97235V11.167L10.2497 5.22754H7.19501V1.83398L2.91669 7.77344ZM5.97235 6.07617H8.2702L7.19501 7.57324V6.9248H4.89716L5.97235 5.42676V6.07617Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCheckCircle({\n width = 67,\n height = 67,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 67 67\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M33.6705 0.0820312C15.2758 0.0820312 0.36377 14.9941 0.36377 33.3888C0.36377 51.7846 15.2758 66.6956 33.6705 66.6956C52.0663 66.6956 66.9773 51.7846 66.9773 33.3888C66.9773 14.9941 52.0663 0.0820312 33.6705 0.0820312ZM33.6705 62.5978C17.6011 62.5978 4.52712 49.4583 4.52712 33.3887C4.52712 17.3192 17.6011 4.24525 33.6705 4.24525C49.74 4.24525 62.814 17.3193 62.814 33.3887C62.814 49.4581 49.74 62.5978 33.6705 62.5978ZM46.9631 21.2016L27.4213 40.8662L18.621 32.0659C17.8081 31.253 16.4904 31.253 15.6765 32.0659C14.8636 32.8788 14.8636 34.1965 15.6765 35.0094L25.9797 45.3137C26.7926 46.1255 28.1103 46.1255 28.9243 45.3137C29.0179 45.22 29.0981 45.1179 29.171 45.0118L49.9086 24.1461C50.7205 23.3332 50.7205 22.0155 49.9086 21.2016C49.0947 20.3888 47.777 20.3888 46.9631 21.2016Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCopySuccess({\n width = 16,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M11.4002 1.6875H8.60016C5.9935 1.6875 4.8335 2.8475 4.8335 5.45417V6.1875C4.8335 6.46083 5.06016 6.6875 5.3335 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V11.5208C10.1668 11.7942 10.3935 12.0208 10.6668 12.0208H11.4002C14.0068 12.0208 15.1668 10.8608 15.1668 8.25417V5.45417C15.1668 2.8475 14.0068 1.6875 11.4002 1.6875ZM5.8335 5.6875V5.45417C5.8335 3.3875 6.5335 2.6875 8.60016 2.6875H11.4002C13.4668 2.6875 14.1668 3.3875 14.1668 5.45417V8.25417C14.1668 10.3208 13.4668 11.0208 11.4002 11.0208H11.1668V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875H5.8335Z\"\n fill={color}\n />\n <path\n d=\"M7.40016 5.6875H4.60016C1.9935 5.6875 0.833496 6.8475 0.833496 9.45417V12.2542C0.833496 14.8608 1.9935 16.0208 4.60016 16.0208H7.40016C10.0068 16.0208 11.1668 14.8608 11.1668 12.2542V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875ZM4.60016 15.0208C2.5335 15.0208 1.8335 14.3208 1.8335 12.2542V9.45417C1.8335 7.3875 2.5335 6.6875 4.60016 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V12.2542C10.1668 14.3208 9.46683 15.0208 7.40016 15.0208H4.60016Z\"\n fill={color}\n />\n <path\n d=\"M5.35302 12.6542C5.22635 12.6542 5.09969 12.6075 4.99969 12.5075L3.69969 11.2075C3.50635 11.0142 3.50635 10.6942 3.69969 10.5008C3.89302 10.3075 4.21302 10.3075 4.40635 10.5008L5.35302 11.4475L7.59302 9.2075C7.78635 9.01417 8.10635 9.01417 8.29969 9.2075C8.49302 9.40083 8.49302 9.72083 8.29969 9.91417L5.69969 12.5075C5.60635 12.6008 5.47969 12.6542 5.35302 12.6542Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronUp({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g opacity=\"0.7\">\n <path\n d=\"M2.73508 9.73495L7.73508 4.73495C7.80539 4.66473 7.9007 4.62528 8.00008 4.62528C8.09945 4.62528 8.19476 4.66473 8.26508 4.73495L13.2651 9.73495C13.3313 9.80604 13.3674 9.90006 13.3657 9.99722C13.364 10.0944 13.3246 10.1871 13.2559 10.2558C13.1872 10.3245 13.0945 10.3638 12.9973 10.3655C12.9002 10.3673 12.8062 10.3312 12.7351 10.265L8.00008 5.53058L3.26508 10.265C3.19399 10.3312 3.09997 10.3673 3.00282 10.3655C2.90566 10.3638 2.81297 10.3245 2.74427 10.2558C2.67556 10.1871 2.6362 10.0944 2.63449 9.99722C2.63277 9.90006 2.66884 9.80604 2.73508 9.73495Z\"\n fill={color}\n />\n </g>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronDown({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g opacity=\"0.6\">\n <path\n d=\"M16.5813 7.83128L10.3313 14.0813C10.2434 14.1691 10.1242 14.2184 10 14.2184C9.87581 14.2184 9.75667 14.1691 9.66878 14.0813L3.41878 7.83128C3.33598 7.74242 3.2909 7.62489 3.29304 7.50345C3.29518 7.38201 3.34438 7.26615 3.43026 7.18026C3.51615 7.09438 3.63201 7.04518 3.75345 7.04304C3.87489 7.0409 3.99242 7.08598 4.08128 7.16878L10 13.0867L15.9188 7.16878C16.0076 7.08598 16.1252 7.0409 16.2466 7.04304C16.368 7.04518 16.4839 7.09438 16.5698 7.18026C16.6557 7.26615 16.7049 7.38201 16.707 7.50345C16.7092 7.62489 16.6641 7.74242 16.5813 7.83128Z\"\n fill={color}\n />\n </g>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconUsdt({\n width = 28,\n height = 28,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_10908_387045)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28ZM15.6818 12.0689V9.99863H20.419V6.84162H7.52063V9.99863H12.2579V12.068C8.40787 12.2447 5.5125 13.0077 5.5125 13.9212C5.5125 14.8347 8.40787 15.5969 12.2579 15.7745V22.4088H15.6818V15.7727C19.5256 15.596 22.414 14.8339 22.414 13.9212C22.414 13.0086 19.5256 12.2465 15.6818 12.0689ZM15.6818 15.2101V15.2084C15.5855 15.2154 15.0894 15.2451 13.9825 15.2451C13.0987 15.2451 12.4766 15.2189 12.2579 15.2084V15.211C8.85587 15.0614 6.31662 14.469 6.31662 13.7602C6.31662 13.0524 8.85587 12.46 12.2579 12.3077V14.6212C12.4801 14.637 13.1171 14.6746 13.9974 14.6746C15.0535 14.6746 15.5829 14.6309 15.6818 14.6221V12.3095C19.0768 12.4609 21.6099 13.0532 21.6099 13.7602C21.6099 14.469 19.0768 15.0596 15.6818 15.2101Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387045\">\n <rect width=\"28\" height=\"28\" fill={color} />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconUsdc({\n width = 28,\n height = 28,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_10908_387048)\">\n <path\n d=\"M14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0ZM16.933 4.865C16.7195 4.76 16.506 4.865 16.4535 5.07762C16.4001 5.131 16.4001 5.18438 16.4001 5.29025V6.034L16.4089 6.125C16.4546 6.30501 16.5652 6.46177 16.7195 6.56512C20.8792 8.05262 23.0125 12.6726 21.4655 16.7615C20.6657 18.9928 18.9061 20.6911 16.7195 21.4883C16.506 21.5941 16.4001 21.7534 16.4001 22.0194V22.7631L16.4045 22.8401C16.4128 22.9241 16.4479 23.0033 16.5047 23.0658C16.5614 23.1284 16.6367 23.171 16.7195 23.1875C16.7729 23.1875 16.8796 23.1875 16.933 23.135C18.1331 22.7602 19.2473 22.1517 20.2113 21.3446C21.1753 20.5375 21.9701 19.5476 22.5499 18.432C23.1298 17.3164 23.4833 16.0972 23.59 14.8444C23.6967 13.5917 23.5546 12.3302 23.1718 11.1326C22.2128 8.10512 19.866 5.8205 16.933 4.865ZM11.2805 4.8125C11.2271 4.8125 11.1204 4.8125 11.067 4.865C9.86688 5.23978 8.75274 5.84826 7.78874 6.6554C6.82475 7.46254 6.02993 8.4524 5.45006 9.56797C4.87019 10.6836 4.51673 11.9028 4.41001 13.1556C4.30329 14.4083 4.44543 15.6698 4.82825 16.8674C5.78725 19.8424 8.08062 22.1261 11.067 23.0816C11.2805 23.1875 11.494 23.0816 11.5465 22.869C11.5999 22.8165 11.5999 22.7622 11.5999 22.6564V21.9126L11.5911 21.8426C11.5544 21.6947 11.417 21.5259 11.2805 21.4349C7.12075 19.9474 4.9875 15.3274 6.5345 11.2385C7.33425 9.00725 9.09388 7.30887 11.2805 6.51175C11.494 6.40587 11.5999 6.24663 11.5999 5.98063V5.23688L11.5955 5.15987C11.5872 5.07585 11.5521 4.99673 11.4954 4.93418C11.4386 4.87163 11.3633 4.82898 11.2805 4.8125ZM14.3736 7.574H13.573L13.496 7.581C13.321 7.616 13.1933 7.7665 13.146 7.99925V9.22075L12.9649 9.24875C11.4704 9.51475 10.5341 10.5464 10.5341 11.823C10.5341 13.5748 11.5999 14.2651 13.8399 14.5311C15.3335 14.7963 15.813 15.1156 15.813 15.9653C15.813 16.814 15.0666 17.3985 14.0534 17.3985C12.6665 17.3985 12.187 16.8149 12.0269 16.0177C11.9744 15.806 11.8134 15.6992 11.6532 15.6992H10.7467L10.6776 15.7054C10.5913 15.7193 10.513 15.7641 10.4572 15.8313C10.4014 15.8985 10.3718 15.9838 10.374 16.0711V16.1236L10.4029 16.2811C10.6566 17.5271 11.5106 18.4187 13.2003 18.6734V19.9483L13.2072 20.0252C13.2422 20.1985 13.3936 20.3263 13.6273 20.3726H14.427L14.504 20.3656C14.679 20.3306 14.8067 20.1801 14.854 19.9483V18.6725L15.0351 18.6375C16.534 18.3207 17.5201 17.2366 17.5201 15.8576C17.5201 13.9991 16.4001 13.3621 14.1601 13.0961C12.5598 12.8835 12.2404 12.4591 12.2404 11.7154C12.2404 10.9716 12.7741 10.4939 13.8399 10.4939C14.7998 10.4939 15.3335 10.8124 15.5995 11.6095C15.6272 11.6866 15.6779 11.7533 15.7447 11.8007C15.8115 11.8481 15.8912 11.8739 15.9731 11.8746H16.8262L16.8954 11.8694C16.982 11.8556 17.0606 11.8108 17.1166 11.7434C17.1726 11.6759 17.2022 11.5904 17.1999 11.5027V11.4503L17.1675 11.2989C17.0361 10.755 16.7366 10.2664 16.3115 9.90255C15.8864 9.53872 15.3574 9.31821 14.7997 9.27238V7.99925L14.7928 7.92225C14.7578 7.74812 14.6073 7.62038 14.3736 7.574Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387048\">\n <rect width=\"28\" height=\"28\" fill={color} />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconArrowSwap({\n width = 16,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M10.3265 14.1948C10.1998 14.1948 10.0731 14.1481 9.97313 14.0481C9.77979 13.8548 9.77979 13.5348 9.97313 13.3414L13.3131 10.0014C13.5065 9.80811 13.8265 9.80811 14.0198 10.0014C14.2131 10.1948 14.2131 10.5148 14.0198 10.7081L10.6798 14.0481C10.5798 14.1414 10.4531 14.1948 10.3265 14.1948Z\"\n fill={color}\n />\n <path\n d=\"M13.6668 10.8477H2.3335C2.06016 10.8477 1.8335 10.621 1.8335 10.3477C1.8335 10.0743 2.06016 9.84766 2.3335 9.84766H13.6668C13.9402 9.84766 14.1668 10.0743 14.1668 10.3477C14.1668 10.621 13.9402 10.8477 13.6668 10.8477Z\"\n fill={color}\n />\n <path\n d=\"M2.33329 6.86079C2.20663 6.86079 2.07996 6.81413 1.97996 6.71413C1.78663 6.52079 1.78663 6.20079 1.97996 6.00746L5.31996 2.66746C5.51329 2.47413 5.83329 2.47413 6.02663 2.66746C6.21996 2.86079 6.21996 3.18079 6.02663 3.37413L2.68663 6.71413C2.59329 6.80746 2.45996 6.86079 2.33329 6.86079Z\"\n fill={color}\n />\n <path\n d=\"M13.6668 6.86133H2.3335C2.06016 6.86133 1.8335 6.63466 1.8335 6.36133C1.8335 6.08799 2.06016 5.86133 2.3335 5.86133H13.6668C13.9402 5.86133 14.1668 6.08799 14.1668 6.36133C14.1668 6.63466 13.9402 6.86133 13.6668 6.86133Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconLock({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M12.0001 17.35C12.9003 17.35 13.6301 16.6203 13.6301 15.72C13.6301 14.8198 12.9003 14.09 12.0001 14.09C11.0999 14.09 10.3701 14.8198 10.3701 15.72C10.3701 16.6203 11.0999 17.35 12.0001 17.35Z\"\n fill={color}\n />\n <path\n d=\"M18.28 9.53V8.28C18.28 5.58 17.63 2 12 2C6.37 2 5.72 5.58 5.72 8.28V9.53C2.92 9.88 2 11.3 2 14.79V16.65C2 20.75 3.25 22 7.35 22H16.65C20.75 22 22 20.75 22 16.65V14.79C22 11.3 21.08 9.88 18.28 9.53ZM12 18.74C10.33 18.74 8.98 17.38 8.98 15.72C8.98 14.05 10.34 12.7 12 12.7C13.66 12.7 15.02 14.06 15.02 15.72C15.02 17.39 13.67 18.74 12 18.74ZM7.35 9.44C7.27 9.44 7.2 9.44 7.12 9.44V8.28C7.12 5.35 7.95 3.4 12 3.4C16.05 3.4 16.88 5.35 16.88 8.28V9.45C16.8 9.45 16.73 9.45 16.65 9.45H7.35V9.44Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconMidenLogo({\n width = 83,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width=\"83\"\n height=\"24\"\n viewBox=\"0 0 83 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_13262_15389)\">\n <path\n d=\"M8.78809 -7.24082C9.77412 -7.81065 10.9896 -7.81065 11.9756 -7.24082L17.9238 -3.80332C18.9099 -3.23336 19.5176 -2.1789 19.5176 -1.03769V5.83731C19.5175 6.97837 18.9098 8.03202 17.9238 8.60196L11.9756 12.0395C10.9896 12.6093 9.77412 12.6093 8.78809 12.0395L2.83984 8.60196C1.85383 8.03203 1.24519 6.97841 1.24512 5.83731V-1.03769C1.24512 -2.17893 1.85368 -3.23338 2.83984 -3.80332L8.78809 -7.24082Z\"\n stroke=\"#0A0032\"\n strokeWidth=\"3.11415\"\n />\n </g>\n <g clipPath=\"url(#clip1_13262_15389)\">\n <path\n d=\"M20.6924 15.3051L20.6826 15.6088C20.5818 17.1217 19.7341 18.4954 18.4092 19.2602L12.6826 22.5649L12.4131 22.7084C11.1429 23.3328 9.65297 23.3329 8.38281 22.7084L8.11426 22.5649L2.3877 19.2602C1.06271 18.4954 0.214141 17.1218 0.113281 15.6088L0.103516 15.3051V10.6205C0.420907 10.9744 0.794913 11.2821 1.21875 11.5268L3.21777 12.6801V15.3051C3.21804 15.8234 3.49466 16.3034 3.94434 16.5629L9.6709 19.8686C10.1206 20.128 10.6753 20.1279 11.125 19.8686L16.8516 16.5629C17.3012 16.3034 17.5788 15.8234 17.5791 15.3051V12.6801L19.5771 11.5268C20.001 11.2821 20.375 10.9744 20.6924 10.6205V15.3051ZM8.11426 1.43402C9.52761 0.618234 11.2693 0.618234 12.6826 1.43402L17.502 4.21429V7.57172C17.502 7.64507 17.4628 7.71415 17.3984 7.7514L17.2832 7.81683C17.1679 7.66481 17.0223 7.53453 16.8516 7.43597L11.125 4.13031C10.6751 3.87086 10.1207 3.87075 9.6709 4.13031L6.80762 5.78363L3.94434 7.43597C3.77341 7.53467 3.62695 7.66454 3.51172 7.81683L3.39844 7.7514C3.33411 7.71413 3.29395 7.64502 3.29395 7.57172V4.21527L8.11426 1.43402Z\"\n fill=\"#0A0032\"\n />\n </g>\n <g clipPath=\"url(#clip2_13262_15389)\">\n <path\n d=\"M20.6924 15.3065L20.6826 15.6102C20.5819 17.1233 19.7342 18.4967 18.4092 19.2616L12.6826 22.5663L12.4131 22.7098C11.1428 23.3343 9.65302 23.3344 8.38281 22.7098L8.11426 22.5663L2.3877 19.2616C1.0627 18.4967 0.214005 17.1233 0.113281 15.6102L0.103516 15.3065V10.621C0.420907 10.9748 0.794915 11.2826 1.21875 11.5272L3.21777 12.6806V15.3065C3.21789 15.8249 3.49465 16.3047 3.94434 16.5643L9.6709 19.87C10.1206 20.1295 10.6752 20.1294 11.125 19.87L16.8516 16.5643C17.3014 16.3047 17.579 15.825 17.5791 15.3065V12.6806L19.5771 11.5272C20.001 11.2826 20.375 10.9748 20.6924 10.621V15.3065ZM8.11426 1.43543C9.52754 0.619685 11.2693 0.61976 12.6826 1.43543L17.502 4.21571V7.57215C17.502 7.64551 17.4629 7.71459 17.3984 7.75184L17.2832 7.81825C17.1679 7.66636 17.0222 7.53587 16.8516 7.43739L11.125 4.13172C10.6752 3.87239 10.1206 3.8722 9.6709 4.13172L6.80762 5.78504L3.94434 7.43739C3.77387 7.5358 3.62779 7.66553 3.5127 7.81727L3.39844 7.75184C3.3341 7.71457 3.29395 7.64546 3.29395 7.57215V4.21668L8.11426 1.43543Z\"\n fill=\"#0A0032\"\n />\n </g>\n <path\n d=\"M28.4292 5.868H30.4836L35.2452 12.3192L40.026 5.868H42.0804V19.5H39.8148V9.7272L35.2644 15.9096L30.6756 9.708V19.5H28.4292V5.868ZM46.1481 7.8072C45.7641 7.8072 45.4313 7.6728 45.1497 7.404C44.8681 7.1224 44.7273 6.7832 44.7273 6.3864C44.7273 6.0024 44.8681 5.676 45.1497 5.4072C45.4313 5.1256 45.7641 4.9848 46.1481 4.9848C46.5449 4.9848 46.8777 5.1256 47.1465 5.4072C47.4153 5.676 47.5497 6.0024 47.5497 6.3864C47.5497 6.7832 47.4153 7.1224 47.1465 7.404C46.8777 7.6728 46.5449 7.8072 46.1481 7.8072ZM45.0921 19.5V9.9H47.2041V19.5H45.0921ZM53.9781 19.692C52.6725 19.692 51.5717 19.2056 50.6757 18.2328C49.7925 17.26 49.3509 16.0824 49.3509 14.7C49.3509 13.3176 49.7925 12.14 50.6757 11.1672C51.5717 10.1944 52.6725 9.708 53.9781 9.708C54.6309 9.708 55.2325 9.8552 55.7829 10.1496C56.3333 10.4312 56.7557 10.7768 57.0501 11.1864V5.1H59.1621V19.5H57.0501V18.2136C56.7557 18.6232 56.3333 18.9752 55.7829 19.2696C55.2325 19.5512 54.6309 19.692 53.9781 19.692ZM52.3077 16.8888C52.8453 17.4776 53.5301 17.772 54.3621 17.772C55.1941 17.772 55.8789 17.4776 56.4165 16.8888C56.9541 16.3 57.2229 15.5704 57.2229 14.7C57.2229 13.8296 56.9541 13.1 56.4165 12.5112C55.8789 11.9224 55.1941 11.628 54.3621 11.628C53.5301 11.628 52.8453 11.9224 52.3077 12.5112C51.7701 13.1 51.5013 13.8296 51.5013 14.7C51.5013 15.5704 51.7701 16.3 52.3077 16.8888ZM66.2665 19.692C64.8329 19.692 63.6553 19.2248 62.7337 18.2904C61.8121 17.3432 61.3513 16.1464 61.3513 14.7C61.3513 13.2536 61.8057 12.0632 62.7145 11.1288C63.6233 10.1816 64.8137 9.708 66.2857 9.708C67.7705 9.708 68.9673 10.2264 69.8761 11.2632C70.7849 12.2872 71.1881 13.6056 71.0857 15.2184H63.4441C63.4697 15.9608 63.7513 16.5816 64.2889 17.0808C64.8265 17.58 65.5113 17.8296 66.3433 17.8296C67.5209 17.8296 68.3273 17.3816 68.7625 16.4856H70.9705C70.6761 17.42 70.1129 18.188 69.2809 18.7896C68.4489 19.3912 67.4441 19.692 66.2665 19.692ZM66.2281 11.4744C65.5369 11.4744 64.9417 11.6728 64.4425 12.0696C63.9561 12.4536 63.6425 13.004 63.5017 13.7208H68.8201C68.6665 12.9784 68.3529 12.4216 67.8793 12.0504C67.4057 11.6664 66.8553 11.4744 66.2281 11.4744ZM73.2546 19.5V9.9H75.3666V11.2056C75.9682 10.2072 76.941 9.708 78.285 9.708C79.3986 9.708 80.2882 10.0728 80.9538 10.8024C81.6194 11.532 81.9522 12.5048 81.9522 13.7208V19.5H79.8402V14.0664C79.8402 13.2984 79.661 12.7032 79.3026 12.2808C78.9442 11.8456 78.4578 11.628 77.8434 11.628C77.1138 11.628 76.5186 11.9032 76.0578 12.4536C75.597 13.004 75.3666 13.7784 75.3666 14.7768V19.5H73.2546Z\"\n fill=\"#0A0032\"\n />\n <defs>\n <clipPath id=\"clip0_13262_15389\">\n <rect\n y=\"2.50274\"\n width=\"20.6599\"\n height=\"11.5209\"\n rx=\"4.98265\"\n fill=\"white\"\n />\n </clipPath>\n <clipPath id=\"clip1_13262_15389\">\n <rect\n width=\"8.92839\"\n height=\"22.3152\"\n fill=\"white\"\n transform=\"translate(5.91797 0.841991)\"\n />\n </clipPath>\n <clipPath id=\"clip2_13262_15389\">\n <rect\n width=\"20.556\"\n height=\"14.5308\"\n fill=\"white\"\n transform=\"translate(0.103516 8.62676)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconClose({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M19.1476 18.3525C19.2029 18.404 19.2472 18.4661 19.278 18.5351C19.3087 18.6041 19.3252 18.6786 19.3266 18.7541C19.3279 18.8296 19.314 18.9047 19.2857 18.9747C19.2574 19.0447 19.2153 19.1084 19.1619 19.1618C19.1085 19.2152 19.0449 19.2573 18.9748 19.2856C18.9048 19.3139 18.8298 19.3278 18.7542 19.3264C18.6787 19.3251 18.6042 19.3086 18.5352 19.2778C18.4662 19.2471 18.4041 19.2028 18.3526 19.1475L12.0001 12.7959L5.64763 19.1475C5.541 19.2469 5.39996 19.301 5.25424 19.2984C5.10851 19.2958 4.96947 19.2368 4.86641 19.1337C4.76335 19.0307 4.70432 18.8916 4.70175 18.7459C4.69918 18.6002 4.75327 18.4591 4.85263 18.3525L11.2042 12L4.85263 5.6475C4.75327 5.54087 4.69918 5.39983 4.70175 5.25411C4.70432 5.10838 4.76335 4.96934 4.86641 4.86628C4.96947 4.76322 5.10851 4.70419 5.25424 4.70162C5.39996 4.69905 5.541 4.75314 5.64763 4.8525L12.0001 11.2041L18.3526 4.8525C18.4593 4.75314 18.6003 4.69905 18.746 4.70162C18.8917 4.70419 19.0308 4.76322 19.1338 4.86628C19.2369 4.96934 19.2959 5.10838 19.2985 5.25411C19.3011 5.39983 19.247 5.54087 19.1476 5.6475L12.7961 12L19.1476 18.3525Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCourthouse({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M14.6668 14.1667H13.8335V7.33333C13.8335 5.72 12.9468 4.83333 11.3335 4.83333H8.50016V4.01333C8.88683 4.10667 9.2735 4.16 9.66683 4.16C10.2935 4.16 10.9202 4.04 11.5202 3.8C11.7068 3.72667 11.8335 3.54 11.8335 3.33333V1.33333C11.8335 1.16667 11.7535 1.01333 11.6135 0.920001C11.4735 0.826668 11.3002 0.806668 11.1468 0.866668C10.1935 1.24667 9.14016 1.24667 8.18683 0.866668C8.0335 0.806668 7.86016 0.826668 7.72016 0.920001C7.58016 1.01333 7.50016 1.16667 7.50016 1.33333V3.33333V4.83333H4.66683C3.0535 4.83333 2.16683 5.72 2.16683 7.33333V14.1667H1.3335C1.06016 14.1667 0.833496 14.3933 0.833496 14.6667C0.833496 14.94 1.06016 15.1667 1.3335 15.1667H2.66683H13.3335H14.6668C14.9402 15.1667 15.1668 14.94 15.1668 14.6667C15.1668 14.3933 14.9402 14.1667 14.6668 14.1667ZM4.82683 14.1667H3.16683V8.5H4.82683V14.1667ZM7.4935 14.1667H5.82683V8.5H7.4935V14.1667ZM10.1602 14.1667H8.4935V8.5H10.1602V14.1667ZM12.8335 14.1667H11.1602V8.5H12.8335V14.1667Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCoin({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M14.6136 11.1667C14.3936 12.9401 12.9402 14.3934 11.1669 14.6134C10.0936 14.7467 9.09357 14.4534 8.31357 13.8801C7.8669 13.5534 7.97357 12.8601 8.5069 12.7001C10.5136 12.0934 12.0936 10.5067 12.7069 8.50006C12.8669 7.9734 13.5602 7.86673 13.8869 8.30673C14.4536 9.0934 14.7469 10.0934 14.6136 11.1667Z\"\n fill={color}\n />\n <path\n d=\"M6.66064 1.83301C9.23993 1.83326 11.3453 3.86201 11.48 6.41211L11.4868 6.66113C11.486 9.32416 9.32379 11.4861 6.66064 11.4863C3.99695 11.4863 1.83376 9.32379 1.8335 6.66016C1.8335 3.9963 3.99679 1.83301 6.66064 1.83301ZM6.6665 3.27344C6.27525 3.27356 5.93487 3.50201 5.771 3.83203C4.94463 3.9947 4.3335 4.7462 4.3335 5.61328C4.33354 6.00558 4.42304 6.37269 4.63818 6.68164C4.66671 6.72258 4.69726 6.76143 4.729 6.79883C4.48939 6.982 4.33357 7.27008 4.3335 7.59277C4.3335 8.48803 4.93148 9.2422 5.75049 9.45801C5.90533 9.81094 6.25852 10.0594 6.6665 10.0596C7.06141 10.0596 7.40374 9.82611 7.56592 9.49121C8.39042 9.32705 9.00049 8.5787 9.00049 7.71289C9.00047 7.32502 8.91261 6.96047 8.69873 6.65137C8.66984 6.60964 8.63919 6.56935 8.60693 6.53125C8.84508 6.34793 9.00049 6.06083 9.00049 5.73926C9.0003 4.84357 8.40128 4.0892 7.58154 3.87402C7.4264 3.5216 7.07419 3.27344 6.6665 3.27344Z\"\n fill={color}\n stroke={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCards({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M3.85303 4.86667H10.147C11.1573 4.86668 11.5914 5.00442 11.811 5.22116C12.0282 5.43571 12.1665 5.85839 12.1665 6.853V7.23972C12.1665 7.33013 12.0909 7.40653 12.0005 7.40671H2.00049C1.90996 7.40671 1.8335 7.33024 1.8335 7.23972V6.853C1.83352 5.95674 1.94725 5.5223 2.1333 5.28757C2.29732 5.08064 2.60747 4.92401 3.36279 4.87936L3.36182 4.87839C3.51875 4.87187 3.68056 4.86668 3.85303 4.86667Z\"\n fill={color}\n stroke={color}\n />\n <path\n d=\"M2.00016 8.90667C1.6335 8.90667 1.3335 9.20667 1.3335 9.57334V11.5133C1.3335 13.5 1.84016 14 3.8535 14H10.1468C12.1268 14 12.6468 13.52 12.6668 11.62V9.57334C12.6668 9.20667 12.3668 8.90667 12.0002 8.90667H2.00016ZM4.64016 12.3733H3.50016C3.22683 12.3733 3.00016 12.1467 3.00016 11.8733C3.00016 11.6 3.22683 11.3733 3.50016 11.3733H4.64683C4.92016 11.3733 5.14683 11.6 5.14683 11.8733C5.14683 12.1467 4.92016 12.3733 4.64016 12.3733ZM8.36683 12.3733H6.0735C5.80016 12.3733 5.5735 12.1467 5.5735 11.8733C5.5735 11.6 5.80016 11.3733 6.0735 11.3733H8.36683C8.64016 11.3733 8.86683 11.6 8.86683 11.8733C8.86683 12.1467 8.64683 12.3733 8.36683 12.3733Z\"\n fill={color}\n />\n <path\n d=\"M14.6666 8.88667V5.39334C14.6666 3.30667 13.4732 2.4 11.6732 2.4H5.71991C5.21324 2.4 4.75991 2.47333 4.35991 2.62667C4.04658 2.74 3.76658 2.90667 3.53991 3.12667C3.41991 3.24 3.51324 3.42667 3.68658 3.42667H10.9332C12.4332 3.42667 13.6466 4.64 13.6466 6.14V10.92C13.6466 11.0867 13.8266 11.18 13.9466 11.06C14.4066 10.5733 14.6666 9.86 14.6666 8.88667Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconQrCode({\n width = 96,\n height = 96,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width=\"96\"\n height=\"96\"\n viewBox=\"0 0 96 96\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"96\" height=\"96\" fill=\"url(#pattern0_13262_14636)\" />\n <defs>\n <pattern\n id=\"pattern0_13262_14636\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n xlinkHref=\"#image0_13262_14636\"\n transform=\"translate(-0.585526 -0.641953) scale(0.0018556)\"\n />\n </pattern>\n <image\n id=\"image0_13262_14636\"\n width=\"1170\"\n height=\"2532\"\n preserveAspectRatio=\"none\"\n xlinkHref=\"data:image/png;base64,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UQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAAC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ECBAgAABAgQIEBDbHAMECBAgQIAAAQIECBAoWkBsK3p5FEeAAAECBAgQIECAAAGxzTFAgAABAgQIECBAgACBogXEtqKXR3EECBAgQIAAAQIECBAQ2xwDBAgQIECAAAECBAgQKFpAbCt6eRRHgAABAgQIECBAgAABsc0xQIAAAQIECBAgQIAAgaIFxLail0dxBAgQIECAAAECBAgQENscAwQIECBAgAABAgQIEChaQGwrenkUR4AAAQIECBAgQIAAAbHNMUCAAAECBAgQIECAAIGiBcS2opdHcQQIECBAgAABAgQIENiDgAABAgQIDAjMzc3Nz88PbNz2Ya/XW19fX1pa2rbl+A2iwhgufibtqsl5ra6uhkZSedE4KqxuSR1jsaJXUpdqrIxVjklVt6Thzk0rucikUcZpfG5aaUuWN6+8scaZnb4ECMyAgNg2A4toCgQIEJiwQCSi2GP1s/6u42R0bW1tZWWlfpfsllXeSM0qTc4rI9uERswoplbNrj5O9EpdrNh5nkbE0YxEmjev+gLjt2xyXnljjT9HeyBAoNUCYlurl0/xBAgQmIpAnGTHLXXXcZ0tMtvy8nJqx7z2GUGl/HlFhZHZFhcX80ySeuVpxBARzpMGisZNziu1tn77JueVMVa/TncIEOimgPe2dXPdzZoAAQIECBAgQIAAgdYIiG2tWSqFEiBAgAABAgQIECDQTQGxrZvrbtYECBAgQIAAAQIECLRGQGxrzVIplAABAgQIECBAgACBbgqIbd1cd7MmQIAAAQIECBAgQKA1AmJba5ZKoQQIECBAgAABAgQIdFNAbOvmups1AQIECBAgQIAAAQKtERDbWrNUCiVAgAABAgQIECBAoJsCYls3192sCRAgQIAAAQIECBBojYDY1pqlUigBAgQIECBAgAABAt0UENu6ue5mTYAAAQIECBAgQIBAawTEttYslUIJECBAgAABAgQIEOimgNjWzXU3awIECBAgQIAAAQIEWiMgtrVmqRRKgAABAgQIECBAgEA3BcS2bq67WRMgQIAAAQIECBAg0BqBPa2pVKEECBDotsD6+vrq6mozBnNzc71eL34mDRft5+fnk7pE45hXdUvqGF0a04iBYrik8qJxaFS3pI7BHmMtLS0l9cprHOU1tspNzitPI2+V88bK63XugEr7rYxfyeiYN6JeBAgUJSC2FbUciiFA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IECgXQJiW7vWS7UECBAgQIAAAQIECHROQGzr3JKbMAECBAgQIECAAAEC7RIQ29q1XqolQIAAAQIECBAgQKBzAmJb55bchAkQIECAAAECBAgQaJeA2Nau9VItAQIECBAgQIAAAQKdE/C9bZ1bchMmQIAAAQIECBAgQKBdAq62tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCeyZmRlfeOGFey/ad9G+fRddtC/uz8y8TIQAAQIECBAgQIAAgfoCp0+fPnnyxMkTJ548eSLu1+9YcstZiG27du0+cPDgvv0HRqa1p59++vTp+PH06Wf+7+lhk1OwAABAAElEQVQDBy8ueUnURoAAAQIECBAgQIDAFgLHjj5x4a5duy48+3/x/888ePZVhBEK9u3bH/8is504fuzYsaNPnzq1xd5a8VS7Y1ssz4GDl+zbv38gsJ069dSTJ08+GbdRCfvoE0dasTaKJECAAAECBAgQIECgjkDEgXjl3d64XXTR7t3PZJzYuP/Amas7J44fP3b0SFzIqbOrMtu0NbbFGsRFs1iGjYHt1FNPnThx/OSJ46fan6fL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AmJb148A8ydAgAABAgQIECBAoHABsa3wBVIeAQIECBAgQIAAAQJdFxDbun4EmD8BAgQIECBAgAABAoULiG2FL5DyCBAgQIAAAQIECBDouoDY1vUjwPwJECBAgAABAgQIEChcQGwrfIGUR4AAAQIECBAgQIBA1wXEtq4fAeZPgAABAgQIECBAgEDhAmJb4QukPAIECBAgQIAAAQIEui4gtnX9CDB/AgQIECBAgAABAgQKFxDbCl8g5REgQIAAAQIECBAg0HUBsa3rR4D5EyBAgAABAgQIECBQuIDYVvgCKY8AAQIECBAgQIAAga4LiG1dPwLMnwABAgQIECBAgACBwgXEtsIXSHkECBAgQIAAAQIECHRdQGzr+hFg/gQIECBAgAABAgQIFC4gthW+QMojQIAAAQIECBAgQKDrAmJb148A8ydAgAABAgQIECBAoHABsa3wBVIeAQIECBAgQIAAAQJdFxDbun4EmD8BAgQIECBAgAABAoULiG2FL5DyCBAgQIAAAQIECBDouoDY1vUjwPwJECBAgAABAgQIEChcQGwrfIGUR4AAAQIECBAgQIBA1wXEtq4fAeZPgAABAgQIECBAgEDhAmJb4QukPAIECBAgQIAAAQIEui4gtnX9CDB/AgQIECBAgAABAgQKFxDbCl8g5REgQIAAAQIECBAg0HUBsa3rR4D5EyBAgAABAgQIECBQuIDYVvgCKY8AAQIECBAgQIAAga4LiG1dPwLMnwABAgQIECBAgACBwgX2FF6f8gg0KbB79+69e/fGiKcvuODE8eNNDm0sAgQIECBAgAABApsJiG2bydjeRYGbXn7z/D95fcz8xIkTf/h//34XCcyZAAECBAgQIECgPAGxrek12bV7d6/3gv6oa9/8+tNPP91/uMWda6659uDFl0SDEyeOf/tbD27R0lMECBAgQIAAAQIECMySgNjW9Gru27fvJ//p/9wf9f/7f1e/8Def7z/c4s4rfujWF7/kpdHgu9956P/5k6UtWnqKAAECBAgQIECAAIFZEhDbdng1b33lq7/6lS8/8cSRHa5jw/D/5PU/cmD/gdiw8plPHj16dMMz7hIgQIAAAQIECBAgsAMCPklyB9A3DhkfgPGPX/PajVt2/H68hvOFL3px/Ntz9sM5drweBRAgQIAAAQIECBDouIDYtvMHwIte/JLnXd/b+TpUQIAA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AiRAAuGTAM228DlubDUJkAAJkAAJkAAJkAAJkECEIUCzLcIMNTtKAiRAAiRAAiRAAiRAAiQQPgnQbAuf48ZWkwAJkAAJkAAJkAAJkAAJRBgCkSNMT9lRFwQunD+3Ye1qZMIWYS6y8jQJkAAJkAAJkAAJkAAJkEAoEqDZFoqww3ZVN65fx2/YbiNbRwIkQAIkQAIkQAIkQAIRkQAnSUbEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZb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QAIkQAIkQAIkQAL+IUCzzT/cWSsJkAAJkAAJkAAJkAAJkAAJuEmAZpuboJiNBEiABEiABEiABEiABEiABPxDgGabf7izVhIgARIgARIgARIgARIgARJwkwDNNjdBMRsJkAAJkAAJkAAJkAAJkAAJ+IcAzTb/cGetJEACJEACJEACJEACJEACJOAmAZptboJiNhIgARIgARIgARIgARIgARLwDwGabf7hzlpJgARIgARIgARIgARIgARIwE0CNNvcBMVsJEACJEACJEACJEACJEACJOAfAjTb/MOdtZIACZAACZAACZAACZAACZCAmwRotrkJitlIgARIgARIgARIgARIgARIwD8EaLb5hztrJQESIAESIAESIAESIAESIAE3CdBscxMUs5EACZAACZAACZAACZAACZCAfwjQbPMPd9ZKAiRAAiRAAiRAAiRAAiRAAm4SoNnmJihmIwESIAESIAESIAESIAESIAH/EKDZ5h/urJUESIAESIAESIAESIAESIAE3CRAs81NUMxGAiRAAiRAAiRAAiRAAiRAAv9n776CJDvPM0FXVrX3jW54S3hvCA+wBYAACIIUJJISJUizodnY2FgbK2n2Zvdm52pNxE7sbMTc7NWYnV3FSkNKpIihkSEIEt57S4BwJFzDtPddtV8hG6cT1dXV1dnfl5VZ9UAd1KnMc97znyezyXrxHzMzAmrbzLjbKwECBAgQIECAAAECBKYpoLZNE8pqBAgQIECAAAECBAgQmBkBtW1m3O2VAAECBAgQIECAAAEC0xToo9rWarWmOWirESBAgAABAgQIECBAoFSgr+rJzNe2sbGxNndfuZR+A4QTIECAAAECBAgQINDnAk09aQrLDA545mvb6Oho+/hbwzM/mBn8JOyaAAECBAgQIECAAIH+EWjqSVNYZnBsM9+URkf3to9/ZHhkBiHsmgABAgQIECBAgAABAo1AU0+awtK81fuFPqhte/fVtuERta33XwB7JECAAAECBAgQIEBgEoGmnox+VlgmWalXL/VBbRsdHfv0PMnhT//p1YHbDwECBAgQIECAAAECBCYXaLpJVBUnSe4z2rNnT3tp3vz5k7N5lQABAgQIECBAgAABAr0SaIpJU1V6tefJ9zPzs20xrj17drdHN2/+gsmH6VUCBAgQIECAAAECBAj0SqApJk1V6dWeJ99PX9S23bt2tUe3QG2b/GPyKgECBAgQIECAAAECvRNoisnu3fuqSu/2Pdme+qO27d7dfhjCyLx5zZV/k43WawQIECBAgAABAgQIEKgViEoSxST2ESVl9659JwbW7vJQ6X1R2wKkmXBbuHDRocbsfQIECBAgQIAAAQIECFQJNJXk05IyVrWbw8ntk9o2tHPnjvawG6PDOQrrEiBAgAABAgQIECBAIEdg4aJ9M0lNScnJPYKUfqltu3btHBsbjQOJ6cjmti1HcFw2JUCAAAECBAgQIECAwGELRBmJUyRjs6gnUVIOe/uaDfqltoXKzh37JtwWLV5Sc7BSCRAgQIAAAQIECBAgMJVAU0bG68lYX5whGcPtm9o2NLRj+/a238IFC+MiwKksvUeAAAECBAgQIECAAIFsgaghUUbaqU09yd5JN3l9VNv27t2zbxay1Vq8dFk3R2MbAgQIECBAgAABAgQIdCswXkNardg6iknUk25j8rfro9oWB7d969b2IcaNSVzhlv9pSyRAgAABAgQIECBA4CACUUCa+yM2xeQg6/b65f6qbfEM8uZuLcuWreg1hv0RIECAAAECBAgQIDBXBZoCEle1RTHpK4b+qm1Bs23L5uaWkkucKtlXXxaDIUCAAAECBAgQIDBLBaJ6fPaI7dFtWzf321H2XW0bHR3dumVLm2nxkqXzFyzoNzLjIUCAAAECBAgQIEBgNglE6Yjq0T6iKCNRSfrt6PqutgXQzh3bmyckLFu+cthdJfvtW2M8BAgQIECAAAECBGaLQNSNKB3to4kaEmWkD4+sH2tbMG3ZtGl0795YGB4eXrFiVevT27n0IZ8hESBAgAABAgQIECAwuAJRNKJuROmIQ4gCEjWkP4+lT2tbXN62edPGsU8fbxfnmC5fsao/+YyKAAECBAgQIECAAIHBFYii8dklbWOfFpC+Oz2ybduntS0GFzdv2bJ5X9mNk02Xr9g3cTm43wkjJ0CAAAECBAgQIECgfwSiYjS30ojq0W93j+yE6t/aFqPctXPH1i377uKyYOGiZZpb50dnmQABAgQIECBAgACBbgWiXETFaG8dpSOqR7dJvdiur2tbAOzYvm37tv3P4F6xcrXr3HrxvbAPAgQIECBAgAABArNUYPx6tpWr9z9Ze9vWKB19fqwjq9Yc1+dD3L17V1wjGM8sj3GOjIxEJ47pyz68KWefMxoeAQIECBAgQIAAAQJRK6KztctFaERh27Z13+PH+hlnAGpb8O3etSv+s33iaVS4RQsXRUXu53NP+/kjNzYCBAgQIECAAAECc1AgGkQ8U3vZshXt+0aGQBS2gehsMdTBqG0x0D27d+/dsyea2/hJkq3W/FhauGg0btL56XMC5uDXziETIECAAAECBAgQIDBNgQULF8ZNI+M/o0rEJnHu3pZNG/vzEW2THtHA1LYYfTS0uFIwbtA5MjIvfoyWHCekzl+wcO/ePc6ZnPTT9SIBAgQIECBAgACBOS4Q50NGYVu8ZGkzyRbP1N68ccOePXsGSGaQaluwxpPcornFHNu8+Z9Ou316tduiRYtj8m3v6F7lbYC+eYZKgAABAgQIECBAoFRg/vz5y5avjBMjh0dG2juKvrB186Y4MbL9gOjSveeGj09bDdw/O3fuiIocjXnR4iXj50x+etnbygVHxVmU42/t3OHMyYH7TA2YAAECBAgQIECAQIpA+y6GcV5e+zna7czoae171A9cYWuPv3Xa2Zem6MxISEx0Ll6ybOGi8TuUdA4gTpuMu5jsjn927RzQD6bzcCwTIECAAAECBAgQIDCFQNSBuHgqptfiDhjtK6qalaMO7NwRlW3LQJ+aN5Czbc1nMD7LuWVTPNht8ZIlCxctbspbfFQji+ctWjy+YqwzNhb/MTq27/9GY5quSbBAgAABAgQIECBAgMBgCcTv/62YwGl9+n/x/8d/mOR51J8Wtu3bt2+La6wG6wAPHO1g17b28cT9JOO55nGKajTsuDlM3GKy6W+xwqcfYXM664ECXiFAgAABAgQIECBAYJAEpp6GibYWV1Tt2rlzNp15NxtqW/srNv7xfHph2yB944yVAAECBAgQIECAAAEChxKYZDLxUJt4nwABAgQIECBAgAABAgR6J6C29c7anggQIECAAAECBAgQINCFgNrWBZpNCBAgQIAAAQIECBAg0DsBta131vZEgAABAgQIECBAgACBLgTUti7QbEKAAAECBAgQIECAAIHeCahtvbO2JwIECBAgQIAAAQIECHQhoLZ1gWYTAgQIECBAgAABAgQI9E5AbeudtT0RIECAAAECBAgQIECgCwG1rQs0mxAgQIAAAQIECBAgQKB3Ampb76ztiQABAgQIECBAgAABAl0IqG1doNmEAAECBAgQIECAAAECvRNQ23pnbU8ECBAgQIAAAQIECBDoQkBt6wLNJgQIECBAgAABAgQIEOidgNrWO2t7IkCAAAECBAgQIECAQBcCalsXaDYhQIAAAQIECBAgQIBA7wTUtt5Z2xMBAgQIECBAgAABAgS6EFDbukCzCQECBAgQIECAAAECBHonoLb1ztqeCBAgQIAAAQIECBAg0IWA2tYFmk0IECBAgAABAgQIECDQOwG1rXfW9kSAAAECBAgQIECAAIEuBNS2LtBsQoAAAQIECBAgQIAAgd4JqG29s7YnAgQIECBAgAABAgQIdCGgtnWBZhMCBAgQIECAAAECBAj0TkBt6521PREgQIAAAQIECBAgQKALAbWtCzSbECBAgAABAgQIECBAoHcCalvvrO2JAAECBAgQIECAAAECXQiobV2g2YQAAQIECBAgQIAAAQK9E1DbemdtTwQIECBAgAABAgQIEOhCQG3rAs0mBAgQIECAAAECBAgQ6J2A2tY7a3siQIAAAQIECBAgQIBAFwJqWxdoNiFAgAABAgQIECBAgEDvBNS23lnbEwECBAgQIECAAAECBLoQUNu6QLMJAQIECBAgQIAAAQIEeiegtvXO2p4IECBAgAABAgQIECDQhYDa1gWaTQgQIECAAAECBAgQINA7AbWtd9b2RIAAAQIECBAgQIAAgS4E1LYu0GxCgAABAgQIECBAgACB3gmobb2zticCBAgQIECAAAECBAh0IaC2dYFmEwIECBAgQIAAAQIECPROQG3rnbU9ESBAgAABAgQIECBAoAsBta0LNJsQIECAAAECBAgQIECgdwJqW++s7YkAAQIECBAgQIAAAQJdCKhtXaDZhAABAgQIECBAgAABAr0TUNt6Z21PBAgQIECAAAECBAgQ6EJAbesCzSYECBAgQIAAAQIECBDonYDa1jtreyJAgAABAgQIECBAgEAXAmpbF2g2IUCAAAECBAgQIECAQO8E1LbeWdsTAQIECBAgQIAAAQIEuhBQ27pAswkBAgQIECBAgAABAgR6J6C29c7anggQIECAAAECBAgQINCFgNrWBZpNCBAgQIAAAQIECBAg0DsBta131vZEgAABAgQIECBAgACBLgTUti7QbEKAAAECBAgQIECAAIHeCahtvbO2JwIECBAgQIAAAQIECHQhoLZ1gWYTAgQIECBAgAABAgQI9E5AbeudtT0RIECAAAECBAgQIECgCwG1rQs0mxAgQIAAAQIECBAgQKB3Ampb76ztiQABAgQIECBAgAABAl0IqG1doNmEAAECBAgQIECAAAECvRNQ23pnbU8ECBAgQIAAAQIECBDoQkBt6wLNJgQIECBAgAABAgQIEOidgNrWO2t7IkCAAAECBAgQIECAQBcCalsXaDYhQIAAAQIECBAgQIBA7wTUtt5Z2xMBAgQIECBAgAABAgS6EFDbukCzCQECBAgQIECAAAECBHonoLb1ztqeCBAgQIAAAQIECBAg0IWA2tYFmk0IECBAgAABAgQIECDQOwG1rXfW9kSAAAECBAgQIECAAIEuBNS2LtBsQoAAAQIECBAgQIAAgd4JqG29s7YnAgQIECBAgAABAgQIdCGgtnWBZhMCBAgQIECAAAECBAj0TkBt6521PREgQIAAAQIECBAgQKALAbWtCzSbECBAgAABAgQIECBAoHcCalvvrO2JAAECBAgQIECAAAECXQiobV2g2YQAAQIECBAgQIAAAQK9E1DbemdtTwQIECBAgAABAgQIEOhCQG3rAs0mBAgQIECAAAECBAgQ6J2A2tY7a3siQIAAAQIECBAgQIBAFwJqWxdoNiFAgAABAgQIECBAgEDvBNS23lnbEwECBAgQIECAAAECBLoQUNu6QLMJAQIECBAgQIAAAQIEeiegtvXO2p4IECBAgAABAgQIECDQhYDa1gWaTQgQIECAAAECBAgQINA7AbWtd9b2RIAAAQIECBAgQIAAgS4E1LYu0GxCgAABAgQIECBAgACB3gmobb2zticCBAgQIECAAAECBAh0IaC2dYFmEwIECBAgQIAAAQIECPROQG3rnbU9ESBAgAABAgQIECBAoAuBeV1sYxMCBAgQIEDgSARWH7Vm584d27ZuPTBk/vwFIyP7/qXq6NjYrp07D1zHKwQIECAw1wTUtrn2iTteAgQIEJhJgbPPOe/yK69eumxZDOKZp5585KH7J4zm5q989aSTT2m/uHHjhu/8f//vhBX8SIAAAQJzUEBtm4MfukMmQODwBJYtW75m7dGd26z/4P1t2yaZJ+lcp3M5fgsfGdn/37ebN238+OOPOleY3csHAk443j17dm+Pf7Ztjf+Y8NYs+7HVajWdLQ7tgosufuqJx3btMp82yz5nh0OAAIF8gf2/RuRnSyRAgMCsEDjxpJPX3fjlzkN5/bVXf/oPP+l8ZYrlY487/qtf/53OFZ5/7pkH7/tF5yuze/lAwIMd78YNG95+681XXnphttbaZctXtOfZ2gIjIyNrjz7mnd+8fTAQrxMgQIAAgbaA2uabQIAAgcMWOO30M9YeffSH69dPZ8srrrpmOqtZJwRWrloVf2IO6tVXXn7k4Qe2b9vWA5aYCL3jG7/X7OiHP/je7t27mh9zF7Zs3rR1y5amue3du/fDDz/I3YU0AgQIEJiVAu4kOSs/VgdFgECtQJzqdsVV105nH3F65PEnnDidNa3TCATvWeec+7vf/PaqVaubF+sWWq2hKOHNn+HhVt2+xsbGHn/s4a1bt7R38cJzz7jjSJ22ZAIECMwmAbNts+nTdCwECPROoN3H3n3nN1Pv8oqrp9Xupg6ZZe/u2LEjLmbrPKhFixbPmzfxf4+WLV8ek2B/+zff2bRpY+fKg778yksvxp+j1qzduWNH098G/aCMnwABAgSqBSb+z2T1/uQTIEBg1gjEhNtd3//uFIfzhTPOXPv5e5lMsfLceevB+3/x2i9f6TzemF5bsWLl6jVrLrjw4s7JyYWLFt148613ff+vY5Kqc/1ZsPzxRx/OgqNwCAQIECDQMwEnSfaM2o4IEJhtAsced9wpp552sKMaP5HySle1HYznc69HK4s73b/xq9fiurIodXv27GnePubY4y646JLmx4qF5StWVMTOysyFCxfFn+kf2oqVq6a/sjUJECBAYAoBs21T4HiLAAECkwjEOXsxNdR+Iybc4s6Hk84FxeO54u4a7dW2bN68ZOnS4eHD+zdlcepgNIolS5bEjSvi5hwbNmzYu3d/n5lkZBkvLV48vtPFi8d3um3btri1Yw922jnw5599Zu+evV+64abmxQsvuuT5Z5+eFLlZJxa6G/m8+fPPOff8zpzpL8cely5bHp9sXJ8W34pJn509/bQjWXPJkqUrVq6MQrVjRzxHYdvmzZsOydXF7iL/SzfcHBve9/OfxrPCD5lwyqmnX3bF1S8+/8wrLz1/yJWtQIAAAQJTC6htU/t4lwABAhMFHnv4oS/felv71aPWrDn9zLMmnPIXb8WN3S+74spmy7gLxfXrbpx+bYsbcpx3/oVHH3NsTNk1ITEH9eu333rysUc+Ovj5detuuOnY405obxI3LfzJj+6K5Qg5/YyzTjjxxJj6iKZx3y/uee/dd5rYZuHc8y8497wL4gl1E3f61ptPPvHYRx9O67aZTdqRLLz80gvnXnBhc35pXOQWs5pvvvH6wTK7G/lv/+632sU4PqzO5N/51rfHRvedk/nWm28c+Djs6EjnnHf+2eeet3z556bp9u7ZEx/Nk48/Gk2+M3DC8qSf0YR1pvlj/HuBL15x1amnnT7hysBobsEVXfeTTz6eZtQhV2t3tuWf/guLKG+HbG7tzhbfpfMvHJ8s1dwOKWwFAgQITC2gtk3t410CBAhMFIg7tsdv883pkZdfcXU8xm10dLRzvfMuuCieMd1+JaY+4nb2Uds6VzjY8oIFC2Oi6fQzzjxwhfjV/LQvnH7yKac++tADzz379IErxCsx+bNq9b67L7Y+vSNi/GZ/y1e+tvqoo5r1Y36pWW4vLFq06LduuqU5os53x3d6+hknn3paPGjupRd7NGcSM0WPPfxg58PuoplMWtuOZOQro8QuWdJ5sO3leL158cCyGh9BWC1YsKBZp1kYmTcvTum87Wt3xI1q7v353Zs2Tn4nlQM/oybhsBauvX7d+Rde3Nmxm83juKLKRrF89umo+Q8d+cxbZ2eLvUR5m7q5NZ2tPSTNrfloLBAgQKBrgcM7Y6fr3diQAAECs0kgZlSaw4mT02LupfkxFubPn3/pZZc3rzz95OPT/L05nrz8rW/fOWlna9Jiauia69dFN5i0OTSrtRdibu32r/9uZ2ebsEL8GE8D/9a3/2jSztasHDuNMnnDl28Z/vzEVLNC+sKH6z/3NLOoQwfuovcjjy50y21fO6R83FUlqnKp1YUXXxqX/E3a2RqomN295LLLb7nt9iMfyaLFi2NmskmOhXZzizrX+WJ7eUJna7+4avX+f3Fw4CZeIUCAAIFDCphtOySRFQgQIDBRYP0H7//m12+feNLJ7Tcu++KVr7z0UnMN2EWXXBa/5rbfiju8x93eJ24/2c/xS/aXb/lKnBDYvBmXlsXZjBs++Th64OrVRx1/4knN6Xwx53b5lVc/eP+9zcqTLlx86Rc7Aw9cJwJvuuUrcXVW81YcWswlxizT/PkL1h5zTFz31bSUs84+95OPP37mqSealesW4iEBO3fuXLhwYXsXMWcY85C7du1s9njkI9+2fVu7Ts9fsCCEm+RgH/rsxpU7O/a4Zu3aa6//rWa12Da+A+vXf7Bj27Z4fHac0dp5D8w4e/aqq6996IH7mvUTF9asWXvVNdc1gXEV4muvvvLxRx/t3rUrRhJfyyi0zbtr1hy9ZPHiLVv2PSmuef2wFjZu+OT+e+++ft2Xw6rZcNI5t0k72zu/efvRh+5vNrRAgAABAl0IqG1doNmEAAECQ0889khT26L2XHDRxe0+E6ftXXTxpQ3QU088PuH8yeatCQvnX3BR5233Xn7x+YceuH/37l3NajFpdsNNt8ZToduvxHmYLzz3bNyAsVlhwsKSxUviWrV4MS6KizIWt6qI21VE2Yj7ozRrxqRNczJnvPX4ow93zg1GGYhd3Hrb16KEtDe55NIvvvTCc7t27R9VE5W+EFWhmWSLaaXly5d/9NH+2nbkI//ed/6yPea4PCz+NOP/67/6i2iMzY/NwuZNmz54/712N4tq95Mf/mDCTfxjxjLm4porGGM2LE5Q7LwrZhN1hAsnnnxKs5fIv+t73+283DG+mccce+zNt94eFW7Txg0/uuv7R9jZ2qONf31wyOY2RWcbG/vcWcRHKGBzAgQIzEEBJ0nOwQ/dIRMgkCDw/nvvvvH6r5qg6DPtWak4La2ZkYhOFSWnWWeKhZhWuqyjOcQ9Le79+c86O1tsGzNdP/nRD5rKFL+4X3Xt/imXA8NjGHF23AP3/eIv/u9/HTfWv/sf/i6WY4Iufv9urxynvcVomw1jVvCpJx5rT0A1L27etPHnd/9D82I8SO2iS7/YvFu6EBNunfkLPpt5ixdnZOQhH1Xtjddfi/b747u+P6GzxahiljKuJWvGHFUz5kibHxMXYmavSXs7pkYPuEXNB++//72//qu4s8tdf/s3KZ2tvbt2c4s5vWbvsdCcLamzdbJYJkCAQLqA2pZOKpAAgbki8OjDDzQzae0+s3Tpspg0a44/7h3SFJ7mxUkX4r6RzQmBscJDBzn7MQrDUx2X1cWNOqa+ZOgXP/vpC889s3v37kl3ev6FFzUnQMakTRzOpKtFK3izo6DGE7EnXa36xU6fmRp5nI7407//yd9+7zsHu0NjZ5MPkKPWrK1g6XzQ3MFm8+Krcu89d8ctJXMHcLDmduPNt8W9/idca9c+N9I8W+5HII0AgTkroLbN2Y/egRMgcKQC8UyzOJWxSYnHi33phhvjdoLtVyZMxzWrTbqw+rOzEOPduBxuilMf33nnN50JRx217/TFzhfby/EL/eu/evXA15tXOueCPvn4owmzW81qsdB5g5Boep3XwnWuVrrcwMZeZnDk0cPjbMmDHWk8va3zrc5+1fn6ES5v+OSTJuGkU06Z9H6YzQrpC5M2t8VLlups6dQCCRAg0CmgtnVqWCZAgMDhCTz+2CPNXFbc1uLkU05rtn/4wcO4B8PKVfvu2h+bRxtsQg5cmPBu80TvA9eM+tdMBh74bryy4rOngcfywaaP2htu/Py97DtvkT9pcsWLnefm9e3IYzqu89gnNJnOt45k+eOOZ+jFg9G/9ft3xsmucRvS5o41RxI+nW0nbW6dG5pn69SwTIAAgRQBtyRJYRRCgMAcFYhT0eJOJHFTxwnH/8avXovbV0x4cYofO4vQtq1bp1gzLniLotjc+XCK2jZFSPutzp2edNIpd3zj9w62Sed1ZbFO3DolHk12sJWzXp/QeTpvEzLjI4+LBmPGb+nSpTHxGE/fbq5mHBnuxb8M/eUvX467lTaTbLFw5dXXxp+Qj3ulxNTou+/8+p3f/PqjDz/M+iwOzGk3twn3lmyvprMdyOUVAgQIHLmA2nbkhhIIEJjTAnEXirgyrfO8wZjjevThB6ePEts2NSy2Gov/m/qfz25PH2t1TtNNvdGEd2On8Sjt5sXx+tHxGIDm9UkXli9fMenruS8uW7asM7CpbTM78th73MPz3PPOj2muzuH1cjmuWLvn7n+Ix5FPaLYxhiVLlsQNLdtP4YunR9x/7z1xJ5uisU3a3HS2Im2xBAgQ6MW/F6RMgACBWSwQl5A9/tjDnQcYd4+c4uK0zjXbyyPDIwe+OM1XaQWvbgAAQABJREFUup7eOZKdNnefn+Ygu1gtCknn4xD27tkT97Jv58zgyKMO3flP/ullX7xiBjtbGyEeGff9v/6rmFKbwva440/45u/f+YXTz5xinSN8a8LZkjrbEXranAABAlMI7P9XrVOs5C0CBAgQmEIgbp0fjxFr3ycjLsF6ouNmj1Ns1by1ZcvmuCaquTCpNdRq3jrkwoRL3Q65frPChJ3+6rVXX3z+2ebdqRcS7yl/sB3F0+QakFjnww/XN9fpzdTI4+Kxm265rbOyxl1nYkYrzkscf1TDp1OkI/NGrl9348EOKvf1OAcynskWj7aLR8kde+xxMbwD50tjtF+64aYY57ZtU515eyQDa+bc1q9/P56p7b6RR4JpWwIECEwhoLZNgeMtAgQITEsg7i4Y9/r/yu2/HWs//dQTccHbtDb7bKXYfNPGjfE07fYLixYv/uydSf5/nNk4b/785o0Nn81BNa9Mc+HTOyJubJ4fMLp3bw8uV5vm2GK1k089rXPl99/bf6HgTI38+nU3NOeyxuWFf/eju6KzdQ4yluOj6Vlta+86LqFsrqIcGZkX1zoef8IJF1/yxXjWdnuFeHDCeRdcGA9SnzDUxB+juf38Z3+/dcsWnS1RVRQBAgQmCDhJcgKIHwkQINCNQDxqOWpP3E3kuWee6mL7jRv239K9834bB0atWLGy84qmzg0PXHnqVzrvD9n0t6k36c270TQu73j4eOz01Vde6tx170ce9yDpfAjbC88/e2Bn6xzhjCzv3bsnHgL+/LPPfO+7f7l9+/4nth3V8XiJooFt2bxJZyuyFUuAAIG2gNrmm0CAAIEcgbjj/2OPPnSwxx9PvY8NHbVt2fLliw8+4Xb0scd2Rm3seIRX5+vTWe7cacz1xbPCp9gqbhDS2VumWPPI37rq2uvj8eVNTvThjz/+qPkxFno/8jVr1naetPnxQW7S2LlO54ArluMOlgeLjUfwvf3mm827ccZps2yBAAECBAZUQG0b0A/OsAkQ6DuBuPF6XOTW3bBeeuH5uOtGe9uYTLvy6usmzYkTJL94+VXNW3Hq4Pr1HzQ/Hu7C+E4/e85Y9I1rrl93sIS4aOprd3zz63d8Y+3RRx9snZTXo7J+7Y5vnHPu+U1anBL55OOPNT+2F3o/8s5L2mIMizpaZefY4hqzzh+LluMbct26G7595z85+ZRTD7aLBQsXNG9N/VC+ZjULBAgQINDPAmpbP386xkaAwFwRiNtsPPfs083RnnXOuXGPk86TIeOtmIC68eavNNcsxSsPP3hvs0kXC5s3bey8DckXTj8jrstqLt9qAmOPX7/jmytWrowB3P7b3zj66GOat7pbiOcHRP3r/BP14+JLv3jjl2/9vT/44xNOPKkz9oXnno37E3a+Esu5I5/OBOknn5/uO+30MyZ8OjGq8Lnymsn79oTxT/1jc/OVSVeLAnnTLV85/4KL4mFxcTnlBRddcuBqMXd64kmnNK+vf//9ZtkCAQIECAyogFuSDOgHZ9gECMw2gaeeePzsc89r31k+KsE1133pjDPPevutN2OqZMH8BauOOurMs87uvO/8r1795QdH/Ov4k48/etY558W1ZG3NuHfFyaee+vabb3z88cdxnV4Utpg+iorSnPsXa65Ze/SRTPHFjq646pr4M53PL06PfOShByZdM3HkE64PvOW2r8UUX3uncSePuA1jLO/atSse6tBcdhg3b7z5K7c//eTj4xNZY2PLlq84+ZRTokEtWrQ4bsrfNM8zzjz76GOO3bJ58y/u+emkRzHpi3F/mub1OHM1ph/jx7hf5T0//ftYiEp/+hlntVeI78m1168797wLXv3ly1Esd+zYHt+QY447Ph4k2NTvuHvKW2/tP2GySbZAgAABAoMloLYN1udltAQIzFqBuIn8fT//WcynNb9wx2/88WfSA4579z380P2TvnVYL8YzrOOJzL91483No7fjOqh4nPTBQp5/9umXXnz+YO/mvh69NB4qfbCpp8SRx7mm0coWLNh3VmFUsuZA4vYezfLDD9zXvllo+5XTvnB6/GnebS8889QT8ayCprbFOZ/xZ8NhXn/43ru/ufDifXNo8bm006L7tXfx8osvxEWGF1x4cbPrmFu78uprmx8nLNz787tjcnLCi34kQIAAgYETcJLkwH1kBkyAwKwVePON17//3b/6cP36qY8wruz63nf/w9YtW6ZebZrvRjv627/5DxNOAjxw25i0uf8X9zx4/xGdlnlg7KSvRM/5x7/70d3/+HcH62ztrbJGHpNUcTuZZoZt0iHFi3Gz0BdfeO5g78brMS/31BOPvf7aq+s/OKKTEt94/Vdvv/XGFDt68L5fxJ/4RKZYJ96KCxcfe+ShUJp6Ne8SIECAwEAImG0biI/JIAkQmCsCcSbeD773ncuvvDrOfOu8m2L7+OMOivGL+Bu/ei2X45OPP/7+X38nZmziBLzmhMlmF3G25GuvvhLXmG3evKl5MXchGkh0p21bt8VEU5wXGv3nkCWqPYCskb/84vNRXC/94hUxcxXzjQdet9beXRTXX7/15jXXrVu+YkWnQIw/7kbz6MMPtC+T+/F//MEVV19z8smnxlTbwaI6Nz9w+e9//MOYTzv9zLNWrlp94CcS6z//3DNvvvn6RZdcdvrpZy5esmRCQuj98uWXnnjskbhmcsJbfiRAgACBARVonXb2pQM6dMMmQIDALBaIX/ePOfa4uBFI3Oc9pk2i08TZdxs3bCg95LjdxfhOV6yMJrBnz+6Y0Ivf+z/68MNplqjSsU0d3suRx0ezIh5rvWr1ypUrd+/ZHacvvvfuu3GO69QjLHo3BrP26GOiai5ZumR4eCTOh4xL4zZt2jid+6wUDUksAQIECFQIqG0VqjIJECBAgAABAgQIECCQJuDatjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEFDbKlRlEiBAgAABAgQIECBAIE1AbUujFESAAAECBAgQIECAAIEKAbWtQlUmAQIECBAgQIAAAQIE0gTUtjRKQQQIECBAgAABAgQIEKgQUNsqVGUSIECAAAECBAgQIEAgTUBtS6MURIAAAQIECBAgQIAAgQoBta1CVSYBAgQIECBAgAABAgTSBNS2NEpBBAgQIECAAAECBAgQqBBQ2ypUZRIgQIAAAQIECBAgQCBNQG1LoxREgAABAgQIECBAgACBCgG1rUJVJgECBAgQIECAAAECBNIE1LY0SkEECBAgQIAAAQIECBCoEJhXETpHMk85buikY1onHt06bu3QMatbR68eWr28tWr50NLF438WzG8tnD9HJBwmAQIECBAgQIDAXBcYGxratTv+jG3dPhR/Nmwe+mTz2PpPhj74ZOy9D4d+s37s1x+MvfXeXFfq+vjVtsOgO+Ok1nmnDZ19auusk1uxfNrxrWGzlYfhZ1UCBAgQIECAAIFZK9AaGopJi4XzW8uXNMcYr+3/Z3R06I13x1779dgv3x575c2xF98YiuX9b1uaUqB12tmXTrnCXH/zpGOGLjundcnZwxed2brojNYCE2hz/Rvh+AkQIECAAAECBBIEYmru2dfGnn117OlXRp98OebiEjJncYTaNvmHe/YprasuGP9zxfmtOAFy8pW8SoAAAQIECBAgQIDAEQvEiZSPvTD2yPPjf155yxTcJKBq2+dQjlk9tO6y4S9d2rr2otbaVdra53D8QIAAAQIECBAgQKBU4MMNYw8+O3bfU2P3Pjn6wSeluxqwcLVt3wd2+Xmtmy5v3Xj58LmnaWsD9iU2XAIECBAgQIAAgVkm8NIbY/c8Pvqzx8cef9Hk2/hnq7YN3XJV69arh+M/Vy5T2GbZ33eHQ4AAAQIECBAgMMACG7eM/eMjY//w8Gj85wAfRsbQ53Rtu/261u3XDX/12mE3hMz4LskgQIAAAQIECBAgkC8Qt6D8yYOjP34g/szd8jZHa9uXr2zdsW74t7803DLBlv83SyIBAgQIECBAgACBZIGxsaH/eN/oXfeO3v3oXCxvc662xd38v3Hj8DduGI4nYvuHAAECBAgQIECAAIEBEogHeX//56Pfv2f8mQEDNOwjH+rIqjXHHXnKQCSsXTX0T78+/Gd/NPJblw17/NpAfGQGSYAAAQIECBAgQKBTIH6Nv/jM8cd0LV00/vDubTs635zNy3Oltn3l6lYUtj/+6siq5U6LnM1faMdGgAABAgQIECAw6wXiV/rrLh4+8+TWjp1Dr/1m1h/u+AHO/tp23Jqh/+Kbw3/6RyPnfWF4TnykDpIAAQIECBAgQIDAHBA47YTWtRe3li8Zev2dsS3bZ/kBz/Latu6y1p/dOfKHt44sXmiSbZZ/lR0eAQIECBAgQIDAXBOIX/KvvGD41ONbG7cMvfXebD762Vzb/uTrw39+58hl55hkm83fYMdGgAABAgQIECAwxwVOP7F12dnjkzRP/3LW3qdkdta249cO/ekfjsSf1StMss3xv8UOnwABAgQIECBAYPYLxNVu6y4dXr609eqvx7Zsm4XHOwtr28VnjZ8Y+Qe3eibbLPy+OiQCBAgQIECAAAECkwrEA5njWV/HrWn9Zv3Q+x9PusoAvzjbatuNl493thsvd2LkAH8pDZ0AAQIECBAgQIBAdwJnndL6wgmtjzaOvfFudwF9utW8Ph1XV8O6Y13rv/q9kXNOdWJkV3w2IkCAAAECBAgQIDD4AvFUt5XLRpYv2XvXvbPnUrfZM9v2B7eMP0o7rkcc/G+aIyBAgAABAgQIECBAoHuBtataF57RiodxP/+rWdLcZklt++Pb4slsw8ev1dm6/3LbkgABAgQIECBAgMCsEVixtHXRWa3tO4aefW02NLfZUNvGO9udw0ev1tlmzd8yB0KAAAECBAgQIEDgSAWWLm5ddOb4nNssaG4DX9u+PX5upM52pN9p2xMgQIAAAQIECBCYfQJLFrUuOKO1aevQCwN+tuRg17Y71g3/2Z3OjZx9f78cEQECBAgQIECAAIEcgZhzO/fUuLfk0CtvDfDZkgNc29r3+ncPkpyvsxQCBAgQIECAAAECs1RgxbLxpwK8s36AnwowqLXtkk+fqR3/OUu/Wg6LAAECBAgQIECAAIE0gbi3ZDyJ+9W3xwb0SdwDWduOWzPkmdppX2FBBAgQIECAAAECBOaAwInHtJYvGXry5bEt2wfvaAeytv3pnSN/cOvw4GEbMQECBAgQIECAAAECMydw1ilxsl7r3qcG7yK3wattf/L1uA3JSMvZkTP3dbdnAgQIECBAgAABAgMqcOnZrY1bhp7+5YA1twGbs1p3WetPvjassw3oXxLDJkCAAAECBAgQIDCzAlElolBErZjZYRzu3geptsUlbf/J7cOnnTBgxIf7kVifAAECBAgQIECAAIE6gSgUUSuiXAzQP4NU2/74tuGbrxykAQ/Q98BQCRAgQIAAAQIECMwdgagVUS4G6HgHZqy3Xt26c6BkB+hLYKgECBAgQIAAAQIE5ppAlIuoGINy1INR245ePfSHtw4ftWJgWAfl4zdOAgQIECBAgAABAnNTIMpFVIwoGgPxz2DUtt//8vCNlw/GUAfiUzdIAgQIECBAgAABAgSiYkTRGAiHARjlZee0vjUgmgPxkRskAQIECBAgQIAAAQJtgSgaUTf6X2MAats3bhz+grtH9v9XyQgJECBAgAABAgQIDJpAFI2oG/0/6n4f4s1Xtn73hn4fZP9/zEZIgAABAgQIECBAgMCkAlE3onRM+lb/vNjvjei31w0vW9w/XEZCgAABAgQIECBAgMCsEoi6EaWjzw+pr8d3+3Wtr1/f1yPs80/X8AgQIECAAAECBAgQOKRAlI6oHodcbQZX6OtSdPt1w8N9PcAZ/ODsmgABAgQIECBAgACBHIEoHVE9crJqUvp3cLdc1brt2v4dXs3HIZUAAQIECBAgQIAAgRkQiOoRBWQGdjy9XfZvL7r16uGR/h3d9HStRYAAAQIECBAgQIDAIAhE9YgC0rcj7dORXX5eq/9v59K3H6qBESBAgAABAgQIECBwuAJRQKKGHO5WvVm/T2vbTZe3Vi3vU7LefDD2QoAAAQIECBAgQIBALwWigEQN6eUep7+vfqxtxx41dOPl/Tiw6bNakwABAgQIECBAgACBgROIGhJlpA//6cd29KVLh889rU9rbh9+hIZEgAABAgQIECBAgECKQNSQKCMpUbkh/Tim6y/R2XI/ZWkECBAgQIAAAQIECExLoD/LSN/VtrNObvWn1LQ+ZCsRIECAAAECBAgQIDDIAlFGopL02xH0XW27+sLWmpV9x9RvH5vxECBAgAABAgQIECBQIRBlJCpJRfKRZPZdbbvqgr4zOhJf2xIgQIAAAQIECBAgMFgCfVhJ+qu2nXzsUN8+KmGwvmpGS4AAAQIECBAgQIBAdwJRSaKY9NU//VXbLj27dexRZtv66htiMAQIECBAgAABAgTmlkBUkigmfXXM/VXbLjm7v8bTVx+VwRAgQIAAAQIECBAg0BuBfism83pz2NPcy8Vn9lepneawrUaAAIHBErjn8dHHXxprxnz2Ka071vXLvzV76/2x7/zjaDO2keGhP/+jkeZHC4MrUPStK4odXGcjJ0AgS6Dfikkf1bYzT25dcLralvVNk0PgcwLbdgwtWjA03C+/mX9ubH7ovcB9T4/9u7v2V6Pbrq2qbV188d75YOz/+u7+sc2fp7b1/gtSsseib11RbAmBUAIEBkogiknUk1ff3v9vOWd2+H1U2849dWjhgpnVsHcCs0fg4efHHnxm9M13x958b+it98Y2bB7vbEetGDpmdevsU1u3XdP6rcuG/Y2bPZ933xyJL17ffBSHGMhPHxl99rWJv4vcevWwf396CDhvEyAwZwTi16SoJ6++3S8H3Ee1LX6V7BcV4yAwyAJPvjz2L/9i74PPTvyFbHR06MMN8WfshdfHvn/P0OKFe799y/A/++Ph5Uv81Rvkz7tvxu6L1zcfxbQG8r/8271vvTdxzXjlX/4zp6ROZPEzAQJzVmC8ntw38ReqmdLoo9rWhw8jn6lPxX4JdCewdcfQn/8fe3722LT++2X7zqF//8PRHz8w+s//85Hbr3P2ZHfkthoX8MUbuO/Bs6+OHdjZ4ih++ujozl0j5uEH7gM1YAIEigT6qp700e9qp5/oX/kXfeXEzhWB/+FfTbezNSLrPxn67/7F3n/zg/2XEjVvWSAwTQFfvGlC9c9qP7xv8r/yW7cP3fPE5G/1z+CNhAABAj0T6Kt60i+1LZ5nd/pJalvPvoR2NAsF/vXf7v3Jg5PMs61YOnTOqa2rL2ydcVJr+ZLJD/x//bd7/58f+V1tchyvTi3gize1Tx++OzY29KP7D/r3/WCNrg8PxJAIECBQLRD1pH8eut0vJ0mefGxLaav+5smfxQLPvzb2v//7z/0eNm9k6PdvHv7Pfmd4wr8oev5XY3f9YvQv/350y/b9HvG3b9uOSSrf/jUsEZhMwBdvMpV+fy2uQnznw/2DvOiM1nOvRZXb98/dj43F/T+XLPrsZ/+fAAECc1ggfkGKkvL2+81/R86kRb/Mtp1wtNY2k98D+x50gb+5Z3Tv51rb0P/23478z//1yITOFocZt4n7H//TkR//q3lfunTfX7ooeP/iz0f+y2+5D8GgfwtmYPy+eDOAfsS7nDCf9t98e/jis/f/T/COnUN3P/r5/zY54j0KIECAwOAK9E9J6Zfadvzawf00jZzAzAv8/PHP/Zp185Wtb9401d/u49e2/vX/NO+r17aWLR76N/985Bs3TLXyzB+eEfSrgC9ev34yBx1X3FH2RzfRAG0AADLrSURBVA/s/6+LmFVbd9nwV6/ZX9tiyx8e/BTKg+Z6gwABArNUoH9KSr+cJHnMUZ/734xZ+rk7LAJVAu92nPIU+7jy/EP/hRoZHvo///t5Me9/4IzcwUa5Y9fQi6+Pvfth/ImbB/7/7d0JuNTU3cfxZOYisgnIIqIiLiBUEVxKBUXrUnF9bGsXtbX6tlrbvq120bf2rdXXautW27q0tbVWrdZ9aQuKqCiWHUVZxAVEUQHZd0ThTvL+hpFMkpnJzNybTDL3fue5j2aynJx8zpmQf3Jyjr17T7NPL/0ZPbqYsbdyfmeJrQZ7K9YaazfYnTuaPbsaA/Yy943mjdlIHZattl97Ozva3uaP7QF7mp/a29ylSafHBYts9Rao1LY2GrvvYvbvY35qr/K1olTRl5pfm4rn3nsoPpGWoDu3lUzXsuoqPy++ZqsjIufz2UPMHXcwRg5PXedqZf2fl+2NHxodS7wK62xbOBFRrYso2cL8VzInxPLScCzvfpAdV/P95XbbNkb3LtkT18EDUh3aVZKRT9YJJZEq9seqCLQ+geQEKUkJ27p3bn21gCNGICQBdeX/8VZPWt27VnSB3qbBqDBm01Bveh1OL8Vt+NCzo9yXLp2M756eOvuk9A5t/Et1vXXaxY3OXF2aTLi9TdnXZqbPtb95VX6rww4w/3pZ8ZPVx1uMu0ZnHhlnvbPE2Ul+Qkd3+jHmf51aJGP5laqZarKDeye+o9uhwXj53izc0lX2LQ9ajz5nNWbcqxu9exjX/yB92KBKn4iqCdwfH7HefNffEH9If/OiM1J6tOJJvRlfalDx3LkLxSfSElRulcm7RlmvL7QXfmCvWmf88IzUeZ8v3vy4xlXXkRzt7UMyN/hHn13MgXuZuimTW03nk2emWcFP7J0EcxMR1bqwki31o1PmKyyycMtr4kzrd/dbs+b5f6TKzw5tMsMPNM86IXXMoWV+qqEk4itHviKAQKFAcoKU4ldChTmOes7OnSu6yow6G6SPQD0KtGur27TZobSdz7yCS3ZnUbUTalL1x0cyNz1g5bssKEhi7Qbjmrusu0db//ON9CkjPJca6r5yj57m/Pc/uTrRazPPv2SdfIRnnYL0DF1Zak3nc9zQ4utPnm1demtmyQpnRf/E24vtG+6xH3rGuv7ChkMGNusk00wHd84sy3YfXWZbkLZ4uX3mZY1Fj0Uzz74i8/2v2N//SlrPSAM+eoikgfuenV7kWlBbzZynYDhz5bcNXREGJFL5okgrni8bzfeJugSV4ZseyPzlMct9D8UXgTsHVcuq6+xUE8rP2Cn5FpJ6znbUwZ9UBjWZdsI2ral2khWGbRHVunCTLfqj02FWWGQhlpcejmnMFT3zdJeLe3rLVmP8DHv8jMxxQ60rL0gXfdgeSiLunTKNAAIBAskJUsL5xzvgUCtc1LlDhSuyGgIIFBFQF//uuf96wVq9vuRlgXvN4Gld6f739Y2/vz8oZnNSUN90P/ptZsrs/EVhbtHJR3jyFtDzeG599a3ylOvdG/WYMnKYJ4XcakrnW1cFxWxOxtTg8JwrGyfN8mfMWaHsRCgOAXtRO0blsGjMlttKMbMexOkxTkAijY3Gf19XMmZz0rn8zxlFzgHpVLUooorny0PzfaIuQWX45gczKiN3zOY7CudrLauus9PcxNQ5OjPk5x11sOk8+h45zHM9MHGmrfbG+VVLTEVU6yJK1ncQFRZZiOWlsDk4ZnPnUPdfvnxp47sf+EshlETcO2IaAQSCBZITpHhO08GZjnRpJ8K2SH1JvKUL6M0l9yEuW21c8OvMW4v8/96716lk+taHM89M8yeiJpHqMXxAX1MPW3wfrXrJzZl1Gz2b+J6tvfBytnvxgI8CP/eV5eGDza6dPEenbdX2UiGirubdH41Qp+aUZ45MqYlR547uJYaebn3nmsyKNZ6MedYI/BKKQ8Ae7h9rLSzWyNO3yW2PZTQacqnPg89asi211D1fY0UojAnlE1HF8+Wt+T5Rl6CeU938QEWmNa66PsnREz015ITh+WsAvQi67x75H5pig6cLfvu+1PQ1oloXUbLu/FdYZOGW13V3+5+zqaW62NWv7+D+5s47uTOYndatHDUo8M0NJRFfmnxFAIEAgeQEKUlpJFl4/RfAxyIEEPAJqCvIvz/hGQNAQzOddFGjGj6pEZQin17d8hdkvm1LfdV127Pe6zal9t3T0/vvk0/q5TfsX/41o0GfnESWrjJ+c4911Xfz7/Ps1dvz2ozaPgW3k3xiUj41JXuqt9VlbkfX/z3jHvBAr8z99Jz02SelnJ5R9Hjqz49lfndf3kQvYv3hYev/vp3PmJPn4ImwHErtRQ8Wbrgnk0oZJw1XzKkxGwyFqer2YOqrauGZcYe4a9Ybf/t35gdfLXIIyuTtj/sv77p1NtSu8sB+2f5IPtqS7fxALyzdO8ZSm9XFKzzIpfJWdn4UFc+305yPWoeedLh5xvEen9/c64ljS/lEXYKqbH961I/vOwrnay2rrrPT3IRuczw9NR9b6k1U39tT+oHfur09szYZPcH6ynH5uM6Xmr5GVOsiStad/8qLLMTykr9+fe5snHpk6tJzUk4zSOXqpdft2x7NOPdf9Mu9+WLP7z2URNx5YBoBBMoKJCdISU7Ylr8QLMvHCggg4BNQKPXdL6VufchzTaAnKk9Osp+clL2g7N3dGNTPPKi/eeTBKd8TEl9Szle1TvzH1Wk9tdPb/JqpoOiK8z0XEJp58ADzkWsbTv1xo/P2mmZOL3ht4+TDPa/NqNGR7xGcs1NdlLjfvVE8Vvhi27S59rgX81GH3s959PoGX2s9xW/fOT3dbw/zgmvy19PqVeWbp6XU+4Kzu0omQnQoujsdia5T77w8ffjg/CVyvz6m/hRvf+GSRvcTtn//xyoatqnnhkXLPcmrh0B1ZOK0yG/XVg8tjSH90986LXXWZZm3XFfnns2q/BJFxfNlQT4K0e+6Ij3sQL+PnlF8/uLyPlGXoIpPPzRl+6D9zNOOSu2zm9Gjq9l1J0OVsP2OnspW46rrk1QPFus35eeNGGL6eiwceZjnHKIbB6vX2U4Vym+5fSqiWhdRsttznf1/hUUWbnnp+Z7Ob85HDRZuuDCtyul8VGHUCfChAxv+8HD2dWKNsXnnFWlfW4NQEnH2yAQCCFQioH9AK1mtBuvk/xWswc4CdqF2AnwQQKA5At//clr/zJdKQS+ejZ1iX3u3pUdwR12wVY/IJsws31KuU3vzrisaRh5mfunY1OXnua4vXLtpaDAuPddzJtGTIvW65v74grSAdpK+K0vFHr5eyHVD+to785GY9qJ41RezObs+dmjKGVVcM3WtdtP9nsjWWTN4IiyHUnv58Vl6IuoxzK2pnjDPPN4zf/EKQwK+j+b8+THPcamLmt//uKHoBffOO5kKEQv7/PSlWfnXKCqeb+8/+VrKHbM5S/Ug92ve7lWK+mj9qEtQ9xfu+EX64Wsbvn5iNqtq9tats9q8ZfvWdz6xVF1n75rwPcfO9SHpXkGdSWo8D+ej+z5jphTUtu2LI6p1ESW7Pdf5/5ctstDLa/ZbHsxhg0x3zObkTMGbHpLfc2X6nl/6YzatE0oizr6YQACBSgSCOwOrJIWw1vFcEISVKOkggEDtBRQ+3f+rhnNPzTcULJWHxcsNtaj8ryszZ13WqBCr1Gq5+bq+v/mShl9/L62LiVKfwf08y3S153utbo9dTDXVczbPtZN0vronfO/e+Pql1Jpq/DnH1SZT77CdX6KD9Vyy553mOcvpRr67daV718HToTiU2sVnD/Fk0r2aAmb3V/Uyp4HL3HM0rUGf5r3nmfnTb6R94a57Ew22rudC7jnNmY6o4rmzFODzxWPK++SSirQEf/7NtNMlozvn7um4qm4uD7qT8uy0fGyvW6XHDi1SB07wdkyi34v7ENzTEdW6iJJ15zw3XbbIQi+v9d6XfosOpuLkUwN+6F6D89WZCCURJzUmEECgvgQ8/+DFmHV3y4EYs8GuEahrAXUKd9k3s7f8D3C9fhZwRHqP4tQfNf71n56HV4Xr6z6T3rwK+HTpZKo7EPdH3bW7v2r65MM9SaidpG8Ffc1eWU7Pz9fhHF0wctFLr+dX0CZqaBT84Mjdy4LW1wO3Jr/WFYpD4VErWV8m3ev07uG/dFPHmL7PkgJt9RDoW8f3VQN5++Y052tEFS+XJfloGIlS2dutAh9n24hKUOkffWjJHDp7j7HqKg8vvGxtdPVno/a3RaMCX3+S6qe+8DZB7ogiqnURJeuUgjNRtshCL68Be3kqid4zXFTwy3WyV2oilERKJc58BBAoKtC0u71Fk2rmTM+FVDPTas7mmz/2X+Q1JzW2RaA1C2hU5X/+puH52xr0Kpou39UWKOCjB19qOakhngPWqWRR2XbO6k/Cfc1StJ3k+Jct93tcauLobmOWy4ZugbvzExDw5FZTXyy+l4nfLfeA0Z1+tdNlHQoTVEjsofGuoYjIFxLrdSPvKgpEPTPUH13R5pHulcwIzv0RVbzgWwYq3LI+7gMvO92EElRTNz3ALJtyvFXX99zM91TNyfyB+5q7dne+ZVvkjpnsr2+5xRHVuoiSzR/StqlKiiz08vqUN2zTe4Z6M1Od2bz5ri3nCj+hJFLhvlgNAQRyAskJUpLySpk6efP900tdQQCB5gioXeLZJ+kvpcBMo2+/ob+F9uTZdtG+KH71t4wCvO5dyl96KrXlq3UDXqN7e16v973MVphzXdeq/5IZb3xyeZJrJ+l75813ZXmKd8C3XJpLV3rSnjPf/sVtZZ4W+q6IFn5gjDjIk0gTvjTZoQn72rGt4e5JovAKz/f8cPcq+1xpQpYCNomo4gXssaxP0W1DLMGAqNu96xirrvojHfdS/negp47HFWshqdzqWI4/LHX36Px9HP0qzz2lSJQfUa2LKFl3QeQO0zen8Gvo5aVbSHrIOWlWviDWbjBuvNfSn+4+7N7T3KOXccgAc9iglHr6URkV/YSSSNGUmYkAAqUEFKQk5JOUsG3DJmOXnRNiQjYQaFECemCl98qcV8vULOcfY6y//dvzipeiAo3ldf2FxTsdEce0V+2/P5GZMsd2xw8BTPkLE9dKCtJmvJEPscZM9vQnqcvo51xXlrqPc+RBRa5c1nrfD9EL+r539F07LD65sGD42uLrFZsbikOxhJs1Ty8ruj+lLvjc69RgOpSKF3o+YyzBGKuuhtzQ0IXOp00b46Ib879EZ35uYsUaz4yZb9pLVtiFjXUjqnURJes5pMq+RFFev/1R+uQfNq5c68+BLgrVGe/8943nsn3kWp3aG5//bOrHXyv+elsoifhzwHcEECgtoCAlIZ+khG3rEiOSkIIhGwhEJKB7uhriTJ3InfHzRvVv4XymzdX99SJhm16Jue5uy9fjhbNVVRMnDDevuiPfEeLEmbaG5FKHFrnP1DmeK0vd8i/aXM39fk5Ve3dW3vihM1nFRIgOVey1slX15LOyFeNcq9qKF3peYy/BuKquJH3PsRXCuZ/5BFOrbmnz87/gPzlEVOsiSjb4GIsujaK81L/oX/63QSNoB59R1VvJPU9aurGlcSYLm7OGkkjRQ2YmAggUFUhOkLL9iqloNms4c9vbGuUbaNUwR+wKgZYsoIdv3zk9dfMD+aZQS5YbuuPrew1Mo2l/79rMx67orjkoPbuaQ/c39bgjl4iuivTSvzpMy319foYn9ijaQlJrdmxnaFRl56OHcupMsqqPXv2q9hOuQ7V7L7u+LuMMw6NXdpO4Vqiw4oWevSSUYCxVV5K6T+EM39w0WI0ccP4X/JtGVOsiStaf+wq+R1Re+gmM+l3Dw89af3k8815B90LufOmh3A9vzDx2g+l7n03rhJKIe19MI4BAgEDhK+UBK0e6KClh28p1kR4miSOAgF9gxBBP2Kar/rcX2XqnwlnvvaX2Bdc0umO2bp0N9Uev8a/VpFkvwrkHHRr2za2rKvgVqz/Jaa/mW2eNn2EfNuiTHY6fkY8htaOi43Rp1S4dzfeX5UMUDXhw4Vf9zwGcQwhlIgqHUDLmJLJbT2cyO2HleTzzE/KlbMULPZ8JKcHaV92c5LMvWu5fcRN4X11gy7BPr/zJQYlEVOsiSrYJRx1deakZ8xnHp/S3Yo398pu2mqFqIJZFy423F9vuFhDKs3q+vfj3mX/f2OC0SnAOJJREnNSYQACBAIHkBClJCdvUyUGAF4sQQCB0gV7d/Elue5cjf2X20LOW+7lW7+7GA79uKHzFxZ/Ktu/5VLyLTxhmXnm74fSlqydsl56bXUMdpbjfaTlheKrUC1o99RLsgnyi7q3yc0OdisIh1Awavk7wF7nC2nB3FEpqZSteKHtxJ5KQEqx91c0hjJ6QvyGiOXrnsK1rEHA3lHt63Ub3N2P0ROt7X/LcH4mo1kWUrOdgKvtSg/Lq0dUceZj+PsmQOnaaPtdS177qW9LJo5pT6qv7hpqzKDcRSiK+NPmKAAJugeQEKUkJ2z7w9g7nxmIaAQQqFNC7EMd+OhU8jpmT1IJF+SuD3MxtzZOc5cbs+Z4VzjklVWHMlk+iYEod0w870NRbbbklyoO6SNFbT+5HbVp0yhFFOiPJbaJxosdl39r/5KP3+LdPRvX/KBzCzetuPTzp6bHnmg12106lYufsyoXdUXqSqPJLuBWvyp2XXz0hJVj7qiuadRtt5+eWk1KHFnpxtKzaly9tdPeA/8RE+3tf8mwUUa2LKFlP1iv7UvvyUjg94qDUwQNSJ1y41X1RpMgtIGzzHU0oifjS5CsCrVzA/XuMl6L8ubs2+VNHVbXZEXtBoKUK3PRA5gc3ZL53XWOFg9e7r8lkoo6/3c2TdFk/5y3Pr3Kgd9AhH2OFO9VWvk7/n9/We6T7xTYNG3XowJIhxyEDPWctXdBU0oeBjsXyPHLwZb/k1+gcSu6y+gW79fRz+a7UC5PUmBCFM5s2J9yK17Q8BGyVnBKscdXNmTw9zVZDO+ejwRKOPNjzC3IW+SbUa5F7jh74vOW90RNRrYsoWfexVDgdUXmpy9zgmyYd2hmf+4wH/92l/l9rKIlU6MBqCCCQnCDFc2qIsWD0sor/tBRjbtg1AnUloB/PVXdkbnkwG5fobbHzrm5cVq7VsR5z/eVxTxyj8YI6tc9f/SsM2/SRR2Gz96t72bsf+AcGCPg5H/8Zz0tx6t9vw4f2jNfzW+h6MWAgLOVzQN98PtUn3jV3eQ7EnbHc9Pz37LMua/zpLZkmRG7RORTms8lz9Lhy793yJkrnurszGqqr1Gf5GtsXtJdaM3h+FBUveI9NWJqcEqxx1c1Z+fqQ1PCMhUPYF1U9cbj/V+hLKqJaF1GyRY8xeGYU5bV6vX3WzxuvvN0VSRfLhO8u2D67e37doSRSbLfMQwCBIgK6OnG/UV9kjRrOSk7Ylu0OoYYHzq4QaCECunRWQOIeHldde594YeP9Y61SA0ROnm2prxHf0i8c7TkbqKVl31091wrOSNmFcH8bVSZwcm/SuaN5xJB8ylPn2OOmex4IBLSQVDqplPGzcz1Z/dcL1n1PlczArPn2uVdmD/bx8dZPbso4r9W5sxQwHZ1DwE6rXSSTC77oMVm6yrjkpsb1m4qcVBUkf+uqjO7WN/MTUcVrZq4KN09OCda46opCvZ9Nme2pA4W9yReK5ebs2t0c3D//O9VMtZN0rxxRrYsoWXfOK5wOvbx0w/6rP2vUOJP3jrEuuSmzaXPxjOhkNWmW54Q2uF++IEJJpPiOmYsAAsUEFJ68v6zYgjjmJeXdNh27+lDy3VKKA4R9IlBnAr7Gjbnca1DsX9yWueaujF5iOWAfU51AdOlo6FJejW1enGtP3d4Fv3Oonz3E/OrnPNf9WrTfnvpVOqsYd46yFG4NP9Czmu77/uEhS+N3q2GP+yrk9XfsDjta6lakaIeQCszGz/jkfrPih8v/nL/3vGevbN/W+b0Wmzp8cOrIg6z/vJK/iFQKY6daF389vd+epvNqn54B6vLoH09ZTudso/5j9e9jfPd0T88KxfbgmRedg2c3zfty2pGp39+fcbe/HzvVnjW/8aIz07rm07M43b9XZ4DPTLNUjuptom0bo5m9C0ZX8ZonUWTr5JRgjavuU1Ns930K/TSOPsTz+y2C5Zp10uGpmfPyv039G63ftbuxdES1LqJkXUdW6WSI5aW+Is++vFEn4dxHd5E0VKbORaeM8DRzWLjEVtMJ98AA6lbX6cMzlEQqPXjWQwCBbQI69SVHIkFhm7oW+NxnkiNDThCoG4GLzkjr9ZU/PeK5Qavcq5ncP8db/xxf5kB6dDWu/0GRSEYXbWMm5y/adN3/jSsywwZZugevzkvUdbWCwBdm2Iq7uncxrjg/rTfrnD3d+lA2M3qR5tUHilwmagiBtm3yw8G5m/P53nxzEvRNXHpueuKsRnejRz1jnDSrUTfI9ZCw/Y7G4hW2uxvM3OaKXr52QpH8+BL3fY3Owbej5nxV/+DnnZbWBZ87EV0j/uzW7BwN1eB+wUkOhw82NZ6ve+UmTEdU8ZqQk+BNElWCtay6T0zyFPHwA82O7YOpPEvVTvKaOz0DAirBgXvlzxUR1bqIkvUcW8VfwiovnSR7dDGXrspf/y1Zkb25dvUdRt/eZu8ehs5muu2iCyE9x3Z/NOK28zWURJzUmEAAgUoEatDzWSXZyK1T9RVM5UlXu2aIr8hXu2vWR6DeBX7ytfTl56V9g2VXclCKcG78YVodPBaurHfMRg7zz58yx77tUetXf8vo1bixU7Ixmz7fOT191MGpyoe91rXjkQf7U85l4JQRFZ2U+vcxr/1+unCQAF366MaYhpkqjNl0YXT7z9M7dSi+38LDd+ZE5+DsIpSJM0emDjug+NG5Yzbt66ffSKXzl4LN2nkUFa9ZGSq2caJKsGZVV28wTp/riQBGDqvox+UQFraTfNIbB2rNiGpdRMk6h1b5RFjlpTeH77wiXThwth56q7sX9cykIdHVwZIvZjv/8ynVXie3oSTipMYEAghUIpCo8CR/Oqgk65Gu88a7hgYt4YMAAk0T+MbJqTE3N+gpSoWb68GUGkaO+2ODr92je/NfXpB29//hXuRMa7/nnJxS+KeVK913iS7+++1h6iLJSTl44otHp277WVq3nyv5nH5M6snft9nT+7ZeJRvm1onOofI8lF1TTeD+8vMG93uDhZsIV+H9sUPDPPNHUfEKc97MOYkqwdpU3TGTPDGA7nEcN7TSH5ejrQeVzrQm1HjP18FsRLUuomTdx1L5dFjl1aWT+fC1DXoNtfB+U2Fm1Iz5W6elLj7bf38llEQKd8ccBBAoKqDAROFJcj4JaiSp8Xbnvm0fPKDqf1eSo0lOEIhXQJ2w3f1/DeokUGPj6r74ijXFs9OxnTH0APOSr6f7lYuR1BjyXzc2qMOP392X0ftyvk/f3sb5p6W/evwnF3Zq37hLN/OWBzO6ebxyrW9d/9ejD03t2DajfiDdH73m4f5adlqJjPtT6vbHM48+Z7lf63I27NTe0MjditkCRhRwVg6YiM4hYKdNWKTg+a4rGh4ZZ/3xEc/rMbmk9t/bvOjM1DGHei7Em7CXwk1Cr3iFu2jmnKSVYA2qrq+F5ND9zeCh/IoKF7aT1Lll0L6eWCKiWhdRskUPs+zMsMpLg6pdcnZaL/feN1atFazV64vsWUHdl49Lff8rqV7dip8PQ0mkyI6ZhQACBQIKTBSeFMyObYbZt/+Q2HZesOPLvpU+95TwLykK9sMMBFq+gJoLvr7Q1qsUy1cbGg9APRPs2cvUSxR79TZ0CVvt8asxpMYMeGexvWBxdgC03t3NvXc3FQv5+wivNt3w1n/tnWzbSI3hpv42unYyenU31cRrSD9TlzghfpLv4Bzs3AW2+qxT0eulxD67mP33NDV8sLM0uolwK17o+UxgCdam6oYuWTTBiGpdRMkWPYSyM8MqLzVdnjnPXrTcXrHaXrVOp2VDzQF0ilYHJBUO0qCshpJI2UNmBQRarcBdo62rvS+Nx0uRrLDt1BHm736coAeA8ZYNe0cAAQQQQAABBBBAAIFYBH7028ZRExL0tC1Zj7Z056nsMMGxFBs7RQABBBBAAAEEEEAAgVYioJBEgUmiDjZZYZvGs5vxerKAElVaZAYBBBBAAAEEEEAAAQSiFlBIkpyBtnMHm6ywTXnydVgcdZGQPgIIIIAAAggggAACCCDgFkhgSJK4sG3aq3o3lwdu7mrDNAIIIIAAAggggAACCNRIQMGIQpIa7azi3SQubNNg5JNmJY6pYk9WRAABBBBAAAEEEEAAgToWUDCikCRpB5C4sE1AhG1JqyXkBwEEEEAAAQQQQACBViKQzGAkiWHbxJnWGwsTF+C2kmrKYSKAAAIIIIAAAggg0GoFFIYoGEng4ScxbFu22hg/I4lYCSw/soQAAggggAACCCCAAAJhCSgMUTCSwE8SwzYxPT/DXruBB24JrDBkCQEEEEAAAQQQQACBlimgAERhSDKPLaFhm4ZKGPdiQsmSWZDkCgEEEEAAAQQQQAABBJojoAAksYNIJzRsE/cz06wMLSWbU+/YFgEEEEAAAQQQQAABBCoTUOihAKSydWNYK7lh27PT7bFTkgsXQ1mxSwQQQAABBBBAAAEEEIhGQKGHApBo0g4h1eSGbTq4MZMti8AthFImCQQQQAABBBBAAAEEECgpoKBDoUfJxQlYkPCwzX5iUqL5ElCCZAEBBBBAAAEEEEAAAQSaJaCgY8zk5D5q07ElOmxT/kZPsDZublYZsDECCCCAAAIIIIAAAgggUEpA4YaCjlJLEzI/6WGbunP51wtJR0xIWZINBBBAAAEEEEAAAQQQqFZA4UbyO7FPetgm9H+Ot95ZkuhHltXWDNZHAAEEEEAAAQQQQACBJAgo0FC4kYScBOehDsK2V960H3uuDiiDoVmKAAIIIIAAAggggAACSRNQoKFwI2m5KsxPHYRtyvQjz1njZxC5FRYfcxBAAAEEEEAAAQQQQKCJAgoxFGg0cePablYfYduKNcaDz1ir19dBHFzb4mNvCCCAAAIIIIAAAggg0BQBBRcKMRRo1MWnPsI2UT4zzX5gbH2EwnVR8GQSAQQQQAABBBBAAIHWLKDgQiFGvQjUTdgm0PvGqo8XIrd6qVrkEwEEEEAAAQQQQACBhAoorFBwkdDMFctWPYVtS1cZ946xFtKrZLGCZB4CCCCAAAIIIIAAAghUIqCAQmGFgos6+tRT2CbWCa/Yf3/SsuvmYWYd1QSyigACCCCAAAIIIIBAyxdQKKGAQmFFfR1quku3XvWV41nz7U7tzYP2M+sr2+QWAQQQQAABBBBAAAEEYhe4c5R160P11DwyJ1Z/YZvyPf99u1c3s18fIrfYqz0ZQAABBBBAAAEEEECgbgSenGTd/GBm4+a6ybCT0boM2wS9ZIWxV29zt55Ebk5RMoEAAggggAACCCCAAAIlBabPtW950FqwqOQKSV5Ql2GbQJetNlats/fb0+zehcgtyRWMvCGAAAIIIIAAAgggEL/Am+8qZstMe7XOXmlz4Oo1bNMBLPzA2LDJOGBvc6eORG5OgTKBAAIIIIAAAggggAACHoFFy7LP2Z6eWq8xmw6mjsM25X7ee/amj4wD+5kd2hG5eaomXxBAAAEEEEAAAQQQQEACy9fYNz9oPT6+/rohcRdffYdtOpLX3rY3f2QM2tdsvyORm7tkmUYAAQQQQAABBBBAoLULrFybfc724DP1HbOpFOs+bNMxzFlgf/iRsf8+PHNr7T9Ljh8BBBBAAAEEEEAAAUdAz9kUs903tu5jNh1RSwjbdBiK3PSe2359zZ068MzNqahMIIAAAggggAACCCDQSgUWLc/GbA/U/3O2XPm1kLBNBzP3bVt9S2pUAPqWbKU/TQ4bAQQQQAABBBBAAIFtArl+Ix8fX8d9kPhKsuWEbTqwee9pPLfsSNyM5+YrZr4igAACCCCAAAIIINBKBLaNz5ap634jC0uqRYVtOjyNCjD/fbtTe6NfH1pLFhY3cxBAAAEEEEAAAQQQaMkCT06y1G9k/Y7PVqpsWlrYpuPUSNwz5+l5qDm4n2kSu5UqeeYjgAACCCCAAAIIINCCBCzLuHOUdctDmQWLWtBRbT+UFhi26dA2fmhMmGmv22T03dXs0onQbXtp838EEEAAAQQQQAABBFqiwLsf2Lc8ZN36kKVAoEV+WmbYliuqWfPtd5ZkG0zuvRuRW4usvRwUAggggAACCCCAAALGuBezDSNH/afldEBSWKgtOWzT0b631HjpNfujj4199jDbtSV4K6wAzEEAAQQQQAABBBBAoF4FVq+37/y3pY7+X3u7Xg+hwny38LBNChs3G1Pm2Hps2qGd0bc3kVuFFYPVEEAAAQQQQAABBBBItMD4GdmA7d6nbF3wt/hPyw/bckW4YLExeba9bqPRuwdvu7X4Ws0BIoAAAggggAACCLRkgYUf2Hf8K9swcs6ClnyY7mNrLWGbjvnDj4yXXrfnvGVvbTT22c3coY3bgWkEEEAAAQQQQAABBBBIusCmzcbD47IP2UZNsHV533o+Zt/+Q1rP0TpHesynzVNHpE45IsUIAY4JEwgggAACCCCAAAIIJFbAto3RExWtWc+92JK7Hinl30rDthzHicPNE4enThiWSqVK+TAfAQQQQAABBBBAAAEE4hTQgGxPTbHGTNZfawzYcvStOmzLERw31PzcZ1L6b+eOdFgS5w+SfSOAAAIIIIAAAggg4BZYt9F+drr9zDRL/3XPb4XThG2fFPohA82jDzE/e0hqQF+Ct1b4Q+CQEUAAAQQQQAABBBIk8MZCWx1FPj/DnvF6aw/YcqVC2OapnT27GiMOSh0xxBw2yOzehfjNg8MXBBBAAAEEEEAAAQQiFVi51tbYXRNn2hNesZaviXRXdZY4YVvxAuvfxxy6f/bv0E+ZPbsSvxVXYi4CCCCAAAIIIIAAAs0XWL7Gfuk1e/rc7N+893i8VkSUsK0IinvW7j2Ng/YzB/dPDdrXHLQPwwa4bZhGAAEEEEAAAQQQQKCJAlu2GnMWZEfnmjXPeuVNe9HyJqbTSjYjbKuioPfZ3RzY1+i/p9lvD1PTfXc16YKyCj5WRQABBBBAAAEEEGjFAuoQUsNkL1hkz3/fnveu/fpCQ9Ot2KO6Qydsq87LvXafXsbuPc3depi9uhtqSNmjq9G1k9mlk9GhXfZvhzZmW0b0dnsxjQACCCCAAAIIINByBRSB6QHalq22RsTW39oNxpoN9oo1hhpALl1pLF6h52n2e0tb7vFHfGQNEaffkpNXtXtvqeonNwlacilzbAgggAACCCCAAAIIxC7AONOxFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDY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\"\n />\n </defs>\n </svg>\n );\n}\n","import { IconLoader } from \"../icons\";\n\ninterface IBaseButtonProps {\n label: string;\n type?: string;\n size?: string;\n paddingClassX?: string;\n disabled?: boolean;\n loading?: boolean;\n customClass?: string;\n onClick?: () => void;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n caller?: \"buzapay\" | \"miden\";\n}\n\n/** === Angular getters ported to React === */\nfunction getButtonBgClass(\n type: string,\n disabled?: boolean,\n caller?: \"buzapay\" | \"miden\"\n) {\n if (disabled)\n return \"bg-gray-200 text-gray-400 cursor-not-allowed border-gray-200\";\n switch (type) {\n case \"primary\":\n return `${\n caller === \"buzapay\" ? \"bg-primary\" : \"bg-primary-miden\"\n } text-white hover:bg-primary-black hover:border-primary-black border-primary`;\n case \"secondary\":\n return \"bg-gray-200 border-gray-200 hover:bg-gray-300 text-heading-text\";\n case \"danger\":\n return \"bg-red-500 border-red-500 text-white hover:bg-red-600\";\n case \"neutral\":\n default:\n return \"bg-off-white border-grey-border hover:bg-gray-100\";\n }\n}\n\nfunction getButtonSizeClass(size?: string, caller?: \"buzapay\" | \"miden\") {\n switch (size) {\n case \"de\":\n return `${\n caller === \"buzapay\" ? \"h-68px rounded-xl\" : \"h-42px rounded-md\"\n }`;\n case \"md\":\n return \"h-42px rounded-lg\";\n case \"sm\":\n return \"h-32px rounded-md\";\n default:\n return \"h-68px rounded-xl\";\n }\n}\n\nfunction getLabelSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n case \"md\":\n case \"sm\":\n return \"text-body-2xs font-normal\";\n default:\n return \"text-body-xs font-normal\";\n }\n}\n\nexport function BaseButton({\n label,\n type = \"neutral\",\n size = \"de\",\n paddingClassX = \"px-8\",\n disabled = false,\n loading = false,\n customClass,\n onClick,\n prefix,\n suffix,\n children,\n caller = \"buzapay\",\n}: React.PropsWithChildren<IBaseButtonProps>) {\n const isDisabled = disabled || loading;\n\n // Angular’s clickHandler -> emit only when not disabled\n const handleClick = () => {\n if (!isDisabled) onClick?.();\n };\n\n return (\n <button\n className={`flex items-center justify-center gap-2 py-3 border font-normal text-input-grey transition-colors duration-300 ease-in-out ${getButtonBgClass(\n type,\n isDisabled,\n caller\n )} ${getButtonSizeClass(size, caller)} ${paddingClassX} ${customClass}`}\n type=\"button\"\n disabled={isDisabled}\n onClick={handleClick}\n >\n {prefix}\n\n {loading ? (\n <IconLoader></IconLoader>\n ) : (\n <div>\n {label ? (\n <p className={`mb-0 ${getLabelSizeClass(size)}`}>{label}</p>\n ) : (\n <>{children}</>\n )}\n </div>\n )}\n\n {suffix}\n </button>\n );\n}\n","import { IconChevronLeft } from \"../icons\";\n\ninterface IBaseBackProps {\n back: () => void;\n}\n\nexport function BaseBack({ back }: IBaseBackProps) {\n return (\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={back}>\n <IconChevronLeft></IconChevronLeft>\n <p className=\"mb-0 text-body-xs font-normal\">Back</p>\n </div>\n );\n}\n","import { IconBuzapayIcon, IconLock } from \"../icons\";\nimport { BaseBack } from \"./back\";\n\ninterface IBaseCardProps {\n showBackButton?: boolean;\n onBack?: () => void;\n children?: React.ReactNode;\n onClose?: () => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport function BaseCard({\n showBackButton = false,\n onBack,\n children,\n onClose,\n caller = \"buzapay\",\n}: IBaseCardProps) {\n return caller === \"buzapay\" ? (\n <div className=\"checkout-card-miden w-full h-screen flex flex-col items-center justify-center text-white\">\n <div className=\"flex w-[95%] sm:w-[85%] md:w-[70%] lg:w-[60%] xl:w-1/2\">\n {showBackButton && <BaseBack back={() => onBack?.()} />}\n\n <div className=\"flex gap-2 w-full\">\n <div className=\"flex flex-col gap-8 w-full\">\n <div className=\"bg-off-white rounded-xl\">{children}</div>\n\n <div className=\"flex items-center gap-2 justify-center\">\n <p className=\"text-light-white-100 text-body-2xs font-regular\">\n Powered by Buzapay\n </p>\n <IconBuzapayIcon color=\"#E8F4FF\" />\n </div>\n </div>\n\n {/* Close Icon */}\n <div\n onClick={onClose}\n className=\"hidden sm:flex close-icon flex-col items-center justify-center self-start cursor-pointer hover:bg-gray-500\"\n >\n <p className=\"text-white\">x</p>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"checkout-card-miden w-full h-screen flex flex-col items-center justify-center text-white\">\n <div className=\"flex w-[95%] sm:w-[85%] md:w-[70%] lg:w-[60%] xl:w-1/2\">\n {showBackButton && <BaseBack back={() => onBack?.()} />}\n\n <div className=\"flex gap-2 w-full\">\n <div className=\"flex flex-col gap-8 w-full\">\n <div className=\"bg-white rounded-xl\">{children}</div>\n\n <div className=\"flex items-center gap-4 justify-center\">\n <IconLock color=\"#E8F4FF\" />\n <p className=\"text-light-white-100 text-body-2xs font-regular\">\n Secured by <span className=\"font-semibold\">Miden</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { IconCards, IconCoin, IconCourthouse } from \"../icons\";\n\ninterface IBaseRadioGroupProps {\n options: { label: string; value: string }[];\n type?: \"vertical\" | \"horizontal\";\n value?: string;\n defaultValue?: string;\n selectedChange?: (value: string) => void;\n className?: string;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const BaseRadioGroup = ({\n options,\n type = \"vertical\",\n value,\n defaultValue,\n selectedChange,\n className = \"\",\n caller = \"buzapay\",\n}: IBaseRadioGroupProps) => {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(\"\");\n\n useEffect(() => {\n if (isControlled) return;\n const initial =\n defaultValue ?? (options.length > 0 ? options[0].value : \"\");\n setInternal(initial);\n selectedChange?.(initial);\n }, [isControlled, defaultValue, options]);\n\n const selected = isControlled ? value! : internal;\n\n const setSelected = (v: string) => {\n if (!isControlled) setInternal(v);\n selectedChange?.(v);\n };\n\n const containerLayout =\n type === \"horizontal\" ? \"flex-row gap-5\" : \"flex-col gap-6\";\n\n return caller === \"buzapay\" ? (\n <div\n className={`flex ${containerLayout} ${className}`}\n role=\"radiogroup\"\n aria-orientation={type === \"horizontal\" ? \"horizontal\" : \"vertical\"}\n tabIndex={0}\n >\n {options.map((option) => {\n const isActive = selected === option.value;\n return (\n <div\n key={option.value}\n role=\"radio\"\n aria-checked={isActive}\n tabIndex={-1}\n onClick={() => setSelected(option.value)}\n className=\"flex items-center gap-2 cursor-pointer transition-colors duration-200\"\n >\n <div\n className={[\n \"w-4 h-4 rounded-full border flex items-center justify-center\",\n isActive\n ? \"bg-orange-500 border-orange-500\"\n : \"bg-white border-grey-200\",\n ].join(\" \")}\n >\n {isActive && <div className=\"bg-white w-2 h-2 rounded-full\" />}\n </div>\n <p className=\"mb-0 text-body-2xs font-medium text-heading-text\">\n {option.label}\n </p>\n </div>\n );\n })}\n </div>\n ) : (\n <div\n className={`flex ${containerLayout} ${className}`}\n role=\"radiogroup\"\n aria-orientation={type === \"horizontal\" ? \"horizontal\" : \"vertical\"}\n tabIndex={0}\n >\n {options.map((option) => {\n const isActive = selected === option.value;\n return (\n <div\n key={option.value}\n role=\"radio\"\n aria-checked={isActive}\n tabIndex={-1}\n onClick={() => setSelected(option.value)}\n className={[\n \"flex items-center gap-4 cursor-pointer transition-colors duration-200 px-6 py-2 my-1\",\n selected === option.value ? \"border-r-4 border-white\" : \"\",\n ].join(\" \")}\n >\n {option.value === \"CARD\" && (\n <IconCards\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n {option.value === \"BANK_TRANSFER\" && (\n <IconCourthouse\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n {option.value === \"STABLE_COIN\" && (\n <IconCoin\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n\n <p\n className={[\n \"mb-0 text-body-2xs font-medium\",\n selected === option.value ? \"text-white\" : \"text-[#8FAECA]\",\n ].join(\" \")}\n >\n {option.label}\n </p>\n </div>\n );\n })}\n </div>\n );\n};\n","interface IBaseImageProps {\n src: string;\n height?: number | string;\n width?: number | string;\n alt?: string;\n customClass?: string;\n isFullWidth?: boolean;\n onClick?: () => void;\n}\n\nexport function BaseImage({\n src,\n height = 50,\n width = 50,\n alt = \"Image\",\n customClass,\n isFullWidth,\n onClick,\n}: IBaseImageProps) {\n return (\n <img\n src={src}\n height={height}\n alt={alt}\n className={`${customClass} ${isFullWidth ? \"w-full\" : \"\"}`}\n style={{ width: isFullWidth ? \"100%\" : `${width}px` }}\n onClick={onClick}\n />\n );\n}\n","import { IconCopySuccess } from \"../icons\";\n\ninterface IBaseCopyProps {\n copyText: string;\n color?: string;\n}\n\nexport function BaseCopy({ copyText, color }: IBaseCopyProps) {\n const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n };\n\n const copyHandler = () => {\n copyToClipboard(copyText)\n .then(() => {})\n .catch((err: any) => {});\n };\n\n return (\n <IconCopySuccess\n className=\"cursor-pointer\"\n color={color}\n onClick={() => copyHandler()}\n />\n );\n}\n","import { BaseImage } from \".\";\nimport { truncateString } from \"../../utils\";\nimport { BaseCopy } from \"./copy\";\n\ninterface IBaseLabelInfoProps {\n type?: \"vertical\" | \"horizontal\";\n label?: string;\n labelCustomClass?: string;\n valueImageSrc?: string;\n valueImageCustomClass?: string;\n valueImagePosition?: \"prefix\" | \"suffix\";\n hasValueCopy?: boolean;\n value?: string;\n valueCustomClass?: string;\n alignRight?: boolean;\n}\n\nexport const BaseLabelInfo = ({\n type = \"vertical\",\n label = \"\",\n labelCustomClass = \"text-body-4xs font-medium text-light-copy\",\n valueImageSrc = \"\",\n valueImageCustomClass = \"\",\n valueImagePosition = \"prefix\",\n hasValueCopy = false,\n value = \"\",\n valueCustomClass = \"text-body-2xs font-medium text-sub-copy max-w-[18rem] truncate\",\n alignRight = false,\n}: IBaseLabelInfoProps) => {\n const showPrefixImg = valueImageSrc && valueImagePosition === \"prefix\";\n const showSuffixImg = valueImageSrc && valueImagePosition === \"suffix\";\n\n if (type === \"vertical\") {\n return (\n <div\n className={`flex flex-col gap-1 ${\n alignRight ? \"text-right items-end\" : \"\"\n }`}\n >\n <p className={labelCustomClass}>{label.toUpperCase()}</p>\n\n <div className=\"flex items-center gap-1\">\n {showPrefixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n\n {!hasValueCopy ? (\n <p className={valueCustomClass}>{value}</p>\n ) : (\n <p className={`${valueCustomClass} truncate`}>\n {truncateString(value, 40)}\n </p>\n )}\n\n {hasValueCopy && <BaseCopy copyText={value} color=\"#9DBFDE\" />}\n\n {showSuffixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n </div>\n </div>\n );\n }\n\n // horizontal\n return (\n <div className=\"flex items-center justify-between\">\n <p className={labelCustomClass}>{label.toUpperCase()}</p>\n\n <div className=\"flex items-center gap-1\">\n {showPrefixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n\n <p className={valueCustomClass}>{value}</p>\n\n {hasValueCopy && <BaseCopy copyText={value} color=\"#9DBFDE\" />}\n\n {showSuffixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n </div>\n </div>\n );\n};\n","import { BaseButton, BaseLabelInfo } from \".\";\nimport { ISuccessObject } from \"../../types\";\nimport { formatAmount } from \"../../utils\";\nimport { IconCheckCircle } from \"../icons\";\n\ninterface IBaseSuccessProps {\n amount: number;\n currency: string;\n redirectUrl: string;\n successObject: ISuccessObject;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const BaseSuccess = ({\n amount,\n currency,\n redirectUrl,\n successObject = {\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n },\n caller = \"buzapay\",\n}: IBaseSuccessProps) => {\n const formatAmountHandler = formatAmount(amount, currency);\n\n const goToRedirectUrl = () => {\n window.open(redirectUrl, \"_self\", \"noopener,noreferrer\");\n };\n\n const paymentDate = successObject.paymentDate\n ? new Date(successObject.paymentDate).toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n })\n : \"---\";\n\n return (\n <div className=\"flex flex-col gap-8 p-16\">\n <div className=\"flex flex-col gap-8\">\n <div className=\"flex flex-col gap-8\">\n <IconCheckCircle color=\"#F47A1F\" className=\"mx-auto\" />\n\n <div className=\"flex flex-col text-center\" style={{ gap: \"2px\" }}>\n <p className=\"text-heading-text font-medium text-header-2xl\">\n {formatAmountHandler}\n </p>\n <p className=\"text-sub-copy font-regular text-body-3xs\">\n Has been paid successfully\n </p>\n </div>\n </div>\n\n <div className=\"flex flex-col\">\n <div className=\"py-4 border-b border-grey-100\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Order ID\"\n value={successObject.paymentId}\n />\n </div>\n\n{successObject.paymentDate}\n <div className=\"py-4\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Payment date\"\n value={paymentDate}\n />\n </div>\n </div>\n </div>\n\n <div className=\"mx-auto\" style={{ width: \"80%\" }}>\n <BaseButton\n label=\"Return to Merchant Website\"\n type=\"secondary\"\n caller={caller}\n customClass=\"w-full\"\n onClick={goToRedirectUrl}\n />\n </div>\n </div>\n );\n};\n","interface IBaseHintProps {\n hint: string;\n}\n\nexport function BaseHint({ hint }: IBaseHintProps) {\n return (\n <p className=\"mb-0 text-body-3xs font-medium text-orange-500\">{hint}</p>\n );\n}\n","import React from \"react\";\nimport { IconChevronDown, IconChevronUp } from \"../icons\";\nimport { BaseHint } from \"./hint\";\nimport { BaseInputError } from \"./input-error\";\nimport { BaseImage } from \"./image\";\n\ntype ImageType = \"country\" | \"bank\" | null;\n\nexport interface SelectOption {\n label: string;\n value: string;\n countryCode?: string; // e.g. \"NG\"\n bankCode?: string;\n}\n\ninterface IBaseSelectProps {\n options: SelectOption[];\n value?: string; // controlled value\n defaultValue?: string; // uncontrolled initial value\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n placeholder?: string; // \"Select an option\" by default\n hasSearch?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n showBottomText?: boolean;\n label?: string;\n hint?: string;\n required?: boolean;\n itemImageType?: ImageType;\n\n prefix?: React.ReactNode; // slot before text in trigger\n\n className?: string;\n}\n\nexport const BaseSelect = ({\n options,\n value,\n defaultValue,\n onChange,\n onBlur,\n placeholder = \"Select an option\",\n hasSearch = true,\n disabled = false,\n loading = false,\n validationError = \"\",\n showBottomText = true,\n label = \"\",\n hint = \"\",\n required = false,\n itemImageType = null,\n prefix,\n className = \"\",\n}: IBaseSelectProps) => {\n const isControlled = value !== undefined;\n const [open, setOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue ?? value ?? \"\",\n );\n const [filtered, setFiltered] = React.useState<SelectOption[]>(options);\n const [activeIndex, setActiveIndex] = React.useState<number>(-1);\n\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n\n // Keep internal state in sync for controlled usage\n React.useEffect(() => {\n if (isControlled) setInternalValue(value ?? \"\");\n }, [isControlled, value]);\n\n // Reset filtered list whenever options change\n React.useEffect(() => {\n setFiltered(options);\n }, [options]);\n\n const selected = React.useMemo(\n () =>\n options.find((o) => o.value === (isControlled ? value : internalValue)) ||\n null,\n [options, value, internalValue, isControlled],\n );\n\n const displayText =\n selected?.label ||\n placeholder ||\n (label ? `Select ${label}` : \"Select an option\");\n\n // Open/close helpers\n const openMenu = React.useCallback(() => {\n if (disabled || open) return;\n setFiltered(options);\n // set active index to current selection or first\n const idx = selected\n ? Math.max(\n 0,\n options.findIndex((o) => o.value === selected.value),\n )\n : 0;\n setActiveIndex(idx);\n setOpen(true);\n // focus search if enabled\n setTimeout(() => {\n if (hasSearch && searchRef.current) {\n searchRef.current.focus();\n searchRef.current.select();\n }\n });\n }, [disabled, open, options, selected, hasSearch]);\n\n const closeMenu = React.useCallback(() => {\n if (!open) return;\n setOpen(false);\n setActiveIndex(-1);\n }, [open]);\n\n const toggleMenu = React.useCallback(() => {\n if (disabled) return;\n open ? closeMenu() : openMenu();\n }, [open, disabled, openMenu, closeMenu]);\n\n // Outside click\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const t = e.target as Node;\n const tri = triggerRef.current;\n const menu = menuRef.current;\n if (tri && !tri.contains(t) && menu && !menu.contains(t)) closeMenu();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, closeMenu]);\n\n // Selection\n const commit = (val: string) => {\n if (!isControlled) setInternalValue(val);\n onChange?.(val);\n onBlur?.(val);\n closeMenu();\n };\n\n // Search\n const onSearchInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n const q = e.target.value.toLowerCase();\n const list = options.filter((o) => o.label.toLowerCase().includes(q));\n setFiltered(list);\n setActiveIndex(list.length ? 0 : -1);\n };\n\n // Keyboard on trigger\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"Spacebar\":\n case \"ArrowDown\":\n e.preventDefault();\n if (!open) openMenu();\n else moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open) openMenu();\n else moveActive(-1);\n break;\n case \"Escape\":\n if (open) {\n e.preventDefault();\n closeMenu();\n }\n break;\n }\n };\n\n // Keyboard in menu\n const onMenuKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n setActiveIndex(filtered.length ? 0 : -1);\n scrollActiveIntoView(0);\n break;\n case \"End\":\n e.preventDefault();\n setActiveIndex(filtered.length - 1);\n scrollActiveIntoView(filtered.length - 1);\n break;\n case \"Enter\":\n e.preventDefault();\n if (activeIndex >= 0) {\n const opt = filtered[activeIndex];\n if (opt) commit(opt.value);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n closeMenu();\n break;\n case \"Tab\":\n closeMenu();\n break;\n }\n };\n\n const moveActive = (delta: number) => {\n if (!filtered.length) return;\n const max = filtered.length - 1;\n const next =\n activeIndex < 0 ? 0 : Math.min(max, Math.max(0, activeIndex + delta));\n setActiveIndex(next);\n scrollActiveIntoView(next);\n };\n\n const scrollActiveIntoView = (index: number) => {\n const menu = menuRef.current;\n if (!menu) return;\n const items = menu.querySelectorAll<HTMLElement>(\"[data-option]\");\n if (index >= 0 && index < items.length) {\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n };\n\n // UI helpers\n const containerBg = disabled ? \"bg-grey-100 cursor-not-allowed\" : \"bg-white\";\n const containerBorder = validationError\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100 bg-white\";\n\n return (\n <div className={`flex flex-col gap-2 relative ${className}`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n {/* Trigger */}\n <div\n ref={triggerRef}\n className={`border-c rounded-md flex items-center justify-between h-12 cursor-pointer px-3 py-2 ${containerBg} ${containerBorder}`}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? \"select-menu\" : undefined}\n aria-disabled={disabled || undefined}\n aria-activedescendant={\n open && activeIndex >= 0 ? `option-${activeIndex}` : undefined\n }\n tabIndex={0}\n onClick={toggleMenu}\n onKeyDown={onTriggerKeyDown}\n >\n <div className=\"flex items-center gap-2\">\n {prefix}\n\n <div className=\"flex items-center gap-2\">\n {selected &&\n itemImageType === \"country\" &&\n selected.countryCode && (\n <BaseImage\n src={`https://flagcdn.com/w40/${selected.countryCode.toLowerCase()}.png`}\n alt={selected.countryCode}\n width={28}\n customClass=\"rounded-lg\"\n />\n )}\n\n {/* Bank logos could be handled similarly here */}\n\n <p\n className={`text-body-2xs font-normal mb-0 ${\n selected?.label ? \"text-sub-copy\" : \"text-grey-500\"\n }`}\n >\n {displayText}\n </p>\n </div>\n </div>\n\n {loading ? (\n // Loader (replace with your own IconLoader if you have one)\n <span className=\"inline-block h-4 w-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n ) : open ? (\n <IconChevronUp color=\"#8FAECA\" />\n ) : (\n <IconChevronDown color=\"#8FAECA\" />\n )}\n </div>\n\n {/* Menu */}\n {open && (\n <div\n ref={menuRef}\n id=\"select-menu\"\n className=\"border-c bg-white rounded-md border-grey-border text-body-xs font-normal text-input-grey w-full mt-2 max-h-22rem overflow-y-auto\"\n role=\"listbox\"\n aria-label={label || \"Options\"}\n style={{ position: \"absolute\", top: \"100%\", zIndex: 10 }}\n onKeyDown={onMenuKeyDown}\n >\n {hasSearch && (\n <div className=\"px-4 pt-2 pb-1\">\n <input\n ref={searchRef}\n type=\"text\"\n onChange={onSearchInput}\n onBlur={onSearchInput}\n placeholder={`Search ${label || \"options\"}`}\n className=\"bg-transparent outline-none border-b pb-2 w-full focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal\"\n />\n </div>\n )}\n\n {filtered.map((opt, i) => {\n const selectedOpt = selected?.value === opt.value;\n return (\n <div\n key={opt.value}\n onClick={() => commit(opt.value)}\n id={`option-${i}`}\n data-option\n role=\"option\"\n aria-selected={selectedOpt}\n className={`px-4 py-3 first:pt-0 hover:bg-gray-100 flex items-center gap-2 cursor-pointer ${\n i === activeIndex ? \"bg-gray-100\" : \"\"\n }`}\n >\n {itemImageType === \"country\" && opt.countryCode && (\n <BaseImage\n src={`https://flagcdn.com/w40/${opt.countryCode.toLowerCase()}.png`}\n alt={opt.countryCode}\n width={28}\n customClass=\"rounded-lg\"\n />\n )}\n\n {/* If you later add bank logos:\n {itemImageType === \"bank\" && (\n <img src={bankLogoHandler(opt.bankCode || opt.value)} alt={opt.value} width={28} className=\"rounded-lg\" />\n )} */}\n\n <p className=\"mb-0 text-body-2xs font-medium\">{opt.label}</p>\n </div>\n );\n })}\n </div>\n )}\n\n {hint && showBottomText && <BaseHint hint={hint} />}\n {validationError && showBottomText && (\n <BaseInputError errorMessage={validationError} />\n )}\n </div>\n );\n};\n","import { formatAmount } from \"../../utils\";\nimport { IconUsdc, IconUsdt } from \"../icons\";\n\ninterface IBaseCurrencyAmountProps {\n currency: string;\n amount: number | string;\n textClass?: string;\n iconColorClass?: string;\n iconWidth?: number | string;\n iconHeight?: number | string;\n}\n\nexport const BaseCurrencyAmount = ({\n currency,\n amount,\n textClass = \"\",\n iconColorClass = \"\",\n iconWidth = 16,\n iconHeight = 16,\n}: IBaseCurrencyAmountProps) => {\n const cur = currency?.toUpperCase();\n\n if (cur !== \"USDT\" && cur !== \"USDC\") {\n return <p className={textClass}>{formatAmount(amount, cur)}</p>;\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n {cur === \"USDT\" && (\n <IconUsdt\n width={iconWidth}\n height={iconHeight}\n color={iconColorClass}\n />\n )}\n {cur === \"USDC\" && (\n <IconUsdc\n width={iconWidth}\n height={iconHeight}\n color={iconColorClass}\n />\n )}\n <p className={textClass}>{formatAmount(amount)}</p>\n </div>\n );\n};\n","// Updated BaseInput with a new prop: preventPaste\n\nimport React from \"react\";\nimport { formatAmount, restrictToNumericKeys } from \"../../utils\";\nimport { BaseImage } from \"./image\";\nimport { IMaskInput } from \"react-imask\";\n\ntype Rule = \"numeric\";\n\nexport interface IBaseInputProps {\n label?: string;\n type?: React.HTMLInputTypeAttribute;\n placeholder?: string;\n validationError?: string;\n showBottomText?: boolean;\n hint?: string;\n mask?: string;\n rules?: Rule[];\n isAmountInput?: boolean;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n showCopyIcon?: boolean;\n preventPaste?: boolean;\n\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n\n className?: string;\n}\n\nexport const BaseInput = ({\n label = \"\",\n type = \"text\",\n mask,\n placeholder,\n validationError = \"\",\n showBottomText = true,\n hint = \"\",\n rules = [],\n isAmountInput = false,\n required = false,\n disabled = false,\n loading = false,\n showCopyIcon = false,\n preventPaste = false,\n\n value,\n defaultValue,\n onChange,\n onBlur,\n\n prefix,\n suffix,\n\n className = \"\",\n}: IBaseInputProps) => {\n const isControlled = value !== undefined;\n const [rawValue, setRawValue] = React.useState<string>(\n defaultValue ?? value ?? \"\",\n );\n const [localHint, setLocalHint] = React.useState<string>(\"\");\n const [localError, setLocalError] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (isControlled) setRawValue(value ?? \"\");\n }, [isControlled, value]);\n\n const formattedValue = isAmountInput\n ? formatAmount(rawValue.replace(/,/g, \"\"))\n : rawValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const incoming = e.target.value.replace(/,/g, \"\");\n if (!isControlled) setRawValue(incoming);\n onChange?.(incoming);\n\n setTimeout(() => {\n const el = e.target;\n el.selectionStart = el.selectionEnd = el.value.length;\n });\n };\n\n const handleBlur = () => {\n onBlur?.(rawValue);\n };\n\n const handleKeyDown = (e: any) => {\n if (rules.includes(\"numeric\")) restrictToNumericKeys(e);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (preventPaste) {\n e.preventDefault();\n setLocalError(\"Pasting is disabled for this input\");\n }\n };\n\n const containerBg = disabled ? \"bg-grey-50 cursor-not-allowed\" : \"bg-white\";\n const containerBorder =\n validationError || localError\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100\";\n\n const copyToClipboard = (text: string): Promise<void> => {\n return navigator.clipboard.writeText(text);\n };\n\n const copyHandler = (): void => {\n copyToClipboard(rawValue)\n .then(() => {\n setLocalHint(\"Text copied to clipboard\");\n })\n .catch(() => {\n setLocalError(\"Failed to copy text to clipboard\");\n });\n };\n\n return (\n <div className={`flex flex-col gap-2 ${className}`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n <div\n className={`border-c px-3 py-2 flex items-center justify-between rounded-md h-12 ${containerBg} ${containerBorder}`}\n >\n {prefix}\n\n <IMaskInput\n type={type}\n mask={mask}\n value={formattedValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n disabled={disabled}\n placeholder={\n placeholder ?? (label ? `Enter ${label.toLowerCase()}` : undefined)\n }\n inputMode={isAmountInput ? \"decimal\" : undefined}\n className=\"search-input bg-transparent outline-none border-none focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal w-full\"\n />\n\n {!loading ? (\n <>\n {suffix}\n\n {showCopyIcon && rawValue && rawValue.trim() !== \"\" && (\n <BaseImage\n src=\"assets/images/copyIcon.svg\"\n alt=\"copy\"\n width={16}\n height={16}\n customClass=\"cursor-pointer hover:opacity-70 transition-opacity\"\n onClick={copyHandler}\n />\n )}\n </>\n ) : (\n <div className=\"animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full\" />\n )}\n </div>\n\n {(hint || localHint) && showBottomText && (\n <p className=\"text-body-3xs text-light-copy\">{localHint || hint}</p>\n )}\n\n {(validationError || localError) && showBottomText && (\n <p className=\"text-body-3xs text-red-500\">\n {localError || validationError}\n </p>\n )}\n </div>\n );\n};\n","import { useMemo } from \"react\";\n\nexport default function BaseCircularCountdown({\n value = 0,\n total = 100,\n middleText = \"\",\n size = 72,\n stroke = 6,\n color = \"#3b82f6\",\n}) {\n const radius = useMemo(() => (size - stroke) / 2, [size, stroke]);\n const circumference = useMemo(() => 2 * Math.PI * radius, [radius]);\n\n const percentLeft = useMemo(() => {\n const safeTotal = Math.max(1, total);\n const p = (value / safeTotal) * 100;\n return Math.max(0, Math.min(100, p));\n }, [value, total]);\n\n const dashOffset = useMemo(\n () => circumference * (1 - percentLeft / 100),\n [circumference, percentLeft]\n );\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"inline-block\",\n width: `${size}px`,\n height: `${size}px`,\n color,\n }}\n >\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n aria-hidden=\"true\"\n >\n {/* Background track */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={stroke}\n fill=\"none\"\n style={{ stroke: \"rgba(0, 0, 0, 0.12)\" }}\n />\n\n {/* Progress ring */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={color}\n strokeWidth={stroke}\n fill=\"none\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n style={{\n strokeLinecap: \"round\",\n transform: \"rotate(-90deg)\",\n transformOrigin: \"50% 50%\",\n transition: \"stroke-dashoffset 0.2s linear\",\n }}\n />\n </svg>\n\n <div\n className=\"text-light-copy text-body-3xs\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"grid\",\n placeItems: \"center\",\n userSelect: \"none\",\n }}\n >\n {middleText}\n </div>\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { IconLoader } from \"../components/icons\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface IBzpCheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject?: IPaymentObject;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutIframe({\n style = {\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n },\n url,\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n onError,\n}: IBzpCheckoutIframeProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n\n const [message, setMessage] = useState<string>(\"\");\n const [launchUrl, setLaunchUrl] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const launchIframe = useCallback(\n (url: string) => {\n // remove prior iframe if any\n if (iframeRef.current && iframeRef.current.parentNode) {\n iframeRef.current.parentNode.removeChild(iframeRef.current);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n if (style.width) iframe.style.width = style.width;\n if (style.height) iframe.style.height = style.height;\n if (style.border) iframe.style.border = style.border;\n if (style.borderRadius) iframe.style.borderRadius = style.borderRadius;\n if (style.overflow) iframe.style.overflow = style.overflow;\n\n containerRef.current?.appendChild(iframe);\n iframeRef.current = iframe;\n },\n [style]\n );\n\n const generatePaymentLinkHandler = async () => {\n if (url) {\n launchIframe(url);\n return;\n }\n\n if (!secretKey) {\n return setMessage(\"Secret key is required.\");\n }\n\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n return setMessage(\"Secret key is required.\");\n }\n\n setLoading(true);\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"buzapay\"\n );\n if (response?.isSuccessful) {\n setLaunchUrl(response.launchUrl ?? \"\");\n setMessage(\"Payment link created successfully\");\n if (response.launchUrl) {\n setLoading(false);\n launchIframe(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n }\n } else {\n setLoading(false);\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (!containerRef.current) return; // only run if div is mounted\n generatePaymentLinkHandler();\n }, []);\n\n return (\n <div className=\"relative\" style={style}>\n <div ref={containerRef} className=\"w-full h-full\"></div>\n {loading && (\n <div className=\"absolute inset-0 grid place-items-center bg-white/60\">\n <IconLoader></IconLoader>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BaseCard } from \"../components/base/card\";\nimport { BaseImage, BaseRadioGroup, BaseSuccess } from \"../components/base\";\nimport { PayByCard } from \"../components/pay-by-card\";\nimport { PayByTransfer } from \"../components/pay-by-transfer\";\nimport { PayByStableCoin } from \"../components/pay-by-stable-coin\";\nimport {\n IErrorObject,\n IPaymentObject,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport { formatAmount, toastConfig } from \"../utils\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\ninterface IBzpCheckoutCardProps {\n secretKey: string;\n environment: \"sandbox\" | \"prod\";\n paymentObject: IPaymentObject;\n options?: CheckoutCardOptions;\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutCard({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n },\n onPaymentAuthorized,\n onError,\n}: IBzpCheckoutCardProps) {\n const [checkoutState, setCheckoutState] = useState<\n \"SUCCESS\" | \"PENDING\" | \"USED\"\n >(\"PENDING\");\n\n const paymentTypeOptions: ISelectOption[] = [\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n ];\n const [filteredPaymentTypeOptions, setFilteredPaymentTypeOptions] = useState<\n ISelectOption[]\n >([]);\n const [paymentType, setPaymentType] = useState<string>(\"\");\n const [successObject, setSuccessObject] = useState<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n });\n\n const paymentTypeHandler = (event: string): void => {\n setPaymentType(event);\n };\n\n const setSuccess = (event: ISuccessObject): void => {\n setSuccessObject({ ...event });\n if (event.paymentStatus === \"authorized\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment authorization successful.\", toastConfig);\n } else if (event.paymentStatus === \"confirmed\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment confirmed.\", toastConfig);\n } else if (event.paymentStatus === \"payment failed\") {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n } else if (event.paymentStatus === \"used\") {\n setCheckoutState(\"USED\");\n } else {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n }\n\n onPaymentAuthorized?.(event);\n };\n\n const onErrorHandler = (error: IErrorObject): void => {\n toast.error(error.errorMessage ?? \"Payment failed.\", toastConfig);\n onError?.(error);\n };\n\n useEffect(() => {\n let options: ISelectOption[] = [];\n\n if (paymentObject.currency === \"USD\") {\n if (paymentObject.amount < 50) {\n options = paymentTypeOptions.filter(\n (option) =>\n option.value !== \"BANK_TRANSFER\" && option.value !== \"STABLE_COIN\",\n );\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"BANK_TRANSFER\",\n );\n }\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"STABLE_COIN\",\n );\n }\n\n setFilteredPaymentTypeOptions(options);\n }, [paymentObject.currency, paymentObject.amount]);\n\n useEffect(() => {\n if (filteredPaymentTypeOptions.length) {\n setPaymentType(filteredPaymentTypeOptions[0].value);\n }\n }, [filteredPaymentTypeOptions]);\n\n return (\n <BaseCard>\n <Toaster />\n <div className=\"grid grid-cols-3\">\n {checkoutState === \"PENDING\" && (\n <div className=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p className=\"text-heading-text text-body-xs font-semibold\">\n Pay with\n </p>\n <BaseRadioGroup\n options={filteredPaymentTypeOptions}\n selectedChange={(e: string) => paymentTypeHandler(e)}\n />\n </div>\n )}\n\n <div\n className={\n checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")\n ? \"col-span-3\"\n : \"col-span-2\"\n }\n >\n {checkoutState === \"PENDING\" && (\n <div className=\"flex flex-col gap-6 sm:flex-row sm:items-center justify-between p-6 sm:px-10 sm:py-8\">\n {paymentObject.logoUrl ? (\n <BaseImage\n src={paymentObject.logoUrl ?? \"\"}\n alt=\"Merchant Logo\"\n width={52}\n height={52}\n customClass=\"rounded-lg object-fit\"\n />\n ) : (\n <div\n className=\"bg-heading-text rounded flex flex-col justify-center\"\n style={{ width: \"52px\", height: \"52px\" }}\n >\n <p className=\"text-white text-center text-body-2xs font-medium\">\n Logo\n </p>\n </div>\n )}\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-body-2xs font-regular text-sub-copy sm:text-right\">\n {paymentObject.merchantName}\n </p>\n <p className=\"text-body-2xs font-regular text-sub-copy sm:text-right\">\n Pay:{\" \"}\n <span className=\"text-orange-500 font-extrabold\">\n {formatAmount(paymentObject.amount, paymentObject.currency)}\n </span>\n </p>\n </div>\n </div>\n )}\n\n {checkoutState === \"PENDING\" && (\n <div className=\"max-h-[32rem] overflow-y-scroll px-6 sm:px-10 pb-10 pt-2\">\n {paymentType === \"CARD\" ? (\n <PayByCard\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : paymentType === \"BANK_TRANSFER\" ? (\n <PayByTransfer\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : (\n <PayByStableCoin\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n )}\n </div>\n )}\n\n {(checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")) && (\n <BaseSuccess\n amount={paymentObject.amount}\n currency={paymentObject.currency}\n redirectUrl={paymentObject.redirectUrl ?? \"\"}\n successObject={successObject}\n />\n )}\n </div>\n </div>\n </BaseCard>\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { BaseButton, BaseInput, BaseSelect } from \"./base\";\nimport {\n IApiResponse,\n IAuthorizeCardPaymentPayload,\n IAuthorizeCardPaymentPayloadMiden,\n IBillingDetails,\n ICardDetails,\n ICountry,\n IErrorObject,\n IPaymentObject,\n IPhoneCodeOption,\n ISelectOption,\n IState,\n ISuccessObject,\n} from \"../types\";\nimport {\n buildDeviceInformation,\n cardTypeHandler,\n checkObjectTruthy,\n COUNTRIES,\n formatAmount,\n getBaseAppUrl,\n getQueryParams,\n toastConfig,\n validateGroup,\n} from \"../utils\";\nimport {\n authorizeCardPayment,\n createPaymentLink,\n resendCardPaymentOtp,\n validateCardPaymentOtp,\n decryptPayload,\n encryptPayload,\n getCountries,\n getCountryStates,\n midenConfirmPayment,\n} from \"../apis\";\nimport { BasePhoneNumberInput } from \"./base/phone-number-input\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\ninterface IPayByCardProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport function PayByCard({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onError,\n caller = \"buzapay\",\n}: IPayByCardProps) {\n const [formIndex, setFormIndex] = useState(0);\n const [message, setMessage] = useState(\"\");\n const [isMakingPayment, setIsMakingPayment] = useState(false);\n const [isSendingOtp, setIsSendingOtp] = useState(false);\n const [isValidatingOtp, setIsValidatingOtp] = useState(false);\n const [loading, setLoading] = useState(false);\n const [defaultCountryCode, setDefaultCountryCode] = useState(\"\");\n const [cardType, setCardType] = useState(\"\");\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [loadingCountries, setLoadingCountries] = useState(false);\n const [loadingStates, setLoadingStates] = useState(false);\n const [rawCountries, setRawCountries] = useState<ICountry[]>([]);\n const [countries, setCountries] = useState<ISelectOption[]>([]);\n const [countryStates, setCountryStates] = useState<ISelectOption[]>([]);\n const [phoneCodeOptions, setPhoneCodeOptions] = useState<IPhoneCodeOption[]>(\n [],\n );\n const baseAppUrl = getBaseAppUrl(environment, caller);\n\n // form values\n const [billingForm, setBillingForm] = useState<Record<string, string>>({\n address1: \"\",\n address2: \"\",\n postalCode: \"\",\n state: \"\",\n city: \"\",\n country: \"\",\n emailAddress: \"\",\n phoneNumber: \"\",\n phoneNumberExt: \"\",\n });\n const [payForm, setPayForm] = useState<Record<string, string>>({\n customerName: \"\",\n cardNo: \"\",\n expireDate: \"\",\n cvv: \"\",\n cardPin: \"\", // Only required for Verve cards\n });\n const [otpForm, setOtpForm] = useState<Record<string, string>>({\n otp: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [billingErrors, setBillingErrors] = useState<Record<string, string>>(\n {},\n );\n const [payErrors, setPayErrors] = useState<Record<string, string>>({});\n const [otpErrors, setOtpErrors] = useState<Record<string, string>>({});\n\n // --- validation rules per step ---\n const billingRules: Record<string, string> = {\n address1: \"required\",\n address2: \"\", // optional\n country: \"required\",\n state: \"required\",\n city: \"required\",\n postalCode: \"required|no_special|char_length:6\",\n emailAddress: \"required|email\",\n phoneNumber: \"required\",\n };\n const payRules: Record<string, string> = {\n customerName: \"required\",\n cardNo: \"required|num_spaces\",\n expireDate: \"required\",\n cvv: \"required|numeric\",\n cardPin: cardType === \"Verve\" ? \"required\" : \"\", // optional unless Verve\n };\n const otpRules: Record<string, string> = {\n otp: \"required\",\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency,\n );\n\n // pretty labels (optional)\n const billingLabels: Record<string, string> = {\n address1: \"Address Line 1\",\n address2: \"Address Line 2\",\n postalCode: \"Postal Code\",\n state: \"State\",\n city: \"City\",\n country: \"Country\",\n emailAddress: \"Email\",\n phoneNumber: \"Phone Number\",\n };\n const payLabels: Record<string, string> = {\n customerName: \"Card Name\",\n cardNo: \"Card Number\",\n expireDate: \"Expiry Date\",\n cvv: \"CVV\",\n cardPin: \"Card PIN\",\n };\n const otpLabels: Record<string, string> = {\n otp: \"OTP\",\n };\n\n const [threeDSOpen, setThreeDSOpen] = useState(false);\n const [threeDSIframeSrc, setThreeDSIframeSrc] = useState<string>(\"\");\n const messageListenerRef = useRef<(event: MessageEvent) => void>();\n\n const midenThreeDSChallenge = (url: string, value: string) => {\n if (!url || !value) {\n setMessage(\"3DS challenge could not be started (missing stepUpUrl/JWT).\");\n return;\n }\n\n const html = `<!doctype html>\n <html>\n <head><meta charset=\"utf-8\" /></head>\n <body onload=\"document.forms[0].submit()\">\n <form method=\"POST\" action=\"${url}\">\n <input type=\"hidden\" name=\"JWT\" value=\"${value}\" />\n </form>\n </body>\n </html>`;\n\n const dataUrl = `data:text/html;charset=utf-8,${encodeURIComponent(html)}`;\n setThreeDSIframeSrc(dataUrl);\n setThreeDSOpen(true);\n\n const listener = (event: MessageEvent) => {\n if (\n event?.data === \"challenge_success\" ||\n event?.data?.status === \"success\"\n ) {\n setThreeDSOpen(false);\n setThreeDSIframeSrc(\"\");\n handleMidenProceed(); // continue flow\n }\n\n if (\n event?.data === \"challenge_failed\" ||\n event?.data?.status === \"failed\"\n ) {\n setThreeDSOpen(false);\n setThreeDSIframeSrc(\"\");\n setMessage(\"3D Secure verification failed.\");\n setIsMakingPayment(false);\n }\n };\n\n if (messageListenerRef.current) {\n window.removeEventListener(\"message\", messageListenerRef.current);\n }\n messageListenerRef.current = listener;\n window.addEventListener(\"message\", listener);\n };\n\n useEffect(() => {\n return () => {\n if (messageListenerRef.current) {\n window.removeEventListener(\"message\", messageListenerRef.current);\n }\n };\n }, []);\n\n const resendOtp = async () => {\n setIsSendingOtp(true);\n try {\n const response = await resendCardPaymentOtp(\n environment,\n {\n merchantId: secretKey,\n transactionReference: transactionReference,\n },\n caller ?? \"buzapay\",\n );\n\n if (response?.isSuccessful) {\n setIsSendingOtp(false);\n toast.success(\"OTP Sent Successfully.\", toastConfig);\n }\n } catch (e: any) {\n setMessage(e?.message || \"OTP Sending Failed\");\n onError?.({ errorMessage: message });\n } finally {\n setIsSendingOtp(false);\n }\n };\n\n const handleMidenProceed = async (): Promise<void> => {\n try {\n setIsMakingPayment(true);\n\n const result = await await midenConfirmPayment(\n environment,\n transactionReference,\n secretKey,\n \"miden\",\n );\n\n if (result?.isSuccessful) {\n setMessage(\"Payment authorization successful.\");\n toast.success(\"Payment authorization successful.\");\n setIsMakingPayment(false);\n\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"authorized\",\n message: \"Payment authorization successful.\",\n });\n } else {\n toast.success(\"Payment authorization successful.\");\n setIsMakingPayment(false);\n }\n } catch (err: any) {\n const status = err?.status ?? err?.response?.status;\n\n if ([500, 501, 502, 503].includes(status)) {\n setIsMakingPayment(false);\n setMessage(\"Temporary server error. Please try again.\");\n return;\n }\n\n const responseMessage =\n err?.error?.responseMessage ||\n err?.responseMessage ||\n err?.message ||\n \"Payment confirmation failed.\";\n\n setIsMakingPayment(false);\n setMessage(responseMessage);\n\n toast.error(responseMessage);\n\n onError?.({ errorMessage: responseMessage });\n }\n };\n\n const handleMidenCard = (data: any) => {\n const threeDsRequired = data?.threeDsInteractionRequired;\n if (threeDsRequired) {\n const url = data?.threeDsHtml?.stepUpUrl;\n const cred = data?.threeDsHtml?.accessToken;\n midenThreeDSChallenge(url, cred);\n } else {\n handleMidenProceed();\n }\n };\n\n // --- proceed/pay click handler: validate current step & gate navigation ---\n const proceedHandler = async () => {\n if (formIndex === 0) {\n const errs = validateGroup(billingForm, billingRules, billingLabels);\n setBillingErrors(errs);\n if (Object.keys(errs).length === 0) {\n setFormIndex(1);\n }\n return;\n }\n\n // pay step\n if (formIndex === 1) {\n const errs = validateGroup(payForm, payRules, payLabels);\n setPayErrors(errs);\n if (Object.keys(errs).length > 0) {\n return;\n }\n\n try {\n setIsMakingPayment(true);\n setMessage(\"\");\n\n // --- Build card details (raw) ---\n const cardDetails: ICardDetails = {\n pan: payForm.cardNo ? payForm.cardNo.replace(/ /g, \"\") : \"\",\n expiryDate: payForm.expireDate ?? \"\",\n cvv: payForm.cvv ?? \"\",\n cardScheme: cardType,\n nameOnCard: payForm.customerName ?? \"\",\n ...(cardType === \"Verve\" && { pin: payForm.cardPin ?? \"\" }),\n };\n\n // --- Build billing details ---\n const billingDetails: IBillingDetails = {\n address1: billingForm.address1 ?? \"\",\n address2: billingForm.address2 ?? \"\",\n postalCode: billingForm.postalCode ?? \"\",\n state: billingForm.state ?? \"\",\n city: billingForm.city ?? \"\",\n country: billingForm.country ?? \"\",\n emailAddress: billingForm.emailAddress ?? \"\",\n phoneNumber: billingForm.phoneNumber\n ? `${billingForm.phoneNumberExt}${billingForm.phoneNumber}`\n : \"\",\n };\n\n // --- Encrypt card payload ---\n const encryptedCardDetails = encryptPayload(secretKey, cardDetails);\n\n let payload: IAuthorizeCardPaymentPayload | null = null;\n let payloadMiden: IAuthorizeCardPaymentPayloadMiden | null = null;\n\n if (caller === \"buzapay\") {\n // --- Assemble request payload ---\n payload = {\n customerId: paymentObject?.email || payForm.customerName || \"\",\n amount: String(paymentObject?.amount ?? \"\"),\n currency: paymentObject?.currency || \"USD\",\n narration: paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl:\n paymentObject?.redirectUrl ||\n `${baseAppUrl}/account/three-ds-status`,\n paymentReference: transactionReference,\n isCheckout: true,\n };\n } else {\n // --- Assemble request payload miden ---\n const deviceInformation = buildDeviceInformation();\n payloadMiden = {\n customerId: paymentObject?.email || payForm.customerName || \"\",\n amount: String(paymentObject?.amount ?? \"\"),\n currency: paymentObject?.currency || \"USD\",\n narration: paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl:\n paymentObject?.redirectUrl || `${baseAppUrl}/pay/verification`,\n paymentReference: transactionReference,\n isCheckout: true,\n postBackUrl: \"\",\n saveCard: false,\n deviceInformation,\n };\n }\n\n // Include merchantId (secretKey) as in your Angular code\n const request =\n caller === \"buzapay\"\n ? { ...payload, merchantId: secretKey }\n : { ...payloadMiden, merchantId: secretKey };\n\n // --- Call API (Promise-based) ---\n let response = await authorizeCardPayment(environment, request, caller);\n\n // --- If response is encrypted, decrypt it ---\n if (response?.responseParam) {\n response = decryptPayload(environment, response.responseParam);\n }\n\n // --- Handle success path ---\n if (response?.isSuccessful) {\n // Verve OTPValidationRequired flow\n if (response?.otpValidationRequired) {\n setIsMakingPayment(false);\n setFormIndex(2);\n return;\n }\n\n // Miden flow\n if (caller === \"miden\") {\n handleMidenCard(response);\n return;\n }\n\n // 3DS handling (primary)\n if (response.threeDsInteractionRequired === true) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `${baseAppUrl}/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n setMessage(\n \"3D Secure authentication opened in new tab. Please complete the verification\",\n );\n setIsMakingPayment(false);\n return;\n }\n\n // 3DS handling (fallback text)\n if (\n response.responseMessage === \"Payer Interaction Required\" &&\n response.threeDsHtml\n ) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `${baseAppUrl}/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n setMessage(\n \"3D Secure authentication opened in new tab. Please complete the verification\",\n );\n setIsMakingPayment(false);\n return;\n }\n\n // Emit success up if provided\n if (response.transactionReference?.trim()) {\n onPaymentAuthorized?.({\n paymentId: response.transactionReference,\n paymentDate:\n response?.data?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"authorized\",\n message,\n });\n }\n\n setMessage(\"Card payment authorized successfully\");\n setIsMakingPayment(false);\n return;\n }\n\n // Failure path for miden\n if (response && !response.isSuccessful && caller === \"miden\") {\n // setMessage(response.responseMessage);\n onError?.({ errorMessage: response.responseMessage });\n }\n\n // Failure path for buzapay\n if (response && response.message && caller === \"buzapay\") {\n // setMessage(response.message);\n onError?.({ errorMessage: response.message });\n }\n\n setIsMakingPayment(false);\n } catch (err: any) {\n // If server returned encrypted error\n let friendly = \"Payment failed\";\n if (err?.error?.responseParam) {\n try {\n const decryptedError = decryptPayload(\n environment,\n err.error.responseParam,\n );\n friendly = decryptedError?.responseMessage || friendly;\n } catch {\n friendly =\n err?.error?.responseMessage || err?.error?.message || friendly;\n }\n } else {\n friendly =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Payment failed\";\n }\n\n setMessage(friendly);\n setIsMakingPayment(false);\n onError?.({\n errorMessage: message,\n });\n }\n }\n\n if (formIndex === 2) {\n const errs = validateGroup(otpForm, otpRules, otpLabels);\n Object.assign(otpErrors, errs);\n if (Object.keys(errs).length > 0) return;\n\n setIsValidatingOtp(true);\n try {\n const response = await validateCardPaymentOtp(\n environment,\n {\n merchantId: secretKey,\n transactionReference: transactionReference,\n otp: otpForm.otp,\n },\n caller ?? \"buzapay\",\n );\n\n if (response?.isSuccessful) {\n setIsValidatingOtp(false);\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"authorized\",\n message: response?.responseMessage,\n });\n }\n } catch (e: any) {\n setMessage(e?.message || \"Validate OTP Failed\");\n onError?.({ errorMessage: message });\n } finally {\n setIsValidatingOtp(false);\n }\n }\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const getAllCountries = async () => {\n setLoadingCountries(true);\n try {\n const response: IApiResponse<any> = await getCountries(\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful) {\n setRawCountries(response.data);\n setCountries(\n (response.data ?? []).map((c: ICountry) => {\n return { label: c.countryName, value: c.iso2 };\n }),\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get countries\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingCountries(false);\n }\n };\n\n const goBack = () => {\n setFormIndex(formIndex > 0 ? formIndex - 1 : 0);\n };\n\n const getStates = async (countryIso2: string) => {\n const country = rawCountries.find((c) => c.iso2 === countryIso2);\n if (!country) return;\n setLoadingStates(true);\n try {\n const response: IApiResponse<any> = await getCountryStates(\n country.iso3,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful) {\n setCountryStates(\n (response.data ?? []).map((s: IState) => ({\n label: s.name,\n value: s.name,\n })),\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get country states\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStates(false);\n }\n };\n\n const cardNumberInputHandler = (event: string): void => {\n setCardType(cardTypeHandler(event));\n payRules.cardPin = cardType === \"Verve\" ? \"required|numeric\" : \"\";\n };\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n await getAllCountries();\n\n const codeOptions = COUNTRIES.map((country) => {\n return {\n value: `${country.phoneCode}-${country.code}`,\n label: `${country.phoneCode}`,\n flag: country.flag,\n phoneCode: country.phoneCode,\n countryCode: country.code,\n };\n }).sort((a, b) => a.label.localeCompare(b.label));\n setPhoneCodeOptions(codeOptions);\n })();\n }, []);\n\n return threeDSOpen ? (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-white p-4\">\n <iframe\n title=\"Miden 3DS\"\n src={threeDSIframeSrc}\n className=\"w-full h-full\"\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-top-navigation\"\n />\n </div>\n ) : (\n <div>\n <Toaster />\n <div className=\"flex flex-col gap-6\">\n {formIndex === 0 && (\n <div className=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Address Line 1\"\n required\n value={billingForm.address1}\n onChange={(e) => {\n setBillingForm({ ...billingForm, address1: e });\n if (billingErrors.address1) {\n setBillingErrors((er) => ({ ...er, address1: \"\" })); // optional live clear\n }\n }}\n validationError={billingErrors.address1 ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Address Line 2\"\n value={billingForm.address2}\n onChange={(e) =>\n setBillingForm({ ...billingForm, address2: e })\n }\n validationError={billingErrors.address2 ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseSelect\n label=\"Select Country\"\n required\n options={countries}\n loading={loadingCountries}\n value={billingForm.country}\n onChange={(e) => {\n setBillingForm({ ...billingForm, country: e, state: \"\" });\n getStates(e);\n const selectedCountry = COUNTRIES.filter(\n (c) => c.code.toLowerCase() === e.toLowerCase(),\n )[0];\n if (selectedCountry) {\n setDefaultCountryCode(\n `${selectedCountry.phoneCode}-${selectedCountry.code}`,\n );\n }\n if (billingErrors.country) {\n setBillingErrors((er) => ({ ...er, country: \"\" }));\n }\n }}\n validationError={billingErrors.country ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseSelect\n label=\"Select State\"\n required\n options={countryStates}\n loading={loadingStates}\n value={billingForm.state}\n onChange={(e) => {\n setBillingForm({ ...billingForm, state: e });\n if (billingErrors.state) {\n setBillingErrors((er) => ({ ...er, state: \"\" }));\n }\n }}\n validationError={billingErrors.state ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseInput\n label=\"City\"\n required\n value={billingForm.city}\n onChange={(e) => {\n setBillingForm({ ...billingForm, city: e });\n if (billingErrors.city) {\n setBillingErrors((er) => ({ ...er, city: \"\" }));\n }\n }}\n validationError={billingErrors.city ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseInput\n label=\"Postal Code\"\n required\n value={billingForm.postalCode}\n onChange={(e) => {\n setBillingForm({ ...billingForm, postalCode: e });\n if (billingErrors.postalCode) {\n setBillingErrors((er) => ({ ...er, postalCode: \"\" }));\n }\n }}\n validationError={billingErrors.postalCode ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Email\"\n required\n value={billingForm.emailAddress}\n onChange={(e) => {\n setBillingForm({ ...billingForm, emailAddress: e });\n if (billingErrors.emailAddress) {\n setBillingErrors((er) => ({ ...er, emailAddress: \"\" }));\n }\n }}\n validationError={billingErrors.emailAddress ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BasePhoneNumberInput\n label=\"Phone Number\"\n required\n preventPaste={true}\n value={billingForm.phoneNumber}\n phoneCodeOptions={phoneCodeOptions}\n defaultCountryCode={defaultCountryCode}\n onChange={(e) => {\n setBillingForm({ ...billingForm, phoneNumber: e });\n if (billingErrors.phoneNumber) {\n setBillingErrors((er) => ({ ...er, phoneNumber: \"\" }));\n }\n }}\n onCodeChange={(e: string) => {\n setBillingForm({ ...billingForm, phoneNumberExt: e });\n if (billingErrors.phoneNumberExt) {\n setBillingErrors((er) => ({ ...er, phoneNumberExt: \"\" }));\n }\n }}\n validationError={billingErrors.phoneNumber ?? \"\"}\n />\n </div>\n </div>\n )}\n\n {formIndex === 1 && (\n <div\n className=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n style={{ maxHeight: 320 }}\n >\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Card Name\"\n required\n value={payForm.customerName}\n onChange={(e) => {\n setPayForm({ ...payForm, customerName: e });\n if (payErrors.customerName) {\n setPayErrors((er) => ({ ...er, customerName: \"\" }));\n }\n }}\n validationError={payErrors.customerName ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Card Number\"\n required\n rules={[\"numeric\"]}\n mask=\"0000 0000 0000 0000 000\"\n placeholder=\"0000 0000 0000 0000\"\n value={payForm.cardNo}\n preventPaste={true}\n onChange={(e) => {\n setPayForm({ ...payForm, cardNo: e });\n if (payErrors.cardNo)\n setPayErrors((er) => ({ ...er, cardNo: \"\" }));\n cardNumberInputHandler(e);\n }}\n validationError={payErrors.cardNo ?? \"\"}\n />\n </div>\n\n <BaseInput\n label=\"Expiry Date\"\n required\n value={payForm.expireDate}\n mask=\"00/00\"\n placeholder=\"00/00\"\n onChange={(e) => {\n setPayForm({ ...payForm, expireDate: e });\n if (payErrors.expireDate)\n setPayErrors((er) => ({ ...er, expireDate: \"\" }));\n }}\n validationError={payErrors.expireDate ?? \"\"}\n />\n\n <BaseInput\n label=\"CVV\"\n required\n rules={[\"numeric\"]}\n value={payForm.cvv}\n mask=\"000\"\n placeholder=\"000\"\n onChange={(e) => {\n setPayForm({ ...payForm, cvv: e });\n if (payErrors.cvv) setPayErrors((er) => ({ ...er, cvv: \"\" }));\n }}\n validationError={payErrors.cvv ?? \"\"}\n />\n\n {cardType === \"Verve\" && (\n <BaseInput\n label=\"Card Pin\"\n required\n rules={[\"numeric\"]}\n value={payForm.cardPin}\n mask=\"0000\"\n placeholder=\"0000\"\n onChange={(e) => {\n setPayForm({ ...payForm, cardPin: e });\n if (payErrors.cardPin)\n setPayErrors((er) => ({ ...er, cardPin: \"\" }));\n }}\n validationError={payErrors.cardPin ?? \"\"}\n />\n )}\n </div>\n )}\n\n {formIndex === 2 && (\n <div\n className=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n style={{ maxHeight: 320 }}\n >\n <div className=\"col-span-2\">\n <BaseInput\n label=\"OTP\"\n required\n value={otpForm.otp}\n onChange={(e) => {\n setOtpForm({ ...otpForm, otp: e });\n if (otpErrors.otp) {\n setOtpErrors((er) => ({ ...er, otp: \"\" }));\n }\n }}\n validationError={otpErrors.otp ?? \"\"}\n />\n <p className=\"text-primary text-sm mt-2\">\n Didn't get OTP?\n <span\n className={\n isSendingOtp ? \"ml-1\" : \"ml-1 underline cursor-pointer\"\n }\n onClick={() => {\n if (isSendingOtp) return;\n resendOtp();\n }}\n >\n {isSendingOtp ? \"Sending...\" : \"Resend OTP\"}\n </span>\n </p>\n </div>\n </div>\n )}\n\n <div className=\"flex items-center justify-between gap-4 mt-6\">\n {formIndex > 0 && (\n <BaseButton\n label=\"Previous\"\n type=\"secondary\"\n customClass=\"w-1/2\"\n caller={caller}\n onClick={goBack}\n />\n )}\n {formIndex < 2 && (\n <BaseButton\n label={formIndex === 0 ? \"Proceed\" : `Pay ${formatAmountHandler}`}\n type=\"primary\"\n customClass={`${formIndex > 0 ? \"w-1/2\" : \"w-full\"}`}\n caller={caller}\n loading={isMakingPayment}\n onClick={proceedHandler}\n disabled={isMakingPayment}\n />\n )}\n {formIndex === 2 && (\n <div className=\"w-1/2\">\n <BaseButton\n label=\"Validate OTP\"\n type=\"primary\"\n caller={caller}\n loading={isValidatingOtp}\n onClick={proceedHandler}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect } from \"react\";\nimport { BaseInput } from \"./input\";\nimport { IPhoneCodeOption } from \"../../types\";\nimport { BaseSelect } from \"./select\";\n\nexport interface PhoneNumberInputProps {\n phoneCodeOptions: IPhoneCodeOption[];\n value?: string;\n onChange?: (fullValue: string) => void;\n onCodeChange?: (code: string) => void;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n hint?: string;\n defaultCountryCode?: string;\n preventPaste?: boolean;\n showCopyIcon?: boolean;\n containerClassName?: string;\n inputClassName?: string;\n enforceMaxDigits?: boolean;\n placeholder?: string;\n}\n\nexport const BasePhoneNumberInput: React.FC<PhoneNumberInputProps> = ({\n phoneCodeOptions,\n value,\n onChange,\n onCodeChange,\n label = \"\",\n required = false,\n disabled = false,\n loading = false,\n validationError = \"\",\n hint = \"\",\n\n defaultCountryCode,\n preventPaste = false,\n showCopyIcon = false,\n\n containerClassName = \"\",\n inputClassName = \"\",\n placeholder,\n}) => {\n const safeDefaultCode = phoneCodeOptions?.[0]?.value ?? \"+1\";\n\n const [selectedCode, setSelectedCode] =\n React.useState<string>(safeDefaultCode);\n\n const selectedMeta = React.useMemo(() => {\n return phoneCodeOptions.find((o) => o.value === selectedCode);\n }, [phoneCodeOptions, selectedCode]);\n\n const getFormattedCode = (codeValue: string) => codeValue.split(\"-\")[0];\n\n const handleCountryChange = (nextValue: string) => {\n setSelectedCode(nextValue);\n onCodeChange?.(getFormattedCode(nextValue));\n };\n\n const handleChange = (e: string) => {\n const incoming = e;\n onChange?.(incoming);\n };\n\n const computedPlaceholder =\n placeholder ??\n selectedMeta?.placeholder ??\n (label ? `Enter ${label.toLowerCase()}` : \"Enter phone number\");\n\n useEffect(() => {\n const nextValue = defaultCountryCode ?? safeDefaultCode;\n setSelectedCode(nextValue);\n onCodeChange?.(getFormattedCode(nextValue));\n }, [defaultCountryCode]);\n\n return (\n <div className={`flex flex-col gap-2`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n <div className={`flex items-center gap-2 ${containerClassName}`}>\n <div className=\"w-1/3\">\n <BaseSelect\n required\n options={phoneCodeOptions}\n value={selectedCode}\n showBottomText={false}\n itemImageType=\"country\"\n onChange={handleCountryChange}\n validationError={validationError}\n placeholder=\"+234\"\n />\n </div>\n\n <div className=\"w-2/3\">\n <BaseInput\n className={inputClassName}\n required={required}\n disabled={disabled}\n loading={loading}\n validationError={validationError}\n showBottomText={false}\n hint={hint}\n value={value}\n onChange={handleChange}\n rules={[\"numeric\"]}\n preventPaste={preventPaste}\n showCopyIcon={showCopyIcon}\n placeholder={computedPlaceholder}\n />\n </div>\n </div>\n\n {hint && <p className=\"text-body-3xs text-light-copy\">{hint}</p>}\n\n {validationError && (\n <p className=\"text-body-3xs text-red-500\">{validationError}</p>\n )}\n </div>\n );\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { BaseButton, BaseCopy, BaseInput, BaseLabelInfo } from \"./base\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n IApiResponse,\n IErrorObject,\n IPaymentAccountResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types\";\nimport {\n createPaymentLink,\n generatePaymentAccount,\n getPaymentReferenceDetails,\n} from \"../apis\";\nimport BaseCircularCountdown from \"./base/circular-countdown\";\n\ninterface IPayByTransferProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onCancel?: () => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const PayByTransfer = ({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onCancel,\n onError,\n caller = \"buzapay\",\n}: IPayByTransferProps) => {\n const [formIndex, setFormIndex] = useState(0);\n const [isMakingPayment, setIsMakingPayment] = useState(false);\n const [isConfirmCall, setIsConfirmCall] = useState(false);\n const [isPaymentConfirmed, setIsPaymentConfirmed] = useState(false);\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [paymentReferenceStatus, setPaymentReferenceStatus] = useState(\"\");\n const [isFetchingPaymentDetails, setIsFetchingPaymentDetails] =\n useState(false);\n const [paymentReferenceDetails, setPaymentReferenceDetails] =\n useState<IPaymentReferenceDetail | null>(null);\n const [paymentAccountDetails, setPaymentAccountDetails] =\n useState<IPaymentAccountResponse | null>(null);\n const [paymentMade, setPaymentMade] = useState(false);\n const [loading, setLoading] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [remainingSeconds, setRemainingSeconds] = useState(30 * 60);\n const [countDownTime, setCountDownTime] = useState(\"00:00\");\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\n\n // form values\n const [transferForm, setTransferForm] = useState<Record<string, string>>({\n customerName: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [transferErrors, setTransferErrors] = useState<Record<string, string>>(\n {},\n );\n\n // --- validation rules per step ---\n const transferRules: Record<string, string> = {\n customerName: \"required\",\n };\n\n // pretty labels (optional)\n const transferLabels: Record<string, string> = {\n customerName: \"Customer Name\",\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency,\n );\n\n const payHandler = async () => {\n if (formIndex === 0) {\n const errs = validateGroup(transferForm, transferRules, transferLabels);\n setTransferErrors(errs);\n if (Object.keys(errs).length === 0) {\n const payload = {\n paymentReference: transactionReference,\n channel: \"virtual_account\",\n customerName: transferForm.customerName ?? \"\",\n merchantId: secretKey,\n };\n setIsMakingPayment(true);\n\n try {\n const response = await generatePaymentAccount(\n environment,\n payload,\n caller,\n );\n if (response?.isSuccessful) {\n setPaymentAccountDetails(\n caller === \"buzapay\" ? response.data : response,\n );\n startTimer();\n setMessage(\"Virtual account generated successfully for payment.\");\n setIsMakingPayment(false);\n setFormIndex(1);\n } else {\n setIsMakingPayment(false);\n setMessage(\"Payment failed.\");\n onError?.({\n errorMessage: \"Payment failed.\",\n });\n }\n } catch (err: any) {\n setIsMakingPayment(false);\n setMessage(err.error.responseMessage || err.error.message);\n onError?.({\n errorMessage: message,\n });\n }\n }\n return;\n }\n };\n\n const getReferenceDetails = async () => {\n setIsFetchingPaymentDetails(true);\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference,\n caller,\n );\n\n if (response?.isSuccessful) {\n setPaymentReferenceDetails(\n caller === \"buzapay\" ? response.data : response,\n );\n\n // Payment made if status says \"Payment Received\"\n const made =\n paymentReferenceDetails?.paymentStatus === \"Payment Received\";\n setPaymentMade(made);\n\n const noServerStatus =\n paymentReferenceDetails?.finalTransactionStatus == null ||\n paymentReferenceDetails?.paymentStatus == null;\n\n if (noServerStatus) {\n if (isConfirmCall) {\n setMessage(\"Transaction not confirmed !!\");\n }\n\n if (!isPaymentConfirmed && !made) {\n setPaymentReferenceStatus(\"pending\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"pending\",\n message,\n });\n } else {\n setPaymentReferenceStatus(\"confirmed\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (\n paymentReferenceDetails?.finalTransactionStatus === \"Success\" ||\n paymentReferenceDetails?.paymentStatus === \"Received\" ||\n paymentReferenceDetails?.paymentStatus === \"Payment Received\"\n ) {\n setPaymentReferenceStatus(\"confirmed\");\n setIsPaymentConfirmed(true);\n setMessage(\"Transaction confirmed !!\");\n\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === \"119\") {\n setPaymentReferenceStatus(\"used\");\n setMessage(response.responseMessage || \"\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"used\",\n message,\n });\n }\n } catch (err: any) {\n setPaymentReferenceStatus(\"\");\n setMessage(\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\",\n );\n onError?.({\n errorMessage: message,\n });\n } finally {\n setIsFetchingPaymentDetails(false);\n }\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const updateDisplay = useCallback((secs: number) => {\n const minutes = String(Math.floor(secs / 60)).padStart(2, \"0\");\n const seconds = String(secs % 60).padStart(2, \"0\");\n setCountDownTime(`${minutes}:${seconds}`);\n }, []);\n\n const startTimer = useCallback(() => {\n // clear any existing interval\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n\n updateDisplay(remainingSeconds);\n\n intervalRef.current = setInterval(() => {\n setRemainingSeconds((prev) => {\n const next = prev - 1;\n if (next < 0) {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n setCountDownTime(\"00:00\");\n return 0;\n }\n updateDisplay(next);\n return next;\n });\n }, 1000);\n }, [remainingSeconds, updateDisplay]);\n\n const stopTimer = () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n })();\n }, []);\n\n // stop at zero\n useEffect(() => {\n if (remainingSeconds < 0 && intervalRef.current) {\n stopTimer();\n }\n }, [remainingSeconds]);\n\n return (\n <div className=\"flex flex-col gap-10\">\n {formIndex === 0 && (\n <div className=\"flex flex-col gap-10\">\n <BaseInput\n label=\"Customer Name\"\n required\n value={transferForm.customerName}\n onChange={(e) => {\n setTransferForm({ ...transferForm, customerName: e });\n if (transferForm.customerName) {\n setTransferErrors((er) => ({ ...er, customerName: \"\" })); // optional live clear\n }\n }}\n validationError={transferErrors.customerName ?? \"\"}\n />\n\n <BaseButton\n label={`Pay ${formatAmountHandler}`}\n type=\"primary\"\n customClass=\"w-full\"\n caller={caller}\n loading={isMakingPayment}\n onClick={payHandler}\n />\n </div>\n )}\n\n {formIndex === 1 && (\n <div className=\"flex flex-col gap-10\">\n <div\n className={[\n \"p-4 rounded-lg flex flex-col gap-6\",\n caller === \"miden\"\n ? \"bg-[#FAFDFF] border border-[#F0FAFF]\"\n : \"bg-[#EFF7FF]\",\n ].join(\" \")}\n >\n <BaseLabelInfo\n label=\"Bank Name\"\n value={paymentAccountDetails?.bank}\n />\n <BaseLabelInfo\n label=\"Account Name\"\n value={paymentAccountDetails?.accountName}\n />\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Account Number\"\n value={paymentAccountDetails?.accountNumber}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={paymentAccountDetails?.accountNumber ?? \"\"}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo label=\"Amount\" value={formatAmountHandler} />\n <BaseCopy color=\"#9DBFDE\" copyText={formatAmountHandler} />\n </div>\n </div>\n\n {caller === \"buzapay\" && (\n <p className=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\">\n This account is for this transaction only and expires in{\" \"}\n <span className=\"text-orange-500\">\n {remainingSeconds >= 0 ? countDownTime : \"00:00\"}\n </span>\n </p>\n )}\n\n {caller === \"miden\" && (\n <div className=\"p-4 rounded-lg bg-[#FAFDFF] flex items-center gap-3\">\n <BaseCircularCountdown\n value={remainingSeconds}\n total={1800}\n middleText={countDownTime}\n size={40}\n stroke={2}\n color=\"#3b82f6\"\n />\n <p className=\"text-body-3xs font-medium text-light-copy\">\n This account is for this transaction only and expires in\n <span className=\"text-[#1383E8] ml-2\">{countDownTime}...</span>\n </p>\n </div>\n )}\n\n <div className=\"flex flex-col gap-4\">\n <BaseButton\n label=\"I have paid the money\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isFetchingPaymentDetails}\n onClick={getReferenceDetails}\n />\n <button\n type=\"button\"\n onClick={() => setFormIndex(0)}\n className=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\"\n >\n Cancel Payment\n </button>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n BaseButton,\n BaseCopy,\n BaseCurrencyAmount,\n BaseLabelInfo,\n BaseSelect,\n} from \"./base\";\nimport { IconArrowSwap, IconQrCode } from \"./icons\";\nimport {\n IApiResponse,\n IErrorObject,\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generateStableCoinAddress,\n getPaymentReferenceDetails,\n getStableCoinNetworks,\n getStableCoins,\n} from \"../apis\";\n\ninterface IPayByStableCoinProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const PayByStableCoin = ({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onError,\n caller = \"buzapay\",\n}: IPayByStableCoinProps) => {\n const [formIndex, setFormIndex] = useState<number>(0);\n const [message, setMessage] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [generatingAddress, setGeneratingAddress] = useState(false);\n const [loadingStableCoins, setLoadingStableCoins] = useState(false);\n const [loadingStableCoinNetworks, setLoadingStableCoinNetworks] =\n useState(false);\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [stableCoins, setStableCoins] = useState<ISelectOption[]>([]);\n const [networkList, setNetworkList] = useState<ISelectOption[]>([]);\n const [addressDetails, setAddressDetails] =\n useState<IGenerateStableCoinAddressResponse | null>(null);\n const [generateAddressPayload, setGenerateAddressPayload] =\n useState<IGenerateStableCoinAddress | null>(null);\n const [isConfirmingPayment, setIsConfirmingPayment] = useState(false);\n const [paymentReferenceDetails, setPaymentReferenceDetails] =\n useState<IPaymentReferenceDetail | null>(null);\n const [paymentReferenceStatus, setPaymentReferenceStatus] =\n useState<string>(\"\");\n\n const [stableCoinForm, setStableCoinForm] = useState<Record<string, string>>({\n stableCoin: \"\",\n network: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [stableCoinErrors, setStableCoinErrors] = useState<\n Record<string, string>\n >({});\n\n // --- validation rules per step ---\n const stableCoinRules: Record<string, string> = {\n stableCoin: \"required\",\n network: \"required\",\n };\n\n // pretty labels (optional)\n const stableCoinLabels: Record<string, string> = {\n stableCoin: \"Stable Coin\",\n network: \"Network\",\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const generateAddress = async (payload: IGenerateStableCoinAddress) => {\n if (!payload) return;\n\n setGeneratingAddress(true);\n try {\n const response: IApiResponse<any> = await generateStableCoinAddress(\n environment,\n payload,\n caller\n );\n\n if (response?.isSuccessful) {\n setAddressDetails(response.data);\n setFormIndex(1);\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to generate address\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setGeneratingAddress(false);\n }\n };\n\n const getAllStableCoins = async () => {\n setLoadingStableCoins(true);\n try {\n const response: IApiResponse<any> = await getStableCoins(\n environment,\n caller\n );\n\n if (response?.isSuccessful) {\n setStableCoins(\n response.data?.map((c: { name: string }) => ({\n label: c.name,\n value: c.name,\n })) ?? []\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get stable coins\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStableCoins(false);\n }\n };\n\n const getAllStableCoinNetworks = async (stableCoin: string) => {\n setLoadingStableCoinNetworks(true);\n try {\n const response: IApiResponse<any> = await getStableCoinNetworks(\n environment,\n stableCoin,\n caller\n );\n\n if (response?.isSuccessful) {\n setNetworkList(\n response.networks?.map((n: string) => ({\n label: n,\n value: n,\n })) ?? []\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get stable coin networks\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStableCoinNetworks(false);\n }\n };\n\n const confirmPaymentHandler = async (): Promise<void> => {\n setIsConfirmingPayment(true);\n try {\n const response: IApiResponse<IPaymentReferenceDetail> =\n await getPaymentReferenceDetails(\n environment,\n transactionReference,\n caller\n );\n\n if (response?.isSuccessful) {\n setPaymentReferenceDetails(response.data);\n\n const needsConfirm =\n response.data?.finalTransactionStatus == null ||\n response.data?.paymentStatus == null;\n\n if (needsConfirm) {\n setMessage(\"Transaction not confirmed !!\");\n setPaymentReferenceStatus(\"pending\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: response?.data?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"pending\",\n message,\n });\n } else if (\n response.data?.finalTransactionStatus === \"Success\" ||\n response.data?.paymentStatus === \"Payment Received\"\n ) {\n setMessage(\"Transaction confirmed !!\");\n setPaymentReferenceStatus(\"confirmed\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: response?.data?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === \"119\") {\n setPaymentReferenceStatus(\"used\");\n setMessage(response.responseMessage || \"\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: null,\n paymentStatus: \"used\",\n message,\n });\n }\n } catch (err: any) {\n setPaymentReferenceStatus(\"\");\n setMessage(\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\"\n );\n onError?.({\n errorMessage: message,\n });\n } finally {\n setIsConfirmingPayment(false);\n }\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency\n );\n\n const payHandler = async () => {\n const errs = validateGroup(\n stableCoinForm,\n stableCoinRules,\n stableCoinLabels\n );\n setStableCoinErrors(errs);\n if (Object.keys(errs).length === 0) {\n const payload: IGenerateStableCoinAddress = {\n paymentReference: transactionReference,\n currency: stableCoinForm.stableCoin,\n chain: stableCoinForm.network,\n transactionAmount: paymentObject.amount,\n merchantId: secretKey,\n };\n\n setGenerateAddressPayload(payload);\n await generateAddress(payload);\n } else {\n return;\n }\n };\n\n const amountPlusNetworkFee = addressDetails\n ? Number(addressDetails.transactionAmount) + addressDetails.networkFee\n : 0;\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n await getAllStableCoins();\n })();\n }, []);\n\n return (\n <div className=\"flex flex-col gap-6\">\n {formIndex === 0 && (\n <>\n <div className=\"grid grid-cols-1 gap-6\">\n <BaseSelect\n label=\"Select Crypto\"\n required\n options={stableCoins}\n loading={loadingStableCoins}\n value={stableCoinForm.stableCoin}\n onChange={(e) => {\n setStableCoinForm({ ...stableCoinForm, stableCoin: e });\n getAllStableCoinNetworks(e);\n if (stableCoinErrors.stableCoin) {\n setStableCoinErrors((er) => ({ ...er, stableCoin: \"\" }));\n }\n }}\n validationError={stableCoinErrors.stableCoin ?? \"\"}\n />\n <BaseSelect\n label=\"Select Network\"\n required\n options={networkList}\n loading={loadingStableCoinNetworks}\n value={stableCoinForm.network}\n onChange={(e) => {\n setStableCoinForm({ ...stableCoinForm, network: e });\n if (stableCoinErrors.network) {\n setStableCoinErrors((er) => ({ ...er, network: \"\" }));\n }\n }}\n validationError={stableCoinErrors.network ?? \"\"}\n />\n </div>\n\n <BaseButton\n label={`Pay ${formatAmountHandler}`}\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={generatingAddress}\n onClick={payHandler}\n />\n </>\n )}\n\n {formIndex === 1 && (\n <div>\n {caller === \"buzapay\" && (\n <div className=\"flex flex-col gap-6\">\n <div className=\"mx-auto\">\n <IconQrCode />\n <p className=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {generateAddressPayload?.currency}\n </p>\n </div>\n\n <div className=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\">\n <div className=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Network\n </p>\n\n <div className=\"flex justify-between\">\n <div className=\"flex flex-col gap-1\">\n <p className=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {addressDetails?.chain}\n </p>\n\n <div className=\"flex items-center gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n *Est. arrival = 3 mins\n </p>\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n |\n </p>\n\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={addressDetails?.networkFee ?? 0}\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n iconWidth={12}\n iconHeight={12}\n />\n </div>\n </div>\n\n <IconArrowSwap />\n </div>\n </div>\n\n <div className=\"pb-4 flex flex-col gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Deposit Address >\n </p>\n\n <div className=\"flex justify-between\">\n <p className=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\">\n {addressDetails?.walletAddress}\n </p>\n\n <BaseCopy copyText={addressDetails?.walletAddress ?? \"\"} />\n </div>\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between border-b border-grey-border py-3\">\n <p className=\"mb-0 text-body-2xs font-medium text-primary-black\">\n Network fee\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={addressDetails?.networkFee ?? 0}\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n />\n </div>\n\n <div className=\"flex items-center justify-between py-4\">\n <p className=\"mb-0 text-body-lg font-semibold text-primary-black\">\n Pay\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={amountPlusNetworkFee}\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n iconWidth={20}\n iconHeight={20}\n />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n <BaseButton\n label=\"Confirm Payment\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isConfirmingPayment}\n onClick={confirmPaymentHandler}\n />\n </div>\n </div>\n )}\n\n {caller === \"miden\" && (\n <div className=\"flex flex-col gap-6\">\n <div className=\"p-4 rounded-lg flex flex-col gap-6 bg-[#FAFDFF] border border-[#F0FAFF]\">\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Chain\"\n value={addressDetails?.chain ?? \"\"}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={addressDetails?.chain ?? \"\"}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Wallet Address\"\n value={addressDetails?.walletAddress ?? \"\"}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={addressDetails?.walletAddress ?? \"\"}\n />\n </div>\n <div className=\"flex flex-col\">\n <p className=\"mb-1 text-body-4xs font-medium text-light-copy uppercase\">\n Amount\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={amountPlusNetworkFee}\n textClass=\"mb-0 text-body-2xs font-medium text-sub-copy\"\n iconColorClass=\"#231F20\"\n iconWidth=\"20\"\n iconHeight=\"20\"\n />\n </div>\n\n <div className=\"flex gap-4 items-center justify-center\">\n <div className=\"w-24 border border-[#E1EBF5]\"></div>\n <p className=\"mb-2 text-body-2xs text-[#5F738C] font-normal\">\n Or\n </p>\n <div className=\"w-24 border border-[#E1EBF5]\"></div>\n </div>\n\n <div className=\"mx-auto\">\n <p className=\"mb-2 text-body-xs text-primary font-semibold text-center\">\n Scan to Pay\n </p>\n <IconQrCode />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n <BaseButton\n label=\"I have made this payment\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isConfirmingPayment}\n onClick={confirmPaymentHandler}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { BaseButton, BaseInputError } from \"../components/base\";\nimport { MidenCheckoutIframe } from \"./checkout-iframe\";\n\ninterface IMidenCheckoutButtonProps {\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject: IPaymentObject;\n mode?: \"redirect\" | \"iframe\";\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutButton({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n mode = \"redirect\",\n onError,\n}: IMidenCheckoutButtonProps) {\n const [message, setMessage] = useState(\"\");\n const [launchUrl, setLaunchUrl] = useState(\"\");\n const [urlLaunchUrl, setUrlLaunchUrl] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"miden\"\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n setLaunchUrl(response.launchUrl);\n setUrlLaunchUrl(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n setMessage(\"Payment link created successfully\");\n\n if (mode === \"redirect\") {\n // Use the URL from the response, not the (stale) state.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n return urlLaunchUrl && mode === \"iframe\" ? (\n <MidenCheckoutIframe\n url={urlLaunchUrl}\n secretKey={secretKey}\n environment={environment}\n />\n ) : (\n <div>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n caller=\"miden\"\n customClass=\"w-full\"\n loading={loading}\n onClick={generatePaymentLinkHandler}\n />\n <BaseInputError errorMessage={message} />\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { IconLoader } from \"../components/icons\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface IMidenCheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject?: IPaymentObject;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutIframe({\n style = {\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n },\n url,\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n onError,\n}: IMidenCheckoutIframeProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n\n const [message, setMessage] = useState<string>(\"\");\n const [launchUrl, setLaunchUrl] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const launchIframe = useCallback(\n (url: string) => {\n // remove prior iframe if any\n if (iframeRef.current && iframeRef.current.parentNode) {\n iframeRef.current.parentNode.removeChild(iframeRef.current);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n if (style.width) iframe.style.width = style.width;\n if (style.height) iframe.style.height = style.height;\n if (style.border) iframe.style.border = style.border;\n if (style.borderRadius) iframe.style.borderRadius = style.borderRadius;\n if (style.overflow) iframe.style.overflow = style.overflow;\n\n containerRef.current?.appendChild(iframe);\n iframeRef.current = iframe;\n },\n [style]\n );\n\n const generatePaymentLinkHandler = async () => {\n if (url) {\n launchIframe(url);\n return;\n }\n\n if (!secretKey) {\n return setMessage(\"Secret key is required.\");\n }\n\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n return setMessage(\"Secret key is required.\");\n }\n\n setLoading(true);\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"miden\"\n );\n if (response?.isSuccessful) {\n setLaunchUrl(response.launchUrl ?? \"\");\n setMessage(\"Payment link created successfully\");\n if (response.launchUrl) {\n setLoading(false);\n launchIframe(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n }\n } else {\n setLoading(false);\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (!containerRef.current) return; // only run if div is mounted\n generatePaymentLinkHandler();\n }, []);\n\n return (\n <div className=\"relative\" style={style}>\n <div ref={containerRef} className=\"w-full h-full\"></div>\n {loading && (\n <div className=\"absolute inset-0 grid place-items-center bg-white/60\">\n <IconLoader></IconLoader>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BaseCard } from \"../components/base/card\";\nimport { BaseLabelInfo, BaseRadioGroup, BaseSuccess } from \"../components/base\";\nimport { PayByCard } from \"../components/pay-by-card\";\nimport { PayByTransfer } from \"../components/pay-by-transfer\";\nimport { PayByStableCoin } from \"../components/pay-by-stable-coin\";\nimport {\n IErrorObject,\n IPaymentObject,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport { formatAmount, toastConfig } from \"../utils\";\nimport { IconClose, IconMidenLogo } from \"../components/icons\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\ninterface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\ninterface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\ninterface IMidenCheckoutCardProps {\n secretKey: string;\n environment?: \"sandbox\" | \"prod\";\n paymentObject: IPaymentObject;\n options?: CheckoutCardOptions;\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutCard({\n secretKey,\n options,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n },\n onPaymentAuthorized,\n onError,\n}: IMidenCheckoutCardProps) {\n const [checkoutState, setCheckoutState] = useState<\n \"SUCCESS\" | \"PENDING\" | \"USED\"\n >(\"PENDING\");\n\n const paymentTypeOptions: ISelectOption[] = [\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n ];\n const [filteredPaymentTypeOptions, setFilteredPaymentTypeOptions] = useState<\n ISelectOption[]\n >([]);\n const [paymentType, setPaymentType] = useState<string>(\"\");\n const [successObject, setSuccessObject] = useState<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n });\n\n const paymentTypeHandler = (event: string): void => {\n setPaymentType(event);\n };\n\n const setSuccess = (event: ISuccessObject): void => {\n setSuccessObject({ ...event });\n if (event.paymentStatus === \"authorized\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment authorization successful.\", toastConfig);\n } else if (event.paymentStatus === \"confirmed\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment confirmed.\", toastConfig);\n } else if (event.paymentStatus === \"payment failed\") {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n } else if (event.paymentStatus === \"used\") {\n setCheckoutState(\"USED\");\n } else {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n }\n\n onPaymentAuthorized?.(event);\n };\n\n const onErrorHandler = (error: IErrorObject): void => {\n toast.error(error.errorMessage ?? \"Payment failed.\", toastConfig);\n onError?.(error);\n };\n\n const formatAmountHandler = (): string => {\n return formatAmount(paymentObject.amount, paymentObject.currency);\n };\n\n const formatChargeHandler = (): string => {\n return formatAmount(0, paymentObject.currency);\n };\n\n useEffect(() => {\n let options: ISelectOption[] = [];\n\n if (paymentObject.currency === \"USD\") {\n if (paymentObject.amount < 50) {\n options = paymentTypeOptions.filter(\n (option) =>\n option.value !== \"BANK_TRANSFER\" && option.value !== \"STABLE_COIN\",\n );\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"BANK_TRANSFER\",\n );\n }\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"STABLE_COIN\",\n );\n }\n\n setFilteredPaymentTypeOptions(options);\n }, [paymentObject.currency, paymentObject.amount]);\n\n useEffect(() => {\n if (filteredPaymentTypeOptions.length) {\n setPaymentType(filteredPaymentTypeOptions[0].value);\n }\n }, [filteredPaymentTypeOptions]);\n\n return (\n <BaseCard caller=\"miden\">\n <Toaster />\n <div className=\"grid grid-cols-3\">\n {checkoutState === \"PENDING\" && (\n <div className=\"bg-[#0A0032] py-6 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p className=\"text-white text-body-xs font-semibold px-6\">\n Pay with\n </p>\n <BaseRadioGroup\n caller=\"miden\"\n options={filteredPaymentTypeOptions}\n selectedChange={(e: string) => paymentTypeHandler(e)}\n />\n </div>\n )}\n\n <div\n className={\n checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")\n ? \"col-span-3\"\n : \"col-span-2\"\n }\n >\n {checkoutState === \"PENDING\" && (\n <div className=\"flex items-center justify-between p-6\">\n <IconMidenLogo />\n <IconClose color=\"black\" className=\"cursor-pointer\" />\n </div>\n )}\n\n {checkoutState === \"PENDING\" && (\n <div className=\"px-6 md:px-10 lg:px-14 pt-4 pb-8 flex flex-col gap-6 max-h-[32rem] overflow-y-scroll\">\n <div className=\"flex items-center justify-between py-3 px-4 bg-[#F8FDFF] border border-[#DAE4E8] rounded-lg\">\n <BaseLabelInfo\n label=\"Amount Due\"\n value={formatAmountHandler()}\n />\n <BaseLabelInfo label=\"Charges\" value={formatChargeHandler()} />\n </div>\n\n <div>\n {paymentType === \"CARD\" ? (\n <PayByCard\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : paymentType === \"BANK_TRANSFER\" ? (\n <PayByTransfer\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : (\n <PayByStableCoin\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n )}\n </div>\n </div>\n )}\n\n {(checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")) && (\n <BaseSuccess\n amount={paymentObject.amount}\n currency={paymentObject.currency}\n caller=\"miden\"\n redirectUrl={paymentObject.redirectUrl ?? \"\"}\n successObject={successObject}\n />\n )}\n </div>\n </div>\n </BaseCard>\n );\n}\n"],"mappings":"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","names":["useState","CardSchemes","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","useMemo","jsx","jsxs","useCallback","useEffect","useState","jsx","jsxs","useState","useCallback","url","useEffect","jsx","jsxs","useState","useEffect","useState","useEffect","useRef","useState","React","useEffect","jsx","jsxs","React","useEffect","jsx","jsxs","useState","useRef","useEffect","useCallback","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useCallback","useEffect","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","toast","Toaster","jsx","jsxs","useState","useEffect","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","useRef","useState","useCallback","url","useEffect","jsx","jsxs","useState","useEffect","useState","toast","Toaster","jsx","jsxs","useState","useEffect","options"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/provider.tsx","../src/hooks.ts","../src/buzapay-checkout/checkout-button.tsx","../src/utils/object.util.ts","../src/utils/api.util.ts","../src/utils/string.util.ts","../src/utils/input.util.ts","../src/utils/error.util.ts","../src/utils/card-scheme.util.ts","../src/apis/checkout.api.ts","../src/apis/encrypt.api.ts","../src/apis/resources.api.ts","../src/components/base/input-error.tsx","../src/components/icons/icon-loader.tsx","../src/components/icons/icon-chevron-left.tsx","../src/components/icons/icon-buzapay-icon.tsx","../src/components/icons/icon-check-circle.tsx","../src/components/icons/icon-copy-success.tsx","../src/components/icons/icon-chevron-up.tsx","../src/components/icons/icon-chevron-down.tsx","../src/components/icons/icon-usdt.tsx","../src/components/icons/icon-usdc.tsx","../src/components/icons/icon-arrow-swap.tsx","../src/components/icons/icon-lock.tsx","../src/components/icons/icon-miden-logo.tsx","../src/components/icons/icon-close.tsx","../src/components/icons/icon-courthouse.tsx","../src/components/icons/icon-coin.tsx","../src/components/icons/icon-cards.tsx","../src/components/icons/icon-qr-code.tsx","../src/components/base/button.tsx","../src/components/base/back.tsx","../src/components/base/card.tsx","../src/components/base/radio-group.tsx","../src/components/base/image.tsx","../src/components/base/copy.tsx","../src/components/base/label-info.tsx","../src/components/base/success.tsx","../src/components/base/hint.tsx","../src/components/base/select.tsx","../src/components/base/currency-amount.tsx","../src/components/base/input.tsx","../src/components/base/circular-countdown.tsx","../src/buzapay-checkout/checkout-iframe.tsx","../src/buzapay-checkout/checkout-card.tsx","../src/components/pay-by-card.tsx","../src/components/base/phone-number-input.tsx","../src/components/pay-by-transfer.tsx","../src/components/pay-by-stable-coin.tsx","../src/miden-checkout/checkout-button.tsx","../src/miden-checkout/checkout-iframe.tsx","../src/miden-checkout/checkout-card.tsx"],"sourcesContent":["import type {\n MidenPGConfig,\n CreatePaymentIntentParams,\n PaymentIntent,\n ConfirmCardPaymentParams,\n} from \"./types/types\";\n\nexport class MidenPGClient {\n private readonly base: string;\n constructor(private readonly cfg: MidenPGConfig) {\n this.base = cfg.apiBaseUrl ?? \"https://api.buzapay.com\"; // change to real base\n }\n\n async createPaymentIntent(\n params: CreatePaymentIntentParams\n ): Promise<PaymentIntent> {\n const res = await fetch(`${this.base}/v1/payment_intents`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Publishable-Key\": this.cfg.publishableKey,\n },\n body: JSON.stringify(params),\n });\n if (!res.ok) throw new Error(`Failed to create PI: ${res.status}`);\n return res.json();\n }\n\n async confirmCardPayment(\n params: ConfirmCardPaymentParams\n ): Promise<{ status: PaymentIntent[\"status\"]; id: string }> {\n const res = await fetch(`${this.base}/v1/payment_intents/confirm`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Publishable-Key\": this.cfg.publishableKey,\n },\n body: JSON.stringify(params),\n });\n if (!res.ok) throw new Error(`Failed to confirm: ${res.status}`);\n return res.json();\n }\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport type { MidenPGConfig } from \"./types/types\";\nimport { MidenPGClient } from \"./client\";\n\nconst Ctx = createContext<MidenPGClient | null>(null);\n\nexport const MidenPGProvider: React.FC<\n React.PropsWithChildren<{ config: MidenPGConfig }>\n> = ({ config, children }) => {\n const client = useMemo(\n () => new MidenPGClient(config),\n [config.publishableKey, config.apiBaseUrl]\n );\n return <Ctx.Provider value={client}>{children}</Ctx.Provider>;\n};\n\nexport const useMidenPGClient = () => {\n const ctx = useContext(Ctx);\n if (!ctx)\n throw new Error(\"useMidenPGClient must be used within MidenPGProvider\");\n return ctx;\n};\n","import { useCallback } from \"react\";\nimport { useMidenPGClient } from \"./provider\";\nimport type {\n ConfirmCardPaymentParams,\n CreatePaymentIntentParams,\n} from \"./types/types\";\n\nexport function usePaymentIntents() {\n const client = useMidenPGClient();\n\n const create = useCallback(\n (p: CreatePaymentIntentParams) => client.createPaymentIntent(p),\n [client]\n );\n const confirm = useCallback(\n (p: ConfirmCardPaymentParams) => client.confirmCardPayment(p),\n [client]\n );\n\n return { create, confirm };\n}\n","import { useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { BaseButton, BaseInputError } from \"../components/base\";\nimport { BzpCheckoutIframe } from \"./checkout-iframe\";\n\ninterface IBzpCheckoutButtonProps {\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject: IPaymentObject;\n mode?: \"redirect\" | \"iframe\";\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutButton({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n mode = \"redirect\",\n onError,\n}: IBzpCheckoutButtonProps) {\n const [message, setMessage] = useState(\"\");\n const [launchUrl, setLaunchUrl] = useState(\"\");\n const [urlLaunchUrl, setUrlLaunchUrl] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"buzapay\"\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n setLaunchUrl(response.launchUrl);\n setUrlLaunchUrl(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n setMessage(\"Payment link created successfully\");\n\n if (mode === \"redirect\") {\n // Use the URL from the response, not the (stale) state.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n return urlLaunchUrl && mode === \"iframe\" ? (\n <BzpCheckoutIframe\n url={urlLaunchUrl}\n secretKey={secretKey}\n environment={environment}\n />\n ) : (\n <div>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n loading={loading}\n onClick={generatePaymentLinkHandler}\n />\n <BaseInputError errorMessage={message} />\n </div>\n );\n}\n","import { IDeviceInformation } from \"../types/checkout.type\";\n\nexport const checkObjectTruthy = <T extends object>(obj: T): boolean => {\n if (obj == null || typeof obj !== \"object\") return false;\n return Object.values(obj as Record<string, unknown>).every(Boolean);\n};\n\nexport const getQueryParams = (url: string): Record<string, string> => {\n const params: Record<string, string> = {};\n const searchParams = new URL(url).searchParams;\n\n searchParams.forEach((value, key) => {\n params[key] = value;\n });\n\n return params;\n};\n\nexport function buildDeviceInformation(\n partial?: Partial<IDeviceInformation>,\n): IDeviceInformation {\n const language = navigator.language || (navigator.languages?.[0] ?? \"\");\n const tzOffsetMinutes = String(new Date().getTimezoneOffset()); // e.g. 300 for Toronto (UTC-5) depending on DST\n\n return {\n httpBrowserLanguage: language,\n httpBrowserJavaEnabled:\n typeof navigator.javaEnabled === \"function\"\n ? navigator.javaEnabled()\n : false,\n httpBrowserJavaScriptEnabled: true, // if this code runs, JS is enabled\n httpBrowserColorDepth: String(screen.colorDepth ?? \"\"),\n httpBrowserScreenHeight: String(screen.height ?? \"\"),\n httpBrowserScreenWidth: String(screen.width ?? \"\"),\n httpBrowserTimeDifference: tzOffsetMinutes,\n userAgentBrowserValue: navigator.userAgent ?? \"\",\n deviceChannel: \"BROWSER\",\n deviceIpAddress: \"\",\n httpAcceptContent: language, // browsers don't expose Accept header; use language as a proxy (or set app value)\n ...partial,\n };\n}\n\nexport const toastConfig: any = {\n position: \"top-right\",\n style: { fontSize: \"12px\" },\n};\n","export const getBaseUrl = (\n mode: string,\n caller: \"buzapay\" | \"miden\",\n): string => {\n if (mode === \"sandbox\") {\n return caller === \"buzapay\"\n ? \"https://sandbox-api.buzapay.com/payment-gateway-api\"\n : \"https://sandbox-api.midencards.io/miden-web\";\n } else if (mode === \"prod\") {\n return caller === \"buzapay\"\n ? \"https://api.buzapay.com/payment-gateway-api\"\n : \"https://api.midencards.io/miden-web\";\n }\n return \"\";\n};\n\nexport const getBaseAppUrl = (\n mode: string,\n caller: \"buzapay\" | \"miden\",\n): string => {\n if (mode === \"sandbox\") {\n return caller === \"buzapay\"\n ? \"https://sandbox-merchant.buzapay.com\"\n : \"https://sandbox.midencards.io\";\n } else if (mode === \"prod\") {\n return caller === \"buzapay\"\n ? \"https://merchant.buzapay.com\"\n : \"https://midencards.io\";\n }\n return \"\";\n};\n","export const currencySign = (currency: string): string => {\n if (currency === \"USD\") return \"$\";\n if (currency === \"NGN\") return \"₦\";\n if (currency === \"EUR\") return \"€\";\n if (currency === \"GBP\") return \"£\";\n if (currency === \"JPY\") return \"¥\";\n if (currency === \"CNY\") return \"¥\";\n if (currency === \"USDC\" || currency === \"usdc\") return \"$⧫\";\n if (currency === \"USDT\" || currency === \"usdt\") return \"₮\";\n return \"$\";\n};\n\nexport const formatAmount = (\n value: number | string,\n currency?: string\n): string => {\n const num = typeof value === \"string\" ? parseFloat(value) : value;\n if (isNaN(num)) return \"0\";\n return `${currency ? currencySign(currency) : \"\"}${num?.toLocaleString(\n \"en-US\"\n )}`;\n};\n\nexport const truncateString = (str: string, num: number): string => {\n if (str.length <= num) {\n return str;\n }\n return str.slice(0, num) + \"...\";\n};\n","import { ICountryDropdown } from \"../types\";\n\nexport const restrictToNumericKeys = (event: KeyboardEvent): void => {\n const allowedKeys = [\n \"Backspace\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Delete\",\n \"Home\",\n \"End\",\n \".\",\n ];\n\n if (\n (event.ctrlKey || event.metaKey) &&\n [\"a\", \"c\", \"v\", \"x\"].includes(event.key.toLowerCase())\n ) {\n return; // allow copy/paste/select\n }\n\n // Prevent non-numeric keys\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Prevent multiple decimals\n if (\n event.key === \".\" &&\n (event.target as HTMLInputElement).value.includes(\".\")\n ) {\n event.preventDefault();\n }\n};\n\nexport const COUNTRIES: ICountryDropdown[] = [\n { name: 'Afghanistan', code: 'AF', phoneCode: '+93', flag: '🇦🇫' },\n { name: 'Albania', code: 'AL', phoneCode: '+355', flag: '🇦🇱' },\n { name: 'Algeria', code: 'DZ', phoneCode: '+213', flag: '🇩🇿' },\n { name: 'American Samoa', code: 'AS', phoneCode: '+1', flag: '🇦🇸' },\n { name: 'Andorra', code: 'AD', phoneCode: '+376', flag: '🇦🇩' },\n { name: 'Angola', code: 'AO', phoneCode: '+244', flag: '🇦🇴' },\n { name: 'Anguilla', code: 'AI', phoneCode: '+1', flag: '🇦🇮' },\n { name: 'Antarctica', code: 'AQ', phoneCode: '+672', flag: '🇦🇶' },\n { name: 'Antigua and Barbuda', code: 'AG', phoneCode: '+1', flag: '🇦🇬' },\n { name: 'Argentina', code: 'AR', phoneCode: '+54', flag: '🇦🇷' },\n { name: 'Armenia', code: 'AM', phoneCode: '+374', flag: '🇦🇲' },\n { name: 'Aruba', code: 'AW', phoneCode: '+297', flag: '🇦🇼' },\n { name: 'Australia', code: 'AU', phoneCode: '+61', flag: '🇦🇺' },\n { name: 'Austria', code: 'AT', phoneCode: '+43', flag: '🇦🇹' },\n { name: 'Azerbaijan', code: 'AZ', phoneCode: '+994', flag: '🇦🇿' },\n { name: 'Bahamas', code: 'BS', phoneCode: '+1', flag: '🇧🇸' },\n { name: 'Bahrain', code: 'BH', phoneCode: '+973', flag: '🇧🇭' },\n { name: 'Bangladesh', code: 'BD', phoneCode: '+880', flag: '🇧🇩' },\n { name: 'Barbados', code: 'BB', phoneCode: '+1', flag: '🇧🇧' },\n { name: 'Belarus', code: 'BY', phoneCode: '+375', flag: '🇧🇾' },\n { name: 'Belgium', code: 'BE', phoneCode: '+32', flag: '🇧🇪' },\n { name: 'Belize', code: 'BZ', phoneCode: '+501', flag: '🇧🇿' },\n { name: 'Benin', code: 'BJ', phoneCode: '+229', flag: '🇧🇯' },\n { name: 'Bermuda', code: 'BM', phoneCode: '+1', flag: '🇧🇲' },\n { name: 'Bhutan', code: 'BT', phoneCode: '+975', flag: '🇧🇹' },\n { name: 'Bolivia', code: 'BO', phoneCode: '+591', flag: '🇧🇴' },\n { name: 'Bosnia and Herzegovina', code: 'BA', phoneCode: '+387', flag: '🇧🇦' },\n { name: 'Botswana', code: 'BW', phoneCode: '+267', flag: '🇧🇼' },\n { name: 'Bouvet Island', code: 'BV', phoneCode: '+47', flag: '🇧🇻' },\n { name: 'Brazil', code: 'BR', phoneCode: '+55', flag: '🇧🇷' },\n { name: 'British Indian Ocean Territory', code: 'IO', phoneCode: '+246', flag: '🇮🇴' },\n { name: 'Brunei Darussalam', code: 'BN', phoneCode: '+673', flag: '🇧🇳' },\n { name: 'Bulgaria', code: 'BG', phoneCode: '+359', flag: '🇧🇬' },\n { name: 'Burkina Faso', code: 'BF', phoneCode: '+226', flag: '🇧🇫' },\n { name: 'Burundi', code: 'BI', phoneCode: '+257', flag: '🇧🇮' },\n { name: 'Cambodia', code: 'KH', phoneCode: '+855', flag: '🇰🇭' },\n { name: 'Cameroon', code: 'CM', phoneCode: '+237', flag: '🇨🇲' },\n { name: 'Canada', code: 'CA', phoneCode: '+1', flag: '🇨🇦' },\n { name: 'Cape Verde', code: 'CV', phoneCode: '+238', flag: '🇨🇻' },\n { name: 'Cayman Islands', code: 'KY', phoneCode: '+1', flag: '🇰🇾' },\n { name: 'Central African Republic', code: 'CF', phoneCode: '+236', flag: '🇨🇫' },\n { name: 'Chad', code: 'TD', phoneCode: '+235', flag: '🇹🇩' },\n { name: 'Chile', code: 'CL', phoneCode: '+56', flag: '🇨🇱' },\n { name: 'China', code: 'CN', phoneCode: '+86', flag: '🇨🇳' },\n { name: 'Christmas Island', code: 'CX', phoneCode: '+61', flag: '🇨🇽' },\n { name: 'Cocos (Keeling) Islands', code: 'CC', phoneCode: '+61', flag: '🇨🇨' },\n { name: 'Colombia', code: 'CO', phoneCode: '+57', flag: '🇨🇴' },\n { name: 'Comoros', code: 'KM', phoneCode: '+269', flag: '🇰🇲' },\n { name: 'Congo', code: 'CG', phoneCode: '+242', flag: '🇨🇬' },\n { name: 'Congo, Democratic Republic of the', code: 'CD', phoneCode: '+243', flag: '🇨🇩' },\n { name: 'Cook Islands', code: 'CK', phoneCode: '+682', flag: '🇨🇰' },\n { name: 'Costa Rica', code: 'CR', phoneCode: '+506', flag: '🇨🇷' },\n { name: 'Côte d\\'Ivoire', code: 'CI', phoneCode: '+225', flag: '🇨🇮' },\n { name: 'Croatia', code: 'HR', phoneCode: '+385', flag: '🇭🇷' },\n { name: 'Cuba', code: 'CU', phoneCode: '+53', flag: '🇨🇺' },\n { name: 'Cyprus', code: 'CY', phoneCode: '+357', flag: '🇨🇾' },\n { name: 'Czech Republic', code: 'CZ', phoneCode: '+420', flag: '🇨🇿' },\n { name: 'Denmark', code: 'DK', phoneCode: '+45', flag: '🇩🇰' },\n { name: 'Djibouti', code: 'DJ', phoneCode: '+253', flag: '🇩🇯' },\n { name: 'Dominica', code: 'DM', phoneCode: '+1', flag: '🇩🇲' },\n { name: 'Dominican Republic', code: 'DO', phoneCode: '+1', flag: '🇩🇴' },\n { name: 'Ecuador', code: 'EC', phoneCode: '+593', flag: '🇪🇨' },\n { name: 'Egypt', code: 'EG', phoneCode: '+20', flag: '🇪🇬' },\n { name: 'El Salvador', code: 'SV', phoneCode: '+503', flag: '🇸🇻' },\n { name: 'Equatorial Guinea', code: 'GQ', phoneCode: '+240', flag: '🇬🇶' },\n { name: 'Eritrea', code: 'ER', phoneCode: '+291', flag: '🇪🇷' },\n { name: 'Estonia', code: 'EE', phoneCode: '+372', flag: '🇪🇪' },\n { name: 'Ethiopia', code: 'ET', phoneCode: '+251', flag: '🇪🇹' },\n { name: 'Falkland Islands (Malvinas)', code: 'FK', phoneCode: '+500', flag: '🇫🇰' },\n { name: 'Faroe Islands', code: 'FO', phoneCode: '+298', flag: '🇫🇴' },\n { name: 'Fiji', code: 'FJ', phoneCode: '+679', flag: '🇫🇯' },\n { name: 'Finland', code: 'FI', phoneCode: '+358', flag: '🇫🇮' },\n { name: 'France', code: 'FR', phoneCode: '+33', flag: '🇫🇷' },\n { name: 'French Guiana', code: 'GF', phoneCode: '+594', flag: '🇬🇫' },\n { name: 'French Polynesia', code: 'PF', phoneCode: '+689', flag: '🇵🇫' },\n { name: 'French Southern Territories', code: 'TF', phoneCode: '+262', flag: '🇹🇫' },\n { name: 'Gabon', code: 'GA', phoneCode: '+240', flag: '🇬🇦' },\n { name: 'Gambia', code: 'GM', phoneCode: '+220', flag: '🇬🇲' },\n { name: 'Georgia', code: 'GE', phoneCode: '+995', flag: '🇬🇪' },\n { name: 'Germany', code: 'DE', phoneCode: '+49', flag: '🇩🇪' },\n { name: 'Ghana', code: 'GH', phoneCode: '+233', flag: '🇬🇭' },\n { name: 'Gibraltar', code: 'GI', phoneCode: '+350', flag: '🇬🇮' },\n { name: 'Greece', code: 'GR', phoneCode: '+30', flag: '🇬🇷' },\n { name: 'Greenland', code: 'GL', phoneCode: '+299', flag: '🇬🇱' },\n { name: 'Grenada', code: 'GD', phoneCode: '+1', flag: '🇬🇩' },\n { name: 'Guadeloupe', code: 'GP', phoneCode: '+590', flag: '🇬🇵' },\n { name: 'Guam', code: 'GU', phoneCode: '+1', flag: '🇬🇺' },\n { name: 'Guatemala', code: 'GT', phoneCode: '+502', flag: '🇬🇹' },\n { name: 'Guernsey', code: 'GG', phoneCode: '+44', flag: '🇬🇬' },\n { name: 'Guinea', code: 'GN', phoneCode: '+224', flag: '🇬🇳' },\n { name: 'Guinea-Bissau', code: 'GW', phoneCode: '+245', flag: '🇬🇼' },\n { name: 'Guyana', code: 'GY', phoneCode: '+592', flag: '🇬🇾' },\n { name: 'Haiti', code: 'HT', phoneCode: '+509', flag: '🇭🇹' },\n { name: 'Heard Island and McDonald Islands', code: 'HM', phoneCode: '+672', flag: '🇭🇲' },\n { name: 'Holy See (Vatican City State)', code: 'VA', phoneCode: '+39', flag: '🇻🇦' },\n { name: 'Honduras', code: 'HN', phoneCode: '+504', flag: '🇭🇳' },\n { name: 'Hong Kong', code: 'HK', phoneCode: '+852', flag: '🇭🇰' },\n { name: 'Hungary', code: 'HU', phoneCode: '+36', flag: '🇭🇺' },\n { name: 'Iceland', code: 'IS', phoneCode: '+354', flag: '🇮🇸' },\n { name: 'India', code: 'IN', phoneCode: '+91', flag: '🇮🇳' },\n { name: 'Indonesia', code: 'ID', phoneCode: '+62', flag: '🇮🇩' },\n { name: 'Iran, Islamic Republic of', code: 'IR', phoneCode: '+98', flag: '🇮🇷' },\n { name: 'Iraq', code: 'IQ', phoneCode: '+964', flag: '🇮🇶' },\n { name: 'Ireland', code: 'IE', phoneCode: '+353', flag: '🇮🇪' },\n { name: 'Isle of Man', code: 'IM', phoneCode: '+44', flag: '🇮🇲' },\n { name: 'Israel', code: 'IL', phoneCode: '+972', flag: '🇮🇱' },\n { name: 'Italy', code: 'IT', phoneCode: '+39', flag: '🇮🇹' },\n { name: 'Jamaica', code: 'JM', phoneCode: '+1', flag: '🇯🇲' },\n { name: 'Japan', code: 'JP', phoneCode: '+81', flag: '🇯🇵' },\n { name: 'Jersey', code: 'JE', phoneCode: '+44', flag: '🇯🇪' },\n { name: 'Jordan', code: 'JO', phoneCode: '+962', flag: '🇯🇴' },\n { name: 'Kazakhstan', code: 'KZ', phoneCode: '+7', flag: '🇰🇿' },\n { name: 'Kenya', code: 'KE', phoneCode: '+254', flag: '🇰🇪' },\n { name: 'Kiribati', code: 'KI', phoneCode: '+686', flag: '🇰🇮' },\n { name: 'Korea, Democratic People\\'s Republic of', code: 'KP', phoneCode: '+850', flag: '🇰🇵' },\n { name: 'Korea, Republic of', code: 'KR', phoneCode: '+82', flag: '🇰🇷' },\n { name: 'Kuwait', code: 'KW', phoneCode: '+965', flag: '🇰🇼' },\n { name: 'Kyrgyzstan', code: 'KG', phoneCode: '+996', flag: '🇰🇬' },\n { name: 'Lao People\\'s Democratic Republic', code: 'LA', phoneCode: '+856', flag: '🇱🇦' },\n { name: 'Latvia', code: 'LV', phoneCode: '+371', flag: '🇱🇻' },\n { name: 'Lebanon', code: 'LB', phoneCode: '+961', flag: '🇱🇧' },\n { name: 'Lesotho', code: 'LS', phoneCode: '+266', flag: '🇱🇸' },\n { name: 'Liberia', code: 'LR', phoneCode: '+231', flag: '🇱🇷' },\n { name: 'Libya', code: 'LY', phoneCode: '+218', flag: '🇱🇾' },\n { name: 'Liechtenstein', code: 'LI', phoneCode: '+423', flag: '🇱🇮' },\n { name: 'Lithuania', code: 'LT', phoneCode: '+370', flag: '🇱🇹' },\n { name: 'Luxembourg', code: 'LU', phoneCode: '+352', flag: '🇱🇺' },\n { name: 'Macao', code: 'MO', phoneCode: '+853', flag: '🇲🇴' },\n { name: 'Macedonia, the former Yugoslav Republic of', code: 'MK', phoneCode: '+389', flag: '🇲🇰' },\n { name: 'Madagascar', code: 'MG', phoneCode: '+261', flag: '🇲🇬' },\n { name: 'Malawi', code: 'MW', phoneCode: '+265', flag: '🇲🇼' },\n { name: 'Malaysia', code: 'MY', phoneCode: '+60', flag: '🇲🇾' },\n { name: 'Maldives', code: 'MV', phoneCode: '+960', flag: '🇲🇻' },\n { name: 'Mali', code: 'ML', phoneCode: '+223', flag: '🇲🇱' },\n { name: 'Malta', code: 'MT', phoneCode: '+356', flag: '🇲🇹' },\n { name: 'Marshall Islands', code: 'MH', phoneCode: '+692', flag: '🇲🇭' },\n { name: 'Martinique', code: 'MQ', phoneCode: '+596', flag: '🇲🇶' },\n { name: 'Mauritania', code: 'MR', phoneCode: '+222', flag: '🇲🇷' },\n { name: 'Mauritius', code: 'MU', phoneCode: '+230', flag: '🇲🇺' },\n { name: 'Mayotte', code: 'YT', phoneCode: '+262', flag: '🇾🇹' },\n { name: 'Mexico', code: 'MX', phoneCode: '+52', flag: '🇲🇽' },\n { name: 'Micronesia, Federated States of', code: 'FM', phoneCode: '+691', flag: '🇫🇲' },\n { name: 'Moldova, Republic of', code: 'MD', phoneCode: '+373', flag: '🇲🇩' },\n { name: 'Monaco', code: 'MC', phoneCode: '+377', flag: '🇲🇨' },\n { name: 'Mongolia', code: 'MN', phoneCode: '+976', flag: '🇲🇳' },\n { name: 'Montenegro', code: 'ME', phoneCode: '+382', flag: '🇲🇪' },\n { name: 'Montserrat', code: 'MS', phoneCode: '+1', flag: '🇲🇸' },\n { name: 'Morocco', code: 'MA', phoneCode: '+212', flag: '🇲🇦' },\n { name: 'Mozambique', code: 'MZ', phoneCode: '+258', flag: '🇲🇿' },\n { name: 'Myanmar', code: 'MM', phoneCode: '+95', flag: '🇲🇲' },\n { name: 'Namibia', code: 'NA', phoneCode: '+264', flag: '🇳🇦' },\n { name: 'Nauru', code: 'NR', phoneCode: '+674', flag: '🇳🇷' },\n { name: 'Nepal', code: 'NP', phoneCode: '+977', flag: '🇳🇵' },\n { name: 'Netherlands', code: 'NL', phoneCode: '+31', flag: '🇳🇱' },\n { name: 'New Caledonia', code: 'NC', phoneCode: '+687', flag: '🇳🇨' },\n { name: 'New Zealand', code: 'NZ', phoneCode: '+64', flag: '🇳🇿' },\n { name: 'Nicaragua', code: 'NI', phoneCode: '+505', flag: '🇳🇮' },\n { name: 'Niger', code: 'NE', phoneCode: '+227', flag: '🇳🇪' },\n { name: 'Nigeria', code: 'NG', phoneCode: '+234', flag: '🇳🇬' },\n { name: 'Niue', code: 'NU', phoneCode: '+683', flag: '🇳🇺' },\n { name: 'Norfolk Island', code: 'NF', phoneCode: '+672', flag: '🇳🇫' },\n { name: 'Northern Mariana Islands', code: 'MP', phoneCode: '+1', flag: '🇲🇵' },\n { name: 'Norway', code: 'NO', phoneCode: '+47', flag: '🇳🇴' },\n { name: 'Oman', code: 'OM', phoneCode: '+968', flag: '🇴🇲' },\n { name: 'Pakistan', code: 'PK', phoneCode: '+92', flag: '🇵🇰' },\n { name: 'Palau', code: 'PW', phoneCode: '+680', flag: '🇵🇼' },\n { name: 'Palestinian Territory, Occupied', code: 'PS', phoneCode: '+970', flag: '🇵🇸' },\n { name: 'Panama', code: 'PA', phoneCode: '+507', flag: '🇵🇦' },\n { name: 'Papua New Guinea', code: 'PG', phoneCode: '+675', flag: '🇵🇬' },\n { name: 'Paraguay', code: 'PY', phoneCode: '+595', flag: '🇵🇾' },\n { name: 'Peru', code: 'PE', phoneCode: '+51', flag: '🇵🇪' },\n { name: 'Philippines', code: 'PH', phoneCode: '+63', flag: '🇵🇭' },\n { name: 'Pitcairn', code: 'PN', phoneCode: '+64', flag: '🇵🇳' },\n { name: 'Poland', code: 'PL', phoneCode: '+48', flag: '🇵🇱' },\n { name: 'Portugal', code: 'PT', phoneCode: '+351', flag: '🇵🇹' },\n { name: 'Puerto Rico', code: 'PR', phoneCode: '+1', flag: '🇵🇷' },\n { name: 'Qatar', code: 'QA', phoneCode: '+974', flag: '🇶🇦' },\n { name: 'Réunion', code: 'RE', phoneCode: '+262', flag: '🇷🇪' },\n { name: 'Romania', code: 'RO', phoneCode: '+40', flag: '🇷🇴' },\n { name: 'Russian Federation', code: 'RU', phoneCode: '+7', flag: '🇷🇺' },\n { name: 'Rwanda', code: 'RW', phoneCode: '+250', flag: '🇷🇼' },\n { name: 'Saint Barthélemy', code: 'BL', phoneCode: '+590', flag: '🇧🇱' },\n { name: 'Saint Helena, Ascension and Tristan da Cunha', code: 'SH', phoneCode: '+290', flag: '🇸🇭' },\n { name: 'Saint Kitts and Nevis', code: 'KN', phoneCode: '+1', flag: '🇰🇳' },\n { name: 'Saint Lucia', code: 'LC', phoneCode: '+1', flag: '🇱🇨' },\n { name: 'Saint Martin (French part)', code: 'MF', phoneCode: '+590', flag: '🇲🇫' },\n { name: 'Saint Pierre and Miquelon', code: 'PM', phoneCode: '+508', flag: '🇵🇲' },\n { name: 'Saint Vincent and the Grenadines', code: 'VC', phoneCode: '+1', flag: '🇻🇨' },\n { name: 'Samoa', code: 'WS', phoneCode: '+685', flag: '🇼🇸' },\n { name: 'San Marino', code: 'SM', phoneCode: '+378', flag: '🇸🇲' },\n { name: 'Sao Tome and Principe', code: 'ST', phoneCode: '+239', flag: '🇸🇹' },\n { name: 'Saudi Arabia', code: 'SA', phoneCode: '+966', flag: '🇸🇦' },\n { name: 'Senegal', code: 'SN', phoneCode: '+221', flag: '🇸🇳' },\n { name: 'Serbia', code: 'RS', phoneCode: '+381', flag: '🇷🇸' },\n { name: 'Seychelles', code: 'SC', phoneCode: '+248', flag: '🇸🇨' },\n { name: 'Sierra Leone', code: 'SL', phoneCode: '+232', flag: '🇸🇱' },\n { name: 'Singapore', code: 'SG', phoneCode: '+65', flag: '🇸🇬' },\n { name: 'Sint Maarten (Dutch part)', code: 'SX', phoneCode: '+1', flag: '🇸🇽' },\n { name: 'Slovakia', code: 'SK', phoneCode: '+421', flag: '🇸🇰' },\n { name: 'Slovenia', code: 'SI', phoneCode: '+386', flag: '🇸🇮' },\n { name: 'Solomon Islands', code: 'SB', phoneCode: '+677', flag: '🇸🇧' },\n { name: 'Somalia', code: 'SO', phoneCode: '+252', flag: '🇸🇴' },\n { name: 'South Africa', code: 'ZA', phoneCode: '+27', flag: '🇿🇦' },\n { name: 'South Georgia and the South Sandwich Islands', code: 'GS', phoneCode: '+500', flag: '🇬🇸' },\n { name: 'South Sudan', code: 'SS', phoneCode: '+211', flag: '🇸🇸' },\n { name: 'Spain', code: 'ES', phoneCode: '+34', flag: '🇪🇸' },\n { name: 'Sri Lanka', code: 'LK', phoneCode: '+94', flag: '🇱🇰' },\n { name: 'Sudan', code: 'SD', phoneCode: '+249', flag: '🇸🇩' },\n { name: 'Suriname', code: 'SR', phoneCode: '+597', flag: '🇸🇷' },\n { name: 'Svalbard and Jan Mayen', code: 'SJ', phoneCode: '+47', flag: '🇸🇯' },\n { name: 'Swaziland', code: 'SZ', phoneCode: '+268', flag: '🇸🇿' },\n { name: 'Sweden', code: 'SE', phoneCode: '+46', flag: '🇸🇪' },\n { name: 'Switzerland', code: 'CH', phoneCode: '+41', flag: '🇨🇭' },\n { name: 'Syrian Arab Republic', code: 'SY', phoneCode: '+963', flag: '🇸🇾' },\n { name: 'Taiwan, Province of China', code: 'TW', phoneCode: '+886', flag: '🇹🇼' },\n { name: 'Tajikistan', code: 'TJ', phoneCode: '+992', flag: '🇹🇯' },\n { name: 'Tanzania, United Republic of', code: 'TZ', phoneCode: '+255', flag: '🇹🇿' },\n { name: 'Thailand', code: 'TH', phoneCode: '+66', flag: '🇹🇭' },\n { name: 'Timor-Leste', code: 'TL', phoneCode: '+670', flag: '🇹🇱' },\n { name: 'Togo', code: 'TG', phoneCode: '+228', flag: '🇹🇬' },\n { name: 'Tokelau', code: 'TK', phoneCode: '+690', flag: '🇹🇰' },\n { name: 'Tonga', code: 'TO', phoneCode: '+676', flag: '🇹🇴' },\n { name: 'Trinidad and Tobago', code: 'TT', phoneCode: '+1', flag: '🇹🇹' },\n { name: 'Tunisia', code: 'TN', phoneCode: '+216', flag: '🇹🇳' },\n { name: 'Turkey', code: 'TR', phoneCode: '+90', flag: '🇹🇷' },\n { name: 'Turkmenistan', code: 'TM', phoneCode: '+993', flag: '🇹🇲' },\n { name: 'Turks and Caicos Islands', code: 'TC', phoneCode: '+1', flag: '🇹🇨' },\n { name: 'Tuvalu', code: 'TV', phoneCode: '+688', flag: '🇹🇻' },\n { name: 'Uganda', code: 'UG', phoneCode: '+256', flag: '🇺🇬' },\n { name: 'Ukraine', code: 'UA', phoneCode: '+380', flag: '🇺🇦' },\n { name: 'United Arab Emirates', code: 'AE', phoneCode: '+971', flag: '🇦🇪' },\n { name: 'United Kingdom', code: 'GB', phoneCode: '+44', flag: '🇬🇧' },\n { name: 'United States', code: 'US', phoneCode: '+1', flag: '🇺🇸' },\n { name: 'United States Minor Outlying Islands', code: 'UM', phoneCode: '+1', flag: '🇺🇲' },\n { name: 'Uruguay', code: 'UY', phoneCode: '+598', flag: '🇺🇾' },\n { name: 'Uzbekistan', code: 'UZ', phoneCode: '+998', flag: '🇺🇿' },\n { name: 'Vanuatu', code: 'VU', phoneCode: '+678', flag: '🇻🇺' },\n { name: 'Venezuela, Bolivarian Republic of', code: 'VE', phoneCode: '+58', flag: '🇻🇪' },\n { name: 'Viet Nam', code: 'VN', phoneCode: '+84', flag: '🇻🇳' },\n { name: 'Virgin Islands, British', code: 'VG', phoneCode: '+1', flag: '🇻🇬' },\n { name: 'Virgin Islands, U.S.', code: 'VI', phoneCode: '+1', flag: '🇻🇮' },\n { name: 'Wallis and Futuna', code: 'WF', phoneCode: '+681', flag: '🇼🇫' },\n { name: 'Western Sahara', code: 'EH', phoneCode: '+212', flag: '🇪🇭' },\n { name: 'Yemen', code: 'YE', phoneCode: '+967', flag: '🇾🇪' },\n { name: 'Zambia', code: 'ZM', phoneCode: '+260', flag: '🇿🇲' },\n { name: 'Zimbabwe', code: 'ZW', phoneCode: '+263', flag: '🇿🇼' }\n];","export interface RulesListItem {\n rule: string;\n value?: string; // optional (for rules without a value)\n}\n\nconst validateRegex = (value: string, regex: RegExp) => regex.test(value);\n\nfunction parseRules(rules: string): RulesListItem[] {\n if (!rules) return [];\n return rules.split(\"|\").map((chunk) => {\n const [rule, val] = chunk.split(\":\");\n return { rule: rule as string, value: val };\n });\n}\n\nexport function getValidationErrorMessage(\n rulesStr: string,\n inputValue: string,\n label: string\n): string | null {\n const errors: string[] = [];\n const rules = parseRules(rulesStr);\n const lowerLabel = (label || \"This field\").toLowerCase();\n const v = inputValue ?? \"\";\n\n const num = Number(v);\n const hasNum = !Number.isNaN(num);\n\n for (const r of rules) {\n switch (r.rule) {\n case \"required\":\n if (!v) errors.push(`The ${lowerLabel} field is required`);\n break;\n\n case \"alpha\":\n if (!validateRegex(v, /^[a-zA-Z]+$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters`\n );\n break;\n\n case \"at_least_one_uppercase\":\n if (!validateRegex(v, /.*[A-Z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one uppercase character`\n );\n break;\n\n case \"at_least_one_lowercase\":\n if (!validateRegex(v, /.*[a-z].*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one lowercase character`\n );\n break;\n\n case \"at_least_one_number\":\n if (!validateRegex(v, /.*\\d.*/))\n errors.push(\n `The ${lowerLabel} field must contain at least one number`\n );\n break;\n\n case \"alpha_num\":\n if (!validateRegex(v, /^[a-z0-9]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and numbers`\n );\n break;\n\n case \"num_spaces\":\n if (!validateRegex(v, /^[0-9\\s]+$/i))\n errors.push(\n `The ${lowerLabel} field must only contain space and numbers`\n );\n break;\n\n case \"alpha_spaces\":\n if (!validateRegex(v, /^[A-Za-z\\s]*$/))\n errors.push(\n `The ${lowerLabel} field must only contain alphabetic characters and spaces`\n );\n break;\n\n case \"numeric\":\n if (!validateRegex(v, /^\\d+$/))\n errors.push(`The ${lowerLabel} field must only contain numbers`);\n break;\n\n case \"no_special\":\n if (validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must not contain special characters`\n );\n break;\n\n case \"at_least_one_special\":\n if (!validateRegex(v, /[^a-zA-Z0-9\\s]/))\n errors.push(\n `The ${lowerLabel} field must contain at least one special character`\n );\n break;\n\n case \"email\":\n if (!validateRegex(v, /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/)) {\n errors.push(\"Please enter a valid email address\");\n }\n break;\n\n case \"is\":\n if (r.value !== v) errors.push(`Value entered must be ${r.value}`);\n break;\n\n case \"is_not\":\n if (r.value === v) errors.push(`Value entered must not be ${r.value}`);\n break;\n\n case \"char_length\":\n if (v.length !== Number(r.value))\n errors.push(\n `The ${lowerLabel} field must be ${r.value} characters long`\n );\n break;\n\n case \"min_char_length\":\n if (v.length < Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be less than ${r.value} characters long`\n );\n break;\n\n case \"max_char_length\":\n if (v.length > Number(r.value))\n errors.push(\n `The ${lowerLabel} field must not be greater than ${r.value} characters long`\n );\n break;\n\n // Age rules treat the value as a number (strict numeric compare)\n case \"age\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Age entered must be ${r.value}`);\n break;\n\n case \"min_age\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Age entered must not be less than ${r.value}`);\n break;\n\n case \"max_age\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Age entered must not be greater than ${r.value}`);\n break;\n\n // Numeric value rules (general numbers)\n case \"num_is\":\n if (!hasNum || num !== Number(r.value))\n errors.push(`Number entered must be ${r.value}`);\n break;\n\n case \"num_is_not\":\n if (hasNum && num === Number(r.value))\n errors.push(`Number entered must not be ${r.value}`);\n break;\n\n case \"min_number\":\n if (!hasNum || num < Number(r.value))\n errors.push(`Number entered must not be less than ${r.value}`);\n break;\n\n case \"max_number\":\n if (!hasNum || num > Number(r.value))\n errors.push(`Number entered must not be greater than ${r.value}`);\n break;\n\n default:\n // Unknown rule: ignore silently (or push a generic error if you prefer)\n break;\n }\n }\n\n return errors.length > 0 ? errors[0] : null;\n}\n\nexport const validateGroup = (\n values: Record<string, string>,\n rulesMap: Record<string, string>,\n prettyLabels?: Record<string, string> // optional: override labels in messages\n) => {\n const out: Record<string, string> = {};\n for (const [field, rules] of Object.entries(rulesMap)) {\n if (!rules) continue;\n const label = prettyLabels?.[field] ?? field;\n const err = getValidationErrorMessage(rules, values[field] ?? \"\", label);\n if (err) out[field] = err;\n }\n return out;\n};\n","export enum CardSchemes {\n Visa = 1,\n MasterCard = 2,\n Verve = 3,\n MastercardAndVisa = 4,\n AmericanExpress = 5,\n Discover = 6,\n JCB = 7,\n DinersClub = 8,\n Maestro = 9,\n UnionPay = 10,\n UnionPay3DS = 11, // based on known test BINs only\n UnionPayNon3DS = 12, // based on known test BINs only\n UATP = 13,\n PayPak = 14,\n Jaywan = 15,\n Mada = 16, // mada-only\n MadaVisa = 17,\n MadaMastercard = 18,\n Unknown = 19,\n}\n\n// ---------- Generic scheme regexes ----------\nconst VISA_RE = /^4\\d{12}(\\d{3}){0,2}$/; // 13, 16, 19 digits\nconst MC_RE =\n /^(?:5[1-5]\\d{14}|2(?:2(?:2[1-9]|[3-9]\\d)|[3-6]\\d{2}|7(?:[01]\\d|20))\\d{12})(?:\\d{0,3})?$/; // 16-19\nconst AMEX_RE = /^(34|37)\\d{13}$/; // 15\nconst DISCOVER_RE =\n /^(?:6011|65|64[4-9]|622(?:12[6-9]|1[3-9]\\d|[2-8]\\d{2}|9(?:0\\d|1\\d|2[0-5])))\\d{12,15}$/; // 16-19\nconst JCB_RE = /^(?:35(?:2[8-9]|[3-8]\\d))\\d{12,15}$/; // 16-19\nconst DINERS_RE = /^(?:3(?:0[0-5]\\d|095|6\\d|[89]\\d))\\d{11,13}$/; // 14-16\nconst MAESTRO_RE = /^(?:50|5[6-9]|6[0-9])\\d{10,17}$/; // 12-19\nconst UNIONPAY_RE = /^62\\d{14,17}$/; // 16-19\nconst UATP_RE = /^1\\d{14}$/; // 15\n\n// ---------- Known local/test BINs ----------\nconst VERVE_BIN6_RANGES: Array<[number, number]> = [\n [506099, 506198],\n [650002, 650027],\n];\nconst VERVE_BIN6_SINGLES = new Set<number>([507865, 507866]);\nconst PAYPAK_BIN6 = new Set<number>([220545, 220543]);\nconst JAYWAN_BIN7 = new Set<number>([6690109]);\nconst MADA_ONLY_BIN6 = new Set<number>([968209, 873646]);\nconst MADA_VISA_BIN6 = new Set<number>([422818, 486094]);\nconst MADA_MC_BIN6 = new Set<number>([529741, 543357]);\nconst UNIONPAY_3DS_BIN6 = new Set<number>([620108]);\nconst UNIONPAY_NON3DS_BIN6 = new Set<number>([621423]);\n\nexport function cardTypeHandler(cardNumber: string): string {\n const scheme = detect(cardNumber);\n return CardSchemes[scheme]; // numeric enum reverse mapping -> name\n}\n\nexport function detect(cardNumber: string): CardSchemes {\n if (!cardNumber || !cardNumber.trim()) return CardSchemes.Unknown;\n\n // Normalize: digits only\n const digits = cardNumber.replace(/\\D/g, '');\n if (digits.length < 12 || digits.length > 19) return CardSchemes.Unknown;\n\n // ---------- 1) Exact local/test BIN routing FIRST ----------\n if (digits.length >= 6) {\n const bin6 = parseInt(digits.slice(0, 6), 10);\n\n // mada-only\n if (MADA_ONLY_BIN6.has(bin6) && digits.length >= 16 && digits.length <= 19)\n return CardSchemes.Mada;\n\n // mada Visa\n if (MADA_VISA_BIN6.has(bin6) && VISA_RE.test(digits)) return CardSchemes.MadaVisa;\n\n // mada Mastercard\n if (MADA_MC_BIN6.has(bin6) && MC_RE.test(digits)) return CardSchemes.MadaMastercard;\n\n // PayPak\n if (PAYPAK_BIN6.has(bin6) && digits.length === 16) return CardSchemes.PayPak;\n\n // UnionPay test BINs with 3DS status\n if (UNIONPAY_3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay3DS;\n if (UNIONPAY_NON3DS_BIN6.has(bin6) && UNIONPAY_RE.test(digits))\n return CardSchemes.UnionPayNon3DS;\n\n // Verve\n if (isVerve(bin6, digits.length)) return CardSchemes.Verve;\n }\n\n if (digits.length >= 7) {\n const bin7 = parseInt(digits.slice(0, 7), 10);\n\n // Jaywan\n if (JAYWAN_BIN7.has(bin7) && digits.length === 16) return CardSchemes.Jaywan;\n }\n\n // ---------- 2) Generic schemes ----------\n if (UATP_RE.test(digits)) return CardSchemes.UATP;\n if (AMEX_RE.test(digits)) return CardSchemes.AmericanExpress;\n if (DISCOVER_RE.test(digits)) return CardSchemes.Discover;\n if (JCB_RE.test(digits)) return CardSchemes.JCB;\n if (DINERS_RE.test(digits)) return CardSchemes.DinersClub;\n if (MC_RE.test(digits)) return CardSchemes.MasterCard;\n if (VISA_RE.test(digits)) return CardSchemes.Visa;\n if (UNIONPAY_RE.test(digits)) return CardSchemes.UnionPay;\n if (MAESTRO_RE.test(digits)) return CardSchemes.Maestro;\n\n return CardSchemes.Unknown;\n}\n\nfunction isVerve(bin6: number, length: number): boolean {\n if (length < 16 || length > 19) return false;\n const inRange = VERVE_BIN6_RANGES.some(([start, end]) => bin6 >= start && bin6 <= end);\n return inRange || VERVE_BIN6_SINGLES.has(bin6);\n}\n","import {\n IAuthorizeCardPaymentPayload,\n IGeneratePaymentAccountPayload,\n IGenerateStableCoinAddress,\n IPaymentObject,\n} from \"../types\";\nimport { getBaseUrl } from \"../utils\";\n\nexport async function createPaymentLink(\n paymentObject: IPaymentObject,\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-link2\",\n miden: \"api/v1/accrual/checkout/generate-payment-link\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n body: JSON.stringify({\n ...paymentObject,\n LinkName: `${Date.now()}-Link`,\n }),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function authorizeCardPayment(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/authorize-card-3ds-payment-sdk\",\n miden: \"api/v1/accrual/card/authorize\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function validateCardPaymentOtp(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/card-payment/validate-otp\",\n miden: \"\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function resendCardPaymentOtp(\n environment: string,\n { merchantId, ...rest }: any,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/card-payment/resend-otp\",\n miden: \"\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getPaymentReferenceDetails(\n environment: string,\n paymentReference: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/checkout/details/${paymentReference}`,\n miden: `api/v1/accrual/checkout/details/${paymentReference}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generatePaymentAccount(\n environment: string,\n { merchantId, ...rest }: IGeneratePaymentAccountPayload,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-account\",\n miden: \"api/v1/accrual/checkout/generate-payment-account\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function generateStableCoinAddress(\n environment: string,\n { merchantId, ...rest }: IGenerateStableCoinAddress,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/generate-payment-walletaddress\",\n miden: \"api/v1/accrual/checkout/generate-wallet-address\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId,\n uniqueKey: merchantId,\n },\n body: JSON.stringify(rest),\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function midenConfirmPayment(\n environment: string,\n reference: string,\n merchantId: string,\n caller: \"buzapay\" | \"miden\",\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n miden: `api/v1/accrual/checkout/confirm-payment/${reference}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n uniqueKey: merchantId,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n","import CryptoJS from \"crypto-js\";\n\nexport function encryptPayload(merchantId: string, formData = {}) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n const postDataObj = JSON.stringify(formData);\n\n const encryptedData = CryptoJS.AES.encrypt(\n CryptoJS.enc.Utf8.parse(postDataObj),\n key,\n {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n }\n );\n\n return {\n requestParam: encryptedData.toString(),\n };\n}\n\nexport function decryptPayload(merchantId: string, payload: string) {\n const merchId = merchantId.replace(/-/g, \"\");\n const first16Key = merchId.slice(0, 16);\n const last16Iv = merchId.slice(-16);\n\n const key = CryptoJS.enc.Utf8.parse(first16Key);\n const iv = CryptoJS.enc.Utf8.parse(last16Iv);\n\n const decryptedData = CryptoJS.AES.decrypt(payload, key, {\n keySize: 128 / 8,\n iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n\n const decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);\n return JSON.parse(decryptedText);\n}\n","import { getBaseUrl } from \"../utils\";\n\nexport async function getCountries(\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/countries-iso\",\n miden: \"api/v1/accrual/utils/countries\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getCountryStates(\n countryIso3: string,\n environment: string,\n secretKey: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/state-by-country/${countryIso3}`,\n miden: `api/v1/accrual/utils/state-by-country/${countryIso3}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n merchantId: secretKey,\n uniqueKey: secretKey,\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoins(\n environment: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: \"api/v1/checkout/stable-coin\",\n miden: \"api/v1/accrual/checkout/stable-coin\",\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n\nexport async function getStableCoinNetworks(\n environment: string,\n stableCoin: string,\n caller: \"buzapay\" | \"miden\"\n): Promise<any> {\n try {\n const baseUrl = getBaseUrl(environment, caller);\n const apiKey: Record<string, string> = {\n buzapay: `api/v1/checkout/networks/${stableCoin}`,\n miden: `api/v1/accrual/checkout/networks/${stableCoin}`,\n };\n const res = await fetch(`${baseUrl}/${apiKey[caller]}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n return await res.json();\n } catch (error) {}\n}\n","interface IBaseInputErrorProps {\n errorMessage: string;\n}\n\nexport function BaseInputError({ errorMessage }: IBaseInputErrorProps) {\n return (\n <p className=\"mb-0 text-body-3xs font-normal text-red-500\">\n {errorMessage}\n </p>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n size?: number | string;\n color?: string;\n className?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconLoader({\n size = 24,\n color = \"currentColor\",\n className = \"\",\n ...props\n}: IIconProps) {\n return (\n <svg\n className={`animate-spin ${className}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role=\"img\"\n aria-label=\"loading\"\n {...props}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke={color}\n strokeWidth={4}\n />\n <path\n className=\"opacity-75\"\n fill={color}\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronLeft({\n width = 17,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M10.5 14.28C10.3734 14.28 10.2467 14.2333 10.1467 14.1333L5.80002 9.78668C5.09335 9.08001 5.09335 7.92001 5.80002 7.21335L10.1467 2.86668C10.34 2.67335 10.66 2.67335 10.8534 2.86668C11.0467 3.06001 11.0467 3.38001 10.8534 3.57335L6.50669 7.92001C6.18669 8.24001 6.18669 8.76001 6.50669 9.08001L10.8534 13.4267C11.0467 13.62 11.0467 13.94 10.8534 14.1333C10.7534 14.2267 10.6267 14.28 10.5 14.28Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconBuzapayIcon({\n width = 15,\n height = 13,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 15 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M9.97919 0.5C10.8854 0.5 11.6276 0.585938 12.2057 0.757812C12.7891 0.924479 13.2188 1.22396 13.4948 1.65625C13.7761 2.08333 13.9167 2.6901 13.9167 3.47656C13.9167 4.1849 13.7526 4.77083 13.4245 5.23438C13.0964 5.69792 12.5938 5.95312 11.9167 6C12.8021 6.08854 13.4401 6.40625 13.8307 6.95312C14.2214 7.49479 14.4167 8.17708 14.4167 9C14.4167 9.71354 14.3334 10.2995 14.1667 10.7578C14.0052 11.2161 13.7318 11.5729 13.3464 11.8281C12.961 12.0781 12.4375 12.2526 11.7761 12.3516C11.1198 12.4505 10.2995 12.5 9.31512 12.5H0.416687V0.5H9.97919ZM2.91669 7.77344H5.97235V11.167L10.2497 5.22754H7.19501V1.83398L2.91669 7.77344ZM5.97235 6.07617H8.2702L7.19501 7.57324V6.9248H4.89716L5.97235 5.42676V6.07617Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCheckCircle({\n width = 67,\n height = 67,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 67 67\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M33.6705 0.0820312C15.2758 0.0820312 0.36377 14.9941 0.36377 33.3888C0.36377 51.7846 15.2758 66.6956 33.6705 66.6956C52.0663 66.6956 66.9773 51.7846 66.9773 33.3888C66.9773 14.9941 52.0663 0.0820312 33.6705 0.0820312ZM33.6705 62.5978C17.6011 62.5978 4.52712 49.4583 4.52712 33.3887C4.52712 17.3192 17.6011 4.24525 33.6705 4.24525C49.74 4.24525 62.814 17.3193 62.814 33.3887C62.814 49.4581 49.74 62.5978 33.6705 62.5978ZM46.9631 21.2016L27.4213 40.8662L18.621 32.0659C17.8081 31.253 16.4904 31.253 15.6765 32.0659C14.8636 32.8788 14.8636 34.1965 15.6765 35.0094L25.9797 45.3137C26.7926 46.1255 28.1103 46.1255 28.9243 45.3137C29.0179 45.22 29.0981 45.1179 29.171 45.0118L49.9086 24.1461C50.7205 23.3332 50.7205 22.0155 49.9086 21.2016C49.0947 20.3888 47.777 20.3888 46.9631 21.2016Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCopySuccess({\n width = 16,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M11.4002 1.6875H8.60016C5.9935 1.6875 4.8335 2.8475 4.8335 5.45417V6.1875C4.8335 6.46083 5.06016 6.6875 5.3335 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V11.5208C10.1668 11.7942 10.3935 12.0208 10.6668 12.0208H11.4002C14.0068 12.0208 15.1668 10.8608 15.1668 8.25417V5.45417C15.1668 2.8475 14.0068 1.6875 11.4002 1.6875ZM5.8335 5.6875V5.45417C5.8335 3.3875 6.5335 2.6875 8.60016 2.6875H11.4002C13.4668 2.6875 14.1668 3.3875 14.1668 5.45417V8.25417C14.1668 10.3208 13.4668 11.0208 11.4002 11.0208H11.1668V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875H5.8335Z\"\n fill={color}\n />\n <path\n d=\"M7.40016 5.6875H4.60016C1.9935 5.6875 0.833496 6.8475 0.833496 9.45417V12.2542C0.833496 14.8608 1.9935 16.0208 4.60016 16.0208H7.40016C10.0068 16.0208 11.1668 14.8608 11.1668 12.2542V9.45417C11.1668 6.8475 10.0068 5.6875 7.40016 5.6875ZM4.60016 15.0208C2.5335 15.0208 1.8335 14.3208 1.8335 12.2542V9.45417C1.8335 7.3875 2.5335 6.6875 4.60016 6.6875H7.40016C9.46683 6.6875 10.1668 7.3875 10.1668 9.45417V12.2542C10.1668 14.3208 9.46683 15.0208 7.40016 15.0208H4.60016Z\"\n fill={color}\n />\n <path\n d=\"M5.35302 12.6542C5.22635 12.6542 5.09969 12.6075 4.99969 12.5075L3.69969 11.2075C3.50635 11.0142 3.50635 10.6942 3.69969 10.5008C3.89302 10.3075 4.21302 10.3075 4.40635 10.5008L5.35302 11.4475L7.59302 9.2075C7.78635 9.01417 8.10635 9.01417 8.29969 9.2075C8.49302 9.40083 8.49302 9.72083 8.29969 9.91417L5.69969 12.5075C5.60635 12.6008 5.47969 12.6542 5.35302 12.6542Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronUp({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g opacity=\"0.7\">\n <path\n d=\"M2.73508 9.73495L7.73508 4.73495C7.80539 4.66473 7.9007 4.62528 8.00008 4.62528C8.09945 4.62528 8.19476 4.66473 8.26508 4.73495L13.2651 9.73495C13.3313 9.80604 13.3674 9.90006 13.3657 9.99722C13.364 10.0944 13.3246 10.1871 13.2559 10.2558C13.1872 10.3245 13.0945 10.3638 12.9973 10.3655C12.9002 10.3673 12.8062 10.3312 12.7351 10.265L8.00008 5.53058L3.26508 10.265C3.19399 10.3312 3.09997 10.3673 3.00282 10.3655C2.90566 10.3638 2.81297 10.3245 2.74427 10.2558C2.67556 10.1871 2.6362 10.0944 2.63449 9.99722C2.63277 9.90006 2.66884 9.80604 2.73508 9.73495Z\"\n fill={color}\n />\n </g>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconChevronDown({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g opacity=\"0.6\">\n <path\n d=\"M16.5813 7.83128L10.3313 14.0813C10.2434 14.1691 10.1242 14.2184 10 14.2184C9.87581 14.2184 9.75667 14.1691 9.66878 14.0813L3.41878 7.83128C3.33598 7.74242 3.2909 7.62489 3.29304 7.50345C3.29518 7.38201 3.34438 7.26615 3.43026 7.18026C3.51615 7.09438 3.63201 7.04518 3.75345 7.04304C3.87489 7.0409 3.99242 7.08598 4.08128 7.16878L10 13.0867L15.9188 7.16878C16.0076 7.08598 16.1252 7.0409 16.2466 7.04304C16.368 7.04518 16.4839 7.09438 16.5698 7.18026C16.6557 7.26615 16.7049 7.38201 16.707 7.50345C16.7092 7.62489 16.6641 7.74242 16.5813 7.83128Z\"\n fill={color}\n />\n </g>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconUsdt({\n width = 28,\n height = 28,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_10908_387045)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28ZM15.6818 12.0689V9.99863H20.419V6.84162H7.52063V9.99863H12.2579V12.068C8.40787 12.2447 5.5125 13.0077 5.5125 13.9212C5.5125 14.8347 8.40787 15.5969 12.2579 15.7745V22.4088H15.6818V15.7727C19.5256 15.596 22.414 14.8339 22.414 13.9212C22.414 13.0086 19.5256 12.2465 15.6818 12.0689ZM15.6818 15.2101V15.2084C15.5855 15.2154 15.0894 15.2451 13.9825 15.2451C13.0987 15.2451 12.4766 15.2189 12.2579 15.2084V15.211C8.85587 15.0614 6.31662 14.469 6.31662 13.7602C6.31662 13.0524 8.85587 12.46 12.2579 12.3077V14.6212C12.4801 14.637 13.1171 14.6746 13.9974 14.6746C15.0535 14.6746 15.5829 14.6309 15.6818 14.6221V12.3095C19.0768 12.4609 21.6099 13.0532 21.6099 13.7602C21.6099 14.469 19.0768 15.0596 15.6818 15.2101Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387045\">\n <rect width=\"28\" height=\"28\" fill={color} />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconUsdc({\n width = 28,\n height = 28,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_10908_387048)\">\n <path\n d=\"M14 0C21.7324 0 28 6.26763 28 14C28 21.7324 21.7324 28 14 28C6.26763 28 0 21.7324 0 14C0 6.26763 6.26763 0 14 0ZM16.933 4.865C16.7195 4.76 16.506 4.865 16.4535 5.07762C16.4001 5.131 16.4001 5.18438 16.4001 5.29025V6.034L16.4089 6.125C16.4546 6.30501 16.5652 6.46177 16.7195 6.56512C20.8792 8.05262 23.0125 12.6726 21.4655 16.7615C20.6657 18.9928 18.9061 20.6911 16.7195 21.4883C16.506 21.5941 16.4001 21.7534 16.4001 22.0194V22.7631L16.4045 22.8401C16.4128 22.9241 16.4479 23.0033 16.5047 23.0658C16.5614 23.1284 16.6367 23.171 16.7195 23.1875C16.7729 23.1875 16.8796 23.1875 16.933 23.135C18.1331 22.7602 19.2473 22.1517 20.2113 21.3446C21.1753 20.5375 21.9701 19.5476 22.5499 18.432C23.1298 17.3164 23.4833 16.0972 23.59 14.8444C23.6967 13.5917 23.5546 12.3302 23.1718 11.1326C22.2128 8.10512 19.866 5.8205 16.933 4.865ZM11.2805 4.8125C11.2271 4.8125 11.1204 4.8125 11.067 4.865C9.86688 5.23978 8.75274 5.84826 7.78874 6.6554C6.82475 7.46254 6.02993 8.4524 5.45006 9.56797C4.87019 10.6836 4.51673 11.9028 4.41001 13.1556C4.30329 14.4083 4.44543 15.6698 4.82825 16.8674C5.78725 19.8424 8.08062 22.1261 11.067 23.0816C11.2805 23.1875 11.494 23.0816 11.5465 22.869C11.5999 22.8165 11.5999 22.7622 11.5999 22.6564V21.9126L11.5911 21.8426C11.5544 21.6947 11.417 21.5259 11.2805 21.4349C7.12075 19.9474 4.9875 15.3274 6.5345 11.2385C7.33425 9.00725 9.09388 7.30887 11.2805 6.51175C11.494 6.40587 11.5999 6.24663 11.5999 5.98063V5.23688L11.5955 5.15987C11.5872 5.07585 11.5521 4.99673 11.4954 4.93418C11.4386 4.87163 11.3633 4.82898 11.2805 4.8125ZM14.3736 7.574H13.573L13.496 7.581C13.321 7.616 13.1933 7.7665 13.146 7.99925V9.22075L12.9649 9.24875C11.4704 9.51475 10.5341 10.5464 10.5341 11.823C10.5341 13.5748 11.5999 14.2651 13.8399 14.5311C15.3335 14.7963 15.813 15.1156 15.813 15.9653C15.813 16.814 15.0666 17.3985 14.0534 17.3985C12.6665 17.3985 12.187 16.8149 12.0269 16.0177C11.9744 15.806 11.8134 15.6992 11.6532 15.6992H10.7467L10.6776 15.7054C10.5913 15.7193 10.513 15.7641 10.4572 15.8313C10.4014 15.8985 10.3718 15.9838 10.374 16.0711V16.1236L10.4029 16.2811C10.6566 17.5271 11.5106 18.4187 13.2003 18.6734V19.9483L13.2072 20.0252C13.2422 20.1985 13.3936 20.3263 13.6273 20.3726H14.427L14.504 20.3656C14.679 20.3306 14.8067 20.1801 14.854 19.9483V18.6725L15.0351 18.6375C16.534 18.3207 17.5201 17.2366 17.5201 15.8576C17.5201 13.9991 16.4001 13.3621 14.1601 13.0961C12.5598 12.8835 12.2404 12.4591 12.2404 11.7154C12.2404 10.9716 12.7741 10.4939 13.8399 10.4939C14.7998 10.4939 15.3335 10.8124 15.5995 11.6095C15.6272 11.6866 15.6779 11.7533 15.7447 11.8007C15.8115 11.8481 15.8912 11.8739 15.9731 11.8746H16.8262L16.8954 11.8694C16.982 11.8556 17.0606 11.8108 17.1166 11.7434C17.1726 11.6759 17.2022 11.5904 17.1999 11.5027V11.4503L17.1675 11.2989C17.0361 10.755 16.7366 10.2664 16.3115 9.90255C15.8864 9.53872 15.3574 9.31821 14.7997 9.27238V7.99925L14.7928 7.92225C14.7578 7.74812 14.6073 7.62038 14.3736 7.574Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10908_387048\">\n <rect width=\"28\" height=\"28\" fill={color} />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconArrowSwap({\n width = 16,\n height = 17,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M10.3265 14.1948C10.1998 14.1948 10.0731 14.1481 9.97313 14.0481C9.77979 13.8548 9.77979 13.5348 9.97313 13.3414L13.3131 10.0014C13.5065 9.80811 13.8265 9.80811 14.0198 10.0014C14.2131 10.1948 14.2131 10.5148 14.0198 10.7081L10.6798 14.0481C10.5798 14.1414 10.4531 14.1948 10.3265 14.1948Z\"\n fill={color}\n />\n <path\n d=\"M13.6668 10.8477H2.3335C2.06016 10.8477 1.8335 10.621 1.8335 10.3477C1.8335 10.0743 2.06016 9.84766 2.3335 9.84766H13.6668C13.9402 9.84766 14.1668 10.0743 14.1668 10.3477C14.1668 10.621 13.9402 10.8477 13.6668 10.8477Z\"\n fill={color}\n />\n <path\n d=\"M2.33329 6.86079C2.20663 6.86079 2.07996 6.81413 1.97996 6.71413C1.78663 6.52079 1.78663 6.20079 1.97996 6.00746L5.31996 2.66746C5.51329 2.47413 5.83329 2.47413 6.02663 2.66746C6.21996 2.86079 6.21996 3.18079 6.02663 3.37413L2.68663 6.71413C2.59329 6.80746 2.45996 6.86079 2.33329 6.86079Z\"\n fill={color}\n />\n <path\n d=\"M13.6668 6.86133H2.3335C2.06016 6.86133 1.8335 6.63466 1.8335 6.36133C1.8335 6.08799 2.06016 5.86133 2.3335 5.86133H13.6668C13.9402 5.86133 14.1668 6.08799 14.1668 6.36133C14.1668 6.63466 13.9402 6.86133 13.6668 6.86133Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconLock({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M12.0001 17.35C12.9003 17.35 13.6301 16.6203 13.6301 15.72C13.6301 14.8198 12.9003 14.09 12.0001 14.09C11.0999 14.09 10.3701 14.8198 10.3701 15.72C10.3701 16.6203 11.0999 17.35 12.0001 17.35Z\"\n fill={color}\n />\n <path\n d=\"M18.28 9.53V8.28C18.28 5.58 17.63 2 12 2C6.37 2 5.72 5.58 5.72 8.28V9.53C2.92 9.88 2 11.3 2 14.79V16.65C2 20.75 3.25 22 7.35 22H16.65C20.75 22 22 20.75 22 16.65V14.79C22 11.3 21.08 9.88 18.28 9.53ZM12 18.74C10.33 18.74 8.98 17.38 8.98 15.72C8.98 14.05 10.34 12.7 12 12.7C13.66 12.7 15.02 14.06 15.02 15.72C15.02 17.39 13.67 18.74 12 18.74ZM7.35 9.44C7.27 9.44 7.2 9.44 7.12 9.44V8.28C7.12 5.35 7.95 3.4 12 3.4C16.05 3.4 16.88 5.35 16.88 8.28V9.45C16.8 9.45 16.73 9.45 16.65 9.45H7.35V9.44Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconMidenLogo({\n width = 83,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width=\"83\"\n height=\"24\"\n viewBox=\"0 0 83 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_13262_15389)\">\n <path\n d=\"M8.78809 -7.24082C9.77412 -7.81065 10.9896 -7.81065 11.9756 -7.24082L17.9238 -3.80332C18.9099 -3.23336 19.5176 -2.1789 19.5176 -1.03769V5.83731C19.5175 6.97837 18.9098 8.03202 17.9238 8.60196L11.9756 12.0395C10.9896 12.6093 9.77412 12.6093 8.78809 12.0395L2.83984 8.60196C1.85383 8.03203 1.24519 6.97841 1.24512 5.83731V-1.03769C1.24512 -2.17893 1.85368 -3.23338 2.83984 -3.80332L8.78809 -7.24082Z\"\n stroke=\"#0A0032\"\n strokeWidth=\"3.11415\"\n />\n </g>\n <g clipPath=\"url(#clip1_13262_15389)\">\n <path\n d=\"M20.6924 15.3051L20.6826 15.6088C20.5818 17.1217 19.7341 18.4954 18.4092 19.2602L12.6826 22.5649L12.4131 22.7084C11.1429 23.3328 9.65297 23.3329 8.38281 22.7084L8.11426 22.5649L2.3877 19.2602C1.06271 18.4954 0.214141 17.1218 0.113281 15.6088L0.103516 15.3051V10.6205C0.420907 10.9744 0.794913 11.2821 1.21875 11.5268L3.21777 12.6801V15.3051C3.21804 15.8234 3.49466 16.3034 3.94434 16.5629L9.6709 19.8686C10.1206 20.128 10.6753 20.1279 11.125 19.8686L16.8516 16.5629C17.3012 16.3034 17.5788 15.8234 17.5791 15.3051V12.6801L19.5771 11.5268C20.001 11.2821 20.375 10.9744 20.6924 10.6205V15.3051ZM8.11426 1.43402C9.52761 0.618234 11.2693 0.618234 12.6826 1.43402L17.502 4.21429V7.57172C17.502 7.64507 17.4628 7.71415 17.3984 7.7514L17.2832 7.81683C17.1679 7.66481 17.0223 7.53453 16.8516 7.43597L11.125 4.13031C10.6751 3.87086 10.1207 3.87075 9.6709 4.13031L6.80762 5.78363L3.94434 7.43597C3.77341 7.53467 3.62695 7.66454 3.51172 7.81683L3.39844 7.7514C3.33411 7.71413 3.29395 7.64502 3.29395 7.57172V4.21527L8.11426 1.43402Z\"\n fill=\"#0A0032\"\n />\n </g>\n <g clipPath=\"url(#clip2_13262_15389)\">\n <path\n d=\"M20.6924 15.3065L20.6826 15.6102C20.5819 17.1233 19.7342 18.4967 18.4092 19.2616L12.6826 22.5663L12.4131 22.7098C11.1428 23.3343 9.65302 23.3344 8.38281 22.7098L8.11426 22.5663L2.3877 19.2616C1.0627 18.4967 0.214005 17.1233 0.113281 15.6102L0.103516 15.3065V10.621C0.420907 10.9748 0.794915 11.2826 1.21875 11.5272L3.21777 12.6806V15.3065C3.21789 15.8249 3.49465 16.3047 3.94434 16.5643L9.6709 19.87C10.1206 20.1295 10.6752 20.1294 11.125 19.87L16.8516 16.5643C17.3014 16.3047 17.579 15.825 17.5791 15.3065V12.6806L19.5771 11.5272C20.001 11.2826 20.375 10.9748 20.6924 10.621V15.3065ZM8.11426 1.43543C9.52754 0.619685 11.2693 0.61976 12.6826 1.43543L17.502 4.21571V7.57215C17.502 7.64551 17.4629 7.71459 17.3984 7.75184L17.2832 7.81825C17.1679 7.66636 17.0222 7.53587 16.8516 7.43739L11.125 4.13172C10.6752 3.87239 10.1206 3.8722 9.6709 4.13172L6.80762 5.78504L3.94434 7.43739C3.77387 7.5358 3.62779 7.66553 3.5127 7.81727L3.39844 7.75184C3.3341 7.71457 3.29395 7.64546 3.29395 7.57215V4.21668L8.11426 1.43543Z\"\n fill=\"#0A0032\"\n />\n </g>\n <path\n d=\"M28.4292 5.868H30.4836L35.2452 12.3192L40.026 5.868H42.0804V19.5H39.8148V9.7272L35.2644 15.9096L30.6756 9.708V19.5H28.4292V5.868ZM46.1481 7.8072C45.7641 7.8072 45.4313 7.6728 45.1497 7.404C44.8681 7.1224 44.7273 6.7832 44.7273 6.3864C44.7273 6.0024 44.8681 5.676 45.1497 5.4072C45.4313 5.1256 45.7641 4.9848 46.1481 4.9848C46.5449 4.9848 46.8777 5.1256 47.1465 5.4072C47.4153 5.676 47.5497 6.0024 47.5497 6.3864C47.5497 6.7832 47.4153 7.1224 47.1465 7.404C46.8777 7.6728 46.5449 7.8072 46.1481 7.8072ZM45.0921 19.5V9.9H47.2041V19.5H45.0921ZM53.9781 19.692C52.6725 19.692 51.5717 19.2056 50.6757 18.2328C49.7925 17.26 49.3509 16.0824 49.3509 14.7C49.3509 13.3176 49.7925 12.14 50.6757 11.1672C51.5717 10.1944 52.6725 9.708 53.9781 9.708C54.6309 9.708 55.2325 9.8552 55.7829 10.1496C56.3333 10.4312 56.7557 10.7768 57.0501 11.1864V5.1H59.1621V19.5H57.0501V18.2136C56.7557 18.6232 56.3333 18.9752 55.7829 19.2696C55.2325 19.5512 54.6309 19.692 53.9781 19.692ZM52.3077 16.8888C52.8453 17.4776 53.5301 17.772 54.3621 17.772C55.1941 17.772 55.8789 17.4776 56.4165 16.8888C56.9541 16.3 57.2229 15.5704 57.2229 14.7C57.2229 13.8296 56.9541 13.1 56.4165 12.5112C55.8789 11.9224 55.1941 11.628 54.3621 11.628C53.5301 11.628 52.8453 11.9224 52.3077 12.5112C51.7701 13.1 51.5013 13.8296 51.5013 14.7C51.5013 15.5704 51.7701 16.3 52.3077 16.8888ZM66.2665 19.692C64.8329 19.692 63.6553 19.2248 62.7337 18.2904C61.8121 17.3432 61.3513 16.1464 61.3513 14.7C61.3513 13.2536 61.8057 12.0632 62.7145 11.1288C63.6233 10.1816 64.8137 9.708 66.2857 9.708C67.7705 9.708 68.9673 10.2264 69.8761 11.2632C70.7849 12.2872 71.1881 13.6056 71.0857 15.2184H63.4441C63.4697 15.9608 63.7513 16.5816 64.2889 17.0808C64.8265 17.58 65.5113 17.8296 66.3433 17.8296C67.5209 17.8296 68.3273 17.3816 68.7625 16.4856H70.9705C70.6761 17.42 70.1129 18.188 69.2809 18.7896C68.4489 19.3912 67.4441 19.692 66.2665 19.692ZM66.2281 11.4744C65.5369 11.4744 64.9417 11.6728 64.4425 12.0696C63.9561 12.4536 63.6425 13.004 63.5017 13.7208H68.8201C68.6665 12.9784 68.3529 12.4216 67.8793 12.0504C67.4057 11.6664 66.8553 11.4744 66.2281 11.4744ZM73.2546 19.5V9.9H75.3666V11.2056C75.9682 10.2072 76.941 9.708 78.285 9.708C79.3986 9.708 80.2882 10.0728 80.9538 10.8024C81.6194 11.532 81.9522 12.5048 81.9522 13.7208V19.5H79.8402V14.0664C79.8402 13.2984 79.661 12.7032 79.3026 12.2808C78.9442 11.8456 78.4578 11.628 77.8434 11.628C77.1138 11.628 76.5186 11.9032 76.0578 12.4536C75.597 13.004 75.3666 13.7784 75.3666 14.7768V19.5H73.2546Z\"\n fill=\"#0A0032\"\n />\n <defs>\n <clipPath id=\"clip0_13262_15389\">\n <rect\n y=\"2.50274\"\n width=\"20.6599\"\n height=\"11.5209\"\n rx=\"4.98265\"\n fill=\"white\"\n />\n </clipPath>\n <clipPath id=\"clip1_13262_15389\">\n <rect\n width=\"8.92839\"\n height=\"22.3152\"\n fill=\"white\"\n transform=\"translate(5.91797 0.841991)\"\n />\n </clipPath>\n <clipPath id=\"clip2_13262_15389\">\n <rect\n width=\"20.556\"\n height=\"14.5308\"\n fill=\"white\"\n transform=\"translate(0.103516 8.62676)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconClose({\n width = 24,\n height = 24,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M19.1476 18.3525C19.2029 18.404 19.2472 18.4661 19.278 18.5351C19.3087 18.6041 19.3252 18.6786 19.3266 18.7541C19.3279 18.8296 19.314 18.9047 19.2857 18.9747C19.2574 19.0447 19.2153 19.1084 19.1619 19.1618C19.1085 19.2152 19.0449 19.2573 18.9748 19.2856C18.9048 19.3139 18.8298 19.3278 18.7542 19.3264C18.6787 19.3251 18.6042 19.3086 18.5352 19.2778C18.4662 19.2471 18.4041 19.2028 18.3526 19.1475L12.0001 12.7959L5.64763 19.1475C5.541 19.2469 5.39996 19.301 5.25424 19.2984C5.10851 19.2958 4.96947 19.2368 4.86641 19.1337C4.76335 19.0307 4.70432 18.8916 4.70175 18.7459C4.69918 18.6002 4.75327 18.4591 4.85263 18.3525L11.2042 12L4.85263 5.6475C4.75327 5.54087 4.69918 5.39983 4.70175 5.25411C4.70432 5.10838 4.76335 4.96934 4.86641 4.86628C4.96947 4.76322 5.10851 4.70419 5.25424 4.70162C5.39996 4.69905 5.541 4.75314 5.64763 4.8525L12.0001 11.2041L18.3526 4.8525C18.4593 4.75314 18.6003 4.69905 18.746 4.70162C18.8917 4.70419 19.0308 4.76322 19.1338 4.86628C19.2369 4.96934 19.2959 5.10838 19.2985 5.25411C19.3011 5.39983 19.247 5.54087 19.1476 5.6475L12.7961 12L19.1476 18.3525Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCourthouse({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M14.6668 14.1667H13.8335V7.33333C13.8335 5.72 12.9468 4.83333 11.3335 4.83333H8.50016V4.01333C8.88683 4.10667 9.2735 4.16 9.66683 4.16C10.2935 4.16 10.9202 4.04 11.5202 3.8C11.7068 3.72667 11.8335 3.54 11.8335 3.33333V1.33333C11.8335 1.16667 11.7535 1.01333 11.6135 0.920001C11.4735 0.826668 11.3002 0.806668 11.1468 0.866668C10.1935 1.24667 9.14016 1.24667 8.18683 0.866668C8.0335 0.806668 7.86016 0.826668 7.72016 0.920001C7.58016 1.01333 7.50016 1.16667 7.50016 1.33333V3.33333V4.83333H4.66683C3.0535 4.83333 2.16683 5.72 2.16683 7.33333V14.1667H1.3335C1.06016 14.1667 0.833496 14.3933 0.833496 14.6667C0.833496 14.94 1.06016 15.1667 1.3335 15.1667H2.66683H13.3335H14.6668C14.9402 15.1667 15.1668 14.94 15.1668 14.6667C15.1668 14.3933 14.9402 14.1667 14.6668 14.1667ZM4.82683 14.1667H3.16683V8.5H4.82683V14.1667ZM7.4935 14.1667H5.82683V8.5H7.4935V14.1667ZM10.1602 14.1667H8.4935V8.5H10.1602V14.1667ZM12.8335 14.1667H11.1602V8.5H12.8335V14.1667Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCoin({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M14.6136 11.1667C14.3936 12.9401 12.9402 14.3934 11.1669 14.6134C10.0936 14.7467 9.09357 14.4534 8.31357 13.8801C7.8669 13.5534 7.97357 12.8601 8.5069 12.7001C10.5136 12.0934 12.0936 10.5067 12.7069 8.50006C12.8669 7.9734 13.5602 7.86673 13.8869 8.30673C14.4536 9.0934 14.7469 10.0934 14.6136 11.1667Z\"\n fill={color}\n />\n <path\n d=\"M6.66064 1.83301C9.23993 1.83326 11.3453 3.86201 11.48 6.41211L11.4868 6.66113C11.486 9.32416 9.32379 11.4861 6.66064 11.4863C3.99695 11.4863 1.83376 9.32379 1.8335 6.66016C1.8335 3.9963 3.99679 1.83301 6.66064 1.83301ZM6.6665 3.27344C6.27525 3.27356 5.93487 3.50201 5.771 3.83203C4.94463 3.9947 4.3335 4.7462 4.3335 5.61328C4.33354 6.00558 4.42304 6.37269 4.63818 6.68164C4.66671 6.72258 4.69726 6.76143 4.729 6.79883C4.48939 6.982 4.33357 7.27008 4.3335 7.59277C4.3335 8.48803 4.93148 9.2422 5.75049 9.45801C5.90533 9.81094 6.25852 10.0594 6.6665 10.0596C7.06141 10.0596 7.40374 9.82611 7.56592 9.49121C8.39042 9.32705 9.00049 8.5787 9.00049 7.71289C9.00047 7.32502 8.91261 6.96047 8.69873 6.65137C8.66984 6.60964 8.63919 6.56935 8.60693 6.53125C8.84508 6.34793 9.00049 6.06083 9.00049 5.73926C9.0003 4.84357 8.40128 4.0892 7.58154 3.87402C7.4264 3.5216 7.07419 3.27344 6.6665 3.27344Z\"\n fill={color}\n stroke={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconCards({\n width = 16,\n height = 16,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M3.85303 4.86667H10.147C11.1573 4.86668 11.5914 5.00442 11.811 5.22116C12.0282 5.43571 12.1665 5.85839 12.1665 6.853V7.23972C12.1665 7.33013 12.0909 7.40653 12.0005 7.40671H2.00049C1.90996 7.40671 1.8335 7.33024 1.8335 7.23972V6.853C1.83352 5.95674 1.94725 5.5223 2.1333 5.28757C2.29732 5.08064 2.60747 4.92401 3.36279 4.87936L3.36182 4.87839C3.51875 4.87187 3.68056 4.86668 3.85303 4.86667Z\"\n fill={color}\n stroke={color}\n />\n <path\n d=\"M2.00016 8.90667C1.6335 8.90667 1.3335 9.20667 1.3335 9.57334V11.5133C1.3335 13.5 1.84016 14 3.8535 14H10.1468C12.1268 14 12.6468 13.52 12.6668 11.62V9.57334C12.6668 9.20667 12.3668 8.90667 12.0002 8.90667H2.00016ZM4.64016 12.3733H3.50016C3.22683 12.3733 3.00016 12.1467 3.00016 11.8733C3.00016 11.6 3.22683 11.3733 3.50016 11.3733H4.64683C4.92016 11.3733 5.14683 11.6 5.14683 11.8733C5.14683 12.1467 4.92016 12.3733 4.64016 12.3733ZM8.36683 12.3733H6.0735C5.80016 12.3733 5.5735 12.1467 5.5735 11.8733C5.5735 11.6 5.80016 11.3733 6.0735 11.3733H8.36683C8.64016 11.3733 8.86683 11.6 8.86683 11.8733C8.86683 12.1467 8.64683 12.3733 8.36683 12.3733Z\"\n fill={color}\n />\n <path\n d=\"M14.6666 8.88667V5.39334C14.6666 3.30667 13.4732 2.4 11.6732 2.4H5.71991C5.21324 2.4 4.75991 2.47333 4.35991 2.62667C4.04658 2.74 3.76658 2.90667 3.53991 3.12667C3.41991 3.24 3.51324 3.42667 3.68658 3.42667H10.9332C12.4332 3.42667 13.6466 4.64 13.6466 6.14V10.92C13.6466 11.0867 13.8266 11.18 13.9466 11.06C14.4066 10.5733 14.6666 9.86 14.6666 8.88667Z\"\n fill={color}\n />\n </svg>\n );\n}\n","import React from \"react\";\n\ntype IIconProps = {\n width?: number | string;\n height?: number | string;\n color?: string;\n} & React.SVGProps<SVGSVGElement>;\n\nexport function IconQrCode({\n width = 96,\n height = 96,\n color = \"currentColor\",\n ...props\n}: IIconProps) {\n return (\n <svg\n width=\"96\"\n height=\"96\"\n viewBox=\"0 0 96 96\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"96\" height=\"96\" fill=\"url(#pattern0_13262_14636)\" />\n <defs>\n <pattern\n id=\"pattern0_13262_14636\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n xlinkHref=\"#image0_13262_14636\"\n transform=\"translate(-0.585526 -0.641953) scale(0.0018556)\"\n />\n </pattern>\n <image\n id=\"image0_13262_14636\"\n width=\"1170\"\n height=\"2532\"\n preserveAspectRatio=\"none\"\n xlinkHref=\"data:image/png;base64,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UQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAACCCCAAAIIIGBRgLDNIhTFEEAAAQQQQAABBBBAAAH/CBC2+cedsyKAAAIIIIAAAggggAACFgUI2yxCUQwBBBBAAAEEEEAAAQQQ8I8AYZt/3DkrAggggAAC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ECBAgAABAgQIEBDbHAMECBAgQIAAAQIECBAoWkBsK3p5FEeAAAECBAgQIECAAAGxzTFAgAABAgQIECBAgACBogXEtqKXR3EECBAgQIAAAQIECBAQ2xwDBAgQIECAAAECBAgQKFpAbCt6eRRHgAABAgQIECBAgAABsc0xQIAAAQIECBAgQIAAgaIFxLail0dxBAgQIECAAAECBAgQENscAwQIECBAgAABAgQIEChaQGwrenkUR4AAAQIECBAgQIAAAbHNMUCAAAECBAgQIECAAIGiBcS2opdHcQQIECBAgAABAgQIENiDgAABAgQIDAjMzc3Nz88PbNz2Ya/XW19fX1pa2rbl+A2iwhgufibtqsl5ra6uhkZSedE4KqxuSR1jsaJXUpdqrIxVjklVt6Thzk0rucikUcZpfG5aaUuWN6+8scaZnb4ECMyAgNg2A4toCgQIEJiwQCSi2GP1s/6u42R0bW1tZWWlfpfsllXeSM0qTc4rI9uERswoplbNrj5O9EpdrNh5nkbE0YxEmjev+gLjt2xyXnljjT9HeyBAoNUCYlurl0/xBAgQmIpAnGTHLXXXcZ0tMtvy8nJqx7z2GUGl/HlFhZHZFhcX80ySeuVpxBARzpMGisZNziu1tn77JueVMVa/TncIEOimgPe2dXPdzZoAAQIECBAgQIAAgdYIiG2tWSqFEiBAgAABAgQIECDQTQGxrZvrbtYECBAgQIAAAQIECLRGQGxrzVIplAABAgQIECBAgACBbgqIbd1cd7MmQIAAAQIECBAgQKA1AmJba5ZKoQQIECBAgAABAgQIdFNAbOvmups1AQIECBAgQIAAAQKtERDbWrNUCiVAgAABAgQIECBAoJsCYls3192sCRAgQIAAAQIECBBojYDY1pqlUigBAgQIECBAgAABAt0UENu6ue5mTYAAAQIECBAgQIBAawTEttYslUIJECBAgAABAgQIEOimgNjWzXU3awIECBAgQIAAAQIEWiMgtrVmqRRKgAABAgQIECBAgEA3BcS2bq67WRMgQIAAAQIECBAg0BqBPa2pVKEECBDotsD6+vrq6mozBnNzc71eL34mDRft5+fnk7pE45hXdUvqGF0a04iBYrik8qJxaFS3pI7BHmMtLS0l9cprHOU1tspNzitPI2+V88bK63XugEr7rYxfyeiYN6JeBAgUJSC2FbUciiFA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IECgXQJiW7vWS7UECBAgQIAAAQIECHROQGzr3JKbMAECBAgQIECAAAEC7RIQ29q1XqolQIAAAQIECBAgQKBzAmJb55bchAkQIECAAAECBAgQaJeA2Nau9VItAQIECBAgQIAAAQKdE/C9bZ1bchMmQIAAAQIECBAgQKBdAq62tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCYhtnVtyEyZAgAABAgQIECBAoF0CYlu71ku1BAgQIECAAAECBAh0TkBs69ySmzABAgQIECBAgAABAu0SENvatV6qJUCAAAECBAgQIECgcwJiW+eW3IQJECBAgAABAgQIEGiXgNjWrvVSLQECBAgQIECAAAECnRMQ2zq35CZMgAABAgQIECBAgEC7BMS2dq2XagkQIECAAAECBAgQ6JyA2Na5JTdhAgQIECBAgAABAgTaJSC2tWu9VEuAAAECBAgQIECAQOcExLbOLbkJEyBAgAABAgQIECDQLgGxrV3rpVoCBAgQIECAAAECBDonILZ1bslNmAABAgQIECBAgACBdgmIbe1aL9USIECAAAECBAgQINA5AbGtc0tuwgQIECBAgAABAgQItEtAbGvXeqmWAAECBAgQIECAAIHOCeyZmRlfeOGFey/ad9G+fRddtC/uz8y8TIQAAQIECBAgQIAAgfoCp0+fPnnyxMkTJ548eSLu1+9YcstZiG27du0+cPDgvv0HRqa1p59++vTp+PH06Wf+7+lhk1OwAABAAElEQVQDBy8ueUnURoAAAQIECBAgQIDAFgLHjj5x4a5duy48+3/x/888ePZVhBEK9u3bH/8is504fuzYsaNPnzq1xd5a8VS7Y1ssz4GDl+zbv38gsJ069dSTJ08+GbdRCfvoE0dasTaKJECAAAECBAgQIECgjkDEgXjl3d64XXTR7t3PZJzYuP/Amas7J44fP3b0SFzIqbOrMtu0NbbFGsRFs1iGjYHt1FNPnThx/OSJ46fan6fL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AmJb148A8ydAgAABAgQIECBAoHABsa3wBVIeAQIECBAgQIAAAQJdFxDbun4EmD8BAgQIECBAgAABAoULiG2FL5DyCBAgQIAAAQIECBDouoDY1vUjwPwJECBAgAABAgQIEChcQGwrfIGUR4AAAQIECBAgQIBA1wXEtq4fAeZPgAABAgQIECBAgEDhAmJb4QukPAIECBAgQIAAAQIEui4gtnX9CDB/AgQIECBAgAABAgQKFxDbCl8g5REgQIAAAQIECBAg0HUBsa3rR4D5EyBAgAABAgQIECBQuIDYVvgCKY8AAQIECBAgQIAAga4LiG1dPwLMnwABAgQIECBAgACBwgXEtsIXSHkECBAgQIAAAQIECHRdQGzr+hFg/gQIECBAgAABAgQIFC4gthW+QMojQIAAAQIECBAgQKDrAmJb148A8ydAgAABAgQIECBAoHABsa3wBVIeAQIECBAgQIAAAQJdFxDbun4EmD8BAgQIECBAgAABAoULiG2FL5DyCBAgQIAAAQIECBDouoDY1vUjwPwJECBAgAABAgQIEChcQGwrfIGUR4AAAQIECBAgQIBA1wXEtq4fAeZPgAABAgQIECBAgEDhAmJb4QukPAIECBAgQIAAAQIEui4gtnX9CDB/AgQIECBAgAABAgQKFxDbCl8g5REgQIAAAQIECBAg0HUBsa3rR4D5EyBAgAABAgQIECBQuIDYVvgCKY8AAQIECBAgQIAAga4LiG1dPwLMnwABAgQIECBAgACBwgX2FF6f8gg0KbB79+69e/fGiKcvuODE8eNNDm0sAgQIECBAgAABApsJiG2bydjeRYGbXn7z/D95fcz8xIkTf/h//34XCcyZAAECBAgQIECgPAGxrek12bV7d6/3gv6oa9/8+tNPP91/uMWda6659uDFl0SDEyeOf/tbD27R0lMECBAgQIAAAQIECMySgNjW9Gru27fvJ//p/9wf9f/7f1e/8Def7z/c4s4rfujWF7/kpdHgu9956P/5k6UtWnqKAAECBAgQIECAAIFZEhDbdng1b33lq7/6lS8/8cSRHa5jw/D/5PU/cmD/gdiw8plPHj16dMMz7hIgQIAAAQIECBAgsAMCPklyB9A3DhkfgPGPX/PajVt2/H68hvOFL3px/Ntz9sM5drweBRAgQIAAAQIECBDouIDYtvMHwIte/JLnXd/b+TpUQIAA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AiRAAuGTAM228DlubDUJkAAJkAAJkAAJkAAJkECEIUCzLcIMNTtKAiRAAiRAAiRAAiRAAiQQPgnQbAuf48ZWkwAJkAAJkAAJkAAJkAAJRBgCkSNMT9lRFwQunD+3Ye1qZMIWYS6y8jQJkAAJkAAJkAAJkAAJkEAoEqDZFoqww3ZVN65fx2/YbiNbRwIkQAIkQAIkQAIkQAIRkQAnSUbEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZbRBx19pkESIAESIAESIAESIAESCAcEaDZFo4Gi00lARIgARIgARIgARIgARKIiARotkXEUWefSYAESIAESIAESIAESIAEwhEBmm3haLDYVBIgARIgARIgARIgARIggYhIgGZb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QAIkQAIkQAIkQAL+IUCzzT/cWSsJkAAJkAAJkAAJkAAJkAAJuEmAZpuboJiNBEiABEiABEiABEiABEiABPxDgGabf7izVhIgARIgARIgARIgARIgARJwkwDNNjdBMRsJkAAJkAAJkAAJkAAJkAAJ+IcAzTb/cGetJEACJEACJEACJEACJEACJOAmAZptboJiNhIgARIgARIgARIgARIgARLwDwGabf7hzlpJgARIgARIgARIgARIgARIwE0CNNvcBMVsJEACJEACJEACJEACJEACJOAfAjTb/MOdtZIACZAACZAACZAACZAACZCAmwRotrkJitlIgARIgARIgARIgARIgARIwD8EaLb5hztrJQESIAESIAESIAESIAESIAE3CdBscxMUs5EACZAACZAACZAACZAACZCAfwjQbPMPd9ZKAiRAAiRAAiRAAiRAAiRAAm4SoNnmJihmIwESIAESIAESIAESIAESIAH/EKDZ5h/urJUESIAESIAESIAESIAESIAE3CRAs81NUMxGAiRAAiRAAiRAAiRAAiRAAv9n776CJDvPM0FXVrX3jW54S3hvCA+wBYAACIIUJJISJUizodnY2FgbK2n2Zvdm52pNxE7sbMTc7NWYnV3FSkNKpIihkSEIEt57S4BwJFzDtPddtV8hG6cT1dXV1dnfl5VZ9UAd1KnMc97znyezyXrxHzMzAmrbzLjbKwECBAgQIECAAAECBKYpoLZNE8pqBAgQIECAAAECBAgQmBkBtW1m3O2VAAECBAgQIECAAAEC0xToo9rWarWmOWirESBAgAABAgQIECBAoFSgr+rJzNe2sbGxNndfuZR+A4QTIECAAAECBAgQINDnAk09aQrLDA545mvb6Oho+/hbwzM/mBn8JOyaAAECBAgQIECAAIH+EWjqSVNYZnBsM9+URkf3to9/ZHhkBiHsmgABAgQIECBAgAABAo1AU0+awtK81fuFPqhte/fVtuERta33XwB7JECAAAECBAgQIEBgEoGmnox+VlgmWalXL/VBbRsdHfv0PMnhT//p1YHbDwECBAgQIECAAAECBCYXaLpJVBUnSe4z2rNnT3tp3vz5k7N5lQABAgQIECBAgAABAr0SaIpJU1V6tefJ9zPzs20xrj17drdHN2/+gsmH6VUCBAgQIECAAAECBAj0SqApJk1V6dWeJ99PX9S23bt2tUe3QG2b/GPyKgECBAgQIECAAAECvRNoisnu3fuqSu/2Pdme+qO27d7dfhjCyLx5zZV/k43WawQIECBAgAABAgQIEKgViEoSxST2ESVl9659JwbW7vJQ6X1R2wKkmXBbuHDRocbsfQIECBAgQIAAAQIECFQJNJXk05IyVrWbw8ntk9o2tHPnjvawG6PDOQrrEiBAgAABAgQIECBAIEdg4aJ9M0lNScnJPYKUfqltu3btHBsbjQOJ6cjmti1HcFw2JUCAAAECBAgQIECAwGELRBmJUyRjs6gnUVIOe/uaDfqltoXKzh37JtwWLV5Sc7BSCRAgQIAAAQIECBAgMJVAU0bG68lYX5whGcPtm9o2NLRj+/a238IFC+MiwKksvUeAAAECBAgQIECAAIFsgaghUUbaqU09yd5JN3l9VNv27t2zbxay1Vq8dFk3R2MbAgQIECBAgAABAgQIdCswXkNardg6iknUk25j8rfro9oWB7d969b2IcaNSVzhlv9pSyRAgAABAgQIECBA4CACUUCa+yM2xeQg6/b65f6qbfEM8uZuLcuWreg1hv0RIECAAAECBAgQIDBXBZoCEle1RTHpK4b+qm1Bs23L5uaWkkucKtlXXxaDIUCAAAECBAgQIDBLBaJ6fPaI7dFtWzf321H2XW0bHR3dumVLm2nxkqXzFyzoNzLjIUCAAAECBAgQIEBgNglE6Yjq0T6iKCNRSfrt6PqutgXQzh3bmyckLFu+cthdJfvtW2M8BAgQIECAAAECBGaLQNSNKB3to4kaEmWkD4+sH2tbMG3ZtGl0795YGB4eXrFiVevT27n0IZ8hESBAgAABAgQIECAwuAJRNKJuROmIQ4gCEjWkP4+lT2tbXN62edPGsU8fbxfnmC5fsao/+YyKAAECBAgQIECAAIHBFYii8dklbWOfFpC+Oz2ybduntS0GFzdv2bJ5X9mNk02Xr9g3cTm43wkjJ0CAAAECBAgQIECgfwSiYjS30ojq0W93j+yE6t/aFqPctXPH1i377uKyYOGiZZpb50dnmQABAgQIECBAgACBbgWiXETFaG8dpSOqR7dJvdiur2tbAOzYvm37tv3P4F6xcrXr3HrxvbAPAgQIECBAgAABArNUYPx6tpWr9z9Ze9vWKB19fqwjq9Yc1+dD3L17V1wjGM8sj3GOjIxEJ47pyz68KWefMxoeAQIECBAgQIAAAQJRK6KztctFaERh27Z13+PH+hlnAGpb8O3etSv+s33iaVS4RQsXRUXu53NP+/kjNzYCBAgQIECAAAECc1AgGkQ8U3vZshXt+0aGQBS2gehsMdTBqG0x0D27d+/dsyea2/hJkq3W/FhauGg0btL56XMC5uDXziETIECAAAECBAgQIDBNgQULF8ZNI+M/o0rEJnHu3pZNG/vzEW2THtHA1LYYfTS0uFIwbtA5MjIvfoyWHCekzl+wcO/ePc6ZnPTT9SIBAgQIECBAgACBOS4Q50NGYVu8ZGkzyRbP1N68ccOePXsGSGaQaluwxpPcornFHNu8+Z9Ou316tduiRYtj8m3v6F7lbYC+eYZKgAABAgQIECBAoFRg/vz5y5avjBMjh0dG2juKvrB186Y4MbL9gOjSveeGj09bDdw/O3fuiIocjXnR4iXj50x+etnbygVHxVmU42/t3OHMyYH7TA2YAAECBAgQIECAQIpA+y6GcV5e+zna7czoae171A9cYWuPv3Xa2Zem6MxISEx0Ll6ybOGi8TuUdA4gTpuMu5jsjn927RzQD6bzcCwTIECAAAECBAgQIDCFQNSBuHgqptfiDhjtK6qalaMO7NwRlW3LQJ+aN5Czbc1nMD7LuWVTPNht8ZIlCxctbspbfFQji+ctWjy+YqwzNhb/MTq27/9GY5quSbBAgAABAgQIECBAgMBgCcTv/62YwGl9+n/x/8d/mOR51J8Wtu3bt2+La6wG6wAPHO1g17b28cT9JOO55nGKajTsuDlM3GKy6W+xwqcfYXM664ECXiFAgAABAgQIECBAYJAEpp6GibYWV1Tt2rlzNp15NxtqW/srNv7xfHph2yB944yVAAECBAgQIECAAAEChxKYZDLxUJt4nwABAgQIECBAgAABAgR6J6C29c7anggQIECAAAECBAgQINCFgNrWBZpNCBAgQIAAAQIECBAg0DsBta131vZEgAABAgQIECBAgACBLgTUti7QbEKAAAECBAgQIECAAIHeCahtvbO2JwIECBAgQIAAAQIECHQhoLZ1gWYTAgQIECBAgAABAgQI9E5AbeudtT0RIECAAAECBAgQIECgCwG1rQs0mxAgQIAAAQIECBAgQKB3Ampb76ztiQABAgQIECBAgAABAl0IqG1doNmEAAECBAgQIECAAAECvRNQ23pnbU8ECBAgQIAAAQIECBDoQkBt6wLNJgQIECBAgAABAgQIEOidgNrWO2t7IkCAAAECBAgQIECAQBcCalsXaDYhQIAAAQIECBAgQIBA7wTUtt5Z2xMBAgQIECBAgAABAgS6EFDbukCzCQECBAgQIECAAAECBHonoLb1ztqeCBAgQIAAAQIECBAg0IWA2tYFmk0IECBAgAABAgQIECDQOwG1rXfW9kSAAAECBAgQIECAAIEuBNS2LtBsQoAAAQIECBAgQIAAgd4JqG29s7YnAgQIECBAgAABAgQIdCGgtnWBZhMCBAgQIECAAAECBAj0TkBt6521PREgQIAAAQIECBAgQKALAbWtCzSbECBAgAABAgQIECBAoHcCalvvrO2JAAECBAgQIECAAAECXQiobV2g2YQAAQIECBAgQIAAAQK9E1DbemdtTwQIECBAgAABAgQIEOhCQG3rAs0mBAgQIECAAAECBAgQ6J2A2tY7a3siQIAAAQIECBAgQIBAFwJqWxdoNiFAgAABAgQIECBAgEDvBNS23lnbEwECBAgQIECAAAECBLoQUNu6QLMJAQIECBAgQIAAAQIEeiegtvXO2p4IECBAgAABAgQIECDQhYDa1gWaTQgQIECAAAECBAgQINA7AbWtd9b2RIAAAQIECBAgQIAAgS4E1LYu0GxCgAABAgQIECBAgACB3gmobb2zticCBAgQIECAAAECBAh0IaC2dYFmEwIECBAgQIAAAQIECPROQG3rnbU9ESBAgAABAgQIECBAoAsBta0LNJsQIECAAAECBAgQIECgdwJqW++s7YkAAQIECBAgQIAAAQJdCKhtXaDZhAABAgQIECBAgAABAr0TUNt6Z21PBAgQIECAAAECBAgQ6EJAbesCzSYECBAgQIAAAQIECBDonYDa1jtreyJAgAABAgQIECBAgEAXAmpbF2g2IUCAAAECBAgQIECAQO8E1LbeWdsTAQIECBAgQIAAAQIEuhBQ27pAswkBAgQIECBAgAABAgR6J6C29c7anggQIECAAAECBAgQINCFgNrWBZpNCBAgQIAAAQIECBAg0DsBta131vZEgAABAgQIECBAgACBLgTUti7QbEKAAAECBAgQIECAAIHeCahtvbO2JwIECBAgQIAAAQIECHQhoLZ1gWYTAgQIECBAgAABAgQI9E5AbeudtT0RIECAAAECBAgQIECgCwG1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EEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDYFnsRkAEEEEAAAQQQQAABBBBAIEiAsC1Ih2UIIIAAAggggAACCCCAQOwChG2xFwEZQAABBBBAAAEEEEAAAQSCBAjbgnRYhgACCCCAAAIIIIAAAgjELkDY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\"\n />\n </defs>\n </svg>\n );\n}\n","import { IconLoader } from \"../icons\";\n\ninterface IBaseButtonProps {\n label: string;\n type?: string;\n size?: string;\n paddingClassX?: string;\n disabled?: boolean;\n loading?: boolean;\n customClass?: string;\n onClick?: () => void;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n caller?: \"buzapay\" | \"miden\";\n}\n\n/** === Angular getters ported to React === */\nfunction getButtonBgClass(\n type: string,\n disabled?: boolean,\n caller?: \"buzapay\" | \"miden\"\n) {\n if (disabled)\n return \"bg-gray-200 text-gray-400 cursor-not-allowed border-gray-200\";\n switch (type) {\n case \"primary\":\n return `${\n caller === \"buzapay\" ? \"bg-primary\" : \"bg-primary-miden\"\n } text-white hover:bg-primary-black hover:border-primary-black border-primary`;\n case \"secondary\":\n return \"bg-gray-200 border-gray-200 hover:bg-gray-300 text-heading-text\";\n case \"danger\":\n return \"bg-red-500 border-red-500 text-white hover:bg-red-600\";\n case \"neutral\":\n default:\n return \"bg-off-white border-grey-border hover:bg-gray-100\";\n }\n}\n\nfunction getButtonSizeClass(size?: string, caller?: \"buzapay\" | \"miden\") {\n switch (size) {\n case \"de\":\n return `${\n caller === \"buzapay\" ? \"h-68px rounded-xl\" : \"h-42px rounded-md\"\n }`;\n case \"md\":\n return \"h-42px rounded-lg\";\n case \"sm\":\n return \"h-32px rounded-md\";\n default:\n return \"h-68px rounded-xl\";\n }\n}\n\nfunction getLabelSizeClass(size?: string) {\n switch (size) {\n case \"de\":\n case \"md\":\n case \"sm\":\n return \"text-body-2xs font-normal\";\n default:\n return \"text-body-xs font-normal\";\n }\n}\n\nexport function BaseButton({\n label,\n type = \"neutral\",\n size = \"de\",\n paddingClassX = \"px-8\",\n disabled = false,\n loading = false,\n customClass,\n onClick,\n prefix,\n suffix,\n children,\n caller = \"buzapay\",\n}: React.PropsWithChildren<IBaseButtonProps>) {\n const isDisabled = disabled || loading;\n\n // Angular’s clickHandler -> emit only when not disabled\n const handleClick = () => {\n if (!isDisabled) onClick?.();\n };\n\n return (\n <button\n className={`flex items-center justify-center gap-2 py-3 border font-normal text-input-grey transition-colors duration-300 ease-in-out ${getButtonBgClass(\n type,\n isDisabled,\n caller\n )} ${getButtonSizeClass(size, caller)} ${paddingClassX} ${customClass}`}\n type=\"button\"\n disabled={isDisabled}\n onClick={handleClick}\n >\n {prefix}\n\n {loading ? (\n <IconLoader></IconLoader>\n ) : (\n <div>\n {label ? (\n <p className={`mb-0 ${getLabelSizeClass(size)}`}>{label}</p>\n ) : (\n <>{children}</>\n )}\n </div>\n )}\n\n {suffix}\n </button>\n );\n}\n","import { IconChevronLeft } from \"../icons\";\n\ninterface IBaseBackProps {\n back: () => void;\n}\n\nexport function BaseBack({ back }: IBaseBackProps) {\n return (\n <div className=\"flex items-center gap-2 cursor-pointer\" onClick={back}>\n <IconChevronLeft></IconChevronLeft>\n <p className=\"mb-0 text-body-xs font-normal\">Back</p>\n </div>\n );\n}\n","import { IconBuzapayIcon, IconLock } from \"../icons\";\nimport { BaseBack } from \"./back\";\n\ninterface IBaseCardProps {\n showBackButton?: boolean;\n onBack?: () => void;\n children?: React.ReactNode;\n onClose?: () => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport function BaseCard({\n showBackButton = false,\n onBack,\n children,\n onClose,\n caller = \"buzapay\",\n}: IBaseCardProps) {\n return caller === \"buzapay\" ? (\n <div className=\"checkout-card-miden w-full h-screen flex flex-col items-center justify-center text-white\">\n <div className=\"flex w-[95%] sm:w-[85%] md:w-[70%] lg:w-[60%] xl:w-1/2\">\n {showBackButton && <BaseBack back={() => onBack?.()} />}\n\n <div className=\"flex gap-2 w-full\">\n <div className=\"flex flex-col gap-8 w-full\">\n <div className=\"bg-off-white rounded-xl\">{children}</div>\n\n <div className=\"flex items-center gap-2 justify-center\">\n <p className=\"text-light-white-100 text-body-2xs font-regular\">\n Powered by Buzapay\n </p>\n <IconBuzapayIcon color=\"#E8F4FF\" />\n </div>\n </div>\n\n {/* Close Icon */}\n <div\n onClick={onClose}\n className=\"hidden sm:flex close-icon flex-col items-center justify-center self-start cursor-pointer hover:bg-gray-500\"\n >\n <p className=\"text-white\">x</p>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"checkout-card-miden w-full h-screen flex flex-col items-center justify-center text-white\">\n <div className=\"flex w-[95%] sm:w-[85%] md:w-[70%] lg:w-[60%] xl:w-1/2\">\n {showBackButton && <BaseBack back={() => onBack?.()} />}\n\n <div className=\"flex gap-2 w-full\">\n <div className=\"flex flex-col gap-8 w-full\">\n <div className=\"bg-white rounded-xl\">{children}</div>\n\n <div className=\"flex items-center gap-4 justify-center\">\n <IconLock color=\"#E8F4FF\" />\n <p className=\"text-light-white-100 text-body-2xs font-regular\">\n Secured by <span className=\"font-semibold\">Miden</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { IconCards, IconCoin, IconCourthouse } from \"../icons\";\n\ninterface IBaseRadioGroupProps {\n options: { label: string; value: string }[];\n type?: \"vertical\" | \"horizontal\";\n value?: string;\n defaultValue?: string;\n selectedChange?: (value: string) => void;\n className?: string;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const BaseRadioGroup = ({\n options,\n type = \"vertical\",\n value,\n defaultValue,\n selectedChange,\n className = \"\",\n caller = \"buzapay\",\n}: IBaseRadioGroupProps) => {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(\"\");\n\n useEffect(() => {\n if (isControlled) return;\n const initial =\n defaultValue ?? (options.length > 0 ? options[0].value : \"\");\n setInternal(initial);\n selectedChange?.(initial);\n }, [isControlled, defaultValue, options]);\n\n const selected = isControlled ? value! : internal;\n\n const setSelected = (v: string) => {\n if (!isControlled) setInternal(v);\n selectedChange?.(v);\n };\n\n const containerLayout =\n type === \"horizontal\" ? \"flex-row gap-5\" : \"flex-col gap-6\";\n\n return caller === \"buzapay\" ? (\n <div\n className={`flex ${containerLayout} ${className}`}\n role=\"radiogroup\"\n aria-orientation={type === \"horizontal\" ? \"horizontal\" : \"vertical\"}\n tabIndex={0}\n >\n {options.map((option) => {\n const isActive = selected === option.value;\n return (\n <div\n key={option.value}\n role=\"radio\"\n aria-checked={isActive}\n tabIndex={-1}\n onClick={() => setSelected(option.value)}\n className=\"flex items-center gap-2 cursor-pointer transition-colors duration-200\"\n >\n <div\n className={[\n \"w-4 h-4 rounded-full border flex items-center justify-center\",\n isActive\n ? \"bg-orange-500 border-orange-500\"\n : \"bg-white border-grey-200\",\n ].join(\" \")}\n >\n {isActive && <div className=\"bg-white w-2 h-2 rounded-full\" />}\n </div>\n <p className=\"mb-0 text-body-2xs font-medium text-heading-text\">\n {option.label}\n </p>\n </div>\n );\n })}\n </div>\n ) : (\n <div\n className={`flex ${containerLayout} ${className}`}\n role=\"radiogroup\"\n aria-orientation={type === \"horizontal\" ? \"horizontal\" : \"vertical\"}\n tabIndex={0}\n >\n {options.map((option) => {\n const isActive = selected === option.value;\n return (\n <div\n key={option.value}\n role=\"radio\"\n aria-checked={isActive}\n tabIndex={-1}\n onClick={() => setSelected(option.value)}\n className={[\n \"flex items-center gap-4 cursor-pointer transition-colors duration-200 px-6 py-2 my-1\",\n selected === option.value ? \"border-r-4 border-white\" : \"\",\n ].join(\" \")}\n >\n {option.value === \"CARD\" && (\n <IconCards\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n {option.value === \"BANK_TRANSFER\" && (\n <IconCourthouse\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n {option.value === \"STABLE_COIN\" && (\n <IconCoin\n color={selected === option.value ? \"#ffffff\" : \"#8FAECA\"}\n />\n )}\n\n <p\n className={[\n \"mb-0 text-body-2xs font-medium\",\n selected === option.value ? \"text-white\" : \"text-[#8FAECA]\",\n ].join(\" \")}\n >\n {option.label}\n </p>\n </div>\n );\n })}\n </div>\n );\n};\n","interface IBaseImageProps {\n src: string;\n height?: number | string;\n width?: number | string;\n alt?: string;\n customClass?: string;\n isFullWidth?: boolean;\n onClick?: () => void;\n}\n\nexport function BaseImage({\n src,\n height = 50,\n width = 50,\n alt = \"Image\",\n customClass,\n isFullWidth,\n onClick,\n}: IBaseImageProps) {\n return (\n <img\n src={src}\n height={height}\n alt={alt}\n className={`${customClass} ${isFullWidth ? \"w-full\" : \"\"}`}\n style={{ width: isFullWidth ? \"100%\" : `${width}px` }}\n onClick={onClick}\n />\n );\n}\n","import { IconCopySuccess } from \"../icons\";\n\ninterface IBaseCopyProps {\n copyText: string;\n color?: string;\n}\n\nexport function BaseCopy({ copyText, color }: IBaseCopyProps) {\n const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n };\n\n const copyHandler = () => {\n copyToClipboard(copyText)\n .then(() => {})\n .catch((err: any) => {});\n };\n\n return (\n <IconCopySuccess\n className=\"cursor-pointer\"\n color={color}\n onClick={() => copyHandler()}\n />\n );\n}\n","import { BaseImage } from \".\";\nimport { truncateString } from \"../../utils\";\nimport { BaseCopy } from \"./copy\";\n\ninterface IBaseLabelInfoProps {\n type?: \"vertical\" | \"horizontal\";\n label?: string;\n labelCustomClass?: string;\n valueImageSrc?: string;\n valueImageCustomClass?: string;\n valueImagePosition?: \"prefix\" | \"suffix\";\n hasValueCopy?: boolean;\n value?: string;\n valueCustomClass?: string;\n alignRight?: boolean;\n}\n\nexport const BaseLabelInfo = ({\n type = \"vertical\",\n label = \"\",\n labelCustomClass = \"text-body-4xs font-medium text-light-copy\",\n valueImageSrc = \"\",\n valueImageCustomClass = \"\",\n valueImagePosition = \"prefix\",\n hasValueCopy = false,\n value = \"\",\n valueCustomClass = \"text-body-2xs font-medium text-sub-copy max-w-[18rem] truncate\",\n alignRight = false,\n}: IBaseLabelInfoProps) => {\n const showPrefixImg = valueImageSrc && valueImagePosition === \"prefix\";\n const showSuffixImg = valueImageSrc && valueImagePosition === \"suffix\";\n\n if (type === \"vertical\") {\n return (\n <div\n className={`flex flex-col gap-1 ${\n alignRight ? \"text-right items-end\" : \"\"\n }`}\n >\n <p className={labelCustomClass}>{label.toUpperCase()}</p>\n\n <div className=\"flex items-center gap-1\">\n {showPrefixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n\n {!hasValueCopy ? (\n <p className={valueCustomClass}>{value}</p>\n ) : (\n <p className={`${valueCustomClass} truncate`}>\n {truncateString(value, 40)}\n </p>\n )}\n\n {hasValueCopy && <BaseCopy copyText={value} color=\"#9DBFDE\" />}\n\n {showSuffixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n </div>\n </div>\n );\n }\n\n // horizontal\n return (\n <div className=\"flex items-center justify-between\">\n <p className={labelCustomClass}>{label.toUpperCase()}</p>\n\n <div className=\"flex items-center gap-1\">\n {showPrefixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n\n <p className={valueCustomClass}>{value}</p>\n\n {hasValueCopy && <BaseCopy copyText={value} color=\"#9DBFDE\" />}\n\n {showSuffixImg && (\n <BaseImage\n src={valueImageSrc}\n alt={value}\n width={22}\n customClass={valueImageCustomClass}\n />\n )}\n </div>\n </div>\n );\n};\n","import { BaseButton, BaseLabelInfo } from \".\";\nimport { ISuccessObject } from \"../../types\";\nimport { formatAmount } from \"../../utils\";\nimport { IconCheckCircle } from \"../icons\";\n\ninterface IBaseSuccessProps {\n amount: number;\n currency: string;\n redirectUrl: string;\n successObject: ISuccessObject;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const BaseSuccess = ({\n amount,\n currency,\n redirectUrl,\n successObject = {\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n },\n caller = \"buzapay\",\n}: IBaseSuccessProps) => {\n const formatAmountHandler = formatAmount(amount, currency);\n\n const goToRedirectUrl = () => {\n window.open(redirectUrl, \"_self\", \"noopener,noreferrer\");\n };\n\n const paymentDate = successObject.paymentDate\n ? new Date(successObject.paymentDate).toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n })\n : \"---\";\n\n return (\n <div className=\"flex flex-col gap-8 p-16\">\n <div className=\"flex flex-col gap-8\">\n <div className=\"flex flex-col gap-8\">\n <IconCheckCircle color=\"#F47A1F\" className=\"mx-auto\" />\n\n <div className=\"flex flex-col text-center\" style={{ gap: \"2px\" }}>\n <p className=\"text-heading-text font-medium text-header-2xl\">\n {formatAmountHandler}\n </p>\n <p className=\"text-sub-copy font-regular text-body-3xs\">\n Has been paid successfully\n </p>\n </div>\n </div>\n\n <div className=\"flex flex-col\">\n <div className=\"py-4 border-b border-grey-100\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Order ID\"\n value={successObject.paymentId}\n />\n </div>\n\n{successObject.paymentDate}\n <div className=\"py-4\">\n <BaseLabelInfo\n type=\"horizontal\"\n label=\"Payment date\"\n value={paymentDate}\n />\n </div>\n </div>\n </div>\n\n <div className=\"mx-auto\" style={{ width: \"80%\" }}>\n <BaseButton\n label=\"Return to Merchant Website\"\n type=\"secondary\"\n caller={caller}\n customClass=\"w-full\"\n onClick={goToRedirectUrl}\n />\n </div>\n </div>\n );\n};\n","interface IBaseHintProps {\n hint: string;\n}\n\nexport function BaseHint({ hint }: IBaseHintProps) {\n return (\n <p className=\"mb-0 text-body-3xs font-medium text-orange-500\">{hint}</p>\n );\n}\n","import React from \"react\";\nimport { IconChevronDown, IconChevronUp } from \"../icons\";\nimport { BaseHint } from \"./hint\";\nimport { BaseInputError } from \"./input-error\";\nimport { BaseImage } from \"./image\";\n\ntype ImageType = \"country\" | \"bank\" | null;\n\nexport interface SelectOption {\n label: string;\n value: string;\n countryCode?: string; // e.g. \"NG\"\n bankCode?: string;\n}\n\ninterface IBaseSelectProps {\n options: SelectOption[];\n value?: string; // controlled value\n defaultValue?: string; // uncontrolled initial value\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n placeholder?: string; // \"Select an option\" by default\n hasSearch?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n showBottomText?: boolean;\n label?: string;\n hint?: string;\n required?: boolean;\n itemImageType?: ImageType;\n\n prefix?: React.ReactNode; // slot before text in trigger\n\n className?: string;\n}\n\nexport const BaseSelect = ({\n options,\n value,\n defaultValue,\n onChange,\n onBlur,\n placeholder = \"Select an option\",\n hasSearch = true,\n disabled = false,\n loading = false,\n validationError = \"\",\n showBottomText = true,\n label = \"\",\n hint = \"\",\n required = false,\n itemImageType = null,\n prefix,\n className = \"\",\n}: IBaseSelectProps) => {\n const isControlled = value !== undefined;\n const [open, setOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue ?? value ?? \"\",\n );\n const [filtered, setFiltered] = React.useState<SelectOption[]>(options);\n const [activeIndex, setActiveIndex] = React.useState<number>(-1);\n\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n\n // Keep internal state in sync for controlled usage\n React.useEffect(() => {\n if (isControlled) setInternalValue(value ?? \"\");\n }, [isControlled, value]);\n\n // Reset filtered list whenever options change\n React.useEffect(() => {\n setFiltered(options);\n }, [options]);\n\n const selected = React.useMemo(\n () =>\n options.find((o) => o.value === (isControlled ? value : internalValue)) ||\n null,\n [options, value, internalValue, isControlled],\n );\n\n const displayText =\n selected?.label ||\n placeholder ||\n (label ? `Select ${label}` : \"Select an option\");\n\n // Open/close helpers\n const openMenu = React.useCallback(() => {\n if (disabled || open) return;\n setFiltered(options);\n // set active index to current selection or first\n const idx = selected\n ? Math.max(\n 0,\n options.findIndex((o) => o.value === selected.value),\n )\n : 0;\n setActiveIndex(idx);\n setOpen(true);\n // focus search if enabled\n setTimeout(() => {\n if (hasSearch && searchRef.current) {\n searchRef.current.focus();\n searchRef.current.select();\n }\n });\n }, [disabled, open, options, selected, hasSearch]);\n\n const closeMenu = React.useCallback(() => {\n if (!open) return;\n setOpen(false);\n setActiveIndex(-1);\n }, [open]);\n\n const toggleMenu = React.useCallback(() => {\n if (disabled) return;\n open ? closeMenu() : openMenu();\n }, [open, disabled, openMenu, closeMenu]);\n\n // Outside click\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const t = e.target as Node;\n const tri = triggerRef.current;\n const menu = menuRef.current;\n if (tri && !tri.contains(t) && menu && !menu.contains(t)) closeMenu();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, closeMenu]);\n\n // Selection\n const commit = (val: string) => {\n if (!isControlled) setInternalValue(val);\n onChange?.(val);\n onBlur?.(val);\n closeMenu();\n };\n\n // Search\n const onSearchInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n const q = e.target.value.toLowerCase();\n const list = options.filter((o) => o.label.toLowerCase().includes(q));\n setFiltered(list);\n setActiveIndex(list.length ? 0 : -1);\n };\n\n // Keyboard on trigger\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"Spacebar\":\n case \"ArrowDown\":\n e.preventDefault();\n if (!open) openMenu();\n else moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open) openMenu();\n else moveActive(-1);\n break;\n case \"Escape\":\n if (open) {\n e.preventDefault();\n closeMenu();\n }\n break;\n }\n };\n\n // Keyboard in menu\n const onMenuKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n break;\n case \"Home\":\n e.preventDefault();\n setActiveIndex(filtered.length ? 0 : -1);\n scrollActiveIntoView(0);\n break;\n case \"End\":\n e.preventDefault();\n setActiveIndex(filtered.length - 1);\n scrollActiveIntoView(filtered.length - 1);\n break;\n case \"Enter\":\n e.preventDefault();\n if (activeIndex >= 0) {\n const opt = filtered[activeIndex];\n if (opt) commit(opt.value);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n closeMenu();\n break;\n case \"Tab\":\n closeMenu();\n break;\n }\n };\n\n const moveActive = (delta: number) => {\n if (!filtered.length) return;\n const max = filtered.length - 1;\n const next =\n activeIndex < 0 ? 0 : Math.min(max, Math.max(0, activeIndex + delta));\n setActiveIndex(next);\n scrollActiveIntoView(next);\n };\n\n const scrollActiveIntoView = (index: number) => {\n const menu = menuRef.current;\n if (!menu) return;\n const items = menu.querySelectorAll<HTMLElement>(\"[data-option]\");\n if (index >= 0 && index < items.length) {\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n };\n\n // UI helpers\n const containerBg = disabled ? \"bg-grey-100 cursor-not-allowed\" : \"bg-white\";\n const containerBorder = validationError\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100 bg-white\";\n\n return (\n <div className={`flex flex-col gap-2 relative ${className}`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n {/* Trigger */}\n <div\n ref={triggerRef}\n className={`border-c rounded-md flex items-center justify-between h-12 cursor-pointer px-3 py-2 ${containerBg} ${containerBorder}`}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? \"select-menu\" : undefined}\n aria-disabled={disabled || undefined}\n aria-activedescendant={\n open && activeIndex >= 0 ? `option-${activeIndex}` : undefined\n }\n tabIndex={0}\n onClick={toggleMenu}\n onKeyDown={onTriggerKeyDown}\n >\n <div className=\"flex items-center gap-2\">\n {prefix}\n\n <div className=\"flex items-center gap-2\">\n {selected &&\n itemImageType === \"country\" &&\n selected.countryCode && (\n <BaseImage\n src={`https://flagcdn.com/w40/${selected.countryCode.toLowerCase()}.png`}\n alt={selected.countryCode}\n width={28}\n customClass=\"rounded-lg\"\n />\n )}\n\n {/* Bank logos could be handled similarly here */}\n\n <p\n className={`text-body-2xs font-normal mb-0 ${\n selected?.label ? \"text-sub-copy\" : \"text-grey-500\"\n }`}\n >\n {displayText}\n </p>\n </div>\n </div>\n\n {loading ? (\n // Loader (replace with your own IconLoader if you have one)\n <span className=\"inline-block h-4 w-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n ) : open ? (\n <IconChevronUp color=\"#8FAECA\" />\n ) : (\n <IconChevronDown color=\"#8FAECA\" />\n )}\n </div>\n\n {/* Menu */}\n {open && (\n <div\n ref={menuRef}\n id=\"select-menu\"\n className=\"border-c bg-white rounded-md border-grey-border text-body-xs font-normal text-input-grey w-full mt-2 max-h-22rem overflow-y-auto\"\n role=\"listbox\"\n aria-label={label || \"Options\"}\n style={{ position: \"absolute\", top: \"100%\", zIndex: 10 }}\n onKeyDown={onMenuKeyDown}\n >\n {hasSearch && (\n <div className=\"px-4 pt-2 pb-1\">\n <input\n ref={searchRef}\n type=\"text\"\n onChange={onSearchInput}\n onBlur={onSearchInput}\n placeholder={`Search ${label || \"options\"}`}\n className=\"bg-transparent outline-none border-b pb-2 w-full focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal\"\n />\n </div>\n )}\n\n {filtered.map((opt, i) => {\n const selectedOpt = selected?.value === opt.value;\n return (\n <div\n key={opt.value}\n onClick={() => commit(opt.value)}\n id={`option-${i}`}\n data-option\n role=\"option\"\n aria-selected={selectedOpt}\n className={`px-4 py-3 first:pt-0 hover:bg-gray-100 flex items-center gap-2 cursor-pointer ${\n i === activeIndex ? \"bg-gray-100\" : \"\"\n }`}\n >\n {itemImageType === \"country\" && opt.countryCode && (\n <BaseImage\n src={`https://flagcdn.com/w40/${opt.countryCode.toLowerCase()}.png`}\n alt={opt.countryCode}\n width={28}\n customClass=\"rounded-lg\"\n />\n )}\n\n {/* If you later add bank logos:\n {itemImageType === \"bank\" && (\n <img src={bankLogoHandler(opt.bankCode || opt.value)} alt={opt.value} width={28} className=\"rounded-lg\" />\n )} */}\n\n <p className=\"mb-0 text-body-2xs font-medium\">{opt.label}</p>\n </div>\n );\n })}\n </div>\n )}\n\n {hint && showBottomText && <BaseHint hint={hint} />}\n {validationError && showBottomText && (\n <BaseInputError errorMessage={validationError} />\n )}\n </div>\n );\n};\n","import { formatAmount } from \"../../utils\";\nimport { IconUsdc, IconUsdt } from \"../icons\";\n\ninterface IBaseCurrencyAmountProps {\n currency: string;\n amount: number | string;\n textClass?: string;\n iconColorClass?: string;\n iconWidth?: number | string;\n iconHeight?: number | string;\n}\n\nexport const BaseCurrencyAmount = ({\n currency,\n amount,\n textClass = \"\",\n iconColorClass = \"\",\n iconWidth = 16,\n iconHeight = 16,\n}: IBaseCurrencyAmountProps) => {\n const cur = currency?.toUpperCase();\n\n if (cur !== \"USDT\" && cur !== \"USDC\") {\n return <p className={textClass}>{formatAmount(amount, cur)}</p>;\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n {cur === \"USDT\" && (\n <IconUsdt\n width={iconWidth}\n height={iconHeight}\n color={iconColorClass}\n />\n )}\n {cur === \"USDC\" && (\n <IconUsdc\n width={iconWidth}\n height={iconHeight}\n color={iconColorClass}\n />\n )}\n <p className={textClass}>{formatAmount(amount)}</p>\n </div>\n );\n};\n","// Updated BaseInput with a new prop: preventPaste\n\nimport React from \"react\";\nimport { formatAmount, restrictToNumericKeys } from \"../../utils\";\nimport { BaseImage } from \"./image\";\nimport { IMaskInput } from \"react-imask\";\n\ntype Rule = \"numeric\";\n\nexport interface IBaseInputProps {\n label?: string;\n type?: React.HTMLInputTypeAttribute;\n placeholder?: string;\n validationError?: string;\n showBottomText?: boolean;\n hint?: string;\n mask?: string;\n rules?: Rule[];\n isAmountInput?: boolean;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n showCopyIcon?: boolean;\n preventPaste?: boolean;\n\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n\n className?: string;\n}\n\nexport const BaseInput = ({\n label = \"\",\n type = \"text\",\n mask,\n placeholder,\n validationError = \"\",\n showBottomText = true,\n hint = \"\",\n rules = [],\n isAmountInput = false,\n required = false,\n disabled = false,\n loading = false,\n showCopyIcon = false,\n preventPaste = false,\n\n value,\n defaultValue,\n onChange,\n onBlur,\n\n prefix,\n suffix,\n\n className = \"\",\n}: IBaseInputProps) => {\n const isControlled = value !== undefined;\n const [rawValue, setRawValue] = React.useState<string>(\n defaultValue ?? value ?? \"\",\n );\n const [localHint, setLocalHint] = React.useState<string>(\"\");\n const [localError, setLocalError] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n if (isControlled) setRawValue(value ?? \"\");\n }, [isControlled, value]);\n\n const formattedValue = isAmountInput\n ? formatAmount(rawValue.replace(/,/g, \"\"))\n : rawValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const incoming = e.target.value.replace(/,/g, \"\");\n if (!isControlled) setRawValue(incoming);\n onChange?.(incoming);\n\n setTimeout(() => {\n const el = e.target;\n el.selectionStart = el.selectionEnd = el.value.length;\n });\n };\n\n const handleBlur = () => {\n onBlur?.(rawValue);\n };\n\n const handleKeyDown = (e: any) => {\n if (rules.includes(\"numeric\")) restrictToNumericKeys(e);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (preventPaste) {\n e.preventDefault();\n setLocalError(\"Pasting is disabled for this input\");\n }\n };\n\n const containerBg = disabled ? \"bg-grey-50 cursor-not-allowed\" : \"bg-white\";\n const containerBorder =\n validationError || localError\n ? \"border-red-300 bg-red-50\"\n : \"border-grey-100\";\n\n const copyToClipboard = (text: string): Promise<void> => {\n return navigator.clipboard.writeText(text);\n };\n\n const copyHandler = (): void => {\n copyToClipboard(rawValue)\n .then(() => {\n setLocalHint(\"Text copied to clipboard\");\n })\n .catch(() => {\n setLocalError(\"Failed to copy text to clipboard\");\n });\n };\n\n return (\n <div className={`flex flex-col gap-2 ${className}`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n <div\n className={`border-c px-3 py-2 flex items-center justify-between rounded-md h-12 ${containerBg} ${containerBorder}`}\n >\n {prefix}\n\n <IMaskInput\n type={type}\n mask={mask}\n value={formattedValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n disabled={disabled}\n placeholder={\n placeholder ?? (label ? `Enter ${label.toLowerCase()}` : undefined)\n }\n inputMode={isAmountInput ? \"decimal\" : undefined}\n className=\"search-input bg-transparent outline-none border-none focus:outline-none focus:ring-0 text-body-2xs text-light-copy font-normal w-full\"\n />\n\n {!loading ? (\n <>\n {suffix}\n\n {showCopyIcon && rawValue && rawValue.trim() !== \"\" && (\n <BaseImage\n src=\"assets/images/copyIcon.svg\"\n alt=\"copy\"\n width={16}\n height={16}\n customClass=\"cursor-pointer hover:opacity-70 transition-opacity\"\n onClick={copyHandler}\n />\n )}\n </>\n ) : (\n <div className=\"animate-spin h-4 w-4 border-2 border-current border-t-transparent rounded-full\" />\n )}\n </div>\n\n {(hint || localHint) && showBottomText && (\n <p className=\"text-body-3xs text-light-copy\">{localHint || hint}</p>\n )}\n\n {(validationError || localError) && showBottomText && (\n <p className=\"text-body-3xs text-red-500\">\n {localError || validationError}\n </p>\n )}\n </div>\n );\n};\n","import { useMemo } from \"react\";\n\nexport default function BaseCircularCountdown({\n value = 0,\n total = 100,\n middleText = \"\",\n size = 72,\n stroke = 6,\n color = \"#3b82f6\",\n}) {\n const radius = useMemo(() => (size - stroke) / 2, [size, stroke]);\n const circumference = useMemo(() => 2 * Math.PI * radius, [radius]);\n\n const percentLeft = useMemo(() => {\n const safeTotal = Math.max(1, total);\n const p = (value / safeTotal) * 100;\n return Math.max(0, Math.min(100, p));\n }, [value, total]);\n\n const dashOffset = useMemo(\n () => circumference * (1 - percentLeft / 100),\n [circumference, percentLeft]\n );\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"inline-block\",\n width: `${size}px`,\n height: `${size}px`,\n color,\n }}\n >\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n aria-hidden=\"true\"\n >\n {/* Background track */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={stroke}\n fill=\"none\"\n style={{ stroke: \"rgba(0, 0, 0, 0.12)\" }}\n />\n\n {/* Progress ring */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={color}\n strokeWidth={stroke}\n fill=\"none\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n style={{\n strokeLinecap: \"round\",\n transform: \"rotate(-90deg)\",\n transformOrigin: \"50% 50%\",\n transition: \"stroke-dashoffset 0.2s linear\",\n }}\n />\n </svg>\n\n <div\n className=\"text-light-copy text-body-3xs\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"grid\",\n placeItems: \"center\",\n userSelect: \"none\",\n }}\n >\n {middleText}\n </div>\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { IconLoader } from \"../components/icons\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface IBzpCheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject?: IPaymentObject;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutIframe({\n style = {\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n },\n url,\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n onError,\n}: IBzpCheckoutIframeProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n\n const [message, setMessage] = useState<string>(\"\");\n const [launchUrl, setLaunchUrl] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const launchIframe = useCallback(\n (url: string) => {\n // remove prior iframe if any\n if (iframeRef.current && iframeRef.current.parentNode) {\n iframeRef.current.parentNode.removeChild(iframeRef.current);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n if (style.width) iframe.style.width = style.width;\n if (style.height) iframe.style.height = style.height;\n if (style.border) iframe.style.border = style.border;\n if (style.borderRadius) iframe.style.borderRadius = style.borderRadius;\n if (style.overflow) iframe.style.overflow = style.overflow;\n\n containerRef.current?.appendChild(iframe);\n iframeRef.current = iframe;\n },\n [style]\n );\n\n const generatePaymentLinkHandler = async () => {\n if (url) {\n launchIframe(url);\n return;\n }\n\n if (!secretKey) {\n return setMessage(\"Secret key is required.\");\n }\n\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n return setMessage(\"Secret key is required.\");\n }\n\n setLoading(true);\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"buzapay\"\n );\n if (response?.isSuccessful) {\n setLaunchUrl(response.launchUrl ?? \"\");\n setMessage(\"Payment link created successfully\");\n if (response.launchUrl) {\n setLoading(false);\n launchIframe(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n }\n } else {\n setLoading(false);\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (!containerRef.current) return; // only run if div is mounted\n generatePaymentLinkHandler();\n }, []);\n\n return (\n <div className=\"relative\" style={style}>\n <div ref={containerRef} className=\"w-full h-full\"></div>\n {loading && (\n <div className=\"absolute inset-0 grid place-items-center bg-white/60\">\n <IconLoader></IconLoader>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BaseCard } from \"../components/base/card\";\nimport { BaseImage, BaseRadioGroup, BaseSuccess } from \"../components/base\";\nimport { PayByCard } from \"../components/pay-by-card\";\nimport { PayByTransfer } from \"../components/pay-by-transfer\";\nimport { PayByStableCoin } from \"../components/pay-by-stable-coin\";\nimport {\n IErrorObject,\n IPaymentObject,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport { formatAmount, toastConfig } from \"../utils\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\ninterface IBzpCheckoutCardProps {\n secretKey: string;\n environment: \"sandbox\" | \"prod\";\n paymentObject: IPaymentObject;\n options?: CheckoutCardOptions;\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function BzpCheckoutCard({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n },\n onPaymentAuthorized,\n onError,\n}: IBzpCheckoutCardProps) {\n const [checkoutState, setCheckoutState] = useState<\n \"SUCCESS\" | \"PENDING\" | \"USED\"\n >(\"PENDING\");\n\n const paymentTypeOptions: ISelectOption[] = [\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n ];\n const [filteredPaymentTypeOptions, setFilteredPaymentTypeOptions] = useState<\n ISelectOption[]\n >([]);\n const [paymentType, setPaymentType] = useState<string>(\"\");\n const [successObject, setSuccessObject] = useState<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n });\n\n const paymentTypeHandler = (event: string): void => {\n setPaymentType(event);\n };\n\n const setSuccess = (event: ISuccessObject): void => {\n setSuccessObject({ ...event });\n if (event.paymentStatus === \"authorized\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment authorization successful.\", toastConfig);\n } else if (event.paymentStatus === \"confirmed\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment confirmed.\", toastConfig);\n } else if (event.paymentStatus === \"payment failed\") {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n } else if (event.paymentStatus === \"used\") {\n setCheckoutState(\"USED\");\n } else {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n }\n\n onPaymentAuthorized?.(event);\n };\n\n const onErrorHandler = (error: IErrorObject): void => {\n toast.error(error.errorMessage ?? \"Payment failed.\", toastConfig);\n onError?.(error);\n };\n\n useEffect(() => {\n let options: ISelectOption[] = [];\n\n if (paymentObject.currency === \"USD\") {\n if (paymentObject.amount < 50) {\n options = paymentTypeOptions.filter(\n (option) =>\n option.value !== \"BANK_TRANSFER\" && option.value !== \"STABLE_COIN\",\n );\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"BANK_TRANSFER\",\n );\n }\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"STABLE_COIN\",\n );\n }\n\n setFilteredPaymentTypeOptions(options);\n }, [paymentObject.currency, paymentObject.amount]);\n\n useEffect(() => {\n if (filteredPaymentTypeOptions.length) {\n setPaymentType(filteredPaymentTypeOptions[0].value);\n }\n }, [filteredPaymentTypeOptions]);\n\n return (\n <BaseCard>\n <Toaster />\n <div className=\"grid grid-cols-3\">\n {checkoutState === \"PENDING\" && (\n <div className=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p className=\"text-heading-text text-body-xs font-semibold\">\n Pay with\n </p>\n <BaseRadioGroup\n options={filteredPaymentTypeOptions}\n selectedChange={(e: string) => paymentTypeHandler(e)}\n />\n </div>\n )}\n\n <div\n className={\n checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")\n ? \"col-span-3\"\n : \"col-span-2\"\n }\n >\n {checkoutState === \"PENDING\" && (\n <div className=\"flex flex-col gap-6 sm:flex-row sm:items-center justify-between p-6 sm:px-10 sm:py-8\">\n {paymentObject.logoUrl ? (\n <BaseImage\n src={paymentObject.logoUrl ?? \"\"}\n alt=\"Merchant Logo\"\n width={52}\n height={52}\n customClass=\"rounded-lg object-fit\"\n />\n ) : (\n <div\n className=\"bg-heading-text rounded flex flex-col justify-center\"\n style={{ width: \"52px\", height: \"52px\" }}\n >\n <p className=\"text-white text-center text-body-2xs font-medium\">\n Logo\n </p>\n </div>\n )}\n\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-body-2xs font-regular text-sub-copy sm:text-right\">\n {paymentObject.merchantName}\n </p>\n <p className=\"text-body-2xs font-regular text-sub-copy sm:text-right\">\n Pay:{\" \"}\n <span className=\"text-orange-500 font-extrabold\">\n {formatAmount(paymentObject.amount, paymentObject.currency)}\n </span>\n </p>\n </div>\n </div>\n )}\n\n {checkoutState === \"PENDING\" && (\n <div className=\"max-h-[32rem] overflow-y-scroll px-6 sm:px-10 pb-10 pt-2\">\n {paymentType === \"CARD\" ? (\n <PayByCard\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : paymentType === \"BANK_TRANSFER\" ? (\n <PayByTransfer\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : (\n <PayByStableCoin\n secretKey={secretKey}\n environment={environment}\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n )}\n </div>\n )}\n\n {(checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")) && (\n <BaseSuccess\n amount={paymentObject.amount}\n currency={paymentObject.currency}\n redirectUrl={paymentObject.redirectUrl ?? \"\"}\n successObject={successObject}\n />\n )}\n </div>\n </div>\n </BaseCard>\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { BaseButton, BaseInput, BaseSelect } from \"./base\";\nimport {\n IApiResponse,\n IAuthorizeCardPaymentPayload,\n IAuthorizeCardPaymentPayloadMiden,\n IBillingDetails,\n ICardDetails,\n ICountry,\n IErrorObject,\n IPaymentObject,\n IPhoneCodeOption,\n ISelectOption,\n IState,\n ISuccessObject,\n} from \"../types\";\nimport {\n buildDeviceInformation,\n cardTypeHandler,\n checkObjectTruthy,\n COUNTRIES,\n formatAmount,\n getBaseAppUrl,\n getQueryParams,\n toastConfig,\n validateGroup,\n} from \"../utils\";\nimport {\n authorizeCardPayment,\n createPaymentLink,\n resendCardPaymentOtp,\n validateCardPaymentOtp,\n decryptPayload,\n encryptPayload,\n getCountries,\n getCountryStates,\n midenConfirmPayment,\n} from \"../apis\";\nimport { BasePhoneNumberInput } from \"./base/phone-number-input\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\ninterface IPayByCardProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport function PayByCard({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onError,\n caller = \"buzapay\",\n}: IPayByCardProps) {\n const [formIndex, setFormIndex] = useState(0);\n const [message, setMessage] = useState(\"\");\n const [isMakingPayment, setIsMakingPayment] = useState(false);\n const [isSendingOtp, setIsSendingOtp] = useState(false);\n const [isValidatingOtp, setIsValidatingOtp] = useState(false);\n const [loading, setLoading] = useState(false);\n const [defaultCountryCode, setDefaultCountryCode] = useState(\"\");\n const [cardType, setCardType] = useState(\"\");\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [loadingCountries, setLoadingCountries] = useState(false);\n const [loadingStates, setLoadingStates] = useState(false);\n const [rawCountries, setRawCountries] = useState<ICountry[]>([]);\n const [countries, setCountries] = useState<ISelectOption[]>([]);\n const [countryStates, setCountryStates] = useState<ISelectOption[]>([]);\n const [phoneCodeOptions, setPhoneCodeOptions] = useState<IPhoneCodeOption[]>(\n [],\n );\n const baseAppUrl = getBaseAppUrl(environment, caller);\n\n // form values\n const [billingForm, setBillingForm] = useState<Record<string, string>>({\n address1: \"\",\n address2: \"\",\n postalCode: \"\",\n state: \"\",\n city: \"\",\n country: \"\",\n emailAddress: \"\",\n phoneNumber: \"\",\n phoneNumberExt: \"\",\n });\n const [payForm, setPayForm] = useState<Record<string, string>>({\n customerName: \"\",\n cardNo: \"\",\n expireDate: \"\",\n cvv: \"\",\n cardPin: \"\", // Only required for Verve cards\n });\n const [otpForm, setOtpForm] = useState<Record<string, string>>({\n otp: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [billingErrors, setBillingErrors] = useState<Record<string, string>>(\n {},\n );\n const [payErrors, setPayErrors] = useState<Record<string, string>>({});\n const [otpErrors, setOtpErrors] = useState<Record<string, string>>({});\n\n // --- validation rules per step ---\n const billingRules: Record<string, string> = {\n address1: \"required\",\n address2: \"\", // optional\n country: \"required\",\n state: \"required\",\n city: \"required\",\n postalCode: \"required|no_special|char_length:6\",\n emailAddress: \"required|email\",\n phoneNumber: \"required\",\n };\n const payRules: Record<string, string> = {\n customerName: \"required\",\n cardNo: \"required|num_spaces\",\n expireDate: \"required\",\n cvv: \"required|numeric\",\n cardPin: cardType === \"Verve\" ? \"required\" : \"\", // optional unless Verve\n };\n const otpRules: Record<string, string> = {\n otp: \"required\",\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency,\n );\n\n // pretty labels (optional)\n const billingLabels: Record<string, string> = {\n address1: \"Address Line 1\",\n address2: \"Address Line 2\",\n postalCode: \"Postal Code\",\n state: \"State\",\n city: \"City\",\n country: \"Country\",\n emailAddress: \"Email\",\n phoneNumber: \"Phone Number\",\n };\n const payLabels: Record<string, string> = {\n customerName: \"Card Name\",\n cardNo: \"Card Number\",\n expireDate: \"Expiry Date\",\n cvv: \"CVV\",\n cardPin: \"Card PIN\",\n };\n const otpLabels: Record<string, string> = {\n otp: \"OTP\",\n };\n\n const [threeDSOpen, setThreeDSOpen] = useState(false);\n const [threeDSIframeSrc, setThreeDSIframeSrc] = useState<string>(\"\");\n const messageListenerRef = useRef<(event: MessageEvent) => void>();\n\n const midenThreeDSChallenge = (url: string, value: string) => {\n if (!url || !value) {\n setMessage(\"3DS challenge could not be started (missing stepUpUrl/JWT).\");\n return;\n }\n\n const html = `<!doctype html>\n <html>\n <head><meta charset=\"utf-8\" /></head>\n <body onload=\"document.forms[0].submit()\">\n <form method=\"POST\" action=\"${url}\">\n <input type=\"hidden\" name=\"JWT\" value=\"${value}\" />\n </form>\n </body>\n </html>`;\n\n const dataUrl = `data:text/html;charset=utf-8,${encodeURIComponent(html)}`;\n setThreeDSIframeSrc(dataUrl);\n setThreeDSOpen(true);\n\n const listener = (event: MessageEvent) => {\n if (\n event?.data === \"challenge_success\" ||\n event?.data?.status === \"success\"\n ) {\n setThreeDSOpen(false);\n setThreeDSIframeSrc(\"\");\n handleMidenProceed(); // continue flow\n }\n\n if (\n event?.data === \"challenge_failed\" ||\n event?.data?.status === \"failed\"\n ) {\n setThreeDSOpen(false);\n setThreeDSIframeSrc(\"\");\n setMessage(\"3D Secure verification failed.\");\n setIsMakingPayment(false);\n }\n };\n\n if (messageListenerRef.current) {\n window.removeEventListener(\"message\", messageListenerRef.current);\n }\n messageListenerRef.current = listener;\n window.addEventListener(\"message\", listener);\n };\n\n useEffect(() => {\n return () => {\n if (messageListenerRef.current) {\n window.removeEventListener(\"message\", messageListenerRef.current);\n }\n };\n }, []);\n\n const resendOtp = async () => {\n setIsSendingOtp(true);\n try {\n const response = await resendCardPaymentOtp(\n environment,\n {\n merchantId: secretKey,\n transactionReference: transactionReference,\n },\n caller ?? \"buzapay\",\n );\n\n if (response?.isSuccessful) {\n setIsSendingOtp(false);\n toast.success(\"OTP Sent Successfully.\", toastConfig);\n }\n } catch (e: any) {\n setMessage(e?.message || \"OTP Sending Failed\");\n onError?.({ errorMessage: message });\n } finally {\n setIsSendingOtp(false);\n }\n };\n\n const handleMidenProceed = async (): Promise<void> => {\n try {\n setIsMakingPayment(true);\n\n const result = await await midenConfirmPayment(\n environment,\n transactionReference,\n secretKey,\n \"miden\",\n );\n\n if (result?.isSuccessful) {\n setMessage(\"Payment authorization successful.\");\n toast.success(\"Payment authorization successful.\");\n setIsMakingPayment(false);\n\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"authorized\",\n message: \"Payment authorization successful.\",\n });\n } else {\n toast.success(\"Payment authorization successful.\");\n setIsMakingPayment(false);\n }\n } catch (err: any) {\n const status = err?.status ?? err?.response?.status;\n\n if ([500, 501, 502, 503].includes(status)) {\n setIsMakingPayment(false);\n setMessage(\"Temporary server error. Please try again.\");\n return;\n }\n\n const responseMessage =\n err?.error?.responseMessage ||\n err?.responseMessage ||\n err?.message ||\n \"Payment confirmation failed.\";\n\n setIsMakingPayment(false);\n setMessage(responseMessage);\n\n toast.error(responseMessage);\n\n onError?.({ errorMessage: responseMessage });\n }\n };\n\n const handleMidenCard = (data: any) => {\n const threeDsRequired = data?.threeDsInteractionRequired;\n if (threeDsRequired) {\n const url = data?.threeDsHtml?.stepUpUrl;\n const cred = data?.threeDsHtml?.accessToken;\n midenThreeDSChallenge(url, cred);\n } else {\n handleMidenProceed();\n }\n };\n\n // --- proceed/pay click handler: validate current step & gate navigation ---\n const proceedHandler = async () => {\n if (formIndex === 0) {\n const errs = validateGroup(billingForm, billingRules, billingLabels);\n setBillingErrors(errs);\n if (Object.keys(errs).length === 0) {\n setFormIndex(1);\n }\n return;\n }\n\n // pay step\n if (formIndex === 1) {\n const errs = validateGroup(payForm, payRules, payLabels);\n setPayErrors(errs);\n if (Object.keys(errs).length > 0) {\n return;\n }\n\n try {\n setIsMakingPayment(true);\n setMessage(\"\");\n\n // --- Build card details (raw) ---\n const cardDetails: ICardDetails = {\n pan: payForm.cardNo ? payForm.cardNo.replace(/ /g, \"\") : \"\",\n expiryDate: payForm.expireDate ?? \"\",\n cvv: payForm.cvv ?? \"\",\n cardScheme: cardType,\n nameOnCard: payForm.customerName ?? \"\",\n ...(cardType === \"Verve\" && { pin: payForm.cardPin ?? \"\" }),\n };\n\n // --- Build billing details ---\n const billingDetails: IBillingDetails = {\n address1: billingForm.address1 ?? \"\",\n address2: billingForm.address2 ?? \"\",\n postalCode: billingForm.postalCode ?? \"\",\n state: billingForm.state ?? \"\",\n city: billingForm.city ?? \"\",\n country: billingForm.country ?? \"\",\n emailAddress: billingForm.emailAddress ?? \"\",\n phoneNumber: billingForm.phoneNumber\n ? `${billingForm.phoneNumberExt}${billingForm.phoneNumber}`\n : \"\",\n };\n\n // --- Encrypt card payload ---\n const encryptedCardDetails = encryptPayload(secretKey, cardDetails);\n\n let payload: IAuthorizeCardPaymentPayload | null = null;\n let payloadMiden: IAuthorizeCardPaymentPayloadMiden | null = null;\n\n if (caller === \"buzapay\") {\n // --- Assemble request payload ---\n payload = {\n customerId: paymentObject?.email || payForm.customerName || \"\",\n amount: String(paymentObject?.amount ?? \"\"),\n currency: paymentObject?.currency || \"USD\",\n narration: paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl:\n paymentObject?.redirectUrl ||\n `${baseAppUrl}/account/three-ds-status`,\n paymentReference: transactionReference,\n isCheckout: true,\n };\n } else {\n // --- Assemble request payload miden ---\n const deviceInformation = buildDeviceInformation();\n payloadMiden = {\n customerId: paymentObject?.email || payForm.customerName || \"\",\n amount: String(paymentObject?.amount ?? \"\"),\n currency: paymentObject?.currency || \"USD\",\n narration: paymentObject?.narration || \"Test transaction\",\n encryptedCardDetails: encryptedCardDetails.requestParam,\n billingDetails,\n redirectUrl:\n paymentObject?.redirectUrl || `${baseAppUrl}/pay/verification`,\n paymentReference: transactionReference,\n isCheckout: true,\n postBackUrl: \"\",\n saveCard: false,\n deviceInformation,\n };\n }\n\n // Include merchantId (secretKey) as in your Angular code\n const request =\n caller === \"buzapay\"\n ? { ...payload, merchantId: secretKey }\n : { ...payloadMiden, merchantId: secretKey };\n\n // --- Call API (Promise-based) ---\n let response = await authorizeCardPayment(environment, request, caller);\n\n // --- If response is encrypted, decrypt it ---\n if (response?.responseParam) {\n response = decryptPayload(environment, response.responseParam);\n }\n\n // --- Handle success path ---\n if (response?.isSuccessful) {\n // Verve OTPValidationRequired flow\n if (response?.otpValidationRequired) {\n setIsMakingPayment(false);\n setFormIndex(2);\n return;\n }\n\n // Miden flow\n if (caller === \"miden\") {\n handleMidenCard(response);\n return;\n }\n\n // 3DS handling (primary)\n if (response.threeDsInteractionRequired === true) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `${baseAppUrl}/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n setMessage(\n \"3D Secure authentication opened in new tab. Please complete the verification\",\n );\n setIsMakingPayment(false);\n return;\n }\n\n // 3DS handling (fallback text)\n if (\n response.responseMessage === \"Payer Interaction Required\" &&\n response.threeDsHtml\n ) {\n const threeDsData = {\n transactionReference: response.transactionReference,\n threeDsHtml: response.threeDsHtml,\n amount: response.amount,\n responseMessage: response.responseMessage,\n paReq: response.threeDsHtml?.paReq,\n termUrl: response.threeDsHtml?.termUrl,\n action: response.threeDsHtml?.action,\n acsUrl: response.threeDsHtml?.acsUrl,\n md: response.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `${baseAppUrl}/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${response.transactionReference}`;\n window.open(threeDsUrl, \"_self\", \"noopener,noreferrer\");\n\n setMessage(\n \"3D Secure authentication opened in new tab. Please complete the verification\",\n );\n setIsMakingPayment(false);\n return;\n }\n\n // Emit success up if provided\n if (response.transactionReference?.trim()) {\n onPaymentAuthorized?.({\n paymentId: response.transactionReference,\n paymentDate:\n response?.data?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"authorized\",\n message,\n });\n }\n\n setMessage(\"Card payment authorized successfully\");\n setIsMakingPayment(false);\n return;\n }\n\n // Failure path for miden\n if (response && !response.isSuccessful && caller === \"miden\") {\n // setMessage(response.responseMessage);\n onError?.({ errorMessage: response.responseMessage });\n }\n\n // Failure path for buzapay\n if (response && response.message && caller === \"buzapay\") {\n // setMessage(response.message);\n onError?.({ errorMessage: response.message });\n }\n\n setIsMakingPayment(false);\n } catch (err: any) {\n // If server returned encrypted error\n let friendly = \"Payment failed\";\n if (err?.error?.responseParam) {\n try {\n const decryptedError = decryptPayload(\n environment,\n err.error.responseParam,\n );\n friendly = decryptedError?.responseMessage || friendly;\n } catch {\n friendly =\n err?.error?.responseMessage || err?.error?.message || friendly;\n }\n } else {\n friendly =\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Payment failed\";\n }\n\n setMessage(friendly);\n setIsMakingPayment(false);\n onError?.({\n errorMessage: message,\n });\n }\n }\n\n if (formIndex === 2) {\n const errs = validateGroup(otpForm, otpRules, otpLabels);\n Object.assign(otpErrors, errs);\n if (Object.keys(errs).length > 0) return;\n\n setIsValidatingOtp(true);\n try {\n const response = await validateCardPaymentOtp(\n environment,\n {\n merchantId: secretKey,\n transactionReference: transactionReference,\n otp: otpForm.otp,\n },\n caller ?? \"buzapay\",\n );\n\n if (response?.isSuccessful) {\n setIsValidatingOtp(false);\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"authorized\",\n message: response?.responseMessage,\n });\n }\n } catch (e: any) {\n setMessage(e?.message || \"Validate OTP Failed\");\n onError?.({ errorMessage: message });\n } finally {\n setIsValidatingOtp(false);\n }\n }\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const getAllCountries = async () => {\n setLoadingCountries(true);\n try {\n const response: IApiResponse<any> = await getCountries(\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful) {\n setRawCountries(response.data);\n setCountries(\n (response.data ?? []).map((c: ICountry) => {\n return { label: c.countryName, value: c.iso2 };\n }),\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get countries\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingCountries(false);\n }\n };\n\n const goBack = () => {\n setFormIndex(formIndex > 0 ? formIndex - 1 : 0);\n };\n\n const getStates = async (countryIso2: string) => {\n const country = rawCountries.find((c) => c.iso2 === countryIso2);\n if (!country) return;\n setLoadingStates(true);\n try {\n const response: IApiResponse<any> = await getCountryStates(\n country.iso3,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful) {\n setCountryStates(\n (response.data ?? []).map((s: IState) => ({\n label: s.name,\n value: s.name,\n })),\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get country states\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStates(false);\n }\n };\n\n const cardNumberInputHandler = (event: string): void => {\n setCardType(cardTypeHandler(event));\n payRules.cardPin = cardType === \"Verve\" ? \"required|numeric\" : \"\";\n };\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n await getAllCountries();\n\n const codeOptions = COUNTRIES.map((country) => {\n return {\n value: `${country.phoneCode}-${country.code}`,\n label: `${country.phoneCode}`,\n flag: country.flag,\n phoneCode: country.phoneCode,\n countryCode: country.code,\n };\n }).sort((a, b) => a.label.localeCompare(b.label));\n setPhoneCodeOptions(codeOptions);\n })();\n }, []);\n\n return threeDSOpen ? (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-white p-4\">\n <iframe\n title=\"Miden 3DS\"\n src={threeDSIframeSrc}\n className=\"w-full h-full\"\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-top-navigation\"\n />\n </div>\n ) : (\n <div>\n <Toaster />\n <div className=\"flex flex-col gap-6\">\n {formIndex === 0 && (\n <div className=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Address Line 1\"\n required\n value={billingForm.address1}\n onChange={(e) => {\n setBillingForm({ ...billingForm, address1: e });\n if (billingErrors.address1) {\n setBillingErrors((er) => ({ ...er, address1: \"\" })); // optional live clear\n }\n }}\n validationError={billingErrors.address1 ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Address Line 2\"\n value={billingForm.address2}\n onChange={(e) =>\n setBillingForm({ ...billingForm, address2: e })\n }\n validationError={billingErrors.address2 ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseSelect\n label=\"Select Country\"\n required\n options={countries}\n loading={loadingCountries}\n value={billingForm.country}\n onChange={(e) => {\n setBillingForm({ ...billingForm, country: e, state: \"\" });\n getStates(e);\n const selectedCountry = COUNTRIES.filter(\n (c) => c.code.toLowerCase() === e.toLowerCase(),\n )[0];\n if (selectedCountry) {\n setDefaultCountryCode(\n `${selectedCountry.phoneCode}-${selectedCountry.code}`,\n );\n }\n if (billingErrors.country) {\n setBillingErrors((er) => ({ ...er, country: \"\" }));\n }\n }}\n validationError={billingErrors.country ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseSelect\n label=\"Select State\"\n required\n options={countryStates}\n loading={loadingStates}\n value={billingForm.state}\n onChange={(e) => {\n setBillingForm({ ...billingForm, state: e });\n if (billingErrors.state) {\n setBillingErrors((er) => ({ ...er, state: \"\" }));\n }\n }}\n validationError={billingErrors.state ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseInput\n label=\"City\"\n required\n value={billingForm.city}\n onChange={(e) => {\n setBillingForm({ ...billingForm, city: e });\n if (billingErrors.city) {\n setBillingErrors((er) => ({ ...er, city: \"\" }));\n }\n }}\n validationError={billingErrors.city ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2 sm:col-span-1\">\n <BaseInput\n label=\"Postal Code\"\n required\n value={billingForm.postalCode}\n onChange={(e) => {\n setBillingForm({ ...billingForm, postalCode: e });\n if (billingErrors.postalCode) {\n setBillingErrors((er) => ({ ...er, postalCode: \"\" }));\n }\n }}\n validationError={billingErrors.postalCode ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Email\"\n required\n value={billingForm.emailAddress}\n onChange={(e) => {\n setBillingForm({ ...billingForm, emailAddress: e });\n if (billingErrors.emailAddress) {\n setBillingErrors((er) => ({ ...er, emailAddress: \"\" }));\n }\n }}\n validationError={billingErrors.emailAddress ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BasePhoneNumberInput\n label=\"Phone Number\"\n required\n preventPaste={true}\n value={billingForm.phoneNumber}\n phoneCodeOptions={phoneCodeOptions}\n defaultCountryCode={defaultCountryCode}\n onChange={(e) => {\n setBillingForm({ ...billingForm, phoneNumber: e });\n if (billingErrors.phoneNumber) {\n setBillingErrors((er) => ({ ...er, phoneNumber: \"\" }));\n }\n }}\n onCodeChange={(e: string) => {\n setBillingForm({ ...billingForm, phoneNumberExt: e });\n if (billingErrors.phoneNumberExt) {\n setBillingErrors((er) => ({ ...er, phoneNumberExt: \"\" }));\n }\n }}\n validationError={billingErrors.phoneNumber ?? \"\"}\n />\n </div>\n </div>\n )}\n\n {formIndex === 1 && (\n <div\n className=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n style={{ maxHeight: 320 }}\n >\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Card Name\"\n required\n value={payForm.customerName}\n onChange={(e) => {\n setPayForm({ ...payForm, customerName: e });\n if (payErrors.customerName) {\n setPayErrors((er) => ({ ...er, customerName: \"\" }));\n }\n }}\n validationError={payErrors.customerName ?? \"\"}\n />\n </div>\n\n <div className=\"col-span-2\">\n <BaseInput\n label=\"Card Number\"\n required\n rules={[\"numeric\"]}\n mask=\"0000 0000 0000 0000 000\"\n placeholder=\"0000 0000 0000 0000\"\n value={payForm.cardNo}\n preventPaste={true}\n onChange={(e) => {\n setPayForm({ ...payForm, cardNo: e });\n if (payErrors.cardNo)\n setPayErrors((er) => ({ ...er, cardNo: \"\" }));\n cardNumberInputHandler(e);\n }}\n validationError={payErrors.cardNo ?? \"\"}\n />\n </div>\n\n <BaseInput\n label=\"Expiry Date\"\n required\n value={payForm.expireDate}\n mask=\"00/00\"\n placeholder=\"00/00\"\n onChange={(e) => {\n setPayForm({ ...payForm, expireDate: e });\n if (payErrors.expireDate)\n setPayErrors((er) => ({ ...er, expireDate: \"\" }));\n }}\n validationError={payErrors.expireDate ?? \"\"}\n />\n\n <BaseInput\n label=\"CVV\"\n required\n rules={[\"numeric\"]}\n value={payForm.cvv}\n mask=\"000\"\n placeholder=\"000\"\n onChange={(e) => {\n setPayForm({ ...payForm, cvv: e });\n if (payErrors.cvv) setPayErrors((er) => ({ ...er, cvv: \"\" }));\n }}\n validationError={payErrors.cvv ?? \"\"}\n />\n\n {cardType === \"Verve\" && (\n <BaseInput\n label=\"Card Pin\"\n required\n type=\"password\"\n rules={[\"numeric\"]}\n value={payForm.cardPin}\n mask=\"0000\"\n placeholder=\"0000\"\n onChange={(e) => {\n setPayForm({ ...payForm, cardPin: e });\n if (payErrors.cardPin)\n setPayErrors((er) => ({ ...er, cardPin: \"\" }));\n }}\n validationError={payErrors.cardPin ?? \"\"}\n />\n )}\n </div>\n )}\n\n {formIndex === 2 && (\n <div\n className=\"grid grid-cols-2 gap-6 overflow-y-auto\"\n style={{ maxHeight: 320 }}\n >\n <div className=\"col-span-2\">\n <BaseInput\n label=\"OTP\"\n required\n value={otpForm.otp}\n onChange={(e) => {\n setOtpForm({ ...otpForm, otp: e });\n if (otpErrors.otp) {\n setOtpErrors((er) => ({ ...er, otp: \"\" }));\n }\n }}\n validationError={otpErrors.otp ?? \"\"}\n />\n <p className=\"text-primary text-sm mt-2\">\n Didn't get OTP?\n <span\n className={\n isSendingOtp ? \"ml-1\" : \"ml-1 underline cursor-pointer\"\n }\n onClick={() => {\n if (isSendingOtp) return;\n resendOtp();\n }}\n >\n {isSendingOtp ? \"Sending...\" : \"Resend OTP\"}\n </span>\n </p>\n </div>\n </div>\n )}\n\n <div className=\"flex items-center justify-between gap-4 mt-6\">\n {formIndex < 2 && (\n <BaseButton\n label=\"Previous\"\n type=\"secondary\"\n customClass=\"w-1/2\"\n caller={caller}\n onClick={goBack}\n />\n )}\n {formIndex < 2 && (\n <BaseButton\n label={formIndex === 0 ? \"Proceed\" : `Pay ${formatAmountHandler}`}\n type=\"primary\"\n customClass={`${formIndex > 0 ? \"w-1/2\" : \"w-full\"}`}\n caller={caller}\n loading={isMakingPayment}\n onClick={proceedHandler}\n disabled={isMakingPayment}\n />\n )}\n {formIndex === 2 && (\n <div className=\"w-full\">\n <BaseButton\n label=\"Validate OTP\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isValidatingOtp}\n onClick={proceedHandler}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect } from \"react\";\nimport { BaseInput } from \"./input\";\nimport { IPhoneCodeOption } from \"../../types\";\nimport { BaseSelect } from \"./select\";\n\nexport interface PhoneNumberInputProps {\n phoneCodeOptions: IPhoneCodeOption[];\n value?: string;\n onChange?: (fullValue: string) => void;\n onCodeChange?: (code: string) => void;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n validationError?: string;\n hint?: string;\n defaultCountryCode?: string;\n preventPaste?: boolean;\n showCopyIcon?: boolean;\n containerClassName?: string;\n inputClassName?: string;\n enforceMaxDigits?: boolean;\n placeholder?: string;\n}\n\nexport const BasePhoneNumberInput: React.FC<PhoneNumberInputProps> = ({\n phoneCodeOptions,\n value,\n onChange,\n onCodeChange,\n label = \"\",\n required = false,\n disabled = false,\n loading = false,\n validationError = \"\",\n hint = \"\",\n\n defaultCountryCode,\n preventPaste = false,\n showCopyIcon = false,\n\n containerClassName = \"\",\n inputClassName = \"\",\n placeholder,\n}) => {\n const safeDefaultCode = phoneCodeOptions?.[0]?.value ?? \"+1\";\n\n const [selectedCode, setSelectedCode] =\n React.useState<string>(safeDefaultCode);\n\n const selectedMeta = React.useMemo(() => {\n return phoneCodeOptions.find((o) => o.value === selectedCode);\n }, [phoneCodeOptions, selectedCode]);\n\n const getFormattedCode = (codeValue: string) => codeValue.split(\"-\")[0];\n\n const handleCountryChange = (nextValue: string) => {\n setSelectedCode(nextValue);\n onCodeChange?.(getFormattedCode(nextValue));\n };\n\n const handleChange = (e: string) => {\n const incoming = e;\n onChange?.(incoming);\n };\n\n const computedPlaceholder =\n placeholder ??\n selectedMeta?.placeholder ??\n (label ? `Enter ${label.toLowerCase()}` : \"Enter phone number\");\n\n useEffect(() => {\n const nextValue = defaultCountryCode ?? safeDefaultCode;\n setSelectedCode(nextValue);\n onCodeChange?.(getFormattedCode(nextValue));\n }, [defaultCountryCode]);\n\n return (\n <div className={`flex flex-col gap-2`}>\n {label ? (\n <p className=\"mb-0 text-body-2xs font-normal text-heading-text\">\n {label}\n {required && <span className=\"text-orange-required\"> *</span>}\n </p>\n ) : null}\n\n <div className={`flex items-center gap-2 ${containerClassName}`}>\n <div className=\"w-1/3\">\n <BaseSelect\n required\n options={phoneCodeOptions}\n value={selectedCode}\n showBottomText={false}\n itemImageType=\"country\"\n onChange={handleCountryChange}\n validationError={validationError}\n placeholder=\"+234\"\n />\n </div>\n\n <div className=\"w-2/3\">\n <BaseInput\n className={inputClassName}\n required={required}\n disabled={disabled}\n loading={loading}\n validationError={validationError}\n showBottomText={false}\n hint={hint}\n value={value}\n onChange={handleChange}\n rules={[\"numeric\"]}\n preventPaste={preventPaste}\n showCopyIcon={showCopyIcon}\n placeholder={computedPlaceholder}\n />\n </div>\n </div>\n\n {hint && <p className=\"text-body-3xs text-light-copy\">{hint}</p>}\n\n {validationError && (\n <p className=\"text-body-3xs text-red-500\">{validationError}</p>\n )}\n </div>\n );\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { BaseButton, BaseCopy, BaseInput, BaseLabelInfo } from \"./base\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n IApiResponse,\n IErrorObject,\n IPaymentAccountResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISuccessObject,\n} from \"../types\";\nimport {\n createPaymentLink,\n generatePaymentAccount,\n getPaymentReferenceDetails,\n} from \"../apis\";\nimport BaseCircularCountdown from \"./base/circular-countdown\";\n\ninterface IPayByTransferProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onCancel?: () => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const PayByTransfer = ({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onCancel,\n onError,\n caller = \"buzapay\",\n}: IPayByTransferProps) => {\n const [formIndex, setFormIndex] = useState(0);\n const [isMakingPayment, setIsMakingPayment] = useState(false);\n const [isConfirmCall, setIsConfirmCall] = useState(false);\n const [isPaymentConfirmed, setIsPaymentConfirmed] = useState(false);\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [paymentReferenceStatus, setPaymentReferenceStatus] = useState(\"\");\n const [isFetchingPaymentDetails, setIsFetchingPaymentDetails] =\n useState(false);\n const [paymentReferenceDetails, setPaymentReferenceDetails] =\n useState<IPaymentReferenceDetail | null>(null);\n const [paymentAccountDetails, setPaymentAccountDetails] =\n useState<IPaymentAccountResponse | null>(null);\n const [paymentMade, setPaymentMade] = useState(false);\n const [loading, setLoading] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [remainingSeconds, setRemainingSeconds] = useState(30 * 60);\n const [countDownTime, setCountDownTime] = useState(\"00:00\");\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\n\n // form values\n const [transferForm, setTransferForm] = useState<Record<string, string>>({\n customerName: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [transferErrors, setTransferErrors] = useState<Record<string, string>>(\n {},\n );\n\n // --- validation rules per step ---\n const transferRules: Record<string, string> = {\n customerName: \"required\",\n };\n\n // pretty labels (optional)\n const transferLabels: Record<string, string> = {\n customerName: \"Customer Name\",\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency,\n );\n\n const payHandler = async () => {\n if (formIndex === 0) {\n const errs = validateGroup(transferForm, transferRules, transferLabels);\n setTransferErrors(errs);\n if (Object.keys(errs).length === 0) {\n const payload = {\n paymentReference: transactionReference,\n channel: \"virtual_account\",\n customerName: transferForm.customerName ?? \"\",\n merchantId: secretKey,\n };\n setIsMakingPayment(true);\n\n try {\n const response = await generatePaymentAccount(\n environment,\n payload,\n caller,\n );\n if (response?.isSuccessful) {\n setPaymentAccountDetails(\n caller === \"buzapay\" ? response.data : response,\n );\n startTimer();\n setMessage(\"Virtual account generated successfully for payment.\");\n setIsMakingPayment(false);\n setFormIndex(1);\n } else {\n setIsMakingPayment(false);\n setMessage(\"Payment failed.\");\n onError?.({\n errorMessage: \"Payment failed.\",\n });\n }\n } catch (err: any) {\n setIsMakingPayment(false);\n setMessage(err.error.responseMessage || err.error.message);\n onError?.({\n errorMessage: message,\n });\n }\n }\n return;\n }\n };\n\n const getReferenceDetails = async () => {\n setIsFetchingPaymentDetails(true);\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference,\n caller,\n );\n\n if (response?.isSuccessful) {\n setPaymentReferenceDetails(\n caller === \"buzapay\" ? response.data : response,\n );\n\n // Payment made if status says \"Payment Received\"\n const made =\n paymentReferenceDetails?.paymentStatus === \"Payment Received\";\n setPaymentMade(made);\n\n const noServerStatus =\n paymentReferenceDetails?.finalTransactionStatus == null ||\n paymentReferenceDetails?.paymentStatus == null;\n\n if (noServerStatus) {\n if (isConfirmCall) {\n setMessage(\"Transaction not confirmed !!\");\n }\n\n if (!isPaymentConfirmed && !made) {\n setPaymentReferenceStatus(\"pending\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"pending\",\n message,\n });\n } else {\n setPaymentReferenceStatus(\"confirmed\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (\n paymentReferenceDetails?.finalTransactionStatus === \"Success\" ||\n paymentReferenceDetails?.paymentStatus === \"Received\" ||\n paymentReferenceDetails?.paymentStatus === \"Payment Received\"\n ) {\n setPaymentReferenceStatus(\"confirmed\");\n setIsPaymentConfirmed(true);\n setMessage(\"Transaction confirmed !!\");\n\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === \"119\") {\n setPaymentReferenceStatus(\"used\");\n setMessage(response.responseMessage || \"\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"used\",\n message,\n });\n }\n } catch (err: any) {\n setPaymentReferenceStatus(\"\");\n setMessage(\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\",\n );\n onError?.({\n errorMessage: message,\n });\n } finally {\n setIsFetchingPaymentDetails(false);\n }\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const updateDisplay = useCallback((secs: number) => {\n const minutes = String(Math.floor(secs / 60)).padStart(2, \"0\");\n const seconds = String(secs % 60).padStart(2, \"0\");\n setCountDownTime(`${minutes}:${seconds}`);\n }, []);\n\n const startTimer = useCallback(() => {\n // clear any existing interval\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n\n updateDisplay(remainingSeconds);\n\n intervalRef.current = setInterval(() => {\n setRemainingSeconds((prev) => {\n const next = prev - 1;\n if (next < 0) {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n setCountDownTime(\"00:00\");\n return 0;\n }\n updateDisplay(next);\n return next;\n });\n }, 1000);\n }, [remainingSeconds, updateDisplay]);\n\n const stopTimer = () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n })();\n }, []);\n\n // stop at zero\n useEffect(() => {\n if (remainingSeconds < 0 && intervalRef.current) {\n stopTimer();\n }\n }, [remainingSeconds]);\n\n return (\n <div className=\"flex flex-col gap-10\">\n {formIndex === 0 && (\n <div className=\"flex flex-col gap-10\">\n <BaseInput\n label=\"Customer Name\"\n required\n value={transferForm.customerName}\n onChange={(e) => {\n setTransferForm({ ...transferForm, customerName: e });\n if (transferForm.customerName) {\n setTransferErrors((er) => ({ ...er, customerName: \"\" })); // optional live clear\n }\n }}\n validationError={transferErrors.customerName ?? \"\"}\n />\n\n <BaseButton\n label={`Pay ${formatAmountHandler}`}\n type=\"primary\"\n customClass=\"w-full\"\n caller={caller}\n loading={isMakingPayment}\n onClick={payHandler}\n />\n </div>\n )}\n\n {formIndex === 1 && (\n <div className=\"flex flex-col gap-10\">\n <div\n className={[\n \"p-4 rounded-lg flex flex-col gap-6\",\n caller === \"miden\"\n ? \"bg-[#FAFDFF] border border-[#F0FAFF]\"\n : \"bg-[#EFF7FF]\",\n ].join(\" \")}\n >\n <BaseLabelInfo\n label=\"Bank Name\"\n value={paymentAccountDetails?.bank}\n />\n <BaseLabelInfo\n label=\"Account Name\"\n value={paymentAccountDetails?.accountName}\n />\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Account Number\"\n value={paymentAccountDetails?.accountNumber}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={paymentAccountDetails?.accountNumber ?? \"\"}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo label=\"Amount\" value={formatAmountHandler} />\n <BaseCopy color=\"#9DBFDE\" copyText={formatAmountHandler} />\n </div>\n </div>\n\n {caller === \"buzapay\" && (\n <p className=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\">\n This account is for this transaction only and expires in{\" \"}\n <span className=\"text-orange-500\">\n {remainingSeconds >= 0 ? countDownTime : \"00:00\"}\n </span>\n </p>\n )}\n\n {caller === \"miden\" && (\n <div className=\"p-4 rounded-lg bg-[#FAFDFF] flex items-center gap-3\">\n <BaseCircularCountdown\n value={remainingSeconds}\n total={1800}\n middleText={countDownTime}\n size={40}\n stroke={2}\n color=\"#3b82f6\"\n />\n <p className=\"text-body-3xs font-medium text-light-copy\">\n This account is for this transaction only and expires in\n <span className=\"text-[#1383E8] ml-2\">{countDownTime}...</span>\n </p>\n </div>\n )}\n\n <div className=\"flex flex-col gap-4\">\n <BaseButton\n label=\"I have paid the money\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isFetchingPaymentDetails}\n onClick={getReferenceDetails}\n />\n <button\n type=\"button\"\n onClick={() => setFormIndex(0)}\n className=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\"\n >\n Cancel Payment\n </button>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n BaseButton,\n BaseCopy,\n BaseCurrencyAmount,\n BaseLabelInfo,\n BaseSelect,\n} from \"./base\";\nimport { IconArrowSwap, IconQrCode } from \"./icons\";\nimport {\n IApiResponse,\n IErrorObject,\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport {\n checkObjectTruthy,\n formatAmount,\n getQueryParams,\n validateGroup,\n} from \"../utils\";\nimport {\n createPaymentLink,\n generateStableCoinAddress,\n getPaymentReferenceDetails,\n getStableCoinNetworks,\n getStableCoins,\n} from \"../apis\";\n\ninterface IPayByStableCoinProps {\n secretKey: string;\n paymentObject: IPaymentObject;\n environment: \"sandbox\" | \"prod\";\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n caller?: \"buzapay\" | \"miden\";\n}\n\nexport const PayByStableCoin = ({\n secretKey,\n paymentObject,\n environment = \"sandbox\",\n onPaymentAuthorized,\n onError,\n caller = \"buzapay\",\n}: IPayByStableCoinProps) => {\n const [formIndex, setFormIndex] = useState<number>(0);\n const [message, setMessage] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [generatingAddress, setGeneratingAddress] = useState(false);\n const [loadingStableCoins, setLoadingStableCoins] = useState(false);\n const [loadingStableCoinNetworks, setLoadingStableCoinNetworks] =\n useState(false);\n const [transactionReference, setTransactionReference] = useState(\"\");\n const [stableCoins, setStableCoins] = useState<ISelectOption[]>([]);\n const [networkList, setNetworkList] = useState<ISelectOption[]>([]);\n const [addressDetails, setAddressDetails] =\n useState<IGenerateStableCoinAddressResponse | null>(null);\n const [generateAddressPayload, setGenerateAddressPayload] =\n useState<IGenerateStableCoinAddress | null>(null);\n const [isConfirmingPayment, setIsConfirmingPayment] = useState(false);\n const [paymentReferenceDetails, setPaymentReferenceDetails] =\n useState<IPaymentReferenceDetail | null>(null);\n const [paymentReferenceStatus, setPaymentReferenceStatus] =\n useState<string>(\"\");\n\n const [stableCoinForm, setStableCoinForm] = useState<Record<string, string>>({\n stableCoin: \"\",\n network: \"\",\n });\n\n // NEW: error state objects (keyed by field)\n const [stableCoinErrors, setStableCoinErrors] = useState<\n Record<string, string>\n >({});\n\n // --- validation rules per step ---\n const stableCoinRules: Record<string, string> = {\n stableCoin: \"required\",\n network: \"required\",\n };\n\n // pretty labels (optional)\n const stableCoinLabels: Record<string, string> = {\n stableCoin: \"Stable Coin\",\n network: \"Network\",\n };\n\n // --- the rest of your data fetching (unchanged) ---\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n caller,\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n const queryParams = getQueryParams(response.launchUrl);\n setTransactionReference(queryParams[\"paymentReference\"]);\n setMessage(\"Payment link created successfully\");\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n const generateAddress = async (payload: IGenerateStableCoinAddress) => {\n if (!payload) return;\n\n setGeneratingAddress(true);\n try {\n const response: IApiResponse<any> = await generateStableCoinAddress(\n environment,\n payload,\n caller,\n );\n\n if (response?.isSuccessful) {\n setAddressDetails(response.data);\n setFormIndex(1);\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to generate address\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setGeneratingAddress(false);\n }\n };\n\n const getAllStableCoins = async () => {\n setLoadingStableCoins(true);\n try {\n const response: IApiResponse<any> = await getStableCoins(\n environment,\n caller,\n );\n\n if (response?.isSuccessful) {\n setStableCoins(\n response.data?.map((c: { name: string }) => ({\n label: c.name,\n value: c.name,\n })) ?? [],\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get stable coins\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStableCoins(false);\n }\n };\n\n const getAllStableCoinNetworks = async (stableCoin: string) => {\n setLoadingStableCoinNetworks(true);\n try {\n const response: IApiResponse<any> = await getStableCoinNetworks(\n environment,\n stableCoin,\n caller,\n );\n\n if (response?.isSuccessful) {\n setNetworkList(\n response.networks?.map((n: string) => ({\n label: n,\n value: n,\n })) ?? [],\n );\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to get stable coin networks\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoadingStableCoinNetworks(false);\n }\n };\n\n const confirmPaymentHandler = async (): Promise<void> => {\n setIsConfirmingPayment(true);\n try {\n const response = await getPaymentReferenceDetails(\n environment,\n transactionReference,\n caller,\n );\n\n if (response?.isSuccessful) {\n setPaymentReferenceDetails(\n caller === \"buzapay\" ? response.data : response,\n );\n\n const needsConfirm =\n paymentReferenceDetails?.finalTransactionStatus == null ||\n paymentReferenceDetails?.paymentStatus == null;\n\n if (needsConfirm) {\n setMessage(\"Transaction not confirmed !!\");\n setPaymentReferenceStatus(\"pending\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"pending\",\n message,\n });\n } else if (\n paymentReferenceDetails?.finalTransactionStatus === \"Success\" ||\n paymentReferenceDetails?.paymentStatus === \"Payment Received\"\n ) {\n setMessage(\"Transaction confirmed !!\");\n setPaymentReferenceStatus(\"confirmed\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate:\n paymentReferenceDetails?.updatedAt ?? new Date().toISOString(),\n paymentStatus: \"confirmed\",\n message,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === \"119\") {\n setPaymentReferenceStatus(\"used\");\n setMessage(response.responseMessage || \"\");\n onPaymentAuthorized?.({\n paymentId: transactionReference,\n paymentDate: new Date().toISOString(),\n paymentStatus: \"used\",\n message,\n });\n }\n } catch (err: any) {\n setPaymentReferenceStatus(\"\");\n setMessage(\n err?.error?.responseMessage ||\n err?.error?.message ||\n \"Something went wrong\",\n );\n onError?.({\n errorMessage: message,\n });\n } finally {\n setIsConfirmingPayment(false);\n }\n };\n\n const formatAmountHandler = formatAmount(\n paymentObject.amount,\n paymentObject.currency,\n );\n\n const payHandler = async () => {\n const errs = validateGroup(\n stableCoinForm,\n stableCoinRules,\n stableCoinLabels,\n );\n setStableCoinErrors(errs);\n if (Object.keys(errs).length === 0) {\n const payload: IGenerateStableCoinAddress = {\n paymentReference: transactionReference,\n currency: stableCoinForm.stableCoin,\n chain: stableCoinForm.network,\n transactionAmount: paymentObject.amount,\n merchantId: secretKey,\n };\n\n setGenerateAddressPayload(payload);\n await generateAddress(payload);\n } else {\n return;\n }\n };\n\n const amountPlusNetworkFee = addressDetails\n ? Number(addressDetails.transactionAmount) + addressDetails.networkFee\n : 0;\n\n useEffect(() => {\n (async () => {\n await generatePaymentLinkHandler();\n await getAllStableCoins();\n })();\n }, []);\n\n return (\n <div className=\"flex flex-col gap-6\">\n {formIndex === 0 && (\n <>\n <div className=\"grid grid-cols-1 gap-6\">\n <BaseSelect\n label=\"Select Crypto\"\n required\n options={stableCoins}\n loading={loadingStableCoins}\n value={stableCoinForm.stableCoin}\n onChange={(e) => {\n setStableCoinForm({ ...stableCoinForm, stableCoin: e });\n getAllStableCoinNetworks(e);\n if (stableCoinErrors.stableCoin) {\n setStableCoinErrors((er) => ({ ...er, stableCoin: \"\" }));\n }\n }}\n validationError={stableCoinErrors.stableCoin ?? \"\"}\n />\n <BaseSelect\n label=\"Select Network\"\n required\n options={networkList}\n loading={loadingStableCoinNetworks}\n value={stableCoinForm.network}\n onChange={(e) => {\n setStableCoinForm({ ...stableCoinForm, network: e });\n if (stableCoinErrors.network) {\n setStableCoinErrors((er) => ({ ...er, network: \"\" }));\n }\n }}\n validationError={stableCoinErrors.network ?? \"\"}\n />\n </div>\n\n <BaseButton\n label={`Pay ${formatAmountHandler}`}\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={generatingAddress}\n onClick={payHandler}\n />\n </>\n )}\n\n {formIndex === 1 && (\n <div>\n {caller === \"buzapay\" && (\n <div className=\"flex flex-col gap-6\">\n <div className=\"mx-auto\">\n <IconQrCode />\n <p className=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {generateAddressPayload?.currency}\n </p>\n </div>\n\n <div className=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\">\n <div className=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Network\n </p>\n\n <div className=\"flex justify-between\">\n <div className=\"flex flex-col gap-1\">\n <p className=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {addressDetails?.chain}\n </p>\n\n <div className=\"flex items-center gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n *Est. arrival = 3 mins\n </p>\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n |\n </p>\n\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={addressDetails?.networkFee ?? 0}\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n iconWidth={12}\n iconHeight={12}\n />\n </div>\n </div>\n\n <IconArrowSwap />\n </div>\n </div>\n\n <div className=\"pb-4 flex flex-col gap-2\">\n <p className=\"mb-0 text-body-3xs text-light-copy font-normal\">\n Deposit Address >\n </p>\n\n <div className=\"flex justify-between\">\n <p className=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\">\n {addressDetails?.walletAddress}\n </p>\n\n <BaseCopy copyText={addressDetails?.walletAddress ?? \"\"} />\n </div>\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between border-b border-grey-border py-3\">\n <p className=\"mb-0 text-body-2xs font-medium text-primary-black\">\n Network fee\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={addressDetails?.networkFee ?? 0}\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n />\n </div>\n\n <div className=\"flex items-center justify-between py-4\">\n <p className=\"mb-0 text-body-lg font-semibold text-primary-black\">\n Pay\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={amountPlusNetworkFee}\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n iconWidth={20}\n iconHeight={20}\n />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n <BaseButton\n label=\"Confirm Payment\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isConfirmingPayment}\n onClick={confirmPaymentHandler}\n />\n </div>\n </div>\n )}\n\n {caller === \"miden\" && (\n <div className=\"flex flex-col gap-6\">\n <div className=\"p-4 rounded-lg flex flex-col gap-6 bg-[#FAFDFF] border border-[#F0FAFF]\">\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Chain\"\n value={addressDetails?.chain ?? \"\"}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={addressDetails?.chain ?? \"\"}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <BaseLabelInfo\n label=\"Wallet Address\"\n value={addressDetails?.walletAddress ?? \"\"}\n />\n <BaseCopy\n color=\"#9DBFDE\"\n copyText={addressDetails?.walletAddress ?? \"\"}\n />\n </div>\n <div className=\"flex flex-col\">\n <p className=\"mb-1 text-body-4xs font-medium text-light-copy uppercase\">\n Amount\n </p>\n <BaseCurrencyAmount\n currency={generateAddressPayload?.currency ?? \"\"}\n amount={amountPlusNetworkFee}\n textClass=\"mb-0 text-body-2xs font-medium text-sub-copy\"\n iconColorClass=\"#231F20\"\n iconWidth=\"20\"\n iconHeight=\"20\"\n />\n </div>\n\n <div className=\"flex gap-4 items-center justify-center\">\n <div className=\"w-24 border border-[#E1EBF5]\"></div>\n <p className=\"mb-2 text-body-2xs text-[#5F738C] font-normal\">\n Or\n </p>\n <div className=\"w-24 border border-[#E1EBF5]\"></div>\n </div>\n\n <div className=\"mx-auto\">\n <p className=\"mb-2 text-body-xs text-primary font-semibold text-center\">\n Scan to Pay\n </p>\n <IconQrCode />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-6\">\n <BaseButton\n label=\"I have made this payment\"\n type=\"primary\"\n caller={caller}\n customClass=\"w-full\"\n loading={isConfirmingPayment}\n onClick={confirmPaymentHandler}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { BaseButton, BaseInputError } from \"../components/base\";\nimport { MidenCheckoutIframe } from \"./checkout-iframe\";\n\ninterface IMidenCheckoutButtonProps {\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject: IPaymentObject;\n mode?: \"redirect\" | \"iframe\";\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutButton({\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n mode = \"redirect\",\n onError,\n}: IMidenCheckoutButtonProps) {\n const [message, setMessage] = useState(\"\");\n const [launchUrl, setLaunchUrl] = useState(\"\");\n const [urlLaunchUrl, setUrlLaunchUrl] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const generatePaymentLinkHandler = async () => {\n if (!secretKey) {\n setMessage(\"Secret key is required.\");\n return;\n }\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n setMessage(\"Kindly ensure you are passing all the required data.\");\n return;\n }\n\n setLoading(true);\n setMessage(\"\");\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"miden\"\n );\n\n if (response?.isSuccessful && response.launchUrl) {\n setLaunchUrl(response.launchUrl);\n setUrlLaunchUrl(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n setMessage(\"Payment link created successfully\");\n\n if (mode === \"redirect\") {\n // Use the URL from the response, not the (stale) state.\n window.open(response.launchUrl, \"_blank\", \"noopener,noreferrer\");\n }\n } else {\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n return urlLaunchUrl && mode === \"iframe\" ? (\n <MidenCheckoutIframe\n url={urlLaunchUrl}\n secretKey={secretKey}\n environment={environment}\n />\n ) : (\n <div>\n <BaseButton\n label=\"Pay\"\n type=\"primary\"\n caller=\"miden\"\n customClass=\"w-full\"\n loading={loading}\n onClick={generatePaymentLinkHandler}\n />\n <BaseInputError errorMessage={message} />\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IApiResponse, IErrorObject, IPaymentObject } from \"../types\";\nimport { checkObjectTruthy } from \"../utils\";\nimport { createPaymentLink } from \"../apis\";\nimport { IconLoader } from \"../components/icons\";\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\ninterface IMidenCheckoutIframeProps {\n style?: IIframeStyle;\n url?: string;\n secretKey: string;\n environment?: \"sandbox\" | \"production\";\n paymentObject?: IPaymentObject;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutIframe({\n style = {\n width: \"100%\",\n height: \"100vh\",\n border: \"0\",\n borderRadius: \"6px\",\n overflow: \"hidden\",\n },\n url,\n secretKey,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n redirectUrl: \"\",\n },\n onError,\n}: IMidenCheckoutIframeProps) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n\n const [message, setMessage] = useState<string>(\"\");\n const [launchUrl, setLaunchUrl] = useState<string>(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n\n const launchIframe = useCallback(\n (url: string) => {\n // remove prior iframe if any\n if (iframeRef.current && iframeRef.current.parentNode) {\n iframeRef.current.parentNode.removeChild(iframeRef.current);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n if (style.width) iframe.style.width = style.width;\n if (style.height) iframe.style.height = style.height;\n if (style.border) iframe.style.border = style.border;\n if (style.borderRadius) iframe.style.borderRadius = style.borderRadius;\n if (style.overflow) iframe.style.overflow = style.overflow;\n\n containerRef.current?.appendChild(iframe);\n iframeRef.current = iframe;\n },\n [style]\n );\n\n const generatePaymentLinkHandler = async () => {\n if (url) {\n launchIframe(url);\n return;\n }\n\n if (!secretKey) {\n return setMessage(\"Secret key is required.\");\n }\n\n if (!checkObjectTruthy<IPaymentObject>(paymentObject)) {\n return setMessage(\"Secret key is required.\");\n }\n\n setLoading(true);\n try {\n const response: IApiResponse<any> = await createPaymentLink(\n paymentObject,\n environment,\n secretKey,\n \"miden\"\n );\n if (response?.isSuccessful) {\n setLaunchUrl(response.launchUrl ?? \"\");\n setMessage(\"Payment link created successfully\");\n if (response.launchUrl) {\n setLoading(false);\n launchIframe(`${response.launchUrl}&merchantId=${btoa(secretKey)}`);\n }\n } else {\n setLoading(false);\n setMessage(\"Failed to create payment link\");\n }\n } catch (e: any) {\n setMessage(e?.message || \"Failed to create payment link\");\n onError?.({\n errorMessage: message,\n });\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (!containerRef.current) return; // only run if div is mounted\n generatePaymentLinkHandler();\n }, []);\n\n return (\n <div className=\"relative\" style={style}>\n <div ref={containerRef} className=\"w-full h-full\"></div>\n {loading && (\n <div className=\"absolute inset-0 grid place-items-center bg-white/60\">\n <IconLoader></IconLoader>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { BaseCard } from \"../components/base/card\";\nimport { BaseLabelInfo, BaseRadioGroup, BaseSuccess } from \"../components/base\";\nimport { PayByCard } from \"../components/pay-by-card\";\nimport { PayByTransfer } from \"../components/pay-by-transfer\";\nimport { PayByStableCoin } from \"../components/pay-by-stable-coin\";\nimport {\n IErrorObject,\n IPaymentObject,\n ISelectOption,\n ISuccessObject,\n} from \"../types\";\nimport { formatAmount, toastConfig } from \"../utils\";\nimport { IconClose, IconMidenLogo } from \"../components/icons\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\ninterface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\ninterface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\ninterface IMidenCheckoutCardProps {\n secretKey: string;\n environment?: \"sandbox\" | \"prod\";\n paymentObject: IPaymentObject;\n options?: CheckoutCardOptions;\n onPaymentAuthorized?: (data: ISuccessObject) => void;\n onError?: (error: IErrorObject) => void;\n}\n\nexport function MidenCheckoutCard({\n secretKey,\n options,\n environment = \"sandbox\",\n paymentObject = {\n merchantName: \"\",\n amount: 0,\n currency: \"\",\n email: \"\",\n phoneNumber: \"\",\n narration: \"\",\n },\n onPaymentAuthorized,\n onError,\n}: IMidenCheckoutCardProps) {\n const [checkoutState, setCheckoutState] = useState<\n \"SUCCESS\" | \"PENDING\" | \"USED\"\n >(\"PENDING\");\n\n const paymentTypeOptions: ISelectOption[] = [\n { label: \"Card\", value: \"CARD\" },\n { label: \"Bank Transfer\", value: \"BANK_TRANSFER\" },\n { label: \"Stable Coin\", value: \"STABLE_COIN\" },\n ];\n const [filteredPaymentTypeOptions, setFilteredPaymentTypeOptions] = useState<\n ISelectOption[]\n >([]);\n const [paymentType, setPaymentType] = useState<string>(\"\");\n const [successObject, setSuccessObject] = useState<ISuccessObject>({\n paymentDate: \"\",\n paymentId: \"\",\n paymentStatus: \"\",\n });\n\n const paymentTypeHandler = (event: string): void => {\n setPaymentType(event);\n };\n\n const setSuccess = (event: ISuccessObject): void => {\n setSuccessObject({ ...event });\n if (event.paymentStatus === \"authorized\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment authorization successful.\", toastConfig);\n } else if (event.paymentStatus === \"confirmed\") {\n setCheckoutState(\"SUCCESS\");\n toast.success(\"Payment confirmed.\", toastConfig);\n } else if (event.paymentStatus === \"payment failed\") {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n } else if (event.paymentStatus === \"used\") {\n setCheckoutState(\"USED\");\n } else {\n setCheckoutState(\"PENDING\");\n toast.error(\"Payment pending.\", toastConfig);\n }\n\n onPaymentAuthorized?.(event);\n };\n\n const onErrorHandler = (error: IErrorObject): void => {\n toast.error(error.errorMessage ?? \"Payment failed.\", toastConfig);\n onError?.(error);\n };\n\n const formatAmountHandler = (): string => {\n return formatAmount(paymentObject.amount, paymentObject.currency);\n };\n\n const formatChargeHandler = (): string => {\n return formatAmount(0, paymentObject.currency);\n };\n\n useEffect(() => {\n let options: ISelectOption[] = [];\n\n if (paymentObject.currency === \"USD\") {\n if (paymentObject.amount < 50) {\n options = paymentTypeOptions.filter(\n (option) =>\n option.value !== \"BANK_TRANSFER\" && option.value !== \"STABLE_COIN\",\n );\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"BANK_TRANSFER\",\n );\n }\n } else {\n options = paymentTypeOptions.filter(\n (option) => option.value !== \"STABLE_COIN\",\n );\n }\n\n setFilteredPaymentTypeOptions(options);\n }, [paymentObject.currency, paymentObject.amount]);\n\n useEffect(() => {\n if (filteredPaymentTypeOptions.length) {\n setPaymentType(filteredPaymentTypeOptions[0].value);\n }\n }, [filteredPaymentTypeOptions]);\n\n return (\n <BaseCard caller=\"miden\">\n <Toaster />\n <div className=\"grid grid-cols-3\">\n {checkoutState === \"PENDING\" && (\n <div className=\"bg-[#0A0032] py-6 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p className=\"text-white text-body-xs font-semibold px-6\">\n Pay with\n </p>\n <BaseRadioGroup\n caller=\"miden\"\n options={filteredPaymentTypeOptions}\n selectedChange={(e: string) => paymentTypeHandler(e)}\n />\n </div>\n )}\n\n <div\n className={\n checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")\n ? \"col-span-3\"\n : \"col-span-2\"\n }\n >\n {checkoutState === \"PENDING\" && (\n <div className=\"flex items-center justify-between p-6\">\n <IconMidenLogo />\n <IconClose color=\"black\" className=\"cursor-pointer\" />\n </div>\n )}\n\n {checkoutState === \"PENDING\" && (\n <div className=\"px-6 md:px-10 lg:px-14 pt-4 pb-8 flex flex-col gap-6 max-h-[32rem] overflow-y-scroll\">\n <div className=\"flex items-center justify-between py-3 px-4 bg-[#F8FDFF] border border-[#DAE4E8] rounded-lg\">\n <BaseLabelInfo\n label=\"Amount Due\"\n value={formatAmountHandler()}\n />\n <BaseLabelInfo label=\"Charges\" value={formatChargeHandler()} />\n </div>\n\n <div>\n {paymentType === \"CARD\" ? (\n <PayByCard\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : paymentType === \"BANK_TRANSFER\" ? (\n <PayByTransfer\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n ) : (\n <PayByStableCoin\n secretKey={secretKey}\n environment={environment}\n caller=\"miden\"\n paymentObject={paymentObject}\n onPaymentAuthorized={setSuccess}\n onError={onErrorHandler}\n />\n )}\n </div>\n </div>\n )}\n\n {(checkoutState === \"SUCCESS\" ||\n (checkoutState === \"USED\" && paymentType === \"BANK_TRANSFER\")) && (\n <BaseSuccess\n amount={paymentObject.amount}\n currency={paymentObject.currency}\n caller=\"miden\"\n redirectUrl={paymentObject.redirectUrl ?? \"\"}\n successObject={successObject}\n />\n )}\n </div>\n </div>\n </BaseCard>\n );\n}\n"],"mappings":"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","names":["useState","CardSchemes","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","Fragment","jsx","jsxs","React","useMemo","jsx","jsxs","useCallback","useEffect","useState","jsx","jsxs","useState","useCallback","url","useEffect","jsx","jsxs","useState","useEffect","useState","useEffect","useRef","useState","React","useEffect","jsx","jsxs","React","useEffect","jsx","jsxs","useState","useRef","useEffect","useCallback","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useCallback","useEffect","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","toast","Toaster","jsx","jsxs","useState","useEffect","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","useRef","useState","useCallback","url","useEffect","jsx","jsxs","useState","useEffect","useState","toast","Toaster","jsx","jsxs","useState","useEffect","options"]}
|