├── src
├── table.tsx
├── vite-env.d.ts
├── assets
│ ├── amex.png
│ ├── rupay.png
│ ├── visa.png
│ ├── diners.png
│ ├── mastercard.png
│ ├── gpayLogoDark.svg
│ └── gpayLogo.svg
├── main.tsx
├── index.css
├── components
│ ├── caution.tsx
│ ├── security.tsx
│ └── upiFormats.tsx
└── App.tsx
├── qr-demo.png
├── docs
├── src
│ └── assets
│ │ ├── amex.png
│ │ ├── rupay.png
│ │ ├── visa.png
│ │ ├── diners.png
│ │ ├── mastercard.png
│ │ ├── gpayLogoDark.svg
│ │ └── gpayLogo.svg
├── index.html
├── upi.svg
└── assets
│ ├── index-CiaK_M2l.css
│ └── index-tdy1iLb4.js
├── public
├── src
│ └── assets
│ │ ├── amex.png
│ │ ├── rupay.png
│ │ ├── visa.png
│ │ ├── diners.png
│ │ ├── mastercard.png
│ │ ├── gpayLogoDark.svg
│ │ └── gpayLogo.svg
└── upi.svg
├── postcss.config.js
├── tsconfig.json
├── tailwind.config.js
├── .gitignore
├── index.html
├── tsconfig.node.json
├── tsconfig.app.json
├── vite.config.ts
├── eslint.config.js
├── package.json
└── README.md
/src/table.tsx:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/qr-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/qr-demo.png
--------------------------------------------------------------------------------
/src/assets/amex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/src/assets/amex.png
--------------------------------------------------------------------------------
/src/assets/rupay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/src/assets/rupay.png
--------------------------------------------------------------------------------
/src/assets/visa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/src/assets/visa.png
--------------------------------------------------------------------------------
/src/assets/diners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/src/assets/diners.png
--------------------------------------------------------------------------------
/docs/src/assets/amex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/docs/src/assets/amex.png
--------------------------------------------------------------------------------
/docs/src/assets/rupay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/docs/src/assets/rupay.png
--------------------------------------------------------------------------------
/docs/src/assets/visa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/docs/src/assets/visa.png
--------------------------------------------------------------------------------
/src/assets/mastercard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/src/assets/mastercard.png
--------------------------------------------------------------------------------
/docs/src/assets/diners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/docs/src/assets/diners.png
--------------------------------------------------------------------------------
/public/src/assets/amex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/public/src/assets/amex.png
--------------------------------------------------------------------------------
/public/src/assets/rupay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/public/src/assets/rupay.png
--------------------------------------------------------------------------------
/public/src/assets/visa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/public/src/assets/visa.png
--------------------------------------------------------------------------------
/docs/src/assets/mastercard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/docs/src/assets/mastercard.png
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/src/assets/diners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/public/src/assets/diners.png
--------------------------------------------------------------------------------
/public/src/assets/mastercard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RedeemApp/cc-billpay-upi-id/HEAD/public/src/assets/mastercard.png
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4 | darkMode: "selector",
5 | theme: {
6 | extend: {},
7 | },
8 | plugins: [],
9 | };
10 |
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { StrictMode } from 'react'
2 | import { createRoot } from 'react-dom/client'
3 | import App from './App.tsx'
4 | import './index.css'
5 |
6 | createRoot(document.getElementById('root')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 | .vite/
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Pay Your Credit Card Bills via UPI. Generate UPI ID.
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2022",
4 | "lib": ["ES2023"],
5 | "module": "ESNext",
6 | "skipLibCheck": true,
7 |
8 | /* Bundler mode */
9 | "moduleResolution": "bundler",
10 | "allowImportingTsExtensions": true,
11 | "isolatedModules": true,
12 | "moduleDetection": "force",
13 | "noEmit": true,
14 |
15 | /* Linting */
16 | "strict": true,
17 | "noUnusedLocals": true,
18 | "noUnusedParameters": true,
19 | "noFallthroughCasesInSwitch": true
20 | },
21 | "include": ["vite.config.ts"]
22 | }
23 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Pay Your Credit Card Bills via UPI. Generate UPI ID.
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 | "jsx": "react-jsx",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true
22 | },
23 | "include": ["src"]
24 | }
25 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @layer base {
6 | /* Hide arrows in input of type number */
7 | input[type="number"]::-webkit-outer-spin-button,
8 | input[type="number"]::-webkit-inner-spin-button {
9 | @apply appearance-none;
10 | margin: 0;
11 | }
12 |
13 | input[type="number"] {
14 | @apply appearance-none;
15 | }
16 |
17 | }
18 |
19 | @layer components {
20 | @media (max-width: 768px) {
21 | .small-qr {
22 | display: none;
23 | }
24 | }
25 |
26 | @media (min-width: 769px) {
27 | .small-qr {
28 | display: flex;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 | import { viteStaticCopy } from 'vite-plugin-static-copy'
4 | import path from 'path'
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | plugins: [
8 | react(),
9 | viteStaticCopy({
10 | targets: [
11 | {
12 | src: path.resolve(__dirname, './src/assets') + '/[!.]*', // This will copy all files from the 'src/assets' directory
13 | dest: './public/src/assets' // Destination folder is 'public/src/assets'
14 | },
15 | ],
16 | })
17 | ],
18 | base: '/cc-billpay-upi-id/',
19 | build: {
20 | outDir: 'docs'
21 | },
22 | publicDir: 'public'
23 | })
24 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from '@eslint/js'
2 | import globals from 'globals'
3 | import reactHooks from 'eslint-plugin-react-hooks'
4 | import reactRefresh from 'eslint-plugin-react-refresh'
5 | import tseslint from 'typescript-eslint'
6 |
7 | export default tseslint.config(
8 | { ignores: ['dist'] },
9 | {
10 | extends: [js.configs.recommended, ...tseslint.configs.recommended],
11 | files: ['**/*.{ts,tsx}'],
12 | languageOptions: {
13 | ecmaVersion: 2020,
14 | globals: globals.browser,
15 | },
16 | plugins: {
17 | 'react-hooks': reactHooks,
18 | 'react-refresh': reactRefresh,
19 | },
20 | rules: {
21 | ...reactHooks.configs.recommended.rules,
22 | 'react-refresh/only-export-components': [
23 | 'warn',
24 | { allowConstantExport: true },
25 | ],
26 | },
27 | },
28 | )
29 |
--------------------------------------------------------------------------------
/src/components/caution.tsx:
--------------------------------------------------------------------------------
1 | import { AlertTriangle } from "lucide-react";
2 |
3 | export default function Security() {
4 | return (
5 |
6 |
7 |
8 |
9 | Caution:
10 |
11 |
12 |
13 | Please note that these UPI IDs are generated with best effort and should
14 | be checked for accuracy before making any payment. We will not be held
15 | responsible for any losses incurred due to incorrect UPI IDs generated
16 | by this tool.
17 |
18 |
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/src/components/security.tsx:
--------------------------------------------------------------------------------
1 | import { Github } from "lucide-react";
2 |
3 | export default function Security() {
4 | return (
5 |
6 |
7 | Security First
8 |
9 |
10 |
11 | No data leaves your system.
12 |
13 |
14 | Source code is publicly available on
15 |
19 |
20 | GitHub.
21 |
22 |
23 |
24 |
25 | );
26 | }
27 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cc-billpay-upi-id",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc -b && vite build",
9 | "lint": "eslint .",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "lucide-react": "^0.439.0",
14 | "react": "^18.3.1",
15 | "react-dom": "^18.3.1",
16 | "react-qr-code": "^2.0.15",
17 | "vite-plugin-static-copy": "^1.0.6"
18 | },
19 | "devDependencies": {
20 | "@eslint/js": "^9.9.0",
21 | "@types/fs-extra": "^11.0.4",
22 | "@types/react": "^18.3.3",
23 | "@types/react-dom": "^18.3.0",
24 | "@vitejs/plugin-react": "^4.3.1",
25 | "autoprefixer": "^10.4.20",
26 | "eslint": "^9.9.0",
27 | "eslint-plugin-react-hooks": "^5.1.0-rc.0",
28 | "eslint-plugin-react-refresh": "^0.4.9",
29 | "globals": "^15.9.0",
30 | "postcss": "^8.4.45",
31 | "tailwindcss": "^3.4.10",
32 | "typescript": "^5.5.3",
33 | "typescript-eslint": "^8.0.1",
34 | "vite": "^5.4.1"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/assets/gpayLogoDark.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/src/assets/gpayLogoDark.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/gpayLogo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/src/assets/gpayLogo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/src/assets/gpayLogoDark.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/src/assets/gpayLogo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/components/upiFormats.tsx:
--------------------------------------------------------------------------------
1 | const upiFormats = [
2 | {
3 | status: "working",
4 | bank: "Axis",
5 | format: "CC.91[10 digit mobile number][last 4 digits of card]@axisbank",
6 | },
7 | {
8 | status: "working",
9 | bank: "ICICI",
10 | format: "ccpay[16 digit card number]@icici",
11 | },
12 | {
13 | status: "working",
14 | bank: "AU Bank",
15 | format: "AUCC[10 digit mobile number][last 4 digits of card]@AUBANK",
16 | },
17 | {
18 | status: "working",
19 | bank: "IDFC",
20 | format: "[16 digit card number].cc@idfcbank",
21 | },
22 | { status: "working", bank: "AMEX", format: "AEBC[15 digit card number]@SC" },
23 | {
24 | status: "working",
25 | bank: "SBI",
26 | format: "Sbicard[16 digit card number]@SBI (Not working for me)",
27 | },
28 | ];
29 |
30 | export default function Security() {
31 | return (
32 |
33 |
34 | UPI ID Formats:
35 |
36 |
37 |
38 |
39 |
40 | Bank
41 |
42 |
43 | UPI Format
44 |
45 |
46 |
47 |
48 | {upiFormats.map((format, index) => (
49 |
50 |
51 | {format.bank}
52 |
53 |
54 | {format.format}
55 |
56 |
57 | ))}
58 |
59 |
60 |
61 | );
62 | }
63 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UPI ID Generator for Credit Card Bills
2 |
3 | ## Access the Live Tool
4 | It is hosted on GitHub Pages [here](https://redeemapp.github.io/cc-billpay-upi-id/).
5 |
6 | ## Overview
7 | Did you know you can pay credit card bills via UPI id?
8 |
9 | Yes, almost all the banks have provided a way to do that.
10 |
11 | ## Features
12 | You can use the tool to take a quick look at the format.
13 |
14 | OR
15 |
16 | You can use the tool to generate the upi id.
17 |
18 | ## Security
19 |
20 | * No data including cc number leaves your system.
21 | * Source code is publicly available on GitHub.
22 |
23 | ## Demo
24 | 
25 |
26 | ## Installation
27 |
28 | ## Usage
29 |
30 | * Just enter your mobile number (auto-complete is enabled)
31 |
32 | * Enter the card number (auto-complete is enabled)
33 |
34 |
35 | ## Contribution
36 |
37 | Before starting to contribute to this project, kindly follow the steps below:
38 |
39 | 1. First begin by creating an issue describing the feature or bug fix you wish to work on.
40 | 2. Ensure you get the created issue assigned to yourself before proceeding with the changes.
41 | 3. Start working on the issue by first checking the source folder (`src/`), the components directory (`src/components/`) and the main application file (`App.tsx`).
42 | 4. After completing the updates, please test the changes locally on your machine.
43 | 5. Once you are satisfied with your changes and all tests pass, submit a pull request with all the updated files except the `docs/` folder. Commits to the `docs/` directory, which contains the final compiled code, will be handled by the admins for now.
44 |
45 | Please familiarize yourself with the upi id formats for various banks if you are contributing to that aspect:
46 | - [American Express (Amex)](https://www.americanexpress.com/in/customer-service/payments-statements-and-balance/making-a-payment.html)
47 | - [ICICI Bank](https://www.icicibank.com/blogs/credit-card/credit-card-payment-procedure)
48 | - [Axis Bank](https://www.axisbank.com/progress-with-us/digital-banking/how-to-pay-your-loan-emi-and-credit-card-dues-using-upi)
49 | - [IDFC Bank](https://www.idfcfirstbank.com/finfirst-blogs/credit-card/ways-to-make-credit-card-bill-payment)
50 | - [AU Bank](https://www.aubank.in/commercial-credit-cards-bill-payment)
51 |
52 | ## License
53 |
54 | This project is under the MIT License
55 |
56 |
57 | ## Conclusion
58 | Enjoy simpler payment methods with our UPI ID generator for credit card bills.
59 |
--------------------------------------------------------------------------------
/docs/upi.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/public/upi.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/docs/assets/index-CiaK_M2l.css:
--------------------------------------------------------------------------------
1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}input[type=number]{-webkit-appearance:none;-moz-appearance:none;appearance:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-1\/2{left:50%}.right-3{right:.75rem}.top-1\/2{top:50%}.z-50{z-index:50}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.list-item{display:list-item}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.min-w-full{min-width:100%}.max-w-4xl{max-width:56rem}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.bg-\[rgb\(185\,185\,185\,0\.97\)\]{background-color:#b9b9b9f7}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-purple-100{--tw-gradient-from: #f3e8ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-200{--tw-gradient-to: #c7d2fe var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.line-through{text-decoration-line:line-through}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-purple-500:focus{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-purple-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(168 85 247 / var(--tw-ring-opacity))}@media (min-width: 640px){.sm\:mb-0{margin-bottom:0}.sm\:mt-0{margin-top:0}.sm\:h-12{height:3rem}.sm\:h-8{height:2rem}.sm\:w-1\/2{width:50%}.sm\:w-12{width:3rem}.sm\:w-8{width:2rem}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 768px){.md\:table-cell{display:table-cell}}.dark\:border-gray-600:where(.dark,.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-gray-700:where(.dark,.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:border-red-800:where(.dark,.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity))}.dark\:bg-gray-600:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:bg-purple-600:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity))}.dark\:bg-red-900:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.dark\:bg-gradient-to-br:where(.dark,.dark *){background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.dark\:from-purple-900:where(.dark,.dark *){--tw-gradient-from: #581c87 var(--tw-gradient-from-position);--tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-indigo-900:where(.dark,.dark *){--tw-gradient-to: #312e81 var(--tw-gradient-to-position)}.dark\:text-gray-100:where(.dark,.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-300:where(.dark,.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-purple-300:where(.dark,.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity))}.dark\:text-red-100:where(.dark,.dark *){--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.dark\:text-white:where(.dark,.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:hover\:bg-gray-600:hover:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:hover\:bg-purple-700:hover:where(.dark,.dark *){--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity))}.dark\:focus\:border-purple-400:focus:where(.dark,.dark *){--tw-border-opacity: 1;border-color:rgb(192 132 252 / var(--tw-border-opacity))}.dark\:focus\:ring-purple-400:focus:where(.dark,.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(192 132 252 / var(--tw-ring-opacity))}
2 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from "react";
2 | import {
3 | Copy,
4 | CreditCard,
5 | Smartphone,
6 | Moon,
7 | Sun,
8 | CircleAlert,
9 | } from "lucide-react";
10 | import gpayLogo from "./assets/gpayLogo.svg";
11 | import gpayLogoDark from "./assets/gpayLogoDark.svg";
12 | import Security from "./components/security";
13 | import Caution from "./components/caution";
14 | import UpiFormats from "./components/upiFormats";
15 | import QRCode from "react-qr-code";
16 |
17 | export default function UPIIDGenerator() {
18 | const [isDarkMode, setIsDarkMode] = useState(false);
19 | const [phoneNumber, setPhoneNumber] = useState("");
20 | const [cardNumber, setCardNumber] = useState("");
21 | const [phoneError, setPhoneError] = useState(false);
22 | const [cardError, setCardError] = useState(false);
23 | const [cardType, setCardType] = useState(null);
24 | const [generatedUPIIds, setGeneratedUPIIds] = useState<
25 | { bank: string; upiId: string; strikethrough: boolean; disabled: boolean }[]
26 | >([]);
27 | const [tableVisible, setTableVisible] = useState(false);
28 | const [copiedUPIId, setCopiedUPIId] = useState(null);
29 | // Create local state for overlay
30 | const [showOverlay, setShowOverlay] = useState(false);
31 | const [overlayProps, setOverlayProps] = useState({upiString: '', bank: '', upiId: ''});
32 |
33 |
34 | // Add this method inside your component
35 | function openOverlay(bank: string, upiId: string) {
36 | const upiString = `upi://pay?pa=${upiId}&pn=${bank}&cu=INR`
37 | setOverlayProps({upiString, bank, upiId});
38 | setShowOverlay(true);
39 | }
40 |
41 | // Add this method inside your component
42 | function closeOverlay() {
43 | setShowOverlay(false);
44 | }
45 |
46 | useEffect(() => {
47 | const savedTheme = localStorage.getItem("theme");
48 | if (savedTheme === "dark") {
49 | setIsDarkMode(true);
50 | document.documentElement.classList.add("dark");
51 | } else {
52 | document.documentElement.classList.remove("dark");
53 | }
54 | }, []);
55 |
56 | const toggleDarkMode = () => {
57 | const newTheme = !isDarkMode ? "dark" : "light";
58 | setIsDarkMode(!isDarkMode);
59 | document.documentElement.classList.toggle("dark", !isDarkMode);
60 | localStorage.setItem("theme", newTheme);
61 | };
62 |
63 | const validatePhoneNumber = (phoneNumber: string) => {
64 | if (phoneNumber.toString().length < 10) {
65 | setPhoneError(true);
66 | } else {
67 | setPhoneError(false);
68 | }
69 | setPhoneNumber(phoneNumber.slice(0, 10));
70 | };
71 |
72 | const luhnCheck = (cardNumber: string) => {
73 | let sum = 0;
74 | let shouldDouble = false;
75 |
76 | for (let i = cardNumber.length - 1; i >= 0; i--) {
77 | let digit = parseInt(cardNumber[i], 10);
78 |
79 | if (shouldDouble) {
80 | digit *= 2;
81 | if (digit > 9) {
82 | digit -= 9;
83 | }
84 | }
85 |
86 | sum += digit;
87 | shouldDouble = !shouldDouble;
88 | }
89 |
90 | return sum % 10 === 0;
91 | };
92 |
93 | const validateCardNumber = (input: string) => {
94 | let value = input.replace(/\s+/g, "").replace(/[^0-9]/gi, "");
95 | let formattedValue = "";
96 | for (let i = 0; i < value.length; i++) {
97 | if (i > 0 && i % 4 === 0) {
98 | formattedValue += " ";
99 | }
100 | formattedValue += value[i];
101 | }
102 | setCardNumber(formattedValue);
103 |
104 | const cleanedLength = value.length;
105 | const isLengthValid = cleanedLength === 15 || cleanedLength === 16;
106 |
107 | const isLuhnValid = isLengthValid ? luhnCheck(value) : false;
108 | if (luhnCheck(value)) {
109 | console.log("true");
110 | } else {
111 | console.log("false");
112 | }
113 |
114 | const network = getCardNetwork(value);
115 | if(network!=null) {
116 | setCardType(network);
117 | }
118 | else {
119 | setCardType(null);
120 | setCardError(true);
121 | }
122 | setCardError(!isLuhnValid || !isLengthValid);
123 | };
124 |
125 | function getCardNetwork(cardNumber: string): string | null {
126 | const firstTwo = parseInt(cardNumber.slice(0, 2), 10);
127 | const firstSix = parseInt(cardNumber.slice(0, 6), 10);
128 | if (cardNumber[0] === '4') {
129 | return 'visa';
130 | }
131 | if ((firstTwo >= 51 && firstTwo <= 55) || (firstSix >= 2221 && firstSix <= 2720)) {
132 | return 'mastercard';
133 | }
134 | if (firstTwo === 34 || firstTwo === 37) {
135 | return 'amex'
136 | }
137 | if (firstTwo === 36) {
138 | return 'diners'
139 | }
140 | if ((firstTwo === 60 || firstTwo === 65 || firstTwo === 81 || firstTwo === 82)) {
141 | return 'rupay'
142 | }
143 | return null;
144 | }
145 |
146 | const generateUPIIds = () => {
147 | const last4Digits = cardNumber.slice(-4);
148 | const upiIDs = {
149 | Axis: `CC.91${phoneNumber}${last4Digits}@axisbank`,
150 | ICICI: `ccpay.${cardNumber.replace(/\s+/g, "")}@icici`,
151 | "AU Bank": `AUCC${phoneNumber}${last4Digits}@AUBANK`,
152 | IDFC: `${cardNumber.replace(/\s+/g, "")}.cc@idfcbank`,
153 | AMEX:
154 | cardNumber.replace(/\s+/g, "").length === 15
155 | ? `AEBC${cardNumber.replace(/\s+/g, "")}@SC`
156 | : "Not applicable for 16-digit cards",
157 | SBI: `Sbicard.${cardNumber.replace(/\s+/g, "")}@SBI`,
158 | };
159 |
160 | const upiList = Object.entries(upiIDs).map(([bank, upiId]) => ({
161 | bank,
162 | upiId,
163 | strikethrough: bank === "SBI" ? true : false,
164 | disabled: upiId.includes("Not applicable") || bank === "SBI",
165 | }));
166 |
167 | setGeneratedUPIIds(upiList);
168 | setTableVisible(true);
169 | };
170 |
171 | const copyToClipboard = (upiId: string) => {
172 | if (navigator.clipboard && window.isSecureContext) {
173 | navigator.clipboard.writeText(upiId).then(() => setCopiedUPIId(upiId));
174 | } else {
175 | const tempTextArea = document.createElement("textarea");
176 | tempTextArea.value = upiId;
177 |
178 | tempTextArea.style.position = "fixed";
179 | tempTextArea.style.left = "-9999px";
180 | document.body.appendChild(tempTextArea);
181 | tempTextArea.focus();
182 | tempTextArea.select();
183 |
184 | try {
185 | document.execCommand("copy");
186 | setCopiedUPIId(upiId);
187 | } catch (err) {
188 | console.error("Failed to copy UPI ID: ", err);
189 | }
190 |
191 | document.body.removeChild(tempTextArea);
192 | }
193 | };
194 |
195 | return (
196 |
197 |
198 |
199 |
200 |
201 |
202 | Pay Your Credit Card Balance via official UPI ID
203 |
204 |
205 |
209 | {isDarkMode ? (
210 |
211 | ) : (
212 |
213 | )}
214 |
215 |
216 |
217 | An open-source and secure alternative to mainstream credit card balance payment apps.
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 | validatePhoneNumber(e.target.value)}
232 | className="flex-grow w-4 px-3 py-2 border rounded-md dark:bg-gray-700 dark:text-gray-100 dark:border-gray-600 dark:focus:border-purple-400 dark:focus:ring-purple-400 bg-white text-black border-gray-300 focus:border-purple-500 focus:ring-purple-500 focus:outline-none focus:ring-1"
233 | />
234 | {phoneError && (
235 |
236 | )}
237 |
238 |
239 |
240 |
validateCardNumber(e.target.value)}
248 | className="flex-grow w-4 px-3 py-2 border rounded-md dark:bg-gray-700 dark:text-gray-100 dark:border-gray-600 dark:focus:border-purple-400 dark:focus:ring-purple-400 bg-white text-black border-gray-300 focus:border-purple-500 focus:ring-purple-500 focus:outline-none focus:ring-1"
249 | />
250 | {cardError ? (
251 |
252 | ) : (
253 | cardType && (
254 |
259 | )
260 | )}
261 |
262 |
263 |
267 | Generate UPI IDs
268 |
269 |
270 |
271 |
272 | Generated UPI IDs:
273 |
274 |
275 | {tableVisible && (
276 |
277 |
278 |
279 |
280 | Bank
281 |
282 |
283 | UPI ID
284 |
285 |
286 | QR code
287 |
288 |
289 |
290 | {generatedUPIIds.map(
291 | ({ bank, upiId, strikethrough, disabled }: { bank: string; upiId: string; strikethrough: boolean; disabled: boolean }) => {
292 | const upiString = `upi://pay?pa=${upiId}&pn=${bank}&cu=INR`
293 | return (
294 |
295 |
296 | {bank}
297 |
298 |
299 |
300 |
{upiId}
305 |
306 | {/* Buttons - Flex container with wrap */}
307 |
308 |
copyToClipboard(upiId)}
311 | disabled={disabled}
312 | >
313 | {" "}
314 | {copiedUPIId === upiId ? "Copied" : "Copy"}
315 |
316 |
317 |
321 |
324 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 | openOverlay(upiId, bank)}>
339 |
340 |
341 |
342 |
343 |
344 | );
345 | })}
346 |
347 | )}
348 |
349 |
350 |
351 | {showOverlay && (
352 |
353 |
354 |
{`${overlayProps.bank} / ${overlayProps.upiId}`}
355 |
356 |
357 |
358 |
359 |
363 | Close
364 |
365 |
366 |
367 |
368 | )}
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 | );
380 | }
381 |
--------------------------------------------------------------------------------
/docs/assets/index-tdy1iLb4.js:
--------------------------------------------------------------------------------
1 | (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();var ps={exports:{}},Sl={},hs={exports:{}},D={};/**
2 | * @license React
3 | * react.production.min.js
4 | *
5 | * Copyright (c) Facebook, Inc. and its affiliates.
6 | *
7 | * This source code is licensed under the MIT license found in the
8 | * LICENSE file in the root directory of this source tree.
9 | */var cr=Symbol.for("react.element"),Hc=Symbol.for("react.portal"),Vc=Symbol.for("react.fragment"),Qc=Symbol.for("react.strict_mode"),Wc=Symbol.for("react.profiler"),Kc=Symbol.for("react.provider"),Gc=Symbol.for("react.context"),Xc=Symbol.for("react.forward_ref"),Yc=Symbol.for("react.suspense"),Zc=Symbol.for("react.memo"),Jc=Symbol.for("react.lazy"),tu=Symbol.iterator;function qc(e){return e===null||typeof e!="object"?null:(e=tu&&e[tu]||e["@@iterator"],typeof e=="function"?e:null)}var ms={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},vs=Object.assign,gs={};function En(e,t,n){this.props=e,this.context=t,this.refs=gs,this.updater=n||ms}En.prototype.isReactComponent={};En.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};En.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ys(){}ys.prototype=En.prototype;function oi(e,t,n){this.props=e,this.context=t,this.refs=gs,this.updater=n||ms}var ii=oi.prototype=new ys;ii.constructor=oi;vs(ii,En.prototype);ii.isPureReactComponent=!0;var nu=Array.isArray,ws=Object.prototype.hasOwnProperty,ui={current:null},ks={key:!0,ref:!0,__self:!0,__source:!0};function Ss(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)ws.call(t,r)&&!ks.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,U=S[$];if(0>>1;$l(Fl,z))Itl(yr,Fl)?(S[$]=yr,S[It]=z,$=It):(S[$]=Fl,S[Dt]=z,$=Dt);else if(Itl(yr,z))S[$]=yr,S[It]=z,$=It;else break e}}return T}function l(S,T){var z=S.sortIndex-T.sortIndex;return z!==0?z:S.id-T.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],c=[],p=1,m=null,h=3,y=!1,w=!1,x=!1,I=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(S){for(var T=n(c);T!==null;){if(T.callback===null)r(c);else if(T.startTime<=S)r(c),T.sortIndex=T.expirationTime,t(s,T);else break;T=n(c)}}function v(S){if(x=!1,d(S),!w)if(n(s)!==null)w=!0,L(E);else{var T=n(c);T!==null&&G(v,T.startTime-S)}}function E(S,T){w=!1,x&&(x=!1,f(P),P=-1),y=!0;var z=h;try{for(d(T),m=n(s);m!==null&&(!(m.expirationTime>T)||S&&!ke());){var $=m.callback;if(typeof $=="function"){m.callback=null,h=m.priorityLevel;var U=$(m.expirationTime<=T);T=e.unstable_now(),typeof U=="function"?m.callback=U:m===n(s)&&r(s),d(T)}else r(s);m=n(s)}if(m!==null)var gr=!0;else{var Dt=n(c);Dt!==null&&G(v,Dt.startTime-T),gr=!1}return gr}finally{m=null,h=z,y=!1}}var _=!1,N=null,P=-1,V=5,R=-1;function ke(){return!(e.unstable_now()-RS||125$?(S.sortIndex=z,t(c,S),n(s)===null&&S===n(c)&&(x?(f(P),P=-1):x=!0,G(v,z-$))):(S.sortIndex=U,t(s,S),w||y||(w=!0,L(E))),S},e.unstable_shouldYield=ke,e.unstable_wrapCallback=function(S){var T=h;return function(){var z=h;h=T;try{return S.apply(this,arguments)}finally{h=z}}}})(Ns);_s.exports=Ns;var cf=_s.exports;/**
26 | * @license React
27 | * react-dom.production.min.js
28 | *
29 | * Copyright (c) Facebook, Inc. and its affiliates.
30 | *
31 | * This source code is licensed under the MIT license found in the
32 | * LICENSE file in the root directory of this source tree.
33 | */var ff=X,Ce=cf;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),po=Object.prototype.hasOwnProperty,df=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,lu={},ou={};function pf(e){return po.call(ou,e)?!0:po.call(lu,e)?!1:df.test(e)?ou[e]=!0:(lu[e]=!0,!1)}function hf(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function mf(e,t,n,r){if(t===null||typeof t>"u"||hf(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function he(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var ie={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ie[e]=new he(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ie[t]=new he(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ie[e]=new he(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ie[e]=new he(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ie[e]=new he(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ie[e]=new he(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ie[e]=new he(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ie[e]=new he(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ie[e]=new he(e,5,!1,e.toLowerCase(),null,!1,!1)});var ai=/[\-:]([a-z])/g;function ci(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ai,ci);ie[t]=new he(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ai,ci);ie[t]=new he(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ai,ci);ie[t]=new he(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ie[e]=new he(e,1,!1,e.toLowerCase(),null,!1,!1)});ie.xlinkHref=new he("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ie[e]=new he(e,1,!1,e.toLowerCase(),null,!0,!0)});function fi(e,t,n,r){var l=ie.hasOwnProperty(t)?ie[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=`
37 | `+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{Hl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?In(e):""}function vf(e){switch(e.tag){case 5:return In(e.type);case 16:return In("Lazy");case 13:return In("Suspense");case 19:return In("SuspenseList");case 0:case 2:case 15:return e=Vl(e.type,!1),e;case 11:return e=Vl(e.type.render,!1),e;case 1:return e=Vl(e.type,!0),e;default:return""}}function go(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case qt:return"Fragment";case Jt:return"Portal";case ho:return"Profiler";case di:return"StrictMode";case mo:return"Suspense";case vo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ls:return(e.displayName||"Context")+".Consumer";case Ts:return(e._context.displayName||"Context")+".Provider";case pi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case hi:return t=e.displayName||null,t!==null?t:go(e.type)||"Memo";case ct:t=e._payload,e=e._init;try{return go(e(t))}catch{}}return null}function gf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return go(t);case 8:return t===di?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Ct(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Rs(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yf(e){var t=Rs(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Sr(e){e._valueTracker||(e._valueTracker=yf(e))}function Ms(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Rs(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Jr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function yo(e,t){var n=t.checked;return K({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function uu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Ct(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Ds(e,t){t=t.checked,t!=null&&fi(e,"checked",t,!1)}function wo(e,t){Ds(e,t);var n=Ct(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ko(e,t.type,n):t.hasOwnProperty("defaultValue")&&ko(e,t.type,Ct(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function su(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ko(e,t,n){(t!=="number"||Jr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var On=Array.isArray;function cn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=xr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Xn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Bn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wf=["Webkit","ms","Moz","O"];Object.keys(Bn).forEach(function(e){wf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Bn[t]=Bn[e]})});function As(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Bn.hasOwnProperty(e)&&Bn[e]?(""+t).trim():t+"px"}function Bs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=As(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var kf=K({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Eo(e,t){if(t){if(kf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(g(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(g(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(g(61))}if(t.style!=null&&typeof t.style!="object")throw Error(g(62))}}function Co(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var _o=null;function mi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var No=null,fn=null,dn=null;function fu(e){if(e=pr(e)){if(typeof No!="function")throw Error(g(280));var t=e.stateNode;t&&(t=Nl(t),No(e.stateNode,e.type,t))}}function Fs(e){fn?dn?dn.push(e):dn=[e]:fn=e}function $s(){if(fn){var e=fn,t=dn;if(dn=fn=null,fu(e),t)for(e=0;e>>=0,e===0?32:31-(Rf(e)/Mf|0)|0}var Er=64,Cr=4194304;function jn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function tl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=jn(u):(o&=i,o!==0&&(r=jn(o)))}else i=n&~l,i!==0?r=jn(i):o!==0&&(r=jn(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function fr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ue(t),e[t]=n}function jf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=$n),ku=" ",Su=!1;function ia(e,t){switch(e){case"keyup":return cd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ua(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var bt=!1;function dd(e,t){switch(e){case"compositionend":return ua(t);case"keypress":return t.which!==32?null:(Su=!0,ku);case"textInput":return e=t.data,e===ku&&Su?null:e;default:return null}}function pd(e,t){if(bt)return e==="compositionend"||!Ei&&ia(e,t)?(e=la(),Ur=ki=ht=null,bt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=_u(n)}}function fa(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?fa(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function da(){for(var e=window,t=Jr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Jr(e.document)}return t}function Ci(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function xd(e){var t=da(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fa(n.ownerDocument.documentElement,n)){if(r!==null&&Ci(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=Nu(n,o);var i=Nu(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,en=null,Mo=null,Hn=null,Do=!1;function Pu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Do||en==null||en!==Jr(r)||(r=en,"selectionStart"in r&&Ci(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Hn&&er(Hn,r)||(Hn=r,r=ll(Mo,"onSelect"),0rn||(e.current=Fo[rn],Fo[rn]=null,rn--)}function A(e,t){rn++,Fo[rn]=e.current,e.current=t}var _t={},ce=Pt(_t),ge=Pt(!1),Vt=_t;function gn(e,t){var n=e.type.contextTypes;if(!n)return _t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function ye(e){return e=e.childContextTypes,e!=null}function il(){F(ge),F(ce)}function Iu(e,t,n){if(ce.current!==_t)throw Error(g(168));A(ce,t),A(ge,n)}function Sa(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(g(108,gf(e)||"Unknown",l));return K({},n,r)}function ul(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_t,Vt=ce.current,A(ce,e),A(ge,ge.current),!0}function Ou(e,t,n){var r=e.stateNode;if(!r)throw Error(g(169));n?(e=Sa(e,t,Vt),r.__reactInternalMemoizedMergedChildContext=e,F(ge),F(ce),A(ce,e)):F(ge),A(ge,n)}var be=null,Pl=!1,ro=!1;function xa(e){be===null?be=[e]:be.push(e)}function Id(e){Pl=!0,xa(e)}function Tt(){if(!ro&&be!==null){ro=!0;var e=0,t=j;try{var n=be;for(j=1;e>=i,l-=i,et=1<<32-Ue(t)+l|n<P?(V=N,N=null):V=N.sibling;var R=h(f,N,d[P],v);if(R===null){N===null&&(N=V);break}e&&N&&R.alternate===null&&t(f,N),a=o(R,a,P),_===null?E=R:_.sibling=R,_=R,N=V}if(P===d.length)return n(f,N),H&&jt(f,P),E;if(N===null){for(;PP?(V=N,N=null):V=N.sibling;var ke=h(f,N,R.value,v);if(ke===null){N===null&&(N=V);break}e&&N&&ke.alternate===null&&t(f,N),a=o(ke,a,P),_===null?E=ke:_.sibling=ke,_=ke,N=V}if(R.done)return n(f,N),H&&jt(f,P),E;if(N===null){for(;!R.done;P++,R=d.next())R=m(f,R.value,v),R!==null&&(a=o(R,a,P),_===null?E=R:_.sibling=R,_=R);return H&&jt(f,P),E}for(N=r(f,N);!R.done;P++,R=d.next())R=y(N,f,P,R.value,v),R!==null&&(e&&R.alternate!==null&&N.delete(R.key===null?P:R.key),a=o(R,a,P),_===null?E=R:_.sibling=R,_=R);return e&&N.forEach(function(Rt){return t(f,Rt)}),H&&jt(f,P),E}function I(f,a,d,v){if(typeof d=="object"&&d!==null&&d.type===qt&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case kr:e:{for(var E=d.key,_=a;_!==null;){if(_.key===E){if(E=d.type,E===qt){if(_.tag===7){n(f,_.sibling),a=l(_,d.props.children),a.return=f,f=a;break e}}else if(_.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===ct&&Bu(E)===_.type){n(f,_.sibling),a=l(_,d.props),a.ref=Rn(f,_,d),a.return=f,f=a;break e}n(f,_);break}else t(f,_);_=_.sibling}d.type===qt?(a=Ht(d.props.children,f.mode,v,d.key),a.return=f,f=a):(v=Yr(d.type,d.key,d.props,null,f.mode,v),v.ref=Rn(f,a,d),v.return=f,f=v)}return i(f);case Jt:e:{for(_=d.key;a!==null;){if(a.key===_)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){n(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{n(f,a);break}else t(f,a);a=a.sibling}a=fo(d,f.mode,v),a.return=f,f=a}return i(f);case ct:return _=d._init,I(f,a,_(d._payload),v)}if(On(d))return w(f,a,d,v);if(Nn(d))return x(f,a,d,v);Rr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(n(f,a.sibling),a=l(a,d),a.return=f,f=a):(n(f,a),a=co(d,f.mode,v),a.return=f,f=a),i(f)):n(f,a)}return I}var wn=Na(!0),Pa=Na(!1),cl=Pt(null),fl=null,un=null,Ti=null;function Li(){Ti=un=fl=null}function zi(e){var t=cl.current;F(cl),e._currentValue=t}function Ho(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function hn(e,t){fl=e,Ti=un=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(ve=!0),e.firstContext=null)}function Ie(e){var t=e._currentValue;if(Ti!==e)if(e={context:e,memoizedValue:t,next:null},un===null){if(fl===null)throw Error(g(308));un=e,fl.dependencies={lanes:0,firstContext:e}}else un=un.next=e;return t}var Ft=null;function Ri(e){Ft===null?Ft=[e]:Ft.push(e)}function Ta(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Ri(t)):(n.next=l.next,l.next=n),t.interleaved=n,ot(e,r)}function ot(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var ft=!1;function Mi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function La(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function nt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function kt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,O&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,ot(e,n)}return l=r.interleaved,l===null?(t.next=t,Ri(r)):(t.next=l.next,l.next=t),r.interleaved=t,ot(e,n)}function Vr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,gi(e,n)}}function Fu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=i:o=o.next=i,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function dl(e,t,n,r){var l=e.updateQueue;ft=!1;var o=l.firstBaseUpdate,i=l.lastBaseUpdate,u=l.shared.pending;if(u!==null){l.shared.pending=null;var s=u,c=s.next;s.next=null,i===null?o=c:i.next=c,i=s;var p=e.alternate;p!==null&&(p=p.updateQueue,u=p.lastBaseUpdate,u!==i&&(u===null?p.firstBaseUpdate=c:u.next=c,p.lastBaseUpdate=s))}if(o!==null){var m=l.baseState;i=0,p=c=s=null,u=o;do{var h=u.lane,y=u.eventTime;if((r&h)===h){p!==null&&(p=p.next={eventTime:y,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var w=e,x=u;switch(h=t,y=n,x.tag){case 1:if(w=x.payload,typeof w=="function"){m=w.call(y,m,h);break e}m=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=x.payload,h=typeof w=="function"?w.call(y,m,h):w,h==null)break e;m=K({},m,h);break e;case 2:ft=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,h=l.effects,h===null?l.effects=[u]:h.push(u))}else y={eventTime:y,lane:h,tag:u.tag,payload:u.payload,callback:u.callback,next:null},p===null?(c=p=y,s=m):p=p.next=y,i|=h;if(u=u.next,u===null){if(u=l.shared.pending,u===null)break;h=u,u=h.next,h.next=null,l.lastBaseUpdate=h,l.shared.pending=null}}while(!0);if(p===null&&(s=m),l.baseState=s,l.firstBaseUpdate=c,l.lastBaseUpdate=p,t=l.shared.interleaved,t!==null){l=t;do i|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);Kt|=i,e.lanes=i,e.memoizedState=m}}function $u(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=oo.transition;oo.transition={};try{e(!1),t()}finally{j=n,oo.transition=r}}function Ka(){return Oe().memoizedState}function Bd(e,t,n){var r=xt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ga(e))Xa(t,n);else if(n=Ta(e,t,n,r),n!==null){var l=de();He(n,e,r,l),Ya(n,t,r)}}function Fd(e,t,n){var r=xt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ga(e))Xa(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Ve(u,i)){var s=t.interleaved;s===null?(l.next=l,Ri(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Ta(e,t,l,r),n!==null&&(l=de(),He(n,e,r,l),Ya(n,t,r))}}function Ga(e){var t=e.alternate;return e===W||t!==null&&t===W}function Xa(e,t){Vn=hl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ya(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,gi(e,n)}}var ml={readContext:Ie,useCallback:ue,useContext:ue,useEffect:ue,useImperativeHandle:ue,useInsertionEffect:ue,useLayoutEffect:ue,useMemo:ue,useReducer:ue,useRef:ue,useState:ue,useDebugValue:ue,useDeferredValue:ue,useTransition:ue,useMutableSource:ue,useSyncExternalStore:ue,useId:ue,unstable_isNewReconciler:!1},$d={readContext:Ie,useCallback:function(e,t){return We().memoizedState=[e,t===void 0?null:t],e},useContext:Ie,useEffect:Hu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Wr(4194308,4,Ua.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Wr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Wr(4,2,e,t)},useMemo:function(e,t){var n=We();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=We();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Bd.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=We();return e={current:e},t.memoizedState=e},useState:Uu,useDebugValue:$i,useDeferredValue:function(e){return We().memoizedState=e},useTransition:function(){var e=Uu(!1),t=e[0];return e=Ad.bind(null,e[1]),We().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=W,l=We();if(H){if(n===void 0)throw Error(g(407));n=n()}else{if(n=t(),te===null)throw Error(g(349));Wt&30||Da(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Hu(Oa.bind(null,r,o,e),[e]),r.flags|=2048,sr(9,Ia.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=We(),t=te.identifierPrefix;if(H){var n=tt,r=et;n=(r&~(1<<32-Ue(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ir++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ke]=t,e[rr]=r,oc(e,t,!1,!1),t.stateNode=e;e:{switch(i=Co(n,r),n){case"dialog":B("cancel",e),B("close",e),l=r;break;case"iframe":case"object":case"embed":B("load",e),l=r;break;case"video":case"audio":for(l=0;lxn&&(t.flags|=128,r=!0,Mn(o,!1),t.lanes=4194304)}else{if(!r)if(e=pl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Mn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!H)return se(t),null}else 2*Z()-o.renderingStartTime>xn&&n!==1073741824&&(t.flags|=128,r=!0,Mn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Z(),t.sibling=null,n=Q.current,A(Q,r?n&1|2:n&1),t):(se(t),null);case 22:case 23:return Ki(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Se&1073741824&&(se(t),t.subtreeFlags&6&&(t.flags|=8192)):se(t),null;case 24:return null;case 25:return null}throw Error(g(156,t.tag))}function Xd(e,t){switch(Ni(t),t.tag){case 1:return ye(t.type)&&il(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return kn(),F(ge),F(ce),Oi(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ii(t),null;case 13:if(F(Q),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(g(340));yn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return F(Q),null;case 4:return kn(),null;case 10:return zi(t.type._context),null;case 22:case 23:return Ki(),null;case 24:return null;default:return null}}var Dr=!1,ae=!1,Yd=typeof WeakSet=="function"?WeakSet:Set,C=null;function sn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Y(e,t,r)}else n.current=null}function Jo(e,t,n){try{n()}catch(r){Y(e,t,r)}}var bu=!1;function Zd(e,t){if(Io=nl,e=da(),Ci(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,c=0,p=0,m=e,h=null;t:for(;;){for(var y;m!==n||l!==0&&m.nodeType!==3||(u=i+l),m!==o||r!==0&&m.nodeType!==3||(s=i+r),m.nodeType===3&&(i+=m.nodeValue.length),(y=m.firstChild)!==null;)h=m,m=y;for(;;){if(m===e)break t;if(h===n&&++c===l&&(u=i),h===o&&++p===r&&(s=i),(y=m.nextSibling)!==null)break;m=h,h=m.parentNode}m=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Oo={focusedElem:e,selectionRange:n},nl=!1,C=t;C!==null;)if(t=C,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,C=e;else for(;C!==null;){t=C;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var x=w.memoizedProps,I=w.memoizedState,f=t.stateNode,a=f.getSnapshotBeforeUpdate(t.elementType===t.type?x:Ae(t.type,x),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(g(163))}}catch(v){Y(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,C=e;break}C=t.return}return w=bu,bu=!1,w}function Qn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Jo(t,n,o)}l=l.next}while(l!==r)}}function zl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function qo(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function sc(e){var t=e.alternate;t!==null&&(e.alternate=null,sc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ke],delete t[rr],delete t[Bo],delete t[Md],delete t[Dd])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ac(e){return e.tag===5||e.tag===3||e.tag===4}function es(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ac(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function bo(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ol));else if(r!==4&&(e=e.child,e!==null))for(bo(e,t,n),e=e.sibling;e!==null;)bo(e,t,n),e=e.sibling}function ei(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(ei(e,t,n),e=e.sibling;e!==null;)ei(e,t,n),e=e.sibling}var re=null,Be=!1;function st(e,t,n){for(n=n.child;n!==null;)cc(e,t,n),n=n.sibling}function cc(e,t,n){if(Ye&&typeof Ye.onCommitFiberUnmount=="function")try{Ye.onCommitFiberUnmount(xl,n)}catch{}switch(n.tag){case 5:ae||sn(n,t);case 6:var r=re,l=Be;re=null,st(e,t,n),re=r,Be=l,re!==null&&(Be?(e=re,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):re.removeChild(n.stateNode));break;case 18:re!==null&&(Be?(e=re,n=n.stateNode,e.nodeType===8?no(e.parentNode,n):e.nodeType===1&&no(e,n),qn(e)):no(re,n.stateNode));break;case 4:r=re,l=Be,re=n.stateNode.containerInfo,Be=!0,st(e,t,n),re=r,Be=l;break;case 0:case 11:case 14:case 15:if(!ae&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Jo(n,t,i),l=l.next}while(l!==r)}st(e,t,n);break;case 1:if(!ae&&(sn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Y(n,t,u)}st(e,t,n);break;case 21:st(e,t,n);break;case 22:n.mode&1?(ae=(r=ae)||n.memoizedState!==null,st(e,t,n),ae=r):st(e,t,n);break;default:st(e,t,n)}}function ts(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Yd),t.forEach(function(r){var l=op.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function je(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=Z()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*qd(r/1960))-r,10e?16:e,mt===null)var r=!1;else{if(e=mt,mt=null,yl=0,O&6)throw Error(g(331));var l=O;for(O|=4,C=e.current;C!==null;){var o=C,i=o.child;if(C.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sZ()-Qi?Ut(e,0):Vi|=n),we(e,t)}function yc(e,t){t===0&&(e.mode&1?(t=Cr,Cr<<=1,!(Cr&130023424)&&(Cr=4194304)):t=1);var n=de();e=ot(e,t),e!==null&&(fr(e,t,n),we(e,n))}function lp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),yc(e,n)}function op(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(g(314))}r!==null&&r.delete(t),yc(e,n)}var wc;wc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ge.current)ve=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ve=!1,Kd(e,t,n);ve=!!(e.flags&131072)}else ve=!1,H&&t.flags&1048576&&Ea(t,al,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Kr(e,t),e=t.pendingProps;var l=gn(t,ce.current);hn(t,n),l=Ai(null,t,r,e,l,n);var o=Bi();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ye(r)?(o=!0,ul(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Mi(t),l.updater=Ll,t.stateNode=l,l._reactInternals=t,Qo(t,r,e,n),t=Go(null,t,r,!0,o,n)):(t.tag=0,H&&o&&_i(t),fe(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Kr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=up(r),e=Ae(r,e),l){case 0:t=Ko(null,t,r,e,n);break e;case 1:t=Zu(null,t,r,e,n);break e;case 11:t=Xu(null,t,r,e,n);break e;case 14:t=Yu(null,t,r,Ae(r.type,e),n);break e}throw Error(g(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ae(r,l),Ko(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ae(r,l),Zu(e,t,r,l,n);case 3:e:{if(nc(t),e===null)throw Error(g(387));r=t.pendingProps,o=t.memoizedState,l=o.element,La(e,t),dl(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Sn(Error(g(423)),t),t=Ju(e,t,r,n,l);break e}else if(r!==l){l=Sn(Error(g(424)),t),t=Ju(e,t,r,n,l);break e}else for(xe=wt(t.stateNode.containerInfo.firstChild),Ee=t,H=!0,Fe=null,n=Pa(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(yn(),r===l){t=it(e,t,n);break e}fe(e,t,r,n)}t=t.child}return t;case 5:return za(t),e===null&&Uo(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,jo(r,l)?i=null:o!==null&&jo(r,o)&&(t.flags|=32),tc(e,t),fe(e,t,i,n),t.child;case 6:return e===null&&Uo(t),null;case 13:return rc(e,t,n);case 4:return Di(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=wn(t,null,r,n):fe(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ae(r,l),Xu(e,t,r,l,n);case 7:return fe(e,t,t.pendingProps,n),t.child;case 8:return fe(e,t,t.pendingProps.children,n),t.child;case 12:return fe(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,A(cl,r._currentValue),r._currentValue=i,o!==null)if(Ve(o.value,i)){if(o.children===l.children&&!ge.current){t=it(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=nt(-1,n&-n),s.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var p=c.pending;p===null?s.next=s:(s.next=p.next,p.next=s),c.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ho(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(g(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ho(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}fe(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,hn(t,n),l=Ie(l),r=r(l),t.flags|=1,fe(e,t,r,n),t.child;case 14:return r=t.type,l=Ae(r,t.pendingProps),l=Ae(r.type,l),Yu(e,t,r,l,n);case 15:return ba(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ae(r,l),Kr(e,t),t.tag=1,ye(r)?(e=!0,ul(t)):e=!1,hn(t,n),Za(t,r,l),Qo(t,r,l,n),Go(null,t,r,!0,e,n);case 19:return lc(e,t,n);case 22:return ec(e,t,n)}throw Error(g(156,t.tag))};function kc(e,t){return Gs(e,t)}function ip(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Me(e,t,n,r){return new ip(e,t,n,r)}function Xi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function up(e){if(typeof e=="function")return Xi(e)?1:0;if(e!=null){if(e=e.$$typeof,e===pi)return 11;if(e===hi)return 14}return 2}function Et(e,t){var n=e.alternate;return n===null?(n=Me(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Yr(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Xi(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case qt:return Ht(n.children,l,o,t);case di:i=8,l|=8;break;case ho:return e=Me(12,n,t,l|2),e.elementType=ho,e.lanes=o,e;case mo:return e=Me(13,n,t,l),e.elementType=mo,e.lanes=o,e;case vo:return e=Me(19,n,t,l),e.elementType=vo,e.lanes=o,e;case zs:return Ml(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ts:i=10;break e;case Ls:i=9;break e;case pi:i=11;break e;case hi:i=14;break e;case ct:i=16,r=null;break e}throw Error(g(130,e==null?e:typeof e,""))}return t=Me(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Ht(e,t,n,r){return e=Me(7,e,r,t),e.lanes=n,e}function Ml(e,t,n,r){return e=Me(22,e,r,t),e.elementType=zs,e.lanes=n,e.stateNode={isHidden:!1},e}function co(e,t,n){return e=Me(6,e,null,t),e.lanes=n,e}function fo(e,t,n){return t=Me(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function sp(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wl(0),this.expirationTimes=Wl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Yi(e,t,n,r,l,o,i,u,s){return e=new sp(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Me(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Mi(o),e}function ap(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Cc)}catch(e){console.error(e)}}Cc(),Cs.exports=_e;var hp=Cs.exports,_c,as=hp;_c=as.createRoot,as.hydrateRoot;/**
41 | * @license lucide-react v0.439.0 - ISC
42 | *
43 | * This source code is licensed under the ISC license.
44 | * See the LICENSE file in the root directory of this source tree.
45 | */const mp=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Nc=(...e)=>e.filter((t,n,r)=>!!t&&r.indexOf(t)===n).join(" ");/**
46 | * @license lucide-react v0.439.0 - ISC
47 | *
48 | * This source code is licensed under the ISC license.
49 | * See the LICENSE file in the root directory of this source tree.
50 | */var vp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
51 | * @license lucide-react v0.439.0 - ISC
52 | *
53 | * This source code is licensed under the ISC license.
54 | * See the LICENSE file in the root directory of this source tree.
55 | */const gp=X.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:l="",children:o,iconNode:i,...u},s)=>X.createElement("svg",{ref:s,...vp,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:Nc("lucide",l),...u},[...i.map(([c,p])=>X.createElement(c,p)),...Array.isArray(o)?o:[o]]));/**
56 | * @license lucide-react v0.439.0 - ISC
57 | *
58 | * This source code is licensed under the ISC license.
59 | * See the LICENSE file in the root directory of this source tree.
60 | */const Lt=(e,t)=>{const n=X.forwardRef(({className:r,...l},o)=>X.createElement(gp,{ref:o,iconNode:t,className:Nc(`lucide-${mp(e)}`,r),...l}));return n.displayName=`${e}`,n};/**
61 | * @license lucide-react v0.439.0 - ISC
62 | *
63 | * This source code is licensed under the ISC license.
64 | * See the LICENSE file in the root directory of this source tree.
65 | */const cs=Lt("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/**
66 | * @license lucide-react v0.439.0 - ISC
67 | *
68 | * This source code is licensed under the ISC license.
69 | * See the LICENSE file in the root directory of this source tree.
70 | */const yp=Lt("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
71 | * @license lucide-react v0.439.0 - ISC
72 | *
73 | * This source code is licensed under the ISC license.
74 | * See the LICENSE file in the root directory of this source tree.
75 | */const wp=Lt("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/**
76 | * @license lucide-react v0.439.0 - ISC
77 | *
78 | * This source code is licensed under the ISC license.
79 | * See the LICENSE file in the root directory of this source tree.
80 | */const kp=Lt("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/**
81 | * @license lucide-react v0.439.0 - ISC
82 | *
83 | * This source code is licensed under the ISC license.
84 | * See the LICENSE file in the root directory of this source tree.
85 | */const Sp=Lt("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/**
86 | * @license lucide-react v0.439.0 - ISC
87 | *
88 | * This source code is licensed under the ISC license.
89 | * See the LICENSE file in the root directory of this source tree.
90 | */const xp=Lt("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/**
91 | * @license lucide-react v0.439.0 - ISC
92 | *
93 | * This source code is licensed under the ISC license.
94 | * See the LICENSE file in the root directory of this source tree.
95 | */const Ep=Lt("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/**
96 | * @license lucide-react v0.439.0 - ISC
97 | *
98 | * This source code is licensed under the ISC license.
99 | * See the LICENSE file in the root directory of this source tree.
100 | */const Cp=Lt("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),_p="data:image/svg+xml,%3c?xml%20version='1.0'%20?%3e%3csvg%20class='main-header__logo-image'%20fill='%23A1A1A1'%20role='presentation'%20viewBox='0%200%20435.97%20173.13'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M206.2,84.58v50.75H190.1V10h42.7a38.61,38.61,0,0,1,27.65,10.85A34.88,34.88,0,0,1,272,47.3a34.72,34.72,0,0,1-11.55,26.6q-11.2,10.68-27.65,10.67H206.2Zm0-59.15V69.18h27a21.28,21.28,0,0,0,15.93-6.48,21.36,21.36,0,0,0,0-30.63,21,21,0,0,0-15.93-6.65h-27Z'%20fill='%235f6368'/%3e%3cpath%20d='M309.1,46.78q17.85,0,28.18,9.54T347.6,82.48v52.85H332.2v-11.9h-.7q-10,14.7-26.6,14.7-14.17,0-23.71-8.4a26.82,26.82,0,0,1-9.54-21q0-13.31,10.06-21.17t26.86-7.88q14.34,0,23.62,5.25V81.25A18.33,18.33,0,0,0,325.54,67,22.8,22.8,0,0,0,310,61.13q-13.49,0-21.35,11.38l-14.18-8.93Q286.17,46.78,309.1,46.78Zm-20.83,62.3a12.86,12.86,0,0,0,5.34,10.5,19.64,19.64,0,0,0,12.51,4.2,25.67,25.67,0,0,0,18.11-7.52q8-7.53,8-17.67-7.53-6-21-6-9.81,0-16.36,4.73C290.46,100.52,288.27,104.41,288.27,109.08Z'%20fill='%235f6368'/%3e%3cpath%20d='M436,49.58,382.24,173.13H365.62l19.95-43.23L350.22,49.58h17.5l25.55,61.6h.35l24.85-61.6Z'%20fill='%235f6368'/%3e%3cpath%20d='M141.14,73.64A85.79,85.79,0,0,0,139.9,59H72V86.73h38.89a33.33,33.33,0,0,1-14.38,21.88v18h23.21C133.31,114.08,141.14,95.55,141.14,73.64Z'%20fill='%234285f4'/%3e%3cpath%20d='M72,144c19.43,0,35.79-6.38,47.72-17.38l-23.21-18C90.05,113,81.73,115.5,72,115.5c-18.78,0-34.72-12.66-40.42-29.72H7.67v18.55A72,72,0,0,0,72,144Z'%20fill='%2334a853'/%3e%3cpath%20d='M31.58,85.78a43.14,43.14,0,0,1,0-27.56V39.67H7.67a72,72,0,0,0,0,64.66Z'%20fill='%23fbbc04'/%3e%3cpath%20d='M72,28.5A39.09,39.09,0,0,1,99.62,39.3h0l20.55-20.55A69.18,69.18,0,0,0,72,0,72,72,0,0,0,7.67,39.67L31.58,58.22C37.28,41.16,53.22,28.5,72,28.5Z'%20fill='%23ea4335'/%3e%3c/svg%3e",Np="data:image/svg+xml,%3c?xml%20version='1.0'%20?%3e%3csvg%20class='main-header__logo-image'%20fill='%23A1A1A1'%20role='presentation'%20viewBox='0%200%20435.97%20173.13'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M206.2,84.58v50.75H190.1V10h42.7a38.61,38.61,0,0,1,27.65,10.85A34.88,34.88,0,0,1,272,47.3a34.72,34.72,0,0,1-11.55,26.6q-11.2,10.68-27.65,10.67H206.2Zm0-59.15V69.18h27a21.28,21.28,0,0,0,15.93-6.48,21.36,21.36,0,0,0,0-30.63,21,21,0,0,0-15.93-6.65h-27Z'%20fill='%23fff'/%3e%3cpath%20d='M309.1,46.78q17.85,0,28.18,9.54T347.6,82.48v52.85H332.2v-11.9h-.7q-10,14.7-26.6,14.7-14.17,0-23.71-8.4a26.82,26.82,0,0,1-9.54-21q0-13.31,10.06-21.17t26.86-7.88q14.34,0,23.62,5.25V81.25A18.33,18.33,0,0,0,325.54,67,22.8,22.8,0,0,0,310,61.13q-13.49,0-21.35,11.38l-14.18-8.93Q286.17,46.78,309.1,46.78Zm-20.83,62.3a12.86,12.86,0,0,0,5.34,10.5,19.64,19.64,0,0,0,12.51,4.2,25.67,25.67,0,0,0,18.11-7.52q8-7.53,8-17.67-7.53-6-21-6-9.81,0-16.36,4.73C290.46,100.52,288.27,104.41,288.27,109.08Z'%20fill='%23fff'/%3e%3cpath%20d='M436,49.58,382.24,173.13H365.62l19.95-43.23L350.22,49.58h17.5l25.55,61.6h.35l24.85-61.6Z'%20fill='%23fff'/%3e%3cpath%20d='M141.14,73.64A85.79,85.79,0,0,0,139.9,59H72V86.73h38.89a33.33,33.33,0,0,1-14.38,21.88v18h23.21C133.31,114.08,141.14,95.55,141.14,73.64Z'%20fill='%234285f4'/%3e%3cpath%20d='M72,144c19.43,0,35.79-6.38,47.72-17.38l-23.21-18C90.05,113,81.73,115.5,72,115.5c-18.78,0-34.72-12.66-40.42-29.72H7.67v18.55A72,72,0,0,0,72,144Z'%20fill='%2334a853'/%3e%3cpath%20d='M31.58,85.78a43.14,43.14,0,0,1,0-27.56V39.67H7.67a72,72,0,0,0,0,64.66Z'%20fill='%23fbbc04'/%3e%3cpath%20d='M72,28.5A39.09,39.09,0,0,1,99.62,39.3h0l20.55-20.55A69.18,69.18,0,0,0,72,0,72,72,0,0,0,7.67,39.67L31.58,58.22C37.28,41.16,53.22,28.5,72,28.5Z'%20fill='%23ea4335'/%3e%3c/svg%3e";function Pp(){return k.jsxs("div",{className:"Security p-4 rounded-lg bg-gray-100 dark:bg-gray-700 mb-6",children:[k.jsx("h3",{className:"security-heading text-lg font-semibold mb-2 text-purple-800 dark:text-purple-300",children:"Security First"}),k.jsxs("ul",{className:"list-disc list-inside space-y-1",children:[k.jsx("li",{className:"text-black dark:text-gray-300",children:"No data leaves your system."}),k.jsxs("li",{className:"list-item items-center text-black dark:text-gray-300",children:[k.jsx("span",{children:"Source code is publicly available on"}),k.jsxs("a",{href:"https://github.com/RedeemApp/cc-billpay-upi-id",className:"text-purple-600 inline-flex dark:text-purple-300 hover:underline items-center ml-1 ",children:[k.jsx(kp,{className:"w-4 h-4 mr-1"}),k.jsx("span",{children:" GitHub."})]})]})]})]})}function Tp(){return k.jsxs("div",{className:"caution-label mb-6 rounded-lg border-2 border-red-400 dark:bg-red-900 dark:border-red-800 dark:text-red-100 p-4",children:[k.jsxs("div",{className:"caution-heading flex items-center gap-2",children:[k.jsx(Cp,{className:"h-6 w-6 mb-2 text-red-600 dark:text-white"}),k.jsx("div",{className:"text-lg font-bold mb-2 text-red-600 dark:text-white",children:"Caution:"})]}),k.jsx("div",{className:"caution-description text-sm text-red-600 dark:text-white",children:"Please note that these UPI IDs are generated with best effort and should be checked for accuracy before making any payment. We will not be held responsible for any losses incurred due to incorrect UPI IDs generated by this tool."})]})}const Lp=[{status:"working",bank:"Axis",format:"CC.91[10 digit mobile number][last 4 digits of card]@axisbank"},{status:"working",bank:"ICICI",format:"ccpay[16 digit card number]@icici"},{status:"working",bank:"AU Bank",format:"AUCC[10 digit mobile number][last 4 digits of card]@AUBANK"},{status:"working",bank:"IDFC",format:"[16 digit card number].cc@idfcbank"},{status:"working",bank:"AMEX",format:"AEBC[15 digit card number]@SC"},{status:"working",bank:"SBI",format:"Sbicard[16 digit card number]@SBI (Not working for me)"}];function zp(){return k.jsxs("div",{className:"generated-upi-formats overflow-x-auto",children:[k.jsx("div",{className:"text-xl font-bold text-purple-800 dark:text-purple-300",children:"UPI ID Formats:"}),k.jsxs("table",{className:"min-w-full border-collapse bg-white dark:bg-gray-800",children:[k.jsx("thead",{children:k.jsxs("tr",{children:[k.jsx("th",{className:"border-b-2 border-gray-400 dark:border-gray-700 p-4 text-left",children:"Bank"}),k.jsx("th",{className:"border-b-2 border-gray-400 dark:border-gray-700 p-4 text-left",children:"UPI Format"})]})}),k.jsx("tbody",{children:Lp.map((e,t)=>k.jsxs("tr",{children:[k.jsx("td",{className:"border-b dark:border-gray-700 p-4 font-medium dark:text-gray-300",children:e.bank}),k.jsx("td",{className:"border-b dark:border-gray-700 p-4 dark:text-gray-300",children:e.format})]},t))})]})]})}var Al={},Pc={exports:{}},Rp="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Mp=Rp,Dp=Mp;function Tc(){}function Lc(){}Lc.resetWarningCache=Tc;var Ip=function(){function e(r,l,o,i,u,s){if(s!==Dp){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Lc,resetWarningCache:Tc};return n.PropTypes=n,n};Pc.exports=Ip();var zc=Pc.exports,Rc={L:1,M:0,Q:3,H:2},Mc={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},Op=Mc;function Dc(e){this.mode=Op.MODE_8BIT_BYTE,this.data=e}Dc.prototype={getLength:function(e){return this.data.length},write:function(e){for(var t=0;t>>7-e%8&1)==1},put:function(e,t){for(var n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var Bp=Ic,$e={glog:function(e){if(e<1)throw new Error("glog("+e+")");return $e.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return $e.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var le=0;le<8;le++)$e.EXP_TABLE[le]=1<=0;)t^=ne.G15<=0;)t^=ne.G18<>>=1;return t},getPatternPosition:function(e){return ne.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,n){switch(e){case at.PATTERN000:return(t+n)%2==0;case at.PATTERN001:return t%2==0;case at.PATTERN010:return n%3==0;case at.PATTERN011:return(t+n)%3==0;case at.PATTERN100:return(Math.floor(t/2)+Math.floor(n/3))%2==0;case at.PATTERN101:return t*n%2+t*n%3==0;case at.PATTERN110:return(t*n%2+t*n%3)%2==0;case at.PATTERN111:return(t*n%3+(t+n)%2)%2==0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new fs([1],0),n=0;n5&&(n+=3+o-5)}for(var r=0;r=7&&this.setupTypeNumber(e),this.dataCache==null&&(this.dataCache=Xe.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)};Pe.setupPositionProbePattern=function(e,t){for(var n=-1;n<=7;n++)if(!(e+n<=-1||this.moduleCount<=e+n))for(var r=-1;r<=7;r++)t+r<=-1||this.moduleCount<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?this.modules[e+n][t+r]=!0:this.modules[e+n][t+r]=!1)};Pe.getBestMaskPattern=function(){for(var e=0,t=0,n=0;n<8;n++){this.makeImpl(!0,n);var r=zt.getLostPoint(this);(n==0||e>r)&&(e=r,t=n)}return t};Pe.createMovieClip=function(e,t,n){var r=e.createEmptyMovieClip(t,n),l=1;this.make();for(var o=0;o>n&1)==1;this.modules[Math.floor(n/3)][n%3+this.moduleCount-8-3]=r}for(var n=0;n<18;n++){var r=!e&&(t>>n&1)==1;this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r}};Pe.setupTypeInfo=function(e,t){for(var n=this.errorCorrectLevel<<3|t,r=zt.getBCHTypeInfo(n),l=0;l<15;l++){var o=!e&&(r>>l&1)==1;l<6?this.modules[l][8]=o:l<8?this.modules[l+1][8]=o:this.modules[this.moduleCount-15+l][8]=o}for(var l=0;l<15;l++){var o=!e&&(r>>l&1)==1;l<8?this.modules[8][this.moduleCount-l-1]=o:l<9?this.modules[8][15-l-1+1]=o:this.modules[8][15-l-1]=o}this.modules[this.moduleCount-8][8]=!e};Pe.mapData=function(e,t){for(var n=-1,r=this.moduleCount-1,l=7,o=0,i=this.moduleCount-1;i>0;i-=2)for(i==6&&i--;;){for(var u=0;u<2;u++)if(this.modules[r][i-u]==null){var s=!1;o>>l&1)==1);var c=zt.getMask(t,r,i-u);c&&(s=!s),this.modules[r][i-u]=s,l--,l==-1&&(o++,l=7)}if(r+=n,r<0||this.moduleCount<=r){r-=n,n=-n;break}}};Xe.PAD0=236;Xe.PAD1=17;Xe.createData=function(e,t,n){for(var r=Ac.getRSBlocks(e,t),l=new Bc,o=0;ou*8)throw new Error("code length overflow. ("+l.getLengthInBits()+">"+u*8+")");for(l.getLengthInBits()+4<=u*8&&l.put(0,4);l.getLengthInBits()%8!=0;)l.putBit(!1);for(;!(l.getLengthInBits()>=u*8||(l.put(Xe.PAD0,8),l.getLengthInBits()>=u*8));)l.put(Xe.PAD1,8);return Xe.createBytes(l,r)};Xe.createBytes=function(e,t){for(var n=0,r=0,l=0,o=new Array(t.length),i=new Array(t.length),u=0;u=0?y.get(w):0}}for(var x=0,p=0;p=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var Gp={bgColor:Le.default.oneOfType([Le.default.object,Le.default.string]).isRequired,bgD:Le.default.string.isRequired,fgColor:Le.default.oneOfType([Le.default.object,Le.default.string]).isRequired,fgD:Le.default.string.isRequired,size:Le.default.number.isRequired,title:Le.default.string,viewBoxSize:Le.default.number.isRequired,xmlns:Le.default.string},eu=(0,Fc.forwardRef)(function(e,t){var n=e.bgColor,r=e.bgD,l=e.fgD,o=e.fgColor,i=e.size,u=e.title,s=e.viewBoxSize,c=e.xmlns,p=c===void 0?"http://www.w3.org/2000/svg":c,m=Kp(e,["bgColor","bgD","fgD","fgColor","size","title","viewBoxSize","xmlns"]);return Ar.default.createElement("svg",Qp({},m,{height:i,ref:t,viewBox:"0 0 "+s+" "+s,width:i,xmlns:p}),u?Ar.default.createElement("title",null,u):null,Ar.default.createElement("path",{d:r,fill:n}),Ar.default.createElement("path",{d:l,fill:o}))});eu.displayName="QRCodeSvg";eu.propTypes=Gp;bi.default=eu;Object.defineProperty(Al,"__esModule",{value:!0});Al.QRCode=void 0;var Xp=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var l1={bgColor:Je.default.oneOfType([Je.default.object,Je.default.string]),fgColor:Je.default.oneOfType([Je.default.object,Je.default.string]),level:Je.default.string,size:Je.default.number,value:Je.default.string.isRequired},Bl=(0,Uc.forwardRef)(function(e,t){var n=e.bgColor,r=n===void 0?"#FFFFFF":n,l=e.fgColor,o=l===void 0?"#000000":l,i=e.level,u=i===void 0?"L":i,s=e.size,c=s===void 0?256:s,p=e.value,m=r1(e,["bgColor","fgColor","level","size","value"]),h=new bp.default(-1,Jp.default[u]);h.addData(p),h.make();var y=h.modules;return e1.default.createElement(n1.default,Xp({},m,{bgColor:r,bgD:y.map(function(w,x){return w.map(function(I,f){return I?"":"M "+f+" "+x+" l 1 0 0 1 -1 0 Z"}).join(" ")}).join(" "),fgColor:o,fgD:y.map(function(w,x){return w.map(function(I,f){return I?"M "+f+" "+x+" l 1 0 0 1 -1 0 Z":""}).join(" ")}).join(" "),ref:t,size:c,viewBoxSize:y.length}))});Al.QRCode=Bl;Bl.displayName="QRCode";Bl.propTypes=l1;var ds=Al.default=Bl;function o1(){const[e,t]=X.useState(!1),[n,r]=X.useState(""),[l,o]=X.useState(""),[i,u]=X.useState(!1),[s,c]=X.useState(!1),[p,m]=X.useState(null),[h,y]=X.useState([]),[w,x]=X.useState(!1),[I,f]=X.useState(null),[a,d]=X.useState(!1),[v,E]=X.useState({upiString:"",bank:"",upiId:""});function _(M,L){const G=`upi://pay?pa=${L}&pn=${M}&cu=INR`;E({upiString:G,bank:M,upiId:L}),d(!0)}function N(){d(!1)}X.useEffect(()=>{localStorage.getItem("theme")==="dark"?(t(!0),document.documentElement.classList.add("dark")):document.documentElement.classList.remove("dark")},[]);const P=()=>{const M=e?"light":"dark";t(!e),document.documentElement.classList.toggle("dark",!e),localStorage.setItem("theme",M)},V=M=>{M.toString().length<10?u(!0):u(!1),r(M.slice(0,10))},R=M=>{let L=0,G=!1;for(let S=M.length-1;S>=0;S--){let T=parseInt(M[S],10);G&&(T*=2,T>9&&(T-=9)),L+=T,G=!G}return L%10===0},ke=M=>{let L=M.replace(/\s+/g,"").replace(/[^0-9]/gi,""),G="";for(let U=0;U0&&U%4===0&&(G+=" "),G+=L[U];o(G);const S=L.length,T=S===15||S===16,z=T?R(L):!1;R(L)?console.log("true"):console.log("false");const $=Rt(L);$!=null?m($):(m(null),c(!0)),c(!z||!T)};function Rt(M){const L=parseInt(M.slice(0,2),10),G=parseInt(M.slice(0,6),10);return M[0]==="4"?"visa":L>=51&&L<=55||G>=2221&&G<=2720?"mastercard":L===34||L===37?"amex":L===36?"diners":L===60||L===65||L===81||L===82?"rupay":null}const Mt=()=>{const M=l.slice(-4),L={Axis:`CC.91${n}${M}@axisbank`,ICICI:`ccpay.${l.replace(/\s+/g,"")}@icici`,"AU Bank":`AUCC${n}${M}@AUBANK`,IDFC:`${l.replace(/\s+/g,"")}.cc@idfcbank`,AMEX:l.replace(/\s+/g,"").length===15?`AEBC${l.replace(/\s+/g,"")}@SC`:"Not applicable for 16-digit cards",SBI:`Sbicard.${l.replace(/\s+/g,"")}@SBI`},G=Object.entries(L).map(([S,T])=>({bank:S,upiId:T,strikethrough:S==="SBI",disabled:T.includes("Not applicable")||S==="SBI"}));y(G),x(!0)},vr=M=>{if(navigator.clipboard&&window.isSecureContext)navigator.clipboard.writeText(M).then(()=>f(M));else{const L=document.createElement("textarea");L.value=M,L.style.position="fixed",L.style.left="-9999px",document.body.appendChild(L),L.focus(),L.select();try{document.execCommand("copy"),f(M)}catch(G){console.error("Failed to copy UPI ID: ",G)}document.body.removeChild(L)}};return k.jsx("main",{className:"min-h-screen bg-gradient-to-br from-purple-100 to-indigo-200 dark:bg-gradient-to-br dark:from-purple-900 dark:to-indigo-900 flex items-center justify-center py-10",children:k.jsxs("div",{className:"container relative sm:mt-0 max-w-4xl bg-white dark:bg-gray-800 dark:text-gray-100 p-8 rounded-lg overflow-auto",children:[k.jsxs("div",{className:"flex justify-between items-center mb-6",children:[k.jsxs("div",{className:"flex items-center",children:[k.jsx("img",{className:"mr-2 w-8 h-8 sm:w-12 sm:h-12",src:"upi.svg",alt:"UPI logo"}),k.jsx("div",{className:"heading sm:text-2xl font-bold text-purple-800 dark:text-purple-300",children:"Pay Your Credit Card Balance via official UPI ID"})]}),k.jsx("button",{onClick:P,className:"p-2 rounded-full bg-gray-400 dark:bg-gray-600",children:e?k.jsx(Ep,{className:"text-yellow-400"}):k.jsx(Sp,{className:"text-black-400"})})]}),k.jsx("div",{className:"sub-heading sm:text-xl text-purple-600 dark:text-purple-300 mb-6",children:"An open-source and secure alternative to mainstream credit card balance payment apps."}),k.jsx(Pp,{}),k.jsxs("div",{className:"Form flex flex-col gap-4 sm:flex-row mb-6",children:[k.jsxs("div",{className:"smartphone-input flex items-center space-x-2 w-full sm:w-1/2 relative",children:[k.jsx(xp,{className:"text-purple-500 dark:text-purple-300 w-6 h-6 sm:w-8 sm:h-8"}),k.jsx("input",{type:"number",maxLength:10,value:n,placeholder:"Enter Phone Number",autoComplete:"tel",onChange:M=>V(M.target.value),className:"flex-grow w-4 px-3 py-2 border rounded-md dark:bg-gray-700 dark:text-gray-100 dark:border-gray-600 dark:focus:border-purple-400 dark:focus:ring-purple-400 bg-white text-black border-gray-300 focus:border-purple-500 focus:ring-purple-500 focus:outline-none focus:ring-1"}),i&&k.jsx(cs,{className:"absolute right-3 top-1/2 transform -translate-y-1/2 text-red-500 w-6 h-6"})]}),k.jsxs("div",{className:"creditcard-input flex items-center space-x-2 w-full sm:w-1/2 relative",children:[k.jsx(wp,{className:"text-purple-500 dark:text-purple-300 w-6 h-6 sm:w-8 sm:h-8"}),k.jsx("input",{type:"text",maxLength:19,value:l,placeholder:"Enter Credit Card Number",inputMode:"numeric",autoComplete:"cc-number",onChange:M=>ke(M.target.value),className:"flex-grow w-4 px-3 py-2 border rounded-md dark:bg-gray-700 dark:text-gray-100 dark:border-gray-600 dark:focus:border-purple-400 dark:focus:ring-purple-400 bg-white text-black border-gray-300 focus:border-purple-500 focus:ring-purple-500 focus:outline-none focus:ring-1"}),s?k.jsx(cs,{className:"absolute right-3 top-1/2 transform -translate-y-1/2 text-red-500 w-6 h-6"}):p&&k.jsx("img",{src:`src/assets/${p}.png`,alt:`${p} logo`,className:"absolute right-3 top-1/2 transform -translate-y-1/2 w-8 h-8"})]})]}),k.jsx("button",{onClick:Mt,className:"generate-btn w-full mb-6 rounded-lg p-3 dark:bg-purple-600 dark:hover:bg-purple-700 bg-purple-600 hover:bg-purple-700 text-white dark:text-gray-100 transition-colors duration-200",children:"Generate UPI IDs"}),k.jsxs("div",{className:"generated-upi-ids overflow-x-auto mb-16",children:[k.jsx("div",{className:"text-xl font-bold text-purple-800 dark:text-purple-300",children:"Generated UPI IDs:"}),w&&k.jsxs("table",{className:"min-w-full border-collapse bg-white dark:bg-gray-800 mt-6",children:[k.jsx("thead",{children:k.jsxs("tr",{children:[k.jsx("th",{className:"border-b-2 border-gray-400 dark:border-gray-700 p-4 text-left",children:"Bank"}),k.jsx("th",{className:"border-b-2 border-gray-400 dark:border-gray-700 p-4 text-left",children:"UPI ID"}),k.jsx("th",{className:"border-b-2 border-gray-400 dark:border-gray-700 p-4 text-left hidden md:table-cell",children:"QR code"})]})}),h.map(({bank:M,upiId:L,strikethrough:G,disabled:S})=>{const T=`upi://pay?pa=${L}&pn=${M}&cu=INR`;return k.jsxs("tr",{children:[k.jsx("td",{className:"border-b border-gray-400 dark:border-gray-700 p-4",children:M}),k.jsx("td",{className:"border-b border-gray-400 dark:border-gray-700 p-4",children:k.jsxs("div",{className:"flex flex-col sm:flex-row sm:justify-between",children:[k.jsxs("div",{className:`mb-2 mr-2 sm:mb-0 ${G?"line-through":""}`,children:[" ",L]}),k.jsxs("div",{className:"flex flex-wrap gap-2",children:[k.jsxs("button",{className:"rounded-md text-black border-2 border-gray-400 bg-white dark:text-gray-300 dark:bg-gray-600 dark:border-gray-600 dark:hover:bg-gray-600 flex items-center p-1",onClick:()=>vr(L),disabled:S,children:[k.jsx(yp,{className:"w-4 h-4 mr-1"})," ",I===L?"Copied":"Copy"]}),k.jsx("button",{className:"pay-btn rounded-md text-black border-2 border-gray-400 bg-white dark:text-gray-300 dark:bg-gray-600 dark:border-gray-600 dark:hover:bg-gray-600 flex items-center p-1",disabled:S,children:k.jsx("a",{href:`upi://pay?pa=${L}&pn=${M}&cu=INR`,children:k.jsx("img",{className:"w-10 mx-2",src:e?Np:_p,alt:"GPay Logo"})})})]})]})}),k.jsx("div",{className:"hidden md:table-cell",children:k.jsx("td",{className:"border-b border-gray-400 dark:border-gray-700 p-4",children:k.jsx("button",{onClick:()=>_(L,M),children:k.jsx(ds,{value:T,size:50})})})})]},M)})]})]}),k.jsx("div",{children:a&&k.jsxs("div",{id:"overlay",className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-50 bg-[rgb(185,185,185,0.97)] p-8 rounded-lg",children:[k.jsxs("div",{className:"space-y-4",children:[k.jsx("p",{className:"text-center",children:`${v.bank} / ${v.upiId}`}),k.jsx(ds,{value:v.upiString,size:300})]}),k.jsx("div",{className:"flex justify-center mt-4",children:k.jsx("button",{className:"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded",onClick:N,children:"Close"})})]})}),k.jsx(Tp,{}),k.jsx(zp,{})]})})}_c(document.getElementById("root")).render(k.jsx(X.StrictMode,{children:k.jsx(o1,{})}));
101 |
--------------------------------------------------------------------------------