diff --git a/.env.example b/.env.example index 4ad5456..3ded289 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,8 @@ +# --- Arbitrum Backend --- +VITE_ARBITRUM_API_URL=http://localhost:3000 +# --- Stellar Backend --- +VITE_STELLAR_API_URL=http://localhost:3001 +# --- Legacy (used as ARBITRUM fallback) --- VITE_API_URL=http://localhost:3000 VITE_WALLETCONNECT_PROJECT_ID="" VITE_USDC_ADDRESS="" @@ -7,8 +12,8 @@ VITE_ATTESTATION_REGISTRY="" VITE_TRUSTED_ISSUERS_REGISTRY="" VITE_IDENTITY_REGISTRY="" VITE_TOKEN_FACTORY="" -VITE_MOCK_METH="" -VITE_METH_FAUCET="" +VITE_MOCK_stARB="" +VITE_stARB_FAUCET="" VITE_MOCK_FLUXION_DEX="" VITE_FLUXION_INTEGRATION="" VITE_LEVERAGE_VAULT="" @@ -16,4 +21,11 @@ VITE_FAUCET="" VITE_SECONDARY_MARKET="" VITE_OAID="" VITE_SOLVENCY_VAULT="" -VITE_SENIOR_POOL="" \ No newline at end of file +VITE_SENIOR_POOL="" + +# --- Stellar Contracts & Config --- +VITE_STELLAR_PRIMARY_MARKET="" +VITE_STELLAR_YIELD_VAULT_ID="" +VITE_STELLAR_HORIZON_URL="https://horizon-testnet.stellar.org" +VITE_STELLAR_RPC_URL="https://soroban-testnet.stellar.org" +VITE_STELLAR_NETWORK_PASSPHRASE="Test SDF Network ; September 2015" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0ad8593..7253326 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,7 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist -dist-ssr + *.local # Editor directories and files @@ -30,10 +29,11 @@ dist-ssr # dependencies /node_modules +/scripts/* +./scripts/ # production /build -/dist .DS_Store # misc diff --git a/README.md b/README.md index 5bd5942..efc9de5 100644 --- a/README.md +++ b/README.md @@ -1,477 +1,254 @@ -``` text -________ _____ __ +```text + ________ _____ __ \_____ \ ______ ____ ____ / _ \ ______ ______ _____/ |_ ______ / | \\____ \_/ __ \ / \ / /_\ \ / ___// ___/_/ __ \\ __\/ ___/ / | \ |_| \ ___/| | \ / | \\___ \ \___ \ \ ___/| | \___ \ \_______ / __/ \___ ____| / \____|__ /____ _____ _ \___ ___| /____ \ - \/|__| \/ \/ \/ \/ \/ \/ \/ - + \/|__| \/ \/ \/ \/ \/ \/ \/ ``` -

-T O K E N I Z E • I N V E S T • T R A D E • B O R R O W • E A R N -

-

ALL IN ONE UNIFIED EXECUTION LAYER

- +

T O K E N I Z E • I N V E S T • T R A D E • B O R R O W • E A R N

+

ALL IN ONE UNIFIED EXECUTION LAYER FOR REAL-WORLD ASSETS

-**The premier Mantle-native gateway for Real-World Assets. Tokenize and invest in RWA invoices, leverage mETH for capital-efficient purchases, access universal credit via OAID, compose RWA into usable credit, trade freely in real value.** - ---- +## 🎥 Demo Walkthrough -
+[![YouTube](https://img.shields.io/badge/Watch_on-YouTube-red?style=for-the-badge&logo=youtube)](https://youtu.be/aWP3_nrwm84) -[![Website](https://img.shields.io/badge/Website-OpenAssets-652df2?style=for-the-badge&logo=googlechrome&logoColor=white)](https://www.openassets.xyz) -[![Docs](https://img.shields.io/badge/Documentation-Read-blue?style=for-the-badge&logo=notion&logoColor=white)](https://open-assets-core-proposal.notion.site/Open-Assets-Mantle-Network-2d5316cd01a780818164c5889beb1a19) -[![Twitter](https://img.shields.io/badge/X_Twitter-Follow-1DA1F2?style=for-the-badge&logo=x&logoColor=white)](https://x.com/TheOpenAssets) -[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/hKp6RTSp59) -[![Telegram](https://img.shields.io/badge/Telegram-Chat-26A6E2?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/the_open_assets) +[![OpenAssets Demo](https://img.youtube.com/vi/aWP3_nrwm84/maxresdefault.jpg)](https://youtu.be/aWP3_nrwm84) -
+**The unified gateway for Real-World Assets. Tokenize and invest in real-world financial instruments, leverage yield-bearing collateral for capital-efficient acquisition, access universal credit via decentralized identity, compose RWAs into usable credit, and trade freely in verifiable real value.** --- -![Hero](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Hero.png) +# Bridging the RWA Liquidity Gap + +From static ownership records to dynamic, credit-enabled financial primitives. --- -
-
- -

Bridging the RWA Liquidity Gap

-

From static records to dynamic, credit-enabled financial primitives.

-
+# The Problem: Structural Inefficiencies in RWA Markets ---- +The first generation of tokenized RWAs moved ownership on-chain but failed to solve critical challenges in liquidity, fairness, and composability. + +## 1. Opaque & Fragmented Discovery -## The Problem: Structural Inefficiencies in RWA +RWA offerings typically occur through isolated venues or closed systems. This leads to fragmented liquidity, inefficient pricing, and limited market access. -The first generation of tokenized Real-World Assets (RWAs) successfully moved ownership to the blockchain but failed to solve the **utility** and **fairness** challenges of high-frequency finance. +## 2. The Static Asset Problem -### 1 **Opaque & Fragmented Discovery** -Traditional RWA sales happen behind closed doors or via static listings. This leads to **fragmented liquidity** and **unfair pricing**, where retail participants have zero visibility into the true market demand for an asset. +Once acquired, tokenized RWAs often remain idle until maturity. They cannot be efficiently reused as collateral, leveraged, or composed into other financial strategies without moving across siloed systems. -### 2 **The "Static Asset" Paradox** -Currently, when a user buys a tokenized invoice, their capital is effectively "frozen" until maturity. The asset remains a dead weight in the wallet, unable to be used as collateral or leveraged without moving it to a specific, siloed lending protocol. +## 3. Yield Attribution Inefficiency -### 3 **Yield Sniping & Inequity** -Most on-chain yield models favor the **last holder**. If an investor holds an asset for 90% of its duration but sells just before settlement, they often lose 100% of the accrued yield to the buyer. This discourages secondary market liquidity and penalizes long-term holders. +Most systems allocate yield only to the current holder at settlement. This creates unfair outcomes where long-term holders lose accrued economic value if they transfer ownership before maturity. --- -## 💡 The Solution: The OpenAssets Unified Execution Layer +# The Solution: OpenAssets Unified Execution Layer -OpenAssets provides a deterministic lifecycle for RWAs on Mantle, ensuring every step—from issuance to settlement—is optimized for capital efficiency. +OpenAssets provides a deterministic lifecycle framework for RWAs, ensuring efficient issuance, trading, leverage, credit utilization, and settlement. -### **1 Canonical Tokenization** -> **Standardization at the Core** -> -> We transform off-chain cash flows into **ERC-3643 compliant** tokens. Every asset follows a strict, non-reversible state machine on Mantle, ensuring institutional-grade auditability from the moment of issuance. +--- -### **2 Hybrid Market Discovery** -> **Flexible Capital Formation** -> -> Originators can choose the best pricing strategy for their asset: -> * **Fixed-Price Listings:** Instant liquidity for standard, high-velocity invoices. -> * **Uniform-Price Auctions:** Fair price discovery for unique or large-cohort assets, ensuring all investors pay the same clearing price. +## 1. Canonical Tokenization -![TImeline](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Realfi.png) +**Standardized, compliant asset representation** -### **3 mETH-Powered Leverage** -> **Self-Amortizing Acquisition** -> -> Leveraging Mantle’s native **mETH**, users can acquire RWAs with high capital efficiency. The **native staking yield of mETH** is automatically harvested to service loan interest, allowing users to hold leveraged RWA positions with near zero out-of-pocket interest costs and at times earning even more. +Off-chain financial assets are transformed into compliant digital tokens using standardized tokenization frameworks. Each asset follows a deterministic lifecycle ensuring auditability, transparency, and verifiable ownership. +--- -### **4 OAID & Universal Credit** -> **Deposit Once, Borrow Everywhere** -> -> Your **Open Access ID (OAID)** acts as a universal credit identity. By decoupling collateral custody (Solvency Vault) from credit issuance, users can tap into multiple Mantle lending protocols and more using a single RWA collateral pool. No more moving assets, just portable, verifiable credit. +## 2. Hybrid Market Discovery -![TImeline](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Composable-Defi.png) +**Flexible capital formation mechanisms** -### **5 Time-Weighted Yield (Token-Days)** -> **Eliminating Yield Sniping** -> -> Our **Token-Day Engine** calculates yield entitlement down to the second. By tracking the duration of ownership, we ensure yield is distributed fairly between all past and present holders. This mathematically guarantees returns for your exact period of risk. +Originators can distribute assets using: -![TImeline](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Summary.png) +* Fixed-price listings for immediate liquidity +* Uniform-price auctions for fair price discovery + +This ensures efficient and transparent market formation. ---- -### **Data Management** -![TImeline](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Autonomous.png) --- -
- Issuance • Discovery • Leverage • Credit • Settlement -
+## 3. Yield-Bearing Collateral Leverage ---- -
- Built for the Mantle Network -
- -### Interactive Flow Map - **Note:** For a high-resolution, interactive version of this diagram with details for specific modules, please visit our
- [Official User Flow Documentation Page](https://www.openassets.xyz/how-it-works). -
- (Please open the system sitemap on the platform on the apex section.) - -```mermaid -flowchart TB; - %% ========================= - %% ENTRY POINT - %% ========================= - A[Landing Page] - F[Faucet] - M[Explore Marketplace] - G[Get Started] - I[Become an Issuer] - - A --> F - A --> M - A --> G - A --> I - - %% ========================= - %% AUTH & ROLE GATING - %% ========================= - AU[Wallet Authentication] - RS[Role Selection] - - G --> AU - M --> AU - - AU -->|New Wallet| RS - AU -->|Returning Wallet| MP[Marketplace Hub] - - RS --> INV[Register as Investor] - RS --> ISS[Register as Issuer] - - %% ISSUER FLOW - I --> ISS - IP[Issuer Profile] - AS[Submit Assets] - TK[Tokenization] - LIST[Asset Listed] - - ISS --> IP - IP --> AS - AS --> TK - TK --> LIST - - %% MARKETPLACE HUB - INV --> MP - MP --> H[Marketplace Hub] - - D[Asset Discovery] - P[Portfolio Tracking] - T[Secondary Trade] - B[Universal Borrow] - - H --> D - H --> P - H --> T - H --> B - - %% ASSET DISCOVERY & AUCTION - AD[Asset Detail Page] - AUCTION[Auction Listing] - BID[Place Bid] - AEND[Auction Ends] - REFUND[Bid Refunded] - - D -->|Fixed Price| AD - D -->|Auction| AUCTION - AUCTION --> BID - BID --> AEND - AEND -->|Successful| AD - AEND -->|Failed| REFUND - - %% BUY & LEVERAGE - BM[Buy Module] - U[USDC Buy] - L[mETH Buy] - LC[Collateral Locked] - LP[Leverage Position] - - AD --> BM - BM --> U - BM --> L - L --> LC - LC --> LP - - %% MAINTENANCE & LIQUIDATION - MAINT[Maintenance Loop] - HEALTH[Health Check] - LIQ[Liquidation] - REPAY1[Senior Pool Repaid] - RELEASE1[RWA Released] - - LP --> MAINT - MAINT --> HEALTH - HEALTH -->|Healthy| MAINT - HEALTH -->|Breach| LIQ - LIQ --> REPAY1 - REPAY1 --> RELEASE1 - - %% PORTFOLIO DETAILS - PA[Owned RWA] - PB[Auction Bids] - PL[Leveraged Positions] - LO[Active Loans] - PY[Yield History] - CLAIM[Claim Yield] - WALLET[USDC Received] - - P --> PA - P --> PB - P --> PL - P --> LO - P --> PY - PY --> CLAIM - CLAIM --> WALLET - - %% SECONDARY MARKET - SM[Secondary Marketplace] - BUY[Buy Tokens] - SELL[Sell Tokens] - YP[Yield Preserved] - - T --> SM - SM --> BUY - SM --> SELL - BUY --> YP - SELL --> YP - - %% BORROW & CREDIT - OA[OAID Activated] - CR[Available Credit] - AL[Active Loans] - BN[Native Borrow] - PC[Private Credit] - LOAN[Loan Active] - RESTORE[Credit Restored] - ENFORCE[Enforcement] - REPAY2[Lender Paid] - EXCESS[Excess Returned] - - B --> OA - OA --> CR - OA --> AL - CR --> BN - CR --> PC - BN --> LOAN - LOAN -->|Repays| RESTORE - LOAN -->|Default| ENFORCE - ENFORCE --> REPAY2 - REPAY2 --> EXCESS - - %% SYSTEM FEEDBACK - SETTLE[Asset Matures] - RECORD[Recorded] - DIST[Yield Sent] - NOTIF[Notifications] - - SETTLE --> RECORD - RECORD --> DIST - DIST --> PY - - MAINT --> NOTIF - AEND --> NOTIF - DIST --> NOTIF - LIQ --> NOTIF - RESTORE --> NOTIF - - %% CLASS ASSIGNMENTS - classDef entry fill:#f5f5f5,stroke:#555; - classDef hub fill:#e3f2fd,stroke:#1565c0; - classDef action fill:#e8f5e9,stroke:#2e7d32; - classDef finance fill:#fff8e1,stroke:#f9a825; - - class A,F,M,G,I entry; - class MP,H,D,P,T,B,SM hub; - class AU,RS,INV,ISS,IP,AS,TK,LIST,BID,AEND,MAINT,HEALTH,NOTIF action; - class AD,BM,U,L,LC,LP,LIQ,REPAY1,RELEASE1,PA,PB,PL,LO,PY,CLAIM,WALLET,BUY,SELL,YP finance; - class OA,CR,AL,BN,PC,LOAN,RESTORE,ENFORCE,REPAY2,EXCESS,SETTLE,RECORD,DIST finance; +**Self-optimizing capital efficiency** -``` +Users can leverage yield-bearing collateral to acquire RWAs. The yield generated from collateral can be automatically applied toward servicing borrowing costs, improving capital efficiency and reducing net financing cost. --- -
-
- TECHNICAL WALKTHROUGH -

Understand OpenAssets in Minutes

-

Guided demonstrations of our Mantle-native execution layer and RWA lifecycle.

-
+## 4. Universal Credit Layer (OAID) ---- +**Deposit once, access credit everywhere** + +The Open Access Identity (OAID) acts as a universal credit identity layer. -## The Infrastructure Layer +Key properties: -The OpenAssets Client is a **High-Fidelity State Interpreter**. It coordinates seamlessly with our Mantle-native smart contracts and a dedicated backend indexing layer to provide institutional-grade performance. +* Decoupled collateral custody and credit issuance +* Cross-protocol credit interoperability +* Unified collateral management +* Verifiable solvency and creditworthiness -* **Real-Time Sync:** Uses Redis-backed WebSockets to push live bid updates and health factor changes. -* **Trustless Data:** Critical financial metrics (LTV, Debt, Yield) are read directly from Mantle Sepolia. -* **Role-Based UX:** Optimized interfaces for both **Issuers** (Asset Tokenization) and **Investors** (Discovery & Credit). +This enables portable, composable credit without requiring asset transfers. --- -## Feature Demos & Walkthroughs +## 5. Time-Weighted Yield Engine (Token-Days) -We have curated a library of short, guided videos to demonstrate the core functionality of the protocol. +**Mathematically fair yield attribution** -You can find all the walkthroughs on our website at once interactive section here > [Walkthroughs](https://www.openassets.xyz/how-it-works) +Yield is distributed based on duration of ownership. -### 1 Onboarding & Discovery -| Module | Description | Watch Demo | -| :--- | :--- | :--- | -| **Authenticate** | Wallet-bound authentication and role-based onboarding. | [▶ View](https://www.youtube.com/watch?v=NzwJmR2Cf-c) | -| **Asset Registration** | Issuer flow for submitting and tokenizing real-world assets. | [▶ View](https://www.youtube.com/watch?v=NvWckbwETag) | -| **Marketplace** | Browsing RWA listings with transparent yield and risk metrics. | [▶ View](https://www.youtube.com/watch?v=ZIQv8VWyGm0) | +Properties: -### 2 Acquisition & Trading -| Module | Description | Watch Demo | -| :--- | :--- | :--- | -| **USDC Buy** | Direct purchase of tokenized RWA invoices. | [▶ View](https://www.youtube.com/watch?v=83KqrM6dhFs) | -| **Auction Bidding** | Participating in Uniform-Price Auctions for fair discovery. | [▶ View](https://www.youtube.com/watch?v=IB1VmpVxiXQ) | -| **Secondary Trade** | P2P trading while preserving time-weighted yield accrual. | [▶ View](https://youtu.be/f4UW6pApmhI) | +* Yield accrues continuously +* Ownership duration determines yield share +* Secondary trading does not erase accrued yield +* Fair distribution across all holders -### 3 Mantle-Native Innovation (Leverage & Credit) -| Module | Description | Watch Demo | -| :--- | :--- | :--- | -| **mETH Leverage** | Using mETH yield to service RWA acquisition interest. | [▶ View](https://youtu.be/c7CdBkcVZPQ) | -| **Credit Line** | Activating OAID to create credit lines against RWA collateral. | [▶ View](https://youtu.be/aFx4cktm_ss) | -| **Borrowing** | Drawing liquidity across native and partner protocols. | [▶ View](https://youtu.be/QY0fwxX2mTM) | -| **Repayment** | Restoring credit limits and reclaiming collateral. | [▶ View](https://youtu.be/NIzF8LUORrY) | +This eliminates yield extraction and aligns incentives. --- -## Portfolio & Health Monitoring +# System Lifecycle -The **OpenAssets Dashboard** provides a unified view of your entire RWA exposure. Users can track health metrics for leveraged positions in real-time, preventing liquidations through proactive mETH collateral management. Manage entire asset lifecycle, operations and keep a track of all your operations. - -* **Health Score:** Real-time LTV monitoring powered by mETH/USDC price feeds. -* **Yield History:** Transparent view of accrued "Token-Day" yield ready for claiming. -* **Portfolio Demo:** [▶ Watch the Overview](https://youtu.be/NtLOZqsX5U8) +Issuance → Discovery → Acquisition → Leverage → Credit → Trading → Settlement → Yield Distribution --- -### Our Journey -![TImeline](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Timeline.png) ---- -![Kraken](https://github.com/TheOpenAssets/TOA-Client-Mantle/blob/main/public/Changelog.png) ---- -Navigate our jouney through a series of commits, pushes, pr's and a lot of branches --> [Changelog](https://www.openassets.xyz/changelog) +# Infrastructure Layer ---- +The OpenAssets Client functions as a state interpreter coordinating with smart contracts and indexing infrastructure. + +Capabilities: -
-
- DEVELOPER ONBOARDING -

Installation & Local Setup

-

Step-by-step guide to deploying the OpenAssets interface on your local machine.

-
+* Real-time state synchronization +* Trust-minimized financial data verification +* Deterministic asset lifecycle management +* Role-based access for issuers and investors --- -## Getting Started +# Core Functional Modules -### Prerequisites -Before you begin, ensure you have the following installed: -* **Node.js**: v20.x or higher (Recommended: v22 LTS) -* **Package Manager**: `npm` or `pnpm` -* **Web3 Wallet**: MetaMask or any mantle supporting wallet configured for the **Mantle Sepolia Testnet**. -* **Mantle Faucet**: Ensure you have test **MNT** for gas. -* **Open Assets Backend Up**: Ensure you have the server and contracts up. (Steps can be found here [Backend Setup](https://github.com/TheOpenAssets/TOA-Server-Mantle/blob/main/README.md)) +## Issuer Flow +* Asset registration +* Compliance validation +* Token minting +* Marketplace listing -### 1. Clone the Repository -```bash -git clone https://github.com/TheOpenAssets/TOA-Client-Mantle.git -``` +## Investor Flow -### 2. Install Dependencies +* Asset discovery +* Direct acquisition +* Auction participation +* Secondary trading -We recommend using `npm` for consistent dependency resolution: +## Credit Flow -```bash -npm install -``` +* Collateral deposit +* Credit activation via identity layer +* Liquidity borrowing +* Repayment and credit restoration -### 3. Environment Configuration +## Settlement Flow -The application requires several contract addresses and API endpoints to function. Create a `.env` file in the root directory: +* Asset maturity detection +* Yield calculation +* Yield distribution +* Lifecycle closure -```bash -cp .env.example .env -``` +--- + +# Portfolio and Risk Monitoring + +The unified dashboard provides complete visibility into RWA exposure. + +Features include: + +* Collateralization monitoring +* Credit utilization tracking +* Yield accrual history +* Position health metrics +* Lifecycle event tracking + +--- + +# Developer Infrastructure + +## Prerequisites + +* Node.js v20+ +* Package manager (npm or pnpm) +* Web3 wallet +* Test assets for development +* Backend infrastructure running + +--- -### 4. Run the Development Server +## Installation ```bash +git clone https://github.com/TheOpenAssets/TOA-Client.git +cd TOA-Client +npm install +cp .env.example .env npm run dev ``` -Navigate to your localhost provider. - --- -## Environment Variables (.env) +## Environment Variables -The interface uses the following variables to interact with the **OpenAssets Protocol Core**. Ensure all contract addresses are correctly mapped to your Mantle Sepolia deployments. +### Core Infrastructure -### **Core Infrastructure** +| Variable | Description | +| ----------------------------- | ---------------------------- | +| VITE_API_URL | Backend API endpoint | +| VITE_WALLETCONNECT_PROJECT_ID | Wallet connection identifier | +| VITE_USDC_ADDRESS | Settlement asset address | -| Variable | Description | -| --- | --- | -| `VITE_API_URL` | Base URL for the Backend API | -| `VITE_WALLETCONNECT_PROJECT_ID` | Your wallet connect project ID for wallet authentication | -| `VITE_FAUCET` | Address of the RWA Test Token Faucet | -| `VITE_USDC_ADDRESS` | Canonical USDC contract on Mantle Sepolia | +--- -### **Marketplace & Yield** +### Marketplace -| Variable | Description | -| --- | --- | -| `VITE_PRIMARY_MARKETPLACE_ADDRESS` | Contract for auctions and initial listings | -| `VITE_SECONDARY_MARKET` | Peer-to-peer RWA trading contract | -| `VITE_YIELD_VAULT_ADDRESS` | The time-weighted yield distribution engine | -| `VITE_TOKEN_FACTORY` | Factory for minting ERC-3643 RWA tokens | +| Variable | Description | +| ------------------------ | --------------------------------- | +| VITE_PRIMARY_MARKETPLACE | Asset issuance and auction engine | +| VITE_SECONDARY_MARKET | Secondary trading engine | +| VITE_YIELD_VAULT | Yield distribution engine | +| VITE_TOKEN_FACTORY | Tokenization engine | -### **Identity & Compliance** +--- -| Variable | Description | -| --- | --- | -| `VITE_IDENTITY_REGISTRY` | Source of truth for user KYC/Identity | -| `VITE_TRUSTED_ISSUERS_REGISTRY` | List of approved asset originators | -| `VITE_ATTESTATION_REGISTRY` | Storage for asset-level compliance data | +### Identity and Credit -### **Mantle Innovation (mETH Leverage)** +| Variable | Description | +| ------------------------- | ---------------------------------- | +| VITE_IDENTITY_REGISTRY | Identity verification layer | +| VITE_ATTESTATION_REGISTRY | Compliance and asset attestations | +| VITE_OAID | Universal credit identity registry | +| VITE_SOLVENCY_VAULT | Collateral custody | +| VITE_SENIOR_POOL | Liquidity pool | -| Variable | Description | -| --- | --- | -| `VITE_MOCK_METH` | Mantle Staked ETH (mETH) address | -| `VITE_METH_FAUCET` | Faucet for test mETH | -| `VITE_LEVERAGE_VAULT` | mETH-collateralized buy management | -| `VITE_FLUXION_INTEGRATION` | Swap logic for mETH ↔ USDC | -| `VITE_MOCK_FLUXION_DEX` | DEX router for interest servicing | +--- -### **Universal Credit (OAID)** +### Leverage Infrastructure -| Variable | Description | -| --- | --- | -| `VITE_OAID` | Universal credit identity registry | -| `VITE_SOLVENCY_VAULT` | Secure RWA collateral custodian | -| `VITE_SENIOR_POOL` | Primary USDC liquidity lending pool | +| Variable | Description | +| --------------------- | ------------------------------- | +| VITE_YIELD_COLLATERAL | Yield-bearing collateral token | +| VITE_LEVERAGE_VAULT | Leverage management | +| VITE_SWAP_ROUTER | Asset conversion infrastructure | --- -## Build for Production - -To create an optimized production build: +# Production Build ```bash npm run build @@ -480,81 +257,37 @@ npm run preview --- +# System Principles - -### OpenAssets Smart Contract Registry (Mantle) - -| Contract Name | Address | Description | -| --- | --- | --- | -| **Identity Registry** | `0x2E310C62A225033055E88B690F8d054ece8bcbC4` | Source of truth for ERC-3643 KYC/Identity facts | -| **Token Factory** | `0x7C75795Cf41ee32fB4FEB89964d7591F0a44BcfE` | Core factory for minting compliant RWA tokens | -| **Yield Vault** | `0xa05bDf67483EB6ba5CcA0dc81543DeD5Ed845Da7` | Time-weighted yield distribution engine | -| **Primary Marketplace** | `0x7D8ac3ff7E7fd1a577ff778922Cc568be669beE0` | Handles RWA auctions and fixed-price listings | -| **Secondary Market** | `0x23f5c5893333199B3E166aCB8D48479D5E5B32CA` | Peer-to-peer trading engine for RWA tokens | -| **OAID (Open Access ID)** | `0xcc24b78Fa213304085684833597Fdc6CB5c8DfB0` | Universal on-chain credit identity registry | -| **Solvency Vault** | `0x039cB576d9F7D77d6bE0269E0904B6ceFA845C6B` | Secure RWA collateral custodian | -| **Senior Pool** | `0x9E5F4DD0178C08f27cC5Bd3E0e75Ed339385B346` | Primary USDC liquidity lending pool | -| **Leverage Vault** | `0x5EC05eBFA8AD682d09C8Ef99c1f15844Abe415BF` | mETH-collateralized acquisition manager | -| **Fluxion Integration** | `0xBf74A4CE5B8D1Aad592A3776e10537Ad27dA28Eb` | Swap logic for mETH ↔ USDC interest servicing | -| **Attestation Registry** | `0x03FE7d3736402D140659e7bD92B64808E31C3f51` | Storage for asset-level compliance data | -| **Trusted Issuers** | `0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2` | Whitelist of approved asset originators | -| **USDC** | `0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238` | Canonical settlement stablecoin | -| **USDC Faucet** | `0x26Da2F1a2de3295302Fd95eBA1A183dc8Ffd77a3` | Testnet faucet for RWA settlement asset | -| **Mock mETH** | `0x4Ade8aAa0143526393EcadA836224EF21aBC6ac6` | Mantle Staked ETH (mETH) Mock contract | -| **mETH Faucet** | `0xB50d0AC5D59E456C1f3EdB66403fd27eEbd155dB` | Testnet faucet for leverage collateral | -| **Mock Fluxion DEX** | `0x882eA0d81d445CF9e696869af4D007008281892D` | DEX router for automated price discovery | +Secure +Liquid +Transparent +Composable +Fair --- -
-
- GET IN TOUCH - -

Contact the Core Team

-

Have questions about the implementation or interested in integration? Reach out to us.

-
-
- About Us -
+# Summary -
+OpenAssets transforms RWAs from static ownership records into programmable financial primitives. -
-
- THE ARCHITECTS -

Engineering the future of RWA liquidity on Mantle.

+Key capabilities: +* Standardized tokenization +* Fair yield distribution +* Universal credit access +* Capital-efficient leverage +* Secondary liquidity +* Composable financial infrastructure - - - +--- -
- Bob The Builder's -
+# Contact -
+[https://www.openassets.xyz](https://www.openassets.xyz) --- -
-
- OpenAssets Logo -
-
-

- © 2026 OpenAssets. All rights reserved.
- Built with precision for the Mantle Network ecosystem. -

- - Secure • Liquid • Transparent • Fair - -
-
-

- Licensed under the MIT License. Developed for the Mantle Hackathon 2026. -

-
- ---- +© 2026 OpenAssets +All rights reserved. diff --git a/cladue.md b/cladue.md new file mode 100644 index 0000000..06dd40b --- /dev/null +++ b/cladue.md @@ -0,0 +1,124 @@ +# CLAUDE.md — OpenAssets Frontend + +## Project Overview + +**OpenAssets** is a production-grade RWA platform. It supports a dual-network architecture (**arbitrum** and **Stellar**) to tokenize, trade, and borrow against real-world assets. The frontend follows a strict **Feature-Based Module** architecture. + +## Tech Stack + +* **Framework:** React 19.2 + Vite 7.2 + TypeScript 5.9 +* **Styling:** Tailwind CSS 4 (Evolutionary v4 syntax) + Framer Motion 12 +* **State:** Zustand 5 (Global/Deep) + TanStack React Query 5 (Server/Async) +* **Web3:** RainbowKit 2 / Wagmi 2 (EVM) + Stellar SDK/Freighter (Stellar) +* **Visuals:** ECharts 6 + React Three Fiber 9 + +--- + +## ✅ STRICT Implementation Rules + +### 1. Feature Module Structure (The Law) + +Each feature (e.g., `marketplace`, `borrow`, `portfolio`) MUST follow this structure. **Do not deviate.** + +``` +src/pages/feature-name/ +├── components/ +│ ├── featureUI/ # 🟢 Pure UI (Presentation only, NO logic) +│ └── featureService/ # 🔵 Logic (Hooks, data fetching, state bridges) +├── hooks/ # Feature-specific hooks +├── types/ # Feature-specific types +├── stores/ # Zustand stores (if feature-specific) +└── context.md # ⚠️ MANDATORY: Single source of truth + +``` + +### 2. Documentation & State + +* **ONE `context.md` PER FEATURE:** Updated with every change. NO `docs/` folders inside features. +* **Zustand:** Use for deep state or state shared across disparate features. +* **Props:** Use for simple 2-level parent-child data passing. +* **Service Layer (`src/lib/api/`):** All external calls must use the class-based services extending `BaseService`. + +### 3. Logic/UI Separation + +* **UI Components:** Accept props, return JSX. No `useEffect` for data fetching. No direct API calls. +* **Service Components:** Wrap UI components, handle hooks, and pass data down via props. + +### 4. Shared Factories + +* **NEVER** create custom buttons, modals, or loaders. +* Use the shared primitives in `src/components/ui/` (Radix wrappers). + +--- + +## Design System & UI Conventions + +### Responsive Layout (Tailwind v4) + +* **Mobile-First:** Design for mobile, enhance for `md:`, `lg:`. +* **Spacing:** Use rem-based scales (`p-4`, `gap-6`). 1rem = 16px. +* **Fluid Typography:** Use `clamp()` for hero text or the following scale: +* Hero: `text-4xl md:text-6xl lg:text-[5.25rem]` +* H1: `text-3xl md:text-4xl lg:text-5xl` +* Body: `text-base md:text-lg` + + + +### Color Palette & Visuals + +* **EVM Context:** Primary branding aligned with arbitrum/Web3. +* **Transitions:** `transition-all duration-200 ease-in-out` on all interactive elements. +* **Feedback:** Every blockchain TX must trigger a Toast via `useToast`. + +--- + +## Architecture Overview + +### Multi-Network Routing + +The app mounts under `/:network/`. Feature availability is gated by: + +```tsx + + + + +``` + +Configuration is managed in `src/lib/network/network.config.ts`. + +### Authentication Flow + +1. **Connect:** RainbowKit (EVM) or Stellar Wallet. +2. **Challenge:** Backend nonce signing. +3. **JWT:** Scoped to network (`arbitrum_access_token` vs `stellar_access_token`). +4. **Interceptors:** `BaseService` attaches tokens automatically. + +--- + +## Path Aliases + +* `@/*` maps to `src/` (e.g., `import { Service } from '@/lib/api/auth.service'`). + +### RULES + +## Rule of plans + +Plans should be human readable high level docs containing all the nitty gritties about how the work will be done but not the code, no pointers. Be as expressive as u can while planning but with words not with code . + +## Rule of Package Manager + +Our package wil be mantained by the yarn intrinsically + +## Rule of build + +Anyone is not allowed to run build . + +## Rule of paths + +PAths shall now look like ../../../service +but shall look like @/src/module/service for clear readability This will enhance our code readability a lot. + +## Rule of API logging + +Every route shall be documented by swagger response , payload and everything \ No newline at end of file diff --git a/dist/ Build-1.png b/dist/ Build-1.png new file mode 100644 index 0000000..eb6de76 Binary files /dev/null and b/dist/ Build-1.png differ diff --git a/dist/ALogo-removebg-preview.svg b/dist/ALogo-removebg-preview.svg new file mode 100644 index 0000000..704d7cd --- /dev/null +++ b/dist/ALogo-removebg-preview.svg @@ -0,0 +1,71 @@ + + + + + + + + diff --git a/dist/ALogo-removebg-previw.svg b/dist/ALogo-removebg-previw.svg new file mode 100644 index 0000000..7809bbb Binary files /dev/null and b/dist/ALogo-removebg-previw.svg differ diff --git a/dist/ALogo.png b/dist/ALogo.png new file mode 100644 index 0000000..53760d8 Binary files /dev/null and b/dist/ALogo.png differ diff --git a/dist/AadharGenerated.png b/dist/AadharGenerated.png new file mode 100644 index 0000000..be53b6d Binary files /dev/null and b/dist/AadharGenerated.png differ diff --git a/dist/ActiveBids.png b/dist/ActiveBids.png new file mode 100644 index 0000000..87622a6 Binary files /dev/null and b/dist/ActiveBids.png differ diff --git a/dist/Auction.png b/dist/Auction.png new file mode 100644 index 0000000..223e06a Binary files /dev/null and b/dist/Auction.png differ diff --git a/dist/Autonomous.png b/dist/Autonomous.png new file mode 100644 index 0000000..069a954 Binary files /dev/null and b/dist/Autonomous.png differ diff --git a/dist/Build-2.png b/dist/Build-2.png new file mode 100644 index 0000000..dcccfae Binary files /dev/null and b/dist/Build-2.png differ diff --git a/dist/Build-3.png b/dist/Build-3.png new file mode 100644 index 0000000..47702e3 Binary files /dev/null and b/dist/Build-3.png differ diff --git a/dist/Build-4.png b/dist/Build-4.png new file mode 100644 index 0000000..3464e39 Binary files /dev/null and b/dist/Build-4.png differ diff --git a/dist/Build-5.png b/dist/Build-5.png new file mode 100644 index 0000000..6c2fe3d Binary files /dev/null and b/dist/Build-5.png differ diff --git a/dist/Build-6.png b/dist/Build-6.png new file mode 100644 index 0000000..1a65558 Binary files /dev/null and b/dist/Build-6.png differ diff --git a/dist/Build-7.png b/dist/Build-7.png new file mode 100644 index 0000000..f23a933 Binary files /dev/null and b/dist/Build-7.png differ diff --git a/dist/Changelog.png b/dist/Changelog.png new file mode 100644 index 0000000..1623dec Binary files /dev/null and b/dist/Changelog.png differ diff --git a/dist/Composable-Defi.png b/dist/Composable-Defi.png new file mode 100644 index 0000000..36dc7fc Binary files /dev/null and b/dist/Composable-Defi.png differ diff --git a/dist/Docs-1.png b/dist/Docs-1.png new file mode 100644 index 0000000..ccd28b4 Binary files /dev/null and b/dist/Docs-1.png differ diff --git a/dist/Docs-2.png b/dist/Docs-2.png new file mode 100644 index 0000000..8534b48 Binary files /dev/null and b/dist/Docs-2.png differ diff --git a/dist/ExpandedRow.png b/dist/ExpandedRow.png new file mode 100644 index 0000000..e319bcb Binary files /dev/null and b/dist/ExpandedRow.png differ diff --git a/dist/Faucet.png b/dist/Faucet.png new file mode 100644 index 0000000..7571655 Binary files /dev/null and b/dist/Faucet.png differ diff --git a/dist/Features.png b/dist/Features.png new file mode 100644 index 0000000..8bc8fc7 Binary files /dev/null and b/dist/Features.png differ diff --git a/dist/Footer.png b/dist/Footer.png new file mode 100644 index 0000000..68983a9 Binary files /dev/null and b/dist/Footer.png differ diff --git a/dist/Hero.png b/dist/Hero.png new file mode 100644 index 0000000..36545b9 Binary files /dev/null and b/dist/Hero.png differ diff --git a/dist/InterestChart.png b/dist/InterestChart.png new file mode 100644 index 0000000..0c350a6 Binary files /dev/null and b/dist/InterestChart.png differ diff --git a/dist/Loan.png b/dist/Loan.png new file mode 100644 index 0000000..b2b1c85 Binary files /dev/null and b/dist/Loan.png differ diff --git a/dist/METH-buy.png b/dist/METH-buy.png new file mode 100644 index 0000000..3a822c7 Binary files /dev/null and b/dist/METH-buy.png differ diff --git a/dist/Marketplace.png b/dist/Marketplace.png new file mode 100644 index 0000000..163e0bf Binary files /dev/null and b/dist/Marketplace.png differ diff --git a/dist/MyAssets.png b/dist/MyAssets.png new file mode 100644 index 0000000..248ff63 Binary files /dev/null and b/dist/MyAssets.png differ diff --git a/dist/Notifcations.png b/dist/Notifcations.png new file mode 100644 index 0000000..ffd4f01 Binary files /dev/null and b/dist/Notifcations.png differ diff --git a/dist/OA-banner.png b/dist/OA-banner.png new file mode 100644 index 0000000..d32aff1 Binary files /dev/null and b/dist/OA-banner.png differ diff --git a/dist/P2P.png b/dist/P2P.png new file mode 100644 index 0000000..e097cd4 Binary files /dev/null and b/dist/P2P.png differ diff --git a/dist/Positions.png b/dist/Positions.png new file mode 100644 index 0000000..4735d47 Binary files /dev/null and b/dist/Positions.png differ diff --git a/dist/Realfi.png b/dist/Realfi.png new file mode 100644 index 0000000..fa9efb7 Binary files /dev/null and b/dist/Realfi.png differ diff --git a/dist/Summary.png b/dist/Summary.png new file mode 100644 index 0000000..33d3e9b Binary files /dev/null and b/dist/Summary.png differ diff --git a/dist/SwapChart.png b/dist/SwapChart.png new file mode 100644 index 0000000..db63b67 Binary files /dev/null and b/dist/SwapChart.png differ diff --git a/dist/TOA-Client.png b/dist/TOA-Client.png new file mode 100644 index 0000000..55b4c2d Binary files /dev/null and b/dist/TOA-Client.png differ diff --git a/dist/TOA-Server.png b/dist/TOA-Server.png new file mode 100644 index 0000000..235f704 Binary files /dev/null and b/dist/TOA-Server.png differ diff --git a/dist/TOA.png b/dist/TOA.png new file mode 100644 index 0000000..35d50f7 Binary files /dev/null and b/dist/TOA.png differ diff --git a/dist/Timeline.png b/dist/Timeline.png new file mode 100644 index 0000000..8736a96 Binary files /dev/null and b/dist/Timeline.png differ diff --git a/dist/Trade-Chart.png b/dist/Trade-Chart.png new file mode 100644 index 0000000..0501d57 Binary files /dev/null and b/dist/Trade-Chart.png differ diff --git a/dist/Trade.png b/dist/Trade.png new file mode 100644 index 0000000..181bb0d Binary files /dev/null and b/dist/Trade.png differ diff --git a/dist/USDC-buy.png b/dist/USDC-buy.png new file mode 100644 index 0000000..445b559 Binary files /dev/null and b/dist/USDC-buy.png differ diff --git a/dist/arbitrum-logo.png b/dist/arbitrum-logo.png new file mode 100644 index 0000000..bb1d425 Binary files /dev/null and b/dist/arbitrum-logo.png differ diff --git a/dist/arbitrum-logo.svg b/dist/arbitrum-logo.svg new file mode 100644 index 0000000..2dce975 --- /dev/null +++ b/dist/arbitrum-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/dist/assets/Arc-VDBY7LNS-BChRXCXW.js b/dist/assets/Arc-VDBY7LNS-BChRXCXW.js new file mode 100644 index 0000000..4689874 --- /dev/null +++ b/dist/assets/Arc-VDBY7LNS-BChRXCXW.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20fill%3D%22%231A007F%22%20fill-rule%3D%22evenodd%22%20d%3D%22m26.722%2056.452%206.608-13.904c-5.047-1.073-10.126-4.195-12.999-7.993l-6.91%2014.529a39.257%2039.257%200%200%200%2013.3%207.368Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22b%22%20fill%3D%22%234E000A%22%20fill-rule%3D%22evenodd%22%20d%3D%22M54.304%2034.138c-3.32%204.07-7.931%207.087-12.864%208.263l6.588%2013.863c4.809-1.623%209.304-4.245%2013.185-7.608l-6.91-14.518Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22c%22%20fill%3D%22%231A007F%22%20fill-rule%3D%22evenodd%22%20d%3D%22m13.422%2049.084-3.455%207.265c-1.76%203.694-.437%208.242%203.184%2010.167%203.84%202.04%208.566.448%2010.419-3.434l3.152-6.63a39.427%2039.427%200%200%201-13.3-7.368%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22d%22%20fill%3D%22%23FF9396%22%20fill-rule%3D%22evenodd%22%20d%3D%22M68.02%2018.277a7.586%207.586%200%200%200-8.93%205.952c-.729%203.642-2.436%207.035-4.787%209.92l6.9%2014.528c6.369-5.527%2011.074-13.052%2012.759-21.471.823-4.122-1.842-8.117-5.943-8.93%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22e%22%20fill%3D%22%23002DC8%22%20fill-rule%3D%22evenodd%22%20d%3D%22M41.438%2042.403a19.312%2019.312%200%200%201-4.496.54%2017.33%2017.33%200%200%201-3.61-.395c-5.048-1.072-10.128-4.194-13-7.993-.718-.947-1.301-1.936-1.706-2.945-1.572-3.882-5.996-5.756-9.878-4.195-3.881%201.572-5.755%205.995-4.194%209.877%201.78%204.414%204.923%208.462%208.867%2011.791a39.377%2039.377%200%200%200%2013.291%207.37c3.341%201.071%206.807%201.665%2010.22%201.665%203.788%200%207.525-.656%2011.084-1.853l-6.578-13.862Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22f%22%20fill%3D%22%23FF536A%22%20fill-rule%3D%22evenodd%22%20d%3D%22m64.846%2056.316-3.643-7.66-6.9-14.518-.011.01s0-.01.011-.01L44.27%2013.032a7.589%207.589%200%200%200-6.848-4.33%207.589%207.589%200%200%200-6.848%204.33L20.343%2034.554c2.872%203.799%207.95%206.921%2012.999%207.993l3.309-6.952a.866.866%200%200%201%201.561%200l3.238%206.806h.02-.02l6.588%2013.863%203.236%206.807a7.576%207.576%200%200%200%206.858%204.33%207.44%207.44%200%200%200%202.02-.281c4.569-1.26%206.734-6.515%204.694-10.804%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20d%3D%22M37.422%208.702a7.59%207.59%200%200%201%206.848%204.33l10.033%2021.107s0%20.01-.011.01c0%200%200-.011.01-.011%202.353-2.883%204.06-6.276%204.788-9.919.822-4.11%204.818-6.764%208.93-5.952a7.585%207.585%200%200%201%205.953%208.93c-1.686%208.419-6.39%2015.944-12.76%2021.47l3.643%207.66c2.019%204.246-.094%209.44-4.57%2010.771l-.135.043a7.506%207.506%200%200%201-2.019.28%207.595%207.595%200%200%201-6.858-4.33l-3.238-6.805-6.587-13.863h.022-.022l-3.237-6.807a.865.865%200%200%200-1.56%200l-3.31%206.952c-5.048-1.07-10.127-4.194-13-7.993l10.231-21.523a7.55%207.55%200%200%201%206.848-4.35ZM8.749%2027.414a7.582%207.582%200%200%201%209.876%204.195c.407%201.01.99%201.998%201.707%202.945l.01.011.344.436c.032.042.063.074.094.116l.093.114c.053.052.094.115.146.166.01.01.021.022.021.032l-.02-.032c.197.24.415.468.634.699.01.009.01.02.02.02a20.332%2020.332%200%200%200%202.385%202.112c.405.313.822.603%201.248.895.042.021.073.052.115.074%202.404%201.58%205.162%202.767%207.91%203.35%201.165.25%202.33.386%203.465.396h.146c1.509%200%203.018-.188%204.495-.542l6.589%2013.863c-3.56%201.198-7.296%201.853-11.084%201.853-3.414%200-6.869-.593-10.22-1.665l-3.154%206.63a7.583%207.583%200%200%201-10.418%203.434C9.53%2064.59%208.207%2060.053%209.967%2056.348l3.455-7.264c-3.903-3.3-7.015-7.307-8.815-11.657l-.052-.135c-1.56-3.883.312-8.305%204.194-9.878Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20stroke%3D%22%23fff%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%226.021%22%20d%3D%22M37.422%208.702a7.59%207.59%200%200%201%206.848%204.33l10.033%2021.107s0%20.01-.011.01c0%200%200-.011.01-.011%202.353-2.883%204.06-6.276%204.788-9.919.822-4.11%204.818-6.764%208.93-5.952a7.585%207.585%200%200%201%205.953%208.93c-1.686%208.419-6.39%2015.944-12.76%2021.47l3.643%207.66c2.019%204.246-.094%209.44-4.57%2010.771l-.135.043a7.506%207.506%200%200%201-2.019.28%207.595%207.595%200%200%201-6.858-4.33l-3.238-6.805-6.587-13.863h.022-.022l-3.237-6.807a.865.865%200%200%200-1.56%200l-3.31%206.952c-5.048-1.07-10.127-4.194-13-7.993l10.231-21.523a7.55%207.55%200%200%201%206.848-4.35h0ZM8.749%2027.414a7.582%207.582%200%200%201%209.876%204.195c.407%201.01.99%201.998%201.707%202.945l.01.011.344.436c.032.042.063.074.094.116l.093.114c.053.052.094.115.146.166.01.01.021.022.021.032l-.02-.032c.197.24.415.468.634.699.01.009.01.02.02.02a20.332%2020.332%200%200%200%202.385%202.112c.405.313.822.603%201.248.895.042.021.073.052.115.074%202.404%201.58%205.162%202.767%207.91%203.35%201.165.25%202.33.386%203.465.396h.146c1.509%200%203.018-.188%204.495-.542l6.589%2013.863c-3.56%201.198-7.296%201.853-11.084%201.853-3.414%200-6.869-.593-10.22-1.665l-3.154%206.63a7.583%207.583%200%200%201-10.418%203.434C9.53%2064.59%208.207%2060.053%209.967%2056.348l3.455-7.264c-3.903-3.3-7.015-7.307-8.815-11.657l-.052-.135c-1.56-3.883.312-8.305%204.194-9.878h0Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23d%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23e%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23f%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23d%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23e%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23f%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/Brave-BRAKJXDS-mq-Xo37j.js b/dist/assets/Brave-BRAKJXDS-mq-Xo37j.js new file mode 100644 index 0000000..a9e548b --- /dev/null +++ b/dist/assets/Brave-BRAKJXDS-mq-Xo37j.js @@ -0,0 +1 @@ +var s="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20fill-rule%3D%22evenodd%22%20d%3D%22m67.81%2019.54%201.69-4.2s-2.14-2.35-4.75-5c-2.6-2.65-8.1-1.09-8.1-1.09L50.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c-2.6%202.64-4.75%204.98-4.75%204.98l1.69%204.21-2.15%206.24s6.3%2024.3%207.04%2027.28c1.46%205.84%202.45%208.1%206.58%2011.06a513.66%20513.66%200%200%200%2012.85%208.89c1.23.78%202.76%202.1%204.13%202.1%201.38%200%202.91-1.32%204.14-2.1%201.22-.78%208.72-5.92%2012.85-8.89%204.13-2.96%205.12-5.22%206.58-11.06.74-2.97%207.04-27.28%207.04-27.28l-2.15-6.24Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20d%3D%22M39.35%2047.5c.42%200%203.11.97%205.27%202.1%202.15%201.14%203.72%201.95%204.22%202.26.5.32.2.92-.26%201.25-.46.33-6.57%205.15-7.17%205.69-.6.53-1.46%201.41-2.06%201.41-.59%200-1.46-.88-2.05-1.41-.6-.54-6.71-5.36-7.17-5.69-.45-.33-.76-.93-.26-1.25.5-.31%202.07-1.12%204.22-2.25%202.16-1.14%204.85-2.1%205.26-2.1Zm.04-34.36c.2.01%201.36.07%203.02.63%201.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32s8.06%209.94%208.06%2012.06c0%202.13-1.01%202.69-2.03%203.8l-6.05%206.54c-.57.62-1.77%201.55-1.06%203.24.7%201.7%201.73%203.84.58%206.03-1.15%202.18-3.12%203.63-4.38%203.4-1.26-.25-4.23-1.83-5.32-2.55-1.09-.72-4.54-3.62-4.54-4.73%200-1.11%203.57-3.1%204.23-3.56.66-.45%203.67-2.2%203.73-2.9.06-.69.04-.89-.85-2.59-.89-1.7-2.49-3.97-2.22-5.48.26-1.51%202.84-2.3%204.68-3%201.84-.71%205.39-2.05%205.83-2.26.44-.2.33-.4-1.01-.53s-5.15-.65-6.86-.16c-1.72.49-4.65%201.23-4.89%201.62-.24.4-.45.4-.2%201.76.24%201.36%201.5%207.87%201.62%209.02.12%201.16.36%201.92-.87%202.2-1.22.3-3.28.79-3.99.79-.7%200-2.76-.5-3.99-.78-1.22-.29-.98-1.05-.86-2.2.12-1.16%201.38-7.67%201.62-9.03.25-1.35.04-1.37-.2-1.76-.24-.4-3.17-1.13-4.89-1.62-1.71-.49-5.52.03-6.86.16-1.34.13-1.46.32-1.01.53.44.21%203.98%201.55%205.83%202.26%201.84.7%204.42%201.49%204.68%203%20.27%201.51-1.33%203.78-2.22%205.48-.89%201.7-.91%201.9-.85%202.6.06.68%203.07%202.44%203.73%202.89.66.45%204.23%202.45%204.23%203.56%200%201.1-3.45%204.01-4.54%204.73-1.1.72-4.06%202.3-5.32%202.54-1.26.24-3.23-1.21-4.38-3.4-1.15-2.18-.12-4.33.58-6.02.7-1.69-.49-2.62-1.06-3.24L17.8%2029.7c-1.02-1.1-2.04-1.66-2.04-3.79%200-2.12%208.07-12.06%208.07-12.06s6.81%201.33%207.73%201.33c.92%200%202.9-.78%204.74-1.4a11.3%2011.3%200%200%201%203.03-.64h.07Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cmask%20id%3D%22b%22%20width%3D%2252%22%20height%3D%2214%22%20x%3D%2213%22%20y%3D%222%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M56.64%209.25%2050.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c0%200%207.34-.68%209.86%203.5%200%200%206.81%201.33%207.73%201.33.92%200%202.9-.78%204.74-1.4%201.84-.63%203.06-.64%203.06-.64s1.23%200%203.06.63c1.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32%202.52-4.18%209.86-3.5%209.86-3.5-2.6-2.66-8.1-1.1-8.1-1.1Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M56.64%209.25%2050.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c0%200%207.34-.68%209.86%203.5%200%200%206.81%201.33%207.73%201.33.92%200%202.9-.78%204.74-1.4%201.84-.63%203.06-.64%203.06-.64s1.23%200%203.06.63c1.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32%202.52-4.18%209.86-3.5%209.86-3.5-2.6-2.66-8.1-1.1-8.1-1.1Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%228.75%22%20x2%3D%2269.96%22%20y1%3D%2239.07%22%20y2%3D%2239.07%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F50%22%2F%3E%3Cstop%20offset%3D%22.41%22%20stop-color%3D%22%23F50%22%2F%3E%3Cstop%20offset%3D%22.58%22%20stop-color%3D%22%23FF2000%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF2000%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%2215.05%22%20x2%3D%2264.75%22%20y1%3D%228.68%22%20y2%3D%228.68%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FF452A%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF2000%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{s as default}; diff --git a/dist/assets/Browser-76IHF3Y2-BMhRaC5Z.js b/dist/assets/Browser-76IHF3Y2-BMhRaC5Z.js new file mode 100644 index 0000000..7543b43 --- /dev/null +++ b/dist/assets/Browser-76IHF3Y2-BMhRaC5Z.js @@ -0,0 +1 @@ +var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-5c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-5c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Z%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2230%22%20fill%3D%22url(%23c)%22%2F%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2230%22%20fill%3D%22url(%23d)%22%20fill-opacity%3D%22.7%22%20style%3D%22mix-blend-mode%3Ascreen%22%2F%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2229.5%22%20stroke%3D%22%23000%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23f)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22m55.681%2053.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.8%22%20d%3D%22m55.681%2052.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22m55.681%2052.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%20opacity%3D%22.14%22%2F%3E%3Cpath%20fill%3D%22url(%23h)%22%20fill-opacity%3D%22.08%22%20d%3D%22M61.248%2056.008c.166-.217.25-.325.378-.66.754-1.95-1.183-3.95-3.157-3.26-.338.118-.904.522-2.035%201.332A29.863%2029.863%200%200%201%2039%2059.003a29.863%2029.863%200%200%201-17.425-5.577c-1.132-.809-1.697-1.213-2.035-1.331-1.974-.69-3.911%201.313-3.156%203.263.129.334.212.442.378.659%205.118%206.679%2013.176%2010.986%2022.24%2010.986%209.068%200%2017.129-4.31%2022.246-10.995Z%22%2F%3E%3Cpath%20fill%3D%22url(%23i)%22%20fill-opacity%3D%22.2%22%20d%3D%22M62.26%2040.051C63.805%2041.947%2067%2041.445%2067%2039c0-15.464-12.536-28-28-28S11%2023.536%2011%2039c0%202.445%203.195%202.946%204.74%201.051C21.241%2033.307%2029.618%2029%2039%2029c9.382%200%2017.758%204.307%2023.26%2011.051Z%22%2F%3E%3Cpath%20fill%3D%22url(%23j)%22%20d%3D%22M39%2045a6%206%200%201%201%200-11.999%206%206%200%200%201%200%2012Z%22%2F%3E%3Cpath%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.24%22%20stroke-width%3D%22.125%22%20d%3D%22M36.728%2044.486a5.938%205.938%200%201%200%204.545-10.971%205.938%205.938%200%200%200-4.545%2010.971Z%22%2F%3E%3Cg%20filter%3D%22url(%23k)%22%3E%3Cpath%20fill%3D%22%231A1B1F%22%20d%3D%22M39%2046a6%206%200%201%201%200-11.999%206%206%200%200%201%200%2012Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23l)%22%20d%3D%22M39%2044.5a5.5%205.5%200%201%201%200-11%205.5%205.5%200%200%201%200%2011Z%22%2F%3E%3Cpath%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.24%22%20stroke-width%3D%22.25%22%20d%3D%22M36.944%2043.966a5.376%205.376%200%201%200%204.114-9.934%205.376%205.376%200%200%200-4.114%209.934Z%22%2F%3E%3Cpath%20fill%3D%22url(%23m)%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.704%2044.544a6.002%206.002%200%200%200%208.297-5.543%206%206%200%201%200-8.297%205.543Zm.191-.463a5.5%205.5%200%201%200%204.21-10.163%205.5%205.5%200%200%200-4.21%2010.163Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23n)%22%20fill-opacity%3D%22.06%22%20d%3D%22M36.897%2042.12A5.98%205.98%200%200%200%2039%2042.5c1.46%200%202.858-.526%203.89-1.464.256-.233.701-.022.54.285a5%205%200%200%201-9.049-.406c-.098-.238.237-.383.411-.195a5.565%205.565%200%200%200%202.103%201.4Z%22%2F%3E%3Cg%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22url(%23o)%22%20d%3D%22M39%2071c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Zm0-2c16.569%200%2030-13.431%2030-30C69%2022.431%2055.569%209%2039%209%2022.431%209%209%2022.431%209%2039c0%2016.569%2013.431%2030%2030%2030Z%22%2F%3E%3Cpath%20fill%3D%22url(%23p)%22%20d%3D%22M39%2071c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Zm0-2c16.569%200%2030-13.431%2030-30C69%2022.431%2055.569%209%2039%209%2022.431%209%209%2022.431%209%2039c0%2016.569%2013.431%2030%2030%2030Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23q)%22%20fill-rule%3D%22evenodd%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-1c19.882%200%2036-16.118%2036-36S58.882%203%2039%203%203%2019.118%203%2039s16.118%2036%2036%2036Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2232%22%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.3%22%20stroke-width%3D%22.25%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23174299%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23001E59%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%2234%22%20x2%3D%2246.5%22%20y1%3D%2245.5%22%20y2%3D%2233%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.453%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%22.64%22%2F%3E%3Cstop%20offset%3D%22.453%22%20stop-color%3D%22%233B3B3B%22%20stop-opacity%3D%22.233%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22i%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%2211%22%20y2%3D%2241.205%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22j%22%20x1%3D%2239.001%22%20x2%3D%2238.751%22%20y1%3D%2233%22%20y2%3D%2245%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23DCE1EA%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BEC6D5%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22l%22%20x1%3D%2239.001%22%20x2%3D%2238.772%22%20y1%3D%2233.5%22%20y2%3D%2244.5%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23DCE1EA%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BEC6D5%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22m%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%2233%22%20y2%3D%2245.001%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F2F4F7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23A3ADC2%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22o%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%227%22%20y2%3D%2271%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22p%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%227%22%20y2%3D%2271%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%239FACC6%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23E0E3EB%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22q%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F2F4F7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23A3ADC2%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-40.077%20108.556%2065.416)%20scale(118.435)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.276%22%20stop-color%3D%22%2320FF4D%22%2F%3E%3Cstop%20offset%3D%22.464%22%20stop-color%3D%22%231499FF%22%2F%3E%3Cstop%20offset%3D%22.755%22%20stop-color%3D%22%23FF6FC6%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BC67FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(45%20.265%20-.64)%20scale(98.1111)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22red%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2300A3FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22h%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(0%20-29.3887%2057.4838%200%2038.999%2067)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22n%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(-.00135%20-5.75038%208.42557%20-.00199%2039.002%2044)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3Cfilter%20id%3D%22e%22%20width%3D%2268%22%20height%3D%2268%22%20x%3D%225%22%20y%3D%225%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%222%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22f%22%20width%3D%2238%22%20height%3D%2238%22%20x%3D%2220%22%20y%3D%2221%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%221%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22k%22%20width%3D%2216%22%20height%3D%2216%22%20x%3D%2231.001%22%20y%3D%2232%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%221%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{D as default}; diff --git a/dist/assets/Chrome-65Q5P54Y-DR9MQEVr.js b/dist/assets/Chrome-65Q5P54Y-DR9MQEVr.js new file mode 100644 index 0000000..26aaebf --- /dev/null +++ b/dist/assets/Chrome-65Q5P54Y-DR9MQEVr.js @@ -0,0 +1 @@ +var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M71.034%2020.5a37.001%2037.001%200%200%200-64.084%200l2.22%2039.96L71.034%2020.5Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M22.979%2048.25%206.958%2020.5A37%2037%200%200%200%2039%2076l36.26-37-52.281%209.25Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M55.021%2048.25%2039%2076a37.001%2037.001%200%200%200%2032.035-55.5H39l16.021%2027.75Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39%2057.5a18.5%2018.5%200%201%200%200-37%2018.5%2018.5%200%200%200%200%2037Z%22%2F%3E%3Cpath%20fill%3D%22%231A73E8%22%20d%3D%22M39%2053.652a14.65%2014.65%200%200%200%2013.536-20.26A14.653%2014.653%200%201%200%2039%2053.653Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%226.958%22%20x2%3D%2271.034%22%20y1%3D%2225.125%22%20y2%3D%2225.125%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D93025%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EA4335%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2243.003%22%20x2%3D%2210.961%22%20y1%3D%2273.684%22%20y2%3D%2218.184%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%231E8E3E%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2334A853%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%2233.598%22%20x2%3D%2265.64%22%20y1%3D%2276%22%20y2%3D%2220.596%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FCC934%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FBBC04%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{D as default}; diff --git a/dist/assets/Edge-XSPUTORV-DEoZslQE.js b/dist/assets/Edge-XSPUTORV-DEoZslQE.js new file mode 100644 index 0000000..a200ea9 --- /dev/null +++ b/dist/assets/Edge-XSPUTORV-DEoZslQE.js @@ -0,0 +1 @@ +var t="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M68.802%2057.066c-.992.516-2.016.97-3.064%201.359a29.456%2029.456%200%200%201-10.377%201.85c-13.673%200-25.582-9.395-25.582-21.477a9.106%209.106%200%200%201%204.74-7.892c-12.371.52-15.551%2013.413-15.551%2020.957%200%2021.39%2019.685%2023.53%2023.934%2023.53%202.284%200%205.724-.665%207.805-1.33l.376-.115a37.088%2037.088%200%200%200%2019.251-15.263%201.156%201.156%200%200%200-1.532-1.619Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M68.802%2057.066c-.992.516-2.016.97-3.064%201.359a29.456%2029.456%200%200%201-10.377%201.85c-13.673%200-25.582-9.395-25.582-21.477a9.106%209.106%200%200%201%204.74-7.892c-12.371.52-15.551%2013.413-15.551%2020.957%200%2021.39%2019.685%2023.53%2023.934%2023.53%202.284%200%205.724-.665%207.805-1.33l.376-.115a37.088%2037.088%200%200%200%2019.251-15.263%201.156%201.156%200%200%200-1.532-1.619Z%22%20opacity%3D%22.35%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M32.554%2071.751a22.894%2022.894%200%200%201-6.562-6.157%2023.329%2023.329%200%200%201%208.527-34.687c.925-.434%202.458-1.186%204.51-1.157a9.365%209.365%200%200%201%207.429%203.758%209.222%209.222%200%200%201%201.82%205.406c0-.058%207.083-23.01-23.124-23.01-12.69%200-23.125%2012.025-23.125%2022.605a37.636%2037.636%200%200%200%203.498%2016.188%2037%2037%200%200%200%2045.209%2019.367%2021.825%2021.825%200%200%201-18.153-2.313h-.03Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M32.554%2071.751a22.894%2022.894%200%200%201-6.562-6.157%2023.329%2023.329%200%200%201%208.527-34.687c.925-.434%202.458-1.186%204.51-1.157a9.365%209.365%200%200%201%207.429%203.758%209.222%209.222%200%200%201%201.82%205.406c0-.058%207.083-23.01-23.124-23.01-12.69%200-23.125%2012.025-23.125%2022.605a37.636%2037.636%200%200%200%203.498%2016.188%2037%2037%200%200%200%2045.209%2019.367%2021.825%2021.825%200%200%201-18.153-2.313h-.03Z%22%20opacity%3D%22.41%22%2F%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M46.053%2045.013c-.26.289-.983.722-.983%201.618%200%20.752.492%201.503%201.388%202.11%204.133%202.891%2011.967%202.486%2011.996%202.486a17.227%2017.227%200%200%200%208.759-2.399A17.748%2017.748%200%200%200%2076%2033.537c.087-6.475-2.313-10.782-3.266-12.69C66.577%208.88%2053.366%202%2039%202A37%2037%200%200%200%202%2038.48c.145-10.551%2010.637-19.078%2023.125-19.078%201.012%200%206.793.086%2012.14%202.89a20.986%2020.986%200%200%201%208.933%208.47c1.763%203.064%202.08%206.966%202.08%208.527%200%201.561-.78%203.845-2.254%205.752l.03-.028Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22M46.053%2045.013c-.26.289-.983.722-.983%201.618%200%20.752.492%201.503%201.388%202.11%204.133%202.891%2011.967%202.486%2011.996%202.486a17.227%2017.227%200%200%200%208.759-2.399A17.748%2017.748%200%200%200%2076%2033.537c.087-6.475-2.313-10.782-3.266-12.69C66.577%208.88%2053.366%202%2039%202A37%2037%200%200%200%202%2038.48c.145-10.551%2010.637-19.078%2023.125-19.078%201.012%200%206.793.086%2012.14%202.89a20.986%2020.986%200%200%201%208.933%208.47c1.763%203.064%202.08%206.966%202.08%208.527%200%201.561-.78%203.845-2.254%205.752l.03-.028Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(27.5766%200%200%2026.1977%2047.44%2053.553)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.7%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.9%22%20stop-opacity%3D%22.5%22%2F%3E%3Cstop%20offset%3D%221%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(6.20902%20-40.9798%2033.10754%205.01627%2022.395%2059.506)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.8%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.9%22%20stop-opacity%3D%22.5%22%2F%3E%3Cstop%20offset%3D%221%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(-2.34024%2058.50621%20-124.60636%20-4.98423%209.484%2015.677)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2335C1F1%22%2F%3E%3Cstop%20offset%3D%22.1%22%20stop-color%3D%22%2334C1ED%22%2F%3E%3Cstop%20offset%3D%22.2%22%20stop-color%3D%22%232FC2DF%22%2F%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%232BC3D2%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%2336C752%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22g%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(73.74%2019.467%2059.767)%20scale(28.1258%2022.8719)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2366EB6E%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2366EB6E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2218.968%22%20x2%3D%2270.537%22%20y1%3D%2253.164%22%20y2%3D%2253.164%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%230C59A4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23114A8B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%2246.14%22%20x2%3D%2213.967%22%20y1%3D%2230.791%22%20y2%3D%2265.854%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%231B9DE2%22%2F%3E%3Cstop%20offset%3D%22.2%22%20stop-color%3D%22%231595DF%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%230680D7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230078D4%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h74v74H0z%22%20transform%3D%22translate(2%202)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{t as default}; diff --git a/dist/assets/Firefox-AAHGJQIP-Bp_Hm04m.js b/dist/assets/Firefox-AAHGJQIP-Bp_Hm04m.js new file mode 100644 index 0000000..b1ce1e3 --- /dev/null +++ b/dist/assets/Firefox-AAHGJQIP-Bp_Hm04m.js @@ -0,0 +1 @@ +var o="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M72.049%2026.827c-1.559-3.75-4.72-7.798-7.195-9.078a37.264%2037.264%200%200%201%203.632%2010.883l.007.06c-4.055-10.105-10.929-14.186-16.546-23.06a43.39%2043.39%200%200%201-.845-1.373%2011.337%2011.337%200%200%201-.395-.74%206.525%206.525%200%200%201-.535-1.42.092.092%200%200%200-.08-.093.128.128%200%200%200-.069%200c-.004%200-.012.008-.017.01-.006.002-.018.01-.026.014l.014-.024C40.986%207.28%2037.927%2017.042%2037.65%2021.928a17.944%2017.944%200%200%200-9.874%203.804c-.295-.25-.604-.484-.925-.701a16.629%2016.629%200%200%201-.1-8.766%2026.558%2026.558%200%200%200-8.634%206.672h-.016c-1.421-1.802-1.322-7.743-1.24-8.983a6.44%206.44%200%200%200-1.197.635%2026.119%2026.119%200%200%200-3.506%203.003%2031.312%2031.312%200%200%200-3.352%204.023v.005-.006a30.287%2030.287%200%200%200-4.812%2010.863l-.048.237a57.058%2057.058%200%200%200-.353%202.24c0%20.026-.005.051-.008.078a34.183%2034.183%200%200%200-.582%204.944v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.92.163-1.388a36.883%2036.883%200%200%200-2.326-18.017l.004.006ZM30.713%2054.902c.168.08.325.167.497.244l.025.016c-.174-.083-.348-.17-.522-.26Zm37.78-26.2v-.034l.007.038-.007-.004Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M72.05%2026.828c-1.558-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.882v.034l.007.038a32.48%2032.48%200%200%201-1.116%2024.207c-4.11%208.82-14.056%2017.86-29.63%2017.415C20.926%2069.85%206.101%2057.362%203.335%2041.011c-.505-2.579%200-3.886.253-5.982a26.723%2026.723%200%200%200-.576%204.949v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.921.163-1.389a36.884%2036.884%200%200%200-2.326-18.016l-.004.005Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M72.05%2026.828c-1.558-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.882v.034l.007.038a32.48%2032.48%200%200%201-1.116%2024.207c-4.11%208.82-14.056%2017.86-29.63%2017.415C20.926%2069.85%206.101%2057.362%203.335%2041.011c-.505-2.579%200-3.886.253-5.982a26.723%2026.723%200%200%200-.576%204.949v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.921.163-1.389a36.884%2036.884%200%200%200-2.326-18.016l-.004.005Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M54.615%2031.037c.078.055.15.11.223.164a19.525%2019.525%200%200%200-3.33-4.344c-11.151-11.15-2.922-24.17-1.535-24.837l.014-.02C40.978%207.274%2037.92%2017.037%2037.643%2021.923c.418-.029.832-.064%201.26-.064a18.1%2018.1%200%200%201%2015.712%209.176v.002Z%22%2F%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M38.923%2033.268c-.06.892-3.211%203.969-4.313%203.969-10.198%200-11.854%206.169-11.854%206.169.451%205.195%204.071%209.476%208.447%2011.733.2.104.403.197.605.29.352.154.703.298%201.054.43a15.91%2015.91%200%200%200%204.666.9c17.878.839%2021.339-21.375%208.438-27.825a12.381%2012.381%200%200%201%208.648%202.1A18.1%2018.1%200%200%200%2038.9%2021.857c-.425%200-.842.036-1.26.064a17.943%2017.943%200%200%200-9.873%203.804c.546.463%201.164%201.081%202.464%202.363%202.433%202.397%208.675%204.881%208.689%205.172l.002.008Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22M38.923%2033.268c-.06.892-3.211%203.969-4.313%203.969-10.198%200-11.854%206.169-11.854%206.169.451%205.195%204.071%209.476%208.447%2011.733.2.104.403.197.605.29.352.154.703.298%201.054.43a15.91%2015.91%200%200%200%204.666.9c17.878.839%2021.339-21.375%208.438-27.825a12.381%2012.381%200%200%201%208.648%202.1A18.1%2018.1%200%200%200%2038.9%2021.857c-.425%200-.842.036-1.26.064a17.943%2017.943%200%200%200-9.873%203.804c.546.463%201.164%201.081%202.464%202.363%202.433%202.397%208.675%204.881%208.689%205.172l.002.008Z%22%2F%3E%3Cpath%20fill%3D%22url(%23h)%22%20d%3D%22M26.097%2024.542c.29.185.53.346.74.491a16.628%2016.628%200%200%201-.1-8.765%2026.557%2026.557%200%200%200-8.633%206.671c.174-.004%205.377-.098%207.993%201.603Z%22%2F%3E%3Cpath%20fill%3D%22url(%23i)%22%20d%3D%22M3.327%2041.013c2.768%2016.35%2017.59%2028.843%2034.414%2029.315%2015.573.44%2025.52-8.6%2029.63-17.415a32.48%2032.48%200%200%200%201.115-24.207v-.034c0-.027-.005-.043%200-.035l.007.06c1.272%208.307-2.953%2016.351-9.56%2021.802l-.02.046c-12.871%2010.484-25.188%206.324-27.677%204.627-.174-.084-.348-.17-.522-.26-7.503-3.587-10.604-10.42-9.938-16.286a9.21%209.21%200%200%201-8.495-5.344%2013.528%2013.528%200%200%201%2013.186-.53%2017.86%2017.86%200%200%200%2013.464.53c-.014-.292-6.256-2.776-8.69-5.173-1.3-1.282-1.917-1.899-2.464-2.363-.295-.25-.604-.484-.925-.7-.213-.146-.453-.303-.74-.492-2.616-1.701-7.818-1.608-7.99-1.603h-.017c-1.422-1.802-1.322-7.742-1.24-8.983-.42.169-.822.382-1.198.636a26.105%2026.105%200%200%200-3.505%203.002%2031.315%2031.315%200%200%200-3.366%204.013v.006-.006a30.287%2030.287%200%200%200-4.812%2010.863c-.018.073-1.292%205.644-.664%208.533l.007-.002Z%22%2F%3E%3Cpath%20fill%3D%22url(%23j)%22%20d%3D%22M51.507%2026.855a19.527%2019.527%200%200%201%203.33%204.349c.198.149.382.297.538.44%208.132%207.496%203.871%2018.09%203.554%2018.84%206.605-5.442%2010.826-13.491%209.559-21.8C64.43%2018.568%2057.55%2014.487%2051.942%205.613a43.401%2043.401%200%200%201-.844-1.373%2011.29%2011.29%200%200%201-.396-.74%206.525%206.525%200%200%201-.534-1.42.093.093%200%200%200-.082-.093.127.127%200%200%200-.067%200c-.005%200-.012.008-.018.01l-.026.014c-1.387.658-9.614%2013.686%201.536%2024.827l-.004.016Z%22%2F%3E%3Cpath%20fill%3D%22url(%23k)%22%20d%3D%22M55.375%2031.65a7.495%207.495%200%200%200-.538-.441c-.073-.055-.145-.11-.223-.164a12.382%2012.382%200%200%200-8.647-2.1c12.9%206.45%209.439%2028.658-8.438%2027.825a15.95%2015.95%200%200%201-4.667-.9%2018.885%2018.885%200%200%201-1.053-.431%2013.248%2013.248%200%200%201-.605-.289l.025.016c2.493%201.702%2014.806%205.86%2027.677-4.627l.02-.046c.322-.75%204.582-11.345-3.553-18.84l.002-.004Z%22%2F%3E%3Cpath%20fill%3D%22url(%23l)%22%20d%3D%22M22.756%2043.4s1.655-6.17%2011.853-6.17c1.102%200%204.257-3.076%204.313-3.968a17.86%2017.86%200%200%201-13.463-.53%2013.529%2013.529%200%200%200-13.186.53%209.21%209.21%200%200%200%208.495%205.344c-.664%205.864%202.436%2012.696%209.938%2016.286.168.08.325.167.497.244-4.38-2.262-7.996-6.541-8.447-11.733V43.4Z%22%2F%3E%3Cpath%20fill%3D%22url(%23m)%22%20d%3D%22M72.049%2026.827c-1.559-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.883l.007.06c-4.055-10.105-10.929-14.186-16.546-23.06a43.39%2043.39%200%200%201-.844-1.373%2011.337%2011.337%200%200%201-.396-.74%206.525%206.525%200%200%201-.534-1.42.092.092%200%200%200-.082-.093.128.128%200%200%200-.067%200c-.005%200-.012.008-.018.01l-.026.014.014-.024C40.986%207.28%2037.928%2017.042%2037.65%2021.928c.418-.028.833-.064%201.26-.064a18.1%2018.1%200%200%201%2015.713%209.177%2012.38%2012.38%200%200%200-8.648-2.1c12.9%206.45%209.439%2028.658-8.438%2027.826a15.952%2015.952%200%200%201-4.666-.9%2018.933%2018.933%200%200%201-1.054-.432c-.202-.093-.405-.185-.605-.289l.025.016a19.04%2019.04%200%200%201-.522-.26c.168.08.325.167.497.244-4.38-2.263-7.996-6.542-8.447-11.733%200%200%201.655-6.17%2011.853-6.17%201.102%200%204.257-3.076%204.313-3.968-.013-.292-6.255-2.776-8.688-5.173-1.3-1.281-1.918-1.899-2.465-2.362-.295-.25-.604-.485-.925-.702a16.628%2016.628%200%200%201-.1-8.765%2026.557%2026.557%200%200%200-8.634%206.671h-.016c-1.422-1.801-1.322-7.742-1.24-8.983-.42.169-.822.382-1.197.636a26.112%2026.112%200%200%200-3.506%203.002%2031.304%2031.304%200%200%200-3.352%204.023v.006-.007a30.287%2030.287%200%200%200-4.812%2010.864l-.048.236c-.068.316-.37%201.919-.414%202.263a41.724%2041.724%200%200%200-.53%205v.185a35.866%2035.866%200%200%200%2071.206%206.064c.06-.462.11-.92.163-1.388a36.885%2036.885%200%200%200-2.326-18.016l.002-.002Zm-3.558%201.842.006.038-.006-.038Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(64.999%2010.329)%20scale(74.768)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.129%22%20stop-color%3D%22%23FFBD4F%22%2F%3E%3Cstop%20offset%3D%22.186%22%20stop-color%3D%22%23FFAC31%22%2F%3E%3Cstop%20offset%3D%22.247%22%20stop-color%3D%22%23FF9D17%22%2F%3E%3Cstop%20offset%3D%22.283%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.403%22%20stop-color%3D%22%23FF563B%22%2F%3E%3Cstop%20offset%3D%22.467%22%20stop-color%3D%22%23FF3750%22%2F%3E%3Cstop%20offset%3D%22.71%22%20stop-color%3D%22%23F5156C%22%2F%3E%3Cstop%20offset%3D%22.782%22%20stop-color%3D%22%23EB0878%22%2F%3E%3Cstop%20offset%3D%22.86%22%20stop-color%3D%22%23E50080%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(37.239%2040.865)%20scale(74.768)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%23960E18%22%2F%3E%3Cstop%20offset%3D%22.351%22%20stop-color%3D%22%23B11927%22%20stop-opacity%3D%22.74%22%2F%3E%3Cstop%20offset%3D%22.435%22%20stop-color%3D%22%23DB293D%22%20stop-opacity%3D%22.343%22%2F%3E%3Cstop%20offset%3D%22.497%22%20stop-color%3D%22%23F5334B%22%20stop-opacity%3D%22.094%22%2F%3E%3Cstop%20offset%3D%22.53%22%20stop-color%3D%22%23FF3750%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(46.49%20-6.328)%20scale(54.1606)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.132%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.252%22%20stop-color%3D%22%23FFDC3E%22%2F%3E%3Cstop%20offset%3D%22.506%22%20stop-color%3D%22%23FF9D12%22%2F%3E%3Cstop%20offset%3D%22.526%22%20stop-color%3D%22%23FF980E%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(28.91%2060.297)%20scale(35.5981)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.353%22%20stop-color%3D%22%233A8EE6%22%2F%3E%3Cstop%20offset%3D%22.472%22%20stop-color%3D%22%235C79F0%22%2F%3E%3Cstop%20offset%3D%22.669%22%20stop-color%3D%22%239059FF%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C139E6%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22g%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(18.34852%20-4.43626%205.19374%2021.48145%2040.856%2034.448)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.206%22%20stop-color%3D%22%239059FF%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.278%22%20stop-color%3D%22%238C4FF3%22%20stop-opacity%3D%22.064%22%2F%3E%3Cstop%20offset%3D%22.747%22%20stop-color%3D%22%237716A8%22%20stop-opacity%3D%22.45%22%2F%3E%3Cstop%20offset%3D%22.975%22%20stop-color%3D%22%236E008B%22%20stop-opacity%3D%22.6%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22h%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(36.313%207.553)%20scale(25.6136)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFE226%22%2F%3E%3Cstop%20offset%3D%22.121%22%20stop-color%3D%22%23FFDB27%22%2F%3E%3Cstop%20offset%3D%22.295%22%20stop-color%3D%22%23FFC82A%22%2F%3E%3Cstop%20offset%3D%22.502%22%20stop-color%3D%22%23FFA930%22%2F%3E%3Cstop%20offset%3D%22.732%22%20stop-color%3D%22%23FF7E37%22%2F%3E%3Cstop%20offset%3D%22.792%22%20stop-color%3D%22%23FF7139%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22i%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(56.67%20-9.104)%20scale(109.283)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.113%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.456%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.622%22%20stop-color%3D%22%23FF5634%22%2F%3E%3Cstop%20offset%3D%22.716%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.904%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22j%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(83.976%2025.485%2024.914)%20scale(80.0845%2052.5588)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.06%22%20stop-color%3D%22%23FFE847%22%2F%3E%3Cstop%20offset%3D%22.168%22%20stop-color%3D%22%23FFC830%22%2F%3E%3Cstop%20offset%3D%22.304%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.356%22%20stop-color%3D%22%23FF8B16%22%2F%3E%3Cstop%20offset%3D%22.455%22%20stop-color%3D%22%23FF672A%22%2F%3E%3Cstop%20offset%3D%22.57%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.737%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22k%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(36.313%2016.807)%20scale(68.2166)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.137%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.48%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.592%22%20stop-color%3D%22%23FF5634%22%2F%3E%3Cstop%20offset%3D%22.655%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.904%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22l%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(53.894%2020.507)%20scale(74.6662)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.094%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.231%22%20stop-color%3D%22%23FFE141%22%2F%3E%3Cstop%20offset%3D%22.509%22%20stop-color%3D%22%23FFAF1E%22%2F%3E%3Cstop%20offset%3D%22.626%22%20stop-color%3D%22%23FF980E%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2267.302%22%20x2%3D%227.762%22%20y1%3D%2213.461%22%20y2%3D%2270.907%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.048%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.111%22%20stop-color%3D%22%23FFE847%22%2F%3E%3Cstop%20offset%3D%22.225%22%20stop-color%3D%22%23FFC830%22%2F%3E%3Cstop%20offset%3D%22.368%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.401%22%20stop-color%3D%22%23FF8B16%22%2F%3E%3Cstop%20offset%3D%22.462%22%20stop-color%3D%22%23FF672A%22%2F%3E%3Cstop%20offset%3D%22.534%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.705%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22m%22%20x1%3D%2266.58%22%20x2%3D%2215.926%22%20y1%3D%2213.156%22%20y2%3D%2263.819%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.167%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%22.266%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.634%22%2F%3E%3Cstop%20offset%3D%22.489%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.217%22%2F%3E%3Cstop%20offset%3D%22.6%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h71.64v74H0z%22%20transform%3D%22translate(3%202)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{o as default}; diff --git a/dist/assets/Linux-OO4TNCLJ-B0aw93n9.js b/dist/assets/Linux-OO4TNCLJ-B0aw93n9.js new file mode 100644 index 0000000..41d2290 --- /dev/null +++ b/dist/assets/Linux-OO4TNCLJ-B0aw93n9.js @@ -0,0 +1 @@ +var e="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3Cpath%20fill%3D%22%23FDFDFB%22%20d%3D%22M19.337%2013.875a1.938%201.938%200%200%200-.345.73c-.066.262-.09.534-.101.806-.021.542.013%201.093-.132%201.616-.153.559-.497%201.044-.832%201.515-.583.817-1.172%201.657-1.459%202.62a4.652%204.652%200%200%200-.17%201.803%2019.233%2019.233%200%200%200-1.684%203.034c-.709%201.607-1.195%203.317-1.365%205.064-.21%202.14.063%204.34.91%206.317.608%201.43%201.52%202.737%202.695%203.758.597.517%201.26.958%201.97%201.306%202.457%201.21%205.495%201.212%207.912-.077%201.263-.673%202.33-1.657%203.358-2.653.618-.6%201.235-1.215%201.708-1.935.91-1.389%201.226-3.077%201.423-4.725.343-2.88.354-5.925-.91-8.537a9.406%209.406%200%200%200-1.71-2.446%2013.35%2013.35%200%200%200-1.08-3.642c-.384-.834-.85-1.627-1.207-2.47-.146-.348-.274-.704-.435-1.043-.163-.34-.362-.666-.636-.927a2.592%202.592%200%200%200-.99-.575%204.244%204.244%200%200%200-1.136-.195c-.77-.04-1.541.062-2.312.03-.613-.025-1.224-.132-1.837-.096a2.829%202.829%200%200%200-.896.19%201.793%201.793%200%200%200-.74.532Z%22%2F%3E%3Cmask%20id%3D%22a%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23b)%22%20mask%3D%22url(%23a)%22%20opacity%3D%22.25%22%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M16.626%2021.596c.163.246-.104%201.095%203.723.552%200%200-.673.073-1.335.226-1.029.345-1.925.73-2.619%201.24-.684.506-1.187%201.164-1.815%201.729%200%200%201.018-1.86%201.271-2.421.255-.56-.041-.535.16-1.36.2-.825.692-1.618.692-1.618s-.402%201.167-.077%201.652Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22d%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23e)%22%20mask%3D%22url(%23d)%22%20opacity%3D%22.42%22%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M28.927%2021.373c-.78.544-1.237.48-2.182.585-.947.107-3.506.068-3.506.068s.37-.006%201.192.146c.822.154%202.496.3%203.439.658.945.36%201.288.463%201.862.825.816.516%201.416%201.324%202.195%201.89%200%200%20.038-.75-.277-1.31-.315-.561-1.162-1.444-1.412-2.27-.247-.824-.367-2.444-.367-2.444s-.165%201.31-.944%201.852Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22g%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23h)%22%20mask%3D%22url(%23g)%22%20opacity%3D%22.2%22%3E%3Cpath%20fill%3D%22url(%23i)%22%20d%3D%22M21.594%2020.214c-.03.235-.067.47-.112.702a2.085%202.085%200%200%201-.09.337.763.763%200%200%201-.191.29c-.077.07-.17.117-.263.16a4.02%204.02%200%200%201-1.147.326c.157.012.315.027.474.044.1.01.199.022.294.046a.837.837%200%200%201%20.274.122.758.758%200%200%201%20.21.252c.103.19.137.412.156.631.024.278.026.56.005.837.02-.186.058-.372.117-.548.106-.322.275-.622.504-.872a1.66%201.66%200%200%201%201.47-.55%201.822%201.822%200%200%201-1.163-.361%201.508%201.508%200%200%201-.416-.469%201.31%201.31%200%200%201-.122-.947Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22j%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23k)%22%20mask%3D%22url(%23j)%22%20opacity%3D%22.11%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M20.597%2025.714a14.133%2014.133%200%200%200-.407%202.308c-.103%201.1-.079%202.209-.139%203.313-.048.936-.16%201.883.004%202.807.077.44.216.87.413%201.271.03-.154.054-.307.067-.463.07-.75-.056-1.502-.1-2.252-.074-1.316.108-2.632.183-3.949.056-1.01.05-2.025-.021-3.035Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22l%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23m)%22%20mask%3D%22url(%23l)%22%20opacity%3D%22.75%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M33.765%2024.606c.193-.03%201.376.976%201.215%201.351-.161.374-.467.149-.684.15-.218.004-.812.274-.912.104-.1-.171.263-.569.452-.902.154-.268-.262-.673-.071-.703Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22n%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23o)%22%20mask%3D%22url(%23n)%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M26.535%202.085c-.414.293-.234.658-.056%201.024.178.367-.392%201.423-.398%201.468-.005.045%201.122-.534%201.429-.913.364-.445%201.28.604%201.23.444.002-.285-1.79-2.314-2.205-2.023Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22p%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23q)%22%20mask%3D%22url(%23p)%22%3E%3Cpath%20fill%3D%22%23838384%22%20d%3D%22M29.676%2014.368c-.35.319.165.797.407%201.358.151.348.57.841.975.763.305-.06.493-.499.465-.807-.057-.596-.56-.736-.925-.94-.289-.162-.677-.597-.922-.374Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M15.746%2018.92c-1.144%201.298-2.32%202.556-2.964%203.96-.32.713-.47%201.488-.69%202.238a16.86%2016.86%200%200%201-.964%202.478c-.35.74-.737%201.465-1.121%202.186-.281.527-.566%201.064-.664%201.652-.077.465-.034.945.086%201.401.118.456.308.89.523%201.309.915%201.79%202.29%203.332%203.917%204.513.74.534%201.529.997%202.36%201.378.45.204.922.388%201.417.396.247.005.496-.036.723-.135.225-.1.428-.26.563-.467.165-.255.221-.572.187-.874a2.104%202.104%200%200%200-.309-.85c-.386-.633-.996-1.092-1.582-1.546a53.126%2053.126%200%200%201-3.666-3.109c-.33-.31-.662-.626-.893-1.016-.225-.379-.347-.81-.429-1.243-.227-1.187-.169-2.436.234-3.576.16-.446.368-.872.57-1.3.35-.74.68-1.496%201.138-2.174.572-.846%201.337-1.562%201.802-2.47.394-.767.554-1.627.705-2.475.12-.664.347-1.312.463-1.976-.226.431-.958%201.138-1.406%201.7Z%22%2F%3E%3Cmask%20id%3D%22r%22%20width%3D%2211%22%20height%3D%2224%22%20x%3D%229%22%20y%3D%2217%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M15.746%2018.92c-1.144%201.298-2.32%202.556-2.964%203.96-.32.713-.47%201.488-.69%202.238a16.86%2016.86%200%200%201-.964%202.478c-.35.74-.737%201.465-1.121%202.186-.281.527-.566%201.064-.664%201.652-.077.465-.034.945.086%201.401.118.456.308.89.523%201.309.915%201.79%202.29%203.332%203.917%204.513.74.534%201.529.997%202.36%201.378.45.204.922.388%201.417.396.247.005.496-.036.723-.135.225-.1.428-.26.563-.467.165-.255.221-.572.187-.874a2.104%202.104%200%200%200-.309-.85c-.386-.633-.996-1.092-1.582-1.546a53.126%2053.126%200%200%201-3.666-3.109c-.33-.31-.662-.626-.893-1.016-.225-.379-.347-.81-.429-1.243-.227-1.187-.169-2.436.234-3.576.16-.446.368-.872.57-1.3.35-.74.68-1.496%201.138-2.174.572-.846%201.337-1.562%201.802-2.47.394-.767.554-1.627.705-2.475.12-.664.347-1.312.463-1.976-.226.431-.958%201.138-1.406%201.7Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23s)%22%20mask%3D%22url(%23r)%22%20opacity%3D%22.95%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M14.43%2023.644a5.32%205.32%200%200%200-.962%201.183c-.431.72-.684%201.53-1%202.308-.232.58-.504%201.162-.536%201.787-.016.32.03.641.042.962.011.32-.019.654-.177.933-.13.235-.35.419-.603.509.343.114.647.335.862.624.18.244.296.527.452.784.128.21.283.405.476.557.192.153.422.262.664.292a1.17%201.17%200%200%200%20.932-.296%2021.852%2021.852%200%200%201%20.832-8.694c.055-.177.111-.355.126-.539a.775.775%200%200%200-.135-.526.56.56%200%200%200-.52-.22.573.573%200%200%200-.271.107.584.584%200%200%200-.182.229Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M34.267%2023.835c.983.791%201.607%201.986%201.8%203.232.15.972.053%201.971-.166%202.93-.22.96-.557%201.886-.895%202.812-.133.367-.268.74-.32%201.129-.055.39-.021.8.166%201.145.216.396.617.668%201.049.795.425.128.885.124%201.316.017.431-.107%201.157-.246%201.507-.52.891-.691%201.103-1.893%201.315-2.947.22-1.1.112-2.254-.08-3.365-.265-1.517-.71-2.999-1.274-4.43a15.429%2015.429%200%200%200-1.583-2.992c-.622-.917-1.503-1.631-2.156-2.527-.227-.312-.498-.634-.72-.949-.48-.679-.371-.551-.67-.992-.215-.319-.556-.427-.914-.566a1.82%201.82%200%200%200-1.133-.077c-.487.137-.887.523-1.098.982-.212.462-.25.99-.167%201.491.107.645.401%201.245.735%201.808.375.635.81%201.248%201.378%201.72.592.494%201.309.82%201.91%201.304Z%22%2F%3E%3Cmask%20id%3D%22t%22%20width%3D%2211%22%20height%3D%2220%22%20x%3D%2230%22%20y%3D%2216%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M34.267%2023.835c.983.791%201.607%201.986%201.8%203.232.15.972.053%201.971-.166%202.93-.22.96-.557%201.886-.895%202.812-.133.367-.268.74-.32%201.129-.055.39-.021.8.166%201.145.216.396.617.668%201.049.795.425.128.885.124%201.316.017.431-.107%201.157-.246%201.507-.52.891-.691%201.103-1.893%201.315-2.947.22-1.1.112-2.254-.08-3.365-.265-1.517-.71-2.999-1.274-4.43a15.429%2015.429%200%200%200-1.583-2.992c-.622-.917-1.503-1.631-2.156-2.527-.227-.312-.498-.634-.72-.949-.48-.679-.371-.551-.67-.992-.215-.319-.556-.427-.914-.566a1.82%201.82%200%200%200-1.133-.077c-.487.137-.887.523-1.098.982-.212.462-.25.99-.167%201.491.107.645.401%201.245.735%201.808.375.635.81%201.248%201.378%201.72.592.494%201.309.82%201.91%201.304Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23u)%22%20mask%3D%22url(%23t)%22%3E%3Cpath%20fill%3D%22%23838384%22%20d%3D%22M31.954%2022.31c.078.076.161.152.245.224.604.493.925%201.046%201.538%201.53%201.001.791%202.015%202.156%202.212%203.403.154.973-.048%201.502-.296%202.647-.247%201.148-.949%202.772-1.33%203.878-.15.44.308.259.248.724-.03.228-.033.459-.005.688.003-.043.005-.09.01-.133.074-.634.267-1.243.479-1.842.407-1.149.874-2.278%201.196-3.459.323-1.18.287-2.029.118-3.043-.212-1.277-.954-2.454-2.004-3.233-.744-.549-1.62-.901-2.411-1.383Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23v)%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3Cmask%20id%3D%22w%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23x)%22%20mask%3D%22url(%23w)%22%3E%3Cpath%20fill%3D%22%23D99A03%22%20d%3D%22M10.717%2033.319c.235-.094.501-.105.747-.049.247.056.478.176.677.332.4.31.678.744.947%201.174a77.015%2077.015%200%200%201%201.86%203.16c.45.809.877%201.632%201.428%202.373.366.491.784.943%201.157%201.428.373.486.705%201.015.87%201.605.214.76.128%201.602-.24%202.3a3.07%203.07%200%200%201-1.162%201.214%202.988%202.988%200%200%201-1.63.401c-.904-.04-1.73-.493-2.582-.798-1.633-.593-3.4-.673-5.077-1.135-.6-.163-1.185-.38-1.787-.532-.268-.068-.54-.124-.793-.23-.253-.108-.491-.273-.63-.51a1.134%201.134%200%200%201-.137-.591%201.88%201.88%200%200%201%20.131-.599c.147-.382.375-.727.522-1.11.223-.577.25-1.213.21-1.83-.042-.616-.15-1.23-.188-1.846a3.207%203.207%200%200%201%20.038-.827c.056-.272.174-.535.37-.73.215-.212.507-.326.805-.373.296-.045.598-.024.896.002.3.026.6.06.9.043.3-.019.604-.092.852-.26.225-.152.393-.375.523-.613.13-.239.221-.495.32-.747.098-.253.205-.504.358-.73.154-.222.362-.42.615-.522Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22y%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23z)%22%20mask%3D%22url(%23y)%22%3E%3Cpath%20fill%3D%22%23F5BD0C%22%20d%3D%22M10.498%2032.732c.229-.113.497-.135.746-.084.25.05.482.172.68.331.391.32.642.775.875%201.221.532%201.024%201.031%202.07%201.668%203.036.465.699%201%201.35%201.469%202.047.635.943%201.153%201.982%201.366%203.094.143.75.14%201.558-.22%202.231a2.479%202.479%200%200%201-1.079%201.035c-.454.229-.977.32-1.485.276-.8-.07-1.526-.463-2.28-.739-1.337-.486-2.782-.604-4.159-.971-.579-.154-1.149-.355-1.736-.477-.26-.054-.525-.093-.772-.187-.248-.094-.482-.25-.61-.478a.967.967%200%200%201-.105-.533c.013-.181.068-.36.139-.53.144-.338.356-.649.467-.998.165-.515.097-1.072-.026-1.6-.122-.524-.3-1.04-.355-1.576a2.138%202.138%200%200%201%20.032-.716c.054-.235.165-.46.34-.627.224-.215.54-.324.854-.354.314-.03.629.011.94.056.311.045.626.094.94.08.314-.014.635-.096.88-.29.244-.19.398-.474.486-.767.088-.294.116-.6.152-.903.036-.304.08-.611.199-.895.118-.283.317-.543.594-.682Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22A%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23B)%22%20mask%3D%22url(%23A)%22%3E%3Cpath%20fill%3D%22url(%23C)%22%20d%3D%22M13.35%2035.29c.422.76.679%201.634%201.097%202.403.384.707.821%201.434%201.211%202.085.175.29.58.737.988%201.429.371.626.746%201.502.956%201.796-.12-.345-.367-1.27-.663-1.927-.276-.615-.598-.966-.795-1.298-.39-.65-.812-1.237-1.213-1.858-.553-.857-.975-1.815-1.581-2.63Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22D%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23E)%22%20mask%3D%22url(%23D)%22%20opacity%3D%22.2%22%3E%3Cpath%20fill%3D%22url(%23F)%22%20d%3D%22M41.006%2040.427c-.075.25-.191.491-.34.712-.327.486-.805.853-1.282%201.191-.812.576-1.659%201.104-2.416%201.759-.507.439-.97.932-1.397%201.45-.366.442-.711.907-1.13%201.3-.421.398-.916.72-1.45.895a3.52%203.52%200%200%201-1.963.041c-.44-.112-.869-.307-1.14-.662-.272-.354-.36-.832-.392-1.301-.057-.829.043-1.674.133-2.516.075-.7.144-1.4.172-2.097.05-1.269-.034-2.525-.204-3.759a2.817%202.817%200%200%201-.043-.628c.017-.214.088-.435.238-.6.139-.152.332-.242.523-.285.191-.045.386-.047.58-.053.455-.01.91-.039%201.359.002.283.025.56.077.842.103.47.045.96.023%201.432-.116.508-.15.992-.43%201.51-.506.211-.032.423-.028.63.002.21.028.42.086.58.215.125.098.215.231.284.373.105.214.169.449.206.69.032.214.045.434.1.64.09.34.296.628.541.862.248.235.535.42.824.604.286.182.575.362.88.512.145.071.293.135.43.216.139.082.266.182.358.313a.885.885%200%200%201%20.135.643Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23G)%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3Cmask%20id%3D%22H%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23I)%22%20mask%3D%22url(%23H)%22%3E%3Cpath%20fill%3D%22%23CD8907%22%20d%3D%22M43.727%2040.523c-.1.249-.24.483-.416.688-.389.453-.925.752-1.46%201.02-.914.457-1.86.858-2.718%201.41-.574.369-1.106.802-1.603%201.27-.424.4-.827.828-1.303%201.165a3.767%203.767%200%200%201-1.622.675c-.712.105-1.447-.03-2.11-.313-.46-.199-.907-.48-1.175-.906-.266-.423-.328-.94-.328-1.441-.004-.883.163-1.757.32-2.625.132-.722.255-1.446.334-2.175.143-1.328.137-2.667.047-3.998-.015-.223-.032-.448.002-.67.034-.22.126-.44.294-.586a.956.956%200%200%201%20.583-.206c.209-.012.417.022.625.052.49.071.98.126%201.459.25.302.078.596.183.896.262.502.135%201.03.199%201.545.139.557-.064%201.097-.27%201.655-.257.231.005.458.049.677.116.224.07.445.169.61.334.123.126.208.283.277.446.1.242.167.5.17.763.007.274-.052.548-.016.82.03.219.124.427.244.615.118.187.262.358.407.526.277.329.555.662.903.914.396.286.867.455%201.275.721.122.081.24.171.327.29a.767.767%200%200%201%20.1.7Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22J%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23K)%22%20mask%3D%22url(%23J)%22%3E%3Cpath%20fill%3D%22%23F5C021%22%20d%3D%22M43.67%2040.24a3.051%203.051%200%200%201-.427.695c-.397.484-.936.816-1.5%201.03-.932.352-1.948.399-2.861.8-.557.244-1.06.611-1.568.96-.408.28-.828.551-1.278.746-.51.223-1.05.347-1.594.435a5.002%205.002%200%200%201-1.044.077%202.247%202.247%200%200%201-1.007-.28%201.414%201.414%200%200%201-.568-.58c-.137-.28-.162-.608-.16-.927.01-.843.191-1.68.186-2.525-.006-.737-.152-1.463-.193-2.198-.081-1.414.223-2.85-.045-4.236-.042-.223-.1-.444-.098-.67a.997.997%200%200%201%20.058-.333.648.648%200%200%201%20.19-.266.597.597%200%200%201%20.245-.105.834.834%200%200%201%20.265.002c.174.028.34.096.511.146.488.146%201.004.143%201.5.253.312.068.612.182.921.265a4.166%204.166%200%200%200%201.586.14c.57-.067%201.127-.273%201.701-.258.236.005.469.048.696.116.227.067.453.163.626.337.122.126.212.285.283.45.107.242.18.505.178.771-.002.139-.022.276-.036.414a1.32%201.32%200%200%200%20.017.413c.034.135.104.257.182.367.079.111.169.21.252.32.228.301.393.654.571.993.178.34.38.675.662.92.385.332.882.465%201.31.73.127.077.246.167.335.29a.773.773%200%200%201%20.136.34.84.84%200%200%201-.031.367Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22L%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23M)%22%20mask%3D%22url(%23L)%22%3E%3Cpath%20fill%3D%22url(%23N)%22%20d%3D%22M31.515%2034.046c.529-.142.979.259%201.363.56.248.213.608.16.911.17.505-.017%201.005.084%201.51.022.993-.084%201.967-.328%202.964-.37.476-.03%201.013-.057%201.423.22.167.116.413.606.576.422-.068-.514-.448-1.01-.958-1.148-.401-.063-.806.047-1.212.012-1.198-.028-2.39-.252-3.592-.188-.836.008-1.67-.032-2.507-.064-.328-.067-.444.224-.622.336.047.036.063.047.144.028Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22O%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23P)%22%20mask%3D%22url(%23O)%22%20opacity%3D%22.35%22%3E%3Cpath%20fill%3D%22url(%23Q)%22%20d%3D%22M38.53%2035.177a.852.852%200%200%200-.441-.388%201.485%201.485%200%200%200-.587-.102c-.4.004-.797.107-1.196.074-.336-.03-.655-.156-.983-.237-.34-.082-.7-.114-1.035-.022-.36.097-.677.34-.875.654-.177.278-.26.606-.285.934-.027.328.001.656.035.984.023.237.05.473.107.704a1.9%201.9%200%200%200%20.285.648c.2.278.499.477.82.595a2.281%202.281%200%200%200%201.636-.029%204.514%204.514%200%200%200%202.16-1.987c.17-.315.302-.65.386-.996.034-.138.06-.279.06-.422a.863.863%200%200%200-.088-.41Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22R%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23S)%22%20mask%3D%22url(%23R)%22%20opacity%3D%22.35%22%3E%3Cpath%20fill%3D%22url(%23T)%22%20d%3D%22M38.53%2034.667c-.09-.13-.256-.225-.441-.281a2.026%202.026%200%200%200-.587-.074c-.4.004-.797.08-1.196.053-.336-.02-.655-.113-.983-.169-.34-.06-.7-.084-1.035-.017-.36.07-.677.244-.875.473-.177.2-.26.439-.285.675-.027.236.001.474.035.71.023.171.05.344.107.51.058.167.146.33.285.47.2.2.499.342.82.429a3.09%203.09%200%200%200%201.636-.021c.915-.287%201.69-.802%202.16-1.436.17-.229.302-.47.386-.72a.97.97%200%200%200%20.06-.304.483.483%200%200%200-.088-.298Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3Cmask%20id%3D%22U%22%20width%3D%227%22%20height%3D%225%22%20x%3D%2233%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23V)%22%20mask%3D%22url(%23U)%22%3E%3Cpath%20fill%3D%22url(%23W)%22%20d%3D%22M35.417%2032.076a2.015%202.015%200%200%200-1.626.975%202.014%202.014%200%200%200-.268%201.157%201.82%201.82%200%200%201%20.223-.803c.23-.418.65-.733%201.121-.82.29-.052.587-.02.878.016.281.035.563.073.838.13.428.095.85.237%201.208.486.082.059.16.124.227.203a.604.604%200%200%201%20.136.266.642.642%200%200%201-.086.43%201.61%201.61%200%200%201-.277.348%205.614%205.614%200%200%201-.268.248c.414-.08.832-.193%201.177-.433.144-.103.277-.225.364-.379a.73.73%200%200%200%20.08-.516.78.78%200%200%200-.172-.313%201.54%201.54%200%200%200-.272-.232%203.238%203.238%200%200%200-1.464-.56%2016.983%2016.983%200%200%200-1.017-.157%204.421%204.421%200%200%200-.802-.046Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22X%22%20width%3D%227%22%20height%3D%225%22%20x%3D%2233%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23Y)%22%20mask%3D%22url(%23X)%22%3E%3Cpath%20fill%3D%22url(%23Z)%22%20d%3D%22M35.417%2032.076a2.015%202.015%200%200%200-1.626.975%202.014%202.014%200%200%200-.268%201.157%201.82%201.82%200%200%201%20.223-.803c.23-.418.65-.733%201.121-.82.29-.052.587-.02.878.016.281.035.563.073.838.13.428.095.85.237%201.208.486.082.059.16.124.227.203a.604.604%200%200%201%20.136.266.642.642%200%200%201-.086.43%201.61%201.61%200%200%201-.277.348%205.614%205.614%200%200%201-.268.248c.414-.08.832-.193%201.177-.433.144-.103.277-.225.364-.379a.73.73%200%200%200%20.08-.516.78.78%200%200%200-.172-.313%201.54%201.54%200%200%200-.272-.232%203.238%203.238%200%200%200-1.464-.56%2016.983%2016.983%200%200%200-1.017-.157%204.421%204.421%200%200%200-.802-.046Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23aa)%22%20d%3D%22M19.584%207.177a1.246%201.246%200%200%200-.772.345c-.212.197-.36.456-.452.728-.182.547-.14%201.14-.1%201.716.038.519.077%201.05.272%201.533.098.244.235.471.417.659.182.185.412.33.665.391.237.06.492.05.724-.024.235-.075.446-.208.623-.379.255-.25.425-.575.525-.919.099-.343.127-.703.122-1.06a4.478%204.478%200%200%200-.205-1.319%202.993%202.993%200%200%200-.675-1.146%201.887%201.887%200%200%200-.516-.386%201.288%201.288%200%200%200-.628-.139Z%22%2F%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M18.89%209.56c-.06.364-.061.745.063%201.09.082.229.219.437.384.615.107.116.23.221.373.29.144.07.31.098.465.06a.682.682%200%200%200%20.358-.241c.092-.115.154-.252.197-.392.13-.414.109-.866-.02-1.28-.093-.303-.248-.593-.488-.796a.967.967%200%200%200-.398-.208.69.69%200%200%200-.442.036c-.152.07-.27.2-.347.348a1.624%201.624%200%200%200-.144.479Z%22%2F%3E%3Cmask%20id%3D%22ab%22%20width%3D%223%22%20height%3D%224%22%20x%3D%2218%22%20y%3D%228%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.89%209.56c-.06.364-.061.745.063%201.09.082.229.219.437.384.615.107.116.23.221.373.29.144.07.31.098.465.06a.682.682%200%200%200%20.358-.241c.092-.115.154-.252.197-.392.13-.414.109-.866-.02-1.28-.093-.303-.248-.593-.488-.796a.967.967%200%200%200-.398-.208.69.69%200%200%200-.442.036c-.152.07-.27.2-.347.348a1.624%201.624%200%200%200-.144.479Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ac)%22%20mask%3D%22url(%23ab)%22%3E%3Cpath%20fill%3D%22url(%23ad)%22%20d%3D%22M19.657%209.298c.04.103.171.14.244.223a.94.94%200%200%201%20.182.263c.073.19-.073.47.08.605.048.042.145.043.192%200%20.186-.168.144-.508.071-.748a.912.912%200%200%200-.433-.525c-.094-.049-.234-.088-.315-.02-.05.045-.045.138-.02.202Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22ae%22%20width%3D%224%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%227%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.584%207.177a1.246%201.246%200%200%200-.772.345c-.212.197-.36.456-.452.728-.182.547-.14%201.14-.1%201.716.038.519.077%201.05.272%201.533.098.244.235.471.417.659.182.185.412.33.665.391.237.06.492.05.724-.024.235-.075.446-.208.623-.379.255-.25.425-.575.525-.919.099-.343.127-.703.122-1.06a4.478%204.478%200%200%200-.205-1.319%202.993%202.993%200%200%200-.675-1.146%201.887%201.887%200%200%200-.516-.386%201.288%201.288%200%200%200-.628-.139Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23ae)%22%3E%3Cpath%20fill%3D%22url(%23af)%22%20d%3D%22M18.964%208.336c.435-.258.962-.319%201.466-.272.503.05.988.195%201.476.329.358.097.72.187%201.055.345.334.157.645.39.83.712.03.05.055.105.087.156.032.05.07.097.116.133.047.035.107.06.165.056.03-.002.06-.01.085-.024a.155.155%200%200%200%20.062-.064.201.201%200%200%200%20.018-.1.48.48%200%200%200-.018-.1c-.122-.445-.411-.822-.629-1.229-.13-.244-.24-.499-.37-.742-.456-.835-1.204-1.49-2.054-1.915-.85-.425-1.798-.63-2.747-.684-1.099-.066-2.2.066-3.283.257-.47.082-.949.18-1.363.414-.208.116-.4.266-.547.454-.15.185-.256.409-.291.645-.032.229.002.463.082.679.08.215.203.412.35.59.288.358.661.636%201.004.943.343.306.66.645%201.044.899.192.127.4.232.621.294.221.062.458.079.683.032a1.57%201.57%200%200%200%20.639-.308%203.45%203.45%200%200%200%20.508-.498c.311-.362.602-.758%201.01-1.002Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23ag)%22%3E%3Cpath%20fill%3D%22url(%23ah)%22%20d%3D%22M20.77%206.857c.404.379.704.847.909%201.342-.09-.545-.23-.986-.587-1.342a2.744%202.744%200%200%200-.746-.51c-.248-.11-.52-.18-.677-.182-.156-.004-.193%200-.225.002-.034.002-.058.002.043.015.101.011.328.073.572.182.243.109.491.288.71.493Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23ai)%22%20d%3D%22M24.677%207.177c-.448.31-.825.74-1.009%201.253-.232.647-.144%201.37.08%202.02.23.665.614%201.299%201.193%201.698.289.2.625.338.973.379.351.041.713-.017%201.026-.178.379-.199.67-.546.85-.934.18-.39.256-.82.28-1.249a4.204%204.204%200%200%200-.202-1.614c-.195-.56-.547-1.078-1.046-1.4a2.039%202.039%200%200%200-.825-.314%201.763%201.763%200%200%200-.876.098%202.27%202.27%200%200%200-.444.241Z%22%2F%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M25.714%208.535c-.169.011-.334.07-.478.16a1.24%201.24%200%200%200-.36.352c-.194.28-.278.62-.291.96-.01.253.019.51.103.75.085.24.225.463.422.624.2.167.454.267.714.28.261.01.523-.064.737-.212a1.31%201.31%200%200%200%20.405-.465c.098-.182.158-.385.184-.59a1.823%201.823%200%200%200-.174-1.068%201.486%201.486%200%200%200-.795-.72%201.139%201.139%200%200%200-.467-.071Z%22%2F%3E%3Cmask%20id%3D%22aj%22%20width%3D%224%22%20height%3D%224%22%20x%3D%2224%22%20y%3D%228%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M25.714%208.535c-.169.011-.334.07-.478.16a1.24%201.24%200%200%200-.36.352c-.194.28-.278.62-.291.96-.01.253.019.51.103.75.085.24.225.463.422.624.2.167.454.267.714.28.261.01.523-.064.737-.212a1.31%201.31%200%200%200%20.405-.465c.098-.182.158-.385.184-.59a1.823%201.823%200%200%200-.174-1.068%201.486%201.486%200%200%200-.795-.72%201.139%201.139%200%200%200-.467-.071Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ak)%22%20mask%3D%22url(%23aj)%22%3E%3Cpath%20fill%3D%22url(%23al)%22%20d%3D%22M26.758%2010.005c.188-.187-.133-.684-.384-.889-.182-.146-.709-.302-.686-.14.022.159.26.365.418.523.196.193.562.596.652.506Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22am%22%20width%3D%226%22%20height%3D%227%22%20x%3D%2223%22%20y%3D%226%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.677%207.177c-.448.31-.825.74-1.009%201.253-.232.647-.144%201.37.08%202.02.23.665.614%201.299%201.193%201.698.289.2.625.338.973.379.351.041.713-.017%201.026-.178.379-.199.67-.546.85-.934.18-.39.256-.82.28-1.249a4.204%204.204%200%200%200-.202-1.614c-.195-.56-.547-1.078-1.046-1.4a2.039%202.039%200%200%200-.825-.314%201.763%201.763%200%200%200-.876.098%202.27%202.27%200%200%200-.444.241Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23am)%22%3E%3Cpath%20fill%3D%22url(%23an)%22%20d%3D%22M22.98%208.814c.386-.32.834-.564%201.313-.712.984-.304%202.1-.184%202.97.37.3.189.568.425.847.646.277.22.574.426.91.544a1.3%201.3%200%200%200%20.566.08c.172-.016.339-.082.482-.18.142-.099.262-.23.352-.378.18-.297.238-.657.206-1.002-.062-.691-.452-1.3-.778-1.914-.103-.191-.2-.386-.324-.564-.377-.55-.98-.912-1.613-1.123-.632-.212-1.3-.29-1.961-.372-.296-.037-.594-.077-.889-.04-.34.04-.658.177-.99.262-.157.04-.317.069-.472.114-.156.045-.31.107-.437.208-.184.148-.3.371-.35.602-.051.232-.04.472-.003.707.073.469.25.924.233%201.399-.011.324-.115.645-.101.969.003.096.022.29.039.384Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23ao)%22%3E%3Cpath%20fill%3D%22url(%23ap)%22%20d%3D%22M26.237%205.846a1.63%201.63%200%200%200-.2.319c.346.075.676.218.972.414.574.381%201.01.936%201.315%201.555.071-.079.135-.163.191-.257-.308-.645-.75-1.228-1.343-1.622a2.898%202.898%200%200%200-.935-.409Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22aq%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ar)%22%20mask%3D%22url(%23aq)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.259%22%20d%3D%22M18.96%2016.75c.276.798.829%201.479%201.485%202.01.218.177.448.34.705.455.255.116.538.182.818.157.273-.022.534-.13.774-.266.24-.135.461-.298.694-.444.397-.253.823-.458%201.237-.683.497-.271.98-.58%201.399-.963.193-.175.371-.366.583-.516.212-.152.467-.26.726-.242.195.013.377.096.568.137.095.02.193.03.29.015a.445.445%200%200%200%20.257-.126.449.449%200%200%200%20.115-.33.784.784%200%200%200-.102-.339c-.11-.212-.279-.394-.354-.62-.068-.203-.054-.42-.049-.632.006-.214.002-.435-.095-.625a.813.813%200%200%200-.343-.332%201.216%201.216%200%200%200-.465-.131c-.323-.03-.645.034-.97.05-.427.025-.859-.027-1.288-.003-.534.034-1.06.187-1.596.19-.61.001-1.222-.2-1.826-.104-.26.041-.508.135-.756.218-.249.084-.506.157-.768.153-.298-.005-.587-.108-.885-.129-.148-.011-.3%200-.44.053a.617.617%200%200%200-.335.28.586.586%200%200%200-.061.246.902.902%200%200%200%20.028.255c.04.165.118.321.18.479.225.575.273%201.203.474%201.786Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22as%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23at)%22%20mask%3D%22url(%23as)%22%20opacity%3D%22.3%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M18.193%2014.475c.534.33%201.014.737%201.418%201.198.373.43.69.917%201.179%201.234.343.225.758.35%201.178.39.493.045.991-.028%201.468-.158.44-.118.866-.287%201.256-.508.744-.422%201.365-1.04%202.184-1.318.178-.062.364-.105.537-.18.172-.073.335-.185.418-.343.078-.154.075-.328.1-.495.029-.18.09-.352.125-.53.033-.179.037-.368-.045-.531a.732.732%200%200%200-.34-.312%201.249%201.249%200%200%200-.47-.104c-.323-.015-.643.061-.968.088-.427.035-.859-.015-1.288-.002-.534.015-1.061.125-1.596.15-.609.026-1.216-.064-1.826-.083a3.952%203.952%200%200%200-.79.038c-.26.041-.515.122-.734.257-.214.129-.388.307-.583.459a1.72%201.72%200%200%201-.315.2.998.998%200%200%201-.368.096c-.066.002-.133-.002-.197.008a.423.423%200%200%200-.275.155.363.363%200%200%200-.068.291Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23au)%22%20d%3D%22M20.936%2010.974c.287-.32.482-.712.756-1.042.137-.165.296-.317.482-.424.185-.107.403-.167.617-.148.238.02.46.139.635.302.175.163.304.37.407.585.1.208.178.427.32.607.153.192.364.321.558.473.095.075.189.155.264.251a.797.797%200%200%201%20.161.326.695.695%200%200%201-.03.366.827.827%200%200%201-.204.308%201.186%201.186%200%200%201-.668.3c-.49.069-.988-.077-1.485-.064-.5.015-.991.191-1.494.174a1.337%201.337%200%200%201-.71-.214.941.941%200%200%201-.26-.271.769.769%200%200%201-.108-.357.799.799%200%200%201%20.073-.349c.047-.11.114-.21.19-.303.151-.186.337-.34.496-.52Z%22%2F%3E%3Cpath%20fill%3D%22url(%23av)%22%20d%3D%22M18.214%2014.072a.509.509%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.744.744%200%200%200-.34-.336%201.131%201.131%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.718%203.718%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.48%201.48%200%200%201-.319.218.798.798%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.293.293%200%200%200-.105.065.63.63%200%200%200-.077.098%201.567%201.567%200%200%200-.14.25Z%22%2F%3E%3Cmask%20id%3D%22aw%22%20width%3D%2211%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2212%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.509.509%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.744.744%200%200%200-.34-.336%201.131%201.131%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.718%203.718%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.48%201.48%200%200%201-.319.218.798.798%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.293.293%200%200%200-.105.065.63.63%200%200%200-.077.098%201.567%201.567%200%200%200-.14.25Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ax)%22%20mask%3D%22url(%23aw)%22%3E%3Cpath%20fill%3D%22%23D9B30D%22%20d%3D%22M20.606%2014.73a1.074%201.074%200%200%200%20.703%201.268c.32.106.68.054.977-.102.175-.09.332-.217.431-.386a.71.71%200%200%200%20.1-.274.632.632%200%200%200-.03-.289.647.647%200%200%200-.186-.256.838.838%200%200%200-.281-.154%202.861%202.861%200%200%200-.733-.128c-.379-.007-.919.064-.98.321Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22ay%22%20width%3D%2211%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2212%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.504.504%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.745.745%200%200%200-.34-.336%201.132%201.132%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.724%203.724%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.477%201.477%200%200%201-.319.218.797.797%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.292.292%200%200%200-.105.065.63.63%200%200%200-.077.098%201.563%201.563%200%200%200-.14.25Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23az)%22%20mask%3D%22url(%23ay)%22%3E%3Cpath%20fill%3D%22%23604405%22%20d%3D%22M19.558%2012.724a8.872%208.872%200%200%200-.63.412c-.107.077-.216.158-.272.276a.65.65%200%200%200-.05.268c0%20.094.005.186-.008.277-.007.062-.024.124-.026.186a.311.311%200%200%200%20.007.094c.01.03.025.06.045.082.029.03.066.05.105.06.04.012.08.017.12.027.19.045.355.16.5.292.143.13.275.278.427.4.408.333.95.472%201.479.48.529.009%201.052-.102%201.568-.218.404-.092.81-.186%201.198-.33a5.277%205.277%200%200%200%201.635-.973c.219-.19.423-.398.669-.551.216-.137.457-.227.679-.357a.42.42%200%200%200%20.056-.037.195.195%200%200%200%20.045-.053.165.165%200%200%200%20.006-.116.33.33%200%200%200-.059-.103.863.863%200%200%200-.091-.094c-.231-.197-.542-.268-.846-.292-.302-.023-.607-.006-.906-.056-.28-.047-.547-.152-.819-.239a5.763%205.763%200%200%200-2.968-.161%206.126%206.126%200%200%200-1.864.726Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23aA)%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3Cmask%20id%3D%22aB%22%20width%3D%2210%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2210%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23aC)%22%20mask%3D%22url(%23aB)%22%3E%3Cpath%20fill%3D%22%23F6DA4A%22%20d%3D%22M24.272%2012.14a.307.307%200%200%200-.146-.095.39.39%200%200%200-.175-.008.83.83%200%200%200-.319.15c-.275.19-.519.424-.733.683-.28.343-.513.739-.592%201.176a.814.814%200%200%200-.013.223c.01.075.037.148.092.2a.301.301%200%200%200%20.172.085.43.43%200%200%200%20.195-.02c.124-.042.227-.13.326-.216.538-.484%201.026-1.062%201.221-1.76a.821.821%200%200%200%20.036-.213.331.331%200%200%200-.064-.204Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23aD)%22%20opacity%3D%22.8%22%3E%3Cpath%20fill%3D%22url(%23aE)%22%20d%3D%22M21.135%2011.074c-.144-.047-.38.206-.304.335.02.036.087.081.131.057.066-.036.12-.167.192-.218.047-.034.037-.157-.019-.174Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23aF)%22%20opacity%3D%22.8%22%3E%3Cpath%20fill%3D%22url(%23aG)%22%20d%3D%22M22.98%2011.141c.037.12.23.1.343.158.098.05.176.161.287.165.105.002.27-.038.283-.143.017-.137-.184-.225-.313-.275-.167-.064-.38-.098-.536-.012-.036.021-.075.068-.064.107Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22aH%22%20width%3D%2211%22%20height%3D%228%22%20x%3D%2218%22%20y%3D%2210%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.504.504%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.745.745%200%200%200-.34-.336%201.132%201.132%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.724%203.724%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.477%201.477%200%200%201-.319.218.797.797%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.292.292%200%200%200-.105.065.63.63%200%200%200-.077.098%201.563%201.563%200%200%200-.14.25Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23aI)%22%20mask%3D%22url(%23aH)%22%3E%3Cpath%20fill%3D%22url(%23aJ)%22%20d%3D%22M27.988%2012.966a.723.723%200%200%201-.181.403.477.477%200%200%201-.346.167.37.37%200%200%201-.307-.167.594.594%200%200%201-.09-.403.743.743%200%200%201%20.18-.405.552.552%200%200%201%20.165-.124.416.416%200%200%201%20.182-.043c.06%200%20.119.014.171.043.053.029.1.071.136.124a.523.523%200%200%201%20.08.186c.015.07.019.143.01.219Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%228.329%22%20height%3D%227.958%22%20x%3D%2213.3%22%20y%3D%2218.664%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.64%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%2212.61%22%20height%3D%229.944%22%20x%3D%2221.279%22%20y%3D%2217.561%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.98%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22h%22%20width%3D%226.224%22%20height%3D%226.466%22%20x%3D%2218.431%22%20y%3D%2218.854%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.68%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22k%22%20width%3D%225.686%22%20height%3D%2214.699%22%20x%3D%2217.469%22%20y%3D%2223.214%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.25%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22m%22%20width%3D%228.748%22%20height%3D%228.782%22%20x%3D%2229.807%22%20y%3D%2221.045%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.78%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22o%22%20width%3D%229.581%22%20height%3D%229.443%22%20x%3D%2222.621%22%20y%3D%22-1.403%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.73%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22q%22%20width%3D%225.087%22%20height%3D%225.311%22%20x%3D%2227.998%22%20y%3D%2212.746%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.78%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22s%22%20width%3D%228.267%22%20height%3D%2214.209%22%20x%3D%229.234%22%20y%3D%2221.343%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.98%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22u%22%20width%3D%229.302%22%20height%3D%2217.853%22%20x%3D%2229.574%22%20y%3D%2219.931%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.19%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22x%22%20width%3D%2227.674%22%20height%3D%2227.545%22%20x%3D%22-2.396%22%20y%3D%2226.476%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%223.38%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22z%22%20width%3D%2220.937%22%20height%3D%2221.708%22%20x%3D%22.653%22%20y%3D%2228.422%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%222.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22B%22%20width%3D%225.532%22%20height%3D%228.994%22%20x%3D%2212.71%22%20y%3D%2234.649%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.32%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22E%22%20width%3D%2219.339%22%20height%3D%2220.36%22%20x%3D%2225.579%22%20y%3D%2231.435%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.95%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22I%22%20width%3D%2229.258%22%20height%3D%2229.438%22%20x%3D%2222.752%22%20y%3D%2225.588%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%224.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22K%22%20width%3D%2224.677%22%20height%3D%2224.614%22%20x%3D%2225.273%22%20y%3D%2226.613%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%223.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22M%22%20width%3D%2210.531%22%20height%3D%223.078%22%20x%3D%2230.551%22%20y%3D%2232.852%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.41%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22P%22%20width%3D%2215.3%22%20height%3D%2214.513%22%20x%3D%2228.217%22%20y%3D%2229.546%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%222.45%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22S%22%20width%3D%229.98%22%20height%3D%227.887%22%20x%3D%2230.877%22%20y%3D%2231.899%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22V%22%20width%3D%229.163%22%20height%3D%226.16%22%20x%3D%2231.758%22%20y%3D%2230.311%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.88%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22Y%22%20width%3D%229.163%22%20height%3D%226.16%22%20x%3D%2231.758%22%20y%3D%2230.311%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.88%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ac%22%20width%3D%222.609%22%20height%3D%223.121%22%20x%3D%2218.759%22%20y%3D%228.18%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.44%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ag%22%20width%3D%222.744%22%20height%3D%222.516%22%20x%3D%2219.174%22%20y%3D%225.923%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ak%22%20width%3D%222.928%22%20height%3D%222.911%22%20x%3D%2224.787%22%20y%3D%228.007%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.45%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ao%22%20width%3D%222.999%22%20height%3D%222.808%22%20x%3D%2225.776%22%20y%3D%225.586%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.13%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ar%22%20width%3D%2217.334%22%20height%3D%2213.111%22%20x%3D%2214.777%22%20y%3D%229.767%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.75%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22at%22%20width%3D%2213.092%22%20height%3D%227.695%22%20x%3D%2216.586%22%20y%3D%2211.216%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.8%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ax%22%20width%3D%225.325%22%20height%3D%224.725%22%20x%3D%2219.037%22%20y%3D%2212.869%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.77%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22az%22%20width%3D%2211.147%22%20height%3D%226.304%22%20x%3D%2217.271%22%20y%3D%2210.575%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.65%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aC%22%20width%3D%224.965%22%20height%3D%225.446%22%20x%3D%2220.831%22%20y%3D%2210.571%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.73%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aD%22%20width%3D%22.768%22%20height%3D%22.805%22%20x%3D%2220.616%22%20y%3D%2210.868%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aF%22%20width%3D%221.316%22%20height%3D%22.881%22%20x%3D%2222.778%22%20y%3D%2210.783%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aI%22%20width%3D%221.853%22%20height%3D%222.062%22%20x%3D%2226.599%22%20y%3D%2211.934%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.23%22%2F%3E%3C%2Ffilter%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(3.5625%200%200%203.375%2015.221%2022.723)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(4.425%200%200%203.375%2027.326%2024.675)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22i%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.75312%200%200%201.875%2021.414%2023.9)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22Q%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(15%20-120.74%20153.33)%20scale(3.68625%203.87)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23110800%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23A65A00%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF921E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22T%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(3.69795%20-.15628%20.11765%202.78377%2035.57%2035.604)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23110800%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23A65A00%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF921E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22W%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.19505%20.51962%20-.24%20.55196%2038.372%2033.116)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%237C7C7C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%20stop-opacity%3D%22.33%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aa%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.9199%20-.0201%20.03079%202.93984%2019.967%209.64)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22af%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.1563%20-.19039%20.17577%201.0675%2019.667%208.201)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23C8C8C8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23797978%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22ai%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(2.55624%20-.08033%20.09235%202.93855%2025.886%209.64)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22au%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-36%2028.375%20-28.307)%20scale(2.145%201.94625)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23020204%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23020204%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%235C5C5C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22av%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(4.70652%20-1.93989%201.36256%203.30583%2024.332%2013.24)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2940A%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23D89C08%22%2F%3E%3Cstop%20offset%3D%22.87%22%20stop-color%3D%22%23B67E07%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23946106%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aE%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(.2475%200%200%20.26625%2021.02%2011.227)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233A2903%22%2F%3E%3Cstop%20offset%3D%22.55%22%20stop-color%3D%22%23735208%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AC8C04%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aG%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(.52125%200%200%20.30375%2023.372%2011.194)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233A2903%22%2F%3E%3Cstop%20offset%3D%22.55%22%20stop-color%3D%22%23735208%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AC8C04%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22v%22%20x1%3D%228.096%22%20x2%3D%2215.808%22%20y1%3D%2236.189%22%20y2%3D%2249.129%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23B98309%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23382605%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22C%22%20x1%3D%2215.838%22%20x2%3D%2218.264%22%20y1%3D%2239.531%22%20y2%3D%2244.102%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EBC40C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EBC40C%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22F%22%20x1%3D%2231.299%22%20x2%3D%2231.913%22%20y1%3D%2239.742%22%20y2%3D%2244.199%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22G%22%20x1%3D%2232.156%22%20x2%3D%2239.926%22%20y1%3D%2247.441%22%20y2%3D%2234.845%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233E2A06%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AD780A%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22N%22%20x1%3D%2234.277%22%20x2%3D%2234.048%22%20y1%3D%2233.876%22%20y2%3D%2235.932%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F3CD0C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F3CD0C%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22Z%22%20x1%3D%2234.817%22%20x2%3D%2235.301%22%20y1%3D%2232.546%22%20y2%3D%2232.526%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%237C7C7C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%20stop-opacity%3D%22.33%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ad%22%20x1%3D%2219.554%22%20x2%3D%2220.497%22%20y1%3D%228.745%22%20y2%3D%2210.431%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23757574%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23757574%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23757574%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23757574%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ah%22%20x1%3D%2219.423%22%20x2%3D%2221.465%22%20y1%3D%226.096%22%20y2%3D%228.181%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.31%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.58%22%2F%3E%3Cstop%20offset%3D%22.47%22%20stop-color%3D%22%23646464%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.26%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22al%22%20x1%3D%2225.851%22%20x2%3D%2226.936%22%20y1%3D%228.859%22%20y2%3D%2210.146%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23949494%22%20stop-opacity%3D%22.39%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23949494%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23949494%22%20stop-opacity%3D%22.39%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22an%22%20x1%3D%2224.919%22%20x2%3D%2228.372%22%20y1%3D%226.793%22%20y2%3D%228.814%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23747474%22%2F%3E%3Cstop%20offset%3D%22.13%22%20stop-color%3D%22%238C8C8C%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23A4A4A4%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3Cstop%20offset%3D%22.62%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ap%22%20x1%3D%2226.093%22%20x2%3D%2228.391%22%20y1%3D%225.918%22%20y2%3D%228.089%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.31%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.58%22%2F%3E%3Cstop%20offset%3D%22.47%22%20stop-color%3D%22%23646464%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.26%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22aA%22%20x1%3D%2218.392%22%20x2%3D%2227.519%22%20y1%3D%2212.986%22%20y2%3D%2212.915%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23AD780A%22%2F%3E%3Cstop%20offset%3D%22.12%22%20stop-color%3D%22%23D89E08%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23EDB80B%22%2F%3E%3Cstop%20offset%3D%22.39%22%20stop-color%3D%22%23EBC80D%22%2F%3E%3Cstop%20offset%3D%22.53%22%20stop-color%3D%22%23F5D838%22%2F%3E%3Cstop%20offset%3D%22.77%22%20stop-color%3D%22%23F6D811%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F5CD31%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22aJ%22%20x1%3D%2227.514%22%20x2%3D%2227.514%22%20y1%3D%2212.654%22%20y2%3D%2213.329%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F5CE2D%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D79B08%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{e as default}; diff --git a/dist/assets/Macos-MW4AE7LN-Vvm8Drw3.js b/dist/assets/Macos-MW4AE7LN-Vvm8Drw3.js new file mode 100644 index 0000000..c244a47 --- /dev/null +++ b/dist/assets/Macos-MW4AE7LN-Vvm8Drw3.js @@ -0,0 +1 @@ +var B="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3Cdefs%3E%3Cpattern%20id%3D%22a%22%20width%3D%221%22%20height%3D%221%22%20patternContentUnits%3D%22objectBoundingBox%22%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20transform%3D%22scale(.00694)%22%2F%3E%3C%2Fpattern%3E%3Cimage%20xlink%3Ahref%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAALRlWElmTU0AKgAAAAgABgEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAIdpAAQAAAABAAAAZgAAAAAAAqY3AAAJbAACpjcAAAlsAAaQAAAHAAAABDAyMTCRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAAJCgAwAEAAAAAQAAAJAAAAAAdWMR1AAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAABNJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BMTAyNDwvZXhpZjpQaXhlbFhEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkV4aWZWZXJzaW9uPjAyMTA8L2V4aWY6RXhpZlZlcnNpb24%2BCiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMDI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPjAxMDA8L2V4aWY6Rmxhc2hQaXhWZXJzaW9uPgogICAgICAgICA8ZXhpZjpDb21wb25lbnRzQ29uZmlndXJhdGlvbj4KICAgICAgICAgICAgPHJkZjpTZXE%2BCiAgICAgICAgICAgICAgIDxyZGY6bGk%2BMTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPjI8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT4zPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGk%2BMDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE%2BCiAgICAgICAgIDwvZXhpZjpDb21wb25lbnRzQ29uZmlndXJhdGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ%2BMjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24%2BCiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjE3MzYyMy8yNDEyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xNzM2MjMvMjQxMjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCspvVSsAAEAASURBVHgB7L0JtOdXVed7%2FuOdp5pTSaVSmUOYZEgYhYiCIBDB1taljU8EUXmvl6z2red6vvXEZa%2FX3eu19vKh2PJasJWWxumhTCKDCQQykRASM1dVKjXfqrq37vy%2F%2F%2Fl9Pvv8%2Fze3UlNCIqLNr%2Bp3f9MZ9%2FmevffZZ5%2FzT%2Bm7x3cp8F0KfJcC36XAdynwXQp8lwL%2F41Gg8D9elc9e4263%2B5ToUSgUumdP5btf%2FllTQJBwFjnLnJXe6X3p%2Fe9%2Ff%2FF8lTeMYTmfHN%2F3TwmA58vjn9L3f%2FYVplEFRQDjz%2F7sz7o%2F9mM%2F1j5PAw383d%2F9XWVycrJcrVYjXqPR6MzNzbVuuOGGJnHr54r%2Fp3%2F6p6Uf%2FdEf7dO1A7fqnCv8P%2FVv%2FYr%2BU6%2FHWvl7XKB01113FV784he3nixuAMfkNddcs2N4eHgXANlVLBYvJvKFXDcRdgPnCM9DnBXOEqeHoBM8NdJf5pztdDoneD7EdT8Ae2xlZeWxBx988AAgm%2BP92mF5KEuZsij22k8uz1rAf6I3%2FywA1AeNbUADtda1ReXIkSNXwk1eVCqVruPbCwHK5Vy3cj6rdacMHtPtdns3%2Bd%2FD9Q641t0XXHDBwzyvlYkw5V75%2FlmA6Vkl4rqG%2B7bc0hhyiCJYkDvEcd9992295JJLXlmpVN7A%2BSq%2BXc15mm5DXBswxAv30qFPi%2F61l%2BJpl74C3SV%2B3BPf9Es8nxKY9x3Oh5rN5lc4%2F%2Fb%2B%2B%2B%2F%2F6ste9rLpfiC%2ByeUUc%2BcTq%2F0o370%2BUwpAdJXgUHr7ad1%2B%2B%2B0bESE%2FQSP9RavVmuH7KQdiptk7W1zbnB7dONvtbmftbK27X%2F%2B%2Bf%2B%2F3%2Fsm7jmcvHVPMaZtH5HdKIXiAK81YxqWlpZ%2BwzP3y86mvlJ%2BKwH6A7%2BDrP5kCQ2TLWqa3Kg6i58%2FOzr4SXeany%2BXyjYioLX0621accgjjyB0KqbvGOOIxwZSexDByov1EcqhT3p2TWJF%2Bl%2FCnhCJTuVx8tDh9nSoBsmMA6hOA6Y82bNjw1V620Tm4P013W1es76jbU2r7HVWyJwoTRIX4feAMzs%2FP%2FwuA8wsA5xX9YOClr2fYSNSLtgvM2IaC5YmqKrdgJandRPI1llOnsUozr%2FKyyXvetZup01WqtEUe78EgZ7dI0qVqKpUGUqoOp0JlGFV7MJXKAwnd6hToUB4z6RWPvMnfN9yFuKI8fV0oAaSvLi8v%2F%2BeJiYk%2FJwIFSU%2Bucy%2Bd77zLWiW%2B84qW0te%2F%2FvXK3r171RGav%2Fx%2F%2F%2FLIr%2F38r%2F3M4MDgvy5XyldYXhrJFrJBQgT4zs4uWAo0aL9F27Rce2UhdedPptbi0ZQWDqW0iCpSX0yFNu8ZYJXHhlJxYjwamtYjIRkXf7mXq3QFVasO0LpkyLcy4YvV1EAnbhaHU3FwUyqMbE1pZHMqDU%2FwzGCuWF4bxiHrRAUFK5RNnWOt7HDPV46Pj78S8fZ%2Frq6u%2Fj%2B%2F%2Fuu%2F%2FhHqsKxJ4NJLLy2%2B5CUvWdPxctTvnL9PdMvvnDKlJxGuvLi4%2BLMMuX%2BF8xKLCftvKaFobRTXAFIAp1gqBXhsoGa9lhrHD6fOwd1pYHFfajanUxngtLurqVgZgmsMc5ZTC%2B5RqFRTYQCOMj5mimaRDxPykascC1YBCDqwEQBUKqZiu5U6zXrqAiwKRZguqOBcLaRydzR1Nl2dCtuuTKWpbak4PGoyQI%2FvLdKy9H3dXkyCUbhYdGg40mP1ev3fj4yMfJgorX5Hego2LIJ%2Fe4911Pr2Zny23BipVK%2B99tqG3xcWFt4yODj4bxlNPd9n1N8mKjRNnCkvA%2BI%2BCRyPRr2eakcOpMajd6fOnjtTdfruVGnPpsEtu1LasTM1BwFJmyojjoJLkVK3TJMq4qqIppERwHQWpgyABEigKcQhOQMoRVWb91EOgba8kDrzc6m8tJhKtenU4Et78OLUveDFqbDrJam0fWeqDGlqEpTAzTr00uNVcCWA5OgM0DfvhSP9H3CnT%2Fq8njY%2Bfycc3zEAoiFKN910UwFDXOvRRx%2B9bMeOHb85MDBwo0RyVMNFlIRcsSELRYCDmJLiK9NH09xD96ba%2FXelyqG70lAR0AxvSNXqEOFKgKQNOLjfsiF1B6uII4BDwxfhQAnABEfhWhgcgCtVM9ch3fVHgCdEm5yD%2BMFxWr0C5SjdeiM1F%2BZSASAXW51UgkOlBkVfXUrdpVk4UzMtTV6ZGlfckAavfmkau%2BDCXAfFpNxNIAWYTgVSq9H6xEOPPPTLz3ve8%2FZgCC2%2F9rWvdYAQutT6Mv5j3H9HAIjGrEKQ4DqMSt4H1%2Fm%2F0AsGGSDTxYMswWJsdIkscGDzaWb%2F42nmrq%2Bn%2Bn1fTZXVE2lotJIAXSoX26nKjMMAA6BShQTgUCWAVBgZTK1tm1JxaDi1ESOhJ5UqmZ8hklIFACHOYBqnH8F94Bq9MlA2QASASN7giqX2Csp4owbroCpNvqGklxqNVKy34CadtLpaT43aaqotNtNieWMqXvm9aeol16XJS3elKmLVtDEp5HLlEmirss4l6gszWv3fR0dH%2F5Of1tMsB%2F3H%2BXsmUn3bSuLEJPNGZUXW7t27L7%2Fooov%2BCwB4jaBpd9Bau0wnWEIIazOVyqXUpFcf370nTX%2F1NjjOg2mg3EyD48U0UGqlKvpNFZtipbjCeL%2BTyoioMnGMV6igs3BtIz7amzcAIkZS8o8SnMdMzKdMdjwHW8mcgJenHjZyHFy9VeEOUQZQOnAewdMVNJSzWIf71ADUcp3XgAcQtTuVULob7SIDwJVUJ3xh14vS5HWvT1PXXEMHqMJxTTuL58ivkJp0gKAFutHNBw8efNfll1%2B%2BW5HG%2FF4LOsqI%2F1GOEAn%2FGDnLiiFAQfCcPHnyHRdffPG9ggfO0KS3QcHkTDmsHS6iqKGkRx7Zk%2B768J%2Blh373T9LyIw%2BlgQ0DqToB12DIXWo3kHEtGjTGSOq4mqijagUkgg3d9tphJDWPnlLjGunC3OBoaLCqRmQLKnoYOTddAnYEIXUaG02a23Xt2FJ8rfAaQIWeU0JaFlMFoA90F5lsW0hDI5U0NLU1dQ8dSAc%2B%2Bv%2BmBz7y%2B%2BnI%2Fd8kPHWBawaXE6XQArp0pY002rlz573STNpJQ2l57rL%2Bw33NFP6HS%2F%2BMKa9TBiu1Wu13EVnvFixYkZs0C0KHfzwrqrD1pLnpY%2Bnxm29J87d9I5UHumlgBLsLEq%2FcrcNx4DqoqtUiQ3FFFqffKsiWMrUrodsw7Ec80SBwIa9ddKO2o66J0VQeHkYHcghEYJXpOHk%2BH2UEmW0bozM4TU9sqQd1EVMFRoGF5moCL3xDEiPSPFt0iGarkIIDyY0ofaswwCzrAHhDtK100sBznp92ft8PpA07Ub6J3jYu%2FxRnpga4Kt4j0j40NDT0Xt45KvWduuK39TgfmZ71wqAgD1xxxRX122677aIXvOAFfwl4XsroCrrC0%2BEFAgf0oI4MpCYNsfeOe9LBz92SBhv02KkqbGkZUQVwivVUgV5FgKOCVGZaqlyk5wIcOQ%2FYg2kBR5VtxZfgQTygWac2oqpN%2Bt0qQBwdQZwNEg5gkfVTBhB5ytU6HfQdh%2BUNzlYz9CCfQ4QxvFeMFTBUdvjeaagLoSsRtN1hdEYJGVZyAqTOCDalwbSKM0BtpZtW69W05bUvS5d873VpcGwstRGLHj0Qyeo6jE7LjdXGHd%2F45jd%2BhDm2g33aRsBv059vK4D6FTxw4MD1W7du%2FSQE2AzXadDM1eA6vdGVIuv440fS%2FZ%2F8Uqo9ciCNbaimKrpOCfFTLawEcAbQcwaC0%2FDeKwAqgZoSgCkpv7TTAApFH%2B5jEB6KVlAjAFF7cDAhC9CJsAE58uLZ0VhwICMQ9rwciOS0CcUAUYkLMAqOuuQWjrzgSKXVzIm6dYzLjMracJ8uehDo4R6O2y6FIbLerqR6d4izmla7I3CkoeBMyycZCGzemna97Ya0%2FapdiENAuE7Jhm4NuGsVveg4x1sYud7%2B6KNdOmjhnD5Lzya2vl0AKgCeqpzn6NGjN05NTf2lzlrYOWS5WdehN5dpYOYn0wNf%2B0ba84mvphG4RnUMULRqPbDAdYo1uA0iC9EFj%2BI5n6E0A54yukPYhbgvIMMK6B2OwgSUFqQuSnILztPFJlQeADhVgKPyXOUEuEAtwHN%2BwkTI4JYCwlFYF71HBbrDaKsIeEoo1QXeFfnOsA99TmARlucm79uIslYHLgQ3aiLOGAakGtqRQGp0B1IHC3djtZSWlzpp2%2Fddl66%2B4RXYkBB55BGcqCfS6IiVJhr67MnZt2%2Fbtu2veh1VlqUE%2FAc9zk%2BnZ579GniOHTv2zs2bN%2F8Bdh2H4WoHzqqjR3RTFc4wP7uU7v7Lr6bjX384jW4eToOKJ0ZWgmQA8VQuOsqqMTRTx%2BEZkvu%2BVOzwrM6D%2BHLIDmhCJFXQh%2BBKHTmRIzHA0lV8YevpVpnDEkgDFcQbz%2BhGASB0oLBxK87OU3eV8zjkQHCGLiJMThR6kDqRijXfSo6qHJWhUBfhUIUQdwIKcca3MAHwvSkQOwwFOFcRZ812NTXRjVplxNqJhTRw6RVpx41vTWPbdgIiwEnmmiIAUwu9yInmNDs7986NG6c%2B8u0C0flodB4SnvfzGnhOnDjx3o0bN%2F4O3ntGQgtgZhrw2EkEz8HdR9Itf%2FzVVJxR14GLhLjqBGAETqUkaOppMK0ArDbAqQcnUg8CG4BLJgPHAUDBeZz4RjBKYLlORy4jh4l7hsqIrBIcqECPdujeiQTK6E8k9HQPwSaXwS7E0IkTUSM30tjIldEBVzQepzy8ogsVYL4Fwhd4liu1VLCDOxGXJBhXQh7KRQvhVEQnGIxh%2F0ppQ5p420%2BnTc95Mco1nEgaRpmxsWMvqtARsOC%2Fl4nZD347QPQPCaA18OB28V7E1u8gq7WgRo3zVBZtjJj6%2BzsfTzf94W1pgvuhUXpUZxG7Tj2NwWmGKotpuDSfhhBZlWILoCDGIK9iLMQWvU4JpY1HnUfcxGhLrsOEQLE8mDoldRyAAkg6EFhFuiNHEmyKLsI6jDchIPh04bMWHuEXoOFP1o9aIkHxBWfqAUnxVVJyqxcBGsUbPkaEB1ByL3Ql0MIZXDoUbiZwEGnoS6VxkiukxflmGv7Bn0hbX%2FaqAJB2o6L9kUiQg1mZSmFmZua9mzZt%2BgcH0bdOrTWynfnmscceG9y1a9dqX2wJHroKp9YWakmF7fQPf%2FmudN%2Bf3ZEmNpdiKD6UFtNocRkAofcU4UaIqMGyOo%2FDehofXcYGN7L2FaV8ATB048QoKKeBozg0a%2BMT77RSFxscHxBVcKCqcQVQGa6GEBI4uQdbrGd2yDo8olzeW124IGCQIwkeuVQB4HQQd4IrRBqcpMikrHpScKdGmDRgXIi4VtaRWgCIIQTj9cFUZ6S2OLOUJl7xurTj9W%2FMHQPghWWdHMi4MDBQKdBxEWcbP9JvC4v2bB%2FPlGRnLE%2BPddYPHz78w%2FgE%2F39ZbOEIQTfXbUc9BRik3Z%2B7KR3625vS5JZyqI8VXGEqcBp1H%2FUbRVa5pG3H0RVxAI1g8ZkFOVluOYENELQoOzwPyzLvur6Xy3DpkF8XIAWAKg7xAZHzlWBH0ORZ8WdACooSXUPAePQBpHjpnVgqEFcaMhFpcJoOIzW5TUkgYS8qqDMpknzfQKQBHk1Mrb6izZBhFX2o2RlI9c4odcUUOVdLI89%2FYbr6LW8KfU7jvXoQhy4wxSo6Hz7hb9u%2Bffsn%2Bm3ix2fzkITP6qGR0NEWqH8Zzux%2F0aS3QU98P7HxOASl1VBhYoj%2B%2BOe%2Flga3yZYhmPIetoE6jMwHIMEOAAwarWCTLhLHeyegbCrbyT%2F66OQrL%2BjFYZsJBRYfHhrLIbRcQI5VRAR4rh2Z4GuP39KNycXJnyhoj6sBVMscrwKtvKc%2BMXmr8iv142o47tXe%2FQ7o8I51oAEtGKlhJ4qzg2KNFtgoDKZaizi4iUz%2F%2Ff509ye%2BmNq1FhKYjiNRYNYMVNot6j41ueEvbAvbxLb5lup3jkjPKoA0qWte%2F%2BIXv7hzy5Ytfz00OIQ9rYuVlIGIDShd%2BXfPp25K%2B%2F%2Fu7jS0aYreRgNnWEhBvqIHhJrUa4x4C2BIJMMGQAZoclr9v7mOAMVQtIZhyZGkyTGG8L326eWSw%2FtXKD7zw7Yn895JngEMykH%2B6leOBnM54IZyxDjpKIpi9LAwaqKbFTFlyCkr6Gwxj8cIs6SpgsEC4zGFGNKbk7yKcJwRnODmHjyY7vyrz%2BMDhYLugABaU60SXKw1ODRQ3Lp1219%2F%2FvOfvNi2ebanPazys3LQwK6OEJAlRgG3jI2NvaS20mzyDjsPDes0AyLlG39zR9r%2FWXSeLWOp3GZIXlI51qrMCAsjYTWMg42w%2Bzg9UcFrIazLNgIKcAlxFQ3Bs%2FqQZ5FG6nBVr0HOcVWUwc1onKL3Dtt5tmHQ2omi%2BKLqADXDh3tvni1qRKIC2Q5BonI9aCBXcWTGTYzKtBmpD8UoDTFWRnxpP3JStstIzeE9U2ChB7VaZf0L4EAD2IqwDyHKtFoj8GOYP7fQSBuec0W67sZXRN11WQmuhmAcHKpWVlZqd4yMDH%2Fva1%2F72jYgUsRRkGd%2BQNFn5Sgwm06rpDqTfL%2FXA4%2Fj9Wp2VcbAR4%2B670vfTLs%2FfV%2Ba2LqRgUmN3tJvwLO1nu%2Bt55NaVg4TAKBhbHv%2BhL9y6EOCQ1ZnnKwwF4fwBaJ3%2BxhTFXC84BikSwcHO%2FyLRj89K96c%2ByBe6D%2B9ImbbkODxhSdl4b8rfwSTg1At4yV0uzAfVPMoLDXhLSjaRazihVWU6uUlrsuhDzlBjGxGD0CkAcYCfIjeQB4mjIcBivbgxFQ6et%2F%2B9A28DF70gy%2FnGyBVtBfwdKk1GsPDQ9ctLCx%2BYHx87OdoK10RbJ9%2Brbn91o5nBUAoaKH3oLD9DHrPu2ordJ9ugXEzPY6WGWC6YPfXd6dvfvwbafICXDvpaQWIuL78QKBXg3zNOpCEE0C0PIdhcq%2BGcBxynq7iCU6j8iz3ocOG7aSIbak0MsY0BeCB83VsOBog2lkAyhFQYMEwB29tcE%2FSVG%2Fpl8av5z0Ur%2BEFAEhsZBsvAJPFVkffLxrbebmcMOlbLbyjFXUOKuSeuoUU9FYcAywTk7iCMDJbWuJcSKXl5TQkl3JwUViCEw3BfepphWmPWnc8rbSGUnnjSDp4x%2B5UnhpLL3j181MbBzYP2qBaX222xsZG382o%2BFbUi76h8RlPeTxjAClTVdBYvnsNPrwfrNN7aBzFmZw6HLwO7sFI%2BLE70vhmnKa01gYd%2BRPAEBw2WL%2FRMjiktCHiJC3B4kHfzV%2FkMmuNDYho8RBTuKWWR3Fyp0HaOIhlTpBjqocQGcJq0KMcODrq4Qp%2FDJDFaM4y0aA5Z%2BOd%2BxDQaltUjDJQB7BipyED6cADeZqHANcGFWXms%2BJXXFkAUigGG%2BNOoql8o%2BR0hlGKNXaOTaUWPkVtwNSpOWpDYcZvYYBJZShDiRfAIg5rSMPqhsF07Au3pIMTw2nH865MLefjqDd6UbGBY9vI8NgHb7311ttoswdtOz1Az13Dc399pgAqMIkHJVLpyiuv%2FH285QaXl2quaSqryDFZnBZmF9IX%2F%2FhWRtSDNBZsG0I76rZhs8rrO04IKA2D2BB%2FTUQTTjBK8C5ELUr4fiPwvg0r7wwAzBGc5MdG8nAWgtF8ZEKaNp7AIeEuukV7qcbwGM4TI0KTovczLOxiM9IfWkNkQDdAdG7i%2BdXmFwkFgMJqNG4BgMZBDYMO2RU5fIu6Wwy4pHmqx6m3qRcWMS10cUaw%2BoLK%2BJZbaIpNxo4YdqAfHaI9ClwBQpvBB3s%2BaKOMEaYGyTI%2BUW10peGx8fTAZ76Whqem0sbtG7EOxNxZkVFdc3hkcPDa5zz398nlhl7bWYXImuvTPp4RgPqia3p6%2Bn8FPK9eWgqeWVFZjDkolMCvfOKe1JhJaXQSzqGhrAcU4WMze40mowrqBlIQ0sYZjQ%2FrD%2FcMHnLPhqwaBhFRHVxUO6MTiCnXZ9EA9jTTsVld9Wx63LbxCmwvLKbuKnoX2ZWCM9C4ggfuE2KQmXHFGc61GaCUQFYpdT2yzpTv1%2F%2FVzJDBo34ikNQ9QAENqp3H2XPG1MFZIg3qEw5ogo3Em4hfvQFK6mkaQalDQTsHtRBvHk5XyJlKpOl7Oa31lVlqD5OLad0uUvkC6RYY9pcA7Tf%2B5vb08h97LSqEk9SCslChgzfHxkdfPT19%2FH1bt27%2Bj8%2FUPvQtA6gvumCH1wwPj%2FzGykqILib0qBS0GaBn3fWVB9Mjdx5LW7YMQkx7AR9sXnQCh%2Bve5yO%2Fdw2WQ9aS81twK9RExv%2F0QDiPluYyDvEJ%2F53uMA5hnOo2ciSxYmsEyRV10DZEHrpWZ3oudXB0rzh9EGWjIWjg0IkAUJeFgnKeDipbKOIGooECexTrbMDpFTy%2B51qQuw0tgLgWBJM2KTpRsAltUdqmos5y1ZxCcZU48%2FNwUrgSE7sJva0AoIruLGM5KI9rKotyX85GnfT9B0BKFM56MAkGjQSattU2xsZ5BpvDaeno%2FvTILbenF%2F7A99JRcrkAb3kF3%2B2RkaHfYLnQpxBlDz0TUfatAqiAJ6HN1rrqqqv%2Bw%2BjoyIDcR4Tbuwa0gD5%2BIt3y13vT5Ea4BMSjnweBM90kge2pBMfrkKtzXGUt0Ng4SsGlaADAUILLpPFRCEs6sPEuc1sxjCdOiAcBAxCKAME0Y%2Bjup9mTqXD4aKqsLEdjxYCkzwl6ItDe3i2LULgZDdglb8FXwLUiJkKjjL6Qy%2FCw7ojHXJnMsXqI0B0lJrDgPKYRk530%2FiLiTLtNwYlUuRNpBfith%2F9dFYui3DkBu5bDjjLYGMfIyqjKKZdQ1qQhHUuvA0ITDdCpnPMuG0vtOGpk6EPoR2NTlTR9z9%2Bn%2FZdcmC6%2B6opY9kQbYVPtNGmzwcsuu%2BI%2FUIwbe225vkevq%2Bm5b78lAGHRrGCUqu%2Fbt%2B%2FtExOTb1lcXCFz%2BCY9QtG1iiT70qfuBxjMeAsGWq%2BL7IieE6RTXDC%2BhAwV3DNK%2BPhU6GVlOE8FQlZwwxiCgJVRwMIIrq2fEL0xRBiNUCw436WiCYb1KkSvCEWRea7ici119x9IaXpa62WINXY6yFyBXuvMtmJUV1fLJMvXRuNEq3hw1lv3CzkIbyN%2Bn1usJ6Vh%2B5iK0ZU6DZOn8U%2FwBOcBC%2BTtnERB8PDekYUWeRucXRhIX%2FQIIBufOpmuixWpRzp6PFaStNFlOuh3RWxYFQGDz3RRLk75mSokXQYLdgoeHOaXmf4YoBPUmTcroog%2F%2FOWvpQ1bNuHZyBSIk7p09KWllfbk5Phb9%2BzZ9%2FbLLrvkL9e5Ga%2Bv5nnvnzaAaMTCe97zHmk3gsvAr3fs2jSKFLBxBhn93HXr3nTwgeW0eRMN71CZb4oE%2FXZksZUSnsBUVjeNUvj36Ci2ksbKK0ioSqrq8wyxVDI1Y%2BtYryhxJCOhcJfBGQxxFiCA6PrzALx06EBqP3IwtVZWgkuFhqWWSRqCoOUQiaNKjw7nLg2NKD6CvsgQGZYRaYYO54y4taRJ5ZPZui3tbeInHRbOxqd8umlEROMCHMVXMQDEfW9aBTKErqZ%2BpDIclRN6klGAkLUg7wKG7uxiKh6fTx3cTtpTDO0nEHFarMlrCBeXgYr0hLsBpJU60x5tlwcZHxDRQcu4tODfkQ58%2Fc50%2BQ03RJWsgYMci8fGDr%2FO49%2FccsstTduWw5I%2F5eNpA%2Bizn%2F1s9UMf%2BlAdt9T3YPN57sLCkoJdCQXnKKXj04vp1r%2Fdn0anGDVAvEqwXNZpaVVGRPgc3AYFehA2O1QCOAPLaWwI%2B%2BqAlmYlI0dvuJ%2FtO7JruRugUuHUi9AhsS4aUuH4kdR87FCqT89QDDiBoole2GQmVV0B1CHtFJQ638OhAD1rDYPzhBsEAGV9DWmRx4Br4K0SZKZOklPfIdAR70K%2FOQ1EhOWd0xBhpkD3yiDiGiDqIwZQkHYbrhcrLngtSHS015GMx%2BhoDiPacFkiI6SkIQBfZoS1eIx6nEjFqfFU2DDK%2Fg7Yfgbg8mXoCK2nAFEDp%2F7leinNt3CPbemUVknlkY1p7pv70sldh9KGXReG7xGJlxaXFluTk2PPPbDvwDt3XLLjd3CJ1cD4tGxDTwtA72cd15ve9Kb2G97whg3YfH655xxGC%2BVDJfKOmx%2BnooBjEsd45L5uGDEdEdin4XRKgNuMl4%2BnTcX5NDKEgxgiy%2BkFh8GogLQFIooGCZ8henfXxtNCy2grpiZQNg1ZPH4i1R6bTrXjc5hGnMLYhD8x2GNUEoY80nBiltLIQ3ANOUmbDMOJ6J1OmdC4jpj0t5GthWKv6PEkDEnlMiAqvRcU%2BW085D9E7R%2BOAh1uxwSuHoPUPZRx0wvuw1XQQKfwj5bDMAKQw7UpZzMmlHXZEGDkqJsr4IG%2FhGmqFGvfGIycACknZ1J1qAKdhxBNg%2FQnOghuL0OFxTQOV9oCUOuNwbSEgbHWmEzziPq9d32T1bBbs9lAMQ27a6CTjU6M%2FzJt%2Bie07YJtzCmWn9LxtAB03XXX2S3qf%2FAHH%2FlpHMR2LsyDlLD50L6w1YO7j6aHbj%2BYNk7RK7BJYPGgB6smwywQXUPl%2BbSxMp2mKifTRGkOUaJZkFAuyIAzCRT1ibAJcd%2BBKG0tyo64EGkOXVU827Dk1b2H0%2BJhLLEtNjGobAvR1mhrp5XToB%2BQbxvfYngez900XJwDuvjS4Caq%2BCxSnjIiLRqS8qmTFSA87CcAJJfqGyGzsQ%2FugJgisYCR1F3P7MWR4BLgZZZRt3AY09cnh1YcCRrT5743UmsD9OBGhAJLAfY6vtBNhlRyIfNSJ28wQmzDUewURcpZxNlOU8TAInnMI%2F4Ha2l8vJzGRll7VrUD6t4r6BoJzyFcP46kC1l5sjx9V%2Bru2ZoK115HNVl2hOxmaRBcaHynbXrRRdv%2FE238tLjQUwZQj%2FuIzMnhweH3NvAPo0J0bHslfryw7Tu%2B8jiNQ8MTqk2PRu1l8DSfJksn00Z6%2F9DAMbjAEpWzgWkMiNlxTkhiSUGIpRiRe3dgzQmLcsn1WwApFtqhpyztPZhm9zbTycaGcBirYLfpMBe0ig4v0dnnhWTUnXBKh%2BCKrwHACsnTanuKv8KLpUG4zGpAbMGBQkfhfVlRxhluppTR6oVcUdcKIxHfQpRBhScdqkxyG%2BkR0yhT2KdwsXAIHguWqJ6H%2BpWg5UJQ%2BWhemdEC7IpZ69Dmqt%2BPTmRyJgWZVDKsbh3d%2BmSAuIQcLpN%2BFWvzSWxd5WPtNDrWTZOjhTQ2iKqAaJPnFwN8qE%2BjzVT%2F5l%2BmlZ1XoBuxHs764sPrUiMmWn%2BR4n0ELrT8dLhQr1pRt3P%2B6Wvpe%2Ffu%2FdlLdu76LwsLy6H7qIwNwB32PTqd%2Fvt%2F%2Fvu0bbIAG11Om0qLaWPpOHoNwGF0JQmqzLiXHXFRLTmSiwBLJa5wFUdSXeX5MCIAJRrrV9hodHiHj6XFk0tp%2BrFWmpnD0bWMDiDh4C8d2HyN0YaENg%2BSxuEKOxE90HmpAXrhYJmJyZ5I0NNxsHwyTRWwlZSWYjSjmB0k78ogDYeSmtiKxYTCKU2OOMqmrXJBuRTlDIV5PeUII3aeeAWIqFN3BvsOo8EyE8dd5rU66FktlOwWHocduQ81U2wJHldhAAeuPtsJGaPyvokPkCv9qVmIMuwOAA%2BggcpGAA7uSQgXGVTKmEAYTJQ6NQYkLQCzmjYM4%2BFZWaae2unIY35vWn7Fr6T0vBtQ%2BFcpt50stcbHR8v7Hn%2F8XZdeeskf9Nv6nIDofXxKHEjtnDXYRqmOjUy8W07sO1%2Boq9Rh1XfetjddPLKQdgwup1E4ziCehfAFejc9KojOEJOwKqPaKRjExqjM%2BI487LXdCQ2EgIeNm8LllW%2FLi%2FV0fH8zHTg8lVZKG5kSoU8xhyVclvHMq0Fo%2BBmkh9UDojrExZwcBBewHQhXU8xh66E5wmTQIUwd7qKIUzdC3U5DMSqxn1NEOQNGPzmjBC4qR%2BCWIbLWyS1BE5zHOJxPHADKFt%2FAhlW1ldSZQVw44esKOAMBEGoPV8wil%2BanBHYHVGY5qZyHb3IcaQa5ecczXKkN2dXh5EoBJO5dU9Zt4kcEJ3FxZRVdaYVNHqZPYCrhfmRgIW0ESBsB0kR5exq%2B%2F7Npedd1oVdCGOrYxcLQSWMjY%2B8mqz8GQNG%2BtI1VPOfxlADkPsdsbtS4%2B%2B57v394ZOR6tmNjxB4bQ7KCtJqm9x1OU488mqY2MHGHDhENgBxSmLjoLygPIdR4lOMluIfiTXKGNXmUBX5YmDWgKeOV3zXmew4fSWnvocm00JziG%2Bu44CgdelcDIjfaYzrAkp72pDZrNfJSGAmuYEBrgJjorhC33VQvIl%2FEZTQOjdGEa3VpkAIjQzlRBy8bGxdmwnvUVuUwTRo9XrGmuOWN%2BotiUuAbQe6Yb42dD0WTOo%2BbVRU3b0qdRfYLUqlWyXY0yDje7y04pWvAYlKHOnVCZLmsJwNLoKtkhwjjSrLUH0AFwIgnqMhfTiY1M9fCJoRIp4YxzK9As7naRDqyrGW%2FlcYZtGw5%2Fkga23t%2FGr72JSGy6QSlxeWVzvDI6PXf%2FOb9r37BC679optaURuHk%2Bc8nhKA2CHMMWyTuZOfxMMt4SAPLVF3oZyW15l7HkYsrFIxejQNKmDC7QKwBJVp3KLA0doMoIoAyI3eqsMonHAcHd0VhSVWn7bhFIcOp7T%2F8OZ0bHFLqhVHiQfXYX2YbhKrLUz05CPrV8tSB6gLKN4Jzo7GNcqA%2FTr0hVV7J4R3KZDWZsnIwDitdHD1EHxwsxFMCZE%2FzwEMFJQADGlHXRjh2SkEvG4b2SVV5dx%2F5zgwFroChLkcRqbLAWh6T2pRxjACwuW6ALnh%2Bi8gL1hC77GpBY4n9xlIcEyBwruw2VIXn12Y6DVARlEElCO4Om6vi9iE7AiD6HOD0E5YLqA%2F7a9Npck7TqaXXU6HDwOt1ewCoGpxy6ZNP0UyX%2By3%2BTlqF5%2FOCyC3m2PKv%2Fnbv%2F3bFzO7%2FuZFCEGvZ8ROgVAuV07Mp9kH9ofFFMFM8QUPFQrw0HLqOYgS11yWIJh9ZZDh58AwvZG5HTpiniSsrqaZxQ3p0cPb0qHZTSjFG1IdPaKKTHcaQEv0EoRegShNuBuqJxXoou%2FoJ0w6nA55nRsaRediyoew8ib8kfgqV1rjPoCUJYmkIQdhBw0aoUXPdiKP4gR4QBQpBgPKlmGG4k6hhP81oWij%2BE6Q0461bySm3aegb88Um1sdhaUSz7Vncq1Y1x%2ByTnFKWSmX2qKKb%2BZGcBgAoyizcyi%2BAiioAXYKKktydtIemIgZ8UkfFStoYlpLEQ8dlO%2FD9IkRRmSH99TTzKGTacuuzWHMZMBQXGJUV6lWf%2Bh3f%2Fd3d9Dmh237822rd14AMWUhnRtvesObvn9iYmrT0uIKZooOM0gSuJBOPHwg1ZlIHRnATA4x1GdM1AYOjuOQmWcJhrRLY8Ms3%2BFq02lEK1cbDK1H0%2B4DF6fdR7enE4UNaRWbkDPLgwBOctZ5Vt%2BpQxUd0TSuyg8WAZLGAkVLm%2FdOKo7Q8OotS9y3SMN5I%2FP2cGSI7ZYGIX1DAbQBrOJOpNqTyUb00BtNwytcjjI6Ugu3U6dMbBmmLPJWmRlwARgbtH%2BQIRCjkQnnCU3ShZgaFhGVTJxCGPQqacWJCNU6zy3lEjAQB9BYc00SdkRB5FXOElcBEqCgLOSlcm8ZyIk0BA%2BAot6kHmkq1nVvWeY6y3WA%2Bmpjevj%2B2bRl5xZLSrqdYh2HobHxsc2ve93rf4CqfJi2t6VUwc56nA9AhTvuuCPaf3Rs4ocdrtuTKTHERwnEMevIQ%2FvRgxgSSkAqpgnepTlVxAJPKLya3LE2D6%2BwSNCpDIjBCKLEKEG6Hl24JN01fVk6uoxzOKOrFdIdR6zg6RuFXmIpy6z5QsSK4inAwEI73i%2BFFSGgAMEYDQb5GJ3Q8KuUA2mRhh2OQ0p7cfgIYUikoHzTkEiM6goczUQBlTUVPADPN7GLHA0XbhJUMGOEv3DamCglAvgyuThsRLLtHT5w%2BgxYumzk0Nl1SSo8%2BACKtVM40BCuI4iK1MvSyfWspyCSk1jmUKS5hp4EweTYoiXEWZQ7c187jeXQlBBKN3Gslzw%2FOpigI4C1UNvrYDf68qMr6Rr8ozYwfWQf8VCET0yMubXgR%2Fptz725nvGQZGc9YGHFn%2FmZn2l%2B%2BMMf3lWpVl61vEIP6rSZH6RxFClH59PSoTlsNeo%2BiHuA45yWVHTU4%2FB9w8CJNDFyFBmMKMJMDDYg3gIW0oF02%2BHr0qf3vSjdt7oz7R3YmE5g7xmAiFVq0wJI06WRtJcNBmow344E4J09c644kI5xqkTXYBuLgDLGZXARr%2FNwimXe2%2FMczam8y3W0oWioC50DcdjB8ChBNdyFe6zoRKcLrmGjUxYNi3hixRRFsAm5hpwWQJFdbjQaRMIjmOLqfRhEHd6TpOFiTnCYDr3jQkpjY%2FO3F4doxGM%2BSPsYJRUsHcraoVyKMvUhlz15qvup78UyH0HiN8OTgMUlZ%2BgbJaFmWrEd%2FDmJ42jNeQpHqpSLqaB9sykdeHyRkRo0ok3RA%2FGcZThSKr%2FaNrftxcBZAcKH83GgEF%2FXX%2F%2BKV4yMjk6xf6EMXJMaR5fR1xFoStNgsCo77AU48B%2BG2gwZqzNpqjRDZSA2uohCTVO7sR9fuDZ9eeaF6bH6VFoaLMB1KmkY5XQDaQyTwRy99STFlqWX7W30UH5ggAoitgDHIqxFLwz1MAlkbx4gXBPCqRnpaIIdDZLRFKTbIE5PaAXHcDSneBhgBSzBEFGM5nTlQKHN68eoBwCxv3qolMfmCTZSiB6aRlsGc19knVu%2FF9Zc80F8WRrfw6mMl07VFGJURifbfwh6McViOUlfsRWA0j5GzZtQGooCIEdimXsoynxn57J0wf1Ml1NxpeVc%2B5f3gt3G9VndMBRunptkGDYy0xlgidWek%2BmFV%2FurC7kiOPa3WRQx9dKXXv8KXu7lPKcYOxeACuykEejDGft1FV0noKp6i8pkA8PY0p5DWDCdsKDIFH4QfWeyeiyNY0Cs0iBam%2B39uh5Uy7Npvr0r3Tl7ffr6yja4zViaQ5rUaYEtsKUxwCBLPwQ4jlN59ZwRG06ikINEnEfpnofbiOoCQ3IBJdFHuSqklujxAmiAxpfp8xFwkD%2FPNqws3Vv1CBuuOKDIANwA2O%2FR9IovvtlAvTd8gjMwWRmeB3ZzDue7ShbSstFANqFPPnuQU3Cf4ESAzjfhSkKdKhdvT108BtpHMeQFAvsxjEt5ScuRZ4Gy48pM55EGxue7ABEUhHLpvfWR9pozpJU5%2Bc5pIe9N0doJKtyoo16CEHKjepTS1x9rpbcu1NPUGGLTclKNMsugxscnX0e0jy4vBwYkTa4eN%2BuPswIIc3bhgx%2F8oGWYKpcqL6%2FVtGSqwtI4NOLiCXZ9P8xeyGO4XzBNsYnJ0bHSLPoPMopGiWEoxHHqwumE%2B%2Be%2FL928%2FIL0IGuZ5gZRjOECdIC0lY4%2FTuXlQo%2FhG7zK%2FQi5gpUgmsy4CTFOwLkWVT6pRpVGbtu7AcgY9zZCDftKjaujMFbK0OBMIUDoGmHkOBLPPsl%2BMtKIcuG%2BQVi5T99eJkez0SSu9eQzNzxgLQ%2F7lnkBIBujyKjMhsp4Ab42OB1G0WZsEo%2B%2F7klk%2FW2bSI80nLKoXHEZPj%2B7U3ER1xNWVtj0hCRs5i4UO2igWcJOEDYfQSFYIm05i9zIegksosY3ykj2WXHOqdoRFNZa5uyMPgsiFx7cv9hO%2B4%2B10ga8J%2FLK4UJR3ZYNGl5OaaY%2B85kP%2BvtoAVKL9%2BTjrAB6zWte46xs83Of%2B9yVTDVcUavF8B36BGnTHENA7MRpyyCm8jSNvgOFeKMJD6EQ8nwQXWemfkW6eenl6bbVLWl2qJxm8eHVlWIrDTHBVVvwERroBHGl%2BChX7mhwehpAbdCARwDPAuHAHf2T7d%2BCXkyZADbJKSGXeKecF4z2YDlTjOH6RI1U5RYkQh00MjqSkQM5SuKWEPxRJuY%2F0SB54EAcR15W0egq5jqPqRs5Cx5NGAmQlmEog2lzb0PGftQAWk01wEnd3YWtcvWFafSevUy8Ah4VAyJYFgHRB5xAir4ilwWIFk8QOHWjb5ScKXQc68C%2FEIfUsW1EC2CdOGw3eZv0Vg%2BxKupmpv3Igdn0%2FCuYASCMSOGXj7xcYdszS3%2FHTTfdJNMPypjW%2BuOsAOq7rF500c7vGRubLC4tzZMAApkCaduoHH8w7Rg%2FgNiyEWjoEC0qgPzcH7oFY5z0teU3py%2FVrkQRxgoEW1mC8KOkshlL6RgKYh1F5jFE3RzEmSA%2BfSDit6iVBrQTtNh%2Biu6oaih6blQQQiAuIYINKntf4GaR5zHSiV5OPvZMFWqljJOTDjJs3CxG6H%2BRR7YCS2zGhXyEu2g8pJUVCRkxXEkjWjSaC9EV1KeZ9bnWj9liGT8C9hRYCkJx8kHGbNyDRVzDIZGVn9AQg0wauXJrat03wxB7wkQ4zI9WpURmI7cJ0whlLKFDtQQRZRc0dhzDCCg7nKNM6%2Bjaf1IP%2FNgp5LiQPF5Yuhg6mA2AuQAxdu%2BRWnojKzwGBSEV52iNj42Xt2%2B%2F6HuIdXsfC9yfdpwNQAV2%2F4zqDA1WX6LHnuAMgFKRDggtHd%2BH3cTRD81pSL67T2EZf5RHG89LN6%2B8MN3d2ZBqWJznERcy6O2MzMa4KyOfjhFlDxGLgIMFG6RiHlkUOOk3Sxd8hHQ168vgtfHYxyywJQt6cL9Iz2XKh%2Ffanxx3CEJm4TKSLFb0OHsdO5eHCOzi3CboI7UoPI0D8XK3V7cyFidxLJMDgfBg9L2KhwfE6DIxGjYjuQH%2FbKyIZDzDcI1i%2BAVF3onhTpsZcuLKmQpMqhY2bUzDu9ppePcM9i48D0IUZqBbDw2ipmxCVcqhIr1KXIFj5wnjKe1jzoZbpX2aVKUMiBT3fhDIcqow8BqOtCyrNi70k3RoBvUAPWh4A75SWs85bPORoZEXe9%2FDQs7CF%2BuOMwLICvKLMQYbZknyc5tsO8KrEF%2F23FVWSraQ3VVWSWjccnLAEc1c%2B6L0tdUb0t92LkjzGKvqjM7s8SPwFubPGWmhqxD%2FONXfy%2FB4HL2H%2FdoBoI2We71DzAO09gM0nPYX5sGDmygYKxBnGKIYXqqskNYMpLEnbqYRw9fZdIBjPRqengoV1YuctrCZwxBpzUiHVybGH8vAMz1cTpUh6A1Eh0PSZuhUNAGgDkevCEU%2BuFEUmzq5yYXpInDR%2FmEDmXL%2BQ3G9wYIaS5uY5%2BuD1E03yxdvTBuWDqba0ZW0yo%2FAFAFNGB%2FJ33iemSNSB7grHlJaGxiA5HQFh3U0x7AjkW2I%2BT6t4ktOQ86kEq6oC32RDrg8303Hj7fTBQzGaCLrgmcuaki1%2FFyCD998883OfVKmqBGvnjjOCCDM10Vm39u%2F%2Bqu%2FupUtiXfpJilrM3XKmVpz89hOAA5KnXaflc5EuqP%2BkvTF5o70IFqMM%2BBLuFFMoPzxI0gADHYM2z5G%2FMcZveyD4FfCZYYgjcqnPa0FOHC6SLv5%2FpiusL1Ks4sJBkJ1InQempYp16i8SvQMyvFJiLFB8FCu4D404hKFVF9Qf5VD%2BEVNRdGh034Qz0YgTXun%2FIvKEUfwRTXjar%2FVPhKciobOS6PJiBJHL8bttsC2dbEg0decUOnMB%2B%2F1L9LrwD2AtFgF6IxHnsO7tqaNyydSY8FdWvM0S4CaRLUF2SkUywZ3kCDQawwqoll4G8AgHbN3qkRlogY4BJ%2BmkAoKj3Gz%2FkOdCCgXlDonaJcDJ1fSc%2BnmvYOf%2B8CDqli69N%2F86q9uRhc%2BzAy9TN9sTzl8edrxi7%2F4i5aj%2FcpXvuYiyLm54eZHvb4ESVN7ZiYsvC3sGN9AXH1o6QfSbzavTvzUSTqBv88SHELOgvs37FSu002HEMK3rLbTXvSe7TSySmzwBApvJadpvJtZFv0YWZWxVGtmkUVrD2nQyu6nDPmDy3ThXIch6gGpwDtn70nC%2FzHaWuGmCXrqEEinEpVria8egHmOtLISGgqnaVI%2Bl8voY6OfTpxQ26kZ3WPdvyhWUnCN9V6ASiYYOhM%2BPkJMMKw%2ForfSKUg4Tp%2B5o1EQSfh0G8dDyLoBuU7yE5eP4rszq7sRZVKzQbBH3bKxMJzLAIKtaOcYhg15zXnwXuD4LMfloshiQgn9UOOqAw1pkg2LOj47yVSjGHXUuD2zuNs432d8UmDPd8XY5teBAZ7bPUzEx%2FV%2FzsiBekteW5umJi%2FBfaNQW6HlVVNMndFEjZ8zerRwVbqpcVX6cmMY7uIk3jJcCW6AwsqPJkFgphvocav0%2BmkWbe%2Bli0wiby%2Bg0GGZojGtbIfedoBG2OOiViysFojtJjNRAIhDbJtGrEhywXOC0cxe8hqBAzpBaD%2By3uoD8EpABM8wMFeoEGn2G1jRoCEu1H0%2By%2FJdiyZ3CoMiQJAjutZcc4RHsG8o4E4j9niNk5EhQEzuBQCwJA8feW9JuI265SLkN7zkm3NU%2Bnd3deKXe%2FHoe42NAyOjadOli2n%2B4eOsWL2Q5TmYH9ARw8xA2mFNBwS5tirDjFrJW50nc1E7CvUQlNS7Eh1FEwdgIYw8yDhUlSOP4AS2iyF2z%2BISg2I%2FmGfnLXIbv%2FfSpk0bL%2BH%2Bq2DijFg548u%2BAZFdNS4JV1L5OEewRjL505OXpo%2B0RhhtWchVhti4S6LzbGZoKkVWOJ0rc5OO3QCjRkXG0farrqSIBqd0dJ1l2uEImwacQCeQu%2FA2Kp8bgTr0iGXmYJQmKiO2UjqI8loGqOoejpjcYFwhhFNGjE5c1isI3A4l1EuIZM4jcg7%2B4ddl10dn4QkADaBXONFqaF7GfYgXymp9tAE5ArIMEdGQyj6e9TCMiVEIL4AMYzB1HLLlNDPeefGe%2FNQjXc7c4Vd7YjWrHI7POnVNbB5JO5ZOMrSehIuiD6G0m6aDhDo0DaU5ElSMRq9m9AlAEFfqe5oPBKU9PsQsVRokzwZlW%2BSDFMDcFtMJhlOGq1s%2BtMh35jqG0RG0%2BlvSWDo0MLjT7PqY8H79cSYAuWEC8dW%2BRy7SnmIPtIZFuvUcS3H%2FCDntcLcGQFZwApuE52qkYvU5DUUhId4x3CWP1aiG81uAx7mmsI1Sah3dl%2BBKB5jIa2PhkzhyhCCyPJlGjAdeWMc4ec8vAKRpPO1C7ocMtE%2BRJ%2BH0MGRhU4R1GUxMJJJU2GMCLfRfRFSTObJYq863GNkBthJzeP7MAOSPtJ1n0s8IwUnuApswcJ8yQLJEGgvDnmSDCSw2L%2Bhi43IgEMpvICdXIQhJCmsHdNBhrTAIkFYRZeqXfDRc1JbG27xjKC0vH0l7jjP%2B5PdZcSoMm40%2FKiM16phF7CARkStJom%2FCmSiPyoadN1xGcgBor2cDIINOS1z5oU%2FqDHC4F8ADJHAPsmwFp7MC3rzBcUnHA4fBi7z2MGExLe7acSYA9T%2BiIxe25cRgd2QkXU4CoAPzjXTRKMogHEfvvBUqbUEcqraQdsfhKjUCl1xJEUK6XyltMzigMYKbh%2F0UkWGy5xAnFo2wrqYI8PBsSe0l9mJ1oDkspI6CXB2h1dUQXtSO%2BEk3JgolFCDgOzwFIrsVk3qBimjWdZxMpO8bKd7JwRzV6TLagfBdNlmIbtBvH2HvdzoFW45EWAJHfMWj6%2Bzd9SN%2BMpN0uxhFafWogyU0n%2F4R3CjKrQ7EJ%2Fy%2F46ehcnF4l%2FOx8Xdc1knz9RNpZR7nfJZtN4J72lmIx9kgTJgCuBfiHtrBrOtCEM1w0JNUzUuQ4X8Z3BecACS7CyDinLJM1G2hRuNqLDAvIjjvVyqULyB6luVm8qSjn%2FfaazTuAr9H5TO%2B5oVNLVgoPYvBDLkKFqd0IdyQwz8yWISYNQq%2BzOsjLMfdv1DTdSxsRMrhMIJRWa%2BrlG96GvCcRH3Tkkuaa6e1pDL5oNpxGy9pL9KHY9FxIYoNmsPKifRLVMZbjphppkYrNDgr4nn2dLibFXCd0uqUw1TlIsYuaBYnvC6uTt7iUQwLzx6CGkO9bzuDT6ZdBxNEVrwFPbREWyjsYr4PZzNoYvHizMW3sNTfNzaZnQaQ2lEY1ruRQuhniNEsNikPc4POs1156Sxr5%2FgFREqmLYqIpIDaQAObQ4NGXkGM10hKPuZAYZAwwwBIa3lsKWO%2BltncuR0g7xE6mCJdv9I5IgkbhsNpZgW%2B2mtnGEf4SbM4wJnWqpgQG9yfcpwGIL%2Fee%2B%2BCSbJCpzxhesGWo%2BIUVn0amkGn0G2c1V6mJDNz6Dr8VJFcqYCuY%2B8wEQ10urOuzNfSzLGTqblCM0MA147nkQ2haMw4JUz85w%2FxJZdEbyIqOxjdYC2RZu5XpM1Xw8xBMC3RDo4FiGxaLzzn1RRCgghIAwJFGx%2Bj1qRF2GgY5%2B5cRqOnIkDSOJrdJHRYQ%2BkGRGHQw8TgEVw5wG9jAybFKgZCa5y3V4lga2Hzkw0p%2FTmpmzuq2hOK7G2EZZVvcnE%2BIaY8tQ8NjRXSVVc9zo6IJxGpih25KMFJQvFjcqjidBjqDDrU7bSJyVUmoJW6TtS3R0u7jDQb4nkYE4CgVrJoFJdQc85s845g8S1EcrGIO2Wq3nvvveR4%2BnGaCGO8X7jzzjsNKZhHYr%2Fi6FQZEEsovHQI2D%2B%2BKazrbrHqQKOTRHB%2FG2sY%2B%2FxE29PTaPiV%2BaXUdtTBPzcyoOpUnlJKcP%2FaNYK4vBdMARMqyDt%2Fe4KW5R1hQj%2FKXy2NCv4i6S3ytUy%2BJbiTxkDmuXnj4fIhymNvJ90avVjbkw0Flmi%2FDKBY7kJHMOe2Lh1OCJsfaYu3Nl4GoWTDNUOMAZqwL1l4w7muXi40NgmeGBCQOD86oKBcdxAu2sdInNQ5tpMBCUU2x%2Bqy%2B7yju6ip8alDB%2B6wYVM9Xb3zcLpz70ZGS4CZ%2BkkqPS21B2kwrCuyqaPgCGBxVXcdI6CjL%2B1isd7OfKmltBug7iNECGpHxbEbrSAAozNDG6rISVhmv2FczIfVXvrSl5rAKQfJn3rwE5SJXTe6b3%2F72xltFwb7DerVtJWf8EZ%2BRLaRWrMM3Vd5gWIqlwoMWFgKFlwCH9smTmedJXonHIduDecxvqWDcBYwuI7lsihe8xk2GsDTdXjfM6%2FHJ0J4qAuY1BzXJgYeXVIVZSfJn9VeYe7XrG%2BvlPtoyFxW8Y5Cqj9wC%2BD4sVaKpaNW5kDx212AyFVniq5OrMtitSijTH%2FLIkBlmW1qL5wxCmP7uRBtcg%2F0IhspPvYuPJxyRDGwB4Ueww4kLO0lvuNAweNhQ%2Be679x2NF259TGs3nQa0I%2B0iUNziK4r1kWPBVZ%2Fof%2BoHwk%2FKEn9J3CaGyKAfkByHNM2b80c%2Bl4N6eEg8qANv%2BuKBIOjyun5ngcFhYG3vOUtVTCRxMaTj9M4UD%2FAhRdeyLdiJSyxAZ7MHRr4P6cTDJhlbBQYdzYuFstHrirC6CvFWea%2FsJGAkEwQSq2S6CFDsAGskHpMbgxLzAfSCEUa7uYPtMVhKQ1GeM88CkKc0ht1hvdQGV9CJwmDI2lqY9KFSb3Aw1GZGbuIMVZW6EQWwkqrk86wNCLF053LMaE%2Bw5EPxXLlqlvK8JNKvO%2FVgTxM0oYOrstS5gI%2FcVnEl8b52GAFvc9eokVyhHgkNvER9XAqgVfklxPdSa1MXqZpA6r2aHsSCNdeujstLU%2Bmh1YuxoHPehMMcjlIcIQlz3RUaSeCH4YYC4WbSunh4He8sQGPopCwIQkIJxc2IWhVB0CRaECsP72UKvyWrS3At9OPaMr1rx944IEgy8TEYGDdpbhUZS1IGz2HNcJBNAknIaRk13XrZj%2B3zDYrJ1MH18jYOUNEy3aJ5o%2Bz2TvDrERZg6utpUxkQBCHs9b4H%2FnTAJG1WdhgUtWD%2FOyrckOHrfZ3FcEaqFHiyRSRNqFYBi%2BQsHQz9YOBB9DqAABAAElEQVQwTEI0gUKzBb10tHdZTVagdWx3WbSgggvBeZzNd9NZfrGUSkBpy2mnsg7SnPsCAOq6Na%2FfsOJqvSa7dUfvgc8eXjzdoVVew%2FZrjMrYVAouZI3IiDNXX%2Fq5Nc4LrronbWOZ9iDLjOBduUXJRA5jaZ0WclZey7PuL3qlO%2FfotA%2BLo1itYsfC0GhR7Kg8U5vgaipW%2FpQfWXHYA3IJCVpkG5%2FASR8bhugfpwGo94F4DPrWKBCp5k%2F0YHK05lEIuUnYHGjwzlGAcxxWHiMsSOA1ugbFUeuWLoLAXuzJrXVZ%2BytI4DqCxx0yiE0YQ0BkyhL4sbHsuYpR0oslwoTRCu6pLiARBJCn7WtKPRWXNDQbyAuzGDNvR2Aq0C7MEzgugMngQbR5HyMxrrjmajGOzkv%2BsUKDxotNvWNUoTJNIxEGdpU7lIXmzKqAVc73Nn9UjcaVa5Fw7JPYZSNNYgRtovDW1xJDx5FqLV1%2F5V3M%2FS3S3nIOzQ8GVpQFEyEu9eIL3Zfpi6z%2FOHDWAKm9Zxz6SHo7HjUgJH8pA9HEFE%2F9Q3pDJ%2BJSH18%2F8akfhCvRznzMLs%2FCLOhfEqB%2FkISKaySl7ERxLtnQM3hnHz6ZivxorKGjV0LQcLiitCFXAzAQzV67lqahKQKVkpfFbhZsY%2BvPHsm%2B4yDPJ0qey2J6%2FMYq8QRTXMjLdJ0tz%2Bk7unBUFtMbcAXNDE5SoOkHq3cIrDFQTtRyYR%2FgacQaM9epqxMxMmtjMeK94HKH%2BDojNd1oLVso%2BNbDk%2FLEoIDVFkWGNM5jQXW%2B9UtujyZSLn5US8L7aNN03bwBVSC2sWGPRBstc1tvJIQgol4oPxsnDqVXXnZnGmDUV0WHK8Vw3XAMz3mGj5EO9CFdRuVpgdMRao3epgKuyJqE3nIeQeRINEoJIflhCsYzlDvahPJYZIjNSmSLesbjbAAqHNh9QDGJ6pAVKgll4zv6ZM0OWUC0BVZpHGJTpzlGIAFV2DaACoXZHuk7iKuiHMpyPEuM%2FpHvJE7qcR7BE8q1n3ocMAAXVcjFdQSUle%2BoIOUCxDaY3THCRXNF29qGTso6iSinzCMyRi2RtpxIjuEwPdt%2FXPkQi%2FkATqxHp1EUae72IchcNpwTtn7mmeup5EILRe9TcAAygOQ%2B1AQIOjikiZFbv%2BqEd1ZLcegotFABrDYm%2B%2FgUBthI1NYDCP0O57Pxu%2FXhtHXTgfR9O%2B5nVw4BQZtQNzfVsml0d1Eotnhvd6ZlYqpJ04bLeeTEVn2MUhq3FuKKQHxnL0Zwqy3IKpIfAVGrm3sP77UHEOv04zQAMYzv8vNAhU9%2B8pMN9B9scCRC5bVO6u5QVX1fQt5Ps0TtGJMXEpC0vQan4aoxKgxSXAWRhQmC9PMnCQ%2BqEmy%2B4Iy2CrecB6CqSzs6sabUMYMi4vCs0hwV9L4HTMsQnIBA5hlxMlgUVasQVx3J1RtaavXoayKCaS%2BA4YJfd%2FNwFWteHeqSJFeKxu4YAkcAwYFck98KAFk%2FEox8%2BNOrc3QcFOHowb7z1xkpl%2FXMijsKsXHsfL2e7oAhmIycnVGZYQv8SrM719txbLU1Gsj9QpyV0uVb7kqvuuhhfluDyWtJBY01AlhH9xZRNLnzqxwYr%2FQ0Cy1VomuEszPJMfXHYvEzHcNCYVblh8MzGW0v2sI26Hbrf%2FOJv2mKCbFBwFOO0wDk1ze%2F%2Bc1esJ63l53D4iBd43bTmOxh9zwNDigpDJSmFbz2Tgvz5NNv8Y5rpGKFyRrO4K%2F1dBFbujREepJM4ETAnKu3PufaEUz%2BbHpyW09BFVfvOWU7EEbyu%2FmYDNjRmZYeo0pAeYNKvzpP3hHDuSy5DiDhjKXGAir0H3QfnLw6bX6amx2%2FIjPyz9KFq1S3sbkU2EI3jKTQJn6JkNBxRBDqGuDhgcNovIi62aBuohUUgjTFYVxcox6GAWRxTyVtWPLuskfAi7bfkr5%2Fw35Gq0U20CJ%2F4mk41JAoiORI%2FGYA9WHAwTlHHgt8kws5CDEvAaQpQ5E7PCBFpEnQHekm8IOJNXqY8PMpx2kAYjkru8uO2wINlKd5E4la%2Bpcch1xKARdSmQw53%2BMyob4Dpv61T9Bo6CAUf2x0m7WXpMP0Nl594S6qRuw38sv%2F%2BtlGnXjgqxULMFIQichF3WcNRAaVKp5xwG1Il2UFtAWNwGkuii%2BjOTOeAUNPVdcJsAAU3suZBE1fjPmthY606o6o5k2a1lEA9E%2BnbhKbmbP7RHyzUyheDRBcBKAHZxYMAQrSobB9nIRHo9v3mSb%2B0h0MjJI3Q0yuYH4SjyM6byVdd%2FHn03Ujh1KxxqS1Io%2FPzheOMVoURJExNBW6zn%2FN8v0kp51KrixDrcr9aNMxTdcAygKYl8bIZqsu42qICbFhkuuP0wD0%2Fve%2FP%2FGb7oZp8nNTbFqsCDM9qsrN0CBRRtgRw%2FGytcN7UB%2BhABOg0mUzPxNJkBmGuEHkyDlqyIJ%2BgOPvhjLkpTutlUn0Gzh68xORokIBwEjL9Pqnwc2DU4B69r6p38iB5ni2lzlC07Co45X6Bo8BFL0DQlxxdWrG55hcBVShRCvOeMcOhNQbv2Xz6B2SPIrZr6fzAnX0INIuwZn92aYcAM7BXWz1S3nkWqfoRL1QBX4chp0z83cUauY6ct2CJqRAPFV%2F9aegFQr763d%2BMT1%2FAJWioc856VJXuexwAInwEpMCuffiCj1njlO3GOQINqOcmva8cTbYin5M6mZTRLlqd5pgwJ1Ztiax8eTjNAARoNsDkIsUpxVhgXw%2BWOBx3BYKMKgTzH%2FFalQIl3%2BxmGsQEdBYihglQby47wPCRGhop0M8tU7LClR6qCyhOH3mJK%2FgJNGloAZB187Qg%2BBTxo34gicDaE25JrIz6BoaBU6sB%2BNe0dWMHkma2k3oqa67ilWfhJPdZ64jaJ4AkztnOOVRZ%2BfTMH5K4SgjZYgyCw7LzHtsYJ3oFNQIQAX3sR4BdJ%2BjlsTP5TYFj%2FDlYTQliFzAWXS%2FJEHU6xyGD%2FFCPnLBACDb15XZge3Nuz6TruXHiR0x4ikSNiHdOyYYdY4qrsjeiWd7zSr2jWVP0giznm1FWHfJDROErWDduOKjdJSbVg8T%2FaJa3DjOBKDEMo6IvbpSO5Sdvwkb9cddApP7q%2FiBXEqABZQGt2ElGgTLBMmEypOC3ueMgmTe2yM5HW0FgNaKRFhVP9Nci5Yr7JcsAghMXv3TBgvASJ04c179vwIyLNAAVH8Ena60kTgrF0q6ogo7j1zHyVNB5Jp0ASR4MtfJV9%2BpG9XQgxRxsdq1B6JozF65gnMyYRx1Q1H2Jx7il5gtFEW3YRTD1sk%2FChde%2BpQP7uOnFxRl0pUd%2BtuxKy3ggbModhHGvbCWg6qzG%2BsoG2n%2BGOLskvYyzm%2FoQOiqLleCB6YJToQhdFU5EExM8ZCP28OzjWM6gk%2FWOPrPJCZtVfG15AlTW149RGbdHiZ6hXzickYA9cb9hcXlpf2uyID7WfTo5O7GetmFsNlZN8%2B19BBJ4pFvKNLBCXrAWkcYCevvhAWAQmwRITgWH6JiAgci8S8AIopIn7eAxLTNC8JzyQDq9cbIO4eJGP08AZS32m1EJFBkRBLkAQje84JD46MrVgVWrLmCwPpHMjgmL2IRXw4WOpHAwjbUQg%2FiQ6531MFm4gwOw6foIMCUesX2eO48D4HsVHKZ8EuJnke5KYsObnmS2RLxHfFaZI%2FIePKRH5TRRhQ%2BV%2BZjGNIJjo%2BaUGTn%2Bg7b%2BG0Y2Jf%2Bp4u%2FkDZjI7LLuBzKMhGaxQ1wJm5k9q4sJtfAuLvyL7Mm7EX8Nscw%2Bm1f2iB5Cg0GOEsry%2FsJXDibLeiMAHrsscdssuKJE0f2r6wsmKg5ghNcBSrNdOkFEHAPhn%2BJECMwh6u54fOIxND87ym8UVFEViHEFsRUb5Lw5zisdNAJFIR5wPD2yLhyv6ZM%2B97GEy2cvcP4Nk5wZ4gu4VQaFWE6jokrC%2BkCxnADkaAq2XzzquO9ey7q2uHehDG5CtDqAMhTvc2O0y9bvspn%2BccWxzhORQOHv5Bur72yBafu6YwWwRIHzSxO%2F%2BBljMjYDU6RVVQv0td0ff165ItfJiSMP%2BTSwc14%2B9Cj6ecu%2BEoaofHZTQefHM0WJEznmSJD9%2Bw2Ti9nLNh85LdWr2TfpgGmMyQvwSxWaWVluXv48KED3Bd7mOD21OOMAMpb2KXSF77w6UPoQcfL%2FpAJdBHN%2BgLv3IZcJpv42SRztAJmTLbBjaKRLQMHlZbz6LUXjicxv2CU3nfDmLhl9l2k5TXHVc5nI9wT74KQErN%2FRlhA5LP39nKvPZDxo61wEfUfQAJbd518WI6D62TOEzoQAHE5dB6FEdbv6BBhXHSIDwobXBvoQaAkipuLHQkGuJ07DJuZP2rHfdhn4LgxoLBpgk4ULgYYXH1F%2BfT%2BCw4mh6HOkiJ0IcAclRlHPUa5zvlZOW57nTYe%2BOMPtrQbA%2BmS4dvSv9785ejcw8R3%2BZVWYQ2MG%2FAadZI11x%2BAWQBE3uVTDDS4kduSML8oRb1bzROf%2B9ynFWGlHib6Wa1dzwSgLr972nnnO99Z%2FMM%2F%2FNgMPj%2F72BvICNYJIrIcdhvbamzDIKXYsgAWiK9RIUMZkD98oRIEwu9X8MSQFgJKxBzGAL0j4nDfixu5ca%2BOk%2FUcwWtPo0cizvqnCnyckSYR%2Bte1pJyIlLvIfbJ7B6UhYYEEIPimnqSLqN%2BtEryS0zjqEOpMxIUJy43cUq%2FdgRuELLWGMmevvdMyc%2Btvk8VolArx09UkYK6kzkf%2FqReF4ZHw%2FOdPj37e%2B4bn%2BO0Ntzsmmgp1AkRWL3OziBWh%2FWNx1AnDp6g5mZ4zdkv6nyfvSXONSpoiAQ2MTYoqYCYBkYsKXYgZ%2BCT%2BDn5VScOjIzZzr7AUm1HUvo997GMnxIKYINipmfLiTABKLCrs8jNOfMbZsF570F9KhkWTMgSm52ycHE2Xv5BNnpbYvFHC2eP5HOcagHinokxPzCMRv1MGqWHPWV8Wi7UWz2yJy6GCqO6TuZpAIp5cpQ8ar%2BbbJ%2F76dCI9Xgg6Gk0DG83IUDwb1ixzgAQAyGlibTnZ%2Bs61VAEiRRhnGN24xnCf%2BKuuduRwWiRX22vP8u2V%2BEXEtXsI2LLqONGJoqzc8%2BxKDwGW9R%2FKSKxQzAMipk5hSEtf65jltK76DblPIEkE%2Bayjh9ceHaKDyR3RiV49%2Bfn0nrFH01F0tik4byzwRFSUuJ8COTbbinFRjrZN0LbKex4ZAQYHQnF%2BgNRXxIKYiLye9OeMADIMi8osZntu4eQ98RNB8jwBhAgaY0u01147xfZWDbZ0sfDrUqVAKoRuPNBlcjFcMpxwhWBZHBE2ikLp8%2F9MACviGYeVywpd5mx%2B8zOE5pTTxWK%2FXhzfR1y%2F91KIlPxjeF7WaYyYlUYEy3F8Z7EVZ3IaxZvACTHHfR6FwXECXE4rKN4ESQVjIruuElfQ0KycXhETcfUeGzCLtbr6TvXKze7iwYWjeHYggKWlOkQb9zlgX4xF6eOVLsJdl5CTkDuqFvnJpvgxGevsYZ1PoX%2B8jPf8TlZ6%2B4aPp3dUH09H2VJ4YyY8dcdajd1nAsYwi6HsezdWuptG4UrqsxKGLtembPMLs%2FfwgDdIYMGETzvOBqDu%2Fv377bClffv2fHNxcYmRH3yIqRLldRVl64XXYGo%2FwY4OIVDN2FrkBnSIzrgP8MD8NaZZWdEdFTVLC8k7acAp%2FXyTD%2Fti7yRNOYycKBRN40eXz88BLp6DdcOpMjcijPn10yRhbjMQooHhIGRI0xGsDxzFGGun0HdClAkon2H12oxCdPGubyNyr32t1A6JFWEOiyklV8EDcCIf7pepf9AFXQjFuouBMcpGrGgoyqxoj%2Fr3ytzX4%2FI7K0zcQWzKijA5Fz9fyY6mmabkazjrR23i2nvgvaNU6ATZ37HhL9LrC8fSDGX2RxKc4lAnGsOHC0Kkl20rMcNAudGFnA2jnUuLCwud3bsfuZegpR4WzOa042wASvfdd1%2F7%2BuvfWH73u9%2B9p9Go7x0YiEJbzWB1l%2B%2BEA9GydbhL%2FGAbBVKmOoTtMALJ%2B%2BcQWAJGo0Pk4JA8B35sWRsxV7xfumwHEgwQzh7B%2FyCqxA7xlYESSrvgMSJp5Gu%2B9zmzCDNS%2FGJxhfh55YJrp3JuWqQbAqXHeZziWNN%2F0AfkKP0z60F%2Bh0vhJuoQ3xGb4qqLITLWr6Ngy6nkTHIrf%2Bw2tvm1PJTB3TwEQZQXVcBGjnfqSFTAf3aGqCcXSyn5wmWYWfr8gkYe58fn4Ex2GMNEfblZE%2BfQztFqAW8AfZiGsTm%2Fb8Mn02Vst%2BySqFHy0qVL53zF4%2FdsRbHGsUoXGFkdm0vxg771vb%2FwC7%2Bw5%2Frrry%2BLBbM503E2AHVxou6%2B8Y3XG2e2tlq7s4qdANERo19Z3fatw%2BlVbxtOx2bY1xCVQD2jgP9y%2FNKev48qUahEVLFHwFxRCmmtrbCnOcQfbzi491HQ5HmjTHDF1hMn30jzyWeAKBIxAeOTAWf4BnHV1bMOwczeo97jOKtkWLczeFKP4D6UQt9iRZq%2B1e645ooPAVZnp1dFnOJLfyK5kPqK1o4AlDUg7S4yM6YyehWNXy1EmY6GJpb1jBUqgImQUWY5rcFDmTUAZSACw3is085ZSUtGSN0JDJp%2B5jHqbRye42%2FM9PuEPYm47e5o2lZ5OP3a5FfY4IJ5MiI4bzYnfcYr3Us208lYZq1RAwnTEUArq0uurJh94xvfmMRCTpi%2FTzrOBiCDdZeWRkRee%2FrY9M1NZTjswYoyR8YP6QykH7iOObNHVtME4OoInnnmgBRbEsTC8d%2B6R6XjIb%2BL5yBOBDGvtcOSRm81jR5IAohwH%2B1KYcWN3kXC9ua4J1bkx7N5mkj%2FanI2NISzN7s6SF3Id8FNaPQYrsez79R%2FuNJwyvA8enNExjCebxJkFVbvnHd2Pqfuch24ka6j6kJyowgLp8q%2FSGg54Th6HGDOcNWKhsV8UpKgGd9UfuM0Z0vYOwSVjliD2U8oaOqiRDYMDzob0MpFXK82K2UM%2BtkGLIBobkjPL38p%2FdbQfek2RpI76BSzKIA%2Ft6WTNo1Q59B9CAsfaMIpj08f%2BzKJ8FP1gQEpesbjnAC6%2F%2F4vWZPy5z%2F%2FmTsW5xfnsQ2g8VgsOV87veR5TroyUnDlBL%2FhZSVsU%2BtC%2FTkJaeX9F7F4Ga3LNw97F%2FFzheMN74xvIsT1nmvk6HPvDLuJ70nfsKeEiWQIG2ycRjMM%2BSiCnEwUHMukS0lDlNWpkRxGnyFHaP3t4lwPtgq7d9mMS2McpcVIjTC6fzC%2FAAAUY3ADr8GF5EByJkdKDJj1K6rlukRZNT42WPKomOofoiEU7CwlMvj5jmqQaRZkkChZ9%2FHnPQPa5DrGBAWrKfL0w3op06erBIS7UPYunv6d7lT6wdG%2FTr9R4decsVMjX9Mrd%2Fj7aSjNgB4yOfoqzS8szP%2FtF%2FjNcNr%2B%2FvtDF15X4H7B8%2FVcAEr8vGX7l37p%2FcUPfOADjy%2FVlm4bdBhpt%2BHPKvJ9%2B46x9OofGU4Hv36S0ZitAlgEjVSgwtpnAgy%2Bg%2FD%2B81DceWQo%2Bs0zH9G7DO8rr4JJ3Sfufc5nX96bVZ%2FtRx48h4sHhCtofgYI0t6NC5yZlwPp6qnlWKOioMn2H7lM5jx5ROY3OVAe0kcYuYxACpDAgYirIh6Ks%2BKLc437mC9hO33zd64eBaFPahOiHNYl6sttTPPYQTjinXXmNHUSJiwfAHlBi3TEhbauiBnXO0Aa9JvSMhHEaL0yCCJQFLDTDfY9E59JN7Tw0hgZ6l6%2BDY7a88UiXts2xgJ9m21u23%2F2sx9Yj8wo3%2Fo%2F%2FVzXv%2BvfRzGrVafcUv3Y0SOfdWjHEa3vkudRhpc3vkouVE8TzKOEj5DA6RHCBKxN7n3ekp2VOeXwuf%2BOyvcBYxqCJZTKfB8913em6ffedY0DGTfiQOjQ1npJmyfBNYJjH45lzx1HWDSww%2FT%2ByEvuoxuELh8u0vSaV6Z6VQxm8eaPu2QQWTydwLKynQ2PWRfyXsNck59h6rCejJrlhraMYVSkIFbBi38Ei4OGOHoKdk8ZjleUJerktEaFDXQIaicq%2BmM1%2FNaZ%2BmHQsUfjzHV6zUv9%2B7pZHX1oc%2FF4%2Bt%2BG%2Fy79mwu7aRO%2FWeIPzmWE0udRHU4cn%2F4ML%2Bq9tjdhS3jG41wAMkL3vvtcIpEqH%2F2TP7ppfn5utlwW9uAZAmnbefELd%2FDI8uaweWSOIwcIVsyXOKj82rV%2F33u1hp14ppyybggTIAxAUH4IGVvcx5V7KpnfEV7AcIaCTRo%2BZhD1uJ%2FPvUMAMW8YzlQtGjeLrAwWvfRiBEa9tBPJaXymNFwhMnpLHqG5hIh3bsIQXMdRl6JLXch36CoMlxXLsQ8RYqylyT7AYFn55KSyQ1JiBXgsNAAKF1jvo3NY%2Fl49AUe%2Fw8S0MGvIQvwLKsqKjw22IWkGeOkQlsUjuGOULYtZvzmh2%2BB3R64ZuDv97MUn7BSRBM52eNEivuZPzn7s4398M9ErGBJtewp09uN8AEKMfaD9K7%2FyK4WPf%2Fzjj2Mb%2BDwbLloZURnI3b5tPL33f9meTu6rpy2gOSpvnhAhQNDPPoATNe4xIV%2F0sgdtPoVYEgxKScCT15XB9SQ2z1l6ci%2BXWwMXGQRq7H89MSnBe2UwhxAJNLp8AEdvfGAcb8hh3E%2Box2koQDYiKqb6upBAAtOIDr%2BRMw0ll3IFh%2BJcbpMbzfVi7jGtLqECLZBCpHHfwG9Z4EQ5varzOBqjnFqigztZSDi8DnmBH%2BvIfXZAC3LHexMqMMnaHWINmQCDNm6b5y88qhuSqISgdpaLlKPeEsGX1oE6tVZTffTybnVyoxozb2QGnc7Q0HDil5w%2F%2F9GPfvRx2xwxZpXPeZwPQDZ%2FZ2FhQR2088juh%2F98ZYXfMeewR1hg1erXfd%2B1fMZUHryJW2N59OrTf7YOcXhDDzdO%2F1W8V%2B5bbYgXXMZngRIUJaSf4wQeASAyWOuxkUIGrbf9vAVkENor3CVEG9wEwjpkz1zoCcDEMJ7oXt0NNcQZvTu4EmnGwjzcW5tdRkR81xaUf45A5dklQ1mXUqmOXfDhRs06DSxXjiKSCKMuNiGk%2BtxbUOpnnXO97fRWMpo%2F1486hJ5nWL8B6ISjWaQnrQyL35CML75Tt8wdKYNko%2Fx6UgSY4LwtRmXL217IJqj8ihjxbUfWhhVX%2BC2UPY888ucm0m%2FzSNxkz3KcD0BG67JLZ%2BNtb3tH5Z3v%2FOnbFhZO3o2iRT8s4K8EgVHALr9iS7rxJy9Khx6up0n34KVAfZbrvRXMLJdYxAkLLsG45T7fGF5dKYsue0R%2Bll4h79WFeBenafKfQPn0Pe%2BiB0YY3isSAJnKcoCwJ1b7wIsRFT1S0WWTmbwanhZq%2B6TKtkPb4Eqk7WoOORMlBHxyJDgQvdwzD%2B%2BzuMtD%2ByzW1JnkSA0Si9UcVDVIQRk7TjBbD49%2BfShrnjcUTAb2tC6ULDqBdYIuinB6a5ef2Iq4vCui%2FBb9vVnTtlyRdu%2B%2BJ1IFfNGZgaHt3dXNV%2BJ4Rj75X3t4cKjI4Ovun37nT932jne8o2KbWzLOcx5PBUCJ5RztK6%2B8QPouHD5y6L9ZOBocQQZROYf5zYkff%2BsVfMY%2BJF3JtkeruAnHfCAnTZ5cong2POl4BpCCoLzsX3vf%2BiIuA0nwZBYe4Qjj1X8a58KRiyCRYVxNG4JFOC3QDt%2F7hkP1HpXnfM2z8%2Bo%2BtB2n1moBF0pxKN9wJwCkmNBDUN0ilNaotcY%2BhvnqQnxTP%2BywgqLuTpaEDABYKPSgjlxIgMQpSBRh5CjoPaw%2FyI5Fkz3u3H8fABt1XkyiWg7AAYDcJMHYil6nWMIpjrII8hZlbzOlsnzh9zAzPwhWsVRLs2jKTjp88PB%2FI%2BrCBRdc0LLNI6%2Fz%2FHkqAKIWqXv77bfXL7zw6sqNN77l0zOzxx9nakOGqSrBnkGNdM1zLkhv%2FfGL08EHa4mfXQhCmXds3SLLdQhqhTijc%2FnNf1Q0ANEXVxLP%2B%2F5pg3MGsHr3Eji4f3%2BkZSE45V5ggpM%2FwZ28kmeEk6I89ojtRhsaFHXtjElWwsmFgvOQmkN%2BTKPBkTRCZm6iFsYpBwIUvo9ZeKcyMBmE%2FkNvj6G8ulBwIHUvuBCrJrLyT8bUIyz1roWznAAnWh1W6yx9%2BE9Rhv4R4gsOlJVq68QXyl1gGXShip%2BQ9bVumFKKiDI7VvZ8VIz2ACWngft0Bjd357deRdmwCwUR2Wyftjw5d2LfjW9%2F46evvvrqysc%2FfrvIjlz6ZTjb9akAyLhObbTe%2BtYfppjp6NHpo%2F%2B1ip8uZfI5esgwv9%2F%2BUz%2F6XJ74leBYHsJnwCJwoHMcXvv3uXz2ED4BiCdElsTgtCf2QBQjrACEVOIMIJF%2BxBU4vfSNSrwOjlWCMw7C6gWYG4l7u6adnMbqGw9V8FzqnI2IeSjfNy6GOCOK30OEca91usZmC2HnoWdTAr5pF5LL%2BCxZ5UzM4KsjOeJrMPVg3ry18T34VRMSyzNza3iXpLjA5tUqhl1f516dIrbfuBnB3TUmtawjwsvJVlQu4ylws%2Bil3hg8%2FZnv1Qtf2m2X9d2w1JF%2Bh58ypVGP%2FFdiHb3hhh%2Fu7Nt3E4lF6lzOfTxlAJFM5557bnY6qfLmN%2F%2Fgx2dOHD84MMBGI7SuQGmw0PD5V29L737vlengQytp2xgE7HEcyXbKIbDipJS9Edba9x54sheinAYCBpgElC3%2FxCmwMpggBrdBtHjnPVkEeAzPQ3yHkHGfh%2BTqODHBymc5j5WTIzlSUQHwm1wpikTYGMH0rqvBaRy65%2BG7ozB%2Bry24jgprfp%2B%2FqZPoxdjEWzAgJJcVRHotqAv5kl7QL1vUHXOGgJCbWK%2B4qgtREWkSjvp8L2CZTkPjEbffkcojgpv0c8IBniJuxM2JS7pz267GcbGn3qAiyX1OzBw%2F%2BEM%2F9IY%2FTWl7pdfGQS0SOO%2FxVAFkQt1bb721%2Bb73vc%2FEjxw4dOBDFXeVCAdbCaV4aqcf%2BeEX8BmdAaNL%2FFY6PVcgnXYILogYw3Fbl%2FsY0srOJRD1VwXMgPE7xJKg%2FTOIaiAIH%2BG5D8D4nMEjgGLJUXAyXnINH2U4lDY7FegYaQECR2NOJ0raUJ4JLh%2BXK2kUDE4UXAhRxfNKDNPzUN0l0YqpmFQFLOoezq%2F1R2GOiFzRsVpHvJASBLFyudwCyDrxIpzmeS9YukxuBmh49Jv1D1pYF%2BuVCcQXYO3SH9yOo%2BK8L6FdFBnMCPysh7EJQ6fZnb%2F45d16iR0Uzd4moe0qAPDI4SO%2Fz9OR973vX3Zs45whf5%2FC8bQARHodPNNqr3%2F969GF3vTfp48dfWRoaNAlV9IUAq2mS3ZMpH%2F3H5%2BfZvg9zh38LidVlavTogDGewN6BAH5E4Dw2pfxEohTAqlASoXemWV9fl6753GNuMTx%2FRPf%2BCilSC7nl6%2BmbV927ULso0hvVYkWJCrQUjAmUbnvgyc28I6kiEt9VrADxY6uKtHkAbwpZu9EHwrdo8edYkhNmrVVDIA2vlThKvALGBljN5IooPW2%2FnAdZ8edZO0flDkGAFqNrSNlkctEp2KWvjvh%2BjGJwcHHCr%2BMTY%2FkFvtUcyXVtjyvu7hhB7%2FD48%2BnSxemLYaGyseOTz%2F8lhvf8HHb1LYldo9akdJ5%2FzwdAJlY9%2BDBg83LLrvMms3s3vPwb7J%2BHkxIDD9D8Ppy%2BsHXPCe96s3b0v4H%2FQVDasp7%2F8cZwXwgAkCJeBJV0ASH4JOACXGVgwWglCUEjiG9kSQ%2B4YOo8Zy%2F9wHZTzfSCmrznTxCoUYXCe7Dqye4TuY8ciCnMxRn7jutMt0Hk5UO1xC%2B13HmdVFigAYghk8QXMd1ZRoRdcBX5JEj8eFK6EH15jicWWuw5gXLw4lo6eg%2FHbSQQ3JabWkRc2YCijfx0ivQl1a8CB2Gv07xFLBOd4acJzMM7%2FAXKsOFup1Vflh4vDt7ycuIR2DiOdCIwQzleOTRh36LxGZsU9s2EubPUz2eNoBIuPN7v%2Fd7tXe9612Vn%2FzJH%2F%2FUkSOHvjg6OsoCjQKdFWLRQQZwEPql93wP3ZQ9LeTsHEImDjmQuUoQ6dA%2FrJTPEgeCPXHff%2BZddD7AGuFMQuDyIEDincQzHRsBjsa3J4uxbAeCG5CV4HFpL463Ibqc%2F%2FK3NRRdUlIOpWhzz2uBlbmRNiC%2Foe%2BwN6SGQ8WXQ3mNh%2Bo7PoeBkXvFt8%2B2nWvKGo2e7QbuFFxImDmctzNYdk5BEFxKBVsnNA%2Ffc4T%2Bo4U6ekh%2BF98Abfw%2BPXkFDQFaZbjM0it%2B4HjHK7u16hQF08oVHLM1MjpSOnrs8Bf%2B1b%2F68U%2FZlrYpqUnFXk69tM9zeboAMjkzaNUOxT4mrb%2F65Cf%2B3ezJGTYKZcdl2kx0rLJz67WXTqZ%2F%2B1vPT9N3raad%2BNvGyAQdwg0OMjh65YxeyD0EjIr3FOVQrgWHgOKagUK46I1cJWB8A1Wy%2FKh7rxGilMYTbMS1cQgi9zFJg7IUD%2FHFjDzvVZxVmOuk7fA%2BfuQFUKpYZy6C2CKMc2nKakFSYy7M4XrMgpOuxYqqRPJ2F0FjGEisVwDhTa%2B2yi%2FikFbW9%2BwUhGWZeMyDWW5iCZLwyJQmAMi6h1i2mjGK5L10Ir04SCLiuIJ1zJWzaI8CtL2QGhe%2FpDOz7QpGAGzSTmDScteN8tzJ2fqnPvHX%2F55XLea8BI9SvZ8it0%2Ft6PGHpxZ4faj7dt%2FX%2Ffmf%2F%2FnBD3zgt4%2B%2B%2BU0%2FVLjwootehRukzQRMJFgrXbFrQzrRXEi3fo5R2c5qWoKQsQOFHGN9WamwLRncgSbLh1fr0z%2BN48GzXKx%2F2AUQD3Hipxl58ze4EuHcvi2bE3jXj0YJJ%2BCS4esjqEyP%2F%2F9%2Fe2cCHVd13vE7i2a0jDRarV0yDg4Y2YbYxYANJsQUSMxioLQYEnpM2pM2h5S0yelpStP6hFNK49AQCC0JzYIptgNZCBASjH2cctqkicE2XiAE4xVZtmXt60iamf7%2B350nC6cLxcIYypXevPvuu%2Bv3%2Fd93v7trsFTMFVE0Z0gUVce6eEZMdB0GKxtosPMVnBE5bB%2BEmupq0nvRqi88yAd37DYuJpoQXm%2BShYcpBaDIlcOkjvJpy6dyklPFxq%2F%2B2BbO28mbn9JnLy1t%2BVKeveFOk3xM55hJ18lLZPfVL6GGY9mFvhzSA4jp4kRReOeunSs%2BdesnHoOHoW9961tsbGmEDyLKxfe%2F31SqN2OU0Nj9998%2FcM2l1%2BRduWTx19sOtm5MJIq0HzYD3WrysicffWd%2FtGyWc2cWuIP9nMxMf4U6w6wlZJKGQhGTDZpac5UHdfoFn7LqdrXmhCVJmfGLcPjx4p53IqAu3HwVlYsXMa4dVm3jbn3F0qMsDuYGob%2BoepK0kR7jm%2FQ84%2BY7F9XByGArQSSVrHVGZv0mlayJAxja8oVXll0p0n78CcDIzdylB6lK8%2FQgx8y9KUCoCIr44N%2BksYBBp6ItA9LHhbtJHMszKetUH%2FOsGCT%2FSEGAMJ4rHmgj%2BkFTzVyMFpdQ7tFsa93V2aFwguNYqQY9eMYSieIoasfGq6669AHxDh5q%2F6k3JX0IR17enAloNJIpyEj8Df7gB9%2B9TVUZXzxVmWQvDKDFUFcRd6tuo4PxJQ6L0xlYKqiR2CdseoBAQggtzxVhvN5CEjDcY0MECy5FDUGIZ7y1JcDZexEzByLiMhrrWRb5UZWn5LFLv9HAqgAiXShFeF06%2BXkQquj8D80Fkz%2Bxj%2B0zzZ8BiucBOua0dzQigQgFHtm9pLDmPHarwpBMqr51qXmvuUSDY6xowcXKrHwp74wpaoNRGX0Y9nHgxwohPYisB2mZH4FGrTSVSVkwR%2BWDedBMGTrceHm2M6%2BeUW%2BGK0gXo%2Bka0Z7eI6nHf%2FjobTwP5nhHJD52efq%2FGpX4uMyvfvWrDEpY%2Fn333du28MKLepobmy5mghLVsCp%2BVeFjrnFKoTvtrHz36L2HXeOpUcem7J4w3Kz1RfVlRYRentEinPxwHbWYH09YnI1vqhCwiEBUAVphoCrSqiwFHXfHn97DRO9GHzGdbZI6Wt5iLRLSEbZk15afQzBWAquQcAZU3hXxTrLDqh7CzgofZk2eP9PLK6fkVlm3assz0%2BzEbe6WBhthcvxOInqYsio%2Fkiq6Uakp%2F%2BpJNrAQxtx5q4zQX6PDbMYljyLEn%2FLiy4adfIeyA643ckZmX2w2hWPEj%2Fe5%2FGcKCmPhF1%2Fadtuf%2FtmtP4FnoVWrVh2X9CF7Vt3rflxm06ZNaUZwE8uXf%2F6Fq65a0lhbWzcrldKsKcVPOQDR9KYyV%2F6%2BqHvi64fd1Ol5LLlFFIvY%2BoJ0eQr7L08UDUxgFzVl7I6j3CGOBwR3rVPRtFqoOj6SbXjx76S8%2B0BiGJEk2CQB5kk6MZPBxuwEKBlFOwzTJHl0MIkJCZijNXBx%2FCgq9Rm1hLpcCccg2BxpY5RC8xIA%2BcFVMVTpKtNEanYBhJ1S462WjsSQPgpfLOJGhwmMz41CQh8Bzd55V%2FMvyUpmtOBQVWgom%2BLwlebMrvBZqjNxENgtttFkSXF0965fP3LVksUr4FUUvYc5rVZ1EcmbN8ctgUjaypKfn5%2BpqKjI%2F9KX%2Fv7n11573cKysrJaFuTTBcIxt5QiTROy5dRyF68acU8%2F2OGmcU55JxuWmwRS%2FnMg8s1TohRh5e4pJdtRM05ZmCNui0c6xsCkjP%2BizZ13fiYARJY%2FjLyancV56dwSAQFO0kcfupgpNWwY1Eh66ChsvVMZCuiYE4AUh6a6zoz2sWXuILqQZ7rPqqorQCfF2nyqCErbPysbOhWoNH4YRVy9TQKZQgoA3NheP6Qt9s2NZzPKFLnwexR4f0K1iGP%2BaMJzvkcqXJ3dHT6b7gLbFgzwSHqy8UsikYeOuu1DF59%2Fy%2BzZ54z29HT0tba2qrfCiubTeHO%2FkwEgS5kMZefPnx%2BmShsbTqV%2BMWvW7KvIOIe1cOoon7%2FKqYWHs2dMcZHSlHvm4W53CtVZl3a915eEB5FZEsHbRRx9HJ5IAZEtMXnUJSNuSvoAHm1AflTS4EFu9g7mWABLwcJmkUBgwaJXNLKbOgGHRfhR0GQj%2B0g1nws21wJATGFXTWm75J8Z6uU4JgGIdMhIMLXVSkK2PRjxzHvpPyqK8qthjURkkHMqjlBU8oyzvwR4mM5uraKBGYuHGC0s7uTN6CIFCmM6D6dGpvJqszvD5wH8HHiIEVoyST4fvaer875%2FvOf3t217oW3%2B%2FHnD69at0%2B6%2Fxw0epT9pAFJZAE966dKlsdWrH%2B6c%2Fv7TtzU2NFwby4tH6HXVgKsJmwiK9JwzGpwrH3TrVrW5qafEqc58I8CqFgONJzosVbT2LwJ7MuvGk%2F4FHnET4KgZb%2BCRR703D9ztvR7lWX65yQ0AyZ%2F4IPCIP4ZdPMiuD16WqADEe%2BVQe%2BsUIW2EyQ78zYZx9eFeqjOqJZBhirIh2kspAUlVmbivOI3cSpt50nnRYVcS28u8JfrI8GMAt3xg8zMdLH0DjoX1%2BQrrRCT8KeO26RRtmFSkOrsrbx56Gwc5EcDiAj3ssBEZGh7MbFi%2FdtmXv7JiM7zRUJQON%2FIEt3iP72cyAWQ52b59e%2Frmm28uWLHizj3z5p27l0NbPgL1VGRjlSagRRC3c2ZWu%2FzKtHt69QHXdErM9TF31H908ioDyY2zuWdxAGtAaDHMNg4XWGCKfbkw20sgiwDP%2Fp0BRXZdxKObBxDMFUb1PG6UDxxwl7NmXdqUCJ7iMKeYaRuCyxGY3sLx5s0cCKed7QWe8fwrPMb3KAm4MrqL3ORRZcFPRXy%2FuVtY3L2yy0t0HUlOtUaPmtx7VXECIXGFM4NMS23M7s4%2Fn4UC%2BXxGQr3KR5cpih13t2nzxk%2Fd%2BulP%2FgSehB966CEdb3tcrS5LYMLPZAMoO9fNdU9tfmps2bJliS98YfmOBQsWdNbXNS7S1FIITKOA0mFRI3fuzBo3pSniHl%2F5mquppxkMkUeoOvQVidFmjBf8SFSY2JbdHP1dfLGqiqJINIhBhhL5hwkmnfCv%2Bgh3vTUhIAkkpVvOPhgWbyx2KUTkM4MfedGj%2BreKiFOyRufDNoeH3elhjrOy5rvCislemhgGyaeUaL%2FBnmL1Cdk71tGX5qMHcUx6hi4BC61ySfTJG%2FqOQsiv7sqELWsi81laZOHMgBssODXzSnw%2BmhTnEEIz%2F52iooOdGDtgbNn6%2FG3Llt24Gl7koTR3OzcX8LRNStWlLMlMNoBcG39kNLtly1NjaPtFy5f%2F9aYLzr9wsK6u%2FkLrHhJNciDSwGDLjCr3%2Fg8UuO89cJjNiNOumpUd%2FUwRDIhmudSPKCnK2mcuauriWcQWgLTZAHcRWsYqEQFETAkuXEnaHrPFzL0VGMw%2FfhS%2F7MQrPyaZlAv72gUEASlDq4sdX7nUd1QDOM9y3VR96Dj41YCqcq5oBCQZPxJPPOPusiMGAFBxrNcVRTvQvZh%2BQSDLCj8GQZ0t7yNSJLnQ8oO8ig65vviczK9j54Q4hdHg56WdVxU4bVvguf2jH%2F3df9b85gcffFDgQWl%2BflLBo3L4Uso2eYZP3zKaWrlyZfdN190UXXrjtV%2Fbun3L7Xl8FfBGaUonghT0%2FI6k3G%2FPb3QPf3cuNI64Q5tTrikhZkA9XSJicJ%2BQR2OJUTjniJ%2FxFp2C6Z2Fs4ecXVKQS35zEmZClONWHxZIIDVVjTB2TlQcVoLm0Ee8OtZc00C6GN8aNtCopaaWl2STB4uRNtexKDcNhwQ6kvUl8653pJJueyBBXKYrmX9AqIlmSkyxkX1dBkhWU4THhrKd%2BR%2FMvJw%2Flw3O1NYzX%2FzyQP0tybN126bbb7zxuq%2BpuS4e8DIAD7yZXDPpEiiXPYrsWf%2FCiy%2Bkb7jhhkL6iDaec855XTXV1R%2BisxreMLkUMIl4Y3QZNVQn3JILp7rOdJd7bm2Xq6tnvg3EVW%2BSBAIU5EcWb%2BRm40%2BSOjyoL8RLC70X1fEgd5hq428mSXKBdbMqTGFz3hW9GUWMRQOw3G33ebmTviSDzljnSAnS9h1%2FF7B1iqaTaUmPYVZeFSkSSPfg8gn5Z4sOwJE79KADpCO%2F3uiuFmeWbomw1kmZ5CPldJ8bi1Vm91Rflj2QN52tCTT5gdglhenzzGNRoD5KJM9fIXm%2BAc2jrO9SX4%2F6CoTGSQcPcU5%2BFaZIJxjRI6P9ZQSi229fvunMs%2BbsqZ5SfSmL2CLsAqEZEqbsaXlQMhFxC%2BbVu1o6HH9EC22EfVcaaqN8qZ68otVRYMCkADzcVYX5%2Bkh08u9EUKHAahMf2LImxtnyEfUd%2FRdGwBGAzCgN%2BceoV1f7LerUQ%2FGkHeZ%2BmNMnCmG4vgYF8%2BDRd6kwqnAkXQDLuJ6Es8iOf53DWhY%2FZP1Bqup8EIFTDQRCqvdZfQuZbjeY%2FEBmz5TFoc5IJfuFAW6loDSZ8K1JfUOcePzcpl%2Fc%2BvGPf2z1DTd8PLpqlUmeNz3Krly%2BEaOSvtUmANEYBSu6887lO6ZNPeX5mtraD5UmS4tGtJeI1FmIMcZgILLJtZxe5RZeXOV2dfS5Xz%2Fb76rq2G2d3bQGNLvL8zKHIxgJsU33UW%2Fs6%2FDAg6SO0EDc8ieGyngAoUSrRWNO%2Bgku3soqxlkwWjtYJF0sbeIUprSMsJV66XL6c0pp2GgvRQOMSRPsgMuexWRiMGApDZMoyoFmQUYYYO5lWEP9QVoP5cNo9F1SKRIecOmCgmx75aXZ3cUoyyCYPhHFYnFDs1EGR%2FN6ejo716778R989rOf%2BokHzze68BBIHnn3QRRsks2JAJCyTAFakERPj15%2F%2FbKCr9yzYm9fX9f6GTNa5lZVVtFjTbcdHIIg1kIb0yDslLhbdF6tq5%2BW53685ogbODTmGprUWmFAUroNjFETe3zZkKowAUVMMHJx17OAw903ffXefDCwxagWzWXjs3e2cLKam9KQX5NAsgkCiktu%2FpSbHqTGxXQk1rDRtzag8gE9WNR3pBC651K093LTJZRm6BLQRk9l8X3oUFTZufIwko4wHc4OVZ6Z3TPlcncgUouWztQ1DUTrgwHe5CVTnGRk%2FeBr2%2B%2F96pdvvu%2B%2Bu7dA29Dq1d8EPC3oPO1BX48viLLxFpgTCKD2rE572bBhLSC6PvbII4%2F0PPjgN350yaWXTcG0oBNJL1LFblXaKNJGsxlbZlS6j1xRw%2BDnsPu3H3W5FBN1GuqYOAUVU7R%2BvPSBoxN1IAOO2MZ7ERypYf7kboZn6UDq8bVmGO7CZA404pBVYXIDQMYBlG%2FJDfsnngIAr6OTFkZQ%2BhnY0FEIaqmpx9kASBQGCJM%2B5MEi8e99NMQG6DSVpITTdqy7gSZ8ZBSpU9KcPTR1cXZfxZmhoXSelgPyPgdg6s4I%2Bk4%2Bmxru2vXy9y657KJbX3xxexs0HVuz5l96oPFIe%2FuOt0zn8fQ7%2BnuiAKQUs%2B3t7SJjhs7GsUWLFoWLi4uzd9991zO%2F9YG57SWlpQuSydIYRyuo8BJG8BM9gZH6ynKONZpT5%2BYtrOQIxx639Zl%2BpoaGXT17%2B0UBx5A4Zj3RSkWh%2FUUUWAEX%2F2Kmr4eMk6xkoMqwwUme%2BTcGAwr9mfEzUgAmgXHz4JI%2BBaAAHSe9cx67c3MiGXc6tYUOdVFYrwthV564DFTkQi0vr7koPeLQe4wGYqvyWjkDvtONFdSwcuKC7P6680Jd0XLpOhRBmVMehKBQuiiRiPb196ZQlv%2Fm966%2F5h9mz543MnPm6UMcEKgeZsDTrqZ6ToHD9habEwkgFUXc0ZXZvXv3GAOumYsuuij%2Bd3f%2B7WZ2jfnXpsbG0yorqxqYT4Q0yoxLI007BUquqSbhzj%2Bn3s07P8kpaMNuKzMdhzj4qqImxuCktuH1zQ0RXOAxwmPXik3PBDFDtEVJZV%2BdkM5q50kwMwBhx%2BpzqDVY8q4qTLqUKUG8wy4QMWhAHvLcLHqjZ4UGbDWHeqwlVdRxKEVY0zMUv4%2FUSzJFL2mjSfb6OFjr54oraHc1z8webFgQOlLUYHPgWD5hoFfepChHOay2qKgofPBg63NrvvPtT37%2B83%2F5DOe4h9va9vdu3LhR0zI0523S%2B3mI8380Ks%2FbYZSuPispNfmI35I1a9bouWj1w99f1tzc%2FCdlZRWx%2Fn5Ot5JUyDVR1IcjvYcFjZqv717a2eHW%2F7TVPfwk9OvnWzgt5upLWIOFnx5IqR02OPTKlGWTJDzDPUs6PIXFeGyYbhLH3HhlEojXQhGtQrNJTwKAJoEkfVDmQ1xJwnTj78rIiLs10qY8qqIBaAKjgMNl0iMHoVwamhVpG05JilUWZGNTS7L5FXmhFLt%2F246uConfHLBtAwvGpCNdzGHeu3f3vUtvvOab5GsQmmWgmYYmAmVZX4ZPTBk%2FQeZES6Bji5Whzs5s2LBhRFXa9OnTQ19cccd%2FMCvzp%2FX1jbXFJcXTWLwY9s19I6wNyjPAz75%2BbM9fU%2BTOOavaLV5U5poBT0fPmNu9bcAN0PsxxsF4NUwF1l7IEaSBpqpaNSYm61IVVkAzGZJbVTeB9CaN9C2rr8aa%2BrmXCiowcQnIWvZTSlwLGdKQZFM1pdaTOgXpY8SNZ9zUcZlhrE9CLVoQyxY3FrnEjDJXOK3EpZOqqVh4HHQbeKBp6Va6kOZ5OJINtx7Yv%2BGRNas%2B%2FRe3feYJ1m9lpk6dqipL%2Bk6KKktIVwYnlICnE2REkrfbSPLo0hhlHLFcwoixPd9zzz99uKVl5i1Tquqmc2YHsxtNP%2FL%2ByblGz5mzyYFrCDKY1TOQdvva%2BtzmHT3uCYD06g56CLRisJqok1FXDagYJkLhpSVXnnBDZazTIg4ej5KfeKy68qoYOQIEqooAixl17iGVpBrRX%2BymM7vgrlgHUz04vhPwSCfXioi0erppcgtCURaDxsoKXbwm7uIlHDjAiXC025gKDkrxZgD2WZAUYZvdeDRGGu0dB1%2FZvmPLV2%2B55Y9%2FjPsotNFouqSO5vKo%2B8P8c3%2FbzMkAIBVe%2BRAw9N3GmFdUWFFRX%2FTEE49KDpSv%2FPaa32lqmrYM%2FahulHnAqWF%2FzIv8S0ewfYHghKZeaKMATZTvoQutrX3IvbK3z73wyoB7bD8f6mG4pVWCgioraF1dOVWRdttX4gKOYuRCYmR1krRypSPOpQeZWOImsKrPibR03AITU91KAFSZHuSZMS38hmk%2BxorzsrEkRyiVxVwE8MoNwLH5hh8WUXym4BMehdrkHYf5RZR%2F1qof2Lvv1W%2FedNPS7%2FG684orrot0dPQM%2FOxnazWPJ9B1BB7l%2BG01JwuARATlRZeAJN0ofuWVVxa1tbXloyRKTNc%2B9NB3rm6sb1haXjGlSS0Zel%2BltUgQiO3GYhvn4oHREvGeCKOcykeLib1CD3H0WVv7oNvVPur2dMdCL0eK3C7WZNnGiZxtYSoowDAJBIDMcI6oOhzNTc18rbTVchOJIAGReWmrkt2ugZXF2lolzJ7LeYzlSU8icVQnHcZNOPKrDKqG0s4g0uyo7tRoi7BtID45ELejfd%2F%2B1tbVH%2FvYdT8g5razzz47yl49w48%2F%2FriW3UjqiA4BcN528JAXY5juJ5MRiHQJFHnJZDK%2BaNHlRevXr6PH9ZC%2B1OoHHlh5ySnN065LlibPLGTb22EOdaF2o9IwPUkANF1Jz%2FqXANEJNTYEgfRQJ3OKqi1FiL50NDsEuPoRaj10DaTY14WqhePNMlk2XkAfthZXVrMrImy6EysIZ4vpQkrEdPwnfTjci6NMdaUPneFWpJBfDWJVngATkBiAKDcYGvySlLGI31K3z3X39rzw2t49j978hzetJe%2BHOJ80smDBxaPr1z850NPTE1RXKjtR2MXt5DBi1MlqlDeBQUCKNjQ05M%2BbN6%2Fw%2Bed35O3d%2B7KIWXLHHSvOntUy84pkafkHkyVlZWHAQfWmc65ovdHrIgAQhxgmFUbUl06S01NN9xCw9Cw9RHqUPnBUXnxFEBGER6RZq0pjvyg4kmiKTNszSAfTKLl0HvXrSNooFYtLNvxhp4a1qKSrReLaDBMEd3d3dHX3dP70xZe2PP65z33uObz3cqxSBMV49Je%2F%2FOUg69SD1pUiDaQO1pPLnMwACij1OiA1NTXFmRheONLbE1v77FoRNnLuuec2LVv2iflNDU0XJxIlcxPFJSU6zkjDbCM6t4vVmGJmzlhPN0%2B%2B7Dlg4Sl47%2B%2F2NnDjIbDqrUegj0D%2BeIeTcKK3gpU8SR%2BKxGJMX5VexvSMXra57e8feI4J7uvvv%2F%2Fuf6dq3o%2FH9CULLwnHSpIjW7f%2BYpCTcYKq6qQGjgoq44no7Sfzb5DPQCJF6ISMzZlzQX4ymcj%2F%2FvdXedGBdnLZZZc3Xn3l1XNq6hvOKy4qOiueX9CcKGIamDruaEdrX0B1AyBlpNPCaaSJBIuIEYiOgBK4GxQAR%2BCke4AUgSZHQgVlhIGecS6OC7C0Bgb62AYxtbe3v3PLgQNtP3%2FqqR9uevLJJwUagSR8zTU3ZKiWh1kWNcyJgIFyHADHktLPyWwCxpzMeTw2b8qzABOAKdrScl7sfe%2Brygclsccee0zvJZmkiJd95jN%2FPnXGjNlnVJZXzSwojL8%2FHitogMkVhSi8bJoOaGhRSWZQrWjLW0mRiRdxCFivu9TSsjE2L3bocxzmeABaYel0B%2FsD7B8aSr3Sfvjw9pde3vriXXd9cQ9RdHIJGOElS5aQVP7Iq6%2FuHd6x4%2BcCjRTjADTK9%2BvAyvNJbd6JAAoIqrwfCybpEDF0Cc2NiO3cuTO8detWMUSXdKmiWbNmlS9efHVNQ21dfWlFWV1RQWktK0eqEFBl6LXFDF0UUMfFAA1zx1CKSAFMobbQf5xl2D2bHQIofaOpTNfwSKp9aHCgraPj0IG2A62tT69be3Dz5o0dpBMsmwnNnj07dOqpp2Y4X2Hk5dfaUjnQCDDHguYdBRzyb%2BadDKBjyzARTCadqOaiM2fOjJWVvwP38wAAAVpJREFU1efF4%2BnooUOHIs8%2B%2B6zCBaCS3ZR07mqUa2a%2F7nkALVqRrDCdWWem57oS1LbXJckR2CU1ZJR%2BaOHChY5WVDqViox1dbWOMnA8QvV0rJSZKGnekcCxEucKHdjfDffggzBmUiABSXaBJFxeXh5hmVGktLQ0WlxcQzM6zRhlIpwe6A9RBYU6BztDhw71OFp5eP9N09x8GuBIuvLC8mxheSFHI0XY1jmWGR4eGevrO5ju7u4eY4FlurOzM5AuugsgAWACsAT330zkHeYSEPwdlu03nN2gfAGgJt4DcMktXFlZGQJYbL6dCJeWUr8wIyDp6K3G9PAnsHQzPT0a7c8AlOyRI0eOBcZEkOhdcCmKdw1gVJiJJiDwRLd3s31ieQP7sXeVP3A7lhYTgRDYj70rTOB2bPh33fN%2FR6h3XUHfYIHeKD3%2B3wDkDdLtPW%2FvUeA9CrxHgbeBAv8JW9MkIVlj4loAAAAASUVORK5CYII%3D%22%20id%3D%22b%22%20width%3D%22144%22%20height%3D%22144%22%20preserveAspectRatio%3D%22none%22%2F%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{B as default}; diff --git a/dist/assets/Opera-KQZLSACL-Cwv5MDFy.js b/dist/assets/Opera-KQZLSACL-Cwv5MDFy.js new file mode 100644 index 0000000..1cf141d --- /dev/null +++ b/dist/assets/Opera-KQZLSACL-Cwv5MDFy.js @@ -0,0 +1 @@ +var t="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2078%2078%22%3E%3ClinearGradient%20id%3D%22a%22%20x2%3D%221%22%20gradientTransform%3D%22matrix(0%20-54.944%20-54.944%200%2023.62%2079.474)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%22.614%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23a70014%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x2%3D%221%22%20gradientTransform%3D%22matrix(0%20-48.595%20-48.595%200%2037.854%2076.235)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%239c0000%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%23ff4b4b%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ff4b4b%22%2F%3E%3C%2FlinearGradient%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M28.346%2080.398C12.691%2080.398%200%2067.707%200%2052.052%200%2036.85%2011.968%2024.443%2026.996%2023.739a28.244%2028.244%200%200%201%2020.241%207.18c-3.322-2.203-7.207-3.47-11.359-3.47-6.75%200-12.796%203.348-16.862%208.629-3.134%203.7-5.164%209.169-5.302%2015.307v1.335c.138%206.137%202.168%2011.608%205.302%2015.307%204.066%205.28%2010.112%208.63%2016.862%208.63%204.152%200%208.038-1.269%2011.36-3.474a28.239%2028.239%200%200%201-18.785%207.215l-.108.001z%22%20transform%3D%22matrix(1.3333%200%200%20-1.3333%200%20107.2)%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M19.016%2068.025c2.601%203.07%205.96%204.923%209.631%204.923%208.252%200%2014.941-9.356%2014.941-20.897s-6.69-20.897-14.941-20.897c-3.67%200-7.03%201.85-9.63%204.922%204.066-5.281%2010.11-8.63%2016.862-8.63%204.152%200%208.036%201.268%2011.359%203.472%205.802%205.19%209.455%2012.735%209.455%2021.133%200%208.397-3.653%2015.94-9.453%2021.13-3.324%202.206-7.209%203.473-11.361%203.473-6.75%200-12.796-3.348-16.862-8.63%22%20transform%3D%22matrix(1.3333%200%200%20-1.3333%200%20107.2)%22%2F%3E%3C%2Fsvg%3E";export{t as default}; diff --git a/dist/assets/Safari-ZPL37GXR-C4Ggg6rz.js b/dist/assets/Safari-ZPL37GXR-C4Ggg6rz.js new file mode 100644 index 0000000..e3900f7 --- /dev/null +++ b/dist/assets/Safari-ZPL37GXR-C4Ggg6rz.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2078%2077%22%3E%3Cdefs%3E%3Cmask%20id%3D%22d%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.529412%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3Cmask%20id%3D%22h%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.407843%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3Cmask%20id%3D%22j%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.243137%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%22413.061%22%20cy%3D%22136.818%22%20r%3D%2282.125%22%20fx%3D%22413.061%22%20fy%3D%22136.818%22%20gradientTransform%3D%22matrix(.4505%200%200%20.44664%20-146.86%20-29.291)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20style%3D%22stop-color%3A%2306c2e7%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.25%22%20style%3D%22stop-color%3A%230db8ec%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.5%22%20style%3D%22stop-color%3A%2312aef1%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.75%22%20style%3D%22stop-color%3A%231f86f9%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%221%22%20style%3D%22stop-color%3A%23107ddd%3Bstop-opacity%3A1%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22e%22%20x1%3D%22412.975%22%20x2%3D%22412.975%22%20y1%3D%22237.608%22%20y2%3D%2259.392%22%20gradientTransform%3D%22translate(206.79%20159.773)%20scale(.35154)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20style%3D%22stop-color%3A%23bdbdbd%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%221%22%20style%3D%22stop-color%3A%23fff%3Bstop-opacity%3A1%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22b%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%2F%3E%3C%2FclipPath%3E%3Cfilter%20id%3D%22a%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20x%3D%220%25%22%20y%3D%220%25%22%20filterUnits%3D%22objectBoundingBox%22%3E%3CfeColorMatrix%20in%3D%22SourceGraphic%22%20values%3D%220%200%200%200%201%200%200%200%200%201%200%200%200%200%201%200%200%200%201%200%22%2F%3E%3C%2Ffilter%3E%3Cg%20id%3D%22i%22%20clip-path%3D%22url(%23b)%22%3E%3Cpath%20d%3D%22m15.316%2059.238%2027.657-18.445%2019.859-26.54Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23000%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fdefs%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20mask%3D%22url(%23d)%22%2F%3E%3Cpath%20d%3D%22M383.295%20211.976c0%2017.3-14.026%2031.324-31.327%2031.324-17.3%200-31.326-14.024-31.326-31.324%200-17.3%2014.026-31.324%2031.326-31.324s31.327%2014.024%2031.327%2031.324Zm0%200%22%20style%3D%22fill-rule%3Anonzero%3Bfill%3Aurl(%23e)%3Bstroke-width%3A.0930123%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke%3A%23cdcdcd%3Bstroke-opacity%3A1%3Bstroke-miterlimit%3A4%22%20transform%3D%22matrix(1.1811%200%200%201.17096%20-376.637%20-211.47)%22%2F%3E%3Cpath%20d%3D%22M73.172%2036.746c0%2018.672-15.266%2033.809-34.098%2033.809S4.977%2055.418%204.977%2036.746c0-18.672%2015.265-33.805%2034.097-33.805s34.098%2015.133%2034.098%2033.805Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3Aurl(%23f)%22%2F%3E%3Cpath%20d%3D%22M39.074%204.703a.493.493%200%200%200-.496.492v5.688c0%20.273.223.492.496.492a.491.491%200%200%200%20.496-.492V5.195a.491.491%200%200%200-.496-.492Zm-3.254.203a.495.495%200%200%200-.543.543l.25%202.38a.5.5%200%200%200%20.547.437.489.489%200%200%200%20.442-.54l-.25-2.378a.495.495%200%200%200-.446-.442Zm6.528.004c-.23.02-.418.2-.446.438l-.25%202.379a.49.49%200%200%200%20.442.543.496.496%200%200%200%20.547-.438l.254-2.379a.496.496%200%200%200-.547-.543Zm-9.868.477a.493.493%200%200%200-.484.598l1.188%205.558c.058.27.32.437.59.383a.492.492%200%200%200%20.382-.586L32.97%205.777a.494.494%200%200%200-.489-.39Zm13.211.004a.502.502%200%200%200-.492.39l-1.191%205.563a.497.497%200%200%200%20.972.207l1.192-5.563a.492.492%200%200%200-.48-.597Zm-16.398.886a.548.548%200%200%200-.195.024.492.492%200%200%200-.32.62l.745%202.274a.493.493%200%200%200%20.625.317.49.49%200%200%200%20.32-.621l-.745-2.274a.5.5%200%200%200-.43-.34Zm19.566.004a.5.5%200%200%200-.43.336l-.745%202.278a.496.496%200%200%200%20.945.304l.746-2.277a.49.49%200%200%200-.516-.64Zm-22.718%201.14a.492.492%200%200%200-.445.695l2.327%205.197a.497.497%200%200%200%20.91-.402l-2.331-5.196a.493.493%200%200%200-.461-.293Zm25.91.02a.494.494%200%200%200-.465.293l-2.336%205.192c-.113.25%200%20.539.25.648.254.114.547%200%20.656-.246l2.336-5.195a.488.488%200%200%200-.25-.649.486.486%200%200%200-.191-.043ZM23.21%208.957a.491.491%200%200%200-.281.066.49.49%200%200%200-.184.672l1.207%202.075a.5.5%200%200%200%20.68.18.494.494%200%200%200%20.183-.677l-1.207-2.07a.5.5%200%200%200-.398-.246Zm31.727%200a.5.5%200%200%200-.399.246l-1.207%202.07a.494.494%200%200%200%20.184.676.5.5%200%200%200%20.68-.18l1.206-2.074a.49.49%200%200%200-.183-.672.524.524%200%200%200-.282-.066ZM20.37%2010.715a.501.501%200%200%200-.273.094.487.487%200%200%200-.114.687l3.368%204.602a.5.5%200%200%200%20.695.113.49.49%200%200%200%20.11-.691l-3.368-4.602a.502.502%200%200%200-.418-.203Zm37.442.027a.488.488%200%200%200-.418.2l-3.375%204.597a.494.494%200%200%200%20.109.691c.223.16.535.11.695-.109l3.375-4.598a.49.49%200%200%200-.11-.687.465.465%200%200%200-.276-.094Zm-39.981%202.086a.496.496%200%200%200-.36.125.487.487%200%200%200-.038.695l1.617%201.778a.495.495%200%201%200%20.738-.66l-1.613-1.774a.495.495%200%200%200-.344-.164Zm42.488.004a.506.506%200%200%200-.343.16l-1.614%201.778a.491.491%200%200%200%20.04.699c.202.18.515.164.699-.04l1.617-1.777a.487.487%200%200%200-.04-.695.496.496%200%200%200-.359-.125Zm-44.925%202.313a.511.511%200%200%200-.344.164.49.49%200%200%200%20.039.695l4.262%203.805a.5.5%200%200%200%20.703-.036.491.491%200%200%200-.04-.699l-4.261-3.8a.5.5%200%200%200-.36-.13Zm47.375.02a.496.496%200%200%200-.36.124l-4.265%203.8a.49.49%200%200%200-.04.696c.188.203.5.219.704.04l4.265-3.802a.49.49%200%200%200-.305-.86ZM13.37%2017.726a.502.502%200%200%200-.418.203.486.486%200%200%200%20.11.687l1.949%201.406c.222.16.535.114.695-.109a.486.486%200%200%200-.11-.687l-1.949-1.407a.525.525%200%200%200-.277-.093Zm51.418.02a.481.481%200%200%200-.273.093l-1.954%201.402a.494.494%200%200%200-.109.692c.16.218.473.27.695.109l1.954-1.406a.49.49%200%200%200%20.109-.688.489.489%200%200%200-.422-.203ZM11.48%2020.48a.49.49%200%200%200-.215.918l4.965%202.844a.5.5%200%200%200%20.68-.18.492.492%200%200%200-.18-.675l-4.968-2.84a.491.491%200%200%200-.282-.067Zm55.188%200a.462.462%200%200%200-.281.067l-4.969%202.84a.492.492%200%200%200-.18.675.5.5%200%200%200%20.68.18l4.965-2.844a.49.49%200%200%200-.215-.918Zm-56.617%202.934a.494.494%200%200%200-.215.945l2.203.973c.254.11.547%200%20.656-.25a.485.485%200%200%200-.25-.648l-2.203-.977a.486.486%200%200%200-.191-.043Zm58.058.02a.545.545%200%200%200-.191.043l-2.207.972a.492.492%200%200%200-.25.653.5.5%200%200%200%20.656.25l2.203-.973a.493.493%200%200%200%20.254-.652.498.498%200%200%200-.465-.293ZM8.773%2026.48a.492.492%200%200%200-.11.96l5.45%201.763a.492.492%200%201%200%20.309-.938l-5.453-1.761a.548.548%200%200%200-.196-.024Zm60.61.024a.415.415%200%200%200-.195.023l-5.458%201.754a.493.493%200%201%200%20.309.938l5.453-1.754a.495.495%200%200%200%20.32-.625.496.496%200%200%200-.43-.336Zm-61.403%203.2a.494.494%200%200%200-.492.39.493.493%200%200%200%20.387.582l2.36.496c.269.058.53-.11.59-.379a.493.493%200%200%200-.387-.582l-2.36-.5a.822.822%200%200%200-.098-.008Zm62.192.003c-.035%200-.067.004-.102.008l-2.36.5a.491.491%200%201%200%20.207.96l2.36-.495a.49.49%200%200%200-.105-.973ZM7.379%2032.941c-.23.02-.422.2-.445.438a.495.495%200%200%200%20.441.543l5.703.598a.499.499%200%200%200%20.547-.442.491.491%200%200%200-.441-.539l-5.704-.598a.441.441%200%200%200-.101%200Zm63.398.04c-.035%200-.07%200-.101.003l-5.703.59a.492.492%200%201%200%20.101.98l5.703-.59a.495.495%200%200%200%200-.984ZM7.281%2036.253a.493.493%200%201%200%200%20.988h2.414a.493.493%200%201%200%200-.988Zm61.172%200a.493.493%200%201%200%200%20.988h2.414a.493.493%200%201%200%200-.988ZM13.176%2038.94a.442.442%200%200%200-.102%200l-5.703.59a.493.493%200%201%200%20.102.98l5.703-.59a.492.492%200%200%200%200-.98Zm51.793.036a.493.493%200%200%200-.004.98l5.703.598a.496.496%200%200%200%20.547-.438.49.49%200%200%200-.442-.543l-5.703-.597a.441.441%200%200%200-.101%200Zm-54.637%203.328a.477.477%200%200%200-.102.011l-2.359.496a.497.497%200%200%200-.383.586c.059.266.32.438.59.38l2.36-.497a.492.492%200%200%200%20.382-.586.5.5%200%200%200-.488-.39Zm57.484.008a.49.49%200%200%200-.488.39.488.488%200%200%200%20.383.582l2.36.5a.499.499%200%200%200%20.59-.383.494.494%200%200%200-.384-.582l-2.359-.5a.93.93%200%200%200-.102-.008Zm-53.511%201.94a.484.484%200%200%200-.196.02L8.656%2046.03a.492.492%200%201%200%20.309.938l5.453-1.758a.491.491%200%200%200-.113-.957Zm49.53.017a.492.492%200%200%200-.11.96l5.455%201.762a.5.5%200%200%200%20.625-.316.487.487%200%200%200-.317-.621l-5.453-1.762c-.066-.023-.133-.027-.2-.023Zm-51.612%203.832a.486.486%200%200%200-.192.043l-2.203.972a.496.496%200%200%200-.254.653.503.503%200%200%200%20.656.25l2.207-.973a.494.494%200%200%200-.215-.945Zm53.695.02a.494.494%200%200%200-.465.292c-.113.25%200%20.54.25.648l2.203.977c.254.11.547%200%20.656-.25a.49.49%200%200%200-.25-.652l-2.203-.973a.486.486%200%200%200-.191-.043Zm-49.402%201.066a.497.497%200%200%200-.286.066l-4.964%202.844a.49.49%200%200%200-.184.672c.14.238.441.316.68.18l4.968-2.84a.492.492%200%200%200%20.18-.676.493.493%200%200%200-.394-.246Zm45.117%200a.493.493%200%200%200-.395.246.492.492%200%200%200%20.18.675l4.969%202.84a.498.498%200%200%200%20.68-.18.49.49%200%200%200-.184-.671l-4.965-2.844a.53.53%200%200%200-.285-.066Zm-46.356%204.171a.524.524%200%200%200-.277.094l-1.95%201.406a.49.49%200%200%200-.113.688.5.5%200%200%200%20.696.11l1.953-1.403a.49.49%200%200%200%20.11-.691.502.502%200%200%200-.419-.204Zm47.582.016a.502.502%200%200%200-.418.203.49.49%200%200%200%20.11.692l1.953%201.406c.223.16.531.11.691-.11a.49.49%200%200%200-.11-.691l-1.948-1.402a.498.498%200%200%200-.278-.098Zm-43.16.172a.496.496%200%200%200-.36.125l-4.265%203.8a.486.486%200%200%200-.035.696.495.495%200%200%200%20.7.039l4.265-3.8a.487.487%200%200%200%20.039-.696.511.511%200%200%200-.344-.164Zm38.739.012a.511.511%200%200%200-.344.164.486.486%200%200%200%20.039.695l4.262%203.805a.5.5%200%200%200%20.703-.035.486.486%200%200%200-.04-.696l-4.261-3.804a.5.5%200%200%200-.36-.13Zm-34.696%203.613a.487.487%200%200%200-.418.203l-3.375%204.598a.49.49%200%200%200%20.11.687c.222.16.535.113.695-.11l3.375-4.597a.49.49%200%200%200-.387-.781Zm30.633.02a.512.512%200%200%200-.273.093.486.486%200%200%200-.11.688l3.367%204.601a.495.495%200%201%200%20.805-.578l-3.367-4.601a.509.509%200%200%200-.422-.204Zm-34.984.71a.496.496%200%200%200-.344.164l-1.613%201.778a.487.487%200%200%200%20.035.695.5.5%200%200%200%20.703-.039l1.613-1.777a.487.487%200%200%200-.039-.696.492.492%200%200%200-.355-.125Zm39.367%200a.5.5%200%200%200-.36.13.487.487%200%200%200-.039.695l1.614%201.777a.5.5%200%200%200%20.703.035.486.486%200%200%200%20.039-.695l-1.613-1.778a.511.511%200%200%200-.344-.164Zm-30.305%201.973a.493.493%200%200%200-.46.293l-2.337%205.191c-.113.25%200%20.54.25.653a.5.5%200%200%200%20.657-.25l2.335-5.192a.492.492%200%200%200-.445-.695Zm21.211.016a.491.491%200%200%200-.45.691l2.333%205.195c.11.25.402.364.656.25a.486.486%200%200%200%20.25-.648l-2.328-5.195a.493.493%200%200%200-.46-.293Zm-25.316%201.59a.499.499%200%200%200-.395.246l-1.207%202.07a.494.494%200%200%200%20.184.676.498.498%200%200%200%20.68-.184l1.206-2.07a.49.49%200%200%200-.183-.672.497.497%200%200%200-.285-.067Zm29.453%200a.497.497%200%200%200-.285.066.485.485%200%200%200-.18.672l1.203%202.07a.5.5%200%200%200%20.68.184.494.494%200%200%200%20.183-.676l-1.207-2.07a.499.499%200%200%200-.394-.247Zm-20.145.074a.497.497%200%200%200-.488.39l-1.191%205.563a.488.488%200%200%200%20.382.582c.27.058.532-.11.59-.38l1.192-5.558a.493.493%200%200%200-.485-.597Zm10.82.004a.45.45%200%200%200-.101.011.488.488%200%200%200-.383.582l1.188%205.563c.054.27.32.437.59.379a.49.49%200%200%200%20.382-.582l-1.187-5.563a.497.497%200%200%200-.488-.39Zm-5.402.562a.493.493%200%200%200-.496.492v5.684c0%20.273.223.492.496.492a.491.491%200%200%200%20.496-.492v-5.684a.491.491%200%200%200-.496-.492Zm-9.125%201.836a.49.49%200%200%200-.43.34l-.746%202.273a.49.49%200%200%200%20.317.621.499.499%200%200%200%20.629-.316l.746-2.273a.49.49%200%200%200-.32-.622.488.488%200%200%200-.196-.023Zm18.246%200a.57.57%200%200%200-.195.023.492.492%200%200%200-.32.622l.746%202.273a.493.493%200%200%200%20.625.316.486.486%200%200%200%20.32-.62l-.746-2.274a.49.49%200%200%200-.43-.34Zm-12.242%201.27a.491.491%200%200%200-.445.437l-.25%202.379a.489.489%200%200%200%20.441.539.493.493%200%200%200%20.547-.437l.25-2.38a.489.489%200%200%200-.543-.538Zm6.223%200a.49.49%200%200%200-.543.543l.25%202.378c.027.27.27.465.543.438a.492.492%200%200%200%20.445-.54l-.25-2.378a.499.499%200%200%200-.445-.441Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23f4f2f3%3Bfill-opacity%3A1%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23g%22%20mask%3D%22url(%23h)%22%2F%3E%3Cpath%20d%3D%22m42.973%2040.793-7.797-8.094%2027.656-18.445Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23ff5150%3Bfill-opacity%3A1%22%2F%3E%3Cpath%20d%3D%22m42.973%2040.793-7.797-8.094-19.86%2026.54Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23f1f1f1%3Bfill-opacity%3A1%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23i%22%20mask%3D%22url(%23j)%22%2F%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/Windows-PPTHQER6-BlyV2p7Y.js b/dist/assets/Windows-PPTHQER6-BlyV2p7Y.js new file mode 100644 index 0000000..b489961 --- /dev/null +++ b/dist/assets/Windows-PPTHQER6-BlyV2p7Y.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%230078D4%22%20d%3D%22M0%200h22.755v22.745H0V0Zm25.245%200H48v22.745H25.245V0ZM0%2025.245h22.755V48H0V25.245Zm25.245%200H48V48H25.245%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/add-Oh24nfvu.js b/dist/assets/add-Oh24nfvu.js new file mode 100644 index 0000000..7446c7c --- /dev/null +++ b/dist/assets/add-Oh24nfvu.js @@ -0,0 +1,15 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const d=o` + `;export{d as addSvg}; diff --git a/dist/assets/all-wallets-VMdCiViW.js b/dist/assets/all-wallets-VMdCiViW.js new file mode 100644 index 0000000..986daf6 --- /dev/null +++ b/dist/assets/all-wallets-VMdCiViW.js @@ -0,0 +1,6 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as allWalletsSvg}; diff --git a/dist/assets/apechain-SX5YFU6N-q5qBv-mp.js b/dist/assets/apechain-SX5YFU6N-q5qBv-mp.js new file mode 100644 index 0000000..7ceac4c --- /dev/null +++ b/dist/assets/apechain-SX5YFU6N-q5qBv-mp.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.6%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%230054FA%22%20d%3D%22M10.158%2012h2.933l1.89%2016h-2.486l-.276-3.481h-1.317L10.625%2028H8.267l1.89-16Zm1.169%207.113-.255%203.287h.977l-.276-3.287-.191-2.767h-.064l-.191%202.767ZM20.193%2028h-2.529V12h3.315c1.806%200%202.911%201.081%202.911%203.027v3.935c0%201.925-1.105%203.006-2.911%203.006h-.786V28Zm.021-7.957h.553c.425%200%20.595-.389.595-1.08v-3.936c0-.713-.17-1.103-.595-1.103h-.553v6.12ZM26.803%2028V12h4.93v2.119h-2.401v4.735h2.146v2.119h-2.146v4.908h2.401V28h-4.93Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F7F7F8%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23E6EDFA%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/app-store-CDE-LCRt.js b/dist/assets/app-store-CDE-LCRt.js new file mode 100644 index 0000000..df445bc --- /dev/null +++ b/dist/assets/app-store-CDE-LCRt.js @@ -0,0 +1,17 @@ +import{w as t}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=t` + + + + + + + + + +`;export{e as appStoreSvg}; diff --git a/dist/assets/apple-B0W5PsiS.js b/dist/assets/apple-B0W5PsiS.js new file mode 100644 index 0000000..2dc9351 --- /dev/null +++ b/dist/assets/apple-B0W5PsiS.js @@ -0,0 +1,18 @@ +import{w as i}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const h=i` + + + + + + + + + + + + + +`;export{h as appleSvg}; diff --git a/dist/assets/ar_AR-44JUQ6EW-BMX-am0v.js b/dist/assets/ar_AR-44JUQ6EW-BMX-am0v.js new file mode 100644 index 0000000..e37b5f2 --- /dev/null +++ b/dist/assets/ar_AR-44JUQ6EW-BMX-am0v.js @@ -0,0 +1,1487 @@ +var u=`{ + "connect_wallet": { + "label": "اتصال المحفظة", + "wrong_network": { + "label": "شبكة خاطئة" + } + }, + "intro": { + "title": "ما هو المحفظة؟", + "description": "تُستخدم المحفظة لإرسال واستلام وتخزين وعرض الأصول الرقمية. إنها أيضاً طريقة جديدة لتسجيل الدخول، دون الحاجة إلى إنشاء حسابات وكلمات مرور جديدة على كل موقع.", + "digital_asset": { + "title": "دار لأصولك الرقمية", + "description": "تُستخدم المحافظ لإرسال واستلام وتخزين وعرض الأصول الرقمية مثل إيثيريوم والـ NFTs." + }, + "login": { + "title": "طريقة جديدة لتسجيل الدخول", + "description": "بدلاً من إنشاء حسابات وكلمات مرور جديدة على كل موقع، فقط قم بتوصيل محفظتك." + }, + "get": { + "label": "احصل على محفظة" + }, + "learn_more": { + "label": "تعلم المزيد" + } + }, + "sign_in": { + "label": "تحقق من حسابك", + "description": "لإنهاء الاتصال، يجب عليك توقيع رسالة في محفظتك للتحقق من أنك صاحب هذا الحساب.", + "message": { + "send": "إرسال الرسالة", + "preparing": "جارٍ تجهيز الرسالة...", + "cancel": "إلغاء", + "preparing_error": "خطأ في تجهيز الرسالة، يرجى المحاولة مرة أخرى!" + }, + "signature": { + "waiting": "انتظار التوقيع...", + "verifying": "جار التحقق من التوقيع...", + "signing_error": "خطأ في توقيع الرسالة، يرجى المحاولة مرة أخرى!", + "verifying_error": "خطأ في التحقق من التوقيع، يرجى المحاولة مرة أخرى!", + "oops_error": "عذرًا، حدث خطأ ما!" + } + }, + "connect": { + "label": "اتصل", + "title": "اتصال بالمحفظة", + "new_to_ethereum": { + "description": "جديد في محافظ Ethereum؟", + "learn_more": { + "label": "تعلم المزيد" + } + }, + "learn_more": { + "label": "أعرف أكثر" + }, + "recent": "الأخير", + "status": { + "opening": "جار فتح %{wallet}...", + "connecting": "جارٍ الاتصال", + "connect_mobile": "استمر في %{wallet}", + "not_installed": "%{wallet} غير مثبت", + "not_available": "%{wallet} غير متاح", + "confirm": "تأكيد الاتصال في الامتداد", + "confirm_mobile": "قبل طلب الاتصال في المحفظة" + }, + "secondary_action": { + "get": { + "description": "لا يوجد لديك %{wallet}؟", + "label": "احصل" + }, + "install": { + "label": "تثبيت" + }, + "retry": { + "label": "أعد المحاولة" + } + }, + "walletconnect": { + "description": { + "full": "هل تحتاج إلى النافذة الرسمية لـ WalletConnect؟", + "compact": "هل تحتاج إلى النافذة لـ WalletConnect؟" + }, + "open": { + "label": "افتح" + } + } + }, + "connect_scan": { + "title": "المسح باستخدام %{wallet}", + "fallback_title": "المسح باستخدام هاتفك" + }, + "connector_group": { + "installed": "مُثبّت", + "recommended": "موصى به", + "other": "آخر", + "popular": "شائع", + "more": "المزيد", + "others": "الآخرين" + }, + "get": { + "title": "احصل على محفظة", + "action": { + "label": "احصل" + }, + "mobile": { + "description": "محفظة الموبايل" + }, + "extension": { + "description": "ملحق المتصفح" + }, + "mobile_and_extension": { + "description": "محفظة موبايل وملحق" + }, + "mobile_and_desktop": { + "description": "محفظة الموبايل والكمبيوتر" + }, + "looking_for": { + "title": "ليست هذه هي ما تبحث عنه؟", + "mobile": { + "description": "حدد محفظة على الشاشة الرئيسية للبدء باستخدام موفر محفظة مختلف." + }, + "desktop": { + "compact_description": "حدد محفظة على الشاشة الرئيسية للبدء باستخدام موفر محفظة مختلف.", + "wide_description": "حدد محفظة على اليسار للبدء باستخدام موفر محفظة مختلف." + } + } + }, + "get_options": { + "title": "ابدأ مع %{wallet}", + "short_title": "احصل على %{wallet}", + "mobile": { + "title": "%{wallet} للجوال", + "description": "استخدم محفظة الموبايل لاستكشاف عالم Ethereum.", + "download": { + "label": "احصل على التطبيق" + } + }, + "extension": { + "title": "%{wallet} لـ %{browser}", + "description": "وصول لمحفظتك مباشرة من متصفح الويب المفضل لديك.", + "download": { + "label": "أضف إلى %{browser}" + } + }, + "desktop": { + "title": "%{wallet} لـ %{platform}", + "description": "قم بالوصول إلى محفظتك بشكل أصلي من كمبيوترك القوي.", + "download": { + "label": "أضف إلى %{platform}" + } + } + }, + "get_mobile": { + "title": "قم بالتثبيت %{wallet}", + "description": "استخدم هاتفك للتحميل على iOS أو Android", + "continue": { + "label": "استمر" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "اتصل" + }, + "learn_more": { + "label": "تعلم المزيد" + } + }, + "extension": { + "refresh": { + "label": "تحديث" + }, + "learn_more": { + "label": "تعلم المزيد" + } + }, + "desktop": { + "connect": { + "label": "اتصل" + }, + "learn_more": { + "label": "تعلم المزيد" + } + } + }, + "chains": { + "title": "تبديل الشبكات", + "wrong_network": "تم اكتشاف شبكة غير صحيحة، قم بالتبديل أو القطع للمتابعة.", + "confirm": "التأكيد في المحفظة", + "switching_not_supported": "محفظتك لا تدعم التبديل بين الشبكات من %{appName}. جرب التبديل بين الشبكات من داخل المحفظة بدلاً من ذلك.", + "switching_not_supported_fallback": "محفظتك لا تدعم تبديل الشبكات من هذا التطبيق. حاول تبديل الشبكات من داخل المحفظة بدلاً من ذلك.", + "disconnect": "قطع الاتصال", + "connected": "متصل" + }, + "profile": { + "disconnect": { + "label": "قطع الاتصال" + }, + "copy_address": { + "label": "نسخ العنوان", + "copied": "تم النسخ!" + }, + "explorer": { + "label": "عرض المزيد على المستكشف" + }, + "transactions": { + "description": "%{appName} ستظهر المعاملات هنا...", + "description_fallback": "سوف تظهر معاملاتك هنا...", + "recent": { + "title": "المعاملات الأخيرة" + }, + "clear": { + "label": "مسح الكل" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "أضف Ready إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك.", + "title": "افتح تطبيق Ready" + }, + "step2": { + "description": "أنشئ محفظة واسم مستخدم، أو استورد محفظة موجودة بالفعل.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر فحص الكود الشريطي" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة BeraSig", + "description": "نوصي بتثبيت BeraSig على شريط المهام الخاص بك للوصول الأسهل إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Best Wallet", + "description": "أضف محفظة Best إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "نوصي بوضع محفظة Bifrost على الشاشة الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق محفظة Bifrost" + }, + "step2": { + "description": "أنشئ أو استورد محفظة باستخدام عبارة الاستعادة الخاصة بك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر موجه الاتصال لك لتوصيل محفظتك.", + "title": "اضغط على زر المسح" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "نوصي بوضع محفظة Bitget على الشاشة الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق محفظة Bitget" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، ستظهر لك موجه اتصال لتوصيل محفظتك.", + "title": "اضغط على زر الفحص" + } + }, + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Bitget على شريط المهام للوصول الأسرع إلى محفظتك.", + "title": "قم بتثبيت امتداد محفظة Bitget" + }, + "step2": { + "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "أنشئ محفظة أو استورد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "نوصي بتثبيت Bitski على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", + "title": "قم بتثبيت امتداد Bitski" + }, + "step2": { + "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد إعداد المحفظة الخاصة بك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", + "title": "تحديث المتصفح الخاص بك" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة Bitverse", + "description": "أضف محفظة Bitverse إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "افتح تطبيق محفظة Bloom", + "description": "نوصي بوضع محفظة Bloom على الشاشة الرئيسية للوصول الأسرع." + }, + "step2": { + "description": "أنشئ أو استورد محفظة باستخدام عبارة الاستعادة الخاصة بك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد حصولك على محفظة، انقر على Connect للاتصال عبر Bloom. ستظهر رسالة مطالبة بالاتصال في التطبيق لتأكيد الاتصال.", + "title": "انقر على Connect" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "نوصي بوضع Bybit على شاشتك الرئيسية للوصول الأسرع إلى محفظتك.", + "title": "افتح تطبيق Bybit" + }, + "step2": { + "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر المسح" + } + }, + "extension": { + "step1": { + "description": "انقر في أعلى يمين المتصفح وثبت محفظة Bybit للوصول السهل.", + "title": "قم بتثبيت امتداد محفظة Bybit" + }, + "step2": { + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل.", + "title": "أنشئ محفظة أو استورد محفظة" + }, + "step3": { + "description": "بعد إعداد محفظة Bybit، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "نوصي بوضع Binance على الشاشة الرئيسية للوصول السريع إلى محفظتك.", + "title": "افتح تطبيق Binance" + }, + "step2": { + "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر WalletConnect" + } + }, + "extension": { + "step1": { + "title": "ثبّت امتداد محفظة Binance", + "description": "نوصي بتثبيت محفظة Binance على شريط المهام للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "نوصي بوضع محفظة Coin98 على الشاشة الرئيسية لسرعة الوصول إلى محفظتك.", + "title": "افتح تطبيق محفظة Coin98" + }, + "step2": { + "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك.", + "title": "اضغط على زر WalletConnect" + } + }, + "extension": { + "step1": { + "description": "انقر في الجزء العلوي الأيمن من المتصفح وثبت Coin98 Wallet لسهولة الوصول.", + "title": "قم بتثبيت امتداد Coin98 Wallet" + }, + "step2": { + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل.", + "title": "أنشئ محفظة أو استورد محفظة" + }, + "step3": { + "description": "بمجرد إعداد Coin98 Wallet ، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "تحديث المتصفح الخاص بك" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "نوصي بوضع Coinbase Wallet على الشاشة الرئيسية لسهولة الوصول.", + "title": "افتح تطبيق Coinbase Wallet" + }, + "step2": { + "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي السحابي.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك.", + "title": "اضغط على زر الفحص" + } + }, + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Coinbase على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", + "title": "تثبيت امتداد محفظة Coinbase" + }, + "step2": { + "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء أو استيراد المحفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", + "title": "تحديث المتصفح الخاص بك" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Compass على شريط المهام للوصول الأسرع إلى محفظتك.", + "title": "تثبيت امتداد محفظة Compass" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "نوصي بوضع Core على الشاشة الرئيسية للوصول السريع إلى محفظتك.", + "title": "افتح تطبيق Core" + }, + "step2": { + "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي على هاتفك.", + "title": "إنشاء أو استيراد المحفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل محفظتك.", + "title": "اضغط على زر WalletConnect" + } + }, + "extension": { + "step1": { + "description": "نوصي بتثبيت Core على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", + "title": "قم بتثبيت امتداد Core" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "تحديث متصفحك" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "نوصي بوضع FoxWallet على شاشتك الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق FoxWallet" + }, + "step2": { + "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء محفظة أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، ستظهر لك موجه الاتصال لتتمكن من اتصال محفظتك.", + "title": "اضغط على زر الفحص" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "نوصي بوضع Frontier Wallet على شاشتك الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق Frontier Wallet" + }, + "step2": { + "description": "تأكد من نسخ محفظتك احتياطيا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، ستظهر لك موجه الاتصال لربط محفظتك.", + "title": "اضغط على زر الفحص" + } + }, + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Frontier على شريط المهام للوصول الأسرع إلى محفظتك.", + "title": "تثبيت امتداد محفظة Frontier" + }, + "step2": { + "description": "تأكد من نسخ محفظتك احتياطيا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", + "title": "قم بتحديث المتصفح الخاص بك" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "افتح تطبيق imToken", + "description": "ضع تطبيق imToken على الشاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "قم بإنشاء محفظة جديدة أو استيراد واحدة موجودة." + }, + "step3": { + "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", + "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "نوصي بوضع ioPay على الشاشة الرئيسية للوصول السريع إلى محفظتك.", + "title": "افتح تطبيق ioPay" + }, + "step2": { + "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر WalletConnect" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "نوصي بتثبيت Kaikas على شريط المهام للوصول الأسرع إلى محفظتك.", + "title": "قم بتثبيت امتداد Kaikas" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق Kaikas", + "description": "ضع تطبيق Kaikas على شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", + "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "نوصي بتثبيت Kaia على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", + "title": "قم بتثبيت إضافة Kaia" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق Kaia", + "description": "ضع تطبيق Kaia على الشاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", + "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة Kraken", + "description": "أضف محفظة Kraken إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة Kresus", + "description": "أضف محفظة Kresus إلى الشاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة Magic Eden", + "description": "نوصي بتثبيت Magic Eden على شريط المهام للوصول الأسهل إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "افتح تطبيق MetaMask", + "description": "نوصي بوضع MetaMask على الشاشة الرئيسية لديك للوصول بشكل أسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ الحفاظ على محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، ستظهر لك موجه اتصال لتوصيل محفظتك." + } + }, + "extension": { + "step1": { + "title": "قم بتثبيت امتداد MetaMask", + "description": "نوصي بتثبيت MetaMask في شريط المهام للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "تحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "قم بتثبيت امتداد NestWallet", + "description": "نوصي بتثبيت NestWallet على شريط المهام للوصول السريع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة OKX", + "description": "نوصي بوضع محفظة OKX على الشاشة الرئيسية للوصول الأسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك." + } + }, + "extension": { + "step1": { + "title": "قم بتثبيت امتداد محفظة OKX", + "description": "نوصي بتثبيت محفظة OKX على شريط المهام للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من حفظ نسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Omni", + "description": "أضف Omni إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "إنشاء محفظة جديدة أو استيراد واحدة موجودة." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على الرمز QR على الشاشة الرئيسية الخاصة بك، امسح الرمز وأكد الموافقة للاتصال." + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "ضع محفظة 1inch على شاشتك الرئيسية للوصول الأسرع إلى محفظتك.", + "title": "افتح تطبيق محفظة 1inch" + }, + "step2": { + "description": "أنشئ محفظة واسم مستخدم، أو استورد محفظة موجودة بالفعل.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر فحص الكود الشريطي" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "افتح تطبيق TokenPocket", + "description": "نوصي بوضع TokenPocket على الشاشة الرئيسية للوصول السريع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، ستظهر لك رسالة موجهة للاتصال بمحفظتك." + } + }, + "extension": { + "step1": { + "title": "قم بتثبيت امتداد TokenPocket", + "description": "نوصي بتثبيت TokenPocket على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "قم بإنشاء محفظة أو استيراد محفظة", + "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Trust Wallet", + "description": "ضع Trust Wallet على الشاشة الرئيسية للوصول السريع إلى محفظتك." + }, + "step2": { + "title": "أنشئ محفظة أو استورد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة." + }, + "step3": { + "title": "اضغط على WalletConnect في الإعدادات", + "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي QR وأكد الموجه للاتصال." + } + }, + "extension": { + "step1": { + "title": "قم بتثبيت امتداد Trust Wallet", + "description": "انقر في الجزء العلوي الأيمن من المتصفح وثبت Trust Wallet للوصول بسهولة." + }, + "step2": { + "title": "أنشئ محفظة أو استورد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد Trust Wallet، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Uniswap", + "description": "أضف محفظة Uniswap إلى شاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "قم بإنشاء محفظة جديدة أو استيراد واحدة موجودة." + }, + "step3": { + "title": "اضغط على الأيقونة QR واقرأ الرمز", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Zerion", + "description": "نوصي بوضع Zerion على شاشتك الرئيسية للوصول الأسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من حفظ نسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." + } + }, + "extension": { + "step1": { + "title": "تثبيت امتداد Zerion", + "description": "نوصي بتثبيت Zerion على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Rainbow", + "description": "نوصي بوضع Rainbow على شاشة البداية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة أو استيراد محفظة", + "description": "يمكنك عمل نسخة احتياطية بسهولة لمحفظتك باستخدام ميزة النسخ الاحتياطي على هاتفك." + }, + "step3": { + "title": "اضغط على الزر الماسح الضوئي", + "description": "بعد الفحص، سيظهر لك موجه اتصال لربط محفظتك." + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Enkrypt على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", + "title": "تثبيت امتداد محفظة Enkrypt" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "أنشئ أو استورد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", + "title": "حدث المتصفح الخاص بك" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "نوصي بتعليق Frame على شريط المهام للوصول السريع إلى محفظتك.", + "title": "ثبت Frame والإضافة المصاحبة" + }, + "step2": { + "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", + "title": "أنشئ أو استورد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", + "title": "حدث المتصفح الخاص بك" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "قم بتثبيت امتداد محفظة OneKey", + "description": "نوصي بتثبيت محفظة OneKey على شريط المهام للوصول السريع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "تحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "افتح تطبيق ParaSwap", + "description": "أضف محفظة ParaSwap إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "قم بتثبيت امتداد Phantom", + "description": "نوصي بتثبيت Phantom على شريط المهام للوصول الأسهل إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المتصفح", + "description": "بمجرد إعداد المحفظة، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "ثبت امتداد Rabby", + "description": "نوصي بتثبيت Rabby على شريط المهام للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "أنشئ محفظة أو استورد محفظة", + "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك العبارة السرية مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المتصفح", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "نوصي بوضع محفظة Ronin على الشاشة الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق محفظة Ronin" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر المسح" + } + }, + "extension": { + "step1": { + "description": "نوصي بتثبيت محفظة Ronin على شريط المهام للوصول الأسرع إلى محفظتك.", + "title": "ثبّت امتداد محفظة Ronin" + }, + "step2": { + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", + "title": "قم بتحديث متصفحك" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "ثبّت امتداد Ramper", + "description": "نوصي بتثبيت Ramper على شريط المهام لسهولة الوصول إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة النواة", + "description": "نوصي بتثبيت Safeheron على شريط المهام الخاص بك للوصول السريع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ محفظتك بطريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "تحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "تثبيت إضافة Taho", + "description": "نوصي بتثبيت Taho على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة أو استيراد محفظة", + "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." + }, + "step3": { + "title": "تحديث المتصفح الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "قم بتثبيت امتداد Wigwam", + "description": "نوصي بتعليق Wigwam على شريط المهام للوصول السريع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "تثبيت إضافة Talisman", + "description": "نوصي بتثبيت Talisman على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة Ethereum أو استيرادها", + "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة الخاصة بك مع أي شخص." + }, + "step3": { + "title": "قم بتحديث المستعرض الخاص بك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المستعرض وتحميل الإضافة." + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة CTRL Wallet", + "description": "نوصي بتثبيت CTRL Wallet على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Zeal", + "description": "أضف محفظة Zeal إلى الشاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", + "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." + } + }, + "extension": { + "step1": { + "title": "قم بتثبيت امتداد Zeal", + "description": "نوصي بتثبيت Zeal في شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "قم بتثبيت صيغة SafePal Wallet", + "description": "انقر في أعلى يمين المتصفح وثبت صيغة SafePal Wallet لسهولة الوصول." + }, + "step2": { + "title": "أنشئ محفظة أو استورد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظة SafePal، انقر أدناه لتحديث المتصفح وتحميل الإضافة." + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة SafePal", + "description": "ضع محفظة SafePal على شاشة الرئيسية لسهولة الوصول إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على WalletConnect في الإعدادات", + "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة Desig", + "description": "نوصي بتثبيت Desig على شريط المهام الخاص بك للوصول الأسهل إلى محفظتك." + }, + "step2": { + "title": "إنشاء محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة SubWallet", + "description": "نوصي بتثبيت SubWallet على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة الخاصة بك مع أي شخص." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق SubWallet", + "description": "نوصي بوضع SubWallet على شاشة الرئيسية الخاصة بك للوصول الأسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "قم بتثبيت إضافة CLV Wallet", + "description": "نوصي بتثبيت CLV Wallet على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة CLV", + "description": "نوصي بوضع محفظة CLV على الشاشة الرئيسية للوصول الأسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Okto", + "description": "أضف Okto إلى الشاشة الرئيسية للوصول السريع" + }, + "step2": { + "title": "أنشئ محفظة MPC", + "description": "أنشئ حسابًا وقم بإنشاء محفظة" + }, + "step3": { + "title": "اضغط على WalletConnect في الإعدادات", + "description": "اضغط على أيقونة فحص الشاشة في الجهة العليا اليمنى وأكد الإدخال للاتصال." + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "افتح تطبيق Ledger Live", + "description": "نوصي بوضع Ledger Live على شاشة الرئيسية لديك لسرعة الوصول." + }, + "step2": { + "title": "قم بإعداد Ledger الخاص بك", + "description": "قم بإعداد Ledger جديد أو قم بالاتصال بواحد موجود ." + }, + "step3": { + "title": "اتصل", + "description": "بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." + } + }, + "qr_code": { + "step1": { + "title": "افتح تطبيق Ledger Live", + "description": "نوصي بوضع Ledger Live على شاشة الرئيسية لديك لسرعة الوصول." + }, + "step2": { + "title": "قم بإعداد Ledger الخاص بك", + "description": "يمكنك إما المزامنة مع تطبيق سطح المكتب أو توصيل Ledger الخاص بك." + }, + "step3": { + "title": "مسح الرمز", + "description": "اضغط على WalletConnect ثم انتقل إلى الفحص. بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Valora", + "description": "نوصي بوضع Valora على شاشتك الرئيسية للوصول الأسرع." + }, + "step2": { + "title": "أنشئ محفظة أو استورد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "افتح تطبيق Gate", + "description": "نوصي بوضع Gate على شاشتك الرئيسية للوصول الأسرع." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + }, + "extension": { + "step1": { + "title": "تثبيت إضافة Gate", + "description": "نوصي بتثبيت Gate على شريط المهام للوصول الأسهل إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." + }, + "step3": { + "title": "قم بتحديث متصفحك", + "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "افتح keys.gemini.com", + "description": "قم بزيارة keys.gemini.com على متصفح الهاتف المحمول - لا يلزم تنزيل تطبيق." + }, + "step2": { + "title": "أنشئ محفظتك فوراً", + "description": "قم بإعداد محفظتك الذكية في ثوانٍ باستخدام التحقق المبني في جهازك." + }, + "step3": { + "title": "امسح للاتصال", + "description": "امسح رمز الاستجابة السريعة للاتصال بمحضتك فوراً - يعمل بكل سلاسة." + } + }, + "extension": { + "step1": { + "title": "اذهب إلى keys.gemini.com", + "description": "لا حاجة لملحقات أو تنزيلات - محفظتك تبقى آمنة في المتصفح." + }, + "step2": { + "title": "إعداد بنقرة واحدة", + "description": "أنشئ محفظتك الذكية فورًا باستخدام مصادقة المفتاح - أسهل من أي محفظة أخرى." + }, + "step3": { + "title": "اتصل وانطلق", + "description": "قم بالموافقة على الاتصال وستكون جاهزًا - المحفظة الخالية من الآراء والتي تعمل بكل بساطة." + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "ضع xPortal على شاشتك الرئيسية للوصول السريع إلى محفظتك.", + "title": "افتح تطبيق xPortal" + }, + "step2": { + "description": "أنشئ محفظة أو استورد واحدة موجودة بالفعل.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر فحص الكود الشريطي" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "نوصي بوضع محفظة MEW على الشاشة الرئيسية للوصول الأسرع.", + "title": "افتح تطبيق محفظة MEW" + }, + "step2": { + "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي السحابي.", + "title": "إنشاء أو استيراد محفظة" + }, + "step3": { + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", + "title": "اضغط على زر المسح" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "افتح تطبيق ZilPay", + "description": "أضف ZilPay إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "افتح تطبيق محفظة Nova", + "description": "أضف محفظة Nova إلى الشاشة الرئيسية للوصول الأسرع إلى محفظتك." + }, + "step2": { + "title": "إنشاء أو استيراد محفظة", + "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." + }, + "step3": { + "title": "اضغط على زر المسح", + "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." + } + } + } + } +} +`;export{u as default}; diff --git a/dist/assets/arbitrum-WURIBY6W-CqVkHBr5.js b/dist/assets/arbitrum-WURIBY6W-CqVkHBr5.js new file mode 100644 index 0000000..93b4e05 --- /dev/null +++ b/dist/assets/arbitrum-WURIBY6W-CqVkHBr5.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%2396BEDC%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.3%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%232D374B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M20%202.5C10.335%202.5%202.5%2010.335%202.5%2020c0%203.293.91%206.373%202.49%209.004L0%2031v9h10v-5.637A17.42%2017.42%200%200%200%2020%2037.5c9.665%200%2017.5-7.835%2017.5-17.5S29.665%202.5%2020%202.5Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cmask%20id%3D%22c%22%20width%3D%2238%22%20height%3D%2238%22%20x%3D%220%22%20y%3D%222%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%232D374B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M20%202.5C10.335%202.5%202.5%2010.335%202.5%2020a17.42%2017.42%200%200%200%203.137%2010H0v10h10v-5.637A17.42%2017.42%200%200%200%2020%2037.5c9.665%200%2017.5-7.835%2017.5-17.5S29.665%202.5%2020%202.5Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23c)%22%3E%3Cpath%20fill%3D%22%2328A0F0%22%20d%3D%22m26.873%2037.192-6.75-10.615%203.782-6.416%208.672%2013.676-5.704%203.355ZM34.126%2032.79l3.471-5.786-9.238-14.423-3.299%205.596%209.066%2014.613Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20fill-opacity%3D%22.2%22%20d%3D%22M0%2020C0%208.954%208.954%200%2020%200s20%208.954%2020%2020-8.954%2020-20%2020H0V20Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m.52%2040.315-4.387-2.524L-4.2%2036.6l15.267-23.715c1.042-1.702%203.314-2.25%205.422-2.22l2.475.065L.519%2040.315ZM27.38%2010.73l-6.523.024L-2.9%2050%202%2053.5l6.358-10.597%201.402-2.379L27.38%2010.73Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/arrow-bottom-CmqaAljb.js b/dist/assets/arrow-bottom-CmqaAljb.js new file mode 100644 index 0000000..61b2c41 --- /dev/null +++ b/dist/assets/arrow-bottom-CmqaAljb.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as arrowBottomSvg}; diff --git a/dist/assets/arrow-bottom-circle-C-qqzuni.js b/dist/assets/arrow-bottom-circle-C-qqzuni.js new file mode 100644 index 0000000..d7dc918 --- /dev/null +++ b/dist/assets/arrow-bottom-circle-C-qqzuni.js @@ -0,0 +1,11 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + `;export{t as arrowBottomCircleSvg}; diff --git a/dist/assets/arrow-left-D-4SEvnH.js b/dist/assets/arrow-left-D-4SEvnH.js new file mode 100644 index 0000000..4ce8bae --- /dev/null +++ b/dist/assets/arrow-left-D-4SEvnH.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as arrowLeftSvg}; diff --git a/dist/assets/arrow-right-CYV_D7il.js b/dist/assets/arrow-right-CYV_D7il.js new file mode 100644 index 0000000..1e90d52 --- /dev/null +++ b/dist/assets/arrow-right-CYV_D7il.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as arrowRightSvg}; diff --git a/dist/assets/arrow-top-BoRY4jDJ.js b/dist/assets/arrow-top-BoRY4jDJ.js new file mode 100644 index 0000000..01e3342 --- /dev/null +++ b/dist/assets/arrow-top-BoRY4jDJ.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + +`;export{t as arrowTopSvg}; diff --git a/dist/assets/assets-Q6ZU7ZJ5-P8HioiAD.js b/dist/assets/assets-Q6ZU7ZJ5-P8HioiAD.js new file mode 100644 index 0000000..ade8074 --- /dev/null +++ b/dist/assets/assets-Q6ZU7ZJ5-P8HioiAD.js @@ -0,0 +1 @@ +var h="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c1.752%200%203.23%200%204.5-.033%200-1.362%200-2.044.066-2.616a10%2010%200%200%201%208.785-8.785c.572-.066%201.254-.066%202.616-.066C48%2035.23%2048%2033.752%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c1.752%200%203.23%200%204.5-.033%200-1.362%200-2.044.066-2.616a10%2010%200%200%201%208.785-8.785c.572-.066%201.254-.066%202.616-.066C48%2035.23%2048%2033.752%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.04%22%20fill-rule%3D%22evenodd%22%20d%3D%22M35.5%2035.5h11.486C47%2034.475%2047%2033.32%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6C1%2011.13%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c1.32%200%202.475%200%203.5-.014V35.5Zm1%2012.467C35.23%2048%2033.752%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%201.752%200%203.23-.033%204.5H36.5v11.467Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.8%22%20d%3D%22M3%2014.2c0-3.92%200-5.88.763-7.378a7%207%200%200%201%203.06-3.059C8.318%203%2010.28%203%2014.2%203h19.6c3.92%200%205.88%200%207.378.763a7%207%200%200%201%203.059%203.06C45%208.318%2045%2010.28%2045%2014.2v19.6c0%203.92%200%205.88-.763%207.378a7%207%200%200%201-3.06%203.059C39.682%2045%2037.72%2045%2033.8%2045H14.2c-3.92%200-5.88%200-7.378-.763a7%207%200%200%201-3.059-3.06C3%2039.682%203%2037.72%203%2033.8V14.2Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20d%3D%22M33.8%203.5H14.2c-1.968%200-3.415%200-4.557.094-1.136.093-1.927.275-2.594.614A6.5%206.5%200%200%200%204.21%207.05c-.34.667-.522%201.458-.615%202.594C3.5%2010.785%203.5%2012.232%203.5%2014.2v19.6c0%201.968%200%203.415.094%204.557.093%201.136.275%201.928.614%202.594a6.5%206.5%200%200%200%202.841%202.84c.667.34%201.458.522%202.594.615%201.142.094%202.589.094%204.557.094h19.6c1.968%200%203.415%200%204.557-.094%201.136-.093%201.928-.275%202.594-.614a6.499%206.499%200%200%200%202.84-2.841c.34-.666.522-1.458.615-2.594.094-1.142.094-2.589.094-4.557V14.2c0-1.968%200-3.415-.094-4.557-.093-1.136-.275-1.927-.614-2.594a6.5%206.5%200%200%200-2.841-2.84c-.666-.34-1.458-.522-2.594-.615C37.215%203.5%2035.768%203.5%2033.8%203.5ZM3.763%206.822C3%208.32%203%2010.28%203%2014.2v19.6c0%203.92%200%205.88.763%207.378a7%207%200%200%200%203.06%203.059C8.318%2045%2010.28%2045%2014.2%2045h19.6c3.92%200%205.88%200%207.378-.763a7%207%200%200%200%203.059-3.06C45%2039.682%2045%2037.72%2045%2033.8V14.2c0-3.92%200-5.88-.763-7.378a7%207%200%200%200-3.06-3.059C39.682%203%2037.72%203%2033.8%203H14.2c-3.92%200-5.88%200-7.378.763a7%207%200%200%200-3.059%203.06Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23DFD7D5%22%20d%3D%22M25%2013c0-2.8%200-4.2.545-5.27a5%205%200%200%201%202.185-2.185C28.8%205%2030.2%205%2033%205h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C43%208.8%2043%2010.2%2043%2013v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C39.2%2023%2037.8%2023%2035%2023h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C25%2019.2%2025%2017.8%2025%2015v-2Z%22%2F%3E%3Cpath%20fill%3D%22%23E1D7D5%22%20d%3D%22M38%205h-8a5%205%200%200%200-5%205v8a5%205%200%200%200%205%205h8a5%205%200%200%200%205-5v-8a5%205%200%200%200-5-5Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M37.938%2016.813h-7.876v.562h7.875v-.563Zm0%20.562h-7.876v.563h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M37.938%2017.938h-7.876v.562h7.875v-.563Zm0%20.562h-7.876v.563h7.875V18.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2019.063h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2020.188h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2021.313h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2022.438h-1.125V23h1.125v-.563Zm6.75%200H31.75V23h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.875%2017.938h-.563v.562h.563v-.563Zm2.25%200H34v.562h1.125v-.563Zm1.125%200h-.563v.562h.563v-.563Zm-3.375.562h-.563v.563h.563V18.5Zm2.25%200H34v.563h1.125V18.5Zm1.125%200h-.563v.563h.563V18.5Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M33.438%2019.063h-1.126v.562h1.126v-.563Zm1.687%200H34v.562h1.125v-.563Zm1.688%200h-1.126v.562h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M33.438%208.375h-.563v.563h.563v-.563Zm1.687%200H34v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M31.75%208.938h-1.688V9.5h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M35.688%208.938h-3.376V9.5h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%208.938H36.25V9.5h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%209.5h-1.125v.563h1.125V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M31.75%209.5h-1.688v.563h1.688V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M35.125%209.5H31.75v.563h3.375V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%209.5H36.25v.563h1.688V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2010.063h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2010.063h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M34.563%2010.063H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2010.063h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2010.625h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M33.438%2010.625h-3.376v.563h3.375v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M35.125%2010.625h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2010.625h-2.813v.563h2.813v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2011.188h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2011.188h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2011.188H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2011.188h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2011.75h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2011.75h-3.938v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2011.75H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2011.75h-3.376v.563h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2012.313h-1.688v.562h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2012.313h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2012.313H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2012.313h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2012.875h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2012.875h-3.938v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2012.875H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2012.875h-3.376v.563h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2013.438h-1.125V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2013.438h-3.938V14H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2013.438H34V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2013.438h-3.376V14h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2014h-1.688v.563h1.688V14Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2014H30.062v.563h10.125V14Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2014.563h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M37.938%2014.563h-7.876v.562h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M38.5%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M39.063%2014.563H38.5v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M39.625%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2015.125h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M31.188%2015.125h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M31.75%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M32.313%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M32.875%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34%2015.125h-.563v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M34.563%2015.125H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M35.125%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2015.125h-5.063v.563h5.063v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2015.688h-2.25v.562h2.25v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2015.688H30.062v.562h10.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2016.25h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2016.25H30.062v.563h10.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M28.938%2016.813h-.563v.562h.563v-.563Zm1.125%200H29.5v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M37.938%2016.813h-7.876v.562h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2011.188h-3.375v.562H34v-.563Zm3.938%200h-3.376v.562h3.376v-.563Zm-6.75.562h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2011.75h-1.126v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2011.75h-1.126v.563h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2011.75h-.563v.563H34v-.563Zm1.125%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2011.75h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2011.75H36.25v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2011.75h-.563v.563h.563v-.563Zm-6.75.563h-2.25v.562h2.25v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2012.313h-1.126v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2012.313h-1.126v.562h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M35.125%2012.313h-1.688v.562h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2012.313h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2012.313H36.25v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2012.313h-.563v.562h.563v-.563Zm-8.438.562h-.563v.563h.563v-.563Zm1.688%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2012.875h-1.126v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2012.875h-1.126v.563h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2012.875h-.563v.563H34v-.563Zm1.125%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2012.875h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2012.875H36.25v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2012.875h-.563v.563h.563v-.563Zm-8.438.563h-.563V14h.563v-.563Zm1.688%200h-.563V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2013.438h-1.126V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2013.438h-1.126V14h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2013.438h-.563V14H34v-.563Zm1.125%200h-.563V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2013.438h-1.125V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2013.438H36.25V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2013.438h-.563V14h.563v-.563ZM34%2014h-3.375v.563H34V14Zm3.938%200h-3.376v.563h3.376V14Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.3%22%20fill-rule%3D%22evenodd%22%20d%3D%22M35%205.5h-2c-1.408%200-2.435%200-3.243.066-.803.066-1.347.194-1.8.424a4.5%204.5%200%200%200-1.966%201.967c-.231.453-.359.997-.424%201.8-.067.808-.067%201.835-.067%203.243v2c0%201.408%200%202.435.067%203.243.065.803.193%201.347.424%201.8a4.5%204.5%200%200%200%201.966%201.966c.453.231.997.359%201.8.424.808.067%201.835.067%203.243.067h2c1.408%200%202.435%200%203.243-.067.803-.065%201.347-.193%201.8-.424a4.5%204.5%200%200%200%201.967-1.966c.23-.453.358-.997.424-1.8.066-.808.066-1.835.066-3.243v-2c0-1.408%200-2.435-.066-3.243-.066-.803-.194-1.347-.424-1.8a4.5%204.5%200%200%200-1.967-1.967c-.453-.23-.997-.358-1.8-.424C37.435%205.5%2036.408%205.5%2035%205.5Zm-9.455%202.23C25%208.8%2025%2010.2%2025%2013v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C28.8%2023%2030.2%2023%2033%2023h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C43%2019.2%2043%2017.8%2043%2015v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C39.2%205%2037.8%205%2035%205h-2c-2.8%200-4.2%200-5.27.545a5%205%200%200%200-2.185%202.185Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23564CBF%22%20d%3D%22M5%2033c0-2.8%200-4.2.545-5.27a5%205%200%200%201%202.185-2.185C8.8%2025%2010.2%2025%2013%2025h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C23%2028.8%2023%2030.2%2023%2033v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C19.2%2043%2017.8%2043%2015%2043h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C5%2039.2%205%2037.8%205%2035v-2Z%22%2F%3E%3Cpath%20fill%3D%22%23FF66B3%22%20d%3D%22M11.188%2026.125h.562v2.813h.563v-2.813h.562V29.5h.563v-3.375H14V29.5h.563v-3.375h.562v2.813h.563v-2.813h.562v2.25h.563v-1.688h.562v2.25h-.563v.563h-.562v.563h-1.125v.562h-2.813v-.563h-1.124V29.5h-.563v-.563h-.563v-2.25h.563v1.688h.563v-2.25Z%22%2F%3E%3Cpath%20fill%3D%22%23B3FFCC%22%20d%3D%22M13.438%2030.625H14v.563h1.125v2.25h1.125v-.563h.563V34h-1.688v1.125h-.563v1.125h.563v5.625h-.563v-5.063H14v-.562h-1.688v-1.125h.563v.563H14v-1.126h.563V31.75h-1.126v-1.125Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.9%22%20d%3D%22M16.25%2026.125h.563v2.25h-.563v-2.25Zm-5.625.563h.563v1.687h-.563v-1.688Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.9%22%20d%3D%22M17.938%2026.688h-.563v2.25h-.563v.562h-.562v.563h.563V29.5h.562v-.563h.563v-2.25Zm-6.188-.563h.563v2.813h-.563v-2.813Zm3.938%200h-.563v2.813h.563v-2.813Zm-2.813%200h.563V29.5h-.563v-3.375Zm1.688%200H14V29.5h.563v-3.375Zm.562%203.938h.563v.562h-.563v-.563Zm-.562.562H14v.563h.563v-.563Zm.562.563h.563v2.25h-.563v-2.25Zm2.25%201.687h-.563V34h.563v-1.125ZM15.125%2034h.563v1.125h-.563V34Zm0%202.25v-1.125h-.563v1.125h.563Zm0%200v5.625h.563V36.25h-.563Zm-2.25-1.125h.563v.563h-.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M15%2025.5h-2c-1.408%200-2.435%200-3.243.067-.803.065-1.347.193-1.8.424a4.5%204.5%200%200%200-1.967%201.966c-.23.453-.358.997-.424%201.8C5.5%2030.565%205.5%2031.592%205.5%2033v2c0%201.408%200%202.435.066%203.243.066.803.194%201.347.424%201.8a4.5%204.5%200%200%200%201.967%201.967c.453.23.997.358%201.8.424.808.066%201.835.066%203.243.066h2c1.408%200%202.435%200%203.243-.066.803-.066%201.347-.194%201.8-.424a4.5%204.5%200%200%200%201.966-1.967c.231-.453.359-.997.424-1.8.067-.808.067-1.835.067-3.243v-2c0-1.408%200-2.435-.067-3.243-.065-.803-.193-1.347-.424-1.8a4.5%204.5%200%200%200-1.966-1.966c-.453-.231-.997-.359-1.8-.424-.808-.067-1.835-.067-3.243-.067Zm-9.455%202.23C5%2028.8%205%2030.2%205%2033v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C8.8%2043%2010.2%2043%2013%2043h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C23%2039.2%2023%2037.8%2023%2035v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C19.2%2025%2017.8%2025%2015%2025h-2c-2.8%200-4.2%200-5.27.545a5%205%200%200%200-2.185%202.185Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23172D99%22%20d%3D%22M5%2013c0-2.8%200-4.2.545-5.27A5%205%200%200%201%207.73%205.545C8.8%205%2010.2%205%2013%205h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C23%208.8%2023%2010.2%2023%2013v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C19.2%2023%2017.8%2023%2015%2023h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C5%2019.2%205%2017.8%205%2015v-2Z%22%2F%3E%3Cpath%20fill%3D%22%2300A2D8%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2013.1H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h.9v1.8h-.9v-.9h-.9v-.9h-.9V14Zm2.7%202.7h.9v2.7H14v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%2300DE6F%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2012.2H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h-1.8v-.9Zm2.7%201.8h-.9V14h.9v.9Zm.9%201.8H14v-1.8h.9v1.8Zm0%200h.9v2.7h-.9v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23FFEB00%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2011.3H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h-1.8v-.9ZM14%2014h-.9v-.9h.9v.9Zm.9.9H14V14h.9v.9Zm.9%201.8h-.9v-1.8h.9v1.8Zm0%200h.9v2.7h-.9v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23FA0%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2010.4H8.6v.9h2.7v-.9Zm0%20.9H14v.9h.9v.9h.9v.9h.9v1.8h.9v3.6h-.9v-2.7h-.9v-1.8h-.9V14H14v-.9h-.9v-.9h-1.8v-.9Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23DD3D1C%22%20fill-rule%3D%22evenodd%22%20d%3D%22M12.2%209.5H8.6v.9h2.7v.9H14v.9h.9v.9h.9v.9h.9v1.8h.9v3.6h.9v-3.6h-.9V14h-.9v-.9h-.9v-.9h-.9v-.9H14v-.9h-1.8v-.9Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23C03078%22%20fill-rule%3D%22evenodd%22%20d%3D%22M12.2%208.6H8.6v.9h3.6v-.9Zm0%20.9H14v.9h-1.8v-.9Zm5.4%204.5h-.9v-.9h-.9v-.9h-.9v-.9H14v-.9h1.8v.9h.9v.9h.9V14Zm.9%201.8h-.9V14h.9v1.8Zm0%200h.9v3.6h-.9v-3.6Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M15%205.5h-2c-1.408%200-2.435%200-3.243.066-.803.066-1.347.194-1.8.424A4.5%204.5%200%200%200%205.99%207.957c-.23.453-.358.997-.424%201.8C5.5%2010.565%205.5%2011.592%205.5%2013v2c0%201.408%200%202.435.066%203.243.066.803.194%201.347.424%201.8a4.5%204.5%200%200%200%201.967%201.966c.453.231.997.359%201.8.424.808.067%201.835.067%203.243.067h2c1.408%200%202.435%200%203.243-.067.803-.065%201.347-.193%201.8-.424a4.5%204.5%200%200%200%201.966-1.966c.231-.453.359-.997.424-1.8.067-.808.067-1.835.067-3.243v-2c0-1.408%200-2.435-.067-3.243-.065-.803-.193-1.347-.424-1.8a4.5%204.5%200%200%200-1.966-1.967c-.453-.23-.997-.358-1.8-.424C17.435%205.5%2016.408%205.5%2015%205.5ZM5.545%207.73C5%208.8%205%2010.2%205%2013v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C8.8%2023%2010.2%2023%2013%2023h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C23%2019.2%2023%2017.8%2023%2015v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C19.2%205%2017.8%205%2015%205h-2c-2.8%200-4.2%200-5.27.545A5%205%200%200%200%205.545%207.73Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%2399B3FF%22%20d%3D%22M48%2036.5C48%2042.851%2042.851%2048%2036.5%2048S25%2042.851%2025%2036.5%2030.149%2025%2036.5%2025%2048%2030.149%2048%2036.5Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.5%2047.5c6.075%200%2011-4.925%2011-11s-4.925-11-11-11-11%204.925-11%2011%204.925%2011%2011%2011Zm0%20.5C42.851%2048%2048%2042.851%2048%2036.5S42.851%2025%2036.5%2025%2025%2030.149%2025%2036.5%2030.149%2048%2036.5%2048Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%237F91EB%22%20d%3D%22M46%2036.5a9.5%209.5%200%201%201-19%200%209.5%209.5%200%200%201%2019%200Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.5%2045.5a9%209%200%201%200%200-18%209%209%200%200%200%200%2018Zm0%20.5a9.5%209.5%200%201%200%200-19%209.5%209.5%200%200%200%200%2019Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.2%22%20fill-rule%3D%22evenodd%22%20d%3D%22M31.912%2037.037a.5.5%200%200%201-.139-.665l4.298-7.13a.5.5%200%200%201%20.856%200l4.297%207.13a.5.5%200%200%201-.137.664.5.5%200%200%201%20.119.698l-4.3%206.055a.5.5%200%200%201-.815%200l-4.297-6.055a.5.5%200%200%201%20.118-.697Zm.29.408%204.297%202.538%204.3-2.538-4.3%206.055-4.297-6.055Zm0-.815%204.297-7.13%204.297%207.13-4.297%202.54-4.297-2.54Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.55%22%20d%3D%22M36.499%2029.5v9.67l4.297-2.54-4.297-7.13Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22m36.499%2029.5-4.297%207.13%204.297%202.54V29.5Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.55%22%20d%3D%22M36.499%2039.983V43.5l4.3-6.055-4.3%202.538Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22M36.499%2043.5v-3.517l-4.297-2.538%204.297%206.055Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22m36.499%2039.17%204.297-2.54-4.297-1.953v4.493Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.6%22%20d%3D%22m32.202%2036.63%204.297%202.54v-4.493l-4.297%201.953Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23174299%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23001E59%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{h as default}; diff --git a/dist/assets/avalanche-KOMJD3XY-Dsn_JPR4.js b/dist/assets/avalanche-KOMJD3XY-Dsn_JPR4.js new file mode 100644 index 0000000..062a7a7 --- /dev/null +++ b/dist/assets/avalanche-KOMJD3XY-Dsn_JPR4.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23%205H5v18h18V5Z%22%2F%3E%3Cpath%20fill%3D%22%23E84142%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028c-7.513.008-14-6.487-14-14C0%206.196%206.043-.008%2014%200c7.95.008%2014%206.196%2014%2014%200%207.505-6.495%2013.992-14%2014Zm-3.971-7.436H7.315c-.57%200-.851%200-1.023-.11a.69.69%200%200%201-.313-.54c-.01-.202.13-.45.412-.944l6.7-11.809c.285-.501.43-.752.612-.845.195-.1.429-.1.625%200%20.182.093.326.344.611.845l1.377%202.404.007.013c.308.538.464.81.533%201.097a2.04%202.04%200%200%201%200%20.954c-.07.289-.224.564-.536%201.11l-3.52%206.22-.009.017c-.31.542-.467.817-.684%201.024a2.048%202.048%200%200%201-.835.485c-.285.079-.604.079-1.243.079Zm6.852%200h3.888c.574%200%20.862%200%201.034-.113a.687.687%200%200%200%20.313-.543c.01-.196-.128-.434-.398-.9a8.198%208.198%200%200%201-.028-.048l-1.948-3.332-.022-.037c-.274-.463-.412-.697-.59-.787a.684.684%200%200%200-.621%200c-.179.093-.323.337-.608.828l-1.94%203.331-.007.012c-.284.49-.426.735-.416.936.014.22.127.423.313.543.168.11.456.11%201.03.11Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E%0A";export{l as default}; diff --git a/dist/assets/bank-CB5SCWXF.js b/dist/assets/bank-CB5SCWXF.js new file mode 100644 index 0000000..8c63623 --- /dev/null +++ b/dist/assets/bank-CB5SCWXF.js @@ -0,0 +1,14 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const H=o` + `;export{H as bankSvg}; diff --git a/dist/assets/base-OAXLRA4F-CoYTVIiL.js b/dist/assets/base-OAXLRA4F-CoYTVIiL.js new file mode 100644 index 0000000..4fa5d94 --- /dev/null +++ b/dist/assets/base-OAXLRA4F-CoYTVIiL.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22%230052FF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.967%2023.86c5.445%200%209.86-4.415%209.86-9.86%200-5.445-4.415-9.86-9.86-9.86-5.166%200-9.403%203.974-9.825%209.03h14.63v1.642H4.142c.413%205.065%204.654%209.047%209.826%209.047Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/baseAccount-44UITRK7-CsjdbWCf.js b/dist/assets/baseAccount-44UITRK7-CsjdbWCf.js new file mode 100644 index 0000000..f54265a --- /dev/null +++ b/dist/assets/baseAccount-44UITRK7-CsjdbWCf.js @@ -0,0 +1 @@ +var C="data:image/svg+xml,%3Csvg%20width%3D%2296%22%20height%3D%2296%22%20viewBox%3D%220%200%2096%2096%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M0%207.584C0%204.98628%200%203.68742%200.489468%202.68829C0.958114%201.73167%201.73167%200.958114%202.68829%200.489468C3.68742%200%204.98628%200%207.584%200H88.416C91.0137%200%2092.3126%200%2093.3117%200.489468C94.2683%200.958114%2095.0419%201.73167%2095.5105%202.68829C96%203.68742%2096%204.98628%2096%207.584V88.416C96%2091.0137%2096%2092.3126%2095.5105%2093.3117C95.0419%2094.2683%2094.2683%2095.0419%2093.3117%2095.5105C92.3126%2096%2091.0137%2096%2088.416%2096H7.584C4.98628%2096%203.68742%2096%202.68829%2095.5105C1.73167%2095.0419%200.958114%2094.2683%200.489468%2093.3117C0%2092.3126%200%2091.0137%200%2088.416V7.584Z%22%20fill%3D%22%230000FF%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/dist/assets/basic-knqDsQCx.js b/dist/assets/basic-knqDsQCx.js new file mode 100644 index 0000000..3cb902f --- /dev/null +++ b/dist/assets/basic-knqDsQCx.js @@ -0,0 +1,2124 @@ +import{k as N,o as G,l as q,m as O,n as c,y as M,D as z,O as ee,G as j,E as te,R as U,P as Me,u as K,Q as k,U as ft,I as Ci,W as pt,C as Zt,v as yn,T as en,B as Xe,M as oi,V as ri,w as Ne,L as xn,q as Ri}from"./core-Cmtj-tL6.js";import{n as u,c as P,o as E,r as _,U as he,e as $i,f as _i,a as Ii}from"./index-KCwUw1XR.js";import{n as Ei}from"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const Wi=N` + :host { + position: relative; + background-color: var(--wui-color-gray-glass-002); + display: flex; + justify-content: center; + align-items: center; + width: var(--local-size); + height: var(--local-size); + border-radius: inherit; + border-radius: var(--local-border-radius); + } + + :host > wui-flex { + overflow: hidden; + border-radius: inherit; + border-radius: var(--local-border-radius); + } + + :host::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-gray-glass-010); + pointer-events: none; + } + + :host([name='Extension'])::after { + border: 1px solid var(--wui-color-accent-glass-010); + } + + :host([data-wallet-icon='allWallets']) { + background-color: var(--wui-all-wallets-bg-100); + } + + :host([data-wallet-icon='allWallets'])::after { + border: 1px solid var(--wui-color-accent-glass-010); + } + + wui-icon[data-parent-size='inherit'] { + width: 75%; + height: 75%; + align-items: center; + } + + wui-icon[data-parent-size='sm'] { + width: 18px; + height: 18px; + } + + wui-icon[data-parent-size='md'] { + width: 24px; + height: 24px; + } + + wui-icon[data-parent-size='lg'] { + width: 42px; + height: 42px; + } + + wui-icon[data-parent-size='full'] { + width: 100%; + height: 100%; + } + + :host > wui-icon-box { + position: absolute; + overflow: hidden; + right: -1px; + bottom: -2px; + z-index: 1; + border: 2px solid var(--wui-color-bg-150, #1e1f1f); + padding: 1px; + } +`;var _e=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let fe=class extends O{constructor(){super(...arguments),this.size="md",this.name="",this.installed=!1,this.badgeSize="xs"}render(){let e="xxs";return this.size==="lg"?e="m":this.size==="md"?e="xs":e="xxs",this.style.cssText=` + --local-border-radius: var(--wui-border-radius-${e}); + --local-size: var(--wui-wallet-image-size-${this.size}); + `,this.walletIcon&&(this.dataset.walletIcon=this.walletIcon),c` + ${this.templateVisual()} + `}templateVisual(){return this.imageSrc?c``:this.walletIcon?c``:c``}};fe.styles=[G,q,Wi];_e([u()],fe.prototype,"size",void 0);_e([u()],fe.prototype,"name",void 0);_e([u()],fe.prototype,"imageSrc",void 0);_e([u()],fe.prototype,"walletIcon",void 0);_e([u({type:Boolean})],fe.prototype,"installed",void 0);_e([u()],fe.prototype,"badgeSize",void 0);fe=_e([P("wui-wallet-image")],fe);const Si=N` + :host { + position: relative; + border-radius: var(--wui-border-radius-xxs); + width: 40px; + height: 40px; + overflow: hidden; + background: var(--wui-color-gray-glass-002); + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; + gap: var(--wui-spacing-4xs); + padding: 3.75px !important; + } + + :host::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-gray-glass-010); + pointer-events: none; + } + + :host > wui-wallet-image { + width: 14px; + height: 14px; + border-radius: var(--wui-border-radius-5xs); + } + + :host > wui-flex { + padding: 2px; + position: fixed; + overflow: hidden; + left: 34px; + bottom: 8px; + background: var(--dark-background-150, #1e1f1f); + border-radius: 50%; + z-index: 2; + display: flex; + } +`;var ai=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const It=4;let Ze=class extends O{constructor(){super(...arguments),this.walletImages=[]}render(){const e=this.walletImages.lengthc` + + `)} + ${e?[...Array(It-this.walletImages.length)].map(()=>c` `):null} + + + `}};Ze.styles=[q,Si];ai([u({type:Array})],Ze.prototype,"walletImages",void 0);Ze=ai([P("wui-all-wallets-image")],Ze);const Ti=N` + button { + column-gap: var(--wui-spacing-s); + padding: 7px var(--wui-spacing-l) 7px var(--wui-spacing-xs); + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + color: var(--wui-color-fg-100); + } + + button > wui-text:nth-child(2) { + display: flex; + flex: 1; + } + + button:disabled { + background-color: var(--wui-color-gray-glass-015); + color: var(--wui-color-gray-glass-015); + } + + button:disabled > wui-tag { + background-color: var(--wui-color-gray-glass-010); + color: var(--wui-color-fg-300); + } + + wui-icon { + color: var(--wui-color-fg-200) !important; + } +`;var Y=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let F=class extends O{constructor(){super(...arguments),this.walletImages=[],this.imageSrc="",this.name="",this.tabIdx=void 0,this.installed=!1,this.disabled=!1,this.showAllWallets=!1,this.loading=!1,this.loadingSpinnerColor="accent-100"}render(){return c` + + `}templateAllWallets(){return this.showAllWallets&&this.imageSrc?c` `:this.showAllWallets&&this.walletIcon?c` `:null}templateWalletImage(){return!this.showAllWallets&&this.imageSrc?c``:!this.showAllWallets&&!this.imageSrc?c``:null}templateStatus(){return this.loading?c``:this.tagLabel&&this.tagVariant?c`${this.tagLabel}`:this.icon?c``:null}};F.styles=[q,G,Ti];Y([u({type:Array})],F.prototype,"walletImages",void 0);Y([u()],F.prototype,"imageSrc",void 0);Y([u()],F.prototype,"name",void 0);Y([u()],F.prototype,"tagLabel",void 0);Y([u()],F.prototype,"tagVariant",void 0);Y([u()],F.prototype,"icon",void 0);Y([u()],F.prototype,"walletIcon",void 0);Y([u()],F.prototype,"tabIdx",void 0);Y([u({type:Boolean})],F.prototype,"installed",void 0);Y([u({type:Boolean})],F.prototype,"disabled",void 0);Y([u({type:Boolean})],F.prototype,"showAllWallets",void 0);Y([u({type:Boolean})],F.prototype,"loading",void 0);Y([u({type:String})],F.prototype,"loadingSpinnerColor",void 0);F=Y([P("wui-list-wallet")],F);var Ae=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ye=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.count=z.state.count,this.filteredCount=z.state.filteredWallets.length,this.isFetchingRecommendedWallets=z.state.isFetchingRecommendedWallets,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),z.subscribeKey("count",e=>this.count=e),z.subscribeKey("filteredWallets",e=>this.filteredCount=e.length),z.subscribeKey("isFetchingRecommendedWallets",e=>this.isFetchingRecommendedWallets=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.find(l=>l.id==="walletConnect"),{allWallets:n}=ee.state;if(!e||n==="HIDE"||n==="ONLY_MOBILE"&&!j.isMobile())return null;const i=z.state.featured.length,o=this.count+i,t=o<10?o:Math.floor(o/10)*10,a=this.filteredCount>0?this.filteredCount:t;let s=`${a}`;return this.filteredCount>0?s=`${this.filteredCount}`:a + `}onAllWallets(){te.sendEvent({type:"track",event:"CLICK_ALL_WALLETS"}),U.push("AllWallets")}};Ae([u()],ye.prototype,"tabIdx",void 0);Ae([_()],ye.prototype,"connectors",void 0);Ae([_()],ye.prototype,"count",void 0);Ae([_()],ye.prototype,"filteredCount",void 0);Ae([_()],ye.prototype,"isFetchingRecommendedWallets",void 0);ye=Ae([P("w3m-all-wallets-widget")],ye);var sn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let et=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(n=>n.type==="ANNOUNCED");return e?.length?c` + + ${e.filter(Me.showConnector).map(n=>c` + this.onConnector(n)} + tagVariant="success" + tagLabel="installed" + data-testid=${`wallet-selector-${n.id}`} + .installed=${!0} + tabIdx=${E(this.tabIdx)} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnector(e){e.id==="walletConnect"?j.isMobile()?U.push("AllWallets"):U.push("ConnectingWalletConnect"):U.push("ConnectingExternal",{connector:e})}};sn([u()],et.prototype,"tabIdx",void 0);sn([_()],et.prototype,"connectors",void 0);et=sn([P("w3m-connect-announced-widget")],et);var gt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ue=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.loading=!1,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e)),j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const{customWallets:e}=ee.state;if(!e?.length)return this.style.cssText="display: none",null;const n=this.filterOutDuplicateWallets(e);return c` + ${n.map(i=>c` + this.onConnectWallet(i)} + data-testid=${`wallet-selector-${i.id}`} + tabIdx=${E(this.tabIdx)} + ?loading=${this.loading} + > + + `)} + `}filterOutDuplicateWallets(e){const n=ft.getRecentWallets(),i=this.connectors.map(s=>s.info?.rdns).filter(Boolean),o=n.map(s=>s.rdns).filter(Boolean),t=i.concat(o);if(t.includes("io.metamask.mobile")&&j.isMobile()){const s=t.indexOf("io.metamask.mobile");t[s]="io.metamask"}return e.filter(s=>!t.includes(String(s?.rdns)))}onConnectWallet(e){this.loading||U.push("ConnectingWalletConnect",{wallet:e})}};gt([u()],Ue.prototype,"tabIdx",void 0);gt([_()],Ue.prototype,"connectors",void 0);gt([_()],Ue.prototype,"loading",void 0);Ue=gt([P("w3m-connect-custom-widget")],Ue);var ln=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let tt=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const i=this.connectors.filter(o=>o.type==="EXTERNAL").filter(Me.showConnector).filter(o=>o.id!==Ci.CONNECTOR_ID.COINBASE_SDK);return i?.length?c` + + ${i.map(o=>c` + this.onConnector(o)} + tabIdx=${E(this.tabIdx)} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnector(e){U.push("ConnectingExternal",{connector:e})}};ln([u()],tt.prototype,"tabIdx",void 0);ln([_()],tt.prototype,"connectors",void 0);tt=ln([P("w3m-connect-external-widget")],tt);var cn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let nt=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.wallets=[]}render(){return this.wallets.length?c` + + ${this.wallets.map(e=>c` + this.onConnectWallet(e)} + tabIdx=${E(this.tabIdx)} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnectWallet(e){M.selectWalletConnector(e)}};cn([u()],nt.prototype,"tabIdx",void 0);cn([u()],nt.prototype,"wallets",void 0);nt=cn([P("w3m-connect-featured-widget")],nt);var un=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let it=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.connectors=[]}render(){const e=this.connectors.filter(Me.showConnector);return e.length===0?(this.style.cssText="display: none",null):c` + + ${e.map(n=>c` + this.onConnector(n)} + tabIdx=${E(this.tabIdx)} + > + + `)} + + `}onConnector(e){M.setActiveConnector(e),U.push("ConnectingExternal",{connector:e})}};un([u()],it.prototype,"tabIdx",void 0);un([u()],it.prototype,"connectors",void 0);it=un([P("w3m-connect-injected-widget")],it);var dn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ot=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(n=>n.type==="MULTI_CHAIN"&&n.name!=="WalletConnect");return e?.length?c` + + ${e.map(n=>c` + this.onConnector(n)} + tabIdx=${E(this.tabIdx)} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnector(e){M.setActiveConnector(e),U.push("ConnectingMultiChain")}};dn([u()],ot.prototype,"tabIdx",void 0);dn([_()],ot.prototype,"connectors",void 0);ot=dn([P("w3m-connect-multi-chain-widget")],ot);var wt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let qe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.loading=!1,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e)),j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const n=ft.getRecentWallets().filter(i=>!pt.isExcluded(i)).filter(i=>!this.hasWalletConnector(i)).filter(i=>this.isWalletCompatibleWithCurrentChain(i));return n.length?c` + + ${n.map(i=>c` + this.onConnectWallet(i)} + tagLabel="recent" + tagVariant="shade" + tabIdx=${E(this.tabIdx)} + ?loading=${this.loading} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnectWallet(e){this.loading||M.selectWalletConnector(e)}hasWalletConnector(e){return this.connectors.some(n=>n.id===e.id||n.name===e.name)}isWalletCompatibleWithCurrentChain(e){const n=Zt.state.activeChain;return n&&e.chains?e.chains.some(i=>{const o=i.split(":")[0];return n===o}):!0}};wt([u()],qe.prototype,"tabIdx",void 0);wt([_()],qe.prototype,"connectors",void 0);wt([_()],qe.prototype,"loading",void 0);qe=wt([P("w3m-connect-recent-widget")],qe);var mt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Fe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.wallets=[],this.loading=!1,j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const{connectors:e}=M.state,{customWallets:n,featuredWalletIds:i}=ee.state,o=ft.getRecentWallets(),t=e.find(w=>w.id==="walletConnect"),s=e.filter(w=>w.type==="INJECTED"||w.type==="ANNOUNCED"||w.type==="MULTI_CHAIN").filter(w=>w.name!=="Browser Wallet");if(!t)return null;if(i||n||!this.wallets.length)return this.style.cssText="display: none",null;const l=s.length+o.length,d=Math.max(0,2-l),h=pt.filterOutDuplicateWallets(this.wallets).slice(0,d);return h.length?c` + + ${h.map(w=>c` + this.onConnectWallet(w)} + tabIdx=${E(this.tabIdx)} + ?loading=${this.loading} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnectWallet(e){if(this.loading)return;const n=M.getConnector(e.id,e.rdns);n?U.push("ConnectingExternal",{connector:n}):U.push("ConnectingWalletConnect",{wallet:e})}};mt([u()],Fe.prototype,"tabIdx",void 0);mt([u()],Fe.prototype,"wallets",void 0);mt([_()],Fe.prototype,"loading",void 0);Fe=mt([P("w3m-connect-recommended-widget")],Fe);var bt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ve=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.connectorImages=yn.state.connectorImages,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),yn.subscribeKey("connectorImages",e=>this.connectorImages=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){if(j.isMobile())return this.style.cssText="display: none",null;const e=this.connectors.find(i=>i.id==="walletConnect");if(!e)return this.style.cssText="display: none",null;const n=e.imageUrl||this.connectorImages[e?.imageId??""];return c` + this.onConnector(e)} + tagLabel="qr code" + tagVariant="main" + tabIdx=${E(this.tabIdx)} + data-testid="wallet-selector-walletconnect" + > + + `}onConnector(e){M.setActiveConnector(e),U.push("ConnectingWalletConnect")}};bt([u()],Ve.prototype,"tabIdx",void 0);bt([_()],Ve.prototype,"connectors",void 0);bt([_()],Ve.prototype,"connectorImages",void 0);Ve=bt([P("w3m-connect-walletconnect-widget")],Ve);const Bi=N` + :host { + margin-top: var(--wui-spacing-3xs); + } + wui-separator { + margin: var(--wui-spacing-m) calc(var(--wui-spacing-m) * -1) var(--wui-spacing-xs) + calc(var(--wui-spacing-m) * -1); + width: calc(100% + var(--wui-spacing-s) * 2); + } +`;var Ke=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let xe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.recommended=z.state.recommended,this.featured=z.state.featured,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),z.subscribeKey("recommended",e=>this.recommended=e),z.subscribeKey("featured",e=>this.featured=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` + ${this.connectorListTemplate()} + `}connectorListTemplate(){const{custom:e,recent:n,announced:i,injected:o,multiChain:t,recommended:a,featured:s,external:l}=Me.getConnectorsByType(this.connectors,this.recommended,this.featured);return Me.getConnectorTypeOrder({custom:e,recent:n,announced:i,injected:o,multiChain:t,recommended:a,featured:s,external:l}).map(h=>{switch(h){case"injected":return c` + ${t.length?c``:null} + ${i.length?c``:null} + ${o.length?c``:null} + `;case"walletConnect":return c``;case"recent":return c``;case"featured":return c``;case"custom":return c``;case"external":return c``;case"recommended":return c``;default:return console.warn(`Unknown connector type: ${h}`),null}})}};xe.styles=Bi;Ke([u()],xe.prototype,"tabIdx",void 0);Ke([_()],xe.prototype,"connectors",void 0);Ke([_()],xe.prototype,"recommended",void 0);Ke([_()],xe.prototype,"featured",void 0);xe=Ke([P("w3m-connector-list")],xe);const Pi=N` + :host { + display: inline-flex; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-3xl); + padding: var(--wui-spacing-3xs); + position: relative; + height: 36px; + min-height: 36px; + overflow: hidden; + } + + :host::before { + content: ''; + position: absolute; + pointer-events: none; + top: 4px; + left: 4px; + display: block; + width: var(--local-tab-width); + height: 28px; + border-radius: var(--wui-border-radius-3xl); + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + transform: translateX(calc(var(--local-tab) * var(--local-tab-width))); + transition: transform var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color, opacity; + } + + :host([data-type='flex'])::before { + left: 3px; + transform: translateX(calc((var(--local-tab) * 34px) + (var(--local-tab) * 4px))); + } + + :host([data-type='flex']) { + display: flex; + padding: 0px 0px 0px 12px; + gap: 4px; + } + + :host([data-type='flex']) > button > wui-text { + position: absolute; + left: 18px; + opacity: 0; + } + + button[data-active='true'] > wui-icon, + button[data-active='true'] > wui-text { + color: var(--wui-color-fg-100); + } + + button[data-active='false'] > wui-icon, + button[data-active='false'] > wui-text { + color: var(--wui-color-fg-200); + } + + button[data-active='true']:disabled, + button[data-active='false']:disabled { + background-color: transparent; + opacity: 0.5; + cursor: not-allowed; + } + + button[data-active='true']:disabled > wui-text { + color: var(--wui-color-fg-200); + } + + button[data-active='false']:disabled > wui-text { + color: var(--wui-color-fg-300); + } + + button > wui-icon, + button > wui-text { + pointer-events: none; + transition: color var(--wui-e ase-out-power-1) var(--wui-duration-md); + will-change: color; + } + + button { + width: var(--local-tab-width); + transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color; + } + + :host([data-type='flex']) > button { + width: 34px; + position: relative; + display: flex; + justify-content: flex-start; + } + + button:hover:enabled, + button:active:enabled { + background-color: transparent !important; + } + + button:hover:enabled > wui-icon, + button:active:enabled > wui-icon { + transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); + color: var(--wui-color-fg-125); + } + + button:hover:enabled > wui-text, + button:active:enabled > wui-text { + transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); + color: var(--wui-color-fg-125); + } + + button { + border-radius: var(--wui-border-radius-3xl); + } +`;var ve=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let re=class extends O{constructor(){super(...arguments),this.tabs=[],this.onTabChange=()=>null,this.buttons=[],this.disabled=!1,this.localTabWidth="100px",this.activeTab=0,this.isDense=!1}render(){return this.isDense=this.tabs.length>3,this.style.cssText=` + --local-tab: ${this.activeTab}; + --local-tab-width: ${this.localTabWidth}; + `,this.dataset.type=this.isDense?"flex":"block",this.tabs.map((e,n)=>{const i=n===this.activeTab;return c` + + `})}firstUpdated(){this.shadowRoot&&this.isDense&&(this.buttons=[...this.shadowRoot.querySelectorAll("button")],setTimeout(()=>{this.animateTabs(0,!0)},0))}iconTemplate(e){return e.icon?c``:null}onTabClick(e){this.buttons&&this.animateTabs(e,!1),this.activeTab=e,this.onTabChange(e)}animateTabs(e,n){const i=this.buttons[this.activeTab],o=this.buttons[e],t=i?.querySelector("wui-text"),a=o?.querySelector("wui-text"),s=o?.getBoundingClientRect(),l=a?.getBoundingClientRect();i&&t&&!n&&e!==this.activeTab&&(t.animate([{opacity:0}],{duration:50,easing:"ease",fill:"forwards"}),i.animate([{width:"34px"}],{duration:500,easing:"ease",fill:"forwards"})),o&&s&&l&&a&&(e!==this.activeTab||n)&&(this.localTabWidth=`${Math.round(s.width+l.width)+6}px`,o.animate([{width:`${s.width+l.width}px`}],{duration:n?0:500,fill:"forwards",easing:"ease"}),a.animate([{opacity:1}],{duration:n?0:125,delay:n?0:200,fill:"forwards",easing:"ease"}))}};re.styles=[q,G,Pi];ve([u({type:Array})],re.prototype,"tabs",void 0);ve([u()],re.prototype,"onTabChange",void 0);ve([u({type:Array})],re.prototype,"buttons",void 0);ve([u({type:Boolean})],re.prototype,"disabled",void 0);ve([u()],re.prototype,"localTabWidth",void 0);ve([_()],re.prototype,"activeTab",void 0);ve([_()],re.prototype,"isDense",void 0);re=ve([P("wui-tabs")],re);var hn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let rt=class extends O{constructor(){super(...arguments),this.platformTabs=[],this.unsubscribe=[],this.platforms=[],this.onSelectPlatfrom=void 0}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.generateTabs();return c` + + + + `}generateTabs(){const e=this.platforms.map(n=>n==="browser"?{label:"Browser",icon:"extension",platform:"browser"}:n==="mobile"?{label:"Mobile",icon:"mobile",platform:"mobile"}:n==="qrcode"?{label:"Mobile",icon:"mobile",platform:"qrcode"}:n==="web"?{label:"Webapp",icon:"browser",platform:"web"}:n==="desktop"?{label:"Desktop",icon:"desktop",platform:"desktop"}:{label:"Browser",icon:"extension",platform:"unsupported"});return this.platformTabs=e.map(({platform:n})=>n),e}onTabChange(e){const n=this.platformTabs[e];n&&this.onSelectPlatfrom?.(n)}};hn([u({type:Array})],rt.prototype,"platforms",void 0);hn([u()],rt.prototype,"onSelectPlatfrom",void 0);rt=hn([P("w3m-connecting-header")],rt);const Li=N` + :host { + width: var(--local-width); + position: relative; + } + + button { + border: none; + border-radius: var(--local-border-radius); + width: var(--local-width); + white-space: nowrap; + } + + /* -- Sizes --------------------------------------------------- */ + button[data-size='md'] { + padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-l); + height: 36px; + } + + button[data-size='md'][data-icon-left='true'][data-icon-right='false'] { + padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-s); + } + + button[data-size='md'][data-icon-right='true'][data-icon-left='false'] { + padding: 8.2px var(--wui-spacing-s) 9px var(--wui-spacing-l); + } + + button[data-size='lg'] { + padding: var(--wui-spacing-m) var(--wui-spacing-2l); + height: 48px; + } + + /* -- Variants --------------------------------------------------------- */ + button[data-variant='main'] { + background-color: var(--wui-color-accent-100); + color: var(--wui-color-inverse-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='inverse'] { + background-color: var(--wui-color-inverse-100); + color: var(--wui-color-inverse-000); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='accent'] { + background-color: var(--wui-color-accent-glass-010); + color: var(--wui-color-accent-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + button[data-variant='accent-error'] { + background: var(--wui-color-error-glass-015); + color: var(--wui-color-error-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-error-glass-010); + } + + button[data-variant='accent-success'] { + background: var(--wui-color-success-glass-015); + color: var(--wui-color-success-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-success-glass-010); + } + + button[data-variant='neutral'] { + background: transparent; + color: var(--wui-color-fg-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + /* -- Focus states --------------------------------------------------- */ + button[data-variant='main']:focus-visible:enabled { + background-color: var(--wui-color-accent-090); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='inverse']:focus-visible:enabled { + background-color: var(--wui-color-inverse-100); + box-shadow: + inset 0 0 0 1px var(--wui-color-gray-glass-010), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='accent']:focus-visible:enabled { + background-color: var(--wui-color-accent-glass-010); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='accent-error']:focus-visible:enabled { + background: var(--wui-color-error-glass-015); + box-shadow: + inset 0 0 0 1px var(--wui-color-error-100), + 0 0 0 4px var(--wui-color-error-glass-020); + } + button[data-variant='accent-success']:focus-visible:enabled { + background: var(--wui-color-success-glass-015); + box-shadow: + inset 0 0 0 1px var(--wui-color-success-100), + 0 0 0 4px var(--wui-color-success-glass-020); + } + button[data-variant='neutral']:focus-visible:enabled { + background: var(--wui-color-gray-glass-005); + box-shadow: + inset 0 0 0 1px var(--wui-color-gray-glass-010), + 0 0 0 4px var(--wui-color-gray-glass-002); + } + + /* -- Hover & Active states ----------------------------------------------------------- */ + @media (hover: hover) and (pointer: fine) { + button[data-variant='main']:hover:enabled { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:active:enabled { + background-color: var(--wui-color-accent-080); + } + + button[data-variant='accent']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + + button[data-variant='accent']:active:enabled { + background-color: var(--wui-color-accent-glass-020); + } + + button[data-variant='accent-error']:hover:enabled { + background: var(--wui-color-error-glass-020); + color: var(--wui-color-error-100); + } + + button[data-variant='accent-error']:active:enabled { + background: var(--wui-color-error-glass-030); + color: var(--wui-color-error-100); + } + + button[data-variant='accent-success']:hover:enabled { + background: var(--wui-color-success-glass-020); + color: var(--wui-color-success-100); + } + + button[data-variant='accent-success']:active:enabled { + background: var(--wui-color-success-glass-030); + color: var(--wui-color-success-100); + } + + button[data-variant='neutral']:hover:enabled { + background: var(--wui-color-gray-glass-002); + } + + button[data-variant='neutral']:active:enabled { + background: var(--wui-color-gray-glass-005); + } + + button[data-size='lg'][data-icon-left='true'][data-icon-right='false'] { + padding-left: var(--wui-spacing-m); + } + + button[data-size='lg'][data-icon-right='true'][data-icon-left='false'] { + padding-right: var(--wui-spacing-m); + } + } + + /* -- Disabled state --------------------------------------------------- */ + button:disabled { + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + color: var(--wui-color-gray-glass-020); + cursor: not-allowed; + } + + button > wui-text { + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + opacity: var(--local-opacity-100); + } + + ::slotted(*) { + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + opacity: var(--local-opacity-100); + } + + wui-loading-spinner { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + opacity: var(--local-opacity-000); + } +`;var ae=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const Cn={main:"inverse-100",inverse:"inverse-000",accent:"accent-100","accent-error":"error-100","accent-success":"success-100",neutral:"fg-100",disabled:"gray-glass-020"},Oi={lg:"paragraph-600",md:"small-600"},Ai={lg:"md",md:"md"};let Q=class extends O{constructor(){super(...arguments),this.size="lg",this.disabled=!1,this.fullWidth=!1,this.loading=!1,this.variant="main",this.hasIconLeft=!1,this.hasIconRight=!1,this.borderRadius="m"}render(){this.style.cssText=` + --local-width: ${this.fullWidth?"100%":"auto"}; + --local-opacity-100: ${this.loading?0:1}; + --local-opacity-000: ${this.loading?1:0}; + --local-border-radius: var(--wui-border-radius-${this.borderRadius}); + `;const e=this.textVariant??Oi[this.size];return c` + + `}handleSlotLeftChange(){this.hasIconLeft=!0}handleSlotRightChange(){this.hasIconRight=!0}loadingTemplate(){if(this.loading){const e=Ai[this.size],n=this.disabled?Cn.disabled:Cn[this.variant];return c``}return c``}};Q.styles=[q,G,Li];ae([u()],Q.prototype,"size",void 0);ae([u({type:Boolean})],Q.prototype,"disabled",void 0);ae([u({type:Boolean})],Q.prototype,"fullWidth",void 0);ae([u({type:Boolean})],Q.prototype,"loading",void 0);ae([u()],Q.prototype,"variant",void 0);ae([u({type:Boolean})],Q.prototype,"hasIconLeft",void 0);ae([u({type:Boolean})],Q.prototype,"hasIconRight",void 0);ae([u()],Q.prototype,"borderRadius",void 0);ae([u()],Q.prototype,"textVariant",void 0);Q=ae([P("wui-button")],Q);const ji=N` + button { + padding: var(--wui-spacing-4xs) var(--wui-spacing-xxs); + border-radius: var(--wui-border-radius-3xs); + background-color: transparent; + color: var(--wui-color-accent-100); + } + + button:disabled { + background-color: transparent; + color: var(--wui-color-gray-glass-015); + } + + button:hover { + background-color: var(--wui-color-gray-glass-005); + } +`;var vt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Be=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.disabled=!1,this.color="inherit"}render(){return c` + + `}};Be.styles=[q,G,ji];vt([u()],Be.prototype,"tabIdx",void 0);vt([u({type:Boolean})],Be.prototype,"disabled",void 0);vt([u()],Be.prototype,"color",void 0);Be=vt([P("wui-link")],Be);const ki=N` + :host { + display: block; + width: var(--wui-box-size-md); + height: var(--wui-box-size-md); + } + + svg { + width: var(--wui-box-size-md); + height: var(--wui-box-size-md); + } + + rect { + fill: none; + stroke: var(--wui-color-accent-100); + stroke-width: 4px; + stroke-linecap: round; + animation: dash 1s linear infinite; + } + + @keyframes dash { + to { + stroke-dashoffset: 0px; + } + } +`;var si=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let at=class extends O{constructor(){super(...arguments),this.radius=36}render(){return this.svgLoaderTemplate()}svgLoaderTemplate(){const e=this.radius>50?50:this.radius,i=36-e,o=116+i,t=245+i,a=360+i*1.75;return c` + + + + `}};at.styles=[q,ki];si([u({type:Number})],at.prototype,"radius",void 0);at=si([P("wui-loading-thumbnail")],at);const Di=N` + button { + border: none; + border-radius: var(--wui-border-radius-3xl); + } + + button[data-variant='main'] { + background-color: var(--wui-color-accent-100); + color: var(--wui-color-inverse-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='accent'] { + background-color: var(--wui-color-accent-glass-010); + color: var(--wui-color-accent-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + button[data-variant='gray'] { + background-color: transparent; + color: var(--wui-color-fg-200); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='shade'] { + background-color: transparent; + color: var(--wui-color-accent-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-size='sm'] { + height: 32px; + padding: 0 var(--wui-spacing-s); + } + + button[data-size='md'] { + height: 40px; + padding: 0 var(--wui-spacing-l); + } + + button[data-size='sm'] > wui-image { + width: 16px; + height: 16px; + } + + button[data-size='md'] > wui-image { + width: 24px; + height: 24px; + } + + button[data-size='sm'] > wui-icon { + width: 12px; + height: 12px; + } + + button[data-size='md'] > wui-icon { + width: 14px; + height: 14px; + } + + wui-image { + border-radius: var(--wui-border-radius-3xl); + overflow: hidden; + } + + button.disabled > wui-icon, + button.disabled > wui-image { + filter: grayscale(1); + } + + button[data-variant='main'] > wui-image { + box-shadow: inset 0 0 0 1px var(--wui-color-accent-090); + } + + button[data-variant='shade'] > wui-image, + button[data-variant='gray'] > wui-image { + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + @media (hover: hover) and (pointer: fine) { + button[data-variant='main']:focus-visible { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:hover:enabled { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:active:enabled { + background-color: var(--wui-color-accent-080); + } + + button[data-variant='accent']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + + button[data-variant='accent']:active:enabled { + background-color: var(--wui-color-accent-glass-020); + } + + button[data-variant='shade']:focus-visible, + button[data-variant='gray']:focus-visible, + button[data-variant='shade']:hover, + button[data-variant='gray']:hover { + background-color: var(--wui-color-gray-glass-002); + } + + button[data-variant='gray']:active, + button[data-variant='shade']:active { + background-color: var(--wui-color-gray-glass-005); + } + } + + button.disabled { + color: var(--wui-color-gray-glass-020); + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + pointer-events: none; + } +`;var Ie=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let pe=class extends O{constructor(){super(...arguments),this.variant="accent",this.imageSrc="",this.disabled=!1,this.icon="externalLink",this.size="md",this.text=""}render(){const e=this.size==="sm"?"small-600":"paragraph-600";return c` + + `}};pe.styles=[q,G,Di];Ie([u()],pe.prototype,"variant",void 0);Ie([u()],pe.prototype,"imageSrc",void 0);Ie([u({type:Boolean})],pe.prototype,"disabled",void 0);Ie([u()],pe.prototype,"icon",void 0);Ie([u()],pe.prototype,"size",void 0);Ie([u()],pe.prototype,"text",void 0);pe=Ie([P("wui-chip-button")],pe);const zi=N` + wui-flex { + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + } +`;var yt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Pe=class extends O{constructor(){super(...arguments),this.disabled=!1,this.label="",this.buttonLabel=""}render(){return c` + + ${this.label} + + + + `}};Pe.styles=[q,G,zi];yt([u({type:Boolean})],Pe.prototype,"disabled",void 0);yt([u()],Pe.prototype,"label",void 0);yt([u()],Pe.prototype,"buttonLabel",void 0);Pe=yt([P("wui-cta-button")],Pe);const Ni=N` + :host { + display: block; + padding: 0 var(--wui-spacing-xl) var(--wui-spacing-xl); + } +`;var li=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let st=class extends O{constructor(){super(...arguments),this.wallet=void 0}render(){if(!this.wallet)return this.style.display="none",null;const{name:e,app_store:n,play_store:i,chrome_store:o,homepage:t}=this.wallet,a=j.isMobile(),s=j.isIos(),l=j.isAndroid(),d=[n,i,t,o].filter(Boolean).length>1,h=he.getTruncateString({string:e,charsStart:12,charsEnd:0,truncate:"end"});return d&&!a?c` + U.push("Downloads",{wallet:this.wallet})} + > + `:!d&&t?c` + + `:n&&s?c` + + `:i&&l?c` + + `:(this.style.display="none",null)}onAppStore(){this.wallet?.app_store&&j.openHref(this.wallet.app_store,"_blank")}onPlayStore(){this.wallet?.play_store&&j.openHref(this.wallet.play_store,"_blank")}onHomePage(){this.wallet?.homepage&&j.openHref(this.wallet.homepage,"_blank")}};st.styles=[Ni];li([u({type:Object})],st.prototype,"wallet",void 0);st=li([P("w3m-mobile-download-links")],st);const Mi=N` + @keyframes shake { + 0% { + transform: translateX(0); + } + 25% { + transform: translateX(3px); + } + 50% { + transform: translateX(-3px); + } + 75% { + transform: translateX(3px); + } + 100% { + transform: translateX(0); + } + } + + wui-flex:first-child:not(:only-child) { + position: relative; + } + + wui-loading-thumbnail { + position: absolute; + } + + wui-icon-box { + position: absolute; + right: calc(var(--wui-spacing-3xs) * -1); + bottom: calc(var(--wui-spacing-3xs) * -1); + opacity: 0; + transform: scale(0.5); + transition-property: opacity, transform; + transition-duration: var(--wui-duration-lg); + transition-timing-function: var(--wui-ease-out-power-2); + will-change: opacity, transform; + } + + wui-text[align='center'] { + width: 100%; + padding: 0px var(--wui-spacing-l); + } + + [data-error='true'] wui-icon-box { + opacity: 1; + transform: scale(1); + } + + [data-error='true'] > wui-flex:first-child { + animation: shake 250ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + } + + [data-retry='false'] wui-link { + display: none; + } + + [data-retry='true'] wui-link { + display: block; + opacity: 1; + } +`;var se=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};class V extends O{constructor(){super(),this.wallet=U.state.data?.wallet,this.connector=U.state.data?.connector,this.timeout=void 0,this.secondaryBtnIcon="refresh",this.onConnect=void 0,this.onRender=void 0,this.onAutoConnect=void 0,this.isWalletConnect=!0,this.unsubscribe=[],this.imageSrc=K.getWalletImage(this.wallet)??K.getConnectorImage(this.connector),this.name=this.wallet?.name??this.connector?.name??"Wallet",this.isRetrying=!1,this.uri=k.state.wcUri,this.error=k.state.wcError,this.ready=!1,this.showRetry=!1,this.secondaryBtnLabel="Try again",this.secondaryLabel="Accept connection request in the wallet",this.isLoading=!1,this.isMobile=!1,this.onRetry=void 0,this.unsubscribe.push(k.subscribeKey("wcUri",e=>{this.uri=e,this.isRetrying&&this.onRetry&&(this.isRetrying=!1,this.onConnect?.())}),k.subscribeKey("wcError",e=>this.error=e)),(j.isTelegram()||j.isSafari())&&j.isIos()&&k.state.wcUri&&this.onConnect?.()}firstUpdated(){this.onAutoConnect?.(),this.showRetry=!this.onAutoConnect}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),k.setWcError(!1),clearTimeout(this.timeout)}render(){this.onRender?.(),this.onShowRetry();const e=this.error?"Connection can be declined if a previous request is still active":this.secondaryLabel;let n=`Continue in ${this.name}`;return this.error&&(n="Connection declined"),c` + + + + + ${this.error?null:this.loaderTemplate()} + + + + + + + ${n} + + ${e} + + + ${this.secondaryBtnLabel?c` + + + ${this.secondaryBtnLabel} + + `:null} + + + ${this.isWalletConnect?c` + + + + Copy link + + + `:null} + + + `}onShowRetry(){this.error&&!this.showRetry&&(this.showRetry=!0,this.shadowRoot?.querySelector("wui-button")?.animate([{opacity:0},{opacity:1}],{fill:"forwards",easing:"ease"}))}onTryAgain(){k.setWcError(!1),this.onRetry?(this.isRetrying=!0,this.onRetry?.()):this.onConnect?.()}loaderTemplate(){const e=en.state.themeVariables["--w3m-border-radius-master"],n=e?parseInt(e.replace("px",""),10):4;return c``}onCopyUri(){try{this.uri&&(j.copyToClopboard(this.uri),Xe.showSuccess("Link copied"))}catch{Xe.showError("Failed to copy")}}}V.styles=Mi;se([_()],V.prototype,"isRetrying",void 0);se([_()],V.prototype,"uri",void 0);se([_()],V.prototype,"error",void 0);se([_()],V.prototype,"ready",void 0);se([_()],V.prototype,"showRetry",void 0);se([_()],V.prototype,"secondaryBtnLabel",void 0);se([_()],V.prototype,"secondaryLabel",void 0);se([_()],V.prototype,"isLoading",void 0);se([u({type:Boolean})],V.prototype,"isMobile",void 0);se([u()],V.prototype,"onRetry",void 0);var Ui=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Rn=class extends V{constructor(){if(super(),!this.wallet)throw new Error("w3m-connecting-wc-browser: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onAutoConnect=this.onConnectProxy.bind(this),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser"}})}async onConnectProxy(){try{this.error=!1;const{connectors:e}=M.state,n=e.find(i=>i.type==="ANNOUNCED"&&i.info?.rdns===this.wallet?.rdns||i.type==="INJECTED"||i.name===this.wallet?.name);if(n)await k.connectExternal(n,n.chain);else throw new Error("w3m-connecting-wc-browser: No connector found");oi.close(),te.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:"browser",name:this.wallet?.name||"Unknown"}})}catch(e){te.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:e?.message??"Unknown"}}),this.error=!0}}};Rn=Ui([P("w3m-connecting-wc-browser")],Rn);var qi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let $n=class extends V{constructor(){if(super(),!this.wallet)throw new Error("w3m-connecting-wc-desktop: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onRender=this.onRenderProxy.bind(this),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"desktop"}})}onRenderProxy(){!this.ready&&this.uri&&(this.ready=!0,this.onConnect?.())}onConnectProxy(){if(this.wallet?.desktop_link&&this.uri)try{this.error=!1;const{desktop_link:e,name:n}=this.wallet,{redirect:i,href:o}=j.formatNativeUrl(e,this.uri);k.setWcLinking({name:n,href:o}),k.setRecentWallet(this.wallet),j.openHref(i,"_blank")}catch{this.error=!0}}};$n=qi([P("w3m-connecting-wc-desktop")],$n);var je=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ce=class extends V{constructor(){if(super(),this.btnLabelTimeout=void 0,this.redirectDeeplink=void 0,this.redirectUniversalLink=void 0,this.target=void 0,this.preferUniversalLinks=ee.state.experimental_preferUniversalLinks,this.isLoading=!0,this.onConnect=()=>{if(this.wallet?.mobile_link&&this.uri)try{this.error=!1;const{mobile_link:e,link_mode:n,name:i}=this.wallet,{redirect:o,redirectUniversalLink:t,href:a}=j.formatNativeUrl(e,this.uri,n);this.redirectDeeplink=o,this.redirectUniversalLink=t,this.target=j.isIframe()?"_top":"_self",k.setWcLinking({name:i,href:a}),k.setRecentWallet(this.wallet),this.preferUniversalLinks&&this.redirectUniversalLink?j.openHref(this.redirectUniversalLink,this.target):j.openHref(this.redirectDeeplink,this.target)}catch(e){te.sendEvent({type:"track",event:"CONNECT_PROXY_ERROR",properties:{message:e instanceof Error?e.message:"Error parsing the deeplink",uri:this.uri,mobile_link:this.wallet.mobile_link,name:this.wallet.name}}),this.error=!0}},!this.wallet)throw new Error("w3m-connecting-wc-mobile: No wallet provided");this.secondaryBtnLabel="Open",this.secondaryLabel=ri.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.onHandleURI(),this.unsubscribe.push(k.subscribeKey("wcUri",()=>{this.onHandleURI()})),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"mobile"}})}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this.btnLabelTimeout)}onHandleURI(){this.isLoading=!this.uri,!this.ready&&this.uri&&(this.ready=!0,this.onConnect?.())}onTryAgain(){k.setWcError(!1),this.onConnect?.()}};je([_()],Ce.prototype,"redirectDeeplink",void 0);je([_()],Ce.prototype,"redirectUniversalLink",void 0);je([_()],Ce.prototype,"target",void 0);je([_()],Ce.prototype,"preferUniversalLinks",void 0);je([_()],Ce.prototype,"isLoading",void 0);Ce=je([P("w3m-connecting-wc-mobile")],Ce);var Te={},Et,_n;function Fi(){return _n||(_n=1,Et=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Et}var Wt={},me={},In;function Ee(){if(In)return me;In=1;let r;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return me.getSymbolSize=function(i){if(!i)throw new Error('"version" cannot be null or undefined');if(i<1||i>40)throw new Error('"version" should be in range from 1 to 40');return i*4+17},me.getSymbolTotalCodewords=function(i){return e[i]},me.getBCHDigit=function(n){let i=0;for(;n!==0;)i++,n>>>=1;return i},me.setToSJISFunction=function(i){if(typeof i!="function")throw new Error('"toSJISFunc" is not a valid function.');r=i},me.isKanjiModeEnabled=function(){return typeof r<"u"},me.toSJIS=function(i){return r(i)},me}var St={},En;function fn(){return En||(En=1,(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+n)}}r.isValid=function(i){return i&&typeof i.bit<"u"&&i.bit>=0&&i.bit<4},r.from=function(i,o){if(r.isValid(i))return i;try{return e(i)}catch{return o}}})(St)),St}var Tt,Wn;function Vi(){if(Wn)return Tt;Wn=1;function r(){this.buffer=[],this.length=0}return r.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let i=0;i>>n-i-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},Tt=r,Tt}var Bt,Sn;function Ki(){if(Sn)return Bt;Sn=1;function r(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return r.prototype.set=function(e,n,i,o){const t=e*this.size+n;this.data[t]=i,o&&(this.reservedBit[t]=!0)},r.prototype.get=function(e,n){return this.data[e*this.size+n]},r.prototype.xor=function(e,n,i){this.data[e*this.size+n]^=i},r.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},Bt=r,Bt}var Pt={},Tn;function Hi(){return Tn||(Tn=1,(function(r){const e=Ee().getSymbolSize;r.getRowColCoords=function(i){if(i===1)return[];const o=Math.floor(i/7)+2,t=e(i),a=t===145?26:Math.ceil((t-13)/(2*o-2))*2,s=[t-7];for(let l=1;l=0&&o<=7},r.from=function(o){return r.isValid(o)?parseInt(o,10):void 0},r.getPenaltyN1=function(o){const t=o.size;let a=0,s=0,l=0,d=null,h=null;for(let w=0;w=5&&(a+=e.N1+(s-5)),d=p,s=1),p=o.get(x,w),p===h?l++:(l>=5&&(a+=e.N1+(l-5)),h=p,l=1)}s>=5&&(a+=e.N1+(s-5)),l>=5&&(a+=e.N1+(l-5))}return a},r.getPenaltyN2=function(o){const t=o.size;let a=0;for(let s=0;s=10&&(s===1488||s===93)&&a++,l=l<<1&2047|o.get(h,d),h>=10&&(l===1488||l===93)&&a++}return a*e.N3},r.getPenaltyN4=function(o){let t=0;const a=o.data.length;for(let l=0;l=0;){const a=t[0];for(let l=0;l0){const s=new Uint8Array(this.degree);return s.set(t,a),s}return t},jt=e,jt}var kt={},Dt={},zt={},kn;function ui(){return kn||(kn=1,zt.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),zt}var oe={},Dn;function di(){if(Dn)return oe;Dn=1;const r="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const i="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r +]))+`;oe.KANJI=new RegExp(n,"g"),oe.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),oe.BYTE=new RegExp(i,"g"),oe.NUMERIC=new RegExp(r,"g"),oe.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+n+"$"),t=new RegExp("^"+r+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return oe.testKanji=function(l){return o.test(l)},oe.testNumeric=function(l){return t.test(l)},oe.testAlphanumeric=function(l){return a.test(l)},oe}var zn;function We(){return zn||(zn=1,(function(r){const e=ui(),n=di();r.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},r.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},r.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},r.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},r.MIXED={bit:-1},r.getCharCountIndicator=function(t,a){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!e.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?t.ccBits[0]:a<27?t.ccBits[1]:t.ccBits[2]},r.getBestModeForData=function(t){return n.testNumeric(t)?r.NUMERIC:n.testAlphanumeric(t)?r.ALPHANUMERIC:n.testKanji(t)?r.KANJI:r.BYTE},r.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},r.isValid=function(t){return t&&t.bit&&t.ccBits};function i(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+o)}}r.from=function(t,a){if(r.isValid(t))return t;try{return i(t)}catch{return a}}})(Dt)),Dt}var Nn;function Zi(){return Nn||(Nn=1,(function(r){const e=Ee(),n=ci(),i=fn(),o=We(),t=ui(),a=7973,s=e.getBCHDigit(a);function l(x,p,W){for(let v=1;v<=40;v++)if(p<=r.getCapacity(v,W,x))return v}function d(x,p){return o.getCharCountIndicator(x,p)+4}function h(x,p){let W=0;return x.forEach(function(v){const S=d(v.mode,p);W+=S+v.getBitsLength()}),W}function w(x,p){for(let W=1;W<=40;W++)if(h(x,W)<=r.getCapacity(W,p,o.MIXED))return W}r.from=function(p,W){return t.isValid(p)?parseInt(p,10):W},r.getCapacity=function(p,W,v){if(!t.isValid(p))throw new Error("Invalid QR Code version");typeof v>"u"&&(v=o.BYTE);const S=e.getSymbolTotalCodewords(p),m=n.getTotalCodewordsCount(p,W),g=(S-m)*8;if(v===o.MIXED)return g;const b=g-d(v,p);switch(v){case o.NUMERIC:return Math.floor(b/10*3);case o.ALPHANUMERIC:return Math.floor(b/11*2);case o.KANJI:return Math.floor(b/13);case o.BYTE:default:return Math.floor(b/8)}},r.getBestVersionForData=function(p,W){let v;const S=i.from(W,i.M);if(Array.isArray(p)){if(p.length>1)return w(p,S);if(p.length===0)return 1;v=p[0]}else v=p;return l(v.mode,v.getLength(),S)},r.getEncodedBits=function(p){if(!t.isValid(p)||p<7)throw new Error("Invalid QR Code version");let W=p<<12;for(;e.getBCHDigit(W)-s>=0;)W^=a<=0;)l^=e<0&&(t=this.data.substr(o),a=parseInt(t,10),i.put(a,s*3+1))},Ut=e,Ut}var qt,qn;function no(){if(qn)return qt;qn=1;const r=We(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(i){this.mode=r.ALPHANUMERIC,this.data=i}return n.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(o){let t;for(t=0;t+2<=this.data.length;t+=2){let a=e.indexOf(this.data[t])*45;a+=e.indexOf(this.data[t+1]),o.put(a,11)}this.data.length%2&&o.put(e.indexOf(this.data[t]),6)},qt=n,qt}var Ft,Fn;function io(){return Fn||(Fn=1,Ft=function(e){for(var n=[],i=e.length,o=0;o=55296&&t<=56319&&i>o+1){var a=e.charCodeAt(o+1);a>=56320&&a<=57343&&(t=(t-55296)*1024+a-56320+65536,o+=1)}if(t<128){n.push(t);continue}if(t<2048){n.push(t>>6|192),n.push(t&63|128);continue}if(t<55296||t>=57344&&t<65536){n.push(t>>12|224),n.push(t>>6&63|128),n.push(t&63|128);continue}if(t>=65536&&t<=1114111){n.push(t>>18|240),n.push(t>>12&63|128),n.push(t>>6&63|128),n.push(t&63|128);continue}n.push(239,191,189)}return new Uint8Array(n).buffer}),Ft}var Vt,Vn;function oo(){if(Vn)return Vt;Vn=1;const r=io(),e=We();function n(i){this.mode=e.BYTE,typeof i=="string"&&(i=r(i)),this.data=new Uint8Array(i)}return n.getBitsLength=function(o){return o*8},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(i){for(let o=0,t=this.data.length;o=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[o]+` +Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),i.put(t,13)}},Kt=n,Kt}var Ht={exports:{}},Hn;function ao(){return Hn||(Hn=1,(function(r){var e={single_source_shortest_paths:function(n,i,o){var t={},a={};a[i]=0;var s=e.PriorityQueue.make();s.push(i,0);for(var l,d,h,w,x,p,W,v,S;!s.empty();){l=s.pop(),d=l.value,w=l.cost,x=n[d]||{};for(h in x)x.hasOwnProperty(h)&&(p=x[h],W=w+p,v=a[h],S=typeof a[h]>"u",(S||v>W)&&(a[h]=W,s.push(h,W),t[h]=d))}if(typeof o<"u"&&typeof a[o]>"u"){var m=["Could not find a path from ",i," to ",o,"."].join("");throw new Error(m)}return t},extract_shortest_path_from_predecessor_list:function(n,i){for(var o=[],t=i;t;)o.push(t),n[t],t=n[t];return o.reverse(),o},find_path:function(n,i,o){var t=e.single_source_shortest_paths(n,i,o);return e.extract_shortest_path_from_predecessor_list(t,o)},PriorityQueue:{make:function(n){var i=e.PriorityQueue,o={},t;n=n||{};for(t in i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=n.sorter||i.default_sorter,o},default_sorter:function(n,i){return n.cost-i.cost},push:function(n,i){var o={value:n,cost:i};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};r.exports=e})(Ht)),Ht.exports}var Gn;function so(){return Gn||(Gn=1,(function(r){const e=We(),n=to(),i=no(),o=oo(),t=ro(),a=di(),s=Ee(),l=ao();function d(m){return unescape(encodeURIComponent(m)).length}function h(m,g,b){const f=[];let D;for(;(D=m.exec(b))!==null;)f.push({data:D[0],index:D.index,mode:g,length:D[0].length});return f}function w(m){const g=h(a.NUMERIC,e.NUMERIC,m),b=h(a.ALPHANUMERIC,e.ALPHANUMERIC,m);let f,D;return s.isKanjiModeEnabled()?(f=h(a.BYTE,e.BYTE,m),D=h(a.KANJI,e.KANJI,m)):(f=h(a.BYTE_KANJI,e.BYTE,m),D=[]),g.concat(b,f,D).sort(function(T,I){return T.index-I.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function x(m,g){switch(g){case e.NUMERIC:return n.getBitsLength(m);case e.ALPHANUMERIC:return i.getBitsLength(m);case e.KANJI:return t.getBitsLength(m);case e.BYTE:return o.getBitsLength(m)}}function p(m){return m.reduce(function(g,b){const f=g.length-1>=0?g[g.length-1]:null;return f&&f.mode===b.mode?(g[g.length-1].data+=b.data,g):(g.push(b),g)},[])}function W(m){const g=[];for(let b=0;b=0&&$<=6&&(A===0||A===6)||A>=0&&A<=6&&($===0||$===6)||$>=2&&$<=4&&A>=2&&A<=4?C.set(R+$,B+A,!0,!0):C.set(R+$,B+A,!1,!0))}}function W(C){const T=C.size;for(let I=8;I>$&1)===1,C.set(L,R,B,!0),C.set(R,L,B,!0)}function m(C,T,I){const y=C.size,L=h.getEncodedBits(T,I);let R,B;for(R=0;R<15;R++)B=(L>>R&1)===1,R<6?C.set(R,8,B,!0):R<8?C.set(R+1,8,B,!0):C.set(y-15+R,8,B,!0),R<8?C.set(8,y-R-1,B,!0):R<9?C.set(8,15-R-1+1,B,!0):C.set(8,15-R-1,B,!0);C.set(y-8,8,1,!0)}function g(C,T){const I=C.size;let y=-1,L=I-1,R=7,B=0;for(let $=I-1;$>0;$-=2)for($===6&&$--;;){for(let A=0;A<2;A++)if(!C.isReserved(L,$-A)){let we=!1;B>>R&1)===1),C.set(L,$-A,we),R--,R===-1&&(B++,R=7)}if(L+=y,L<0||I<=L){L-=y,y=-y;break}}}function b(C,T,I){const y=new n;I.forEach(function(A){y.put(A.mode.bit,4),y.put(A.getLength(),w.getCharCountIndicator(A.mode,C)),A.write(y)});const L=r.getSymbolTotalCodewords(C),R=s.getTotalCodewordsCount(C,T),B=(L-R)*8;for(y.getLengthInBits()+4<=B&&y.put(0,4);y.getLengthInBits()%8!==0;)y.putBit(0);const $=(B-y.getLengthInBits())/8;for(let A=0;A<$;A++)y.put(A%2?17:236,8);return f(y,C,T)}function f(C,T,I){const y=r.getSymbolTotalCodewords(T),L=s.getTotalCodewordsCount(T,I),R=y-L,B=s.getBlocksCount(T,I),$=y%B,A=B-$,we=Math.floor(y/B),De=Math.floor(R/B),vi=De+1,mn=we-De,yi=new l(mn);let Ct=0;const Je=new Array(B),bn=new Array(B);let Rt=0;const xi=new Uint8Array(C.buffer);for(let Se=0;Se=7&&S(A,T),g(A,B),isNaN(y)&&(y=a.getBestMask(A,m.bind(null,A,I))),a.applyMask(y,A),m(A,I,y),{modules:A,version:T,errorCorrectionLevel:I,maskPattern:y,segments:L}}return Wt.create=function(T,I){if(typeof T>"u"||T==="")throw new Error("No input text");let y=e.M,L,R;return typeof I<"u"&&(y=e.from(I.errorCorrectionLevel,e.M),L=d.from(I.version),R=a.from(I.maskPattern),I.toSJISFunc&&r.setToSJISFunction(I.toSJISFunc)),D(T,L,y,R)},Wt}var Gt={},Yt={},Jn;function hi(){return Jn||(Jn=1,(function(r){function e(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let i=n.slice().replace("#","").split("");if(i.length<3||i.length===5||i.length>8)throw new Error("Invalid hex color: "+n);(i.length===3||i.length===4)&&(i=Array.prototype.concat.apply([],i.map(function(t){return[t,t]}))),i.length===6&&i.push("F","F");const o=parseInt(i.join(""),16);return{r:o>>24&255,g:o>>16&255,b:o>>8&255,a:o&255,hex:"#"+i.slice(0,6).join("")}}r.getOptions=function(i){i||(i={}),i.color||(i.color={});const o=typeof i.margin>"u"||i.margin===null||i.margin<0?4:i.margin,t=i.width&&i.width>=21?i.width:void 0,a=i.scale||4;return{width:t,scale:t?4:a,margin:o,color:{dark:e(i.color.dark||"#000000ff"),light:e(i.color.light||"#ffffffff")},type:i.type,rendererOpts:i.rendererOpts||{}}},r.getScale=function(i,o){return o.width&&o.width>=i+o.margin*2?o.width/(i+o.margin*2):o.scale},r.getImageWidth=function(i,o){const t=r.getScale(i,o);return Math.floor((i+o.margin*2)*t)},r.qrToImageData=function(i,o,t){const a=o.modules.size,s=o.modules.data,l=r.getScale(a,t),d=Math.floor((a+t.margin*2)*l),h=t.margin*l,w=[t.color.light,t.color.dark];for(let x=0;x=h&&p>=h&&x"u"&&(!a||!a.getContext)&&(l=a,a=void 0),a||(d=i()),l=e.getOptions(l);const h=e.getImageWidth(t.modules.size,l),w=d.getContext("2d"),x=w.createImageData(h,h);return e.qrToImageData(x.data,t,l),n(w,d,h),w.putImageData(x,0,0),d},r.renderToDataURL=function(t,a,s){let l=s;typeof l>"u"&&(!a||!a.getContext)&&(l=a,a=void 0),l||(l={});const d=r.render(t,a,l),h=l.type||"image/png",w=l.rendererOpts||{};return d.toDataURL(h,w.quality)}})(Gt)),Gt}var Jt={},Xn;function uo(){if(Xn)return Jt;Xn=1;const r=hi();function e(o,t){const a=o.a/255,s=t+'="'+o.hex+'"';return a<1?s+" "+t+'-opacity="'+a.toFixed(2).slice(1)+'"':s}function n(o,t,a){let s=o+t;return typeof a<"u"&&(s+=" "+a),s}function i(o,t,a){let s="",l=0,d=!1,h=0;for(let w=0;w0&&x>0&&o[w-1]||(s+=d?n("M",x+a,.5+p+a):n("m",l,0),l=0,d=!1),x+1':"",p="',W='viewBox="0 0 '+w+" "+w+'"',S=''+x+p+` +`;return typeof s=="function"&&s(null,S),S},Jt}var Zn;function ho(){if(Zn)return Te;Zn=1;const r=Fi(),e=lo(),n=co(),i=uo();function o(t,a,s,l,d){const h=[].slice.call(arguments,1),w=h.length,x=typeof h[w-1]=="function";if(!x&&!r())throw new Error("Callback required as last argument");if(x){if(w<2)throw new Error("Too few arguments provided");w===2?(d=s,s=a,a=l=void 0):w===3&&(a.getContext&&typeof d>"u"?(d=l,l=void 0):(d=l,l=s,s=a,a=void 0))}else{if(w<1)throw new Error("Too few arguments provided");return w===1?(s=a,a=l=void 0):w===2&&!a.getContext&&(l=s,s=a,a=void 0),new Promise(function(p,W){try{const v=e.create(s,l);p(t(v,a,l))}catch(v){W(v)}})}try{const p=e.create(s,l);d(null,t(p,a,l))}catch(p){d(p)}}return Te.create=e.create,Te.toCanvas=o.bind(null,n.render),Te.toDataURL=o.bind(null,n.renderToDataURL),Te.toString=o.bind(null,function(t,a,s){return i.render(t,s)}),Te}var fo=ho();const po=Ei(fo),go=.1,ei=2.5,de=7;function Qt(r,e,n){return r===e?!1:(r-e<0?e-r:r-e)<=n+go}function wo(r,e){const n=Array.prototype.slice.call(po.create(r,{errorCorrectionLevel:e}).modules.data,0),i=Math.sqrt(n.length);return n.reduce((o,t,a)=>(a%i===0?o.push([t]):o[o.length-1].push(t))&&o,[])}const mo={generate({uri:r,size:e,logoSize:n,dotColor:i="#141414"}){const o="transparent",a=[],s=wo(r,"Q"),l=e/s.length,d=[{x:0,y:0},{x:1,y:0},{x:0,y:1}];d.forEach(({x:v,y:S})=>{const m=(s.length-de)*l*v,g=(s.length-de)*l*S,b=.45;for(let f=0;f + `)}});const h=Math.floor((n+25)/l),w=s.length/2-h/2,x=s.length/2+h/2-1,p=[];s.forEach((v,S)=>{v.forEach((m,g)=>{if(s[S][g]&&!(Ss.length-(de+1)&&gs.length-(de+1))&&!(S>w&&Sw&&g{W[v]?W[v]?.push(S):W[v]=[S]}),Object.entries(W).map(([v,S])=>{const m=S.filter(g=>S.every(b=>!Qt(g,b,l)));return[Number(v),m]}).forEach(([v,S])=>{S.forEach(m=>{a.push(Ne``)})}),Object.entries(W).filter(([v,S])=>S.length>1).map(([v,S])=>{const m=S.filter(g=>S.some(b=>Qt(g,b,l)));return[Number(v),m]}).map(([v,S])=>{S.sort((g,b)=>gf.some(D=>Qt(g,D,l)));b?b.push(g):m.push([g])}return[v,m.map(g=>[g[0],g[g.length-1]])]}).forEach(([v,S])=>{S.forEach(([m,g])=>{a.push(Ne` + + `)})}),a}},bo=N` + :host { + position: relative; + user-select: none; + display: block; + overflow: hidden; + aspect-ratio: 1 / 1; + width: var(--local-size); + } + + :host([data-theme='dark']) { + border-radius: clamp(0px, var(--wui-border-radius-l), 40px); + background-color: var(--wui-color-inverse-100); + padding: var(--wui-spacing-l); + } + + :host([data-theme='light']) { + box-shadow: 0 0 0 1px var(--wui-color-bg-125); + background-color: var(--wui-color-bg-125); + } + + :host([data-clear='true']) > wui-icon { + display: none; + } + + svg:first-child, + wui-image, + wui-icon { + position: absolute; + top: 50%; + left: 50%; + transform: translateY(-50%) translateX(-50%); + } + + wui-image { + width: 25%; + height: 25%; + border-radius: var(--wui-border-radius-xs); + } + + wui-icon { + width: 100%; + height: 100%; + color: var(--local-icon-color) !important; + transform: translateY(-50%) translateX(-50%) scale(0.25); + } +`;var ge=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const vo="#3396ff";let ne=class extends O{constructor(){super(...arguments),this.uri="",this.size=0,this.theme="dark",this.imageSrc=void 0,this.alt=void 0,this.arenaClear=void 0,this.farcaster=void 0}render(){return this.dataset.theme=this.theme,this.dataset.clear=String(this.arenaClear),this.style.cssText=` + --local-size: ${this.size}px; + --local-icon-color: ${this.color??vo} + `,c`${this.templateVisual()} ${this.templateSvg()}`}templateSvg(){const e=this.theme==="light"?this.size:this.size-32;return Ne` + + ${mo.generate({uri:this.uri,size:e,logoSize:this.arenaClear?0:e/4,dotColor:this.color})} + + `}templateVisual(){return this.imageSrc?c``:this.farcaster?c``:c``}};ne.styles=[q,bo];ge([u()],ne.prototype,"uri",void 0);ge([u({type:Number})],ne.prototype,"size",void 0);ge([u()],ne.prototype,"theme",void 0);ge([u()],ne.prototype,"imageSrc",void 0);ge([u()],ne.prototype,"alt",void 0);ge([u()],ne.prototype,"color",void 0);ge([u({type:Boolean})],ne.prototype,"arenaClear",void 0);ge([u({type:Boolean})],ne.prototype,"farcaster",void 0);ne=ge([P("wui-qr-code")],ne);const yo=N` + :host { + display: block; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + background: linear-gradient( + 120deg, + var(--wui-color-bg-200) 5%, + var(--wui-color-bg-200) 48%, + var(--wui-color-bg-300) 55%, + var(--wui-color-bg-300) 60%, + var(--wui-color-bg-300) calc(60% + 10px), + var(--wui-color-bg-200) calc(60% + 12px), + var(--wui-color-bg-200) 100% + ); + background-size: 250%; + animation: shimmer 3s linear infinite reverse; + } + + :host([variant='light']) { + background: linear-gradient( + 120deg, + var(--wui-color-bg-150) 5%, + var(--wui-color-bg-150) 48%, + var(--wui-color-bg-200) 55%, + var(--wui-color-bg-200) 60%, + var(--wui-color-bg-200) calc(60% + 10px), + var(--wui-color-bg-150) calc(60% + 12px), + var(--wui-color-bg-150) 100% + ); + background-size: 250%; + } + + @keyframes shimmer { + from { + background-position: -250% 0; + } + to { + background-position: 250% 0; + } + } +`;var He=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Re=class extends O{constructor(){super(...arguments),this.width="",this.height="",this.borderRadius="m",this.variant="default"}render(){return this.style.cssText=` + width: ${this.width}; + height: ${this.height}; + border-radius: ${`clamp(0px,var(--wui-border-radius-${this.borderRadius}), 40px)`}; + `,c``}};Re.styles=[yo];He([u()],Re.prototype,"width",void 0);He([u()],Re.prototype,"height",void 0);He([u()],Re.prototype,"borderRadius",void 0);He([u()],Re.prototype,"variant",void 0);Re=He([P("wui-shimmer")],Re);const xo="https://reown.com",Co=N` + .reown-logo { + height: var(--wui-spacing-xxl); + } + + a { + text-decoration: none; + cursor: pointer; + } + + a:hover { + opacity: 0.9; + } +`;var Ro=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let tn=class extends O{render(){return c` + + + UX by + + + + `}};tn.styles=[q,G,Co];tn=Ro([P("wui-ux-by-reown")],tn);const $o=N` + @keyframes fadein { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + wui-shimmer { + width: 100%; + aspect-ratio: 1 / 1; + border-radius: clamp(0px, var(--wui-border-radius-l), 40px) !important; + } + + wui-qr-code { + opacity: 0; + animation-duration: 200ms; + animation-timing-function: ease; + animation-name: fadein; + animation-fill-mode: forwards; + } +`;var _o=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let nn=class extends V{constructor(){super(),this.forceUpdate=()=>{this.requestUpdate()},window.addEventListener("resize",this.forceUpdate),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet?.name??"WalletConnect",platform:"qrcode"}})}disconnectedCallback(){super.disconnectedCallback(),this.unsubscribe?.forEach(e=>e()),window.removeEventListener("resize",this.forceUpdate)}render(){return this.onRenderProxy(),c` + + ${this.qrCodeTemplate()} + + + Scan this QR Code with your phone + + ${this.copyTemplate()} + + + `}onRenderProxy(){!this.ready&&this.uri&&(this.timeout=setTimeout(()=>{this.ready=!0},200))}qrCodeTemplate(){if(!this.uri||!this.ready)return null;const e=this.getBoundingClientRect().width-40,n=this.wallet?this.wallet.name:void 0;return k.setWcLinking(void 0),k.setRecentWallet(this.wallet),c` `}copyTemplate(){const e=!this.uri||!this.ready;return c` + + Copy link + `}};nn.styles=$o;nn=_o([P("w3m-connecting-wc-qrcode")],nn);var Io=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ti=class extends O{constructor(){if(super(),this.wallet=U.state.data?.wallet,!this.wallet)throw new Error("w3m-connecting-wc-unsupported: No wallet provided");te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser"}})}render(){return c` + + + + Not Detected + + + + `}};ti=Io([P("w3m-connecting-wc-unsupported")],ti);var fi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let on=class extends V{constructor(){if(super(),this.isLoading=!0,!this.wallet)throw new Error("w3m-connecting-wc-web: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.secondaryBtnLabel="Open",this.secondaryLabel=ri.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.updateLoadingState(),this.unsubscribe.push(k.subscribeKey("wcUri",()=>{this.updateLoadingState()})),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"web"}})}updateLoadingState(){this.isLoading=!this.uri}onConnectProxy(){if(this.wallet?.webapp_link&&this.uri)try{this.error=!1;const{webapp_link:e,name:n}=this.wallet,{redirect:i,href:o}=j.formatUniversalUrl(e,this.uri);k.setWcLinking({name:n,href:o}),k.setRecentWallet(this.wallet),j.openHref(i,"_blank")}catch{this.error=!0}}};fi([_()],on.prototype,"isLoading",void 0);on=fi([P("w3m-connecting-wc-web")],on);var Ge=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Le=class extends O{constructor(){super(),this.wallet=U.state.data?.wallet,this.unsubscribe=[],this.platform=void 0,this.platforms=[],this.isSiwxEnabled=!!ee.state.siwx,this.remoteFeatures=ee.state.remoteFeatures,this.determinePlatforms(),this.initializeConnection(),this.unsubscribe.push(ee.subscribeKey("remoteFeatures",e=>this.remoteFeatures=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` + ${this.headerTemplate()} +
${this.platformTemplate()}
+ ${this.reownBrandingTemplate()} + `}reownBrandingTemplate(){return this.remoteFeatures?.reownBranding?c``:null}async initializeConnection(e=!1){if(!(this.platform==="browser"||ee.state.manualWCControl&&!e))try{const{wcPairingExpiry:n,status:i}=k.state;(e||ee.state.enableEmbedded||j.isPairingExpired(n)||i==="connecting")&&(await k.connectWalletConnect(),this.isSiwxEnabled||oi.close())}catch(n){te.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:n?.message??"Unknown"}}),k.setWcError(!0),Xe.showError(n.message??"Connection error"),k.resetWcConnection(),U.goBack()}}determinePlatforms(){if(!this.wallet){this.platforms.push("qrcode"),this.platform="qrcode";return}if(this.platform)return;const{mobile_link:e,desktop_link:n,webapp_link:i,injected:o,rdns:t}=this.wallet,a=o?.map(({injected_id:W})=>W).filter(Boolean),s=[...t?[t]:a??[]],l=ee.state.isUniversalProvider?!1:s.length,d=e,h=i,w=k.checkInstalled(s),x=l&&w,p=n&&!j.isMobile();x&&!Zt.state.noAdapters&&this.platforms.push("browser"),d&&this.platforms.push(j.isMobile()?"mobile":"qrcode"),h&&this.platforms.push("web"),p&&this.platforms.push("desktop"),!x&&l&&!Zt.state.noAdapters&&this.platforms.push("unsupported"),this.platform=this.platforms[0]}platformTemplate(){switch(this.platform){case"browser":return c``;case"web":return c``;case"desktop":return c` + this.initializeConnection(!0)}> + + `;case"mobile":return c` + this.initializeConnection(!0)}> + + `;case"qrcode":return c``;default:return c``}}headerTemplate(){return this.platforms.length>1?c` + + + `:null}async onSelectPlatform(e){const n=this.shadowRoot?.querySelector("div");n&&(await n.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.platform=e,n.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}};Ge([_()],Le.prototype,"platform",void 0);Ge([_()],Le.prototype,"platforms",void 0);Ge([_()],Le.prototype,"isSiwxEnabled",void 0);Ge([_()],Le.prototype,"remoteFeatures",void 0);Le=Ge([P("w3m-connecting-wc-view")],Le);var pi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let rn=class extends O{constructor(){super(...arguments),this.isMobile=j.isMobile()}render(){if(this.isMobile){const{featured:e,recommended:n}=z.state,{customWallets:i}=ee.state,o=ft.getRecentWallets(),t=e.length||n.length||i?.length||o.length;return c` + ${t?c``:null} + + `}return c` + + + `}};pi([_()],rn.prototype,"isMobile",void 0);rn=pi([P("w3m-connecting-wc-basic-view")],rn);const pn=()=>new Eo;class Eo{}const Xt=new WeakMap,gn=$i(class extends _i{render(r){return xn}update(r,[e]){const n=e!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=e,this.ht=r.options?.host,this.rt(this.ct=r.element)),xn}rt(r){if(this.isConnected||(r=void 0),typeof this.G=="function"){const e=this.ht??globalThis;let n=Xt.get(e);n===void 0&&(n=new WeakMap,Xt.set(e,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,r),r!==void 0&&this.G.call(this.ht,r)}else this.G.value=r}get lt(){return typeof this.G=="function"?Xt.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),Wo=N` + :host { + display: flex; + align-items: center; + justify-content: center; + } + + label { + position: relative; + display: inline-block; + width: 32px; + height: 22px; + } + + input { + width: 0; + height: 0; + opacity: 0; + } + + span { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--wui-color-blue-100); + border-width: 1px; + border-style: solid; + border-color: var(--wui-color-gray-glass-002); + border-radius: 999px; + transition: + background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + border-color var(--wui-ease-inout-power-1) var(--wui-duration-md); + will-change: background-color, border-color; + } + + span:before { + position: absolute; + content: ''; + height: 16px; + width: 16px; + left: 3px; + top: 2px; + background-color: var(--wui-color-inverse-100); + transition: transform var(--wui-ease-inout-power-1) var(--wui-duration-lg); + will-change: transform; + border-radius: 50%; + } + + input:checked + span { + border-color: var(--wui-color-gray-glass-005); + background-color: var(--wui-color-blue-100); + } + + input:not(:checked) + span { + background-color: var(--wui-color-gray-glass-010); + } + + input:checked + span:before { + transform: translateX(calc(100% - 7px)); + } +`;var gi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let lt=class extends O{constructor(){super(...arguments),this.inputElementRef=pn(),this.checked=void 0}render(){return c` + + `}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("switchChange",{detail:this.inputElementRef.value?.checked,bubbles:!0,composed:!0}))}};lt.styles=[q,G,Ri,Wo];gi([u({type:Boolean})],lt.prototype,"checked",void 0);lt=gi([P("wui-switch")],lt);const So=N` + :host { + height: 100%; + } + + button { + display: flex; + align-items: center; + justify-content: center; + column-gap: var(--wui-spacing-1xs); + padding: var(--wui-spacing-xs) var(--wui-spacing-s); + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color; + cursor: pointer; + } + + wui-switch { + pointer-events: none; + } +`;var wi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ct=class extends O{constructor(){super(...arguments),this.checked=void 0}render(){return c` + + `}};ct.styles=[q,G,So];wi([u({type:Boolean})],ct.prototype,"checked",void 0);ct=wi([P("wui-certified-switch")],ct);const To=N` + button { + background-color: var(--wui-color-fg-300); + border-radius: var(--wui-border-radius-4xs); + width: 16px; + height: 16px; + } + + button:disabled { + background-color: var(--wui-color-bg-300); + } + + wui-icon { + color: var(--wui-color-bg-200) !important; + } + + button:focus-visible { + background-color: var(--wui-color-fg-250); + border: 1px solid var(--wui-color-accent-100); + } + + @media (hover: hover) and (pointer: fine) { + button:hover:enabled { + background-color: var(--wui-color-fg-250); + } + + button:active:enabled { + background-color: var(--wui-color-fg-225); + } + } +`;var mi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ut=class extends O{constructor(){super(...arguments),this.icon="copy"}render(){return c` + + `}};ut.styles=[q,G,To];mi([u()],ut.prototype,"icon",void 0);ut=mi([P("wui-input-element")],ut);const Bo=N` + :host { + position: relative; + width: 100%; + display: inline-block; + color: var(--wui-color-fg-275); + } + + input { + width: 100%; + border-radius: var(--wui-border-radius-xs); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + background: var(--wui-color-gray-glass-002); + font-size: var(--wui-font-size-paragraph); + letter-spacing: var(--wui-letter-spacing-paragraph); + color: var(--wui-color-fg-100); + transition: + background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + border-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + box-shadow var(--wui-ease-inout-power-1) var(--wui-duration-md); + will-change: background-color, border-color, box-shadow; + caret-color: var(--wui-color-accent-100); + } + + input:disabled { + cursor: not-allowed; + border: 1px solid var(--wui-color-gray-glass-010); + } + + input:disabled::placeholder, + input:disabled + wui-icon { + color: var(--wui-color-fg-300); + } + + input::placeholder { + color: var(--wui-color-fg-275); + } + + input:focus:enabled { + background-color: var(--wui-color-gray-glass-005); + -webkit-box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + -moz-box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + } + + input:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + wui-icon { + position: absolute; + top: 50%; + transform: translateY(-50%); + pointer-events: none; + } + + .wui-size-sm { + padding: 9px var(--wui-spacing-m) 10px var(--wui-spacing-s); + } + + wui-icon + .wui-size-sm { + padding: 9px var(--wui-spacing-m) 10px 36px; + } + + wui-icon[data-input='sm'] { + left: var(--wui-spacing-s); + } + + .wui-size-md { + padding: 15px var(--wui-spacing-m) var(--wui-spacing-l) var(--wui-spacing-m); + } + + wui-icon + .wui-size-md, + wui-loading-spinner + .wui-size-md { + padding: 10.5px var(--wui-spacing-3xl) 10.5px var(--wui-spacing-3xl); + } + + wui-icon[data-input='md'] { + left: var(--wui-spacing-l); + } + + .wui-size-lg { + padding: var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-l); + letter-spacing: var(--wui-letter-spacing-medium-title); + font-size: var(--wui-font-size-medium-title); + font-weight: var(--wui-font-weight-light); + line-height: 130%; + color: var(--wui-color-fg-100); + height: 64px; + } + + .wui-padding-right-xs { + padding-right: var(--wui-spacing-xs); + } + + .wui-padding-right-s { + padding-right: var(--wui-spacing-s); + } + + .wui-padding-right-m { + padding-right: var(--wui-spacing-m); + } + + .wui-padding-right-l { + padding-right: var(--wui-spacing-l); + } + + .wui-padding-right-xl { + padding-right: var(--wui-spacing-xl); + } + + .wui-padding-right-2xl { + padding-right: var(--wui-spacing-2xl); + } + + .wui-padding-right-3xl { + padding-right: var(--wui-spacing-3xl); + } + + .wui-padding-right-4xl { + padding-right: var(--wui-spacing-4xl); + } + + .wui-padding-right-5xl { + padding-right: var(--wui-spacing-5xl); + } + + wui-icon + .wui-size-lg, + wui-loading-spinner + .wui-size-lg { + padding-left: 50px; + } + + wui-icon[data-input='lg'] { + left: var(--wui-spacing-l); + } + + .wui-size-mdl { + padding: 17.25px var(--wui-spacing-m) 17.25px var(--wui-spacing-m); + } + wui-icon + .wui-size-mdl, + wui-loading-spinner + .wui-size-mdl { + padding: 17.25px var(--wui-spacing-3xl) 17.25px 40px; + } + wui-icon[data-input='mdl'] { + left: var(--wui-spacing-m); + } + + input:placeholder-shown ~ ::slotted(wui-input-element), + input:placeholder-shown ~ ::slotted(wui-icon) { + opacity: 0; + pointer-events: none; + } + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + + input[type='number'] { + -moz-appearance: textfield; + } + + ::slotted(wui-input-element), + ::slotted(wui-icon) { + position: absolute; + top: 50%; + transform: translateY(-50%); + } + + ::slotted(wui-input-element) { + right: var(--wui-spacing-m); + } + + ::slotted(wui-icon) { + right: 0px; + } +`;var le=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let X=class extends O{constructor(){super(...arguments),this.inputElementRef=pn(),this.size="md",this.disabled=!1,this.placeholder="",this.type="text",this.value=""}render(){const e=`wui-padding-right-${this.inputRightPadding}`,i={[`wui-size-${this.size}`]:!0,[e]:!!this.inputRightPadding};return c`${this.templateIcon()} + + `}templateIcon(){return this.icon?c``:null}dispatchInputChangeEvent(){this.dispatchEvent(new CustomEvent("inputChange",{detail:this.inputElementRef.value?.value,bubbles:!0,composed:!0}))}};X.styles=[q,G,Bo];le([u()],X.prototype,"size",void 0);le([u()],X.prototype,"icon",void 0);le([u({type:Boolean})],X.prototype,"disabled",void 0);le([u()],X.prototype,"placeholder",void 0);le([u()],X.prototype,"type",void 0);le([u()],X.prototype,"keyHint",void 0);le([u()],X.prototype,"value",void 0);le([u()],X.prototype,"inputRightPadding",void 0);le([u()],X.prototype,"tabIdx",void 0);X=le([P("wui-input-text")],X);const Po=N` + :host { + position: relative; + display: inline-block; + width: 100%; + } +`;var Lo=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let an=class extends O{constructor(){super(...arguments),this.inputComponentRef=pn()}render(){return c` + + + + `}clearValue(){const n=this.inputComponentRef.value?.inputElementRef.value;n&&(n.value="",n.focus(),n.dispatchEvent(new Event("input")))}};an.styles=[q,Po];an=Lo([P("wui-search-bar")],an);const Oo=Ne` + +`,Ao=N` + :host { + display: flex; + flex-direction: column; + align-items: center; + width: 104px; + row-gap: var(--wui-spacing-xs); + padding: var(--wui-spacing-xs) 10px; + background-color: var(--wui-color-gray-glass-002); + border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); + position: relative; + } + + wui-shimmer[data-type='network'] { + border: none; + -webkit-clip-path: var(--wui-path-network); + clip-path: var(--wui-path-network); + } + + svg { + position: absolute; + width: 48px; + height: 54px; + z-index: 1; + } + + svg > path { + stroke: var(--wui-color-gray-glass-010); + stroke-width: 1px; + } + + @media (max-width: 350px) { + :host { + width: 100%; + } + } +`;var bi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let dt=class extends O{constructor(){super(...arguments),this.type="wallet"}render(){return c` + ${this.shimmerTemplate()} + + `}shimmerTemplate(){return this.type==="network"?c` + ${Oo}`:c``}};dt.styles=[q,G,Ao];bi([u()],dt.prototype,"type",void 0);dt=bi([P("wui-card-select-loader")],dt);const jo=N` + :host { + display: grid; + width: inherit; + height: inherit; + } +`;var Z=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let H=class extends O{render(){return this.style.cssText=` + grid-template-rows: ${this.gridTemplateRows}; + grid-template-columns: ${this.gridTemplateColumns}; + justify-items: ${this.justifyItems}; + align-items: ${this.alignItems}; + justify-content: ${this.justifyContent}; + align-content: ${this.alignContent}; + column-gap: ${this.columnGap&&`var(--wui-spacing-${this.columnGap})`}; + row-gap: ${this.rowGap&&`var(--wui-spacing-${this.rowGap})`}; + gap: ${this.gap&&`var(--wui-spacing-${this.gap})`}; + padding-top: ${this.padding&&he.getSpacingStyles(this.padding,0)}; + padding-right: ${this.padding&&he.getSpacingStyles(this.padding,1)}; + padding-bottom: ${this.padding&&he.getSpacingStyles(this.padding,2)}; + padding-left: ${this.padding&&he.getSpacingStyles(this.padding,3)}; + margin-top: ${this.margin&&he.getSpacingStyles(this.margin,0)}; + margin-right: ${this.margin&&he.getSpacingStyles(this.margin,1)}; + margin-bottom: ${this.margin&&he.getSpacingStyles(this.margin,2)}; + margin-left: ${this.margin&&he.getSpacingStyles(this.margin,3)}; + `,c``}};H.styles=[q,jo];Z([u()],H.prototype,"gridTemplateRows",void 0);Z([u()],H.prototype,"gridTemplateColumns",void 0);Z([u()],H.prototype,"justifyItems",void 0);Z([u()],H.prototype,"alignItems",void 0);Z([u()],H.prototype,"justifyContent",void 0);Z([u()],H.prototype,"alignContent",void 0);Z([u()],H.prototype,"columnGap",void 0);Z([u()],H.prototype,"rowGap",void 0);Z([u()],H.prototype,"gap",void 0);Z([u()],H.prototype,"padding",void 0);Z([u()],H.prototype,"margin",void 0);H=Z([P("wui-grid")],H);const ko=N` + button { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + cursor: pointer; + width: 104px; + row-gap: var(--wui-spacing-xs); + padding: var(--wui-spacing-s) var(--wui-spacing-0); + background-color: var(--wui-color-gray-glass-002); + border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); + transition: + color var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: background-color, color, border-radius; + outline: none; + border: none; + } + + button > wui-flex > wui-text { + color: var(--wui-color-fg-100); + max-width: 86px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + justify-content: center; + } + + button > wui-flex > wui-text.certified { + max-width: 66px; + } + + button:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + button:disabled > wui-flex > wui-text { + color: var(--wui-color-gray-glass-015); + } + + [data-selected='true'] { + background-color: var(--wui-color-accent-glass-020); + } + + @media (hover: hover) and (pointer: fine) { + [data-selected='true']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + } + + [data-selected='true']:active:enabled { + background-color: var(--wui-color-accent-glass-010); + } + + @media (max-width: 350px) { + button { + width: 100%; + } + } +`;var Ye=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let $e=class extends O{constructor(){super(),this.observer=new IntersectionObserver(()=>{}),this.visible=!1,this.imageSrc=void 0,this.imageLoading=!1,this.wallet=void 0,this.observer=new IntersectionObserver(e=>{e.forEach(n=>{n.isIntersecting?(this.visible=!0,this.fetchImageSrc()):this.visible=!1})},{threshold:.01})}firstUpdated(){this.observer.observe(this)}disconnectedCallback(){this.observer.disconnect()}render(){const e=this.wallet?.badge_type==="certified";return c` + + `}imageTemplate(){return!this.visible&&!this.imageSrc||this.imageLoading?this.shimmerTemplate():c` + + + `}shimmerTemplate(){return c``}async fetchImageSrc(){this.wallet&&(this.imageSrc=K.getWalletImage(this.wallet),!this.imageSrc&&(this.imageLoading=!0,this.imageSrc=await K.fetchWalletImage(this.wallet.image_id),this.imageLoading=!1))}};$e.styles=ko;Ye([_()],$e.prototype,"visible",void 0);Ye([_()],$e.prototype,"imageSrc",void 0);Ye([_()],$e.prototype,"imageLoading",void 0);Ye([u()],$e.prototype,"wallet",void 0);$e=Ye([P("w3m-all-wallets-list-item")],$e);const Do=N` + wui-grid { + max-height: clamp(360px, 400px, 80vh); + overflow: scroll; + scrollbar-width: none; + grid-auto-rows: min-content; + grid-template-columns: repeat(auto-fill, 104px); + } + + @media (max-width: 350px) { + wui-grid { + grid-template-columns: repeat(2, 1fr); + } + } + + wui-grid[data-scroll='false'] { + overflow: hidden; + } + + wui-grid::-webkit-scrollbar { + display: none; + } + + wui-loading-spinner { + padding-top: var(--wui-spacing-l); + padding-bottom: var(--wui-spacing-l); + justify-content: center; + grid-column: 1 / span 4; + } +`;var ke=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const ni="local-paginator";let be=class extends O{constructor(){super(),this.unsubscribe=[],this.paginationObserver=void 0,this.loading=!z.state.wallets.length,this.wallets=z.state.wallets,this.recommended=z.state.recommended,this.featured=z.state.featured,this.filteredWallets=z.state.filteredWallets,this.unsubscribe.push(z.subscribeKey("wallets",e=>this.wallets=e),z.subscribeKey("recommended",e=>this.recommended=e),z.subscribeKey("featured",e=>this.featured=e),z.subscribeKey("filteredWallets",e=>this.filteredWallets=e))}firstUpdated(){this.initialFetch(),this.createPaginationObserver()}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),this.paginationObserver?.disconnect()}render(){return c` + + ${this.loading?this.shimmerTemplate(16):this.walletsTemplate()} + ${this.paginationLoaderTemplate()} + + `}async initialFetch(){this.loading=!0;const e=this.shadowRoot?.querySelector("wui-grid");e&&(await z.fetchWalletsByPage({page:1}),await e.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.loading=!1,e.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}shimmerTemplate(e,n){return[...Array(e)].map(()=>c` + + `)}walletsTemplate(){const e=this.filteredWallets?.length>0?j.uniqueBy([...this.featured,...this.recommended,...this.filteredWallets],"id"):j.uniqueBy([...this.featured,...this.recommended,...this.wallets],"id");return pt.markWalletsAsInstalled(e).map(i=>c` + this.onConnectWallet(i)} + .wallet=${i} + > + `)}paginationLoaderTemplate(){const{wallets:e,recommended:n,featured:i,count:o}=z.state,t=window.innerWidth<352?3:4,a=e.length+n.length;let l=Math.ceil(a/t)*t-a+t;return l-=e.length?i.length%t:0,o===0&&i.length>0?null:o===0||[...i,...e,...n].length{if(n?.isIntersecting&&!this.loading){const{page:i,count:o,wallets:t}=z.state;t.length=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Oe=class extends O{constructor(){super(...arguments),this.prevQuery="",this.prevBadge=void 0,this.loading=!0,this.query=""}render(){return this.onSearch(),this.loading?c``:this.walletsTemplate()}async onSearch(){(this.query.trim()!==this.prevQuery.trim()||this.badge!==this.prevBadge)&&(this.prevQuery=this.query,this.prevBadge=this.badge,this.loading=!0,await z.searchWallet({search:this.query,badge:this.badge}),this.loading=!1)}walletsTemplate(){const{search:e}=z.state,n=pt.markWalletsAsInstalled(e);return e.length?c` + + ${n.map(i=>c` + this.onConnectWallet(i)} + .wallet=${i} + data-testid="wallet-search-item-${i.id}" + > + `)} + + `:c` + + + + No Wallet found + + + `}onConnectWallet(e){M.selectWalletConnector(e)}};Oe.styles=zo;xt([_()],Oe.prototype,"loading",void 0);xt([u()],Oe.prototype,"query",void 0);xt([u()],Oe.prototype,"badge",void 0);Oe=xt([P("w3m-all-wallets-search")],Oe);var wn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ht=class extends O{constructor(){super(...arguments),this.search="",this.onDebouncedSearch=j.debounce(e=>{this.search=e})}render(){const e=this.search.length>=2;return c` + + + + ${this.qrButtonTemplate()} + + ${e||this.badge?c``:c``} + `}onInputChange(e){this.onDebouncedSearch(e.detail)}onClick(){if(this.badge==="certified"){this.badge=void 0;return}this.badge="certified",Xe.showSvg("Only WalletConnect certified",{icon:"walletConnectBrown",iconColor:"accent-100"})}qrButtonTemplate(){return j.isMobile()?c` + + `:null}onWalletConnectQr(){U.push("ConnectingWalletConnect")}};wn([_()],ht.prototype,"search",void 0);wn([_()],ht.prototype,"badge",void 0);ht=wn([P("w3m-all-wallets-view")],ht);const No=N` + button { + column-gap: var(--wui-spacing-s); + padding: 11px 18px 11px var(--wui-spacing-s); + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + color: var(--wui-color-fg-250); + transition: + color var(--wui-ease-out-power-1) var(--wui-duration-md), + background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: color, background-color; + } + + button[data-iconvariant='square'], + button[data-iconvariant='square-blue'] { + padding: 6px 18px 6px 9px; + } + + button > wui-flex { + flex: 1; + } + + button > wui-image { + width: 32px; + height: 32px; + box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); + border-radius: var(--wui-border-radius-3xl); + } + + button > wui-icon { + width: 36px; + height: 36px; + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + } + + button > wui-icon-box[data-variant='blue'] { + box-shadow: 0 0 0 2px var(--wui-color-accent-glass-005); + } + + button > wui-icon-box[data-variant='overlay'] { + box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); + } + + button > wui-icon-box[data-variant='square-blue'] { + border-radius: var(--wui-border-radius-3xs); + position: relative; + border: none; + width: 36px; + height: 36px; + } + + button > wui-icon-box[data-variant='square-blue']::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-accent-glass-010); + pointer-events: none; + } + + button > wui-icon:last-child { + width: 14px; + height: 14px; + } + + button:disabled { + color: var(--wui-color-gray-glass-020); + } + + button[data-loading='true'] > wui-icon { + opacity: 0; + } + + wui-loading-spinner { + position: absolute; + right: 18px; + top: 50%; + transform: translateY(-50%); + } +`;var ie=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let J=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.variant="icon",this.disabled=!1,this.imageSrc=void 0,this.alt=void 0,this.chevron=!1,this.loading=!1}render(){return c` + + `}visualTemplate(){if(this.variant==="image"&&this.imageSrc)return c``;if(this.iconVariant==="square"&&this.icon&&this.variant==="icon")return c``;if(this.variant==="icon"&&this.icon&&this.iconVariant){const e=["blue","square-blue"].includes(this.iconVariant)?"accent-100":"fg-200",n=this.iconVariant==="square-blue"?"mdl":"md",i=this.iconSize?this.iconSize:n;return c` + + `}return null}loadingTemplate(){return this.loading?c``:c``}chevronTemplate(){return this.chevron?c``:null}};J.styles=[q,G,No];ie([u()],J.prototype,"icon",void 0);ie([u()],J.prototype,"iconSize",void 0);ie([u()],J.prototype,"tabIdx",void 0);ie([u()],J.prototype,"variant",void 0);ie([u()],J.prototype,"iconVariant",void 0);ie([u({type:Boolean})],J.prototype,"disabled",void 0);ie([u()],J.prototype,"imageSrc",void 0);ie([u()],J.prototype,"alt",void 0);ie([u({type:Boolean})],J.prototype,"chevron",void 0);ie([u({type:Boolean})],J.prototype,"loading",void 0);J=ie([P("wui-list-item")],J);var Mo=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ii=class extends O{constructor(){super(...arguments),this.wallet=U.state.data?.wallet}render(){if(!this.wallet)throw new Error("w3m-downloads-view");return c` + + ${this.chromeTemplate()} ${this.iosTemplate()} ${this.androidTemplate()} + ${this.homepageTemplate()} + + `}chromeTemplate(){return this.wallet?.chrome_store?c` + Chrome Extension + `:null}iosTemplate(){return this.wallet?.app_store?c` + iOS App + `:null}androidTemplate(){return this.wallet?.play_store?c` + Android App + `:null}homepageTemplate(){return this.wallet?.homepage?c` + + Website + + `:null}onChromeStore(){this.wallet?.chrome_store&&j.openHref(this.wallet.chrome_store,"_blank")}onAppStore(){this.wallet?.app_store&&j.openHref(this.wallet.app_store,"_blank")}onPlayStore(){this.wallet?.play_store&&j.openHref(this.wallet.play_store,"_blank")}onHomePage(){this.wallet?.homepage&&j.openHref(this.wallet.homepage,"_blank")}};ii=Mo([P("w3m-downloads-view")],ii);export{ht as W3mAllWalletsView,rn as W3mConnectingWcBasicView,ii as W3mDownloadsView}; diff --git a/dist/assets/berachain-NJECWIVC-DumxnFvf.js b/dist/assets/berachain-NJECWIVC-DumxnFvf.js new file mode 100644 index 0000000..6509c76 --- /dev/null +++ b/dist/assets/berachain-NJECWIVC-DumxnFvf.js @@ -0,0 +1 @@ +var c="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23814625%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.254%2018.737a1.394%201.394%200%200%201-.049-.203%204.66%204.66%200%200%200-.071-.3c.312-.454%201.803-2.826.106-4.349-1.883-1.69-4.083.526-4.083.526l.007.01a5.44%205.44%200%200%200-3.104-.01c-.013-.013-2.206-2.21-4.084-.525-1.878%201.685.15%204.411.16%204.425-.02.064-.038.13-.05.196-.203%201.167-1.586%201.527-1.586%203.56%200%202.032%201.447%203.703%204.4%203.703h1.212c.006.008.505.689%201.53.688.95%200%201.579-.682%201.584-.688h1.156c2.954%200%204.4-1.632%204.4-3.704%200-1.892-1.199-2.334-1.528-3.329ZM33.368%2016.415s.22-1.958-1.45-2.38v-.785h-1.293v.766c-1.761.375-1.534%202.4-1.534%202.4v.335s-.227%202.024%201.535%202.4v1.68c-1.857.327-1.622%202.417-1.622%202.417v.336s-.227%202.024%201.534%202.399v.766h1.293v-.786c1.67-.42%201.45-2.38%201.45-2.38a.13.13%200%200%200%20.132-.127v-.08a.13.13%200%200%200-.132-.128s.218-1.942-1.429-2.374V19.15h-.019c1.762-.374%201.535-2.399%201.535-2.399a.13.13%200%200%200%20.132-.127v-.081a.13.13%200%200%200-.132-.128Zm-1.054%206.833h-.118a.13.13%200%200%200-.132.127v.081c0%20.07.059.128.132.128h.118c0%201.215-.419%201.42-.56%201.454-.023.005-.045-.011-.045-.034v-.388c0-.214-.142-.33-.284-.395a.694.694%200%200%200-.566%200c-.142.064-.283.181-.283.395v.388c0%20.022-.023.04-.045.034-.14-.034-.56-.237-.56-1.454v-.336c0-1.215.418-1.42.559-1.454.023-.006.046.011.046.034v.387c0%20.214.141.332.283.395.179.081.387.081.566%200%20.142-.063.284-.18.284-.395v-.387c0-.023.022-.04.045-.034.14.034.56.237.56%201.454Zm-.03-6.497h.117c0%201.217-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.283-.395a.694.694%200%200%200-.567%200c-.142.063-.283.18-.283.395v.387c0%20.023-.023.04-.046.034-.14-.034-.56-.239-.56-1.454v-.336c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.046.034v.388c0%20.214.141.331.283.395.18.08.388.08.567%200%20.141-.064.283-.181.283-.395v-.388c0-.023.022-.04.046-.034.14.035.56.24.56%201.454h-.119a.13.13%200%200%200-.132.128v.08c0%20.071.06.128.132.128ZM26.898%2019.874s.228-2.035-1.55-2.402v-1.829c1.73-.39%201.506-2.393%201.506-2.393h-.967c0%201.218-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.283-.395a.694.694%200%200%200-.567%200c-.142.063-.283.18-.283.395v.387c0%20.023-.023.04-.046.034-.14-.034-.56-.239-.56-1.454h-.966s-.233%202.078%201.605%202.413v1.806c-1.791.36-1.562%202.405-1.562%202.405v.336s-.229%202.045%201.562%202.405v1.722c-1.838.335-1.605%202.413-1.605%202.413h.966c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.046.034v.387c0%20.214.141.332.283.396.18.08.388.08.567%200%20.141-.064.283-.182.283-.396v-.387c0-.023.022-.04.046-.034.14.035.56.239.56%201.454h.966s.225-2.002-1.506-2.393v-1.745c1.778-.366%201.55-2.402%201.55-2.402a.13.13%200%200%200%20.132-.127V20a.13.13%200%200%200-.132-.127Zm-1.085.336h.118c0%201.217-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.284-.395a.695.695%200%200%200-.566%200c-.142.063-.284.18-.284.395v.387c0%20.023-.022.04-.045.034-.141-.035-.56-.239-.56-1.454v-.336c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.045.034v.388c0%20.214.142.331.284.395.179.08.387.08.566%200%20.142-.064.284-.181.284-.395v-.388c0-.023.022-.04.045-.034.141.035.56.24.56%201.454h-.118a.13.13%200%200%200-.132.128v.08c0%20.071.059.128.132.128Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{c as default}; diff --git a/dist/assets/blast-V555OVXZ-BbhJh1tj.js b/dist/assets/blast-V555OVXZ-BbhJh1tj.js new file mode 100644 index 0000000..616f8f4 --- /dev/null +++ b/dist/assets/blast-V555OVXZ-BbhJh1tj.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.1%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23FCFC03%22%20d%3D%22m10.787%2011.409-3.168%202.64c-.24.192-.096.623.24.623h20.255c.24%200%20.383.24.335.48l-1.007%202.928a.361.361%200%200%201-.336.24h-7.872a.36.36%200%200%200-.336.24l-.816%202.112c-.096.24.096.48.336.48h7.632c.24%200%20.384.24.336.48l-1.2%203.696a.361.361%200%200%201-.336.24H13.475c-.24%200-.384-.24-.336-.432l2.256-8.064c.048-.144-.048-.336-.144-.384l-2.4-1.392c-.192-.096-.432%200-.528.192L8.579%2028.255c-.096.24.096.432.336.432H24.13c.048%200%20.096%200%20.144-.048l3.791-1.823a.375.375%200%200%200%20.192-.192l1.488-4.368c.048-.096%200-.288-.096-.336l-1.776-1.776c-.143-.144-.096-.48.096-.576l2.736-1.296c.096-.048.144-.096.144-.192l1.632-4.367c.048-.144%200-.336-.096-.384l-2.256-1.92c-.096-.048-.096-.096-.24-.096H11.027c-.048%200-.144.048-.24.096Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/browser-BehW1oz2.js b/dist/assets/browser-BehW1oz2.js new file mode 100644 index 0000000..19556c2 --- /dev/null +++ b/dist/assets/browser-BehW1oz2.js @@ -0,0 +1,14 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=l` + + +`;export{i as browserSvg}; diff --git a/dist/assets/bsc-N647EYR2-B2nLKXWV.js b/dist/assets/bsc-N647EYR2-B2nLKXWV.js new file mode 100644 index 0000000..daf18da --- /dev/null +++ b/dist/assets/bsc-N647EYR2-B2nLKXWV.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23F0B90B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%200c7.733%200%2014%206.267%2014%2014s-6.267%2014-14%2014S0%2021.733%200%2014%206.267%200%2014%200Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m7.694%2014%20.01%203.702%203.146%201.85v2.168l-4.986-2.924v-5.878L7.694%2014Zm0-3.702v2.157l-1.832-1.083V9.214l1.832-1.083%201.841%201.083-1.84%201.084Zm4.47-1.084%201.832-1.083%201.84%201.083-1.84%201.084-1.832-1.084Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M9.018%2016.935v-2.168l1.832%201.084v2.157l-1.832-1.073Zm3.146%203.394%201.832%201.084%201.84-1.084v2.157l-1.84%201.084-1.832-1.084V20.33Zm6.3-11.115%201.832-1.083%201.84%201.083v2.158l-1.84%201.083v-2.157l-1.832-1.084Zm1.832%208.488.01-3.702%201.831-1.084v5.879l-4.986%202.924v-2.167l3.145-1.85Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m18.982%2016.935-1.832%201.073v-2.157l1.832-1.084v2.168Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m18.982%2011.065.01%202.168-3.155%201.85v3.712l-1.831%201.073-1.832-1.073v-3.711l-3.155-1.851v-2.168l1.84-1.083%203.135%201.86%203.155-1.86%201.84%201.083h-.007Zm-9.964-3.7%204.977-2.935%204.987%202.935-1.832%201.083-3.154-1.86-3.146%201.86-1.832-1.083Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/card-Bp5-v7jA.js b/dist/assets/card-Bp5-v7jA.js new file mode 100644 index 0000000..d89a16b --- /dev/null +++ b/dist/assets/card-Bp5-v7jA.js @@ -0,0 +1,14 @@ +import{w as C}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=C` + `;export{l as cardSvg}; diff --git a/dist/assets/ccip-C0Prv8fM.js b/dist/assets/ccip-C0Prv8fM.js new file mode 100644 index 0000000..53ee5eb --- /dev/null +++ b/dist/assets/ccip-C0Prv8fM.js @@ -0,0 +1 @@ +import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as R,b as E,e as x,H as y,f as M}from"./index-BJmn9h7A.js";class S extends p{constructor({callbackSelector:s,cause:e,data:o,extraData:n,sender:c,urls:t}){super(e.shortMessage||"An error occurred while fetching for an offchain result.",{cause:e,metaMessages:[...e.metaMessages||[],e.metaMessages?.length?"":[],"Offchain Gateway Call:",t&&[" Gateway URL(s):",...t.map(i=>` ${m(i)}`)],` Sender: ${c}`,` Data: ${o}`,` Callback selector: ${s}`,` Extra data: ${n}`].flat(),name:"OffchainLookupError"})}}class $ extends p{constructor({result:s,url:e}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${m(e)}`,`Response: ${w(s)}`],name:"OffchainLookupResponseMalformedError"})}}class q extends p{constructor({sender:s,to:e}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${e}`,`OffchainLookup sender address: ${s}`],name:"OffchainLookupSenderMismatchError"})}}const A="0x556f1830",T={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(d,{blockNumber:s,blockTag:e,data:o,to:n}){const{args:c}=k({data:o,abi:[T]}),[t,i,l,a,r]=c,{ccipRead:f}=d,h=f&&typeof f?.request=="function"?f.request:C;try{if(!b(n,t))throw new q({sender:t,to:n});const u=i.includes(L)?await O({data:l,ccipRequest:h}):await h({data:l,sender:t,urls:i}),{data:g}=await R(d,{blockNumber:s,blockTag:e,data:E([a,x([{type:"bytes"},{type:"bytes"}],[u,r])]),to:n});return g}catch(u){throw new S({callbackSelector:a,cause:u,data:o,extraData:r,sender:t,urls:i})}}async function C({data:d,sender:s,urls:e}){let o=new Error("An unknown error occurred.");for(let n=0;n + + +`;export{p as checkmarkSvg}; diff --git a/dist/assets/checkmark-bold-nV-9ywVO.js b/dist/assets/checkmark-bold-nV-9ywVO.js new file mode 100644 index 0000000..83484c3 --- /dev/null +++ b/dist/assets/checkmark-bold-nV-9ywVO.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as checkmarkBoldSvg}; diff --git a/dist/assets/chevron-bottom-BE8yTHYr.js b/dist/assets/chevron-bottom-BE8yTHYr.js new file mode 100644 index 0000000..4157cb5 --- /dev/null +++ b/dist/assets/chevron-bottom-BE8yTHYr.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as chevronBottomSvg}; diff --git a/dist/assets/chevron-left-DUjTAIKu.js b/dist/assets/chevron-left-DUjTAIKu.js new file mode 100644 index 0000000..5781aae --- /dev/null +++ b/dist/assets/chevron-left-DUjTAIKu.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as chevronLeftSvg}; diff --git a/dist/assets/chevron-right-YiEDtrBv.js b/dist/assets/chevron-right-YiEDtrBv.js new file mode 100644 index 0000000..20b303f --- /dev/null +++ b/dist/assets/chevron-right-YiEDtrBv.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as chevronRightSvg}; diff --git a/dist/assets/chevron-top-D4LwTGeA.js b/dist/assets/chevron-top-D4LwTGeA.js new file mode 100644 index 0000000..65df4ef --- /dev/null +++ b/dist/assets/chevron-top-D4LwTGeA.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + +`;export{t as chevronTopSvg}; diff --git a/dist/assets/chrome-store-Fc8NhBE8.js b/dist/assets/chrome-store-Fc8NhBE8.js new file mode 100644 index 0000000..dde0860 --- /dev/null +++ b/dist/assets/chrome-store-Fc8NhBE8.js @@ -0,0 +1,61 @@ +import{w as t}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=t` + + + + + + + + + + + + + + + + + + + + + +`;export{l as chromeStoreSvg}; diff --git a/dist/assets/clock-yc1nd1Er.js b/dist/assets/clock-yc1nd1Er.js new file mode 100644 index 0000000..d7548c2 --- /dev/null +++ b/dist/assets/clock-yc1nd1Er.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + +`;export{t as clockSvg}; diff --git a/dist/assets/close-DbNtY9yX.js b/dist/assets/close-DbNtY9yX.js new file mode 100644 index 0000000..561e894 --- /dev/null +++ b/dist/assets/close-DbNtY9yX.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` + +`;export{p as closeSvg}; diff --git a/dist/assets/coinPlaceholder-DNR2k4AC.js b/dist/assets/coinPlaceholder-DNR2k4AC.js new file mode 100644 index 0000000..8a82cce --- /dev/null +++ b/dist/assets/coinPlaceholder-DNR2k4AC.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const m=o` + +`;export{m as coinPlaceholderSvg}; diff --git a/dist/assets/compass-BBmBiw6B.js b/dist/assets/compass-BBmBiw6B.js new file mode 100644 index 0000000..55bef1d --- /dev/null +++ b/dist/assets/compass-BBmBiw6B.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + +`;export{t as compassSvg}; diff --git a/dist/assets/connect-UA7M4XW6-IY3X6Bmr.js b/dist/assets/connect-UA7M4XW6-IY3X6Bmr.js new file mode 100644 index 0000000..be25b96 --- /dev/null +++ b/dist/assets/connect-UA7M4XW6-IY3X6Bmr.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.08%22%20fill-rule%3D%22evenodd%22%20d%3D%22M1.133%209.513C1%2011.131%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c2.817%200%204.87%200%206.486-.133%201.606-.131%202.695-.387%203.6-.848a9%209%200%200%200%203.933-3.933c.461-.905.717-1.994.848-3.6C47%2036.87%2047%2034.816%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6ZM1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c5.6%200%208.4%200%2010.54-1.09a10.001%2010.001%200%200%200%204.37-4.37C48%2040.4%2048%2037.6%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cg%20clip-path%3D%22url(%23c)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20d%3D%22M24.716%2035.795c.531%200%20.968-.234%201.452-.687l9.989-9.38c.537-.512.679-.939.679-1.33%200-.4-.129-.823-.68-1.34l-9.988-9.318c-.527-.497-.903-.74-1.435-.74-.762%200-1.271.592-1.271%201.32v5.075h-.44C14.403%2019.395%2010%2024.689%2010%2034.373c0%20.903.52%201.422%201.119%201.422.482%200%20.944-.15%201.31-.857%202.031-4.108%205.295-5.486%2010.594-5.486h.439v5.062c0%20.73.509%201.281%201.254%201.281Z%22%2F%3E%3C%2Fg%3E%3Cg%20clip-path%3D%22url(%23d)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.716%2034.795c.531%200%20.968-.234%201.452-.687l9.989-9.38c.537-.512.679-.939.679-1.33%200-.4-.129-.823-.68-1.34l-9.988-9.318c-.527-.497-.903-.74-1.435-.74-.762%200-1.271.592-1.271%201.32v5.075h-.44C14.403%2018.395%2010%2023.689%2010%2033.373c0%20.903.52%201.422%201.119%201.422.482%200%20.944-.15%201.31-.857%202.031-4.108%205.295-5.486%2010.594-5.486h.439v5.062c0%20.73.509%201.281%201.254%201.281Z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3C%2FclipPath%3E%3CclipPath%20id%3D%22c%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10%2013h26.836v22.808H10z%22%2F%3E%3C%2FclipPath%3E%3CclipPath%20id%3D%22d%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10%2012h26.836v22.808H10z%22%2F%3E%3C%2FclipPath%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2359627A%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234A5266%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/copy-DYjkauim.js b/dist/assets/copy-DYjkauim.js new file mode 100644 index 0000000..0ffcc39 --- /dev/null +++ b/dist/assets/copy-DYjkauim.js @@ -0,0 +1,15 @@ +import{w as C}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=C` + `;export{e as copySvg}; diff --git a/dist/assets/core-Cmtj-tL6.js b/dist/assets/core-Cmtj-tL6.js new file mode 100644 index 0000000..a5b8e7b --- /dev/null +++ b/dist/assets/core-Cmtj-tL6.js @@ -0,0 +1,892 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secp256k1-BuxODDdo.js","assets/index-BJmn9h7A.js","assets/index-Cy05FiAG.css","assets/index.es-DwcFMDuM.js","assets/events-DQ172AOg.js","assets/index-nibyPLVP.js","assets/basic-knqDsQCx.js","assets/index-KCwUw1XR.js","assets/w3m-modal-edAIOpgJ.js"])))=>i.map(i=>d[i]); +import{o as Oh,T as Th,U as xh,E as $h,w as Rh,p as Uh,_ as fo,q as zi,t as ba}from"./index-BJmn9h7A.js";import{I as qr,h as Dh,i as St,j as ut,k as D,l as as,C as Lh,m as Mh,n as hi,s as go,o as Ys,p as Ti,A as Dl,E as st,q as Bh,u as jh,y as bt,v as Bs,x as Fr,O as Xo,z as Pt,B as qh,D as Zo,F as Qo,G as In,N as ea,P as va,Q as Fh,J as Wh,K as zh,L as Ea,M as Ar,R as Ll,S as ts,T as Wt,U as cs,V as Lt}from"./index.es-DwcFMDuM.js";function Ca(t,e={}){const{key:s="fallback",name:r="Fallback",rank:i=!1,shouldThrow:n=Hh,retryCount:o,retryDelay:a}=e;return(({chain:c,pollingInterval:l=4e3,timeout:u,...h})=>{let d=t,m=()=>{};const w=Oh({key:s,name:r,async request({method:g,params:f}){let y;const b=async(E=0)=>{const C=d[E]({...h,chain:c,retryCount:0,timeout:u});try{const S=await C.request({method:g,params:f});return m({method:g,params:f,response:S,transport:C,status:"success"}),S}catch(S){if(m({error:S,method:g,params:f,transport:C,status:"error"}),n(S)||E===d.length-1||(y??=d.slice(E+1).some(N=>{const{include:_,exclude:U}=N({chain:c}).config.methods||{};return _?_.includes(g):U?!U.includes(g):!0}),!y))throw S;return b(E+1)}};return b()},retryCount:o,retryDelay:a,type:"fallback"},{onResponse:g=>m=g,transports:d.map(g=>g({chain:c,retryCount:0}))});if(i){const g=typeof i=="object"?i:{};Vh({chain:c,interval:g.interval??l,onTransports:f=>d=f,ping:g.ping,sampleCount:g.sampleCount,timeout:g.timeout,transports:d,weights:g.weights})}return w})}function Hh(t){return!!("code"in t&&typeof t.code=="number"&&(t.code===Th.code||t.code===xh.code||$h.nodeMessage.test(t.message)||t.code===5e3))}function Vh({chain:t,interval:e=4e3,onTransports:s,ping:r,sampleCount:i=10,timeout:n=1e3,transports:o,weights:a={}}){const{stability:c=.7,latency:l=.3}=a,u=[],h=async()=>{const d=await Promise.all(o.map(async g=>{const f=g({chain:t,retryCount:0,timeout:n}),y=Date.now();let b,E;try{await(r?r({transport:f}):f.request({method:"net_listening"})),E=1}catch{E=0}finally{b=Date.now()}return{latency:b-y,success:E}}));u.push(d),u.length>i&&u.shift();const m=Math.max(...u.map(g=>Math.max(...g.map(({latency:f})=>f)))),w=o.map((g,f)=>{const y=u.map(N=>N[f].latency),E=1-y.reduce((N,_)=>N+_,0)/y.length/m,C=u.map(N=>N[f].success),S=C.reduce((N,_)=>N+_,0)/C.length;return S===0?[0,f]:[l*E+c*S,f]}).sort((g,f)=>f[0]-g[0]);s(w.map(([,g])=>o[g])),await Rh(e),h()};h()}var Kh={},Ia={};const z={WC_NAME_SUFFIX:".reown.id",WC_NAME_SUFFIX_LEGACY:".wcn.id",BLOCKCHAIN_API_RPC_URL:"https://rpc.walletconnect.org",PULSE_API_URL:"https://pulse.walletconnect.org",W3M_API_URL:"https://api.web3modal.org",CONNECTOR_ID:{WALLET_CONNECT:"walletConnect",INJECTED:"injected",WALLET_STANDARD:"announced",COINBASE:"coinbaseWallet",COINBASE_SDK:"coinbaseWalletSDK",SAFE:"safe",LEDGER:"ledger",OKX:"okx",EIP6963:"eip6963",AUTH:"ID_AUTH"},CONNECTOR_NAMES:{AUTH:"Auth"},AUTH_CONNECTOR_SUPPORTED_CHAINS:["eip155","solana"],LIMITS:{PENDING_TRANSACTIONS:99},CHAIN:{EVM:"eip155",SOLANA:"solana",POLKADOT:"polkadot",BITCOIN:"bip122"},CHAIN_NAME_MAP:{eip155:"EVM Networks",solana:"Solana",polkadot:"Polkadot",bip122:"Bitcoin",cosmos:"Cosmos"},ADAPTER_TYPES:{BITCOIN:"bitcoin",SOLANA:"solana",WAGMI:"wagmi",ETHERS:"ethers",ETHERS5:"ethers5"},USDT_CONTRACT_ADDRESSES:["0xdac17f958d2ee523a2206206994597c13d831ec7","0xc2132d05d31c914a87c6611c10748aeb04b58e8f","0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7","0x919C1c267BC06a7039e03fcc2eF738525769109c","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e","0x55d398326f99059fF775485246999027B3197955","0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],HTTP_STATUS_CODES:{SERVICE_UNAVAILABLE:503,FORBIDDEN:403},UNSUPPORTED_NETWORK_NAME:"Unknown Network",SECURE_SITE_SDK_ORIGIN:(typeof Kh<"u"&&typeof Ia<"u"?Ia.NEXT_PUBLIC_SECURE_SITE_ORIGIN:void 0)||"https://secure.walletconnect.org"},Ml={caipNetworkIdToNumber(t){return t?Number(t.split(":")[1]):void 0},parseEvmChainId(t){return typeof t=="string"?this.caipNetworkIdToNumber(t):t},getNetworksByNamespace(t,e){return t?.filter(s=>s.chainNamespace===e)||[]},getFirstNetworkByNamespace(t,e){return this.getNetworksByNamespace(t,e)[0]},getNetworkNameByCaipNetworkId(t,e){if(!e)return;const s=t.find(i=>i.caipNetworkId===e);if(s)return s.name;const[r]=e.split(":");return z.CHAIN_NAME_MAP?.[r]||void 0}};var Gh=20,Jh=1,Ws=1e6,Aa=1e6,Yh=-7,Xh=21,Zh=!1,xi="[big.js] ",Xs=xi+"Invalid ",An=Xs+"decimal places",Qh=Xs+"rounding mode",Bl=xi+"Division by zero",ge={},Vt=void 0,ed=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function jl(){function t(e){var s=this;if(!(s instanceof t))return e===Vt?jl():new t(e);if(e instanceof t)s.s=e.s,s.e=e.e,s.c=e.c.slice();else{if(typeof e!="string"){if(t.strict===!0&&typeof e!="bigint")throw TypeError(Xs+"value");e=e===0&&1/e<0?"-0":String(e)}td(s,e)}s.constructor=t}return t.prototype=ge,t.DP=Gh,t.RM=Jh,t.NE=Yh,t.PE=Xh,t.strict=Zh,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}function td(t,e){var s,r,i;if(!ed.test(e))throw Error(Xs+"number");for(t.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1,(s=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(s<0&&(s=r),s+=+e.slice(r+1),e=e.substring(0,r)):s<0&&(s=e.length),i=e.length,r=0;r0&&e.charAt(--i)=="0";);for(t.e=s-r-1,t.c=[],s=0;r<=i;)t.c[s++]=+e.charAt(r++)}return t}function Zs(t,e,s,r){var i=t.c;if(s===Vt&&(s=t.constructor.RM),s!==0&&s!==1&&s!==2&&s!==3)throw Error(Qh);if(e<1)r=s===3&&(r||!!i[0])||e===0&&(s===1&&i[0]>=5||s===2&&(i[0]>5||i[0]===5&&(r||i[1]!==Vt))),i.length=1,r?(t.e=t.e-e+1,i[0]=1):i[0]=t.e=0;else if(e=5||s===2&&(i[e]>5||i[e]===5&&(r||i[e+1]!==Vt||i[e-1]&1))||s===3&&(r||!!i[0]),i.length=e,r){for(;++i[--e]>9;)if(i[e]=0,e===0){++t.e,i.unshift(1);break}}for(e=i.length;!i[--e];)i.pop()}return t}function Qs(t,e,s){var r=t.e,i=t.c.join(""),n=i.length;if(e)i=i.charAt(0)+(n>1?"."+i.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)i="0"+i;i="0."+i}else if(r>0)if(++r>n)for(r-=n;r--;)i+="0";else r1&&(i=i.charAt(0)+"."+i.slice(1));return t.s<0&&s?"-"+i:i}ge.abs=function(){var t=new this.constructor(this);return t.s=1,t};ge.cmp=function(t){var e,s=this,r=s.c,i=(t=new s.constructor(t)).c,n=s.s,o=t.s,a=s.e,c=t.e;if(!r[0]||!i[0])return r[0]?n:i[0]?-o:0;if(n!=o)return n;if(e=n<0,a!=c)return a>c^e?1:-1;for(o=(a=r.length)<(c=i.length)?a:c,n=-1;++ni[n]^e?1:-1;return a==c?0:a>c^e?1:-1};ge.div=function(t){var e=this,s=e.constructor,r=e.c,i=(t=new s(t)).c,n=e.s==t.s?1:-1,o=s.DP;if(o!==~~o||o<0||o>Ws)throw Error(An);if(!i[0])throw Error(Bl);if(!r[0])return t.s=n,t.c=[t.e=0],t;var a,c,l,u,h,d=i.slice(),m=a=i.length,w=r.length,g=r.slice(0,a),f=g.length,y=t,b=y.c=[],E=0,C=o+(y.e=e.e-t.e)+1;for(y.s=n,n=C<0?0:C,d.unshift(0);f++f?1:-1;else for(h=-1,u=0;++hg[h]?1:-1;break}if(u<0){for(c=f==a?i:d;f;){if(g[--f]C&&Zs(y,C,s.RM,g[0]!==Vt),y};ge.eq=function(t){return this.cmp(t)===0};ge.gt=function(t){return this.cmp(t)>0};ge.gte=function(t){return this.cmp(t)>-1};ge.lt=function(t){return this.cmp(t)<0};ge.lte=function(t){return this.cmp(t)<1};ge.minus=ge.sub=function(t){var e,s,r,i,n=this,o=n.constructor,a=n.s,c=(t=new o(t)).s;if(a!=c)return t.s=-c,n.plus(t);var l=n.c.slice(),u=n.e,h=t.c,d=t.e;if(!l[0]||!h[0])return h[0]?t.s=-c:l[0]?t=new o(n):t.s=1,t;if(a=u-d){for((i=a<0)?(a=-a,r=l):(d=u,r=h),r.reverse(),c=a;c--;)r.push(0);r.reverse()}else for(s=((i=l.length0)for(;c--;)l[e++]=0;for(c=e;s>a;){if(l[--s]0?(c=o,r=l):(e=-e,r=a),r.reverse();e--;)r.push(0);r.reverse()}for(a.length-l.length<0&&(r=l,l=a,a=r),e=l.length,s=0;e;a[e]%=10)s=(a[--e]=a[e]+l[e]+s)/10|0;for(s&&(a.unshift(s),++c),e=a.length;a[--e]===0;)a.pop();return t.c=a,t.e=c,t};ge.pow=function(t){var e=this,s=new e.constructor("1"),r=s,i=t<0;if(t!==~~t||t<-Aa||t>Aa)throw Error(Xs+"exponent");for(i&&(t=-t);t&1&&(r=r.times(e)),t>>=1,!!t;)e=e.times(e);return i?s.div(r):r};ge.prec=function(t,e){if(t!==~~t||t<1||t>Ws)throw Error(Xs+"precision");return Zs(new this.constructor(this),t,e)};ge.round=function(t,e){if(t===Vt)t=0;else if(t!==~~t||t<-Ws||t>Ws)throw Error(An);return Zs(new this.constructor(this),t+this.e+1,e)};ge.sqrt=function(){var t,e,s,r=this,i=r.constructor,n=r.s,o=r.e,a=new i("0.5");if(!r.c[0])return new i(r);if(n<0)throw Error(xi+"No square root");n=Math.sqrt(+Qs(r,!0,!0)),n===0||n===1/0?(e=r.c.join(""),e.length+o&1||(e+="0"),n=Math.sqrt(e),o=((o+1)/2|0)-(o<0||o&1),t=new i((n==1/0?"5e":(n=n.toExponential()).slice(0,n.indexOf("e")+1))+o)):t=new i(n+""),o=t.e+(i.DP+=4);do s=t,t=a.times(s.plus(r.div(s)));while(s.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return Zs(t,(i.DP-=4)+t.e+1,i.RM)};ge.times=ge.mul=function(t){var e,s=this,r=s.constructor,i=s.c,n=(t=new r(t)).c,o=i.length,a=n.length,c=s.e,l=t.e;if(t.s=s.s==t.s?1:-1,!i[0]||!n[0])return t.c=[t.e=0],t;for(t.e=c+l,oc;)a=e[l]+n[c]*i[l-c-1]+a,e[l--]=a%10,a=a/10|0;e[l]=a}for(a?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t};ge.toExponential=function(t,e){var s=this,r=s.c[0];if(t!==Vt){if(t!==~~t||t<0||t>Ws)throw Error(An);for(s=Zs(new s.constructor(s),++t,e);s.c.lengthWs)throw Error(An);for(s=Zs(new s.constructor(s),t+s.e+1,e),t=t+s.e+1;s.c.length=e.PE,!!t.c[0])};ge.toNumber=function(){var t=+Qs(this,!0,!0);if(this.constructor.strict===!0&&!this.eq(t.toString()))throw Error(xi+"Imprecise conversion");return t};ge.toPrecision=function(t,e){var s=this,r=s.constructor,i=s.c[0];if(t!==Vt){if(t!==~~t||t<1||t>Ws)throw Error(Xs+"precision");for(s=Zs(new r(s),t,e);s.c.length=r.PE,!!i)};ge.valueOf=function(){var t=this,e=t.constructor;if(e.strict===!0)throw Error(xi+"valueOf disallowed");return Qs(t,t.e<=e.NE||t.e>=e.PE,!0)};var Jr=jl();const sd={bigNumber(t){return t?new Jr(t):new Jr(0)},multiply(t,e){if(t===void 0||e===void 0)return new Jr(0);const s=new Jr(t),r=new Jr(e);return s.times(r)},formatNumberToLocalString(t,e=2){return t===void 0?"0.00":typeof t=="number"?t.toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e}):parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e})},parseLocalStringToNumber(t){return t===void 0?0:parseFloat(t.replace(/,/gu,""))}},rd=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],id=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]}],nd=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],od={getERC20Abi:t=>z.USDT_CONTRACT_ADDRESSES.includes(t)?nd:rd,getSwapAbi:()=>id},ls={validateCaipAddress(t){if(t.split(":")?.length!==3)throw new Error("Invalid CAIP Address");return t},parseCaipAddress(t){const e=t.split(":");if(e.length!==3)throw new Error(`Invalid CAIP-10 address: ${t}`);const[s,r,i]=e;if(!s||!r||!i)throw new Error(`Invalid CAIP-10 address: ${t}`);return{chainNamespace:s,chainId:r,address:i}},parseCaipNetworkId(t){const e=t.split(":");if(e.length!==2)throw new Error(`Invalid CAIP-2 network id: ${t}`);const[s,r]=e;if(!s||!r)throw new Error(`Invalid CAIP-2 network id: ${t}`);return{chainNamespace:s,chainId:r}}},ee={WALLET_ID:"@appkit/wallet_id",WALLET_NAME:"@appkit/wallet_name",SOLANA_WALLET:"@appkit/solana_wallet",SOLANA_CAIP_CHAIN:"@appkit/solana_caip_chain",ACTIVE_CAIP_NETWORK_ID:"@appkit/active_caip_network_id",CONNECTED_SOCIAL:"@appkit/connected_social",CONNECTED_SOCIAL_USERNAME:"@appkit-wallet/SOCIAL_USERNAME",RECENT_WALLETS:"@appkit/recent_wallets",DEEPLINK_CHOICE:"WALLETCONNECT_DEEPLINK_CHOICE",ACTIVE_NAMESPACE:"@appkit/active_namespace",CONNECTED_NAMESPACES:"@appkit/connected_namespaces",CONNECTION_STATUS:"@appkit/connection_status",SIWX_AUTH_TOKEN:"@appkit/siwx-auth-token",SIWX_NONCE_TOKEN:"@appkit/siwx-nonce-token",TELEGRAM_SOCIAL_PROVIDER:"@appkit/social_provider",NATIVE_BALANCE_CACHE:"@appkit/native_balance_cache",PORTFOLIO_CACHE:"@appkit/portfolio_cache",ENS_CACHE:"@appkit/ens_cache",IDENTITY_CACHE:"@appkit/identity_cache",PREFERRED_ACCOUNT_TYPES:"@appkit/preferred_account_types",CONNECTIONS:"@appkit/connections"};function Dn(t){if(!t)throw new Error("Namespace is required for CONNECTED_CONNECTOR_ID");return`@appkit/${t}:connected_connector_id`}const Z={setItem(t,e){ni()&&e!==void 0&&localStorage.setItem(t,e)},getItem(t){if(ni())return localStorage.getItem(t)||void 0},removeItem(t){ni()&&localStorage.removeItem(t)},clear(){ni()&&localStorage.clear()}};function ni(){return typeof window<"u"&&typeof localStorage<"u"}function bs(t,e){return e==="light"?{"--w3m-accent":t?.["--w3m-accent"]||"hsla(231, 100%, 70%, 1)","--w3m-background":"#fff"}:{"--w3m-accent":t?.["--w3m-accent"]||"hsla(230, 100%, 67%, 1)","--w3m-background":"#121313"}}const ad=Symbol(),Na=Object.getPrototypeOf,mo=new WeakMap,cd=t=>t&&(mo.has(t)?mo.get(t):Na(t)===Object.prototype||Na(t)===Array.prototype),ld=t=>cd(t)&&t[ad]||null,_a=(t,e=!0)=>{mo.set(t,e)},fn={},Ln=t=>typeof t=="object"&&t!==null,gs=new WeakMap,oi=new WeakSet,ud=(t=Object.is,e=(l,u)=>new Proxy(l,u),s=l=>Ln(l)&&!oi.has(l)&&(Array.isArray(l)||!(Symbol.iterator in l))&&!(l instanceof WeakMap)&&!(l instanceof WeakSet)&&!(l instanceof Error)&&!(l instanceof Number)&&!(l instanceof Date)&&!(l instanceof String)&&!(l instanceof RegExp)&&!(l instanceof ArrayBuffer),r=l=>{switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:throw l}},i=new WeakMap,n=(l,u,h=r)=>{const d=i.get(l);if(d?.[0]===u)return d[1];const m=Array.isArray(l)?[]:Object.create(Object.getPrototypeOf(l));return _a(m,!0),i.set(l,[u,m]),Reflect.ownKeys(l).forEach(w=>{if(Object.getOwnPropertyDescriptor(m,w))return;const g=Reflect.get(l,w),{enumerable:f}=Reflect.getOwnPropertyDescriptor(l,w),y={value:g,enumerable:f,configurable:!0};if(oi.has(g))_a(g,!1);else if(g instanceof Promise)delete y.value,y.get=()=>h(g);else if(gs.has(g)){const[b,E]=gs.get(g);y.value=n(b,E(),h)}Object.defineProperty(m,w,y)}),Object.preventExtensions(m)},o=new WeakMap,a=[1,1],c=l=>{if(!Ln(l))throw new Error("object required");const u=o.get(l);if(u)return u;let h=a[0];const d=new Set,m=(v,$=++a[0])=>{h!==$&&(h=$,d.forEach(I=>I(v,$)))};let w=a[1];const g=(v=++a[1])=>(w!==v&&!d.size&&(w=v,y.forEach(([$])=>{const I=$[1](v);I>h&&(h=I)})),h),f=v=>($,I)=>{const L=[...$];L[1]=[v,...L[1]],m(L,I)},y=new Map,b=(v,$)=>{if((fn?"production":void 0)!=="production"&&y.has(v))throw new Error("prop listener already exists");if(d.size){const I=$[3](f(v));y.set(v,[$,I])}else y.set(v,[$])},E=v=>{var $;const I=y.get(v);I&&(y.delete(v),($=I[1])==null||$.call(I))},C=v=>(d.add(v),d.size===1&&y.forEach(([I,L],H)=>{if((fn?"production":void 0)!=="production"&&L)throw new Error("remove already exists");const A=I[3](f(H));y.set(H,[I,A])}),()=>{d.delete(v),d.size===0&&y.forEach(([I,L],H)=>{L&&(L(),y.set(H,[I]))})}),S=Array.isArray(l)?[]:Object.create(Object.getPrototypeOf(l)),_=e(S,{deleteProperty(v,$){const I=Reflect.get(v,$);E($);const L=Reflect.deleteProperty(v,$);return L&&m(["delete",[$],I]),L},set(v,$,I,L){const H=Reflect.has(v,$),A=Reflect.get(v,$,L);if(H&&(t(A,I)||o.has(I)&&t(A,o.get(I))))return!0;E($),Ln(I)&&(I=ld(I)||I);let T=I;if(I instanceof Promise)I.then(k=>{I.status="fulfilled",I.value=k,m(["resolve",[$],k])}).catch(k=>{I.status="rejected",I.reason=k,m(["reject",[$],k])});else{!gs.has(I)&&s(I)&&(T=c(I));const k=!oi.has(T)&&gs.get(T);k&&b($,k)}return Reflect.set(v,$,T,L),m(["set",[$],I,A]),!0}});o.set(l,_);const U=[S,g,n,C];return gs.set(_,U),Reflect.ownKeys(l).forEach(v=>{const $=Object.getOwnPropertyDescriptor(l,v);"value"in $&&(_[v]=l[v],delete $.value,delete $.writable),Object.defineProperty(S,v,$)}),_})=>[c,gs,oi,t,e,s,r,i,n,o,a],[hd]=ud();function _e(t={}){return hd(t)}function Ze(t,e,s){const r=gs.get(t);(fn?"production":void 0)!=="production"&&!r&&console.warn("Please use proxy object");let i;const n=[],o=r[3];let a=!1;const l=o(u=>{n.push(u),i||(i=Promise.resolve().then(()=>{i=void 0,a&&e(n.splice(0))}))});return a=!0,()=>{a=!1,l()}}function Ei(t,e){const s=gs.get(t);(fn?"production":void 0)!=="production"&&!s&&console.warn("Please use proxy object");const[r,i,n]=s;return n(r,i(),e)}function zs(t){return oi.add(t),t}function Qe(t,e,s,r){let i=t[e];return Ze(t,()=>{const n=t[e];Object.is(i,n)||s(i=n)})}function dd(t){const e=_e({data:Array.from([]),has(s){return this.data.some(r=>r[0]===s)},set(s,r){const i=this.data.find(n=>n[0]===s);return i?i[1]=r:this.data.push([s,r]),this},get(s){var r;return(r=this.data.find(i=>i[0]===s))==null?void 0:r[1]},delete(s){const r=this.data.findIndex(i=>i[0]===s);return r===-1?!1:(this.data.splice(r,1),!0)},clear(){this.data.splice(0)},get size(){return this.data.length},toJSON(){return new Map(this.data)},forEach(s){this.data.forEach(r=>{s(r[1],r[0],this)})},keys(){return this.data.map(s=>s[0]).values()},values(){return this.data.map(s=>s[1]).values()},entries(){return new Map(this.data).entries()},get[Symbol.toStringTag](){return"Map"},[Symbol.iterator](){return this.entries()}});return Object.defineProperties(e,{data:{enumerable:!1},size:{enumerable:!1},toJSON:{enumerable:!1}}),Object.seal(e),e}const ql=[{label:"Coinbase",name:"coinbase",feeRange:"1-2%",url:"",supportedChains:["eip155"]},{label:"Meld.io",name:"meld",feeRange:"1-2%",url:"https://meldcrypto.com",supportedChains:["eip155","solana"]}],pd="WXETMuFUQmqqybHuRkSgxv:25B8LJHSfpG6LVjR2ytU5Cwh7Z4Sch2ocoU",ve={FOUR_MINUTES_MS:24e4,TEN_SEC_MS:1e4,ONE_SEC_MS:1e3,BALANCE_SUPPORTED_CHAINS:["eip155","solana"],NAMES_SUPPORTED_CHAIN_NAMESPACES:["eip155"],NATIVE_TOKEN_ADDRESS:{eip155:"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",solana:"So11111111111111111111111111111111111111111",polkadot:"0x",bip122:"0x",cosmos:"0x"},CONVERT_SLIPPAGE_TOLERANCE:1,CONNECT_LABELS:{MOBILE:"Open and continue in the wallet app"},SEND_SUPPORTED_NAMESPACES:["eip155","solana"],DEFAULT_REMOTE_FEATURES:{swaps:["1inch"],onramp:["coinbase","meld"],email:!0,socials:["google","x","discord","farcaster","github","apple","facebook"],activity:!0,reownBranding:!0},DEFAULT_REMOTE_FEATURES_DISABLED:{email:!1,socials:!1,swaps:!1,onramp:!1,activity:!1,reownBranding:!1},DEFAULT_FEATURES:{receive:!0,send:!0,emailShowWallets:!0,connectorTypeOrder:["walletConnect","recent","injected","featured","custom","external","recommended"],analytics:!0,allWallets:!0,legalCheckbox:!1,smartSessions:!1,collapseWallets:!1,walletFeaturesOrder:["onramp","swaps","receive","send"],connectMethodsOrder:void 0,pay:!1},DEFAULT_ACCOUNT_TYPES:{bip122:"payment",eip155:"smartAccount",polkadot:"eoa",solana:"eoa"},ADAPTER_TYPES:{UNIVERSAL:"universal"}},F={cacheExpiry:{portfolio:3e4,nativeBalance:3e4,ens:3e5,identity:3e5},isCacheExpired(t,e){return Date.now()-t>e},getActiveNetworkProps(){const t=F.getActiveNamespace(),e=F.getActiveCaipNetworkId(),s=e?e.split(":")[1]:void 0,r=s?isNaN(Number(s))?s:Number(s):void 0;return{namespace:t,caipNetworkId:e,chainId:r}},setWalletConnectDeepLink({name:t,href:e}){try{Z.setItem(ee.DEEPLINK_CHOICE,JSON.stringify({href:e,name:t}))}catch{console.info("Unable to set WalletConnect deep link")}},getWalletConnectDeepLink(){try{const t=Z.getItem(ee.DEEPLINK_CHOICE);if(t)return JSON.parse(t)}catch{console.info("Unable to get WalletConnect deep link")}},deleteWalletConnectDeepLink(){try{Z.removeItem(ee.DEEPLINK_CHOICE)}catch{console.info("Unable to delete WalletConnect deep link")}},setActiveNamespace(t){try{Z.setItem(ee.ACTIVE_NAMESPACE,t)}catch{console.info("Unable to set active namespace")}},setActiveCaipNetworkId(t){try{Z.setItem(ee.ACTIVE_CAIP_NETWORK_ID,t),F.setActiveNamespace(t.split(":")[0])}catch{console.info("Unable to set active caip network id")}},getActiveCaipNetworkId(){try{return Z.getItem(ee.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to get active caip network id");return}},deleteActiveCaipNetworkId(){try{Z.removeItem(ee.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to delete active caip network id")}},deleteConnectedConnectorId(t){try{const e=Dn(t);Z.removeItem(e)}catch{console.info("Unable to delete connected connector id")}},setAppKitRecent(t){try{const e=F.getRecentWallets();e.find(r=>r.id===t.id)||(e.unshift(t),e.length>2&&e.pop(),Z.setItem(ee.RECENT_WALLETS,JSON.stringify(e)))}catch{console.info("Unable to set AppKit recent")}},getRecentWallets(){try{const t=Z.getItem(ee.RECENT_WALLETS);return t?JSON.parse(t):[]}catch{console.info("Unable to get AppKit recent")}return[]},setConnectedConnectorId(t,e){try{const s=Dn(t);Z.setItem(s,e)}catch{console.info("Unable to set Connected Connector Id")}},getActiveNamespace(){try{return Z.getItem(ee.ACTIVE_NAMESPACE)}catch{console.info("Unable to get active namespace")}},getConnectedConnectorId(t){if(t)try{const e=Dn(t);return Z.getItem(e)}catch{console.info("Unable to get connected connector id in namespace ",t)}},setConnectedSocialProvider(t){try{Z.setItem(ee.CONNECTED_SOCIAL,t)}catch{console.info("Unable to set connected social provider")}},getConnectedSocialProvider(){try{return Z.getItem(ee.CONNECTED_SOCIAL)}catch{console.info("Unable to get connected social provider")}},deleteConnectedSocialProvider(){try{Z.removeItem(ee.CONNECTED_SOCIAL)}catch{console.info("Unable to delete connected social provider")}},getConnectedSocialUsername(){try{return Z.getItem(ee.CONNECTED_SOCIAL_USERNAME)}catch{console.info("Unable to get connected social username")}},getStoredActiveCaipNetworkId(){return Z.getItem(ee.ACTIVE_CAIP_NETWORK_ID)?.split(":")?.[1]},setConnectionStatus(t){try{Z.setItem(ee.CONNECTION_STATUS,t)}catch{console.info("Unable to set connection status")}},getConnectionStatus(){try{return Z.getItem(ee.CONNECTION_STATUS)}catch{return}},getConnectedNamespaces(){try{const t=Z.getItem(ee.CONNECTED_NAMESPACES);return t?.length?t.split(","):[]}catch{return[]}},setConnectedNamespaces(t){try{const e=Array.from(new Set(t));Z.setItem(ee.CONNECTED_NAMESPACES,e.join(","))}catch{console.info("Unable to set namespaces in storage")}},addConnectedNamespace(t){try{const e=F.getConnectedNamespaces();e.includes(t)||(e.push(t),F.setConnectedNamespaces(e))}catch{console.info("Unable to add connected namespace")}},removeConnectedNamespace(t){try{const e=F.getConnectedNamespaces(),s=e.indexOf(t);s>-1&&(e.splice(s,1),F.setConnectedNamespaces(e))}catch{console.info("Unable to remove connected namespace")}},getTelegramSocialProvider(){try{return Z.getItem(ee.TELEGRAM_SOCIAL_PROVIDER)}catch{return console.info("Unable to get telegram social provider"),null}},setTelegramSocialProvider(t){try{Z.setItem(ee.TELEGRAM_SOCIAL_PROVIDER,t)}catch{console.info("Unable to set telegram social provider")}},removeTelegramSocialProvider(){try{Z.removeItem(ee.TELEGRAM_SOCIAL_PROVIDER)}catch{console.info("Unable to remove telegram social provider")}},getBalanceCache(){let t={};try{const e=Z.getItem(ee.PORTFOLIO_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromBalanceCache(t){try{const e=F.getBalanceCache();Z.setItem(ee.PORTFOLIO_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getBalanceCacheForCaipAddress(t){try{const s=F.getBalanceCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.portfolio))return s.balance;F.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateBalanceCache(t){try{const e=F.getBalanceCache();e[t.caipAddress]=t,Z.setItem(ee.PORTFOLIO_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getNativeBalanceCache(){let t={};try{const e=Z.getItem(ee.NATIVE_BALANCE_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromNativeBalanceCache(t){try{const e=F.getBalanceCache();Z.setItem(ee.NATIVE_BALANCE_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getNativeBalanceCacheForCaipAddress(t){try{const s=F.getNativeBalanceCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.nativeBalance))return s;console.info("Discarding cache for address",t),F.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateNativeBalanceCache(t){try{const e=F.getNativeBalanceCache();e[t.caipAddress]=t,Z.setItem(ee.NATIVE_BALANCE_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getEnsCache(){let t={};try{const e=Z.getItem(ee.ENS_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get ens name cache")}return t},getEnsFromCacheForAddress(t){try{const s=F.getEnsCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.ens))return s.ens;F.removeEnsFromCache(t)}catch{console.info("Unable to get ens name from cache",t)}},updateEnsCache(t){try{const e=F.getEnsCache();e[t.address]=t,Z.setItem(ee.ENS_CACHE,JSON.stringify(e))}catch{console.info("Unable to update ens name cache",t)}},removeEnsFromCache(t){try{const e=F.getEnsCache();Z.setItem(ee.ENS_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove ens name from cache",t)}},getIdentityCache(){let t={};try{const e=Z.getItem(ee.IDENTITY_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get identity cache")}return t},getIdentityFromCacheForAddress(t){try{const s=F.getIdentityCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.identity))return s.identity;F.removeIdentityFromCache(t)}catch{console.info("Unable to get identity from cache",t)}},updateIdentityCache(t){try{const e=F.getIdentityCache();e[t.address]={identity:t.identity,timestamp:t.timestamp},Z.setItem(ee.IDENTITY_CACHE,JSON.stringify(e))}catch{console.info("Unable to update identity cache",t)}},removeIdentityFromCache(t){try{const e=F.getIdentityCache();Z.setItem(ee.IDENTITY_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove identity from cache",t)}},clearAddressCache(){try{Z.removeItem(ee.PORTFOLIO_CACHE),Z.removeItem(ee.NATIVE_BALANCE_CACHE),Z.removeItem(ee.ENS_CACHE),Z.removeItem(ee.IDENTITY_CACHE)}catch{console.info("Unable to clear address cache")}},setPreferredAccountTypes(t){try{Z.setItem(ee.PREFERRED_ACCOUNT_TYPES,JSON.stringify(t))}catch{console.info("Unable to set preferred account types",t)}},getPreferredAccountTypes(){try{const t=Z.getItem(ee.PREFERRED_ACCOUNT_TYPES);return t?JSON.parse(t):{}}catch{console.info("Unable to get preferred account types")}return{}},setConnections(t,e){try{const s={...F.getConnections(),[e]:t};Z.setItem(ee.CONNECTIONS,JSON.stringify(s))}catch(s){console.error("Unable to sync connections to storage",s)}},getConnections(){try{const t=Z.getItem(ee.CONNECTIONS);return t?JSON.parse(t):{}}catch(t){return console.error("Unable to get connections from storage",t),{}}}},X={isMobile(){return this.isClient()?!!(typeof window?.matchMedia=="function"&&window?.matchMedia("(pointer:coarse)")?.matches||/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini/u.test(navigator.userAgent)):!1},checkCaipNetwork(t,e=""){return t?.caipNetworkId.toLocaleLowerCase().includes(e.toLowerCase())},isAndroid(){if(!this.isMobile())return!1;const t=window?.navigator.userAgent.toLowerCase();return X.isMobile()&&t.includes("android")},isIos(){if(!this.isMobile())return!1;const t=window?.navigator.userAgent.toLowerCase();return t.includes("iphone")||t.includes("ipad")},isSafari(){return this.isClient()?(window?.navigator.userAgent.toLowerCase()).includes("safari"):!1},isClient(){return typeof window<"u"},isPairingExpired(t){return t?t-Date.now()<=ve.TEN_SEC_MS:!0},isAllowedRetry(t,e=ve.ONE_SEC_MS){return Date.now()-t>=e},copyToClopboard(t){navigator.clipboard.writeText(t)},isIframe(){try{return window?.self!==window?.top}catch{return!1}},isSafeApp(){if(X.isClient()&&window.self!==window.top)try{const t=window?.location?.ancestorOrigins?.[0],e="https://app.safe.global";if(t){const s=new URL(t),r=new URL(e);return s.hostname===r.hostname}}catch{return!1}return!1},getPairingExpiry(){return Date.now()+ve.FOUR_MINUTES_MS},getNetworkId(t){return t?.split(":")[1]},getPlainAddress(t){return t?.split(":")[2]},async wait(t){return new Promise(e=>{setTimeout(e,t)})},debounce(t,e=500){let s;return(...r)=>{function i(){t(...r)}s&&clearTimeout(s),s=setTimeout(i,e)}},isHttpUrl(t){return t.startsWith("http://")||t.startsWith("https://")},formatNativeUrl(t,e,s=null){if(X.isHttpUrl(t))return this.formatUniversalUrl(t,e);let r=t,i=s;r.includes("://")||(r=t.replaceAll("/","").replaceAll(":",""),r=`${r}://`),r.endsWith("/")||(r=`${r}/`),i&&!i?.endsWith("/")&&(i=`${i}/`),this.isTelegram()&&this.isAndroid()&&(e=encodeURIComponent(e));const n=encodeURIComponent(e);return{redirect:`${r}wc?uri=${n}`,redirectUniversalLink:i?`${i}wc?uri=${n}`:void 0,href:r}},formatUniversalUrl(t,e){if(!X.isHttpUrl(t))return this.formatNativeUrl(t,e);let s=t;s.endsWith("/")||(s=`${s}/`);const r=encodeURIComponent(e);return{redirect:`${s}wc?uri=${r}`,href:s}},getOpenTargetForPlatform(t){return t==="popupWindow"?t:this.isTelegram()?F.getTelegramSocialProvider()?"_top":"_blank":t},openHref(t,e,s){window?.open(t,this.getOpenTargetForPlatform(e),s||"noreferrer noopener")},returnOpenHref(t,e,s){return window?.open(t,this.getOpenTargetForPlatform(e),s||"noreferrer noopener")},isTelegram(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)},isPWA(){if(typeof window>"u")return!1;const t=window.matchMedia?.("(display-mode: standalone)")?.matches,e=window?.navigator?.standalone;return!!(t||e)},async preloadImage(t){const e=new Promise((s,r)=>{const i=new Image;i.onload=s,i.onerror=r,i.crossOrigin="anonymous",i.src=t});return Promise.race([e,X.wait(2e3)])},formatBalance(t,e){let s="0.000";if(typeof t=="string"){const r=Number(t);if(r){const i=Math.floor(r*1e3)/1e3;i&&(s=i.toString())}}return`${s}${e?` ${e}`:""}`},formatBalance2(t,e){let s;if(t==="0")s="0";else if(typeof t=="string"){const r=Number(t);r&&(s=r.toString().match(/^-?\d+(?:\.\d{0,3})?/u)?.[0])}return{value:s??"0",rest:s==="0"?"000":"",symbol:e}},getApiUrl(){return z.W3M_API_URL},getBlockchainApiUrl(){return z.BLOCKCHAIN_API_RPC_URL},getAnalyticsUrl(){return z.PULSE_API_URL},getUUID(){return crypto?.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})},parseError(t){return typeof t=="string"?t:typeof t?.issues?.[0]?.message=="string"?t.issues[0].message:t instanceof Error?t.message:"Unknown error"},sortRequestedNetworks(t,e=[]){const s={};return e&&t&&(t.forEach((r,i)=>{s[r]=i}),e.sort((r,i)=>{const n=s[r.id],o=s[i.id];return n!==void 0&&o!==void 0?n-o:n!==void 0?-1:o!==void 0?1:0})),e},calculateBalance(t){let e=0;for(const s of t)e+=s.value??0;return e},formatTokenBalance(t){const e=t.toFixed(2),[s,r]=e.split(".");return{dollars:s,pennies:r}},isAddress(t,e="eip155"){switch(e){case"eip155":if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)){if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)||/^(?:0x)?[0-9A-F]{40}$/iu.test(t))return!0}else return!1;return!1;case"solana":return/[1-9A-HJ-NP-Za-km-z]{32,44}$/iu.test(t);default:return!1}},uniqueBy(t,e){const s=new Set;return t.filter(r=>{const i=r[e];return s.has(i)?!1:(s.add(i),!0)})},generateSdkVersion(t,e,s){const i=t.length===0?ve.ADAPTER_TYPES.UNIVERSAL:t.map(n=>n.adapterType).join(",");return`${e}-${i}-${s}`},createAccount(t,e,s,r,i){return{namespace:t,address:e,type:s,publicKey:r,path:i}},isCaipAddress(t){if(typeof t!="string")return!1;const e=t.split(":"),s=e[0];return e.filter(Boolean).length===3&&s in z.CHAIN_NAME_MAP},isMac(){const t=window?.navigator.userAgent.toLowerCase();return t.includes("macintosh")&&!t.includes("safari")},formatTelegramSocialLoginUrl(t){const e=`--${encodeURIComponent(window?.location.href)}`,s="state=";if(new URL(t).host==="auth.magic.link"){const i="provider_authorization_url=",n=t.substring(t.indexOf(i)+i.length),o=this.injectIntoUrl(decodeURIComponent(n),s,e);return t.replace(n,encodeURIComponent(o))}return this.injectIntoUrl(t,s,e)},injectIntoUrl(t,e,s){const r=t.indexOf(e);if(r===-1)throw new Error(`${e} parameter not found in the URL: ${t}`);const i=t.indexOf("&",r),n=e.length,o=i!==-1?i:t.length,a=t.substring(0,r+n),c=t.substring(r+n,o),l=t.substring(i),u=c+s;return a+u+l}};async function Yr(...t){const e=await fetch(...t);if(!e.ok)throw new Error(`HTTP status code: ${e.status}`,{cause:e});return e}class $i{constructor({baseUrl:e,clientId:s}){this.baseUrl=e,this.clientId=s}async get({headers:e,signal:s,cache:r,...i}){const n=this.createUrl(i);return(await Yr(n,{method:"GET",headers:e,signal:s,cache:r})).json()}async getBlob({headers:e,signal:s,...r}){const i=this.createUrl(r);return(await Yr(i,{method:"GET",headers:e,signal:s})).blob()}async post({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Yr(n,{method:"POST",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}async put({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Yr(n,{method:"PUT",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}async delete({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Yr(n,{method:"DELETE",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}createUrl({path:e,params:s}){const r=new URL(e,this.baseUrl);return s&&Object.entries(s).forEach(([i,n])=>{n&&r.searchParams.append(i,n)}),this.clientId&&r.searchParams.append("clientId",this.clientId),r}}const fd={getFeatureValue(t,e){const s=e?.[t];return s===void 0?ve.DEFAULT_FEATURES[t]:s},filterSocialsByPlatform(t){if(!t||!t.length)return t;if(X.isTelegram()){if(X.isIos())return t.filter(e=>e!=="google");if(X.isMac())return t.filter(e=>e!=="x");if(X.isAndroid())return t.filter(e=>!["facebook","x"].includes(e))}return t}},K=_e({features:ve.DEFAULT_FEATURES,projectId:"",sdkType:"appkit",sdkVersion:"html-wagmi-undefined",defaultAccountTypes:ve.DEFAULT_ACCOUNT_TYPES,enableNetworkSwitch:!0,experimental_preferUniversalLinks:!1,remoteFeatures:{}}),O={state:K,subscribeKey(t,e){return Qe(K,t,e)},setOptions(t){Object.assign(K,t)},setRemoteFeatures(t){if(!t)return;const e={...K.remoteFeatures,...t};K.remoteFeatures=e,K.remoteFeatures?.socials&&(K.remoteFeatures.socials=fd.filterSocialsByPlatform(K.remoteFeatures.socials))},setFeatures(t){if(!t)return;K.features||(K.features=ve.DEFAULT_FEATURES);const e={...K.features,...t};K.features=e},setProjectId(t){K.projectId=t},setCustomRpcUrls(t){K.customRpcUrls=t},setAllWallets(t){K.allWallets=t},setIncludeWalletIds(t){K.includeWalletIds=t},setExcludeWalletIds(t){K.excludeWalletIds=t},setFeaturedWalletIds(t){K.featuredWalletIds=t},setTokens(t){K.tokens=t},setTermsConditionsUrl(t){K.termsConditionsUrl=t},setPrivacyPolicyUrl(t){K.privacyPolicyUrl=t},setCustomWallets(t){K.customWallets=t},setIsSiweEnabled(t){K.isSiweEnabled=t},setIsUniversalProvider(t){K.isUniversalProvider=t},setSdkVersion(t){K.sdkVersion=t},setMetadata(t){K.metadata=t},setDisableAppend(t){K.disableAppend=t},setEIP6963Enabled(t){K.enableEIP6963=t},setDebug(t){K.debug=t},setEnableWalletConnect(t){K.enableWalletConnect=t},setEnableWalletGuide(t){K.enableWalletGuide=t},setEnableAuthLogger(t){K.enableAuthLogger=t},setEnableWallets(t){K.enableWallets=t},setPreferUniversalLinks(t){K.experimental_preferUniversalLinks=t},setHasMultipleAddresses(t){K.hasMultipleAddresses=t},setSIWX(t){K.siwx=t},setConnectMethodsOrder(t){K.features={...K.features,connectMethodsOrder:t}},setWalletFeaturesOrder(t){K.features={...K.features,walletFeaturesOrder:t}},setSocialsOrder(t){K.remoteFeatures={...K.remoteFeatures,socials:t}},setCollapseWallets(t){K.features={...K.features,collapseWallets:t}},setEnableEmbedded(t){K.enableEmbedded=t},setAllowUnsupportedChain(t){K.allowUnsupportedChain=t},setManualWCControl(t){K.manualWCControl=t},setEnableNetworkSwitch(t){K.enableNetworkSwitch=t},setDefaultAccountTypes(t={}){Object.entries(t).forEach(([e,s])=>{s&&(K.defaultAccountTypes[e]=s)})},setUniversalProviderConfigOverride(t){K.universalProviderConfigOverride=t},getUniversalProviderConfigOverride(){return K.universalProviderConfigOverride},getSnapshot(){return Ei(K)}},gd=Object.freeze({enabled:!0,events:[]}),md=new $i({baseUrl:X.getAnalyticsUrl(),clientId:null}),wd=5,yd=60*1e3,us=_e({...gd}),bd={state:us,subscribeKey(t,e){return Qe(us,t,e)},async sendError(t,e){if(!us.enabled)return;const s=Date.now();if(us.events.filter(n=>{const o=new Date(n.properties.timestamp||"").getTime();return s-o=wd)return;const i={type:"error",event:e,properties:{errorType:t.name,errorMessage:t.message,stackTrace:t.stack,timestamp:new Date().toISOString()}};us.events.push(i);try{if(typeof window>"u")return;const{projectId:n,sdkType:o,sdkVersion:a}=O.state;await md.post({path:"/e",params:{projectId:n,st:o,sv:a||"html-wagmi-4.2.2"},body:{eventId:X.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:new Date().toISOString(),props:{type:"error",event:e,errorType:t.name,errorMessage:t.message,stackTrace:t.stack}}})}catch{}},enable(){us.enabled=!0},disable(){us.enabled=!1},clearEvents(){us.events=[]}};class Tr extends Error{constructor(e,s,r){super(e),this.name="AppKitError",this.category=s,this.originalError=r,Object.setPrototypeOf(this,Tr.prototype);let i=!1;if(r instanceof Error&&typeof r.stack=="string"&&r.stack){const n=r.stack,o=n.indexOf(` +`);if(o>-1){const a=n.substring(o+1);this.stack=`${this.name}: ${this.message} +${a}`,i=!0}}i||(Error.captureStackTrace?Error.captureStackTrace(this,Tr):this.stack||(this.stack=`${this.name}: ${this.message}`))}}function Sa(t,e){const s=t instanceof Tr?t:new Tr(t instanceof Error?t.message:String(t),e,t);throw bd.sendError(s,s.category),s}function vt(t,e="INTERNAL_SDK_ERROR"){const s={};return Object.keys(t).forEach(r=>{const i=t[r];if(typeof i=="function"){let n=i;i.constructor.name==="AsyncFunction"?n=async(...o)=>{try{return await i(...o)}catch(a){return Sa(a,e)}}:n=(...o)=>{try{return i(...o)}catch(a){return Sa(a,e)}},s[r]=n}else s[r]=i}),s}const zt={PHANTOM:{id:"a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393",url:"https://phantom.app"},SOLFLARE:{id:"1ca0bdd4747578705b1939af023d120677c64fe6ca76add81fda36e350605e79",url:"https://solflare.com"},COINBASE:{id:"fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa",url:"https://go.cb-w.com"}},vd={handleMobileDeeplinkRedirect(t,e){const s=window.location.href,r=encodeURIComponent(s);if(t===zt.PHANTOM.id&&!("phantom"in window)){const i=s.startsWith("https")?"https":"http",n=s.split("/")[2],o=encodeURIComponent(`${i}://${n}`);window.location.href=`${zt.PHANTOM.url}/ul/browse/${r}?ref=${o}`}t===zt.SOLFLARE.id&&!("solflare"in window)&&(window.location.href=`${zt.SOLFLARE.url}/ul/v1/browse/${r}?ref=${r}`),e===z.CHAIN.SOLANA&&t===zt.COINBASE.id&&!("coinbaseSolana"in window)&&(window.location.href=`${zt.COINBASE.url}/dapp?cb_url=${r}`)}},ht=_e({walletImages:{},networkImages:{},chainImages:{},connectorImages:{},tokenImages:{},currencyImages:{}}),Ed={state:ht,subscribeNetworkImages(t){return Ze(ht.networkImages,()=>t(ht.networkImages))},subscribeKey(t,e){return Qe(ht,t,e)},subscribe(t){return Ze(ht,()=>t(ht))},setWalletImage(t,e){ht.walletImages[t]=e},setNetworkImage(t,e){ht.networkImages[t]=e},setChainImage(t,e){ht.chainImages[t]=e},setConnectorImage(t,e){ht.connectorImages={...ht.connectorImages,[t]:e}},setTokenImage(t,e){ht.tokenImages[t]=e},setCurrencyImage(t,e){ht.currencyImages[t]=e}},Rt=vt(Ed),Cd={eip155:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",solana:"a1b58899-f671-4276-6a5e-56ca5bd59700",polkadot:"",bip122:"0b4838db-0161-4ffe-022d-532bf03dba00",cosmos:""},Mn=_e({networkImagePromises:{}}),Fl={async fetchWalletImage(t){if(t)return await V._fetchWalletImage(t),this.getWalletImageById(t)},async fetchNetworkImage(t){if(!t)return;const e=this.getNetworkImageById(t);return e||(Mn.networkImagePromises[t]||(Mn.networkImagePromises[t]=V._fetchNetworkImage(t)),await Mn.networkImagePromises[t],this.getNetworkImageById(t))},getWalletImageById(t){if(t)return Rt.state.walletImages[t]},getWalletImage(t){if(t?.image_url)return t?.image_url;if(t?.image_id)return Rt.state.walletImages[t.image_id]},getNetworkImage(t){if(t?.assets?.imageUrl)return t?.assets?.imageUrl;if(t?.assets?.imageId)return Rt.state.networkImages[t.assets.imageId]},getNetworkImageById(t){if(t)return Rt.state.networkImages[t]},getConnectorImage(t){if(t?.imageUrl)return t.imageUrl;if(t?.imageId)return Rt.state.connectorImages[t.imageId]},getChainImage(t){return Rt.state.networkImages[Cd[t]]}},hs=_e({message:"",variant:"info",open:!1}),Id={state:hs,subscribeKey(t,e){return Qe(hs,t,e)},open(t,e){const{debug:s}=O.state,{shortMessage:r,longMessage:i}=t;s&&(hs.message=r,hs.variant=e,hs.open=!0),i&&console.error(typeof i=="function"?i():i)},close(){hs.open=!1,hs.message="",hs.variant="info"}},Us=vt(Id),Ad=X.getAnalyticsUrl(),Nd=new $i({baseUrl:Ad,clientId:null}),_d=["MODAL_CREATED"],Xt=_e({timestamp:Date.now(),reportedErrors:{},data:{type:"track",event:"MODAL_CREATED"}}),Pe={state:Xt,subscribe(t){return Ze(Xt,()=>t(Xt))},getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:s}=O.state;return{projectId:t,st:e,sv:s||"html-wagmi-4.2.2"}},async _sendAnalyticsEvent(t){try{const e=W.state.address;if(_d.includes(t.data.event)||typeof window>"u")return;await Nd.post({path:"/e",params:Pe.getSdkProperties(),body:{eventId:X.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:t.timestamp,props:{...t.data,address:e}}}),Xt.reportedErrors.FORBIDDEN=!1}catch(e){e instanceof Error&&e.cause instanceof Response&&e.cause.status===z.HTTP_STATUS_CODES.FORBIDDEN&&!Xt.reportedErrors.FORBIDDEN&&(Us.open({shortMessage:"Invalid App Configuration",longMessage:`Origin ${ni()?window.origin:"uknown"} not found on Allowlist - update configuration on cloud.reown.com`},"error"),Xt.reportedErrors.FORBIDDEN=!0)}},sendEvent(t){Xt.timestamp=Date.now(),Xt.data=t,O.state.features?.analytics&&Pe._sendAnalyticsEvent(Xt)}},Sd=X.getApiUrl(),rt=new $i({baseUrl:Sd,clientId:null}),Pd=40,Pa=4,kd=20,te=_e({promises:{},page:1,count:0,featured:[],allFeatured:[],recommended:[],allRecommended:[],wallets:[],filteredWallets:[],search:[],isAnalyticsEnabled:!1,excludedWallets:[],isFetchingRecommendedWallets:!1}),V={state:te,subscribeKey(t,e){return Qe(te,t,e)},_getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:s}=O.state;return{projectId:t,st:e||"appkit",sv:s||"html-wagmi-4.2.2"}},_filterOutExtensions(t){return O.state.isUniversalProvider?t.filter(e=>!!(e.mobile_link||e.desktop_link||e.webapp_link)):t},async _fetchWalletImage(t){const e=`${rt.baseUrl}/getWalletImage/${t}`,s=await rt.getBlob({path:e,params:V._getSdkProperties()});Rt.setWalletImage(t,URL.createObjectURL(s))},async _fetchNetworkImage(t){const e=`${rt.baseUrl}/public/getAssetImage/${t}`,s=await rt.getBlob({path:e,params:V._getSdkProperties()});Rt.setNetworkImage(t,URL.createObjectURL(s))},async _fetchConnectorImage(t){const e=`${rt.baseUrl}/public/getAssetImage/${t}`,s=await rt.getBlob({path:e,params:V._getSdkProperties()});Rt.setConnectorImage(t,URL.createObjectURL(s))},async _fetchCurrencyImage(t){const e=`${rt.baseUrl}/public/getCurrencyImage/${t}`,s=await rt.getBlob({path:e,params:V._getSdkProperties()});Rt.setCurrencyImage(t,URL.createObjectURL(s))},async _fetchTokenImage(t){const e=`${rt.baseUrl}/public/getTokenImage/${t}`,s=await rt.getBlob({path:e,params:V._getSdkProperties()});Rt.setTokenImage(t,URL.createObjectURL(s))},_filterWalletsByPlatform(t){return X.isMobile()?t?.filter(s=>s.mobile_link||s.id===zt.COINBASE.id?!0:p.state.activeChain==="solana"&&(s.id===zt.SOLFLARE.id||s.id===zt.PHANTOM.id)):t},async fetchProjectConfig(){return(await rt.get({path:"/appkit/v1/config",params:V._getSdkProperties()})).features},async fetchAllowedOrigins(){try{const{allowedOrigins:t}=await rt.get({path:"/projects/v1/origins",params:V._getSdkProperties()});return t}catch{return[]}},async fetchNetworkImages(){const e=p.getAllRequestedCaipNetworks()?.map(({assets:s})=>s?.imageId).filter(Boolean).filter(s=>!Fl.getNetworkImageById(s));e&&await Promise.allSettled(e.map(s=>V._fetchNetworkImage(s)))},async fetchConnectorImages(){const{connectors:t}=j.state,e=t.map(({imageId:s})=>s).filter(Boolean);await Promise.allSettled(e.map(s=>V._fetchConnectorImage(s)))},async fetchCurrencyImages(t=[]){await Promise.allSettled(t.map(e=>V._fetchCurrencyImage(e)))},async fetchTokenImages(t=[]){await Promise.allSettled(t.map(e=>V._fetchTokenImage(e)))},async fetchWallets(t){const e=t.exclude??[];V._getSdkProperties().sv.startsWith("html-core-")&&e.push(...Object.values(zt).map(n=>n.id));const r=await rt.get({path:"/getWallets",params:{...V._getSdkProperties(),...t,page:String(t.page),entries:String(t.entries),include:t.include?.join(","),exclude:e.join(",")}});return{data:V._filterWalletsByPlatform(r?.data)||[],count:r?.count}},async fetchFeaturedWallets(){const{featuredWalletIds:t}=O.state;if(t?.length){const e={...V._getSdkProperties(),page:1,entries:t?.length??Pa,include:t},{data:s}=await V.fetchWallets(e),r=[...s].sort((n,o)=>t.indexOf(n.id)-t.indexOf(o.id)),i=r.map(n=>n.image_id).filter(Boolean);await Promise.allSettled(i.map(n=>V._fetchWalletImage(n))),te.featured=r,te.allFeatured=r}},async fetchRecommendedWallets(){try{te.isFetchingRecommendedWallets=!0;const{includeWalletIds:t,excludeWalletIds:e,featuredWalletIds:s}=O.state,r=[...e??[],...s??[]].filter(Boolean),i=p.getRequestedCaipNetworkIds().join(","),n={page:1,entries:Pa,include:t,exclude:r,chains:i},{data:o,count:a}=await V.fetchWallets(n),c=F.getRecentWallets(),l=o.map(h=>h.image_id).filter(Boolean),u=c.map(h=>h.image_id).filter(Boolean);await Promise.allSettled([...l,...u].map(h=>V._fetchWalletImage(h))),te.recommended=o,te.allRecommended=o,te.count=a??0}catch{}finally{te.isFetchingRecommendedWallets=!1}},async fetchWalletsByPage({page:t}){const{includeWalletIds:e,excludeWalletIds:s,featuredWalletIds:r}=O.state,i=p.getRequestedCaipNetworkIds().join(","),n=[...te.recommended.map(({id:u})=>u),...s??[],...r??[]].filter(Boolean),o={page:t,entries:Pd,include:e,exclude:n,chains:i},{data:a,count:c}=await V.fetchWallets(o),l=a.slice(0,kd).map(u=>u.image_id).filter(Boolean);await Promise.allSettled(l.map(u=>V._fetchWalletImage(u))),te.wallets=X.uniqueBy([...te.wallets,...V._filterOutExtensions(a)],"id").filter(u=>u.chains?.some(h=>i.includes(h))),te.count=c>te.count?c:te.count,te.page=t},async initializeExcludedWallets({ids:t}){const e={page:1,entries:t.length,include:t},{data:s}=await V.fetchWallets(e);s&&s.forEach(r=>{te.excludedWallets.push({rdns:r.rdns,name:r.name})})},async searchWallet({search:t,badge:e}){const{includeWalletIds:s,excludeWalletIds:r}=O.state,i=p.getRequestedCaipNetworkIds().join(",");te.search=[];const n={page:1,entries:100,search:t?.trim(),badge_type:e,include:s,exclude:r,chains:i},{data:o}=await V.fetchWallets(n);Pe.sendEvent({type:"track",event:"SEARCH_WALLET",properties:{badge:e??"",search:t??""}});const a=o.map(c=>c.image_id).filter(Boolean);await Promise.allSettled([...a.map(c=>V._fetchWalletImage(c)),X.wait(300)]),te.search=V._filterOutExtensions(o)},initPromise(t,e){const s=te.promises[t];return s||(te.promises[t]=e())},prefetch({fetchConnectorImages:t=!0,fetchFeaturedWallets:e=!0,fetchRecommendedWallets:s=!0,fetchNetworkImages:r=!0}={}){const i=[t&&V.initPromise("connectorImages",V.fetchConnectorImages),e&&V.initPromise("featuredWallets",V.fetchFeaturedWallets),s&&V.initPromise("recommendedWallets",V.fetchRecommendedWallets),r&&V.initPromise("networkImages",V.fetchNetworkImages)].filter(Boolean);return Promise.allSettled(i)},prefetchAnalyticsConfig(){O.state.features?.analytics&&V.fetchAnalyticsConfig()},async fetchAnalyticsConfig(){try{const{isAnalyticsEnabled:t}=await rt.get({path:"/getAnalyticsConfig",params:V._getSdkProperties()});O.setFeatures({analytics:t})}catch{O.setFeatures({analytics:!1})}},filterByNamespaces(t){if(!t?.length){te.featured=te.allFeatured,te.recommended=te.allRecommended;return}const e=p.getRequestedCaipNetworkIds().join(",");te.featured=te.allFeatured.filter(s=>s.chains?.some(r=>e.includes(r))),te.recommended=te.allRecommended.filter(s=>s.chains?.some(r=>e.includes(r))),te.filteredWallets=te.wallets.filter(s=>s.chains?.some(r=>e.includes(r)))},clearFilterByNamespaces(){te.filteredWallets=[]},setFilterByNamespace(t){if(!t){te.featured=te.allFeatured,te.recommended=te.allRecommended;return}const e=p.getRequestedCaipNetworkIds().join(",");te.featured=te.allFeatured.filter(s=>s.chains?.some(r=>e.includes(r))),te.recommended=te.allRecommended.filter(s=>s.chains?.some(r=>e.includes(r))),te.filteredWallets=te.wallets.filter(s=>s.chains?.some(r=>e.includes(r)))}},me=_e({view:"Connect",history:["Connect"],transactionStack:[]}),Od={state:me,subscribeKey(t,e){return Qe(me,t,e)},pushTransactionStack(t){me.transactionStack.push(t)},popTransactionStack(t){const e=me.transactionStack.pop();if(!e)return;const{onSuccess:s,onError:r,onCancel:i}=e;switch(t){case"success":s?.();break;case"error":r?.(),re.goBack();break;case"cancel":i?.(),re.goBack();break}},push(t,e){t!==me.view&&(me.view=t,me.history.push(t),me.data=e)},reset(t,e){me.view=t,me.history=[t],me.data=e},replace(t,e){me.history.at(-1)===t||(me.view=t,me.history[me.history.length-1]=t,me.data=e)},goBack(){const t=p.state.activeCaipAddress,e=re.state.view==="ConnectingFarcaster",s=!t&&e;if(me.history.length>1){me.history.pop();const[r]=me.history.slice(-1);r&&(t&&r==="Connect"?me.view="Account":me.view=r)}else We.close();me.data?.wallet&&(me.data.wallet=void 0),setTimeout(()=>{if(s){W.setFarcasterUrl(void 0,p.state.activeChain);const r=j.getAuthConnector();r?.provider?.reload();const i=Ei(O.state);r?.provider?.syncDappData?.({metadata:i.metadata,sdkVersion:i.sdkVersion,projectId:i.projectId,sdkType:i.sdkType})}},100)},goBackToIndex(t){if(me.history.length>1){me.history=me.history.slice(0,t+1);const[e]=me.history.slice(-1);e&&(me.view=e)}},goBackOrCloseModal(){re.state.history.length>1?re.goBack():We.close()}},re=vt(Od),Zt=_e({themeMode:"dark",themeVariables:{},w3mThemeVariables:void 0}),wo={state:Zt,subscribe(t){return Ze(Zt,()=>t(Zt))},setThemeMode(t){Zt.themeMode=t;try{const e=j.getAuthConnector();if(e){const s=wo.getSnapshot().themeVariables;e.provider.syncTheme({themeMode:t,themeVariables:s,w3mThemeVariables:bs(s,t)})}}catch{console.info("Unable to sync theme to auth connector")}},setThemeVariables(t){Zt.themeVariables={...Zt.themeVariables,...t};try{const e=j.getAuthConnector();if(e){const s=wo.getSnapshot().themeVariables;e.provider.syncTheme({themeVariables:s,w3mThemeVariables:bs(Zt.themeVariables,Zt.themeMode)})}}catch{console.info("Unable to sync theme to auth connector")}},getSnapshot(){return Ei(Zt)}},ft=vt(wo),Wl={eip155:void 0,solana:void 0,polkadot:void 0,bip122:void 0,cosmos:void 0},ae=_e({allConnectors:[],connectors:[],activeConnector:void 0,filterByNamespace:void 0,activeConnectorIds:{...Wl},filterByNamespaceMap:{eip155:!0,solana:!0,polkadot:!0,bip122:!0,cosmos:!0}}),Td={state:ae,subscribe(t){return Ze(ae,()=>{t(ae)})},subscribeKey(t,e){return Qe(ae,t,e)},initialize(t){t.forEach(e=>{const s=F.getConnectedConnectorId(e);s&&j.setConnectorId(s,e)})},setActiveConnector(t){t&&(ae.activeConnector=zs(t))},setConnectors(t){t.filter(i=>!ae.allConnectors.some(n=>n.id===i.id&&j.getConnectorName(n.name)===j.getConnectorName(i.name)&&n.chain===i.chain)).forEach(i=>{i.type!=="MULTI_CHAIN"&&ae.allConnectors.push(zs(i))});const s=j.getEnabledNamespaces(),r=j.getEnabledConnectors(s);ae.connectors=j.mergeMultiChainConnectors(r)},filterByNamespaces(t){Object.keys(ae.filterByNamespaceMap).forEach(e=>{ae.filterByNamespaceMap[e]=!1}),t.forEach(e=>{ae.filterByNamespaceMap[e]=!0}),j.updateConnectorsForEnabledNamespaces()},filterByNamespace(t,e){ae.filterByNamespaceMap[t]=e,j.updateConnectorsForEnabledNamespaces()},updateConnectorsForEnabledNamespaces(){const t=j.getEnabledNamespaces(),e=j.getEnabledConnectors(t),s=j.areAllNamespacesEnabled();ae.connectors=j.mergeMultiChainConnectors(e),s?V.clearFilterByNamespaces():V.filterByNamespaces(t)},getEnabledNamespaces(){return Object.entries(ae.filterByNamespaceMap).filter(([t,e])=>e).map(([t])=>t)},getEnabledConnectors(t){return ae.allConnectors.filter(e=>t.includes(e.chain))},areAllNamespacesEnabled(){return Object.values(ae.filterByNamespaceMap).every(t=>t)},mergeMultiChainConnectors(t){const e=j.generateConnectorMapByName(t),s=[];return e.forEach(r=>{const i=r[0],n=i?.id===z.CONNECTOR_ID.AUTH;r.length>1&&i?s.push({name:i.name,imageUrl:i.imageUrl,imageId:i.imageId,connectors:[...r],type:n?"AUTH":"MULTI_CHAIN",chain:"eip155",id:i?.id||""}):i&&s.push(i)}),s},generateConnectorMapByName(t){const e=new Map;return t.forEach(s=>{const{name:r}=s,i=j.getConnectorName(r);if(!i)return;const n=e.get(i)||[];n.find(a=>a.chain===s.chain)||n.push(s),e.set(i,n)}),e},getConnectorName(t){return t&&({"Trust Wallet":"Trust"}[t]||t)},getUniqueConnectorsByName(t){const e=[];return t.forEach(s=>{e.find(r=>r.chain===s.chain)||e.push(s)}),e},addConnector(t){if(t.id===z.CONNECTOR_ID.AUTH){const e=t,s=Ei(O.state),r=ft.getSnapshot().themeMode,i=ft.getSnapshot().themeVariables;e?.provider?.syncDappData?.({metadata:s.metadata,sdkVersion:s.sdkVersion,projectId:s.projectId,sdkType:s.sdkType}),e?.provider?.syncTheme({themeMode:r,themeVariables:i,w3mThemeVariables:bs(i,r)}),j.setConnectors([t])}else j.setConnectors([t])},getAuthConnector(t){const e=t||p.state.activeChain,s=ae.connectors.find(r=>r.id===z.CONNECTOR_ID.AUTH);if(s)return s?.connectors?.length?s.connectors.find(i=>i.chain===e):s},getAnnouncedConnectorRdns(){return ae.connectors.filter(t=>t.type==="ANNOUNCED").map(t=>t.info?.rdns)},getConnectorById(t){return ae.allConnectors.find(e=>e.id===t)},getConnector(t,e){return ae.allConnectors.filter(r=>r.chain===p.state.activeChain).find(r=>r.explorerId===t||r.info?.rdns===e)},syncIfAuthConnector(t){if(t.id!=="ID_AUTH")return;const e=t,s=Ei(O.state),r=ft.getSnapshot().themeMode,i=ft.getSnapshot().themeVariables;e?.provider?.syncDappData?.({metadata:s.metadata,sdkVersion:s.sdkVersion,sdkType:s.sdkType,projectId:s.projectId}),e.provider.syncTheme({themeMode:r,themeVariables:i,w3mThemeVariables:bs(i,r)})},getConnectorsByNamespace(t){const e=ae.allConnectors.filter(s=>s.chain===t);return j.mergeMultiChainConnectors(e)},selectWalletConnector(t){const e=j.getConnector(t.id,t.rdns),s=p.state.activeChain;vd.handleMobileDeeplinkRedirect(e?.explorerId||t.id,s),e?re.push("ConnectingExternal",{connector:e}):re.push("ConnectingWalletConnect",{wallet:t})},getConnectors(t){return t?j.getConnectorsByNamespace(t):j.mergeMultiChainConnectors(ae.allConnectors)},setFilterByNamespace(t){ae.filterByNamespace=t,ae.connectors=j.getConnectors(t),V.setFilterByNamespace(t)},setConnectorId(t,e){t&&(ae.activeConnectorIds={...ae.activeConnectorIds,[e]:t},F.setConnectedConnectorId(e,t))},removeConnectorId(t){ae.activeConnectorIds={...ae.activeConnectorIds,[t]:void 0},F.deleteConnectedConnectorId(t)},getConnectorId(t){if(t)return ae.activeConnectorIds[t]},isConnected(t){return t?!!ae.activeConnectorIds[t]:Object.values(ae.activeConnectorIds).some(e=>!!e)},resetConnectorIds(){ae.activeConnectorIds={...Wl}}},j=vt(Td),di={ACCOUNT_TYPES:{SMART_ACCOUNT:"smartAccount"}},$s=Object.freeze({message:"",variant:"success",svg:void 0,open:!1,autoClose:!0}),Ue=_e({...$s}),xd={state:Ue,subscribeKey(t,e){return Qe(Ue,t,e)},showLoading(t,e={}){this._showMessage({message:t,variant:"loading",...e})},showSuccess(t){this._showMessage({message:t,variant:"success"})},showSvg(t,e){this._showMessage({message:t,svg:e})},showError(t){const e=X.parseError(t);this._showMessage({message:e,variant:"error"})},hide(){Ue.message=$s.message,Ue.variant=$s.variant,Ue.svg=$s.svg,Ue.open=$s.open,Ue.autoClose=$s.autoClose},_showMessage({message:t,svg:e,variant:s="success",autoClose:r=$s.autoClose}){Ue.open?(Ue.open=!1,setTimeout(()=>{Ue.message=t,Ue.variant=s,Ue.svg=e,Ue.open=!0,Ue.autoClose=r},150)):(Ue.message=t,Ue.variant=s,Ue.svg=e,Ue.open=!0,Ue.autoClose=r)}},Ut=xd,Ce=_e({transactions:[],coinbaseTransactions:{},transactionsByYear:{},lastNetworkInView:void 0,loading:!1,empty:!1,next:void 0}),$d={state:Ce,subscribe(t){return Ze(Ce,()=>t(Ce))},setLastNetworkInView(t){Ce.lastNetworkInView=t},async fetchTransactions(t,e){if(!t)throw new Error("Transactions can't be fetched without an accountAddress");Ce.loading=!0;try{const s=await J.fetchTransactions({account:t,cursor:Ce.next,onramp:e,cache:e==="coinbase"?"no-cache":void 0,chainId:p.state.activeCaipNetwork?.caipNetworkId}),r=ai.filterSpamTransactions(s.data),i=ai.filterByConnectedChain(r),n=[...Ce.transactions,...i];Ce.loading=!1,e==="coinbase"?Ce.coinbaseTransactions=ai.groupTransactionsByYearAndMonth(Ce.coinbaseTransactions,s.data):(Ce.transactions=n,Ce.transactionsByYear=ai.groupTransactionsByYearAndMonth(Ce.transactionsByYear,i)),Ce.empty=n.length===0,Ce.next=s.next?s.next:void 0}catch{const r=p.state.activeChain;Pe.sendEvent({type:"track",event:"ERROR_FETCH_TRANSACTIONS",properties:{address:t,projectId:O.state.projectId,cursor:Ce.next,isSmartAccount:W.state.preferredAccountTypes?.[r]===di.ACCOUNT_TYPES.SMART_ACCOUNT}}),Ut.showError("Failed to fetch transactions"),Ce.loading=!1,Ce.empty=!0,Ce.next=void 0}},groupTransactionsByYearAndMonth(t={},e=[]){const s=t;return e.forEach(r=>{const i=new Date(r.metadata.minedAt).getFullYear(),n=new Date(r.metadata.minedAt).getMonth(),o=s[i]??{},c=(o[n]??[]).filter(l=>l.id!==r.id);s[i]={...o,[n]:[...c,r].sort((l,u)=>new Date(u.metadata.minedAt).getTime()-new Date(l.metadata.minedAt).getTime())}}),s},filterSpamTransactions(t){return t.filter(e=>!e.transfers.every(r=>r.nft_info?.flags.is_spam===!0))},filterByConnectedChain(t){const e=p.state.activeCaipNetwork?.caipNetworkId;return t.filter(r=>r.metadata.chain===e)},clearCursor(){Ce.next=void 0},resetTransactions(){Ce.transactions=[],Ce.transactionsByYear={},Ce.lastNetworkInView=void 0,Ce.loading=!1,Ce.empty=!1,Ce.next=void 0}},ai=vt($d,"API_ERROR"),Ae=_e({connections:new Map,wcError:!1,buffering:!1,status:"disconnected"});let ks;const Rd={state:Ae,subscribeKey(t,e){return Qe(Ae,t,e)},_getClient(){return Ae._client},setClient(t){Ae._client=zs(t)},async connectWalletConnect(){if(X.isTelegram()||X.isSafari()&&X.isIos()){if(ks){await ks,ks=void 0;return}if(!X.isPairingExpired(Ae?.wcPairingExpiry)){const t=Ae.wcUri;Ae.wcUri=t;return}ks=Y._getClient()?.connectWalletConnect?.().catch(()=>{}),Y.state.status="connecting",await ks,ks=void 0,Ae.wcPairingExpiry=void 0,Y.state.status="connected"}else await Y._getClient()?.connectWalletConnect?.()},async connectExternal(t,e,s=!0){await Y._getClient()?.connectExternal?.(t),s&&p.setActiveNamespace(e)},async reconnectExternal(t){await Y._getClient()?.reconnectExternal?.(t);const e=t.chain||p.state.activeChain;e&&j.setConnectorId(t.id,e)},async setPreferredAccountType(t,e){We.setLoading(!0,p.state.activeChain);const s=j.getAuthConnector();s&&(W.setPreferredAccountType(t,e),await s.provider.setPreferredAccount(t),F.setPreferredAccountTypes(W.state.preferredAccountTypes??{[e]:t}),await Y.reconnectExternal(s),We.setLoading(!1,p.state.activeChain),Pe.sendEvent({type:"track",event:"SET_PREFERRED_ACCOUNT_TYPE",properties:{accountType:t,network:p.state.activeCaipNetwork?.caipNetworkId||""}}))},async signMessage(t){return Y._getClient()?.signMessage(t)},parseUnits(t,e){return Y._getClient()?.parseUnits(t,e)},formatUnits(t,e){return Y._getClient()?.formatUnits(t,e)},async sendTransaction(t){return Y._getClient()?.sendTransaction(t)},async getCapabilities(t){return Y._getClient()?.getCapabilities(t)},async grantPermissions(t){return Y._getClient()?.grantPermissions(t)},async walletGetAssets(t){return Y._getClient()?.walletGetAssets(t)??{}},async estimateGas(t){return Y._getClient()?.estimateGas(t)},async writeContract(t){return Y._getClient()?.writeContract(t)},async getEnsAddress(t){return Y._getClient()?.getEnsAddress(t)},async getEnsAvatar(t){return Y._getClient()?.getEnsAvatar(t)},checkInstalled(t){return Y._getClient()?.checkInstalled?.(t)||!1},resetWcConnection(){Ae.wcUri=void 0,Ae.wcPairingExpiry=void 0,Ae.wcLinking=void 0,Ae.recentWallet=void 0,Ae.status="disconnected",ai.resetTransactions(),F.deleteWalletConnectDeepLink()},resetUri(){Ae.wcUri=void 0,Ae.wcPairingExpiry=void 0,ks=void 0},finalizeWcConnection(){const{wcLinking:t,recentWallet:e}=Y.state;t&&F.setWalletConnectDeepLink(t),e&&F.setAppKitRecent(e),Pe.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:t?"mobile":"qrcode",name:re.state.data?.wallet?.name||"Unknown"}})},setWcBasic(t){Ae.wcBasic=t},setUri(t){Ae.wcUri=t,Ae.wcPairingExpiry=X.getPairingExpiry()},setWcLinking(t){Ae.wcLinking=t},setWcError(t){Ae.wcError=t,Ae.buffering=!1},setRecentWallet(t){Ae.recentWallet=t},setBuffering(t){Ae.buffering=t},setStatus(t){Ae.status=t},async disconnect(t){try{await Y._getClient()?.disconnect(t)}catch(e){throw new Tr("Failed to disconnect","INTERNAL_SDK_ERROR",e)}},setConnections(t,e){Ae.connections.set(e,t)},switchAccount({connection:t,address:e,namespace:s}){if(j.state.activeConnectorIds[s]===t.connectorId){const n=p.state.activeCaipNetwork;if(n){const o=`${s}:${n.id}:${e}`;W.setCaipAddress(o,s)}else console.warn(`No current network found for namespace "${s}"`)}else{const n=j.getConnector(t.connectorId);n?Y.connectExternal(n,s):console.warn(`No connector found for namespace "${s}"`)}}},Y=vt(Rd),rr=_e({loading:!1,open:!1,selectedNetworkId:void 0,activeChain:void 0,initialized:!1}),Es={state:rr,subscribe(t){return Ze(rr,()=>t(rr))},subscribeOpen(t){return Qe(rr,"open",t)},set(t){Object.assign(rr,{...rr,...t})}},Bn={createBalance(t,e){const s={name:t.metadata.name||"",symbol:t.metadata.symbol||"",decimals:t.metadata.decimals||0,value:t.metadata.value||0,price:t.metadata.price||0,iconUrl:t.metadata.iconUrl||""};return{name:s.name,symbol:s.symbol,chainId:e,address:t.address==="native"?void 0:this.convertAddressToCAIP10Address(t.address,e),value:s.value,price:s.price,quantity:{decimals:s.decimals.toString(),numeric:this.convertHexToBalance({hex:t.balance,decimals:s.decimals})},iconUrl:s.iconUrl}},convertHexToBalance({hex:t,decimals:e}){return Uh(BigInt(t),e)},convertAddressToCAIP10Address(t,e){return`${e}:${t}`},createCAIP2ChainId(t,e){return`${e}:${parseInt(t,16)}`},getChainIdHexFromCAIP2ChainId(t){const e=t.split(":");if(e.length<2||!e[1])return"0x0";const s=e[1],r=parseInt(s,10);return isNaN(r)?"0x0":`0x${r.toString(16)}`},isWalletGetAssetsResponse(t){return typeof t!="object"||t===null?!1:Object.values(t).every(e=>Array.isArray(e)&&e.every(s=>this.isValidAsset(s)))},isValidAsset(t){return typeof t=="object"&&t!==null&&typeof t.address=="string"&&typeof t.balance=="string"&&(t.type==="ERC20"||t.type==="NATIVE")&&typeof t.metadata=="object"&&t.metadata!==null&&typeof t.metadata.name=="string"&&typeof t.metadata.symbol=="string"&&typeof t.metadata.decimals=="number"&&typeof t.metadata.price=="number"&&typeof t.metadata.iconUrl=="string"}},ka={async getMyTokensWithBalance(t){const e=W.state.address,s=p.state.activeCaipNetwork;if(!e||!s)return[];if(s.chainNamespace==="eip155"){const i=await this.getEIP155Balances(e,s);if(i)return this.filterLowQualityTokens(i)}const r=await J.getBalance(e,s.caipNetworkId,t);return this.filterLowQualityTokens(r.balances)},async getEIP155Balances(t,e){try{const s=Bn.getChainIdHexFromCAIP2ChainId(e.caipNetworkId);if(!(await Y.getCapabilities(t))?.[s]?.assetDiscovery?.supported)return null;const i=await Y.walletGetAssets({account:t,chainFilter:[s]});return Bn.isWalletGetAssetsResponse(i)?(i[s]||[]).map(o=>Bn.createBalance(o,e.caipNetworkId)):null}catch{return null}},filterLowQualityTokens(t){return t.filter(e=>e.quantity.decimals!=="0")},mapBalancesToSwapTokens(t){return t?.map(e=>({...e,address:e?.address?e.address:p.getActiveNetworkTokenAddress(),decimals:parseInt(e.quantity.decimals,10),logoUri:e.iconUrl,eip2612:!1}))||[]}},fe=_e({tokenBalances:[],loading:!1}),Ud={state:fe,subscribe(t){return Ze(fe,()=>t(fe))},subscribeKey(t,e){return Qe(fe,t,e)},setToken(t){t&&(fe.token=zs(t))},setTokenAmount(t){fe.sendTokenAmount=t},setReceiverAddress(t){fe.receiverAddress=t},setReceiverProfileImageUrl(t){fe.receiverProfileImageUrl=t},setReceiverProfileName(t){fe.receiverProfileName=t},setNetworkBalanceInUsd(t){fe.networkBalanceInUSD=t},setLoading(t){fe.loading=t},async sendToken(){try{switch(he.setLoading(!0),p.state.activeCaipNetwork?.chainNamespace){case"eip155":await he.sendEvmToken();return;case"solana":await he.sendSolanaToken();return;default:throw new Error("Unsupported chain")}}finally{he.setLoading(!1)}},async sendEvmToken(){const t=p.state.activeChain,e=W.state.preferredAccountTypes?.[t];if(!he.state.sendTokenAmount||!he.state.receiverAddress)throw new Error("An amount and receiver address are required");if(!he.state.token)throw new Error("A token is required");he.state.token?.address?(Pe.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===di.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token.address,amount:he.state.sendTokenAmount,network:p.state.activeCaipNetwork?.caipNetworkId||""}}),await he.sendERC20Token({receiverAddress:he.state.receiverAddress,tokenAddress:he.state.token.address,sendTokenAmount:he.state.sendTokenAmount,decimals:he.state.token.quantity.decimals})):(Pe.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===di.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token.symbol||"",amount:he.state.sendTokenAmount,network:p.state.activeCaipNetwork?.caipNetworkId||""}}),await he.sendNativeToken({receiverAddress:he.state.receiverAddress,sendTokenAmount:he.state.sendTokenAmount,decimals:he.state.token.quantity.decimals}))},async fetchTokenBalance(t){fe.loading=!0;const e=p.state.activeCaipNetwork?.caipNetworkId,s=p.state.activeCaipNetwork?.chainNamespace,r=p.state.activeCaipAddress,i=r?X.getPlainAddress(r):void 0;if(fe.lastRetry&&!X.isAllowedRetry(fe.lastRetry,30*ve.ONE_SEC_MS))return fe.loading=!1,[];try{if(i&&e&&s){const n=await ka.getMyTokensWithBalance();return fe.tokenBalances=n,fe.lastRetry=void 0,n}}catch(n){fe.lastRetry=Date.now(),t?.(n),Ut.showError("Token Balance Unavailable")}finally{fe.loading=!1}return[]},fetchNetworkBalance(){if(fe.tokenBalances.length===0)return;const t=ka.mapBalancesToSwapTokens(fe.tokenBalances);if(!t)return;const e=t.find(s=>s.address===p.getActiveNetworkTokenAddress());e&&(fe.networkBalanceInUSD=e?sd.multiply(e.quantity.numeric,e.price).toString():"0")},async sendNativeToken(t){re.pushTransactionStack({});const e=t.receiverAddress,s=W.state.address,r=Y.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));await Y.sendTransaction({chainNamespace:"eip155",to:e,address:s,data:"0x",value:r??BigInt(0)}),Pe.sendEvent({type:"track",event:"SEND_SUCCESS",properties:{isSmartAccount:W.state.preferredAccountTypes?.eip155===di.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token?.symbol||"",amount:t.sendTokenAmount,network:p.state.activeCaipNetwork?.caipNetworkId||""}}),Y._getClient()?.updateBalance("eip155"),he.resetSend()},async sendERC20Token(t){re.pushTransactionStack({onSuccess(){re.replace("Account")}});const e=Y.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));if(W.state.address&&t.sendTokenAmount&&t.receiverAddress&&t.tokenAddress){const s=X.getPlainAddress(t.tokenAddress);await Y.writeContract({fromAddress:W.state.address,tokenAddress:s,args:[t.receiverAddress,e??BigInt(0)],method:"transfer",abi:od.getERC20Abi(s),chainNamespace:"eip155"}),he.resetSend()}},async sendSolanaToken(){if(!he.state.sendTokenAmount||!he.state.receiverAddress)throw new Error("An amount and receiver address are required");re.pushTransactionStack({onSuccess(){re.replace("Account")}}),await Y.sendTransaction({chainNamespace:"solana",to:he.state.receiverAddress,value:he.state.sendTokenAmount}),Y._getClient()?.updateBalance("solana"),he.resetSend()},resetSend(){fe.token=void 0,fe.sendTokenAmount=void 0,fe.receiverAddress=void 0,fe.receiverProfileImageUrl=void 0,fe.receiverProfileName=void 0,fe.loading=!1,fe.tokenBalances=[]}},he=vt(Ud),jn={currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map,allAccounts:[],user:void 0},Hi={caipNetwork:void 0,supportsAllNetworks:!0,smartAccountEnabledNetworks:[]},M=_e({chains:dd(),activeCaipAddress:void 0,activeChain:void 0,activeCaipNetwork:void 0,noAdapters:!1,universalAdapter:{networkControllerClient:void 0,connectionControllerClient:void 0},isSwitchingNamespace:!1}),Dd={state:M,subscribe(t){return Ze(M,()=>{t(M)})},subscribeKey(t,e){return Qe(M,t,e)},subscribeChainProp(t,e,s){let r;return Ze(M.chains,()=>{const i=s||M.activeChain;if(i){const n=M.chains.get(i)?.[t];r!==n&&(r=n,e(n))}})},initialize(t,e,s){const{chainId:r,namespace:i}=F.getActiveNetworkProps(),n=e?.find(u=>u.id.toString()===r?.toString()),a=t.find(u=>u?.namespace===i)||t?.[0],c=t.map(u=>u.namespace).filter(u=>u!==void 0),l=O.state.enableEmbedded?new Set([...c]):new Set([...e?.map(u=>u.chainNamespace)??[]]);(t?.length===0||!a)&&(M.noAdapters=!0),M.noAdapters||(M.activeChain=a?.namespace,M.activeCaipNetwork=n,p.setChainNetworkData(a?.namespace,{caipNetwork:n}),M.activeChain&&Es.set({activeChain:a?.namespace})),l.forEach(u=>{const h=e?.filter(d=>d.chainNamespace===u);p.state.chains.set(u,{namespace:u,networkState:_e({...Hi,caipNetwork:h?.[0]}),accountState:_e(jn),caipNetworks:h??[],...s}),p.setRequestedCaipNetworks(h??[],u)})},removeAdapter(t){if(M.activeChain===t){const e=Array.from(M.chains.entries()).find(([s])=>s!==t);if(e){const s=e[1]?.caipNetworks?.[0];s&&p.setActiveCaipNetwork(s)}}M.chains.delete(t)},addAdapter(t,{networkControllerClient:e,connectionControllerClient:s},r){M.chains.set(t.namespace,{namespace:t.namespace,networkState:{...Hi,caipNetwork:r[0]},accountState:jn,caipNetworks:r,connectionControllerClient:s,networkControllerClient:e}),p.setRequestedCaipNetworks(r?.filter(i=>i.chainNamespace===t.namespace)??[],t.namespace)},addNetwork(t){const e=M.chains.get(t.chainNamespace);if(e){const s=[...e.caipNetworks||[]];e.caipNetworks?.find(r=>r.id===t.id)||s.push(t),M.chains.set(t.chainNamespace,{...e,caipNetworks:s}),p.setRequestedCaipNetworks(s,t.chainNamespace),j.filterByNamespace(t.chainNamespace,!0)}},removeNetwork(t,e){const s=M.chains.get(t);if(s){const r=M.activeCaipNetwork?.id===e,i=[...s.caipNetworks?.filter(n=>n.id!==e)||[]];r&&s?.caipNetworks?.[0]&&p.setActiveCaipNetwork(s.caipNetworks[0]),M.chains.set(t,{...s,caipNetworks:i}),p.setRequestedCaipNetworks(i||[],t),i.length===0&&j.filterByNamespace(t,!1)}},setAdapterNetworkState(t,e){const s=M.chains.get(t);s&&(s.networkState={...s.networkState||Hi,...e},M.chains.set(t,s))},setChainAccountData(t,e,s=!0){if(!t)throw new Error("Chain is required to update chain account data");const r=M.chains.get(t);if(r){const i={...r.accountState||jn,...e};M.chains.set(t,{...r,accountState:i}),(M.chains.size===1||M.activeChain===t)&&(e.caipAddress&&(M.activeCaipAddress=e.caipAddress),W.replaceState(i))}},setChainNetworkData(t,e){if(!t)return;const s=M.chains.get(t);if(s){const r={...s.networkState||Hi,...e};M.chains.set(t,{...s,networkState:r})}},setAccountProp(t,e,s,r=!0){p.setChainAccountData(s,{[t]:e},r),t==="status"&&e==="disconnected"&&s&&j.removeConnectorId(s)},setActiveNamespace(t){M.activeChain=t;const e=t?M.chains.get(t):void 0,s=e?.networkState?.caipNetwork;s?.id&&t&&(M.activeCaipAddress=e?.accountState?.caipAddress,M.activeCaipNetwork=s,p.setChainNetworkData(t,{caipNetwork:s}),F.setActiveCaipNetworkId(s?.caipNetworkId),Es.set({activeChain:t,selectedNetworkId:s?.caipNetworkId}))},setActiveCaipNetwork(t){if(!t)return;M.activeChain!==t.chainNamespace&&p.setIsSwitchingNamespace(!0);const e=M.chains.get(t.chainNamespace);M.activeChain=t.chainNamespace,M.activeCaipNetwork=t,p.setChainNetworkData(t.chainNamespace,{caipNetwork:t}),e?.accountState?.address?M.activeCaipAddress=`${t.chainNamespace}:${t.id}:${e?.accountState?.address}`:M.activeCaipAddress=void 0,p.setAccountProp("caipAddress",M.activeCaipAddress,t.chainNamespace),e&&W.replaceState(e.accountState),he.resetSend(),Es.set({activeChain:M.activeChain,selectedNetworkId:M.activeCaipNetwork?.caipNetworkId}),F.setActiveCaipNetworkId(t.caipNetworkId),!p.checkIfSupportedNetwork(t.chainNamespace)&&O.state.enableNetworkSwitch&&!O.state.allowUnsupportedChain&&!Y.state.wcBasic&&p.showUnsupportedChainUI()},addCaipNetwork(t){if(!t)return;const e=M.chains.get(t.chainNamespace);e&&e?.caipNetworks?.push(t)},async switchActiveNamespace(t){if(!t)return;const e=t!==p.state.activeChain,s=p.getNetworkData(t)?.caipNetwork,r=p.getCaipNetworkByNamespace(t,s?.id);e&&r&&await p.switchActiveNetwork(r)},async switchActiveNetwork(t){const s=!p.state.chains.get(p.state.activeChain)?.caipNetworks?.some(i=>i.id===M.activeCaipNetwork?.id),r=p.getNetworkControllerClient(t.chainNamespace);if(r){try{await r.switchCaipNetwork(t),s&&We.close()}catch{re.goBack()}Pe.sendEvent({type:"track",event:"SWITCH_NETWORK",properties:{network:t.caipNetworkId}})}},getNetworkControllerClient(t){const e=t||M.activeChain,s=M.chains.get(e);if(!s)throw new Error("Chain adapter not found");if(!s.networkControllerClient)throw new Error("NetworkController client not set");return s.networkControllerClient},getConnectionControllerClient(t){const e=t||M.activeChain;if(!e)throw new Error("Chain is required to get connection controller client");const s=M.chains.get(e);if(!s?.connectionControllerClient)throw new Error("ConnectionController client not set");return s.connectionControllerClient},getAccountProp(t,e){let s=M.activeChain;if(e&&(s=e),!s)return;const r=M.chains.get(s)?.accountState;if(r)return r[t]},getNetworkProp(t,e){const s=M.chains.get(e)?.networkState;if(s)return s[t]},getRequestedCaipNetworks(t){const e=M.chains.get(t),{approvedCaipNetworkIds:s=[],requestedCaipNetworks:r=[]}=e?.networkState||{};return X.sortRequestedNetworks(s,r)},getAllRequestedCaipNetworks(){const t=[];return M.chains.forEach(e=>{const s=p.getRequestedCaipNetworks(e.namespace);t.push(...s)}),t},setRequestedCaipNetworks(t,e){p.setAdapterNetworkState(e,{requestedCaipNetworks:t});const r=p.getAllRequestedCaipNetworks().map(n=>n.chainNamespace),i=Array.from(new Set(r));j.filterByNamespaces(i)},getAllApprovedCaipNetworkIds(){const t=[];return M.chains.forEach(e=>{const s=p.getApprovedCaipNetworkIds(e.namespace);t.push(...s)}),t},getActiveCaipNetwork(){return M.activeCaipNetwork},getActiveCaipAddress(){return M.activeCaipAddress},getApprovedCaipNetworkIds(t){return M.chains.get(t)?.networkState?.approvedCaipNetworkIds||[]},async setApprovedCaipNetworksData(t){const s=await p.getNetworkControllerClient()?.getApprovedCaipNetworksData();p.setAdapterNetworkState(t,{approvedCaipNetworkIds:s?.approvedCaipNetworkIds,supportsAllNetworks:s?.supportsAllNetworks})},checkIfSupportedNetwork(t,e){const s=e||M.activeCaipNetwork,r=p.getRequestedCaipNetworks(t);return r.length?r?.some(i=>i.id===s?.id):!0},checkIfSupportedChainId(t){return M.activeChain?p.getRequestedCaipNetworks(M.activeChain)?.some(s=>s.id===t):!0},setSmartAccountEnabledNetworks(t,e){p.setAdapterNetworkState(e,{smartAccountEnabledNetworks:t})},checkIfSmartAccountEnabled(){const t=Ml.caipNetworkIdToNumber(M.activeCaipNetwork?.caipNetworkId),e=M.activeChain;return!e||!t?!1:!!p.getNetworkProp("smartAccountEnabledNetworks",e)?.includes(Number(t))},getActiveNetworkTokenAddress(){const t=M.activeCaipNetwork?.chainNamespace||"eip155",e=M.activeCaipNetwork?.id||1,s=ve.NATIVE_TOKEN_ADDRESS[t];return`${t}:${e}:${s}`},showUnsupportedChainUI(){We.open({view:"UnsupportedChain"})},checkIfNamesSupported(){const t=M.activeCaipNetwork;return!!(t?.chainNamespace&&ve.NAMES_SUPPORTED_CHAIN_NAMESPACES.includes(t.chainNamespace))},resetNetwork(t){p.setAdapterNetworkState(t,{approvedCaipNetworkIds:void 0,supportsAllNetworks:!0,smartAccountEnabledNetworks:[]})},resetAccount(t){const e=t;if(!e)throw new Error("Chain is required to set account prop");M.activeCaipAddress=void 0,p.setChainAccountData(e,{smartAccountDeployed:!1,currentTab:0,caipAddress:void 0,address:void 0,balance:void 0,balanceSymbol:void 0,profileName:void 0,profileImage:void 0,addressExplorerUrl:void 0,tokenBalance:[],connectedWalletInfo:void 0,preferredAccountTypes:void 0,socialProvider:void 0,socialWindow:void 0,farcasterUrl:void 0,allAccounts:[],user:void 0,status:"disconnected"}),j.removeConnectorId(e)},setIsSwitchingNamespace(t){M.isSwitchingNamespace=t},getFirstCaipNetworkSupportsAuthConnector(){const t=[];let e;if(M.chains.forEach(s=>{z.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(r=>r===s.namespace)&&s.namespace&&t.push(s.namespace)}),t.length>0){const s=t[0];return e=s?M.chains.get(s)?.caipNetworks?.[0]:void 0,e}},getAccountData(t){return t?p.state.chains.get(t)?.accountState:W.state},getNetworkData(t){const e=t||M.activeChain;if(e)return p.state.chains.get(e)?.networkState},getCaipNetworkByNamespace(t,e){if(!t)return;const s=p.state.chains.get(t),r=s?.caipNetworks?.find(i=>i.id===e);return r||s?.networkState?.caipNetwork||s?.caipNetworks?.[0]},getRequestedCaipNetworkIds(){const t=j.state.filterByNamespace;return(t?[M.chains.get(t)]:Array.from(M.chains.values())).flatMap(s=>s?.caipNetworks||[]).map(s=>s.caipNetworkId)},getCaipNetworks(t){return t?p.getRequestedCaipNetworks(t):p.getAllRequestedCaipNetworks()}},p=vt(Dd),Ld={purchaseCurrencies:[{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"Ether",symbol:"ETH",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]}],paymentCurrencies:[{id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},{id:"EUR",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]}]},zl=X.getBlockchainApiUrl(),it=_e({clientId:null,api:new $i({baseUrl:zl,clientId:null}),supportedChains:{http:[],ws:[]}}),J={state:it,async get(t){const{st:e,sv:s}=J.getSdkProperties(),r=O.state.projectId,i={...t.params||{},st:e,sv:s,projectId:r};return it.api.get({...t,params:i})},getSdkProperties(){const{sdkType:t,sdkVersion:e}=O.state;return{st:t||"unknown",sv:e||"unknown"}},async isNetworkSupported(t){if(!t)return!1;try{it.supportedChains.http.length||await J.getSupportedNetworks()}catch{return!1}return it.supportedChains.http.includes(t)},async getSupportedNetworks(){try{const t=await J.get({path:"v1/supported-chains"});return it.supportedChains=t,t}catch{return it.supportedChains}},async fetchIdentity({address:t,caipNetworkId:e}){if(!await J.isNetworkSupported(e))return{avatar:"",name:""};const r=F.getIdentityFromCacheForAddress(t);if(r)return r;const i=await J.get({path:`/v1/identity/${t}`,params:{sender:p.state.activeCaipAddress?X.getPlainAddress(p.state.activeCaipAddress):void 0}});return F.updateIdentityCache({address:t,identity:i,timestamp:Date.now()}),i},async fetchTransactions({account:t,cursor:e,onramp:s,signal:r,cache:i,chainId:n}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/account/${t}/history`,params:{cursor:e,onramp:s,chainId:n},signal:r,cache:i}):{data:[],next:void 0}},async fetchSwapQuote({amount:t,userAddress:e,from:s,to:r,gasPrice:i}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/quotes",headers:{"Content-Type":"application/json"},params:{amount:t,userAddress:e,from:s,to:r,gasPrice:i}}):{quotes:[]}},async fetchSwapTokens({chainId:t}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/tokens",params:{chainId:t}}):{tokens:[]}},async fetchTokenPrice({addresses:t}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?it.api.post({path:"/v1/fungible/price",body:{currency:"usd",addresses:t,projectId:O.state.projectId},headers:{"Content-Type":"application/json"}}):{fungibles:[]}},async fetchSwapAllowance({tokenAddress:t,userAddress:e}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/allowance",params:{tokenAddress:t,userAddress:e},headers:{"Content-Type":"application/json"}}):{allowance:"0"}},async fetchGasPrice({chainId:t}){const{st:e,sv:s}=J.getSdkProperties();if(!await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Gas Price");return J.get({path:"/v1/convert/gas-price",headers:{"Content-Type":"application/json"},params:{chainId:t,st:e,sv:s}})},async generateSwapCalldata({amount:t,from:e,to:s,userAddress:r,disableEstimate:i}){if(!await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Swaps");return it.api.post({path:"/v1/convert/build-transaction",headers:{"Content-Type":"application/json"},body:{amount:t,eip155:{slippage:ve.CONVERT_SLIPPAGE_TOLERANCE},projectId:O.state.projectId,from:e,to:s,userAddress:r,disableEstimate:i}})},async generateApproveCalldata({from:t,to:e,userAddress:s}){const{st:r,sv:i}=J.getSdkProperties();if(!await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Swaps");return J.get({path:"/v1/convert/build-approve",headers:{"Content-Type":"application/json"},params:{userAddress:s,from:t,to:e,st:r,sv:i}})},async getBalance(t,e,s){const{st:r,sv:i}=J.getSdkProperties();if(!await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId))return Ut.showError("Token Balance Unavailable"),{balances:[]};const o=`${e}:${t}`,a=F.getBalanceCacheForCaipAddress(o);if(a)return a;const c=await J.get({path:`/v1/account/${t}/balance`,params:{currency:"usd",chainId:e,forceUpdate:s,st:r,sv:i}});return F.updateBalanceCache({caipAddress:o,balance:c,timestamp:Date.now()}),c},async lookupEnsName(t){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/account/${t}`,params:{apiVersion:"2"}}):{addresses:{},attributes:[]}},async reverseLookupEnsName({address:t}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/reverse/${t}`,params:{sender:W.state.address,apiVersion:"2"}}):[]},async getEnsNameSuggestions(t){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/suggestions/${t}`,params:{zone:"reown.id"}}):{suggestions:[]}},async registerEnsName({coinType:t,address:e,message:s,signature:r}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?it.api.post({path:"/v1/profile/account",body:{coin_type:t,address:e,message:s,signature:r},headers:{"Content-Type":"application/json"}}):{success:!1}},async generateOnRampURL({destinationWallets:t,partnerUserId:e,defaultNetwork:s,purchaseAmount:r,paymentAmount:i}){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?(await it.api.post({path:"/v1/generators/onrampurl",params:{projectId:O.state.projectId},body:{destinationWallets:t,defaultNetwork:s,partnerUserId:e,defaultExperience:"buy",presetCryptoAmount:r,presetFiatAmount:i}})).url:""},async getOnrampOptions(){if(!await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId))return{paymentCurrencies:[],purchaseCurrencies:[]};try{return await J.get({path:"/v1/onramp/options"})}catch{return Ld}},async getOnrampQuote({purchaseCurrency:t,paymentCurrency:e,amount:s,network:r}){try{return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?await it.api.post({path:"/v1/onramp/quote",params:{projectId:O.state.projectId},body:{purchaseCurrency:t,paymentCurrency:e,amount:s,network:r}}):null}catch{return{coinbaseFee:{amount:s,currency:e.id},networkFee:{amount:s,currency:e.id},paymentSubtotal:{amount:s,currency:e.id},paymentTotal:{amount:s,currency:e.id},purchaseAmount:{amount:s,currency:e.id},quoteId:"mocked-quote-id"}}},async getSmartSessions(t){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/sessions/${t}`}):[]},async revokeSmartSession(t,e,s){return await J.isNetworkSupported(p.state.activeCaipNetwork?.caipNetworkId)?it.api.post({path:`/v1/sessions/${t}/revoke`,params:{projectId:O.state.projectId},body:{pci:e,signature:s}}):{success:!1}},setClientId(t){it.clientId=t,it.api=new $i({baseUrl:zl,clientId:t})}},Et=_e({currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map,allAccounts:[]}),Md={state:Et,replaceState(t){t&&Object.assign(Et,zs(t))},subscribe(t){return p.subscribeChainProp("accountState",e=>{if(e)return t(e)})},subscribeKey(t,e,s){let r;return p.subscribeChainProp("accountState",i=>{if(i){const n=i[t];r!==n&&(r=n,e(n))}},s)},setStatus(t,e){p.setAccountProp("status",t,e)},getCaipAddress(t){return p.getAccountProp("caipAddress",t)},setCaipAddress(t,e){const s=t?X.getPlainAddress(t):void 0;e===p.state.activeChain&&(p.state.activeCaipAddress=t),p.setAccountProp("caipAddress",t,e),p.setAccountProp("address",s,e)},setBalance(t,e,s){p.setAccountProp("balance",t,s),p.setAccountProp("balanceSymbol",e,s)},setProfileName(t,e){p.setAccountProp("profileName",t,e)},setProfileImage(t,e){p.setAccountProp("profileImage",t,e)},setUser(t,e){p.setAccountProp("user",t,e)},setAddressExplorerUrl(t,e){p.setAccountProp("addressExplorerUrl",t,e)},setSmartAccountDeployed(t,e){p.setAccountProp("smartAccountDeployed",t,e)},setCurrentTab(t){p.setAccountProp("currentTab",t,p.state.activeChain)},setTokenBalance(t,e){t&&p.setAccountProp("tokenBalance",t,e)},setShouldUpdateToAddress(t,e){p.setAccountProp("shouldUpdateToAddress",t,e)},setAllAccounts(t,e){p.setAccountProp("allAccounts",t,e)},addAddressLabel(t,e,s){const r=p.getAccountProp("addressLabels",s)||new Map;r.set(t,e),p.setAccountProp("addressLabels",r,s)},removeAddressLabel(t,e){const s=p.getAccountProp("addressLabels",e)||new Map;s.delete(t),p.setAccountProp("addressLabels",s,e)},setConnectedWalletInfo(t,e){p.setAccountProp("connectedWalletInfo",t,e,!1)},setPreferredAccountType(t,e){p.setAccountProp("preferredAccountTypes",{...Et.preferredAccountTypes,[e]:t},e)},setPreferredAccountTypes(t){Et.preferredAccountTypes=t},setSocialProvider(t,e){t&&p.setAccountProp("socialProvider",t,e)},setSocialWindow(t,e){p.setAccountProp("socialWindow",t?zs(t):void 0,e)},setFarcasterUrl(t,e){p.setAccountProp("farcasterUrl",t,e)},async fetchTokenBalance(t){Et.balanceLoading=!0;const e=p.state.activeCaipNetwork?.caipNetworkId,s=p.state.activeCaipNetwork?.chainNamespace,r=p.state.activeCaipAddress,i=r?X.getPlainAddress(r):void 0;if(Et.lastRetry&&!X.isAllowedRetry(Et.lastRetry,30*ve.ONE_SEC_MS))return Et.balanceLoading=!1,[];try{if(i&&e&&s){const o=(await J.getBalance(i,e)).balances.filter(a=>a.quantity.decimals!=="0");return W.setTokenBalance(o,s),Et.lastRetry=void 0,Et.balanceLoading=!1,o}}catch(n){Et.lastRetry=Date.now(),t?.(n),Ut.showError("Token Balance Unavailable")}finally{Et.balanceLoading=!1}return[]},resetAccount(t){p.resetAccount(t)}},W=vt(Md),Bd={onSwitchNetwork({network:t,ignoreSwitchConfirmation:e=!1}){const s=p.state.activeCaipNetwork,r=re.state.data;if(t.id===s?.id)return;const n=W.getCaipAddress(p.state.activeChain),o=t.chainNamespace!==p.state.activeChain,a=W.getCaipAddress(t.chainNamespace),l=j.getConnectorId(p.state.activeChain)===z.CONNECTOR_ID.AUTH,u=z.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(h=>h===t.chainNamespace);e||l&&u?re.push("SwitchNetwork",{...r,network:t}):n&&o&&!a?re.push("SwitchActiveChain",{switchToChain:t.chainNamespace,navigateTo:"Connect",navigateWithReplace:!0,network:t}):re.push("SwitchNetwork",{...r,network:t})}},nt=_e({loading:!1,loadingNamespaceMap:new Map,open:!1,shake:!1,namespace:void 0}),jd={state:nt,subscribe(t){return Ze(nt,()=>t(nt))},subscribeKey(t,e){return Qe(nt,t,e)},async open(t){const e=W.state.status==="connected",s=t?.namespace,r=p.state.activeChain,i=s&&s!==r,n=p.getAccountData(t?.namespace)?.caipAddress;if(Y.state.wcBasic?V.prefetch({fetchNetworkImages:!1,fetchConnectorImages:!1}):await V.prefetch({fetchConnectorImages:!e,fetchFeaturedWallets:!e,fetchRecommendedWallets:!e}),j.setFilterByNamespace(t?.namespace),We.setLoading(!0,s),s&&i){const o=p.getNetworkData(s)?.caipNetwork||p.getRequestedCaipNetworks(s)[0];o&&Bd.onSwitchNetwork({network:o,ignoreSwitchConfirmation:!0})}else{const o=p.state.noAdapters;O.state.manualWCControl||o&&!n?X.isMobile()?re.reset("AllWallets"):re.reset("ConnectingWalletConnectBasic"):t?.view?re.reset(t.view,t.data):n?re.reset("Account"):re.reset("Connect")}nt.open=!0,Es.set({open:!0}),Pe.sendEvent({type:"track",event:"MODAL_OPEN",properties:{connected:!!n}})},close(){const t=O.state.enableEmbedded,e=!!p.state.activeCaipAddress;nt.open&&Pe.sendEvent({type:"track",event:"MODAL_CLOSE",properties:{connected:e}}),nt.open=!1,re.reset("Connect"),We.clearLoading(),t?e?re.replace("Account"):re.push("Connect"):Es.set({open:!1}),Y.resetUri()},setLoading(t,e){e&&nt.loadingNamespaceMap.set(e,t),nt.loading=t,Es.set({loading:t})},clearLoading(){nt.loadingNamespaceMap.clear(),nt.loading=!1},shake(){nt.shake||(nt.shake=!0,setTimeout(()=>{nt.shake=!1},500))}},We=vt(jd),pi={id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},yo={id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},qd={providers:ql,selectedProvider:null,error:null,purchaseCurrency:pi,paymentCurrency:yo,purchaseCurrencies:[pi],paymentCurrencies:[],quotesLoading:!1},oe=_e(qd),Fd={state:oe,subscribe(t){return Ze(oe,()=>t(oe))},subscribeKey(t,e){return Qe(oe,t,e)},setSelectedProvider(t){if(t&&t.name==="meld"){const e=p.state.activeChain===z.CHAIN.SOLANA?"SOL":"USDC",s=W.state.address??"",r=new URL(t.url);r.searchParams.append("publicKey",pd),r.searchParams.append("destinationCurrencyCode",e),r.searchParams.append("walletAddress",s),r.searchParams.append("externalCustomerId",O.state.projectId),oe.selectedProvider={...t,url:r.toString()}}else oe.selectedProvider=t},setOnrampProviders(t){if(Array.isArray(t)&&t.every(e=>typeof e=="string")){const e=t,s=ql.filter(r=>e.includes(r.name));oe.providers=s}else oe.providers=[]},setPurchaseCurrency(t){oe.purchaseCurrency=t},setPaymentCurrency(t){oe.paymentCurrency=t},setPurchaseAmount(t){bo.state.purchaseAmount=t},setPaymentAmount(t){bo.state.paymentAmount=t},async getAvailableCurrencies(){const t=await J.getOnrampOptions();oe.purchaseCurrencies=t.purchaseCurrencies,oe.paymentCurrencies=t.paymentCurrencies,oe.paymentCurrency=t.paymentCurrencies[0]||yo,oe.purchaseCurrency=t.purchaseCurrencies[0]||pi,await V.fetchCurrencyImages(t.paymentCurrencies.map(e=>e.id)),await V.fetchTokenImages(t.purchaseCurrencies.map(e=>e.symbol))},async getQuote(){oe.quotesLoading=!0;try{const t=await J.getOnrampQuote({purchaseCurrency:oe.purchaseCurrency,paymentCurrency:oe.paymentCurrency,amount:oe.paymentAmount?.toString()||"0",network:oe.purchaseCurrency?.symbol});return oe.quotesLoading=!1,oe.purchaseAmount=Number(t?.purchaseAmount.amount),t}catch(t){return oe.error=t.message,oe.quotesLoading=!1,null}finally{oe.quotesLoading=!1}},resetState(){oe.selectedProvider=null,oe.error=null,oe.purchaseCurrency=pi,oe.paymentCurrency=yo,oe.purchaseCurrencies=[pi],oe.paymentCurrencies=[],oe.paymentAmount=void 0,oe.purchaseAmount=void 0,oe.quotesLoading=!1}},bo=vt(Fd),Oa=2147483648,Wd={convertEVMChainIdToCoinType(t){if(t>=Oa)throw new Error("Invalid chainId");return(Oa|t)>>>0}},Ct=_e({suggestions:[],loading:!1}),zd={state:Ct,subscribe(t){return Ze(Ct,()=>t(Ct))},subscribeKey(t,e){return Qe(Ct,t,e)},async resolveName(t){try{return await J.lookupEnsName(t)}catch(e){const s=e;throw new Error(s?.reasons?.[0]?.description||"Error resolving name")}},async isNameRegistered(t){try{return await J.lookupEnsName(t),!0}catch{return!1}},async getSuggestions(t){try{Ct.loading=!0,Ct.suggestions=[];const e=await J.getEnsNameSuggestions(t);return Ct.suggestions=e.suggestions.map(s=>({...s,name:s.name}))||[],Ct.suggestions}catch(e){const s=fi.parseEnsApiError(e,"Error fetching name suggestions");throw new Error(s)}finally{Ct.loading=!1}},async getNamesForAddress(t){try{if(!p.state.activeCaipNetwork)return[];const s=F.getEnsFromCacheForAddress(t);if(s)return s;const r=await J.reverseLookupEnsName({address:t});return F.updateEnsCache({address:t,ens:r,timestamp:Date.now()}),r}catch(e){const s=fi.parseEnsApiError(e,"Error fetching names for address");throw new Error(s)}},async registerName(t){const e=p.state.activeCaipNetwork;if(!e)throw new Error("Network not found");const s=W.state.address,r=j.getAuthConnector();if(!s||!r)throw new Error("Address or auth connector not found");Ct.loading=!0;try{const i=JSON.stringify({name:t,attributes:{},timestamp:Math.floor(Date.now()/1e3)});re.pushTransactionStack({onCancel(){re.replace("RegisterAccountName")}});const n=await Y.signMessage(i);Ct.loading=!1;const o=e.id;if(!o)throw new Error("Network not found");const a=Wd.convertEVMChainIdToCoinType(Number(o));await J.registerEnsName({coinType:a,address:s,signature:n,message:i}),W.setProfileName(t,e.chainNamespace),re.replace("RegisterAccountNameSuccess")}catch(i){const n=fi.parseEnsApiError(i,`Error registering name ${t}`);throw re.replace("RegisterAccountName"),new Error(n)}finally{Ct.loading=!1}},validateName(t){return/^[a-zA-Z0-9-]{4,}$/u.test(t)},parseEnsApiError(t,e){return t?.reasons?.[0]?.description||e}},fi=vt(zd),gi={getSIWX(){return O.state.siwx},async initializeIfEnabled(){const t=O.state.siwx,e=p.getActiveCaipAddress();if(!(t&&e))return;const[s,r,i]=e.split(":");if(p.checkIfSupportedNetwork(s))try{if((await t.getSessions(`${s}:${r}`,i)).length)return;await We.open({view:"SIWXSignMessage"})}catch(n){console.error("SIWXUtil:initializeIfEnabled",n),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:this.getSIWXEventProperties()}),await Y._getClient()?.disconnect().catch(console.error),re.reset("Connect"),Ut.showError("A problem occurred while trying initialize authentication")}},async requestSignMessage(){const t=O.state.siwx,e=X.getPlainAddress(p.getActiveCaipAddress()),s=p.getActiveCaipNetwork(),r=Y._getClient();if(!t)throw new Error("SIWX is not enabled");if(!e)throw new Error("No ActiveCaipAddress found");if(!s)throw new Error("No ActiveCaipNetwork or client found");if(!r)throw new Error("No ConnectionController client found");try{const i=await t.createMessage({chainId:s.caipNetworkId,accountAddress:e}),n=i.toString();j.getConnectorId(s.chainNamespace)===z.CONNECTOR_ID.AUTH&&re.pushTransactionStack({});const a=await r.signMessage(n);await t.addSession({data:i,message:n,signature:a}),We.close(),Pe.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:this.getSIWXEventProperties()})}catch(i){const n=this.getSIWXEventProperties();(!We.state.open||re.state.view==="ApproveTransaction")&&await We.open({view:"SIWXSignMessage"}),n.isSmartAccount?Ut.showError("This application might not support Smart Accounts"):Ut.showError("Signature declined"),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:n}),console.error("SWIXUtil:requestSignMessage",i)}},async cancelSignMessage(){try{this.getSIWX()?.getRequired?.()?await Y.disconnect():We.close(),re.reset("Connect"),Pe.sendEvent({event:"CLICK_CANCEL_SIWX",type:"track",properties:this.getSIWXEventProperties()})}catch(t){console.error("SIWXUtil:cancelSignMessage",t)}},async getSessions(){const t=O.state.siwx,e=X.getPlainAddress(p.getActiveCaipAddress()),s=p.getActiveCaipNetwork();return t&&e&&s?t.getSessions(s.caipNetworkId,e):[]},async isSIWXCloseDisabled(){const t=this.getSIWX();if(t){const e=re.state.view==="ApproveTransaction",s=re.state.view==="SIWXSignMessage";if(e||s)return t.getRequired?.()&&(await this.getSessions()).length===0}return!1},async universalProviderAuthenticate({universalProvider:t,chains:e,methods:s}){const r=gi.getSIWX(),i=new Set(e.map(a=>a.split(":")[0]));if(!r||i.size!==1||!i.has("eip155"))return!1;const n=await r.createMessage({chainId:p.getActiveCaipNetwork()?.caipNetworkId||"",accountAddress:""}),o=await t.authenticate({nonce:n.nonce,domain:n.domain,uri:n.uri,exp:n.expirationTime,iat:n.issuedAt,nbf:n.notBefore,requestId:n.requestId,version:n.version,resources:n.resources,statement:n.statement,chainId:n.chainId,methods:s,chains:[n.chainId,...e.filter(a=>a!==n.chainId)]});if(Ut.showLoading("Authenticating...",{autoClose:!1}),W.setConnectedWalletInfo({...o.session.peer.metadata,name:o.session.peer.metadata.name,icon:o.session.peer.metadata.icons?.[0],type:"WALLET_CONNECT"},Array.from(i)[0]),o?.auths?.length){const a=o.auths.map(c=>{const l=t.client.formatAuthMessage({request:c.p,iss:c.p.iss});return{data:{...c.p,accountAddress:c.p.iss.split(":").slice(-1).join(""),chainId:c.p.iss.split(":").slice(2,4).join(":"),uri:c.p.aud,version:c.p.version||n.version,expirationTime:c.p.exp,issuedAt:c.p.iat,notBefore:c.p.nbf},message:l,signature:c.s.s,cacao:c}});try{await r.setSessions(a),Pe.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:gi.getSIWXEventProperties()})}catch(c){throw console.error("SIWX:universalProviderAuth - failed to set sessions",c),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:gi.getSIWXEventProperties()}),await t.disconnect().catch(console.error),c}finally{Ut.hide()}}return!0},getSIWXEventProperties(){const t=p.state.activeChain;return{network:p.state.activeCaipNetwork?.caipNetworkId||"",isSmartAccount:W.state.preferredAccountTypes?.[t]===di.ACCOUNT_TYPES.SMART_ACCOUNT}},async clearSessions(){const t=this.getSIWX();t&&await t.setSessions([])}};var Hd=Object.defineProperty,Vd=(t,e,s)=>e in t?Hd(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ta=(t,e,s)=>Vd(t,typeof e!="symbol"?e+"":e,s);let Kd=class extends qr{constructor(e){super(),this.opts=e,Ta(this,"protocol","wc"),Ta(this,"version",2)}};var Gd=Object.defineProperty,Jd=(t,e,s)=>e in t?Gd(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Yd=(t,e,s)=>Jd(t,e+"",s);let Xd=class extends qr{constructor(e,s){super(),this.core=e,this.logger=s,Yd(this,"records",new Map)}},Zd=class{constructor(e,s){this.logger=e,this.core=s}},Qd=class extends qr{constructor(e,s){super(),this.relayer=e,this.logger=s}},ep=class extends qr{constructor(e){super()}},tp=class{constructor(e,s,r,i){this.core=e,this.logger=s,this.name=r}},sp=class extends qr{constructor(e,s){super(),this.relayer=e,this.logger=s}},rp=class extends qr{constructor(e,s){super(),this.core=e,this.logger=s}},ip=class{constructor(e,s,r){this.core=e,this.logger=s,this.store=r}},np=class{constructor(e,s){this.projectId=e,this.logger=s}},op=class{constructor(e,s,r){this.core=e,this.logger=s,this.telemetryEnabled=r}};var ap=Object.defineProperty,cp=(t,e,s)=>e in t?ap(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,xa=(t,e,s)=>cp(t,typeof e!="symbol"?e+"":e,s);let lp=class{constructor(e){this.opts=e,xa(this,"protocol","wc"),xa(this,"version",2)}},up=class{constructor(e){this.client=e}};function Ci(t,{strict:e=!0}={}){return!t||typeof t!="string"?!1:e?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x")}function $a(t){return Ci(t,{strict:!1})?Math.ceil((t.length-2)/2):t.length}const Hl="2.23.2";let qn={getDocsUrl:({docsBaseUrl:t,docsPath:e="",docsSlug:s})=>e?`${t??"https://viem.sh"}${e}${s?`#${s}`:""}`:void 0,version:`viem@${Hl}`};class Hs extends Error{constructor(e,s={}){const r=s.cause instanceof Hs?s.cause.details:s.cause?.message?s.cause.message:s.details,i=s.cause instanceof Hs&&s.cause.docsPath||s.docsPath,n=qn.getDocsUrl?.({...s,docsPath:i}),o=[e||"An error occurred.","",...s.metaMessages?[...s.metaMessages,""]:[],...n?[`Docs: ${n}`]:[],...r?[`Details: ${r}`]:[],...qn.version?[`Version: ${qn.version}`]:[]].join(` +`);super(o,s.cause?{cause:s.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=r,this.docsPath=i,this.metaMessages=s.metaMessages,this.name=s.name??this.name,this.shortMessage=e,this.version=Hl}walk(e){return Vl(this,e)}}function Vl(t,e){return e?.(t)?t:t&&typeof t=="object"&&"cause"in t&&t.cause!==void 0?Vl(t.cause,e):e?null:t}class Kl extends Hs{constructor({size:e,targetSize:s,type:r}){super(`${r.charAt(0).toUpperCase()}${r.slice(1).toLowerCase()} size (${e}) exceeds padding size (${s}).`,{name:"SizeExceedsPaddingSizeError"})}}function Wr(t,{dir:e,size:s=32}={}){return typeof t=="string"?hp(t,{dir:e,size:s}):dp(t,{dir:e,size:s})}function hp(t,{dir:e,size:s=32}={}){if(s===null)return t;const r=t.replace("0x","");if(r.length>s*2)throw new Kl({size:Math.ceil(r.length/2),targetSize:s,type:"hex"});return`0x${r[e==="right"?"padEnd":"padStart"](s*2,"0")}`}function dp(t,{dir:e,size:s=32}={}){if(s===null)return t;if(t.length>s)throw new Kl({size:t.length,targetSize:s,type:"bytes"});const r=new Uint8Array(s);for(let i=0;ie)throw new fp({givenSize:$a(t),maxSize:e})}function vo(t,e={}){const{signed:s}=e;e.size&&zr(t,{size:e.size});const r=BigInt(t);if(!s)return r;const i=(t.length-2)/2,n=(1n<e.toString(16).padStart(2,"0"));function Eo(t,e={}){return typeof t=="number"||typeof t=="bigint"?Jl(t,e):typeof t=="string"?bp(t,e):typeof t=="boolean"?wp(t,e):Gl(t,e)}function wp(t,e={}){const s=`0x${Number(t)}`;return typeof e.size=="number"?(zr(s,{size:e.size}),Wr(s,{size:e.size})):s}function Gl(t,e={}){let s="";for(let i=0;in||i=Qt.zero&&t<=Qt.nine)return t-Qt.zero;if(t>=Qt.A&&t<=Qt.F)return t-(Qt.A-10);if(t>=Qt.a&&t<=Qt.f)return t-(Qt.a-10)}function Yl(t,e={}){let s=t;e.size&&(zr(s,{size:e.size}),s=Wr(s,{dir:"right",size:e.size}));let r=s.slice(2);r.length%2&&(r=`0${r}`);const i=r.length/2,n=new Uint8Array(i);for(let o=0,a=0;o0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function I1(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");gn(t.outputLen),gn(t.blockLen)}function Ua(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Np(t,e){Nn(t);const s=e.outputLen;if(t.length>Da&Vi)}:{h:Number(t>>Da&Vi)|0,l:Number(t&Vi)|0}}function Sp(t,e=!1){let s=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;it<>>32-s,kp=(t,e,s)=>e<>>32-s,Op=(t,e,s)=>e<>>64-s,Tp=(t,e,s)=>t<>>64-s,ir=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function xp(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function A1(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function N1(t,e){return t<<32-e|t>>>e}const La=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function $p(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Ma(t){for(let e=0;et().update(Zl(r)).digest(),s=t();return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=()=>t(),e}function S1(t=32){if(ir&&typeof ir.getRandomValues=="function")return ir.getRandomValues(new Uint8Array(t));if(ir&&typeof ir.randomBytes=="function")return ir.randomBytes(t);throw new Error("crypto.getRandomValues must be defined")}const Ql=[],eu=[],tu=[],Lp=BigInt(0),Xr=BigInt(1),Mp=BigInt(2),Bp=BigInt(7),jp=BigInt(256),qp=BigInt(113);for(let t=0,e=Xr,s=1,r=0;t<24;t++){[s,r]=[r,(2*s+3*r)%5],Ql.push(2*(5*r+s)),eu.push((t+1)*(t+2)/2%64);let i=Lp;for(let n=0;n<7;n++)e=(e<>Bp)*qp)%jp,e&Mp&&(i^=Xr<<(Xr<s>32?Op(t,e,s):Pp(t,e,s),ja=(t,e,s)=>s>32?Tp(t,e,s):kp(t,e,s);function zp(t,e=24){const s=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)s[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=s[c],u=s[c+1],h=Ba(l,u,1)^s[a],d=ja(l,u,1)^s[a+1];for(let m=0;m<50;m+=10)t[o+m]^=h,t[o+m+1]^=d}let i=t[2],n=t[3];for(let o=0;o<24;o++){const a=eu[o],c=Ba(i,n,a),l=ja(i,n,a),u=Ql[o];i=t[u],n=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)s[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~s[(a+2)%10]&s[(a+4)%10]}t[0]^=Fp[r],t[1]^=Wp[r]}s.fill(0)}class ta extends Up{constructor(e,s,r,i=!1,n=24){if(super(),this.blockLen=e,this.suffix=s,this.outputLen=r,this.enableXOF=i,this.rounds=n,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,gn(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=xp(this.state)}keccak(){La||Ma(this.state32),zp(this.state32,this.rounds),La||Ma(this.state32),this.posOut=0,this.pos=0}update(e){Ua(this);const{blockLen:s,state:r}=this;e=Zl(e);const i=e.length;for(let n=0;n=r&&this.keccak();const o=Math.min(r-this.posOut,n-i);e.set(s.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return gn(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Np(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:s,suffix:r,outputLen:i,rounds:n,enableXOF:o}=this;return e||(e=new ta(s,r,i,o,n)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=n,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}}const Hp=(t,e,s)=>Dp(()=>new ta(e,t,s)),Vp=Hp(1,136,256/8);function su(t,e){const s=e||"hex",r=Vp(Ci(t,{strict:!1})?Ep(t):t);return s==="bytes"?r:Eo(r)}class Kp extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){const s=super.get(e);return super.has(e)&&s!==void 0&&(this.delete(e),super.set(e,s)),s}set(e,s){if(super.set(e,s),this.maxSize&&this.size>this.maxSize){const r=this.keys().next().value;r&&this.delete(r)}return this}}const Fn=new Kp(8192);function Gp(t,e){if(Fn.has(`${t}.${e}`))return Fn.get(`${t}.${e}`);const s=t.substring(2).toLowerCase(),r=su(Xl(s),"bytes"),i=s.split("");for(let o=0;o<40;o+=2)r[o>>1]>>4>=8&&i[o]&&(i[o]=i[o].toUpperCase()),(r[o>>1]&15)>=8&&i[o+1]&&(i[o+1]=i[o+1].toUpperCase());const n=`0x${i.join("")}`;return Fn.set(`${t}.${e}`,n),n}function Jp(t){const e=su(`0x${t.substring(4)}`).substring(26);return Gp(`0x${e}`)}async function Yp({hash:t,signature:e}){const s=Ci(t)?t:Eo(t),{secp256k1:r}=await fo(async()=>{const{secp256k1:o}=await import("./secp256k1-BuxODDdo.js");return{secp256k1:o}},__vite__mapDeps([0,1,2,3,4,5]));return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:l,s:u,v:h,yParity:d}=e,m=Number(d??h),w=qa(m);return new r.Signature(vo(l),vo(u)).addRecoveryBit(w)}const o=Ci(e)?e:Eo(e),a=gp(`0x${o.slice(130)}`),c=qa(a);return r.Signature.fromCompact(o.substring(2,130)).addRecoveryBit(c)})().recoverPublicKey(s.substring(2)).toHex(!1)}`}function qa(t){if(t===0||t===1)return t;if(t===27)return 0;if(t===28)return 1;throw new Error("Invalid yParityOrV value")}async function Xp({hash:t,signature:e}){return Jp(await Yp({hash:t,signature:e}))}function Zp(t){if(t.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let l=0;l>>0,g=new Uint8Array(w);for(;d!==m;){let b=l[d],E=0;for(let C=w-1;(b!==0||E>>0,g[C]=b%s>>>0,b=b/s>>>0;if(b!==0)throw new Error("Non-zero carry");h=E,d++}let f=w-h;for(;f!==w&&g[f]===0;)f++;let y=r.repeat(u);for(;f>>0,w=new Uint8Array(m);for(;u255)return;let E=e[b];if(E===255)return;let C=0;for(let S=m-1;(E!==0||C>>0,w[S]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");d=C,u++}let g=m-d;for(;g!==m&&w[g]===0;)g++;const f=new Uint8Array(h+(m-g));let y=h;for(;g!==m;)f[y++]=w[g++];return f}function c(l){const u=a(l);if(u)return u;throw new Error("Non-base"+s+" character")}return{encode:o,decodeUnsafe:a,decode:c}}var Qp="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";const ru=Zp(Qp);var nn={},ef={};const tf=":";function Pr(t){const[e,s]=t.split(tf);return{namespace:e,reference:s}}function iu(t,e){return t.includes(":")?[t]:e.chains||[]}var sf=Object.defineProperty,rf=Object.defineProperties,nf=Object.getOwnPropertyDescriptors,Fa=Object.getOwnPropertySymbols,of=Object.prototype.hasOwnProperty,af=Object.prototype.propertyIsEnumerable,Wa=(t,e,s)=>e in t?sf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,za=(t,e)=>{for(var s in e||(e={}))of.call(e,s)&&Wa(t,s,e[s]);if(Fa)for(var s of Fa(e))af.call(e,s)&&Wa(t,s,e[s]);return t},cf=(t,e)=>rf(t,nf(e));const lf="ReactNative",wt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},uf="js";function mn(){return typeof nn<"u"&&typeof nn.versions<"u"&&typeof nn.versions.node<"u"}function Ss(){return!as.getDocument()&&!!as.getNavigator()&&navigator.product===lf}function hf(){return Ss()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="android"}function df(){return Ss()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="ios"}function Hr(){return!mn()&&!!as.getNavigator()&&!!as.getDocument()}function Ri(){return Ss()?wt.reactNative:mn()?wt.node:Hr()?wt.browser:wt.unknown}function Ha(){var t;try{return Ss()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function pf(t,e){const s=new URLSearchParams(t);for(const r of Object.keys(e).sort())if(e.hasOwnProperty(r)){const i=e[r];i!==void 0&&s.set(r,i)}return s.toString()}function ff(t){var e,s;const r=nu();try{return t!=null&&t.url&&r.url&&new URL(t.url).host!==new URL(r.url).host&&(console.warn(`The configured WalletConnect 'metadata.url':${t.url} differs from the actual page url:${r.url}. This is probably unintended and can lead to issues.`),t.url=r.url),(e=t?.icons)!=null&&e.length&&t.icons.length>0&&(t.icons=t.icons.filter(i=>i!=="")),cf(za(za({},r),t),{url:t?.url||r.url,name:t?.name||r.name,description:t?.description||r.description,icons:(s=t?.icons)!=null&&s.length&&t.icons.length>0?t.icons:r.icons})}catch(i){return console.warn("Error populating app metadata",i),t||r}}function nu(){return Dh.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function gf(){if(Ri()===wt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:s,Version:r}=global.Platform;return[s,r].join("-")}const t=Mh();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function mf(){var t;const e=Ri();return e===wt.browser?[e,((t=as.getLocation())==null?void 0:t.host)||"unknown"].join(":"):e}function ou(t,e,s){const r=gf(),i=mf();return[[t,e].join("-"),[uf,s].join("-"),r,i].join("/")}function wf({protocol:t,version:e,relayUrl:s,sdkVersion:r,auth:i,projectId:n,useOnCloseEvent:o,bundleId:a,packageName:c}){const l=s.split("?"),u=ou(t,e,r),h={auth:i,ua:u,projectId:n,useOnCloseEvent:o,packageName:c||void 0,bundleId:a||void 0},d=pf(l[1]||"",h);return l[0]+"?"+d}function js(t,e){return t.filter(s=>e.includes(s)).length===t.length}function Co(t){return Object.fromEntries(t.entries())}function Io(t){return new Map(Object.entries(t))}function Rs(t=D.FIVE_MINUTES,e){const s=D.toMiliseconds(t||D.FIVE_MINUTES);let r,i,n,o;return{resolve:a=>{n&&r&&(clearTimeout(n),r(a),o=Promise.resolve(a))},reject:a=>{n&&i&&(clearTimeout(n),i(a))},done:()=>new Promise((a,c)=>{if(o)return a(o);n=setTimeout(()=>{const l=new Error(e);o=Promise.reject(l),c(l)},s),r=a,i=c})}}function vs(t,e,s){return new Promise(async(r,i)=>{const n=setTimeout(()=>i(new Error(s)),e);try{const o=await t;r(o)}catch(o){i(o)}clearTimeout(n)})}function au(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function yf(t){return au("topic",t)}function bf(t){return au("id",t)}function cu(t){const[e,s]=t.split(":"),r={id:void 0,topic:void 0};if(e==="topic"&&typeof s=="string")r.topic=s;else if(e==="id"&&Number.isInteger(Number(s)))r.id=Number(s);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${s}`);return r}function De(t,e){return D.fromMiliseconds(Date.now()+D.toMiliseconds(t))}function ms(t){return Date.now()>=D.toMiliseconds(t)}function pe(t,e){return`${t}${e?`:${e}`:""}`}function Kt(t=[],e=[]){return[...new Set([...t,...e])]}async function vf({id:t,topic:e,wcDeepLink:s}){var r;try{if(!s)return;const i=typeof s=="string"?JSON.parse(s):s,n=i?.href;if(typeof n!="string")return;const o=Ef(n,t,e),a=Ri();if(a===wt.browser){if(!((r=as.getDocument())!=null&&r.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}Cf(o)}else a===wt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}function Ef(t,e,s){const r=`requestId=${e}&sessionTopic=${s}`;t.endsWith("/")&&(t=t.slice(0,-1));let i=`${t}`;if(t.startsWith("https://t.me")){const n=t.includes("?")?"&startapp=":"?startapp=";i=`${i}${n}${_f(r,!0)}`}else i=`${i}/wc?${r}`;return i}function Cf(t){let e="_self";Nf()?e="_top":(Af()||t.startsWith("https://")||t.startsWith("http://"))&&(e="_blank"),window.open(t,e,"noreferrer noopener")}async function If(t,e){let s="";try{if(Hr()&&(s=localStorage.getItem(e),s))return s;s=await t.getItem(e)}catch(r){console.error(r)}return s}function Va(t,e){if(!t.includes(e))return null;const s=t.split(/([&,?,=])/),r=s.indexOf(e);return s[r+2]}function Ka(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function sa(){return typeof nn<"u"&&ef.IS_VITEST==="true"}function Af(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function Nf(){try{return window.self!==window.top}catch{return!1}}function _f(t,e=!1){const s=Buffer.from(t).toString("base64");return e?s.replace(/[=]/g,""):s}function lu(t){return Buffer.from(t,"base64").toString("utf-8")}function Sf(t){return new Promise(e=>setTimeout(e,t))}function Ii(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function Pf(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Ui(t,...e){if(!Pf(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function ra(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ii(t.outputLen),Ii(t.blockLen)}function xr(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function uu(t,e){Ui(t);const s=e.outputLen;if(t.length>Ga&Ki)}:{h:Number(t>>Ga&Ki)|0,l:Number(t&Ki)|0}}function Of(t,e=!1){let s=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;it<>>32-s,xf=(t,e,s)=>e<>>32-s,$f=(t,e,s)=>e<>>64-s,Rf=(t,e,s)=>t<>>64-s,nr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Uf(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Wn(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Bt(t,e){return t<<32-e|t>>>e}const Ja=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Df(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Ya(t){for(let e=0;et().update($r(r)).digest(),s=t();return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=()=>t(),e}function Vr(t=32){if(nr&&typeof nr.getRandomValues=="function")return nr.getRandomValues(new Uint8Array(t));if(nr&&typeof nr.randomBytes=="function")return nr.randomBytes(t);throw new Error("crypto.getRandomValues must be defined")}const du=[],pu=[],fu=[],Bf=BigInt(0),Zr=BigInt(1),jf=BigInt(2),qf=BigInt(7),Ff=BigInt(256),Wf=BigInt(113);for(let t=0,e=Zr,s=1,r=0;t<24;t++){[s,r]=[r,(2*s+3*r)%5],du.push(2*(5*r+s)),pu.push((t+1)*(t+2)/2%64);let i=Bf;for(let n=0;n<7;n++)e=(e<>qf)*Wf)%Ff,e&jf&&(i^=Zr<<(Zr<s>32?$f(t,e,s):Tf(t,e,s),Za=(t,e,s)=>s>32?Rf(t,e,s):xf(t,e,s);function Vf(t,e=24){const s=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)s[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=s[c],u=s[c+1],h=Xa(l,u,1)^s[a],d=Za(l,u,1)^s[a+1];for(let m=0;m<50;m+=10)t[o+m]^=h,t[o+m+1]^=d}let i=t[2],n=t[3];for(let o=0;o<24;o++){const a=pu[o],c=Xa(i,n,a),l=Za(i,n,a),u=du[o];i=t[u],n=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)s[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~s[(a+2)%10]&s[(a+4)%10]}t[0]^=zf[r],t[1]^=Hf[r]}s.fill(0)}let Kf=class gu extends ia{constructor(e,s,r,i=!1,n=24){if(super(),this.blockLen=e,this.suffix=s,this.outputLen=r,this.enableXOF=i,this.rounds=n,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Ii(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Uf(this.state)}keccak(){Ja||Ya(this.state32),Vf(this.state32,this.rounds),Ja||Ya(this.state32),this.posOut=0,this.pos=0}update(e){xr(this);const{blockLen:s,state:r}=this;e=$r(e);const i=e.length;for(let n=0;n=r&&this.keccak();const o=Math.min(r-this.posOut,n-i);e.set(s.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Ii(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(uu(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:s,suffix:r,outputLen:i,rounds:n,enableXOF:o}=this;return e||(e=new gu(s,r,i,o,n)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=n,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}};const Gf=(t,e,s)=>hu(()=>new Kf(e,t,s)),Jf=Gf(1,136,256/8),Yf="https://rpc.walletconnect.org/v1";function mu(t){const e=`Ethereum Signed Message: +${t.length}`,s=new TextEncoder().encode(e+t);return"0x"+Buffer.from(Jf(s)).toString("hex")}async function Xf(t,e,s,r,i,n){switch(s.t){case"eip191":return await Zf(t,e,s.s);case"eip1271":return await Qf(t,e,s.s,r,i,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${s.t}`)}}async function Zf(t,e,s){return(await Xp({hash:mu(e),signature:s})).toLowerCase()===t.toLowerCase()}async function Qf(t,e,s,r,i,n){const o=Pr(r);if(!o.namespace||!o.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const a="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",l="0000000000000000000000000000000000000000000000000000000000000041",u=s.substring(2),h=mu(e).substring(2),d=a+h+c+l+u,m=await fetch(`${n||Yf}/?chainId=${r}&projectId=${i}`,{method:"POST",body:JSON.stringify({id:eg(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:d},"latest"]})}),{result:w}=await m.json();return w?w.slice(0,a.length).toLowerCase()===a.toLowerCase():!1}catch(a){return console.error("isValidEip1271Signature: ",a),!1}}function eg(){return Date.now()+Math.floor(Math.random()*1e3)}function tg(t){const e=atob(t),s=new Uint8Array(e.length);for(let o=0;oe in t?sg(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ag=(t,e)=>{for(var s in e||(e={}))ng.call(e,s)&&ec(t,s,e[s]);if(Qa)for(var s of Qa(e))og.call(e,s)&&ec(t,s,e[s]);return t},cg=(t,e)=>rg(t,ig(e));const lg="did:pkh:",na=t=>t?.split(":"),ug=t=>{const e=t&&na(t);if(e)return t.includes(lg)?e[3]:e[1]},Ao=t=>{const e=t&&na(t);if(e)return e[2]+":"+e[3]},wn=t=>{const e=t&&na(t);if(e)return e.pop()};async function tc(t){const{cacao:e,projectId:s}=t,{s:r,p:i}=e,n=wu(i,i.iss),o=wn(i.iss);return await Xf(o,n,r,Ao(i.iss),s)}const wu=(t,e)=>{const s=`${t.domain} wants you to sign in with your Ethereum account:`,r=wn(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let i=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,o=`Version: ${t.version}`,a=`Chain ID: ${ug(e)}`,c=`Nonce: ${t.nonce}`,l=`Issued At: ${t.iat}`,u=t.exp?`Expiration Time: ${t.exp}`:void 0,h=t.nbf?`Not Before: ${t.nbf}`:void 0,d=t.requestId?`Request ID: ${t.requestId}`:void 0,m=t.resources?`Resources:${t.resources.map(g=>` +- ${g}`).join("")}`:void 0,w=on(t.resources);if(w){const g=Ai(w);i=bg(i,g)}return[s,r,"",i,"",n,o,a,c,l,u,h,d,m].filter(g=>g!=null).join(` +`)};function hg(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function dg(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function Vs(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(s=>{const r=t.att[s];if(Array.isArray(r))throw new Error(`Resource must be an object: ${s}`);if(typeof r!="object")throw new Error(`Resource must be an object: ${s}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${s}`);Object.keys(r).forEach(i=>{const n=r[i];if(!Array.isArray(n))throw new Error(`Ability limits ${i} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${i} is empty array, must be an array with objects`);n.forEach(o=>{if(typeof o!="object")throw new Error(`Ability limits (${i}) must be an array of objects, found: ${o}`)})})})}function pg(t,e,s,r={}){return s?.sort((i,n)=>i.localeCompare(n)),{att:{[t]:fg(e,s,r)}}}function fg(t,e,s={}){e=e?.sort((i,n)=>i.localeCompare(n));const r=e.map(i=>({[`${t}/${i}`]:[s]}));return Object.assign({},...r)}function yu(t){return Vs(t),`urn:recap:${hg(t).replace(/=/g,"")}`}function Ai(t){const e=dg(t.replace("urn:recap:",""));return Vs(e),e}function gg(t,e,s){const r=pg(t,e,s);return yu(r)}function mg(t){return t&&t.includes("urn:recap:")}function wg(t,e){const s=Ai(t),r=Ai(e),i=yg(s,r);return yu(i)}function yg(t,e){Vs(t),Vs(e);const s=Object.keys(t.att).concat(Object.keys(e.att)).sort((i,n)=>i.localeCompare(n)),r={att:{}};return s.forEach(i=>{var n,o;Object.keys(((n=t.att)==null?void 0:n[i])||{}).concat(Object.keys(((o=e.att)==null?void 0:o[i])||{})).sort((a,c)=>a.localeCompare(c)).forEach(a=>{var c,l;r.att[i]=cg(ag({},r.att[i]),{[a]:((c=t.att[i])==null?void 0:c[a])||((l=e.att[i])==null?void 0:l[a])})})}),r}function bg(t="",e){Vs(e);const s="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(s))return t;const r=[];let i=0;Object.keys(e.att).forEach(a=>{const c=Object.keys(e.att[a]).map(h=>({ability:h.split("/")[0],action:h.split("/")[1]}));c.sort((h,d)=>h.action.localeCompare(d.action));const l={};c.forEach(h=>{l[h.ability]||(l[h.ability]=[]),l[h.ability].push(h.action)});const u=Object.keys(l).map(h=>(i++,`(${i}) '${h}': '${l[h].join("', '")}' for '${a}'.`));r.push(u.join(", ").replace(".,","."))});const n=r.join(" "),o=`${s}${n}`;return`${t?t+" ":""}${o}`}function sc(t){var e;const s=Ai(t);Vs(s);const r=(e=s.att)==null?void 0:e.eip155;return r?Object.keys(r).map(i=>i.split("/")[1]):[]}function rc(t){const e=Ai(t);Vs(e);const s=[];return Object.values(e.att).forEach(r=>{Object.values(r).forEach(i=>{var n;(n=i?.[0])!=null&&n.chains&&s.push(i[0].chains)})}),[...new Set(s.flat())]}function on(t){if(!t)return;const e=t?.[t.length-1];return mg(e)?e:void 0}function zn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function bu(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function mt(t,...e){if(!bu(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function ic(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function vg(t,e){mt(t);const s=e.outputLen;if(t.lengthnew Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Eg=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Cg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Cg)throw new Error("Non little-endian hardware is not supported");function Ig(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function No(t){if(typeof t=="string")t=Ig(t);else if(bu(t))t=_o(t);else throw new Error("Uint8Array expected, got "+typeof t);return t}function Ag(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function Ng(t,e){if(t.length!==e.length)return!1;let s=0;for(let r=0;r{function s(r,...i){if(mt(r),t.nonceLength!==void 0){const l=i[0];if(!l)throw new Error("nonce / iv required");t.varSizeNonce?mt(l):mt(l,t.nonceLength)}const n=t.tagLength;n&&i[1]!==void 0&&mt(i[1]);const o=e(r,...i),a=(l,u)=>{if(u!==void 0){if(l!==2)throw new Error("cipher output not supported");mt(u)}};let c=!1;return{encrypt(l,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,mt(l),a(o.encrypt.length,u),o.encrypt(l,u)},decrypt(l,u){if(mt(l),n&&l.length>i&n),a=Number(s&n);t.setUint32(e+4,o,r),t.setUint32(e+0,a,r)}function Sg(t){return t.byteOffset%4===0}function _o(t){return Uint8Array.from(t)}function Rr(...t){for(let e=0;eUint8Array.from(t.split("").map(e=>e.charCodeAt(0))),Pg=vu("expand 16-byte k"),kg=vu("expand 32-byte k"),Og=Cs(Pg),Tg=Cs(kg);function ce(t,e){return t<>>32-e}function So(t){return t.byteOffset%4===0}const Gi=64,xg=16,Eu=2**32-1,cc=new Uint32Array;function $g(t,e,s,r,i,n,o,a){const c=i.length,l=new Uint8Array(Gi),u=Cs(l),h=So(i)&&So(n),d=h?Cs(i):cc,m=h?Cs(n):cc;for(let w=0;w=Eu)throw new Error("arx: counter overflow");const g=Math.min(Gi,c-w);if(h&&g===Gi){const f=w/4;if(w%4!==0)throw new Error("arx: invalid block position");for(let y=0,b;y{mt(a),mt(c),mt(l);const d=l.length;if(u===void 0&&(u=new Uint8Array(d)),mt(u),zn(h),h<0||h>=Eu)throw new Error("arx: counter overflow");if(u.lengtht[e++]&255|(t[e++]&255)<<8;class Ug{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=No(e),mt(e,32);const s=He(e,0),r=He(e,2),i=He(e,4),n=He(e,6),o=He(e,8),a=He(e,10),c=He(e,12),l=He(e,14);this.r[0]=s&8191,this.r[1]=(s>>>13|r<<3)&8191,this.r[2]=(r>>>10|i<<6)&7939,this.r[3]=(i>>>7|n<<9)&8191,this.r[4]=(n>>>4|o<<12)&255,this.r[5]=o>>>1&8190,this.r[6]=(o>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=He(e,16+2*u)}process(e,s,r=!1){const i=r?0:2048,{h:n,r:o}=this,a=o[0],c=o[1],l=o[2],u=o[3],h=o[4],d=o[5],m=o[6],w=o[7],g=o[8],f=o[9],y=He(e,s+0),b=He(e,s+2),E=He(e,s+4),C=He(e,s+6),S=He(e,s+8),N=He(e,s+10),_=He(e,s+12),U=He(e,s+14);let v=n[0]+(y&8191),$=n[1]+((y>>>13|b<<3)&8191),I=n[2]+((b>>>10|E<<6)&8191),L=n[3]+((E>>>7|C<<9)&8191),H=n[4]+((C>>>4|S<<12)&8191),A=n[5]+(S>>>1&8191),T=n[6]+((S>>>14|N<<2)&8191),k=n[7]+((N>>>11|_<<5)&8191),B=n[8]+((_>>>8|U<<8)&8191),q=n[9]+(U>>>5|i),x=0,G=x+v*a+$*(5*f)+I*(5*g)+L*(5*w)+H*(5*m);x=G>>>13,G&=8191,G+=A*(5*d)+T*(5*h)+k*(5*u)+B*(5*l)+q*(5*c),x+=G>>>13,G&=8191;let Q=x+v*c+$*a+I*(5*f)+L*(5*g)+H*(5*w);x=Q>>>13,Q&=8191,Q+=A*(5*m)+T*(5*d)+k*(5*h)+B*(5*u)+q*(5*l),x+=Q>>>13,Q&=8191;let se=x+v*l+$*c+I*a+L*(5*f)+H*(5*g);x=se>>>13,se&=8191,se+=A*(5*w)+T*(5*m)+k*(5*d)+B*(5*h)+q*(5*u),x+=se>>>13,se&=8191;let Ee=x+v*u+$*l+I*c+L*a+H*(5*f);x=Ee>>>13,Ee&=8191,Ee+=A*(5*g)+T*(5*w)+k*(5*m)+B*(5*d)+q*(5*h),x+=Ee>>>13,Ee&=8191;let de=x+v*h+$*u+I*l+L*c+H*a;x=de>>>13,de&=8191,de+=A*(5*f)+T*(5*g)+k*(5*w)+B*(5*m)+q*(5*d),x+=de>>>13,de&=8191;let Oe=x+v*d+$*h+I*u+L*l+H*c;x=Oe>>>13,Oe&=8191,Oe+=A*a+T*(5*f)+k*(5*g)+B*(5*w)+q*(5*m),x+=Oe>>>13,Oe&=8191;let Le=x+v*m+$*d+I*h+L*u+H*l;x=Le>>>13,Le&=8191,Le+=A*c+T*a+k*(5*f)+B*(5*g)+q*(5*w),x+=Le>>>13,Le&=8191;let Ye=x+v*w+$*m+I*d+L*h+H*u;x=Ye>>>13,Ye&=8191,Ye+=A*l+T*c+k*a+B*(5*f)+q*(5*g),x+=Ye>>>13,Ye&=8191;let $e=x+v*g+$*w+I*m+L*d+H*h;x=$e>>>13,$e&=8191,$e+=A*u+T*l+k*c+B*a+q*(5*f),x+=$e>>>13,$e&=8191;let Re=x+v*f+$*g+I*w+L*m+H*d;x=Re>>>13,Re&=8191,Re+=A*h+T*u+k*l+B*c+q*a,x+=Re>>>13,Re&=8191,x=(x<<2)+x|0,x=x+G|0,G=x&8191,x=x>>>13,Q+=x,n[0]=G,n[1]=Q,n[2]=se,n[3]=Ee,n[4]=de,n[5]=Oe,n[6]=Le,n[7]=Ye,n[8]=$e,n[9]=Re}finalize(){const{h:e,pad:s}=this,r=new Uint16Array(10);let i=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=i,i=e[a]>>>13,e[a]&=8191;e[0]+=i*5,i=e[0]>>>13,e[0]&=8191,e[1]+=i,i=e[1]>>>13,e[1]&=8191,e[2]+=i,r[0]=e[0]+5,i=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+i,i=r[a]>>>13,r[a]&=8191;r[9]-=8192;let n=(i^1)-1;for(let a=0;a<10;a++)r[a]&=n;n=~n;for(let a=0;a<10;a++)e[a]=e[a]&n|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let o=e[0]+s[0];e[0]=o&65535;for(let a=1;a<8;a++)o=(e[a]+s[a]|0)+(o>>>16)|0,e[a]=o&65535;Rr(r)}update(e){ic(this);const{buffer:s,blockLen:r}=this;e=No(e);const i=e.length;for(let n=0;n>>0,e[n++]=r[o]>>>8;return e}digest(){const{buffer:e,outputLen:s}=this;this.digestInto(e);const r=e.slice(0,s);return this.destroy(),r}}function Dg(t){const e=(r,i)=>t(i).update(No(r)).digest(),s=t(new Uint8Array(32));return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=r=>t(r),e}const Lg=Dg(t=>new Ug(t));function Mg(t,e,s,r,i,n=20){let o=t[0],a=t[1],c=t[2],l=t[3],u=e[0],h=e[1],d=e[2],m=e[3],w=e[4],g=e[5],f=e[6],y=e[7],b=i,E=s[0],C=s[1],S=s[2],N=o,_=a,U=c,v=l,$=u,I=h,L=d,H=m,A=w,T=g,k=f,B=y,q=b,x=E,G=C,Q=S;for(let Ee=0;Ee{t.update(e);const s=e.length%16;s&&t.update(jg.subarray(s))},qg=new Uint8Array(32);function uc(t,e,s,r,i){const n=t(e,s,qg),o=Lg.create(n);i&&lc(o,i),lc(o,r);const a=new Uint8Array(16),c=Eg(a);ac(c,0,BigInt(i?i.length:0),!0),ac(c,8,BigInt(r.length),!0),o.update(a);const l=o.digest();return Rr(n,a),l}const Fg=t=>(e,s,r)=>({encrypt(i,n){const o=i.length;n=oc(o+16,n,!1),n.set(i);const a=n.subarray(0,-16);t(e,s,a,a,1);const c=uc(t,e,s,a,r);return n.set(c,o),Rr(c),n},decrypt(i,n){n=oc(i.length-16,n,!1);const o=i.subarray(0,-16),a=i.subarray(-16),c=uc(t,e,s,o,r);if(!Ng(a,c))throw new Error("invalid tag");return n.set(i.subarray(0,-16)),t(e,s,n,n,1),Rr(c),n}}),Cu=_g({blockSize:64,nonceLength:12,tagLength:16},Fg(Bg));let Iu=class extends ia{constructor(e,s){super(),this.finished=!1,this.destroyed=!1,ra(e);const r=$r(s);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,n=new Uint8Array(i);n.set(r.length>i?e.create().update(r).digest():r);for(let o=0;onew Iu(t,e).update(s).digest();_n.create=(t,e)=>new Iu(t,e);function Wg(t,e,s){return ra(t),s===void 0&&(s=new Uint8Array(t.outputLen)),_n(t,$r(s),$r(e))}const Hn=new Uint8Array([0]),hc=new Uint8Array;function zg(t,e,s,r=32){if(ra(t),Ii(r),r>255*t.outputLen)throw new Error("Length should be <= 255*HashLen");const i=Math.ceil(r/t.outputLen);s===void 0&&(s=hc);const n=new Uint8Array(i*t.outputLen),o=_n.create(t,e),a=o._cloneInto(),c=new Uint8Array(o.outputLen);for(let l=0;lzg(t,Wg(t,e,s),r,i);function Vg(t,e,s,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,s,r);const i=BigInt(32),n=BigInt(4294967295),o=Number(s>>i&n),a=Number(s&n),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}function Kg(t,e,s){return t&e^~t&s}function Gg(t,e,s){return t&e^t&s^e&s}let Jg=class extends ia{constructor(e,s,r,i){super(),this.blockLen=e,this.outputLen=s,this.padOffset=r,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Wn(this.buffer)}update(e){xr(this);const{view:s,buffer:r,blockLen:i}=this;e=$r(e);const n=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let h=o;hu.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h>>3,g=Bt(m,17)^Bt(m,19)^m>>>10;ps[h]=g+ps[h-7]+w+ps[h-16]|0}let{A:r,B:i,C:n,D:o,E:a,F:c,G:l,H:u}=this;for(let h=0;h<64;h++){const d=Bt(a,6)^Bt(a,11)^Bt(a,25),m=u+d+Kg(a,c,l)+Yg[h]+ps[h]|0,w=(Bt(r,2)^Bt(r,13)^Bt(r,22))+Gg(r,i,n)|0;u=l,l=c,c=a,a=o+m|0,o=n,n=i,i=r,r=m+w|0}r=r+this.A|0,i=i+this.B|0,n=n+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,i,n,o,a,c,l,u)}roundClean(){ps.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Di=hu(()=>new Xg);const Sn=BigInt(0),Pn=BigInt(1),Zg=BigInt(2);function Ks(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Li(t){if(!Ks(t))throw new Error("Uint8Array expected")}function Ur(t,e){if(typeof e!="boolean")throw new Error(t+" boolean expected, got "+e)}const Qg=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Dr(t){Li(t);let e="";for(let s=0;s=es._0&&t<=es._9)return t-es._0;if(t>=es.A&&t<=es.F)return t-(es.A-10);if(t>=es.a&&t<=es.f)return t-(es.a-10)}function Lr(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,s=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(s);for(let i=0,n=0;itypeof t=="bigint"&&Sn<=t;function On(t,e,s){return Vn(t)&&Vn(e)&&Vn(s)&&e<=t&&tSn;t>>=Pn,e+=1);return e}function rm(t,e){return t>>BigInt(e)&Pn}function im(t,e,s){return t|(s?Pn:Sn)<(Zg<new Uint8Array(t),pc=t=>Uint8Array.from(t);function Nu(t,e,s){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof s!="function")throw new Error("hmacFn must be a function");let r=Kn(t),i=Kn(t),n=0;const o=()=>{r.fill(1),i.fill(0),n=0},a=(...u)=>s(i,r,...u),c=(u=Kn())=>{i=a(pc([0]),u),r=a(),u.length!==0&&(i=a(pc([1]),u),r=a())},l=()=>{if(n++>=1e3)throw new Error("drbg: tried 1000 values");let u=0;const h=[];for(;u{o(),c(u);let d;for(;!(d=h(l()));)c();return o(),d}}const nm={bigint:t=>typeof t=="bigint",function:t=>typeof t=="function",boolean:t=>typeof t=="boolean",string:t=>typeof t=="string",stringOrUint8Array:t=>typeof t=="string"||Ks(t),isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t=="function"&&Number.isSafeInteger(t.outputLen)};function Kr(t,e,s={}){const r=(i,n,o)=>{const a=nm[n];if(typeof a!="function")throw new Error("invalid validator function");const c=t[i];if(!(o&&c===void 0)&&!a(c,t))throw new Error("param "+String(i)+" is invalid. Expected "+n+", got "+c)};for(const[i,n]of Object.entries(e))r(i,n,!1);for(const[i,n]of Object.entries(s))r(i,n,!0);return t}const om=()=>{throw new Error("not implemented")};function Po(t){const e=new WeakMap;return(s,...r)=>{const i=e.get(s);if(i!==void 0)return i;const n=t(s,...r);return e.set(s,n),n}}var am=Object.freeze({__proto__:null,isBytes:Ks,abytes:Li,abool:Ur,bytesToHex:Dr,numberToHexUnpadded:Nr,hexToNumber:oa,hexToBytes:Lr,bytesToNumberBE:Fs,bytesToNumberLE:Ni,numberToBytesBE:Mr,numberToBytesLE:kn,numberToVarBytesBE:em,ensureBytes:gt,concatBytes:_i,equalBytes:tm,utf8ToBytes:sm,inRange:On,aInRange:ns,bitLen:Au,bitGet:rm,bitSet:im,bitMask:aa,createHmacDrbg:Nu,validateObject:Kr,notImplemented:om,memoized:Po});const ze=BigInt(0),ke=BigInt(1),Ds=BigInt(2),cm=BigInt(3),ko=BigInt(4),fc=BigInt(5),gc=BigInt(8);function lt(t,e){const s=t%e;return s>=ze?s:e+s}function _u(t,e,s){if(eze;)e&ke&&(r=r*t%s),t=t*t%s,e>>=ke;return r}function $t(t,e,s){let r=t;for(;e-- >ze;)r*=r,r%=s;return r}function Oo(t,e){if(t===ze)throw new Error("invert: expected non-zero number");if(e<=ze)throw new Error("invert: expected positive modulus, got "+e);let s=lt(t,e),r=e,i=ze,n=ke;for(;s!==ze;){const o=r/s,a=r%s,c=i-n*o;r=s,s=a,i=n,n=c}if(r!==ke)throw new Error("invert: does not exist");return lt(i,e)}function lm(t){const e=(t-ke)/Ds;let s,r,i;for(s=t-ke,r=0;s%Ds===ze;s/=Ds,r++);for(i=Ds;i1e3)throw new Error("Cannot find square root: likely non-prime P");if(r===1){const o=(t+ke)/ko;return function(a,c){const l=a.pow(c,o);if(!a.eql(a.sqr(l),c))throw new Error("Cannot find square root");return l}}const n=(s+ke)/Ds;return function(o,a){if(o.pow(a,e)===o.neg(o.ONE))throw new Error("Cannot find square root");let c=r,l=o.pow(o.mul(o.ONE,i),s),u=o.pow(a,n),h=o.pow(a,s);for(;!o.eql(h,o.ONE);){if(o.eql(h,o.ZERO))return o.ZERO;let d=1;for(let w=o.sqr(h);d(r[i]="function",r),e);return Kr(t,s)}function pm(t,e,s){if(sze;)s&ke&&(r=t.mul(r,i)),i=t.sqr(i),s>>=ke;return r}function fm(t,e){const s=new Array(e.length),r=e.reduce((n,o,a)=>t.is0(o)?n:(s[a]=n,t.mul(n,o)),t.ONE),i=t.inv(r);return e.reduceRight((n,o,a)=>t.is0(o)?n:(s[a]=t.mul(n,s[a]),t.mul(n,o)),i),s}function Su(t,e){const s=e!==void 0?e:t.toString(2).length,r=Math.ceil(s/8);return{nBitLength:s,nByteLength:r}}function Pu(t,e,s=!1,r={}){if(t<=ze)throw new Error("invalid field: expected ORDER > 0, got "+t);const{nBitLength:i,nByteLength:n}=Su(t,e);if(n>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let o;const a=Object.freeze({ORDER:t,isLE:s,BITS:i,BYTES:n,MASK:aa(i),ZERO:ze,ONE:ke,create:c=>lt(c,t),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return ze<=c&&cc===ze,isOdd:c=>(c&ke)===ke,neg:c=>lt(-c,t),eql:(c,l)=>c===l,sqr:c=>lt(c*c,t),add:(c,l)=>lt(c+l,t),sub:(c,l)=>lt(c-l,t),mul:(c,l)=>lt(c*l,t),pow:(c,l)=>pm(a,c,l),div:(c,l)=>lt(c*Oo(l,t),t),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Oo(c,t),sqrt:r.sqrt||(c=>(o||(o=um(t)),o(a,c))),invertBatch:c=>fm(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>s?kn(c,n):Mr(c,n),fromBytes:c=>{if(c.length!==n)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+c.length);return s?Ni(c):Fs(c)}});return Object.freeze(a)}function ku(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function Ou(t){const e=ku(t);return e+Math.ceil(e/2)}function gm(t,e,s=!1){const r=t.length,i=ku(e),n=Ou(e);if(r<16||r1024)throw new Error("expected "+n+"-1024 bytes of input, got "+r);const o=s?Ni(t):Fs(t),a=lt(o,e-ke)+ke;return s?kn(a,i):Mr(a,i)}const mc=BigInt(0),Ji=BigInt(1);function Gn(t,e){const s=e.negate();return t?s:e}function Tu(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Jn(t,e){Tu(t,e);const s=Math.ceil(e/t)+1,r=2**(t-1);return{windows:s,windowSize:r}}function mm(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((s,r)=>{if(!(s instanceof e))throw new Error("invalid point at index "+r)})}function wm(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((s,r)=>{if(!e.isValid(s))throw new Error("invalid scalar at index "+r)})}const Yn=new WeakMap,xu=new WeakMap;function Xn(t){return xu.get(t)||1}function ym(t,e){return{constTimeNegate:Gn,hasPrecomputes(s){return Xn(s)!==1},unsafeLadder(s,r,i=t.ZERO){let n=s;for(;r>mc;)r&Ji&&(i=i.add(n)),n=n.double(),r>>=Ji;return i},precomputeWindow(s,r){const{windows:i,windowSize:n}=Jn(r,e),o=[];let a=s,c=a;for(let l=0;l>=h,w>o&&(w-=u,i+=Ji);const g=m,f=m+Math.abs(w)-1,y=d%2!==0,b=w<0;w===0?c=c.add(Gn(y,r[g])):a=a.add(Gn(b,r[f]))}return{p:a,f:c}},wNAFUnsafe(s,r,i,n=t.ZERO){const{windows:o,windowSize:a}=Jn(s,e),c=BigInt(2**s-1),l=2**s,u=BigInt(s);for(let h=0;h>=u,m>a&&(m-=l,i+=Ji),m===0)continue;let w=r[d+Math.abs(m)-1];m<0&&(w=w.negate()),n=n.add(w)}return n},getPrecomputes(s,r,i){let n=Yn.get(r);return n||(n=this.precomputeWindow(r,s),s!==1&&Yn.set(r,i(n))),n},wNAFCached(s,r,i){const n=Xn(s);return this.wNAF(n,this.getPrecomputes(n,s,i),r)},wNAFCachedUnsafe(s,r,i,n){const o=Xn(s);return o===1?this.unsafeLadder(s,r,n):this.wNAFUnsafe(o,this.getPrecomputes(o,s,i),r,n)},setWindowSize(s,r){Tu(r,e),xu.set(s,r),Yn.delete(s)}}}function bm(t,e,s,r){if(mm(s,t),wm(r,e),s.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,n=Au(BigInt(s.length)),o=n>12?n-3:n>4?n-2:n?2:1,a=(1<=0;h-=o){c.fill(i);for(let m=0;m>BigInt(h)&BigInt(a));c[g]=c[g].add(s[m])}let d=i;for(let m=c.length-1,w=i;m>0;m--)w=w.add(c[m]),d=d.add(w);if(u=u.add(d),h!==0)for(let m=0;mlt(b,s),i=e.montgomeryBits,n=Math.ceil(i/8),o=e.nByteLength,a=e.adjustScalarBytes||(b=>b),c=e.powPminus2||(b=>_u(b,s-BigInt(2),s));function l(b,E,C){const S=r(b*(E-C));return E=r(E-S),C=r(C+S),[E,C]}const u=(e.a-BigInt(2))/BigInt(4);function h(b,E){ns("u",b,or,s),ns("scalar",E,or,s);const C=E,S=b;let N=Zn,_=or,U=b,v=Zn,$=or,I;for(let H=BigInt(i-1);H>=or;H--){const A=C>>H&Zn;$^=A,I=l($,N,U),N=I[0],U=I[1],I=l($,_,v),_=I[0],v=I[1],$=A;const T=N+_,k=r(T*T),B=N-_,q=r(B*B),x=k-q,G=U+v,Q=U-v,se=r(Q*T),Ee=r(G*B),de=se+Ee,Oe=se-Ee;U=r(de*de),v=r(S*r(Oe*Oe)),N=r(k*q),_=r(x*(k+r(u*x)))}I=l($,N,U),N=I[0],U=I[1],I=l($,_,v),_=I[0],v=I[1];const L=c(_);return r(N*L)}function d(b){return kn(r(b),n)}function m(b){const E=gt("u coordinate",b,n);return o===32&&(E[31]&=127),Ni(E)}function w(b){const E=gt("scalar",b),C=E.length;if(C!==n&&C!==o){let S=""+n+" or "+o;throw new Error("invalid scalar, expected "+S+" bytes, got "+C)}return Ni(a(E))}function g(b,E){const C=m(E),S=w(b),N=h(C,S);if(N===or)throw new Error("invalid private or public key received");return d(N)}const f=d(e.Gu);function y(b){return g(b,f)}return{scalarMult:g,scalarMultBase:y,getSharedSecret:(b,E)=>g(b,E),getPublicKey:b=>y(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:f}}const To=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949");BigInt(0);const Cm=BigInt(1),wc=BigInt(2),Im=BigInt(3),Am=BigInt(5);BigInt(8);function Nm(t){const e=BigInt(10),s=BigInt(20),r=BigInt(40),i=BigInt(80),n=To,o=t*t%n*t%n,a=$t(o,wc,n)*o%n,c=$t(a,Cm,n)*t%n,l=$t(c,Am,n)*c%n,u=$t(l,e,n)*l%n,h=$t(u,s,n)*u%n,d=$t(h,r,n)*h%n,m=$t(d,i,n)*d%n,w=$t(m,i,n)*d%n,g=$t(w,e,n)*l%n;return{pow_p_5_8:$t(g,wc,n)*t%n,b2:o}}function _m(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const xo=Em({P:To,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:t=>{const e=To,{pow_p_5_8:s,b2:r}=Nm(t);return lt($t(s,Im,e)*r,e)},adjustScalarBytes:_m,randomBytes:Vr});function yc(t){t.lowS!==void 0&&Ur("lowS",t.lowS),t.prehash!==void 0&&Ur("prehash",t.prehash)}function Sm(t){const e=$u(t);Kr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:s,Fp:r,a:i}=e;if(s){if(!r.eql(i,r.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof s!="object"||typeof s.beta!="bigint"||typeof s.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}const{bytesToNumberBE:Pm,hexToBytes:km}=am;class Om extends Error{constructor(e=""){super(e)}}const rs={Err:Om,_tlv:{encode:(t,e)=>{const{Err:s}=rs;if(t<0||t>256)throw new s("tlv.encode: wrong tag");if(e.length&1)throw new s("tlv.encode: unpadded data");const r=e.length/2,i=Nr(r);if(i.length/2&128)throw new s("tlv.encode: long form length too big");const n=r>127?Nr(i.length/2|128):"";return Nr(t)+n+i+e},decode(t,e){const{Err:s}=rs;let r=0;if(t<0||t>256)throw new s("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new s("tlv.decode: wrong tlv");const i=e[r++],n=!!(i&128);let o=0;if(!n)o=i;else{const c=i&127;if(!c)throw new s("tlv.decode(long): indefinite length not supported");if(c>4)throw new s("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new s("tlv.decode: length bytes not complete");if(l[0]===0)throw new s("tlv.decode(long): zero leftmost byte");for(const u of l)o=o<<8|u;if(r+=c,o<128)throw new s("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+o);if(a.length!==o)throw new s("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+o)}}},_int:{encode(t){const{Err:e}=rs;if(t{const b=f.toAffine();return _i(Uint8Array.from([4]),s.toBytes(b.x),s.toBytes(b.y))}),n=e.fromBytes||(g=>{const f=g.subarray(1),y=s.fromBytes(f.subarray(0,s.BYTES)),b=s.fromBytes(f.subarray(s.BYTES,2*s.BYTES));return{x:y,y:b}});function o(g){const{a:f,b:y}=e,b=s.sqr(g),E=s.mul(b,g);return s.add(s.add(E,s.mul(g,f)),y)}if(!s.eql(s.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return On(g,je,e.n)}function c(g){const{allowedPrivateKeyLengths:f,nByteLength:y,wrapPrivateKey:b,n:E}=e;if(f&&typeof g!="bigint"){if(Ks(g)&&(g=Dr(g)),typeof g!="string"||!f.includes(g.length))throw new Error("invalid private key");g=g.padStart(y*2,"0")}let C;try{C=typeof g=="bigint"?g:Fs(gt("private key",g,y))}catch{throw new Error("invalid private key, expected hex or "+y+" bytes, got "+typeof g)}return b&&(C=lt(C,E)),ns("private key",C,je,E),C}function l(g){if(!(g instanceof d))throw new Error("ProjectivePoint expected")}const u=Po((g,f)=>{const{px:y,py:b,pz:E}=g;if(s.eql(E,s.ONE))return{x:y,y:b};const C=g.is0();f==null&&(f=C?s.ONE:s.inv(E));const S=s.mul(y,f),N=s.mul(b,f),_=s.mul(E,f);if(C)return{x:s.ZERO,y:s.ZERO};if(!s.eql(_,s.ONE))throw new Error("invZ was invalid");return{x:S,y:N}}),h=Po(g=>{if(g.is0()){if(e.allowInfinityPoint&&!s.is0(g.py))return;throw new Error("bad point: ZERO")}const{x:f,y}=g.toAffine();if(!s.isValid(f)||!s.isValid(y))throw new Error("bad point: x or y not FE");const b=s.sqr(y),E=o(f);if(!s.eql(b,E))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(f,y,b){if(this.px=f,this.py=y,this.pz=b,f==null||!s.isValid(f))throw new Error("x required");if(y==null||!s.isValid(y))throw new Error("y required");if(b==null||!s.isValid(b))throw new Error("z required");Object.freeze(this)}static fromAffine(f){const{x:y,y:b}=f||{};if(!f||!s.isValid(y)||!s.isValid(b))throw new Error("invalid affine point");if(f instanceof d)throw new Error("projective point not allowed");const E=C=>s.eql(C,s.ZERO);return E(y)&&E(b)?d.ZERO:new d(y,b,s.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(f){const y=s.invertBatch(f.map(b=>b.pz));return f.map((b,E)=>b.toAffine(y[E])).map(d.fromAffine)}static fromHex(f){const y=d.fromAffine(n(gt("pointHex",f)));return y.assertValidity(),y}static fromPrivateKey(f){return d.BASE.multiply(c(f))}static msm(f,y){return bm(d,r,f,y)}_setWindowSize(f){w.setWindowSize(this,f)}assertValidity(){h(this)}hasEvenY(){const{y:f}=this.toAffine();if(s.isOdd)return!s.isOdd(f);throw new Error("Field doesn't support isOdd")}equals(f){l(f);const{px:y,py:b,pz:E}=this,{px:C,py:S,pz:N}=f,_=s.eql(s.mul(y,N),s.mul(C,E)),U=s.eql(s.mul(b,N),s.mul(S,E));return _&&U}negate(){return new d(this.px,s.neg(this.py),this.pz)}double(){const{a:f,b:y}=e,b=s.mul(y,bc),{px:E,py:C,pz:S}=this;let N=s.ZERO,_=s.ZERO,U=s.ZERO,v=s.mul(E,E),$=s.mul(C,C),I=s.mul(S,S),L=s.mul(E,C);return L=s.add(L,L),U=s.mul(E,S),U=s.add(U,U),N=s.mul(f,U),_=s.mul(b,I),_=s.add(N,_),N=s.sub($,_),_=s.add($,_),_=s.mul(N,_),N=s.mul(L,N),U=s.mul(b,U),I=s.mul(f,I),L=s.sub(v,I),L=s.mul(f,L),L=s.add(L,U),U=s.add(v,v),v=s.add(U,v),v=s.add(v,I),v=s.mul(v,L),_=s.add(_,v),I=s.mul(C,S),I=s.add(I,I),v=s.mul(I,L),N=s.sub(N,v),U=s.mul(I,$),U=s.add(U,U),U=s.add(U,U),new d(N,_,U)}add(f){l(f);const{px:y,py:b,pz:E}=this,{px:C,py:S,pz:N}=f;let _=s.ZERO,U=s.ZERO,v=s.ZERO;const $=e.a,I=s.mul(e.b,bc);let L=s.mul(y,C),H=s.mul(b,S),A=s.mul(E,N),T=s.add(y,b),k=s.add(C,S);T=s.mul(T,k),k=s.add(L,H),T=s.sub(T,k),k=s.add(y,E);let B=s.add(C,N);return k=s.mul(k,B),B=s.add(L,A),k=s.sub(k,B),B=s.add(b,E),_=s.add(S,N),B=s.mul(B,_),_=s.add(H,A),B=s.sub(B,_),v=s.mul($,k),_=s.mul(I,A),v=s.add(_,v),_=s.sub(H,v),v=s.add(H,v),U=s.mul(_,v),H=s.add(L,L),H=s.add(H,L),A=s.mul($,A),k=s.mul(I,k),H=s.add(H,A),A=s.sub(L,A),A=s.mul($,A),k=s.add(k,A),L=s.mul(H,k),U=s.add(U,L),L=s.mul(B,k),_=s.mul(T,_),_=s.sub(_,L),L=s.mul(T,H),v=s.mul(B,v),v=s.add(v,L),new d(_,U,v)}subtract(f){return this.add(f.negate())}is0(){return this.equals(d.ZERO)}wNAF(f){return w.wNAFCached(this,f,d.normalizeZ)}multiplyUnsafe(f){const{endo:y,n:b}=e;ns("scalar",f,is,b);const E=d.ZERO;if(f===is)return E;if(this.is0()||f===je)return this;if(!y||w.hasPrecomputes(this))return w.wNAFCachedUnsafe(this,f,d.normalizeZ);let{k1neg:C,k1:S,k2neg:N,k2:_}=y.splitScalar(f),U=E,v=E,$=this;for(;S>is||_>is;)S&je&&(U=U.add($)),_&je&&(v=v.add($)),$=$.double(),S>>=je,_>>=je;return C&&(U=U.negate()),N&&(v=v.negate()),v=new d(s.mul(v.px,y.beta),v.py,v.pz),U.add(v)}multiply(f){const{endo:y,n:b}=e;ns("scalar",f,je,b);let E,C;if(y){const{k1neg:S,k1:N,k2neg:_,k2:U}=y.splitScalar(f);let{p:v,f:$}=this.wNAF(N),{p:I,f:L}=this.wNAF(U);v=w.constTimeNegate(S,v),I=w.constTimeNegate(_,I),I=new d(s.mul(I.px,y.beta),I.py,I.pz),E=v.add(I),C=$.add(L)}else{const{p:S,f:N}=this.wNAF(f);E=S,C=N}return d.normalizeZ([E,C])[0]}multiplyAndAddUnsafe(f,y,b){const E=d.BASE,C=(N,_)=>_===is||_===je||!N.equals(E)?N.multiplyUnsafe(_):N.multiply(_),S=C(this,y).add(C(f,b));return S.is0()?void 0:S}toAffine(f){return u(this,f)}isTorsionFree(){const{h:f,isTorsionFree:y}=e;if(f===je)return!0;if(y)return y(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:f,clearCofactor:y}=e;return f===je?this:y?y(d,this):this.multiplyUnsafe(e.h)}toRawBytes(f=!0){return Ur("isCompressed",f),this.assertValidity(),i(d,this,f)}toHex(f=!0){return Ur("isCompressed",f),Dr(this.toRawBytes(f))}}d.BASE=new d(e.Gx,e.Gy,s.ONE),d.ZERO=new d(s.ZERO,s.ONE,s.ZERO);const m=e.nBitLength,w=ym(d,e.endo?Math.ceil(m/2):m);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function xm(t){const e=$u(t);return Kr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function $m(t){const e=xm(t),{Fp:s,n:r}=e,i=s.BYTES+1,n=2*s.BYTES+1;function o(A){return lt(A,r)}function a(A){return Oo(A,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:h}=Tm({...e,toBytes(A,T,k){const B=T.toAffine(),q=s.toBytes(B.x),x=_i;return Ur("isCompressed",k),k?x(Uint8Array.from([T.hasEvenY()?2:3]),q):x(Uint8Array.from([4]),q,s.toBytes(B.y))},fromBytes(A){const T=A.length,k=A[0],B=A.subarray(1);if(T===i&&(k===2||k===3)){const q=Fs(B);if(!On(q,je,s.ORDER))throw new Error("Point is not on curve");const x=u(q);let G;try{G=s.sqrt(x)}catch(se){const Ee=se instanceof Error?": "+se.message:"";throw new Error("Point is not on curve"+Ee)}const Q=(G&je)===je;return(k&1)===1!==Q&&(G=s.neg(G)),{x:q,y:G}}else if(T===n&&k===4){const q=s.fromBytes(B.subarray(0,s.BYTES)),x=s.fromBytes(B.subarray(s.BYTES,2*s.BYTES));return{x:q,y:x}}else{const q=i,x=n;throw new Error("invalid Point, expected length of "+q+", or uncompressed "+x+", got "+T)}}}),d=A=>Dr(Mr(A,e.nByteLength));function m(A){const T=r>>je;return A>T}function w(A){return m(A)?o(-A):A}const g=(A,T,k)=>Fs(A.slice(T,k));class f{constructor(T,k,B){this.r=T,this.s=k,this.recovery=B,this.assertValidity()}static fromCompact(T){const k=e.nByteLength;return T=gt("compactSignature",T,k*2),new f(g(T,0,k),g(T,k,2*k))}static fromDER(T){const{r:k,s:B}=rs.toSig(gt("DER",T));return new f(k,B)}assertValidity(){ns("r",this.r,je,r),ns("s",this.s,je,r)}addRecoveryBit(T){return new f(this.r,this.s,T)}recoverPublicKey(T){const{r:k,s:B,recovery:q}=this,x=N(gt("msgHash",T));if(q==null||![0,1,2,3].includes(q))throw new Error("recovery id invalid");const G=q===2||q===3?k+e.n:k;if(G>=s.ORDER)throw new Error("recovery id 2 or 3 invalid");const Q=(q&1)===0?"02":"03",se=c.fromHex(Q+d(G)),Ee=a(G),de=o(-x*Ee),Oe=o(B*Ee),Le=c.BASE.multiplyAndAddUnsafe(se,de,Oe);if(!Le)throw new Error("point at infinify");return Le.assertValidity(),Le}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new f(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return Lr(this.toDERHex())}toDERHex(){return rs.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Lr(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}const y={isValidPrivateKey(A){try{return l(A),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{const A=Ou(e.n);return gm(e.randomBytes(A),e.n)},precompute(A=8,T=c.BASE){return T._setWindowSize(A),T.multiply(BigInt(3)),T}};function b(A,T=!0){return c.fromPrivateKey(A).toRawBytes(T)}function E(A){const T=Ks(A),k=typeof A=="string",B=(T||k)&&A.length;return T?B===i||B===n:k?B===2*i||B===2*n:A instanceof c}function C(A,T,k=!0){if(E(A))throw new Error("first arg must be private key");if(!E(T))throw new Error("second arg must be public key");return c.fromHex(T).multiply(l(A)).toRawBytes(k)}const S=e.bits2int||function(A){if(A.length>8192)throw new Error("input is too large");const T=Fs(A),k=A.length*8-e.nBitLength;return k>0?T>>BigInt(k):T},N=e.bits2int_modN||function(A){return o(S(A))},_=aa(e.nBitLength);function U(A){return ns("num < 2^"+e.nBitLength,A,is,_),Mr(A,e.nByteLength)}function v(A,T,k=$){if(["recovered","canonical"].some($e=>$e in k))throw new Error("sign() legacy options not supported");const{hash:B,randomBytes:q}=e;let{lowS:x,prehash:G,extraEntropy:Q}=k;x==null&&(x=!0),A=gt("msgHash",A),yc(k),G&&(A=gt("prehashed msgHash",B(A)));const se=N(A),Ee=l(T),de=[U(Ee),U(se)];if(Q!=null&&Q!==!1){const $e=Q===!0?q(s.BYTES):Q;de.push(gt("extraEntropy",$e))}const Oe=_i(...de),Le=se;function Ye($e){const Re=S($e);if(!h(Re))return;const Ps=a(Re),Jt=c.BASE.multiply(Re).toAffine(),Mt=o(Jt.x);if(Mt===is)return;const Yt=o(Ps*o(Le+Mt*Ee));if(Yt===is)return;let sr=(Jt.x===Mt?0:2)|Number(Jt.y&je),Wi=Yt;return x&&m(Yt)&&(Wi=w(Yt),sr^=1),new f(Mt,Wi,sr)}return{seed:Oe,k2sig:Ye}}const $={lowS:e.lowS,prehash:!1},I={lowS:e.lowS,prehash:!1};function L(A,T,k=$){const{seed:B,k2sig:q}=v(A,T,k),x=e;return Nu(x.hash.outputLen,x.nByteLength,x.hmac)(B,q)}c.BASE._setWindowSize(8);function H(A,T,k,B=I){const q=A;T=gt("msgHash",T),k=gt("publicKey",k);const{lowS:x,prehash:G,format:Q}=B;if(yc(B),"strict"in B)throw new Error("options.strict was renamed to lowS");if(Q!==void 0&&Q!=="compact"&&Q!=="der")throw new Error("format must be compact or der");const se=typeof q=="string"||Ks(q),Ee=!se&&!Q&&typeof q=="object"&&q!==null&&typeof q.r=="bigint"&&typeof q.s=="bigint";if(!se&&!Ee)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let de,Oe;try{if(Ee&&(de=new f(q.r,q.s)),se){try{Q!=="compact"&&(de=f.fromDER(q))}catch(Yt){if(!(Yt instanceof rs.Err))throw Yt}!de&&Q!=="der"&&(de=f.fromCompact(q))}Oe=c.fromHex(k)}catch{return!1}if(!de||x&&de.hasHighS())return!1;G&&(T=e.hash(T));const{r:Le,s:Ye}=de,$e=N(T),Re=a(Ye),Ps=o($e*Re),Jt=o(Le*Re),Mt=c.BASE.multiplyAndAddUnsafe(Oe,Ps,Jt)?.toAffine();return Mt?o(Mt.x)===Le:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:C,sign:L,verify:H,ProjectivePoint:c,Signature:f,utils:y}}function Rm(t){return{hash:t,hmac:(e,...s)=>_n(t,e,Mf(...s)),randomBytes:Vr}}function Um(t,e){const s=r=>$m({...t,...Rm(r)});return{...s(e),create:s}}const Ru=Pu(BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff")),Dm=Ru.create(BigInt("-3")),Lm=BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Mm=Um({a:Dm,b:Lm,Fp:Ru,n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"),h:BigInt(1),lowS:!1},Di),Uu="base10",tt="base16",Dt="base64pad",ws="base64url",Mi="utf8",Du=0,os=1,Bi=2,Bm=0,vc=1,mi=12,ca=32;function jm(){const t=xo.utils.randomPrivateKey(),e=xo.getPublicKey(t);return{privateKey:ut(t,tt),publicKey:ut(e,tt)}}function $o(){const t=Vr(ca);return ut(t,tt)}function qm(t,e){const s=xo.getSharedSecret(St(t,tt),St(e,tt)),r=Hg(Di,s,void 0,void 0,ca);return ut(r,tt)}function an(t){const e=Di(St(t,tt));return ut(e,tt)}function Ht(t){const e=Di(St(t,Mi));return ut(e,tt)}function Lu(t){return St(`${t}`,Uu)}function Gs(t){return Number(ut(t,Uu))}function Mu(t){return t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Bu(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),s=(4-e.length%4)%4;return e+"=".repeat(s)}function Fm(t){const e=Lu(typeof t.type<"u"?t.type:Du);if(Gs(e)===os&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const s=typeof t.senderPublicKey<"u"?St(t.senderPublicKey,tt):void 0,r=typeof t.iv<"u"?St(t.iv,tt):Vr(mi),i=St(t.symKey,tt),n=Cu(i,r).encrypt(St(t.message,Mi)),o=ju({type:e,sealed:n,iv:r,senderPublicKey:s});return t.encoding===ws?Mu(o):o}function Wm(t){const e=St(t.symKey,tt),{sealed:s,iv:r}=Si({encoded:t.encoded,encoding:t.encoding}),i=Cu(e,r).decrypt(s);if(i===null)throw new Error("Failed to decrypt");return ut(i,Mi)}function zm(t,e){const s=Lu(Bi),r=Vr(mi),i=St(t,Mi),n=ju({type:s,sealed:i,iv:r});return e===ws?Mu(n):n}function Hm(t,e){const{sealed:s}=Si({encoded:t,encoding:e});return ut(s,Mi)}function ju(t){if(Gs(t.type)===Bi)return ut(hi([t.type,t.sealed]),Dt);if(Gs(t.type)===os){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return ut(hi([t.type,t.senderPublicKey,t.iv,t.sealed]),Dt)}return ut(hi([t.type,t.iv,t.sealed]),Dt)}function Si(t){const e=(t.encoding||Dt)===ws?Bu(t.encoded):t.encoded,s=St(e,Dt),r=s.slice(Bm,vc),i=vc;if(Gs(r)===os){const c=i+ca,l=c+mi,u=s.slice(i,c),h=s.slice(c,l),d=s.slice(l);return{type:r,sealed:d,iv:h,senderPublicKey:u}}if(Gs(r)===Bi){const c=s.slice(i),l=Vr(mi);return{type:r,sealed:c,iv:l}}const n=i+mi,o=s.slice(i,n),a=s.slice(n);return{type:r,sealed:a,iv:o}}function Vm(t,e){const s=Si({encoded:t,encoding:e?.encoding});return qu({type:Gs(s.type),senderPublicKey:typeof s.senderPublicKey<"u"?ut(s.senderPublicKey,tt):void 0,receiverPublicKey:e?.receiverPublicKey})}function qu(t){const e=t?.type||Du;if(e===os){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function Ec(t){return t.type===os&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function Cc(t){return t.type===Bi}function Km(t){const e=Buffer.from(t.x,"base64"),s=Buffer.from(t.y,"base64");return hi([new Uint8Array([4]),e,s])}function Gm(t,e){const[s,r,i]=t.split("."),n=Buffer.from(Bu(i),"base64");if(n.length!==64)throw new Error("Invalid signature length");const o=n.slice(0,32),a=n.slice(32,64),c=`${s}.${r}`,l=Di(c),u=Km(e);if(!Mm.verify(hi([o,a]),l,u))throw new Error("Invalid signature");return go(t).payload}const Jm="irn";function yn(t){return t?.relay||{protocol:Jm}}function ci(t){const e=Lh[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}function Ym(t,e="-"){const s={},r="relay"+e;return Object.keys(t).forEach(i=>{if(i.startsWith(r)){const n=i.replace(r,""),o=t[i];s[n]=o}}),s}function Ic(t){if(!t.includes("wc:")){const l=lu(t);l!=null&&l.includes("wc:")&&(t=l)}t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),s=t.indexOf("?")!==-1?t.indexOf("?"):void 0,r=t.substring(0,e),i=t.substring(e+1,s).split("@"),n=typeof s<"u"?t.substring(s):"",o=new URLSearchParams(n),a={};o.forEach((l,u)=>{a[u]=l});const c=typeof a.methods=="string"?a.methods.split(","):void 0;return{protocol:r,topic:Xm(i[0]),version:parseInt(i[1],10),symKey:a.symKey,relay:Ym(a),methods:c,expiryTimestamp:a.expiryTimestamp?parseInt(a.expiryTimestamp,10):void 0}}function Xm(t){return t.startsWith("//")?t.substring(2):t}function Zm(t,e="-"){const s="relay",r={};return Object.keys(t).forEach(i=>{const n=i,o=s+e+n;t[n]&&(r[o]=t[n])}),r}function Ac(t){const e=new URLSearchParams,s=Zm(t.relay);Object.keys(s).sort().forEach(i=>{e.set(i,s[i])}),e.set("symKey",t.symKey),t.expiryTimestamp&&e.set("expiryTimestamp",t.expiryTimestamp.toString()),t.methods&&e.set("methods",t.methods.join(","));const r=e.toString();return`${t.protocol}:${t.topic}@${t.version}?${r}`}function Yi(t,e,s){return`${t}?wc_ev=${s}&topic=${e}`}var Qm=Object.defineProperty,ew=Object.defineProperties,tw=Object.getOwnPropertyDescriptors,Nc=Object.getOwnPropertySymbols,sw=Object.prototype.hasOwnProperty,rw=Object.prototype.propertyIsEnumerable,_c=(t,e,s)=>e in t?Qm(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,iw=(t,e)=>{for(var s in e||(e={}))sw.call(e,s)&&_c(t,s,e[s]);if(Nc)for(var s of Nc(e))rw.call(e,s)&&_c(t,s,e[s]);return t},nw=(t,e)=>ew(t,tw(e));function Gr(t){const e=[];return t.forEach(s=>{const[r,i]=s.split(":");e.push(`${r}:${i}`)}),e}function ow(t){const e=[];return Object.values(t).forEach(s=>{e.push(...Gr(s.accounts))}),e}function aw(t,e){const s=[];return Object.values(t).forEach(r=>{Gr(r.accounts).includes(e)&&s.push(...r.methods)}),s}function cw(t,e){const s=[];return Object.values(t).forEach(r=>{Gr(r.accounts).includes(e)&&s.push(...r.events)}),s}function Tn(t){return t.includes(":")}function _r(t){return Tn(t)?t.split(":")[0]:t}function Sc(t){var e,s,r;const i={};if(!As(t))return i;for(const[n,o]of Object.entries(t)){const a=Tn(n)?[n]:o.chains,c=o.methods||[],l=o.events||[],u=_r(n);i[u]=nw(iw({},i[u]),{chains:Kt(a,(e=i[u])==null?void 0:e.chains),methods:Kt(c,(s=i[u])==null?void 0:s.methods),events:Kt(l,(r=i[u])==null?void 0:r.events)})}return i}function lw(t){const e={};return t?.forEach(s=>{var r;const[i,n]=s.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[],methods:[]}),e[i].accounts.push(s),(r=e[i].chains)==null||r.push(`${i}:${n}`)}),e}function Pc(t,e){e=e.map(r=>r.replace("did:pkh:",""));const s=lw(e);for(const[r,i]of Object.entries(s))i.methods?i.methods=Kt(i.methods,t):i.methods=t,i.events=["chainChanged","accountsChanged"];return s}function uw(t,e){var s,r,i,n,o,a;const c=Sc(t),l=Sc(e),u={},h=Object.keys(c).concat(Object.keys(l));for(const d of h)u[d]={chains:Kt((s=c[d])==null?void 0:s.chains,(r=l[d])==null?void 0:r.chains),methods:Kt((i=c[d])==null?void 0:i.methods,(n=l[d])==null?void 0:n.methods),events:Kt((o=c[d])==null?void 0:o.events,(a=l[d])==null?void 0:a.events)};return u}const hw={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},dw={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function R(t,e){const{message:s,code:r}=dw[t];return{message:e?`${s} ${e}`:s,code:r}}function we(t,e){const{message:s,code:r}=hw[t];return{message:e?`${s} ${e}`:s,code:r}}function Is(t,e){return!!Array.isArray(t)}function As(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function Ge(t){return typeof t>"u"}function xe(t,e){return e&&Ge(t)?!0:typeof t=="string"&&!!t.trim().length}function la(t,e){return e&&Ge(t)?!0:typeof t=="number"&&!isNaN(t)}function pw(t,e){const{requiredNamespaces:s}=e,r=Object.keys(t.namespaces),i=Object.keys(s);let n=!0;return js(i,r)?(r.forEach(o=>{const{accounts:a,methods:c,events:l}=t.namespaces[o],u=Gr(a),h=s[o];(!js(iu(o,h),u)||!js(h.methods,c)||!js(h.events,l))&&(n=!1)}),n):!1}function bn(t){return xe(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function fw(t){if(xe(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const s=e[0]+":"+e[1];return!!e[2]&&bn(s)}}return!1}function gw(t){function e(s){try{return typeof new URL(s)<"u"}catch{return!1}}try{if(xe(t,!1)){if(e(t))return!0;const s=lu(t);return e(s)}}catch{}return!1}function mw(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function ww(t){return t?.topic}function yw(t,e){let s=null;return xe(t?.publicKey,!1)||(s=R("MISSING_OR_INVALID",`${e} controller public key should be a string`)),s}function kc(t){let e=!0;return Is(t)?t.length&&(e=t.every(s=>xe(s,!1))):e=!1,e}function bw(t,e,s){let r=null;return Is(e)&&e.length?e.forEach(i=>{r||bn(i)||(r=we("UNSUPPORTED_CHAINS",`${s}, chain ${i} should be a string and conform to "namespace:chainId" format`))}):bn(t)||(r=we("UNSUPPORTED_CHAINS",`${s}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function vw(t,e,s){let r=null;return Object.entries(t).forEach(([i,n])=>{if(r)return;const o=bw(i,iu(i,n),`${e} ${s}`);o&&(r=o)}),r}function Ew(t,e){let s=null;return Is(t)?t.forEach(r=>{s||fw(r)||(s=we("UNSUPPORTED_ACCOUNTS",`${e}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):s=we("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),s}function Cw(t,e){let s=null;return Object.values(t).forEach(r=>{if(s)return;const i=Ew(r?.accounts,`${e} namespace`);i&&(s=i)}),s}function Iw(t,e){let s=null;return kc(t?.methods)?kc(t?.events)||(s=we("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):s=we("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),s}function Fu(t,e){let s=null;return Object.values(t).forEach(r=>{if(s)return;const i=Iw(r,`${e}, namespace`);i&&(s=i)}),s}function Aw(t,e,s){let r=null;if(t&&As(t)){const i=Fu(t,e);i&&(r=i);const n=vw(t,e,s);n&&(r=n)}else r=R("MISSING_OR_INVALID",`${e}, ${s} should be an object with data`);return r}function Qn(t,e){let s=null;if(t&&As(t)){const r=Fu(t,e);r&&(s=r);const i=Cw(t,e);i&&(s=i)}else s=R("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return s}function Wu(t){return xe(t.protocol,!0)}function Nw(t,e){let s=!1;return t?t&&Is(t)&&t.length&&t.forEach(r=>{s=Wu(r)}):s=!0,s}function _w(t){return typeof t=="number"}function ct(t){return typeof t<"u"&&typeof t!==null}function Sw(t){return!(!t||typeof t!="object"||!t.code||!la(t.code,!1)||!t.message||!xe(t.message,!1))}function Pw(t){return!(Ge(t)||!xe(t.method,!1))}function kw(t){return!(Ge(t)||Ge(t.result)&&Ge(t.error)||!la(t.id,!1)||!xe(t.jsonrpc,!1))}function Ow(t){return!(Ge(t)||!xe(t.name,!1))}function Oc(t,e){return!(!bn(e)||!ow(t).includes(e))}function Tw(t,e,s){return xe(s,!1)?aw(t,e).includes(s):!1}function xw(t,e,s){return xe(s,!1)?cw(t,e).includes(s):!1}function Tc(t,e,s){let r=null;const i=$w(t),n=Rw(e),o=Object.keys(i),a=Object.keys(n),c=xc(Object.keys(t)),l=xc(Object.keys(e)),u=c.filter(h=>!l.includes(h));return u.length&&(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces keys don't satisfy requiredNamespaces. + Required: ${u.toString()} + Received: ${Object.keys(e).toString()}`)),js(o,a)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces chains don't satisfy required namespaces. + Required: ${o.toString()} + Approved: ${a.toString()}`)),Object.keys(e).forEach(h=>{if(!h.includes(":")||r)return;const d=Gr(e[h].accounts);d.includes(h)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces accounts don't satisfy namespace accounts for ${h} + Required: ${h} + Approved: ${d.toString()}`))}),o.forEach(h=>{r||(js(i[h].methods,n[h].methods)?js(i[h].events,n[h].events)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces events don't satisfy namespace events for ${h}`)):r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces methods don't satisfy namespace methods for ${h}`))}),r}function $w(t){const e={};return Object.keys(t).forEach(s=>{var r;s.includes(":")?e[s]=t[s]:(r=t[s].chains)==null||r.forEach(i=>{e[i]={methods:t[s].methods,events:t[s].events}})}),e}function xc(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Rw(t){const e={};return Object.keys(t).forEach(s=>{s.includes(":")?e[s]=t[s]:Gr(t[s].accounts)?.forEach(i=>{e[i]={accounts:t[s].accounts.filter(n=>n.includes(`${i}:`)),methods:t[s].methods,events:t[s].events}})}),e}function Uw(t,e){return la(t,!1)&&t<=e.max&&t>=e.min}function $c(){const t=Ri();return new Promise(e=>{switch(t){case wt.browser:e(Dw());break;case wt.reactNative:e(Lw());break;case wt.node:e(Mw());break;default:e(!0)}})}function Dw(){return Hr()&&navigator?.onLine}async function Lw(){return Ss()&&typeof global<"u"&&global!=null&&global.NetInfo?(await(global==null?void 0:global.NetInfo.fetch()))?.isConnected:!0}function Mw(){return!0}function Bw(t){switch(Ri()){case wt.browser:jw(t);break;case wt.reactNative:qw(t);break}}function jw(t){!Ss()&&Hr()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function qw(t){Ss()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}function Fw(){var t;return Hr()&&as.getDocument()?((t=as.getDocument())==null?void 0:t.visibilityState)==="visible":!0}const eo={};class Qr{static get(e){return eo[e]}static set(e,s){eo[e]=s}static delete(e){delete eo[e]}}var Ww={},zw={};const zu="wc",Hu=2,Ro="core",Gt=`${zu}@2:${Ro}:`,Hw={logger:"error"},Vw={database:":memory:"},Kw="crypto",Rc="client_ed25519_seed",Gw=D.ONE_DAY,Jw="keychain",Yw="0.3",Xw="messages",Zw="0.3",Uc=D.SIX_HOURS,Qw="publisher",Vu="irn",ey="error",Ku="wss://relay.walletconnect.org",ty="relayer",qe={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",transport_closed:"relayer_transport_closed",publish:"relayer_publish"},sy="_subscription",It={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},ry=.1,Uo="2.21.0",Ne={link_mode:"link_mode",relay:"relay"},cn={inbound:"inbound",outbound:"outbound"},iy="0.3",ny="WALLETCONNECT_CLIENT_ID",Dc="WALLETCONNECT_LINK_MODE_APPS",pt={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},oy="subscription",ay="0.3",cy="pairing",ly="0.3",ei={wc_pairingDelete:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:D.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:D.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:D.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:D.ONE_DAY,prompt:!1,tag:0},res:{ttl:D.ONE_DAY,prompt:!1,tag:0}}},Ls={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Ot={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},uy="history",hy="0.3",dy="expirer",_t={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},py="0.3",fy="verify-api",gy="https://verify.walletconnect.com",Gu="https://verify.walletconnect.org",wi=Gu,my=`${wi}/v3`,wy=[gy,Gu],yy="echo",by="https://echo.walletconnect.com",Ft={pairing_started:"pairing_started",pairing_uri_validation_success:"pairing_uri_validation_success",pairing_uri_not_expired:"pairing_uri_not_expired",store_new_pairing:"store_new_pairing",subscribing_pairing_topic:"subscribing_pairing_topic",subscribe_pairing_topic_success:"subscribe_pairing_topic_success",existing_pairing:"existing_pairing",pairing_not_expired:"pairing_not_expired",emit_inactive_pairing:"emit_inactive_pairing",emit_session_proposal:"emit_session_proposal",subscribing_to_pairing_topic:"subscribing_to_pairing_topic"},ss={no_wss_connection:"no_wss_connection",no_internet_connection:"no_internet_connection",malformed_pairing_uri:"malformed_pairing_uri",active_pairing_already_exists:"active_pairing_already_exists",subscribe_pairing_topic_failure:"subscribe_pairing_topic_failure",pairing_expired:"pairing_expired",proposal_expired:"proposal_expired",proposal_listener_not_found:"proposal_listener_not_found"},Tt={session_approve_started:"session_approve_started",proposal_not_expired:"proposal_not_expired",session_namespaces_validation_success:"session_namespaces_validation_success",create_session_topic:"create_session_topic",subscribing_session_topic:"subscribing_session_topic",subscribe_session_topic_success:"subscribe_session_topic_success",publishing_session_approve:"publishing_session_approve",session_approve_publish_success:"session_approve_publish_success",store_session:"store_session",publishing_session_settle:"publishing_session_settle",session_settle_publish_success:"session_settle_publish_success"},Os={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",proposal_expired:"proposal_expired",subscribe_session_topic_failure:"subscribe_session_topic_failure",session_approve_publish_failure:"session_approve_publish_failure",session_settle_publish_failure:"session_settle_publish_failure",session_approve_namespace_validation_failure:"session_approve_namespace_validation_failure",proposal_not_found:"proposal_not_found"},Ts={authenticated_session_approve_started:"authenticated_session_approve_started",create_authenticated_session_topic:"create_authenticated_session_topic",cacaos_verified:"cacaos_verified",store_authenticated_session:"store_authenticated_session",subscribing_authenticated_session_topic:"subscribing_authenticated_session_topic",subscribe_authenticated_session_topic_success:"subscribe_authenticated_session_topic_success",publishing_authenticated_session_approve:"publishing_authenticated_session_approve"},ti={no_internet_connection:"no_internet_connection",invalid_cacao:"invalid_cacao",subscribe_authenticated_session_topic_failure:"subscribe_authenticated_session_topic_failure",authenticated_session_approve_publish_failure:"authenticated_session_approve_publish_failure",authenticated_session_pending_request_not_found:"authenticated_session_pending_request_not_found"},vy=.1,Ey="event-client",Cy=86400,Iy="https://pulse.walletconnect.org/batch";function Ay(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var s=new Uint8Array(256),r=0;r>>0,C=new Uint8Array(E);y!==b;){for(var S=w[y],N=0,_=E-1;(S!==0||N>>0,C[_]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");f=N,y++}for(var U=E-f;U!==E&&C[U]===0;)U++;for(var v=c.repeat(g);U>>0,E=new Uint8Array(b);w[g];){var C=s[w.charCodeAt(g)];if(C===255)return;for(var S=0,N=b-1;(C!==0||S>>0,E[N]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");y=S,g++}if(w[g]!==" "){for(var _=b-y;_!==b&&E[_]===0;)_++;for(var U=new Uint8Array(f+(b-_)),v=f;_!==b;)U[v++]=E[_++];return U}}}function m(w){var g=d(w);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:d,decode:m}}var Ny=Ay,_y=Ny;const Ju=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},Sy=t=>new TextEncoder().encode(t),Py=t=>new TextDecoder().decode(t);class ky{constructor(e,s,r){this.name=e,this.prefix=s,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Oy{constructor(e,s,r){if(this.name=e,this.prefix=s,s.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Yu(this,e)}}class Ty{constructor(e){this.decoders=e}or(e){return Yu(this,e)}decode(e){const s=e[0],r=this.decoders[s];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Yu=(t,e)=>new Ty({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class xy{constructor(e,s,r,i){this.name=e,this.prefix=s,this.baseEncode=r,this.baseDecode=i,this.encoder=new ky(e,s,r),this.decoder=new Oy(e,s,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const xn=({name:t,prefix:e,encode:s,decode:r})=>new xy(t,e,s,r),ji=({prefix:t,name:e,alphabet:s})=>{const{encode:r,decode:i}=_y(s,e);return xn({prefix:t,name:e,encode:r,decode:n=>Ju(i(n))})},$y=(t,e,s,r)=>{const i={};for(let u=0;u=8&&(a-=8,o[l++]=255&c>>a)}if(a>=s||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},Ry=(t,e,s)=>{const r=e[e.length-1]==="=",i=(1<s;)o-=s,n+=e[i&a>>o];if(o&&(n+=e[i&a<xn({prefix:e,name:t,encode(i){return Ry(i,r,s)},decode(i){return $y(i,r,s,t)}}),Uy=xn({prefix:"\0",name:"identity",encode:t=>Py(t),decode:t=>Sy(t)});var Dy=Object.freeze({__proto__:null,identity:Uy});const Ly=Je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var My=Object.freeze({__proto__:null,base2:Ly});const By=Je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var jy=Object.freeze({__proto__:null,base8:By});const qy=ji({prefix:"9",name:"base10",alphabet:"0123456789"});var Fy=Object.freeze({__proto__:null,base10:qy});const Wy=Je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),zy=Je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Hy=Object.freeze({__proto__:null,base16:Wy,base16upper:zy});const Vy=Je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ky=Je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Gy=Je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Jy=Je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Yy=Je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Xy=Je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Zy=Je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Qy=Je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),eb=Je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var tb=Object.freeze({__proto__:null,base32:Vy,base32upper:Ky,base32pad:Gy,base32padupper:Jy,base32hex:Yy,base32hexupper:Xy,base32hexpad:Zy,base32hexpadupper:Qy,base32z:eb});const sb=ji({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),rb=ji({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var ib=Object.freeze({__proto__:null,base36:sb,base36upper:rb});const nb=ji({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ob=ji({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ab=Object.freeze({__proto__:null,base58btc:nb,base58flickr:ob});const cb=Je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),lb=Je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ub=Je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),hb=Je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var db=Object.freeze({__proto__:null,base64:cb,base64pad:lb,base64url:ub,base64urlpad:hb});const Xu=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),pb=Xu.reduce((t,e,s)=>(t[s]=e,t),[]),fb=Xu.reduce((t,e,s)=>(t[e.codePointAt(0)]=s,t),[]);function gb(t){return t.reduce((e,s)=>(e+=pb[s],e),"")}function mb(t){const e=[];for(const s of t){const r=fb[s.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${s}`);e.push(r)}return new Uint8Array(e)}const wb=xn({prefix:"🚀",name:"base256emoji",encode:gb,decode:mb});var yb=Object.freeze({__proto__:null,base256emoji:wb}),bb=Zu,Lc=128,vb=-128,Eb=Math.pow(2,31);function Zu(t,e,s){e=e||[],s=s||0;for(var r=s;t>=Eb;)e[s++]=t&255|Lc,t/=128;for(;t&vb;)e[s++]=t&255|Lc,t>>>=7;return e[s]=t|0,Zu.bytes=s-r+1,e}var Cb=Do,Ib=128,Mc=127;function Do(t,r){var s=0,r=r||0,i=0,n=r,o,a=t.length;do{if(n>=a)throw Do.bytes=0,new RangeError("Could not decode varint");o=t[n++],s+=i<28?(o&Mc)<=Ib);return Do.bytes=n-r,s}var Ab=Math.pow(2,7),Nb=Math.pow(2,14),_b=Math.pow(2,21),Sb=Math.pow(2,28),Pb=Math.pow(2,35),kb=Math.pow(2,42),Ob=Math.pow(2,49),Tb=Math.pow(2,56),xb=Math.pow(2,63),$b=function(t){return t(Qu.encode(t,e,s),e),jc=t=>Qu.encodingLength(t),Lo=(t,e)=>{const s=e.byteLength,r=jc(t),i=r+jc(s),n=new Uint8Array(i+s);return Bc(t,n,0),Bc(s,n,r),n.set(e,i),new Ub(t,s,e,n)};class Ub{constructor(e,s,r,i){this.code=e,this.size=s,this.digest=r,this.bytes=i}}const eh=({name:t,code:e,encode:s})=>new Db(t,e,s);class Db{constructor(e,s,r){this.name=e,this.code=s,this.encode=r}digest(e){if(e instanceof Uint8Array){const s=this.encode(e);return s instanceof Uint8Array?Lo(this.code,s):s.then(r=>Lo(this.code,r))}else throw Error("Unknown type, must be binary type")}}const th=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),Lb=eh({name:"sha2-256",code:18,encode:th("SHA-256")}),Mb=eh({name:"sha2-512",code:19,encode:th("SHA-512")});var Bb=Object.freeze({__proto__:null,sha256:Lb,sha512:Mb});const sh=0,jb="identity",rh=Ju,qb=t=>Lo(sh,rh(t)),Fb={code:sh,name:jb,encode:rh,digest:qb};var Wb=Object.freeze({__proto__:null,identity:Fb});new TextEncoder,new TextDecoder;const qc={...Dy,...My,...jy,...Fy,...Hy,...tb,...ib,...ab,...db,...yb};({...Bb,...Wb});function zb(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(t):new Uint8Array(t)}function ih(t,e,s,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:s},decoder:{decode:r}}}const Fc=ih("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),to=ih("ascii","a",t=>{let e="a";for(let s=0;s{t=t.substring(1);const e=zb(t.length);for(let s=0;se in t?Kb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,jt=(t,e,s)=>Gb(t,typeof e!="symbol"?e+"":e,s);class Jb{constructor(e,s){this.core=e,this.logger=s,jt(this,"keychain",new Map),jt(this,"name",Jw),jt(this,"version",Yw),jt(this,"initialized",!1),jt(this,"storagePrefix",Gt),jt(this,"init",async()=>{if(!this.initialized){const r=await this.getKeyChain();typeof r<"u"&&(this.keychain=r),this.initialized=!0}}),jt(this,"has",r=>(this.isInitialized(),this.keychain.has(r))),jt(this,"set",async(r,i)=>{this.isInitialized(),this.keychain.set(r,i),await this.persist()}),jt(this,"get",r=>{this.isInitialized();const i=this.keychain.get(r);if(typeof i>"u"){const{message:n}=R("NO_MATCHING_KEY",`${this.name}: ${r}`);throw new Error(n)}return i}),jt(this,"del",async r=>{this.isInitialized(),this.keychain.delete(r),await this.persist()}),this.core=e,this.logger=st(s,this.name)}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Co(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Io(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var Yb=Object.defineProperty,Xb=(t,e,s)=>e in t?Yb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ve=(t,e,s)=>Xb(t,typeof e!="symbol"?e+"":e,s);class Zb{constructor(e,s,r){this.core=e,this.logger=s,Ve(this,"name",Kw),Ve(this,"keychain"),Ve(this,"randomSessionIdentifier",$o()),Ve(this,"initialized",!1),Ve(this,"init",async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)}),Ve(this,"hasKeys",i=>(this.isInitialized(),this.keychain.has(i))),Ve(this,"getClientId",async()=>{this.isInitialized();const i=await this.getClientSeed(),n=va(i);return Fh(n.publicKey)}),Ve(this,"generateKeyPair",()=>{this.isInitialized();const i=jm();return this.setPrivateKey(i.publicKey,i.privateKey)}),Ve(this,"signJWT",async i=>{this.isInitialized();const n=await this.getClientSeed(),o=va(n),a=this.randomSessionIdentifier;return await Wh(a,i,Gw,o)}),Ve(this,"generateSharedKey",(i,n,o)=>{this.isInitialized();const a=this.getPrivateKey(i),c=qm(a,n);return this.setSymKey(c,o)}),Ve(this,"setSymKey",async(i,n)=>{this.isInitialized();const o=n||an(i);return await this.keychain.set(o,i),o}),Ve(this,"deleteKeyPair",async i=>{this.isInitialized(),await this.keychain.del(i)}),Ve(this,"deleteSymKey",async i=>{this.isInitialized(),await this.keychain.del(i)}),Ve(this,"encode",async(i,n,o)=>{this.isInitialized();const a=qu(o),c=zh(n);if(Cc(a))return zm(c,o?.encoding);if(Ec(a)){const d=a.senderPublicKey,m=a.receiverPublicKey;i=await this.generateSharedKey(d,m)}const l=this.getSymKey(i),{type:u,senderPublicKey:h}=a;return Fm({type:u,symKey:l,message:c,senderPublicKey:h,encoding:o?.encoding})}),Ve(this,"decode",async(i,n,o)=>{this.isInitialized();const a=Vm(n,o);if(Cc(a)){const c=Hm(n,o?.encoding);return Ea(c)}if(Ec(a)){const c=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(c,l)}try{const c=this.getSymKey(i),l=Wm({symKey:c,encoded:n,encoding:o?.encoding});return Ea(l)}catch(c){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}}),Ve(this,"getPayloadType",(i,n=Dt)=>{const o=Si({encoded:i,encoding:n});return Gs(o.type)}),Ve(this,"getPayloadSenderPublicKey",(i,n=Dt)=>{const o=Si({encoded:i,encoding:n});return o.senderPublicKey?ut(o.senderPublicKey,tt):void 0}),this.core=e,this.logger=st(s,this.name),this.keychain=r||new Jb(this.core,this.logger)}get context(){return bt(this.logger)}async setPrivateKey(e,s){return await this.keychain.set(e,s),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(Rc)}catch{e=$o(),await this.keychain.set(Rc,e)}return Vb(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var Qb=Object.defineProperty,ev=Object.defineProperties,tv=Object.getOwnPropertyDescriptors,Wc=Object.getOwnPropertySymbols,sv=Object.prototype.hasOwnProperty,rv=Object.prototype.propertyIsEnumerable,Mo=(t,e,s)=>e in t?Qb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,iv=(t,e)=>{for(var s in e||(e={}))sv.call(e,s)&&Mo(t,s,e[s]);if(Wc)for(var s of Wc(e))rv.call(e,s)&&Mo(t,s,e[s]);return t},nv=(t,e)=>ev(t,tv(e)),dt=(t,e,s)=>Mo(t,typeof e!="symbol"?e+"":e,s);class ov extends Zd{constructor(e,s){super(e,s),this.logger=e,this.core=s,dt(this,"messages",new Map),dt(this,"messagesWithoutClientAck",new Map),dt(this,"name",Xw),dt(this,"version",Zw),dt(this,"initialized",!1),dt(this,"storagePrefix",Gt),dt(this,"init",async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const r=await this.getRelayerMessages();typeof r<"u"&&(this.messages=r);const i=await this.getRelayerMessagesWithoutClientAck();typeof i<"u"&&(this.messagesWithoutClientAck=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(r){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(r)}finally{this.initialized=!0}}}),dt(this,"set",async(r,i,n)=>{this.isInitialized();const o=Ht(i);let a=this.messages.get(r);if(typeof a>"u"&&(a={}),typeof a[o]<"u")return o;if(a[o]=i,this.messages.set(r,a),n===cn.inbound){const c=this.messagesWithoutClientAck.get(r)||{};this.messagesWithoutClientAck.set(r,nv(iv({},c),{[o]:i}))}return await this.persist(),o}),dt(this,"get",r=>{this.isInitialized();let i=this.messages.get(r);return typeof i>"u"&&(i={}),i}),dt(this,"getWithoutAck",r=>{this.isInitialized();const i={};for(const n of r){const o=this.messagesWithoutClientAck.get(n)||{};i[n]=Object.values(o)}return i}),dt(this,"has",(r,i)=>{this.isInitialized();const n=this.get(r),o=Ht(i);return typeof n[o]<"u"}),dt(this,"ack",async(r,i)=>{this.isInitialized();const n=this.messagesWithoutClientAck.get(r);if(typeof n>"u")return;const o=Ht(i);delete n[o],Object.keys(n).length===0?this.messagesWithoutClientAck.delete(r):this.messagesWithoutClientAck.set(r,n),await this.persist()}),dt(this,"del",async r=>{this.isInitialized(),this.messages.delete(r),this.messagesWithoutClientAck.delete(r),await this.persist()}),this.logger=st(e,this.name),this.core=s}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name+"_withoutClientAck"}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Co(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Co(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Io(e):void 0}async getRelayerMessagesWithoutClientAck(){const e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<"u"?Io(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var av=Object.defineProperty,cv=Object.defineProperties,lv=Object.getOwnPropertyDescriptors,zc=Object.getOwnPropertySymbols,uv=Object.prototype.hasOwnProperty,hv=Object.prototype.propertyIsEnumerable,Bo=(t,e,s)=>e in t?av(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Xi=(t,e)=>{for(var s in e||(e={}))uv.call(e,s)&&Bo(t,s,e[s]);if(zc)for(var s of zc(e))hv.call(e,s)&&Bo(t,s,e[s]);return t},so=(t,e)=>cv(t,lv(e)),xt=(t,e,s)=>Bo(t,typeof e!="symbol"?e+"":e,s);class dv extends Qd{constructor(e,s){super(e,s),this.relayer=e,this.logger=s,xt(this,"events",new Ys.EventEmitter),xt(this,"name",Qw),xt(this,"queue",new Map),xt(this,"publishTimeout",D.toMiliseconds(D.ONE_MINUTE)),xt(this,"initialPublishTimeout",D.toMiliseconds(D.ONE_SECOND*15)),xt(this,"needsTransportRestart",!1),xt(this,"publish",async(r,i,n)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:r,message:i,opts:n}});const a=n?.ttl||Uc,c=yn(n),l=n?.prompt||!1,u=n?.tag||0,h=n?.id||Ar().toString(),d={topic:r,message:i,opts:{ttl:a,relay:c,prompt:l,tag:u,id:h,attestation:n?.attestation,tvf:n?.tvf}},m=`Failed to publish payload, please try again. id:${h} tag:${u}`;try{const w=new Promise(async g=>{const f=({id:b})=>{d.opts.id===b&&(this.removeRequestFromQueue(b),this.relayer.events.removeListener(qe.publish,f),g(d))};this.relayer.events.on(qe.publish,f);const y=vs(new Promise((b,E)=>{this.rpcPublish({topic:r,message:i,ttl:a,prompt:l,tag:u,id:h,attestation:n?.attestation,tvf:n?.tvf}).then(b).catch(C=>{this.logger.warn(C,C?.message),E(C)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${h} tag:${u}`);try{await y,this.events.removeListener(qe.publish,f)}catch(b){this.queue.set(h,so(Xi({},d),{attempt:1})),this.logger.warn(b,b?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:h,topic:r,message:i,opts:n}}),await vs(w,this.publishTimeout,m)}catch(w){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(w),(o=n?.internal)!=null&&o.throwOnFailedPublish)throw w}finally{this.queue.delete(h)}}),xt(this,"on",(r,i)=>{this.events.on(r,i)}),xt(this,"once",(r,i)=>{this.events.once(r,i)}),xt(this,"off",(r,i)=>{this.events.off(r,i)}),xt(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.relayer=e,this.logger=st(s,this.name),this.registerEventListeners()}get context(){return bt(this.logger)}async rpcPublish(e){var s,r,i,n;const{topic:o,message:a,ttl:c=Uc,prompt:l,tag:u,id:h,attestation:d,tvf:m}=e,w={method:ci(yn().protocol).publish,params:Xi({topic:o,message:a,ttl:c,prompt:l,tag:u,attestation:d},m),id:h};Ge((s=w.params)==null?void 0:s.prompt)&&((r=w.params)==null||delete r.prompt),Ge((i=w.params)==null?void 0:i.tag)&&((n=w.params)==null||delete n.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:w});const g=await this.relayer.request(w);return this.relayer.events.emit(qe.publish,e),this.logger.debug("Successfully Published Payload"),g}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,s)=>{const r=e.attempt+1;this.queue.set(s,so(Xi({},e),{attempt:r}));const{topic:i,message:n,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${r}`),await this.rpcPublish(so(Xi({},e),{topic:i,message:n,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a,tvf:o.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(Fr.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(qe.connection_stalled);return}this.checkQueue()}),this.relayer.on(qe.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}var pv=Object.defineProperty,fv=(t,e,s)=>e in t?pv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ar=(t,e,s)=>fv(t,typeof e!="symbol"?e+"":e,s);class gv{constructor(){ar(this,"map",new Map),ar(this,"set",(e,s)=>{const r=this.get(e);this.exists(e,s)||this.map.set(e,[...r,s])}),ar(this,"get",e=>this.map.get(e)||[]),ar(this,"exists",(e,s)=>this.get(e).includes(s)),ar(this,"delete",(e,s)=>{if(typeof s>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const r=this.get(e);if(!this.exists(e,s))return;const i=r.filter(n=>n!==s);if(!i.length){this.map.delete(e);return}this.map.set(e,i)}),ar(this,"clear",()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}}var mv=Object.defineProperty,wv=Object.defineProperties,yv=Object.getOwnPropertyDescriptors,Hc=Object.getOwnPropertySymbols,bv=Object.prototype.hasOwnProperty,vv=Object.prototype.propertyIsEnumerable,jo=(t,e,s)=>e in t?mv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,si=(t,e)=>{for(var s in e||(e={}))bv.call(e,s)&&jo(t,s,e[s]);if(Hc)for(var s of Hc(e))vv.call(e,s)&&jo(t,s,e[s]);return t},ro=(t,e)=>wv(t,yv(e)),ye=(t,e,s)=>jo(t,typeof e!="symbol"?e+"":e,s);class Ev extends sp{constructor(e,s){super(e,s),this.relayer=e,this.logger=s,ye(this,"subscriptions",new Map),ye(this,"topicMap",new gv),ye(this,"events",new Ys.EventEmitter),ye(this,"name",oy),ye(this,"version",ay),ye(this,"pending",new Map),ye(this,"cached",[]),ye(this,"initialized",!1),ye(this,"storagePrefix",Gt),ye(this,"subscribeTimeout",D.toMiliseconds(D.ONE_MINUTE)),ye(this,"initialSubscribeTimeout",D.toMiliseconds(D.ONE_SECOND*15)),ye(this,"clientId"),ye(this,"batchSubscribeTopicsLimit",500),ye(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),await this.restore()),this.initialized=!0}),ye(this,"subscribe",async(r,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}});try{const n=yn(i),o={topic:r,relay:n,transportType:i?.transportType};this.pending.set(r,o);const a=await this.rpcSubscribe(r,n,i);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}})),a}catch(n){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(n),n}}),ye(this,"unsubscribe",async(r,i)=>{this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(r,i.id,i):await this.unsubscribeByTopic(r,i)}),ye(this,"isSubscribed",r=>new Promise(i=>{i(this.topicMap.topics.includes(r))})),ye(this,"isKnownTopic",r=>new Promise(i=>{i(this.topicMap.topics.includes(r)||this.pending.has(r)||this.cached.some(n=>n.topic===r))})),ye(this,"on",(r,i)=>{this.events.on(r,i)}),ye(this,"once",(r,i)=>{this.events.once(r,i)}),ye(this,"off",(r,i)=>{this.events.off(r,i)}),ye(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),ye(this,"start",async()=>{await this.onConnect()}),ye(this,"stop",async()=>{await this.onDisconnect()}),ye(this,"restart",async()=>{await this.restore(),await this.onRestart()}),ye(this,"checkPending",async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const r=[];this.pending.forEach(i=>{r.push(i)}),await this.batchSubscribe(r)}),ye(this,"registerEventListeners",()=>{this.relayer.core.heartbeat.on(Fr.pulse,async()=>{await this.checkPending()}),this.events.on(pt.created,async r=>{const i=pt.created;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()}),this.events.on(pt.deleted,async r=>{const i=pt.deleted;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()})}),this.relayer=e,this.logger=st(s,this.name),this.clientId=""}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,s){let r=!1;try{r=this.getSubscription(e).topic===s}catch{}return r}reset(){this.cached=[],this.initialized=!0}onDisable(){this.values.length>0&&(this.cached=this.values),this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,s){const r=this.topicMap.get(e);await Promise.all(r.map(async i=>await this.unsubscribeById(e,i,s)))}async unsubscribeById(e,s,r){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:s,opts:r}});try{const i=yn(r);await this.restartToComplete({topic:e,id:s,relay:i}),await this.rpcUnsubscribe(e,s,i);const n=we("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,s,n),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:s,opts:r}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,s,r){var i;(!r||r?.transportType===Ne.relay)&&await this.restartToComplete({topic:e,id:e,relay:s});const n={method:ci(s.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});const o=(i=r?.internal)==null?void 0:i.throwOnFailedPublish;try{const a=await this.getSubscriptionId(e);if(r?.transportType===Ne.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(n).catch(u=>this.logger.warn(u))},D.toMiliseconds(D.ONE_SECOND)),a;const c=new Promise(async u=>{const h=d=>{d.topic===e&&(this.events.removeListener(pt.created,h),u(d.id))};this.events.on(pt.created,h);try{const d=await vs(new Promise((m,w)=>{this.relayer.request(n).catch(g=>{this.logger.warn(g,g?.message),w(g)}).then(m)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(pt.created,h),u(d)}catch{}}),l=await vs(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!l&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return l?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(qe.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const s=e[0].relay,r={method:ci(s.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});try{await await vs(new Promise(i=>{this.relayer.request(r).catch(n=>this.logger.warn(n)).then(i)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(qe.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const s=e[0].relay,r={method:ci(s.protocol).batchFetchMessages,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});let i;try{i=await await vs(new Promise((n,o)=>{this.relayer.request(r).catch(a=>{this.logger.warn(a),o(a)}).then(n)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(qe.connection_stalled)}return i}rpcUnsubscribe(e,s,r){const i={method:ci(r.protocol).unsubscribe,params:{topic:e,id:s}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,s){this.setSubscription(e,ro(si({},s),{id:e})),this.pending.delete(s.topic)}onBatchSubscribe(e){e.length&&e.forEach(s=>{this.setSubscription(s.id,si({},s)),this.pending.delete(s.topic)})}async onUnsubscribe(e,s,r){this.events.removeAllListeners(s),this.hasSubscription(s,e)&&this.deleteSubscription(s,r),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,s){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:s}),this.addSubscription(e,s)}addSubscription(e,s){this.subscriptions.set(e,si({},s)),this.topicMap.set(s.topic,e),this.events.emit(pt.created,s)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const s=this.subscriptions.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return s}deleteSubscription(e,s){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:s});const r=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(r.topic,e),this.events.emit(pt.deleted,ro(si({},r),{reason:s}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(pt.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],s=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let r=0;r"u"||!e.length)return;if(this.subscriptions.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async s=>ro(si({},s),{id:await this.getSubscriptionId(s.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const s=await this.rpcBatchFetchMessages(e);s&&s.messages&&(await Sf(D.toMiliseconds(D.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(s.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||(this.clientId=await this.relayer.core.crypto.getClientId()),this.clientId}async getSubscriptionId(e){return Ht(e+await this.getClientId())}}var Cv=Object.defineProperty,Vc=Object.getOwnPropertySymbols,Iv=Object.prototype.hasOwnProperty,Av=Object.prototype.propertyIsEnumerable,qo=(t,e,s)=>e in t?Cv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Kc=(t,e)=>{for(var s in e||(e={}))Iv.call(e,s)&&qo(t,s,e[s]);if(Vc)for(var s of Vc(e))Av.call(e,s)&&qo(t,s,e[s]);return t},le=(t,e,s)=>qo(t,typeof e!="symbol"?e+"":e,s);class Nv extends ep{constructor(e){super(e),le(this,"protocol","wc"),le(this,"version",2),le(this,"core"),le(this,"logger"),le(this,"events",new Ys.EventEmitter),le(this,"provider"),le(this,"messages"),le(this,"subscriber"),le(this,"publisher"),le(this,"name",ty),le(this,"transportExplicitlyClosed",!1),le(this,"initialized",!1),le(this,"connectionAttemptInProgress",!1),le(this,"relayUrl"),le(this,"projectId"),le(this,"packageName"),le(this,"bundleId"),le(this,"hasExperiencedNetworkDisruption",!1),le(this,"pingTimeout"),le(this,"heartBeatTimeout",D.toMiliseconds(D.THIRTY_SECONDS+D.FIVE_SECONDS)),le(this,"reconnectTimeout"),le(this,"connectPromise"),le(this,"reconnectInProgress",!1),le(this,"requestsInFlight",[]),le(this,"connectTimeout",D.toMiliseconds(D.ONE_SECOND*15)),le(this,"request",async s=>{var r,i;this.logger.debug("Publishing Request Payload");const n=s.id||Ar().toString();await this.toEstablishConnection();try{this.logger.trace({id:n,method:s.method,topic:(r=s.params)==null?void 0:r.topic},"relayer.request - publishing...");const o=`${n}:${((i=s.params)==null?void 0:i.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(s);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${n}`),o}}),le(this,"resetPingTimeout",()=>{mn()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var s,r,i,n;try{this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(r=(s=this.provider)==null?void 0:s.connection)==null?void 0:r.socket)==null?void 0:i.terminate)==null||n.call(i)}catch(o){this.logger.warn(o,o?.message)}},this.heartBeatTimeout))}),le(this,"onPayloadHandler",s=>{this.onProviderPayload(s),this.resetPingTimeout()}),le(this,"onConnectHandler",()=>{this.logger.warn({},"Relayer connected 🛜"),this.startPingTimeout(),this.events.emit(qe.connect)}),le(this,"onDisconnectHandler",()=>{this.logger.warn({},"Relayer disconnected 🛑"),this.requestsInFlight=[],this.onProviderDisconnect()}),le(this,"onProviderErrorHandler",s=>{this.logger.fatal(`Fatal socket error: ${s.message}`),this.events.emit(qe.error,s),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()}),le(this,"registerProviderListeners",()=>{this.provider.on(It.payload,this.onPayloadHandler),this.provider.on(It.connect,this.onConnectHandler),this.provider.on(It.disconnect,this.onDisconnectHandler),this.provider.on(It.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?st(e.logger,this.name):Xo(Ti({level:e.logger||ey})),this.messages=new ov(this.logger,e.core),this.subscriber=new Ev(this,this.logger),this.publisher=new dv(this,this.logger),this.relayUrl=e?.relayUrl||Ku,this.projectId=e.projectId,hf()?this.packageName=Ha():df()&&(this.bundleId=Ha()),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.hasAnyTopics)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return bt(this.logger)}get connected(){var e,s,r;return((r=(s=(e=this.provider)==null?void 0:e.connection)==null?void 0:s.socket)==null?void 0:r.readyState)===1||!1}get connecting(){var e,s,r;return((r=(s=(e=this.provider)==null?void 0:e.connection)==null?void 0:s.socket)==null?void 0:r.readyState)===0||this.connectPromise!==void 0||!1}async publish(e,s,r){this.isInitialized(),await this.publisher.publish(e,s,r),await this.recordMessageEvent({topic:e,message:s,publishedAt:Date.now(),transportType:Ne.relay},cn.outbound)}async subscribe(e,s){var r,i,n;this.isInitialized(),(!(s!=null&&s.transportType)||s?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((r=s?.internal)==null?void 0:r.throwOnFailedPublish)>"u"?!0:(i=s?.internal)==null?void 0:i.throwOnFailedPublish;let a=((n=this.subscriber.topicMap.get(e))==null?void 0:n[0])||"",c;const l=u=>{u.topic===e&&(this.subscriber.off(pt.created,l),c())};return await Promise.all([new Promise(u=>{c=u,this.subscriber.on(pt.created,l)}),new Promise(async(u,h)=>{a=await this.subscriber.subscribe(e,Kc({internal:{throwOnFailedPublish:o}},s)).catch(d=>{o&&h(d)})||a,u()})]),a}async unsubscribe(e,s){this.isInitialized(),await this.subscriber.unsubscribe(e,s)}on(e,s){this.events.on(e,s)}once(e,s){this.events.once(e,s)}off(e,s){this.events.off(e,s)}removeListener(e,s){this.events.removeListener(e,s)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await vs(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.warn("Starting WS connection skipped because the client has no topics to work with.");return}if(this.connectPromise?(this.logger.debug({},"Waiting for existing connection attempt to resolve..."),await this.connectPromise,this.logger.debug({},"Existing connection attempt resolved")):(this.connectPromise=new Promise(async(s,r)=>{await this.connect(e).then(s).catch(r).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},"Restarting transport..."),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await $c())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const s=e.sort((r,i)=>r.publishedAt-i.publishedAt);this.logger.debug(`Batch of ${s.length} message events sorted`);for(const r of s)try{await this.onMessageEvent(r)}catch(i){this.logger.warn(i,"Error while processing batch message event: "+i?.message)}this.logger.trace(`Batch of ${s.length} message events processed`)}async onLinkMessageEvent(e,s){const{topic:r}=e;if(!s.sessionExists){const i=De(D.FIVE_MINUTES),n={topic:r,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(r,n)}this.events.emit(qe.message,e),await this.recordMessageEvent(e,cn.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let s=1;for(;s<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${s}...`),await this.createProvider(),await new Promise(async(r,i)=>{const n=()=>{i(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(It.disconnect,n),await vs(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{i(o)}).finally(()=>{this.provider.off(It.disconnect,n),clearTimeout(this.reconnectTimeout)}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(It.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(It.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,r()})}catch(r){await this.subscriber.stop();const i=r;this.logger.warn({},i.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${s}`);break}await new Promise(r=>setTimeout(r,D.toMiliseconds(s*1))),s++}}startPingTimeout(){var e,s,r,i,n;if(mn())try{(s=(e=this.provider)==null?void 0:e.connection)!=null&&s.socket&&((n=(i=(r=this.provider)==null?void 0:r.connection)==null?void 0:i.socket)==null||n.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Pt(new qh(wf({sdkVersion:Uo,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,s){const{topic:r,message:i}=e;await this.messages.set(r,i,s)}async shouldIgnoreMessageEvent(e){const{topic:s,message:r}=e;if(!r||r.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${r}`),!0;if(!await this.subscriber.isKnownTopic(s))return this.logger.warn(`Ignoring message for unknown topic ${s}`),!0;const i=this.messages.has(s,r);return i&&this.logger.warn(`Ignoring duplicate message: ${r}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),Zo(e)){if(!e.method.endsWith(sy))return;const s=e.params,{topic:r,message:i,publishedAt:n,attestation:o}=s.data,a={topic:r,message:i,publishedAt:n,transportType:Ne.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Kc({type:"event",event:s.id},a)),this.events.emit(s.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else Qo(e)&&this.events.emit(qe.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,cn.inbound),this.events.emit(qe.message,e))}async acknowledgePayload(e){const s=In(e.id,!0);await this.provider.connection.send(s)}unregisterProviderListeners(){this.provider.off(It.payload,this.onPayloadHandler),this.provider.off(It.connect,this.onConnectHandler),this.provider.off(It.disconnect,this.onDisconnectHandler),this.provider.off(It.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await $c();Bw(async s=>{e!==s&&(e=s,s?await this.transportOpen().catch(r=>this.logger.error(r,r?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))}),this.core.heartbeat.on(Fr.pulse,async()=>{if(!this.transportExplicitlyClosed&&!this.connected&&Fw())try{await this.confirmOnlineStateOrThrow(),await this.transportOpen()}catch(s){this.logger.warn(s,s?.message)}})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(qe.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e?.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},D.toMiliseconds(ry)))))}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){if(await this.confirmOnlineStateOrThrow(),!this.connected){if(this.connectPromise){await this.connectPromise;return}await this.connect()}}}function _v(){}function Gc(t){if(!t||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)==="[object Object]":!1}function Jc(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function Yc(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Sv="[object RegExp]",Pv="[object String]",kv="[object Number]",Ov="[object Boolean]",Xc="[object Arguments]",Tv="[object Symbol]",xv="[object Date]",$v="[object Map]",Rv="[object Set]",Uv="[object Array]",Dv="[object Function]",Lv="[object ArrayBuffer]",io="[object Object]",Mv="[object Error]",Bv="[object DataView]",jv="[object Uint8Array]",qv="[object Uint8ClampedArray]",Fv="[object Uint16Array]",Wv="[object Uint32Array]",zv="[object BigUint64Array]",Hv="[object Int8Array]",Vv="[object Int16Array]",Kv="[object Int32Array]",Gv="[object BigInt64Array]",Jv="[object Float32Array]",Yv="[object Float64Array]";function Xv(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}function Zv(t,e,s){return li(t,e,void 0,void 0,void 0,void 0,s)}function li(t,e,s,r,i,n,o){const a=o(t,e,s,r,i,n);if(a!==void 0)return a;if(typeof t==typeof e)switch(typeof t){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return t===e;case"number":return t===e||Object.is(t,e);case"function":return t===e;case"object":return yi(t,e,n,o)}return yi(t,e,n,o)}function yi(t,e,s,r){if(Object.is(t,e))return!0;let i=Yc(t),n=Yc(e);if(i===Xc&&(i=io),n===Xc&&(n=io),i!==n)return!1;switch(i){case Pv:return t.toString()===e.toString();case kv:{const c=t.valueOf(),l=e.valueOf();return Xv(c,l)}case Ov:case xv:case Tv:return Object.is(t.valueOf(),e.valueOf());case Sv:return t.source===e.source&&t.flags===e.flags;case Dv:return t===e}s=s??new Map;const o=s.get(t),a=s.get(e);if(o!=null&&a!=null)return o===e;s.set(t,e),s.set(e,t);try{switch(i){case $v:{if(t.size!==e.size)return!1;for(const[c,l]of t.entries())if(!e.has(c)||!li(l,e.get(c),c,t,e,s,r))return!1;return!0}case Rv:{if(t.size!==e.size)return!1;const c=Array.from(t.values()),l=Array.from(e.values());for(let u=0;uli(h,m,void 0,t,e,s,r));if(d===-1)return!1;l.splice(d,1)}return!0}case Uv:case jv:case qv:case Fv:case Wv:case zv:case Hv:case Vv:case Kv:case Gv:case Jv:case Yv:{if(typeof Buffer<"u"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let c=0;ce in t?e0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Qc=(t,e)=>{for(var s in e||(e={}))t0.call(e,s)&&Fo(t,s,e[s]);if(Zc)for(var s of Zc(e))s0.call(e,s)&&Fo(t,s,e[s]);return t},ot=(t,e,s)=>Fo(t,typeof e!="symbol"?e+"":e,s);class er extends tp{constructor(e,s,r,i=Gt,n=void 0){super(e,s,r,i),this.core=e,this.logger=s,this.name=r,ot(this,"map",new Map),ot(this,"version",iy),ot(this,"cached",[]),ot(this,"initialized",!1),ot(this,"getKey"),ot(this,"storagePrefix",Gt),ot(this,"recentlyDeleted",[]),ot(this,"recentlyDeletedLimit",200),ot(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!Ge(o)?this.map.set(this.getKey(o),o):mw(o)?this.map.set(o.id,o):ww(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)}),ot(this,"set",async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())}),ot(this,"get",o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o))),ot(this,"getAll",o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>Qv(a[c],o[c]))):this.values)),ot(this,"update",async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=Qc(Qc({},this.getData(o)),a);this.map.set(o,c),await this.persist()}),ot(this,"delete",async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())}),this.logger=st(s,this.name),this.storagePrefix=i,this.getKey=n}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const s=this.map.get(e);if(!s){if(this.recentlyDeleted.includes(e)){const{message:i}=R("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(r),new Error(r)}return s}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var r0=Object.defineProperty,i0=(t,e,s)=>e in t?r0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ie=(t,e,s)=>i0(t,typeof e!="symbol"?e+"":e,s);class n0{constructor(e,s){this.core=e,this.logger=s,ie(this,"name",cy),ie(this,"version",ly),ie(this,"events",new ea),ie(this,"pairings"),ie(this,"initialized",!1),ie(this,"storagePrefix",Gt),ie(this,"ignoredPayloadTypes",[os]),ie(this,"registeredMethods",[]),ie(this,"init",async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))}),ie(this,"register",({methods:r})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...r])]}),ie(this,"create",async r=>{this.isInitialized();const i=$o(),n=await this.core.crypto.setSymKey(i),o=De(D.FIVE_MINUTES),a={protocol:Vu},c={topic:n,expiry:o,relay:a,active:!1,methods:r?.methods},l=Ac({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:i,relay:a,expiryTimestamp:o,methods:r?.methods});return this.events.emit(Ls.create,c),this.core.expirer.set(n,o),await this.pairings.set(n,c),await this.core.relayer.subscribe(n,{transportType:r?.transportType}),{topic:n,uri:l}}),ie(this,"pair",async r=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:r?.uri,trace:[Ft.pairing_started]}});this.isValidPair(r,i);const{topic:n,symKey:o,relay:a,expiryTimestamp:c,methods:l}=Ic(r.uri);i.props.properties.topic=n,i.addTrace(Ft.pairing_uri_validation_success),i.addTrace(Ft.pairing_uri_not_expired);let u;if(this.pairings.keys.includes(n)){if(u=this.pairings.get(n),i.addTrace(Ft.existing_pairing),u.active)throw i.setError(ss.active_pairing_already_exists),new Error(`Pairing already exists: ${n}. Please try again with a new connection URI.`);i.addTrace(Ft.pairing_not_expired)}const h=c||De(D.FIVE_MINUTES),d={topic:n,relay:a,expiry:h,active:!1,methods:l};this.core.expirer.set(n,h),await this.pairings.set(n,d),i.addTrace(Ft.store_new_pairing),r.activatePairing&&await this.activate({topic:n}),this.events.emit(Ls.create,d),i.addTrace(Ft.emit_inactive_pairing),this.core.crypto.keychain.has(n)||await this.core.crypto.setSymKey(o,n),i.addTrace(Ft.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(ss.no_internet_connection)}try{await this.core.relayer.subscribe(n,{relay:a})}catch(m){throw i.setError(ss.subscribe_pairing_topic_failure),m}return i.addTrace(Ft.subscribe_pairing_topic_success),d}),ie(this,"activate",async({topic:r})=>{this.isInitialized();const i=De(D.FIVE_MINUTES);this.core.expirer.set(r,i),await this.pairings.update(r,{active:!0,expiry:i})}),ie(this,"ping",async r=>{this.isInitialized(),await this.isValidPing(r),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:i}=r;if(this.pairings.keys.includes(i)){const n=await this.sendRequest(i,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=Rs();this.events.once(pe("pairing_ping",n),({error:l})=>{l?c(l):a()}),await o()}}),ie(this,"updateExpiry",async({topic:r,expiry:i})=>{this.isInitialized(),await this.pairings.update(r,{expiry:i})}),ie(this,"updateMetadata",async({topic:r,metadata:i})=>{this.isInitialized(),await this.pairings.update(r,{peerMetadata:i})}),ie(this,"getPairings",()=>(this.isInitialized(),this.pairings.values)),ie(this,"disconnect",async r=>{this.isInitialized(),await this.isValidDisconnect(r);const{topic:i}=r;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",we("USER_DISCONNECTED")),await this.deletePairing(i))}),ie(this,"formatUriFromPairing",r=>{this.isInitialized();const{topic:i,relay:n,expiry:o,methods:a}=r,c=this.core.crypto.keychain.get(i);return Ac({protocol:this.core.protocol,version:this.core.version,topic:i,symKey:c,relay:n,expiryTimestamp:o,methods:a})}),ie(this,"sendRequest",async(r,i,n)=>{const o=Bs(i,n),a=await this.core.crypto.encode(r,o),c=ei[i].req;return this.core.history.set(r,o),this.core.relayer.publish(r,a,c),o.id}),ie(this,"sendResult",async(r,i,n)=>{const o=In(r,n),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=ei[c].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),ie(this,"sendError",async(r,i,n)=>{const o=Ll(r,n),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=ei[c]?ei[c].res:ei.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),ie(this,"deletePairing",async(r,i)=>{await this.core.relayer.unsubscribe(r),await Promise.all([this.pairings.delete(r,we("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(r),i?Promise.resolve():this.core.expirer.del(r)])}),ie(this,"cleanup",async()=>{const r=this.pairings.getAll().filter(i=>ms(i.expiry));await Promise.all(r.map(i=>this.deletePairing(i.topic)))}),ie(this,"onRelayEventRequest",async r=>{const{topic:i,payload:n}=r;switch(n.method){case"wc_pairingPing":return await this.onPairingPingRequest(i,n);case"wc_pairingDelete":return await this.onPairingDeleteRequest(i,n);default:return await this.onUnknownRpcMethodRequest(i,n)}}),ie(this,"onRelayEventResponse",async r=>{const{topic:i,payload:n}=r,o=(await this.core.history.get(i,n.id)).request.method;return o==="wc_pairingPing"?this.onPairingPingResponse(i,n):this.onUnknownRpcMethodResponse(o)}),ie(this,"onPairingPingRequest",async(r,i)=>{const{id:n}=i;try{this.isValidPing({topic:r}),await this.sendResult(n,r,!0),this.events.emit(Ls.ping,{id:n,topic:r})}catch(o){await this.sendError(n,r,o),this.logger.error(o)}}),ie(this,"onPairingPingResponse",(r,i)=>{const{id:n}=i;setTimeout(()=>{ts(i)?this.events.emit(pe("pairing_ping",n),{}):Wt(i)&&this.events.emit(pe("pairing_ping",n),{error:i.error})},500)}),ie(this,"onPairingDeleteRequest",async(r,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:r}),await this.deletePairing(r),this.events.emit(Ls.delete,{id:n,topic:r})}catch(o){await this.sendError(n,r,o),this.logger.error(o)}}),ie(this,"onUnknownRpcMethodRequest",async(r,i)=>{const{id:n,method:o}=i;try{if(this.registeredMethods.includes(o))return;const a=we("WC_METHOD_UNSUPPORTED",o);await this.sendError(n,r,a),this.logger.error(a)}catch(a){await this.sendError(n,r,a),this.logger.error(a)}}),ie(this,"onUnknownRpcMethodResponse",r=>{this.registeredMethods.includes(r)||this.logger.error(we("WC_METHOD_UNSUPPORTED",r))}),ie(this,"isValidPair",(r,i)=>{var n;if(!ct(r)){const{message:a}=R("MISSING_OR_INVALID",`pair() params: ${r}`);throw i.setError(ss.malformed_pairing_uri),new Error(a)}if(!gw(r.uri)){const{message:a}=R("MISSING_OR_INVALID",`pair() uri: ${r.uri}`);throw i.setError(ss.malformed_pairing_uri),new Error(a)}const o=Ic(r?.uri);if(!((n=o?.relay)!=null&&n.protocol)){const{message:a}=R("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(ss.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=R("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(ss.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&D.toMiliseconds(o?.expiryTimestamp){if(!ct(r)){const{message:n}=R("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidPairingTopic(i)}),ie(this,"isValidDisconnect",async r=>{if(!ct(r)){const{message:n}=R("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidPairingTopic(i)}),ie(this,"isValidPairingTopic",async r=>{if(!xe(r,!1)){const{message:i}=R("MISSING_OR_INVALID",`pairing topic should be a string: ${r}`);throw new Error(i)}if(!this.pairings.keys.includes(r)){const{message:i}=R("NO_MATCHING_KEY",`pairing topic doesn't exist: ${r}`);throw new Error(i)}if(ms(this.pairings.get(r).expiry)){await this.deletePairing(r);const{message:i}=R("EXPIRED",`pairing topic: ${r}`);throw new Error(i)}}),this.core=e,this.logger=st(s,this.name),this.pairings=new er(this.core,this.logger,this.name,this.storagePrefix)}get context(){return bt(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(qe.message,async e=>{const{topic:s,message:r,transportType:i}=e;if(this.pairings.keys.includes(s)&&i!==Ne.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(r)))try{const n=await this.core.crypto.decode(s,r);Zo(n)?(this.core.history.set(s,n),await this.onRelayEventRequest({topic:s,payload:n})):Qo(n)&&(await this.core.history.resolve(n),await this.onRelayEventResponse({topic:s,payload:n}),this.core.history.delete(s,n.id)),await this.core.relayer.messages.ack(s,r)}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(_t.expired,async e=>{const{topic:s}=cu(e.target);s&&this.pairings.keys.includes(s)&&(await this.deletePairing(s,!0),this.events.emit(Ls.expire,{topic:s}))})}}var o0=Object.defineProperty,a0=(t,e,s)=>e in t?o0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ke=(t,e,s)=>a0(t,typeof e!="symbol"?e+"":e,s);class c0 extends Xd{constructor(e,s){super(e,s),this.core=e,this.logger=s,Ke(this,"records",new Map),Ke(this,"events",new Ys.EventEmitter),Ke(this,"name",uy),Ke(this,"version",hy),Ke(this,"cached",[]),Ke(this,"initialized",!1),Ke(this,"storagePrefix",Gt),Ke(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.records.set(r.id,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),Ke(this,"set",(r,i,n)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:r,request:i,chainId:n}),this.records.has(i.id))return;const o={id:i.id,topic:r,request:{method:i.method,params:i.params||null},chainId:n,expiry:De(D.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Ot.created,o)}),Ke(this,"resolve",async r=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:r}),!this.records.has(r.id))return;const i=await this.getRecord(r.id);typeof i.response>"u"&&(i.response=Wt(r)?{error:r.error}:{result:r.result},this.records.set(i.id,i),this.persist(),this.events.emit(Ot.updated,i))}),Ke(this,"get",async(r,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:r,id:i}),await this.getRecord(i))),Ke(this,"delete",(r,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(n=>{if(n.topic===r){if(typeof i<"u"&&n.id!==i)return;this.records.delete(n.id),this.events.emit(Ot.deleted,n)}}),this.persist()}),Ke(this,"exists",async(r,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===r:!1)),Ke(this,"on",(r,i)=>{this.events.on(r,i)}),Ke(this,"once",(r,i)=>{this.events.once(r,i)}),Ke(this,"off",(r,i)=>{this.events.off(r,i)}),Ke(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=st(s,this.name)}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(s=>{if(typeof s.response<"u")return;const r={topic:s.topic,request:Bs(s.request.method,s.request.params,s.id),chainId:s.chainId};return e.push(r)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const s=this.records.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return s}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Ot.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Ot.created,e=>{const s=Ot.created;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.events.on(Ot.updated,e=>{const s=Ot.updated;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.events.on(Ot.deleted,e=>{const s=Ot.deleted;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.core.heartbeat.on(Fr.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(s=>{D.toMiliseconds(s.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${s.id}`),this.records.delete(s.id),this.events.emit(Ot.deleted,s,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var l0=Object.defineProperty,u0=(t,e,s)=>e in t?l0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Xe=(t,e,s)=>u0(t,typeof e!="symbol"?e+"":e,s);class h0 extends rp{constructor(e,s){super(e,s),this.core=e,this.logger=s,Xe(this,"expirations",new Map),Xe(this,"events",new Ys.EventEmitter),Xe(this,"name",dy),Xe(this,"version",py),Xe(this,"cached",[]),Xe(this,"initialized",!1),Xe(this,"storagePrefix",Gt),Xe(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.expirations.set(r.target,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),Xe(this,"has",r=>{try{const i=this.formatTarget(r);return typeof this.getExpiration(i)<"u"}catch{return!1}}),Xe(this,"set",(r,i)=>{this.isInitialized();const n=this.formatTarget(r),o={target:n,expiry:i};this.expirations.set(n,o),this.checkExpiry(n,o),this.events.emit(_t.created,{target:n,expiration:o})}),Xe(this,"get",r=>{this.isInitialized();const i=this.formatTarget(r);return this.getExpiration(i)}),Xe(this,"del",r=>{if(this.isInitialized(),this.has(r)){const i=this.formatTarget(r),n=this.getExpiration(i);this.expirations.delete(i),this.events.emit(_t.deleted,{target:i,expiration:n})}}),Xe(this,"on",(r,i)=>{this.events.on(r,i)}),Xe(this,"once",(r,i)=>{this.events.once(r,i)}),Xe(this,"off",(r,i)=>{this.events.off(r,i)}),Xe(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=st(s,this.name)}get context(){return bt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return yf(e);if(typeof e=="number")return bf(e);const{message:s}=R("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(s)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(_t.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const s=this.expirations.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(r),new Error(r)}return s}checkExpiry(e,s){const{expiry:r}=s;D.toMiliseconds(r)-Date.now()<=0&&this.expire(e,s)}expire(e,s){this.expirations.delete(e),this.events.emit(_t.expired,{target:e,expiration:s})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,s)=>this.checkExpiry(s,e))}registerEventListeners(){this.core.heartbeat.on(Fr.pulse,()=>this.checkExpirations()),this.events.on(_t.created,e=>{const s=_t.created;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()}),this.events.on(_t.expired,e=>{const s=_t.expired;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()}),this.events.on(_t.deleted,e=>{const s=_t.deleted;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var d0=Object.defineProperty,p0=(t,e,s)=>e in t?d0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Te=(t,e,s)=>p0(t,typeof e!="symbol"?e+"":e,s);class f0 extends ip{constructor(e,s,r){super(e,s,r),this.core=e,this.logger=s,this.store=r,Te(this,"name",fy),Te(this,"abortController"),Te(this,"isDevEnv"),Te(this,"verifyUrlV3",my),Te(this,"storagePrefix",Gt),Te(this,"version",Hu),Te(this,"publicKey"),Te(this,"fetchPromise"),Te(this,"init",async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&D.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!Hr()||this.isDevEnv)return;const n=window.location.origin,{id:o,decryptedId:a}=i,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${n}&id=${o}&decryptedId=${a}`;try{const l=as.getDocument(),u=this.startAbortTimer(D.ONE_SECOND*5),h=await new Promise((d,m)=>{const w=()=>{window.removeEventListener("message",f),l.body.removeChild(g),m("attestation aborted")};this.abortController.signal.addEventListener("abort",w);const g=l.createElement("iframe");g.src=c,g.style.display="none",g.addEventListener("error",w,{signal:this.abortController.signal});const f=y=>{if(y.data&&typeof y.data=="string")try{const b=JSON.parse(y.data);if(b.type==="verify_attestation"){if(go(b.attestation).payload.id!==o)return;clearInterval(u),l.body.removeChild(g),this.abortController.signal.removeEventListener("abort",w),window.removeEventListener("message",f),d(b.attestation===null?"":b.attestation)}}catch(b){this.logger.warn(b)}};l.body.appendChild(g),window.addEventListener("message",f,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",h),h}catch(l){this.logger.warn(l)}return""}),Te(this,"resolve",async i=>{if(this.isDevEnv)return"";const{attestationId:n,hash:o,encryptedId:a}=i;if(n===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(n){if(go(n).payload.id!==a)return;const l=await this.isValidJwtAttestation(n);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!o)return;const c=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(o,c)}),Te(this,"fetchAttestation",async(i,n)=>{this.logger.debug(`resolving attestation: ${i} from url: ${n}`);const o=this.startAbortTimer(D.ONE_SECOND*5),a=await fetch(`${n}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0}),Te(this,"getVerifyUrl",i=>{let n=i||wi;return wy.includes(n)||(this.logger.info(`verify url: ${n}, not included in trusted list, assigning default: ${wi}`),n=wi),n}),Te(this,"fetchPublicKey",async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(D.FIVE_SECONDS),n=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await n.json()}catch(i){this.logger.warn(i)}}),Te(this,"persistPublicKey",async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i}),Te(this,"removePublicKey",async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),Te(this,"isValidJwtAttestation",async i=>{const n=await this.getPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(i,o)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}}),Te(this,"getPublicKey",async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),Te(this,"fetchAndPersistPublicKey",async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async n=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),n(o))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i}),Te(this,"validateAttestation",(i,n)=>{const o=Gm(i,n.publicKey),a={hasExpired:D.toMiliseconds(o.exp)this.abortController.abort(),D.toMiliseconds(e))}}var g0=Object.defineProperty,m0=(t,e,s)=>e in t?g0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,el=(t,e,s)=>m0(t,typeof e!="symbol"?e+"":e,s);class w0 extends np{constructor(e,s){super(e,s),this.projectId=e,this.logger=s,el(this,"context",yy),el(this,"registerDeviceToken",async r=>{const{clientId:i,token:n,notificationType:o,enableEncrypted:a=!1}=r,c=`${by}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:o,token:n,always_raw:a})})}),this.logger=st(s,this.context)}}var y0=Object.defineProperty,tl=Object.getOwnPropertySymbols,b0=Object.prototype.hasOwnProperty,v0=Object.prototype.propertyIsEnumerable,Wo=(t,e,s)=>e in t?y0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ri=(t,e)=>{for(var s in e||(e={}))b0.call(e,s)&&Wo(t,s,e[s]);if(tl)for(var s of tl(e))v0.call(e,s)&&Wo(t,s,e[s]);return t},Me=(t,e,s)=>Wo(t,typeof e!="symbol"?e+"":e,s);class E0 extends op{constructor(e,s,r=!0){super(e,s,r),this.core=e,this.logger=s,Me(this,"context",Ey),Me(this,"storagePrefix",Gt),Me(this,"storageVersion",vy),Me(this,"events",new Map),Me(this,"shouldPersist",!1),Me(this,"init",async()=>{if(!sa())try{const i={eventId:Ka(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:ou(this.core.relayer.protocol,this.core.relayer.version,Uo)}}};await this.sendEvent([i])}catch(i){this.logger.warn(i)}}),Me(this,"createEvent",i=>{const{event:n="ERROR",type:o="",properties:{topic:a,trace:c}}=i,l=Ka(),u=this.core.projectId||"",h=Date.now(),d=ri({eventId:l,timestamp:h,props:{event:n,type:o,properties:{topic:a,trace:c}},bundleId:u,domain:this.getAppDomain()},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,d),this.shouldPersist=!0),d}),Me(this,"getEvent",i=>{const{eventId:n,topic:o}=i;if(n)return this.events.get(n);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return ri(ri({},a),this.setMethods(a.eventId))}),Me(this,"deleteEvent",i=>{const{eventId:n}=i;this.events.delete(n),this.shouldPersist=!0}),Me(this,"setEventListeners",()=>{this.core.heartbeat.on(Fr.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{D.fromMiliseconds(Date.now())-D.fromMiliseconds(i.timestamp)>Cy&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})}),Me(this,"setMethods",i=>({addTrace:n=>this.addTrace(i,n),setError:n=>this.setError(i,n)})),Me(this,"addTrace",(i,n)=>{const o=this.events.get(i);o&&(o.props.properties.trace.push(n),this.events.set(i,o),this.shouldPersist=!0)}),Me(this,"setError",(i,n)=>{const o=this.events.get(i);o&&(o.props.type=n,o.timestamp=Date.now(),this.events.set(i,o),this.shouldPersist=!0)}),Me(this,"persist",async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),Me(this,"restore",async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(n=>{this.events.set(n.eventId,ri(ri({},n),this.setMethods(n.eventId)))})}catch(i){this.logger.warn(i)}}),Me(this,"submit",async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[n,o]of this.events)o.props.type&&i.push(o);if(i.length!==0)try{if((await this.sendEvent(i)).ok)for(const n of i)this.events.delete(n.eventId),this.shouldPersist=!0}catch(n){this.logger.warn(n)}}),Me(this,"sendEvent",async i=>{const n=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${Iy}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${Uo}${n}`,{method:"POST",body:JSON.stringify(i)})}),Me(this,"getAppDomain",()=>nu().url),this.logger=st(s,this.context),this.telemetryEnabled=r,r?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var C0=Object.defineProperty,sl=Object.getOwnPropertySymbols,I0=Object.prototype.hasOwnProperty,A0=Object.prototype.propertyIsEnumerable,zo=(t,e,s)=>e in t?C0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,rl=(t,e)=>{for(var s in e||(e={}))I0.call(e,s)&&zo(t,s,e[s]);if(sl)for(var s of sl(e))A0.call(e,s)&&zo(t,s,e[s]);return t},Ie=(t,e,s)=>zo(t,typeof e!="symbol"?e+"":e,s);let N0=class nh extends Kd{constructor(e){var s;super(e),Ie(this,"protocol",zu),Ie(this,"version",Hu),Ie(this,"name",Ro),Ie(this,"relayUrl"),Ie(this,"projectId"),Ie(this,"customStoragePrefix"),Ie(this,"events",new Ys.EventEmitter),Ie(this,"logger"),Ie(this,"heartbeat"),Ie(this,"relayer"),Ie(this,"crypto"),Ie(this,"storage"),Ie(this,"history"),Ie(this,"expirer"),Ie(this,"pairing"),Ie(this,"verify"),Ie(this,"echoClient"),Ie(this,"linkModeSupportedApps"),Ie(this,"eventClient"),Ie(this,"initialized",!1),Ie(this,"logChunkController"),Ie(this,"on",(a,c)=>this.events.on(a,c)),Ie(this,"once",(a,c)=>this.events.once(a,c)),Ie(this,"off",(a,c)=>this.events.off(a,c)),Ie(this,"removeListener",(a,c)=>this.events.removeListener(a,c)),Ie(this,"dispatchEnvelope",({topic:a,message:c,sessionExists:l})=>{if(!a||!c)return;const u={topic:a,message:c,publishedAt:Date.now(),transportType:Ne.link_mode};this.relayer.onLinkMessageEvent(u,{sessionExists:l})});const r=this.getGlobalCore(e?.customStoragePrefix);if(r)try{return this.customStoragePrefix=r.customStoragePrefix,this.logger=r.logger,this.heartbeat=r.heartbeat,this.crypto=r.crypto,this.history=r.history,this.expirer=r.expirer,this.storage=r.storage,this.relayer=r.relayer,this.pairing=r.pairing,this.verify=r.verify,this.echoClient=r.echoClient,this.linkModeSupportedApps=r.linkModeSupportedApps,this.eventClient=r.eventClient,this.initialized=r.initialized,this.logChunkController=r.logChunkController,r}catch(a){console.warn("Failed to copy global core",a)}this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||Ku,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=Ti({level:typeof e?.logger=="string"&&e.logger?e.logger:Hw.logger,name:Ro}),{logger:n,chunkLoggerController:o}=Dl({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=o,(s=this.logChunkController)!=null&&s.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var a,c;(a=this.logChunkController)!=null&&a.downloadLogsBlobInBrowser&&((c=this.logChunkController)==null||c.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=st(n,this.name),this.heartbeat=new Bh,this.crypto=new Zb(this,this.logger,e?.keychain),this.history=new c0(this,this.logger),this.expirer=new h0(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new jh(rl(rl({},Vw),e?.storageOptions)),this.relayer=new Nv({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new n0(this,this.logger),this.verify=new f0(this,this.logger,this.storage),this.echoClient=new w0(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new E0(this,this.logger,e?.telemetryEnabled),this.setGlobalCore(this)}static async init(e){const s=new nh(e);await s.initialize();const r=await s.crypto.getClientId();return await s.storage.setItem(ny,r),s}get context(){return bt(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(Dc,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(Dc)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}getGlobalCore(e=""){try{if(this.isGlobalCoreDisabled())return;const s=`_walletConnectCore_${e}`,r=`${s}_count`;return globalThis[r]=(globalThis[r]||0)+1,globalThis[r]>1&&console.warn(`WalletConnect Core is already initialized. This is probably a mistake and can lead to unexpected behavior. Init() was called ${globalThis[r]} times.`),globalThis[s]}catch(s){console.warn("Failed to get global WalletConnect core",s);return}}setGlobalCore(e){var s;try{if(this.isGlobalCoreDisabled())return;const r=`_walletConnectCore_${((s=e.opts)==null?void 0:s.customStoragePrefix)||""}`;globalThis[r]=e}catch(r){console.warn("Failed to set global WalletConnect core",r)}}isGlobalCoreDisabled(){try{return typeof Ww<"u"&&zw.DISABLE_GLOBAL_CORE==="true"}catch{return!0}}};const _0=N0,oh="wc",ah=2,ch="client",ua=`${oh}@${ah}:${ch}:`,no={name:ch,logger:"error"},il="WALLETCONNECT_DEEPLINK_CHOICE",S0="proposal",nl="Proposal expired",P0="session",cr=D.SEVEN_DAYS,k0="engine",Be={wc_sessionPropose:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1104},res:{ttl:D.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1106},res:{ttl:D.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1112},res:{ttl:D.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1114},res:{ttl:D.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:D.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:D.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1119}}},oo={min:D.FIVE_MINUTES,max:D.SEVEN_DAYS},qt={idle:"IDLE",active:"ACTIVE"},ol={eth_sendTransaction:{key:""},eth_sendRawTransaction:{key:""},wallet_sendCalls:{key:""},solana_signTransaction:{key:"signature"},solana_signAllTransactions:{key:"transactions"},solana_signAndSendTransaction:{key:"signature"}},O0="request",T0=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],x0="wc",$0="auth",R0="authKeys",U0="pairingTopics",D0="requests",$n=`${x0}@${1.5}:${$0}:`,ln=`${$n}:PUB_KEY`;var L0=Object.defineProperty,M0=Object.defineProperties,B0=Object.getOwnPropertyDescriptors,al=Object.getOwnPropertySymbols,j0=Object.prototype.hasOwnProperty,q0=Object.prototype.propertyIsEnumerable,Ho=(t,e,s)=>e in t?L0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,be=(t,e)=>{for(var s in e||(e={}))j0.call(e,s)&&Ho(t,s,e[s]);if(al)for(var s of al(e))q0.call(e,s)&&Ho(t,s,e[s]);return t},et=(t,e)=>M0(t,B0(e)),P=(t,e,s)=>Ho(t,typeof e!="symbol"?e+"":e,s);class F0 extends up{constructor(e){super(e),P(this,"name",k0),P(this,"events",new ea),P(this,"initialized",!1),P(this,"requestQueue",{state:qt.idle,queue:[]}),P(this,"sessionRequestQueue",{state:qt.idle,queue:[]}),P(this,"requestQueueDelay",D.ONE_SECOND),P(this,"expectedPairingMethodMap",new Map),P(this,"recentlyDeletedMap",new Map),P(this,"recentlyDeletedLimit",200),P(this,"relayMessageCache",[]),P(this,"pendingSessions",new Map),P(this,"init",async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(Be)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},D.toMiliseconds(this.requestQueueDelay)))}),P(this,"connect",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const r=et(be({},s),{requiredNamespaces:s.requiredNamespaces||{},optionalNamespaces:s.optionalNamespaces||{}});await this.isValidConnect(r),r.optionalNamespaces=uw(r.requiredNamespaces,r.optionalNamespaces),r.requiredNamespaces={};const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:o,sessionProperties:a,scopedProperties:c,relays:l}=r;let u=i,h,d=!1;try{if(u){const N=this.client.core.pairing.pairings.get(u);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),d=N.active}}catch(N){throw this.client.logger.error(`connect() -> pairing.get(${u}) failed`),N}if(!u||!d){const{topic:N,uri:_}=await this.client.core.pairing.create();u=N,h=_}if(!u){const{message:N}=R("NO_MATCHING_KEY",`connect() pairing topic: ${u}`);throw new Error(N)}const m=await this.client.core.crypto.generateKeyPair(),w=Be.wc_sessionPropose.req.ttl||D.FIVE_MINUTES,g=De(w),f=et(be(be({requiredNamespaces:n,optionalNamespaces:o,relays:l??[{protocol:Vu}],proposer:{publicKey:m,metadata:this.client.metadata},expiryTimestamp:g,pairingTopic:u},a&&{sessionProperties:a}),c&&{scopedProperties:c}),{id:cs()}),y=pe("session_connect",f.id),{reject:b,resolve:E,done:C}=Rs(w,nl),S=({id:N})=>{N===f.id&&(this.client.events.off("proposal_expire",S),this.pendingSessions.delete(f.id),this.events.emit(y,{error:{message:nl,code:0}}))};return this.client.events.on("proposal_expire",S),this.events.once(y,({error:N,session:_})=>{this.client.events.off("proposal_expire",S),N?b(N):_&&E(_)}),await this.sendRequest({topic:u,method:"wc_sessionPropose",params:f,throwOnFailedPublish:!0,clientRpcId:f.id}),await this.setProposal(f.id,f),{uri:h,approval:C}}),P(this,"pair",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(s)}catch(r){throw this.client.logger.error("pair() failed"),r}}),P(this,"approve",async s=>{var r,i,n;const o=this.client.core.eventClient.createEvent({properties:{topic:(r=s?.id)==null?void 0:r.toString(),trace:[Tt.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(v){throw o.setError(Os.no_internet_connection),v}try{await this.isValidProposalId(s?.id)}catch(v){throw this.client.logger.error(`approve() -> proposal.get(${s?.id}) failed`),o.setError(Os.proposal_not_found),v}try{await this.isValidApprove(s)}catch(v){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(Os.session_approve_namespace_validation_failure),v}const{id:a,relayProtocol:c,namespaces:l,sessionProperties:u,scopedProperties:h,sessionConfig:d}=s,m=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:w,proposer:g,requiredNamespaces:f,optionalNamespaces:y}=m;let b=(i=this.client.core.eventClient)==null?void 0:i.getEvent({topic:w});b||(b=(n=this.client.core.eventClient)==null?void 0:n.createEvent({type:Tt.session_approve_started,properties:{topic:w,trace:[Tt.session_approve_started,Tt.session_namespaces_validation_success]}}));const E=await this.client.core.crypto.generateKeyPair(),C=g.publicKey,S=await this.client.core.crypto.generateSharedKey(E,C),N=be(be(be({relay:{protocol:c??"irn"},namespaces:l,controller:{publicKey:E,metadata:this.client.metadata},expiry:De(cr)},u&&{sessionProperties:u}),h&&{scopedProperties:h}),d&&{sessionConfig:d}),_=Ne.relay;b.addTrace(Tt.subscribing_session_topic);try{await this.client.core.relayer.subscribe(S,{transportType:_})}catch(v){throw b.setError(Os.subscribe_session_topic_failure),v}b.addTrace(Tt.subscribe_session_topic_success);const U=et(be({},N),{topic:S,requiredNamespaces:f,optionalNamespaces:y,pairingTopic:w,acknowledged:!1,self:N.controller,peer:{publicKey:g.publicKey,metadata:g.metadata},controller:E,transportType:Ne.relay});await this.client.session.set(S,U),b.addTrace(Tt.store_session);try{b.addTrace(Tt.publishing_session_settle),await this.sendRequest({topic:S,method:"wc_sessionSettle",params:N,throwOnFailedPublish:!0}).catch(v=>{throw b?.setError(Os.session_settle_publish_failure),v}),b.addTrace(Tt.session_settle_publish_success),b.addTrace(Tt.publishing_session_approve),await this.sendResult({id:a,topic:w,result:{relay:{protocol:c??"irn"},responderPublicKey:E},throwOnFailedPublish:!0}).catch(v=>{throw b?.setError(Os.session_approve_publish_failure),v}),b.addTrace(Tt.session_approve_publish_success)}catch(v){throw this.client.logger.error(v),this.client.session.delete(S,we("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(S),v}return this.client.core.eventClient.deleteEvent({eventId:b.eventId}),await this.client.core.pairing.updateMetadata({topic:w,metadata:g.metadata}),await this.client.proposal.delete(a,we("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:w}),await this.setExpiry(S,De(cr)),{topic:S,acknowledged:()=>Promise.resolve(this.client.session.get(S))}}),P(this,"reject",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(s)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:r,reason:i}=s;let n;try{n=this.client.proposal.get(r).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${r}) failed`),o}n&&(await this.sendError({id:r,topic:n,error:i,rpcOpts:Be.wc_sessionPropose.reject}),await this.client.proposal.delete(r,we("USER_DISCONNECTED")))}),P(this,"update",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(s)}catch(h){throw this.client.logger.error("update() -> isValidUpdate() failed"),h}const{topic:r,namespaces:i}=s,{done:n,resolve:o,reject:a}=Rs(),c=cs(),l=Ar().toString(),u=this.client.session.get(r).namespaces;return this.events.once(pe("session_update",c),({error:h})=>{h?a(h):o()}),await this.client.session.update(r,{namespaces:i}),await this.sendRequest({topic:r,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:l}).catch(h=>{this.client.logger.error(h),this.client.session.update(r,{namespaces:u}),a(h)}),{acknowledged:n}}),P(this,"extend",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(s)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:r}=s,i=cs(),{done:n,resolve:o,reject:a}=Rs();return this.events.once(pe("session_extend",i),({error:c})=>{c?a(c):o()}),await this.setExpiry(r,De(cr)),this.sendRequest({topic:r,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:n}}),P(this,"request",async s=>{this.isInitialized();try{await this.isValidRequest(s)}catch(y){throw this.client.logger.error("request() -> isValidRequest() failed"),y}const{chainId:r,request:i,topic:n,expiry:o=Be.wc_sessionRequest.req.ttl}=s,a=this.client.session.get(n);a?.transportType===Ne.relay&&await this.confirmOnlineStateOrThrow();const c=cs(),l=Ar().toString(),{done:u,resolve:h,reject:d}=Rs(o,"Request expired. Please try again.");this.events.once(pe("session_request",c),({error:y,result:b})=>{y?d(y):h(b)});const m="wc_sessionRequest",w=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);if(w)return await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:n,method:m,params:{request:et(be({},i),{expiryTimestamp:De(o)}),chainId:r},expiry:o,throwOnFailedPublish:!0,appLink:w}).catch(y=>d(y)),this.client.events.emit("session_request_sent",{topic:n,request:i,chainId:r,id:c}),await u();const g={request:et(be({},i),{expiryTimestamp:De(o)}),chainId:r},f=this.shouldSetTVF(m,g);return await Promise.all([new Promise(async y=>{await this.sendRequest(be({clientRpcId:c,relayRpcId:l,topic:n,method:m,params:g,expiry:o,throwOnFailedPublish:!0},f&&{tvf:this.getTVFParams(c,g)})).catch(b=>d(b)),this.client.events.emit("session_request_sent",{topic:n,request:i,chainId:r,id:c}),y()}),new Promise(async y=>{var b;if(!((b=a.sessionConfig)!=null&&b.disableDeepLink)){const E=await If(this.client.core.storage,il);await vf({id:c,topic:n,wcDeepLink:E})}y()}),u()]).then(y=>y[2])}),P(this,"respond",async s=>{this.isInitialized(),await this.isValidRespond(s);const{topic:r,response:i}=s,{id:n}=i,o=this.client.session.get(r);o.transportType===Ne.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);ts(i)?await this.sendResult({id:n,topic:r,result:i.result,throwOnFailedPublish:!0,appLink:a}):Wt(i)&&await this.sendError({id:n,topic:r,error:i.error,appLink:a}),this.cleanupAfterResponse(s)}),P(this,"ping",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(s)}catch(i){throw this.client.logger.error("ping() -> isValidPing() failed"),i}const{topic:r}=s;if(this.client.session.keys.includes(r)){const i=cs(),n=Ar().toString(),{done:o,resolve:a,reject:c}=Rs();this.events.once(pe("session_ping",i),({error:l})=>{l?c(l):a()}),await Promise.all([this.sendRequest({topic:r,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:i,relayRpcId:n}),o()])}else this.client.core.pairing.pairings.keys.includes(r)&&(this.client.logger.warn("ping() on pairing topic is deprecated and will be removed in the next major release."),await this.client.core.pairing.ping({topic:r}))}),P(this,"emit",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(s);const{topic:r,event:i,chainId:n}=s,o=Ar().toString(),a=cs();await this.sendRequest({topic:r,method:"wc_sessionEvent",params:{event:i,chainId:n},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})}),P(this,"disconnect",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(s);const{topic:r}=s;if(this.client.session.keys.includes(r))await this.sendRequest({topic:r,method:"wc_sessionDelete",params:we("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:r,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(r))await this.client.core.pairing.disconnect({topic:r});else{const{message:i}=R("MISMATCHED_TOPIC",`Session or pairing topic not found: ${r}`);throw new Error(i)}}),P(this,"find",s=>(this.isInitialized(),this.client.session.getAll().filter(r=>pw(r,s)))),P(this,"getPendingSessionRequests",()=>this.client.pendingRequest.getAll()),P(this,"authenticate",async(s,r)=>{var i;this.isInitialized(),this.isValidAuthenticate(s);const n=r&&this.client.core.linkModeSupportedApps.includes(r)&&((i=this.client.metadata.redirect)==null?void 0:i.linkMode),o=n?Ne.link_mode:Ne.relay;o===Ne.relay&&await this.confirmOnlineStateOrThrow();const{chains:a,statement:c="",uri:l,domain:u,nonce:h,type:d,exp:m,nbf:w,methods:g=[],expiry:f}=s,y=[...s.resources||[]],{topic:b,uri:E}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:b,uri:E}});const C=await this.client.core.crypto.generateKeyPair(),S=an(C);if(await Promise.all([this.client.auth.authKeys.set(ln,{responseTopic:S,publicKey:C}),this.client.auth.pairingTopics.set(S,{topic:S,pairingTopic:b})]),await this.client.core.relayer.subscribe(S,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${b}`),g.length>0){const{namespace:x}=Pr(a[0]);let G=gg(x,"request",g);on(y)&&(G=wg(G,y.pop())),y.push(G)}const N=f&&f>Be.wc_sessionAuthenticate.req.ttl?f:Be.wc_sessionAuthenticate.req.ttl,_={authPayload:{type:d??"caip122",chains:a,statement:c,aud:l,domain:u,version:"1",nonce:h,iat:new Date().toISOString(),exp:m,nbf:w,resources:y},requester:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:De(N)},U={eip155:{chains:a,methods:[...new Set(["personal_sign",...g])],events:["chainChanged","accountsChanged"]}},v={requiredNamespaces:{},optionalNamespaces:U,relays:[{protocol:"irn"}],pairingTopic:b,proposer:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:De(Be.wc_sessionPropose.req.ttl),id:cs()},{done:$,resolve:I,reject:L}=Rs(N,"Request expired"),H=cs(),A=pe("session_connect",v.id),T=pe("session_request",H),k=async({error:x,session:G})=>{this.events.off(T,B),x?L(x):G&&I({session:G})},B=async x=>{var G,Q,se;if(await this.deletePendingAuthRequest(H,{message:"fulfilled",code:0}),x.error){const Re=we("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return x.error.code===Re.code?void 0:(this.events.off(A,k),L(x.error.message))}await this.deleteProposal(v.id),this.events.off(A,k);const{cacaos:Ee,responder:de}=x.result,Oe=[],Le=[];for(const Re of Ee){await tc({cacao:Re,projectId:this.client.core.projectId})||(this.client.logger.error(Re,"Signature verification failed"),L(we("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:Ps}=Re,Jt=on(Ps.resources),Mt=[Ao(Ps.iss)],Yt=wn(Ps.iss);if(Jt){const sr=sc(Jt),Wi=rc(Jt);Oe.push(...sr),Mt.push(...Wi)}for(const sr of Mt)Le.push(`${sr}:${Yt}`)}const Ye=await this.client.core.crypto.generateSharedKey(C,de.publicKey);let $e;Oe.length>0&&($e={topic:Ye,acknowledged:!0,self:{publicKey:C,metadata:this.client.metadata},peer:de,controller:de.publicKey,expiry:De(cr),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:b,namespaces:Pc([...new Set(Oe)],[...new Set(Le)]),transportType:o},await this.client.core.relayer.subscribe(Ye,{transportType:o}),await this.client.session.set(Ye,$e),b&&await this.client.core.pairing.updateMetadata({topic:b,metadata:de.metadata}),$e=this.client.session.get(Ye)),(G=this.client.metadata.redirect)!=null&&G.linkMode&&(Q=de.metadata.redirect)!=null&&Q.linkMode&&(se=de.metadata.redirect)!=null&&se.universal&&r&&(this.client.core.addLinkModeSupportedApp(de.metadata.redirect.universal),this.client.session.update(Ye,{transportType:Ne.link_mode})),I({auths:Ee,session:$e})};this.events.once(A,k),this.events.once(T,B);let q;try{if(n){const x=Bs("wc_sessionAuthenticate",_,H);this.client.core.history.set(b,x);const G=await this.client.core.crypto.encode("",x,{type:Bi,encoding:ws});q=Yi(r,b,G)}else await Promise.all([this.sendRequest({topic:b,method:"wc_sessionAuthenticate",params:_,expiry:s.expiry,throwOnFailedPublish:!0,clientRpcId:H}),this.sendRequest({topic:b,method:"wc_sessionPropose",params:v,expiry:Be.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:v.id})])}catch(x){throw this.events.off(A,k),this.events.off(T,B),x}return await this.setProposal(v.id,v),await this.setAuthRequest(H,{request:et(be({},_),{verifyContext:{}}),pairingTopic:b,transportType:o}),{uri:q??E,response:$}}),P(this,"approveSessionAuthenticate",async s=>{const{id:r,auths:i}=s,n=this.client.core.eventClient.createEvent({properties:{topic:r.toString(),trace:[Ts.authenticated_session_approve_started]}});try{this.isInitialized()}catch(f){throw n.setError(ti.no_internet_connection),f}const o=this.getPendingAuthRequest(r);if(!o)throw n.setError(ti.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${r}`);const a=o.transportType||Ne.relay;a===Ne.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),u=an(c),h={type:os,receiverPublicKey:c,senderPublicKey:l},d=[],m=[];for(const f of i){if(!await tc({cacao:f,projectId:this.client.core.projectId})){n.setError(ti.invalid_cacao);const S=we("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:r,topic:u,error:S,encodeOpts:h}),new Error(S.message)}n.addTrace(Ts.cacaos_verified);const{p:y}=f,b=on(y.resources),E=[Ao(y.iss)],C=wn(y.iss);if(b){const S=sc(b),N=rc(b);d.push(...S),E.push(...N)}for(const S of E)m.push(`${S}:${C}`)}const w=await this.client.core.crypto.generateSharedKey(l,c);n.addTrace(Ts.create_authenticated_session_topic);let g;if(d?.length>0){g={topic:w,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:De(cr),authentication:i,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:Pc([...new Set(d)],[...new Set(m)]),transportType:a},n.addTrace(Ts.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:a})}catch(f){throw n.setError(ti.subscribe_authenticated_session_topic_failure),f}n.addTrace(Ts.subscribe_authenticated_session_topic_success),await this.client.session.set(w,g),n.addTrace(Ts.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}n.addTrace(Ts.publishing_authenticated_session_approve);try{await this.sendResult({topic:u,id:r,result:{cacaos:i,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(f){throw n.setError(ti.authenticated_session_approve_publish_failure),f}return await this.client.auth.requests.delete(r,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:n.eventId}),{session:g}}),P(this,"rejectSessionAuthenticate",async s=>{this.isInitialized();const{id:r,reason:i}=s,n=this.getPendingAuthRequest(r);if(!n)throw new Error(`Could not find pending auth request with id ${r}`);n.transportType===Ne.relay&&await this.confirmOnlineStateOrThrow();const o=n.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),c=an(o),l={type:os,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:r,topic:c,error:i,encodeOpts:l,rpcOpts:Be.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(n.requester.metadata,n.transportType)}),await this.client.auth.requests.delete(r,{message:"rejected",code:0}),await this.client.proposal.delete(r,we("USER_DISCONNECTED"))}),P(this,"formatAuthMessage",s=>{this.isInitialized();const{request:r,iss:i}=s;return wu(r,i)}),P(this,"processRelayMessageCache",()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const s=this.relayMessageCache.shift();s&&await this.onRelayMessage(s)}catch(s){this.client.logger.error(s)}},50)}),P(this,"cleanupDuplicatePairings",async s=>{if(s.pairingTopic)try{const r=this.client.core.pairing.pairings.get(s.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(n=>{var o,a;return((o=n.peerMetadata)==null?void 0:o.url)&&((a=n.peerMetadata)==null?void 0:a.url)===s.peer.metadata.url&&n.topic&&n.topic!==r.topic});if(i.length===0)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(n=>this.client.core.pairing.disconnect({topic:n.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(r){this.client.logger.error(r)}}),P(this,"deleteSession",async s=>{var r;const{topic:i,expirerHasDeleted:n=!1,emitEvent:o=!0,id:a=0}=s,{self:c}=this.client.session.get(i);await this.client.core.relayer.unsubscribe(i),await this.client.session.delete(i,we("USER_DISCONNECTED")),this.addToRecentlyDeleted(i,"session"),this.client.core.crypto.keychain.has(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.publicKey),this.client.core.crypto.keychain.has(i)&&await this.client.core.crypto.deleteSymKey(i),n||this.client.core.expirer.del(i),this.client.core.storage.removeItem(il).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===i&&this.deletePendingSessionRequest(l.id,we("USER_DISCONNECTED"))}),i===((r=this.sessionRequestQueue.queue[0])==null?void 0:r.topic)&&(this.sessionRequestQueue.state=qt.idle),o&&this.client.events.emit("session_delete",{id:a,topic:i})}),P(this,"deleteProposal",async(s,r)=>{if(r)try{const i=this.client.proposal.get(s);this.client.core.eventClient.getEvent({topic:i.pairingTopic})?.setError(Os.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(s,we("USER_DISCONNECTED")),r?Promise.resolve():this.client.core.expirer.del(s)]),this.addToRecentlyDeleted(s,"proposal")}),P(this,"deletePendingSessionRequest",async(s,r,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(s,r),i?Promise.resolve():this.client.core.expirer.del(s)]),this.addToRecentlyDeleted(s,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(n=>n.id!==s),i&&(this.sessionRequestQueue.state=qt.idle,this.client.events.emit("session_request_expire",{id:s}))}),P(this,"deletePendingAuthRequest",async(s,r,i=!1)=>{await Promise.all([this.client.auth.requests.delete(s,r),i?Promise.resolve():this.client.core.expirer.del(s)])}),P(this,"setExpiry",async(s,r)=>{this.client.session.keys.includes(s)&&(this.client.core.expirer.set(s,r),await this.client.session.update(s,{expiry:r}))}),P(this,"setProposal",async(s,r)=>{this.client.core.expirer.set(s,De(Be.wc_sessionPropose.req.ttl)),await this.client.proposal.set(s,r)}),P(this,"setAuthRequest",async(s,r)=>{const{request:i,pairingTopic:n,transportType:o=Ne.relay}=r;this.client.core.expirer.set(s,i.expiryTimestamp),await this.client.auth.requests.set(s,{authPayload:i.authPayload,requester:i.requester,expiryTimestamp:i.expiryTimestamp,id:s,pairingTopic:n,verifyContext:i.verifyContext,transportType:o})}),P(this,"setPendingSessionRequest",async s=>{const{id:r,topic:i,params:n,verifyContext:o}=s,a=n.request.expiryTimestamp||De(Be.wc_sessionRequest.req.ttl);this.client.core.expirer.set(r,a),await this.client.pendingRequest.set(r,{id:r,topic:i,params:n,verifyContext:o})}),P(this,"sendRequest",async s=>{const{topic:r,method:i,params:n,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:l,appLink:u,tvf:h}=s,d=Bs(i,n,c);let m;const w=!!u;try{const y=w?ws:Dt;m=await this.client.core.crypto.encode(r,d,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${r} failed`),y}let g;if(T0.includes(i)){const y=Ht(JSON.stringify(d)),b=Ht(m);g=await this.client.core.verify.register({id:b,decryptedId:y})}const f=Be[i].req;if(f.attestation=g,o&&(f.ttl=o),a&&(f.id=a),this.client.core.history.set(r,d),w){const y=Yi(u,r,m);await global.Linking.openURL(y,this.client.name)}else{const y=Be[i].req;o&&(y.ttl=o),a&&(y.id=a),y.tvf=et(be({},h),{correlationId:d.id}),l?(y.internal=et(be({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(r,m,y)):this.client.core.relayer.publish(r,m,y).catch(b=>this.client.logger.error(b))}return d.id}),P(this,"sendResult",async s=>{const{id:r,topic:i,result:n,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=s,l=In(r,n);let u;const h=c&&typeof(global==null?void 0:global.Linking)<"u";try{const w=h?ws:Dt;u=await this.client.core.crypto.encode(i,l,et(be({},a||{}),{encoding:w}))}catch(w){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${i} failed`),w}let d,m;try{d=await this.client.core.history.get(i,r);const w=d.request;try{this.shouldSetTVF(w.method,w.params)&&(m=this.getTVFParams(r,w.params,n))}catch(g){this.client.logger.warn("sendResult() -> getTVFParams() failed",g)}}catch(w){throw this.client.logger.error(`sendResult() -> history.get(${i}, ${r}) failed`),w}if(h){const w=Yi(c,i,u);await global.Linking.openURL(w,this.client.name)}else{const w=d.request.method,g=Be[w].res;g.tvf=et(be({},m),{correlationId:r}),o?(g.internal=et(be({},g.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,u,g)):this.client.core.relayer.publish(i,u,g).catch(f=>this.client.logger.error(f))}await this.client.core.history.resolve(l)}),P(this,"sendError",async s=>{const{id:r,topic:i,error:n,encodeOpts:o,rpcOpts:a,appLink:c}=s,l=Ll(r,n);let u;const h=c&&typeof(global==null?void 0:global.Linking)<"u";try{const m=h?ws:Dt;u=await this.client.core.crypto.encode(i,l,et(be({},o||{}),{encoding:m}))}catch(m){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${i} failed`),m}let d;try{d=await this.client.core.history.get(i,r)}catch(m){throw this.client.logger.error(`sendError() -> history.get(${i}, ${r}) failed`),m}if(h){const m=Yi(c,i,u);await global.Linking.openURL(m,this.client.name)}else{const m=d.request.method,w=a||Be[m].res;this.client.core.relayer.publish(i,u,w)}await this.client.core.history.resolve(l)}),P(this,"cleanup",async()=>{const s=[],r=[];this.client.session.getAll().forEach(i=>{let n=!1;ms(i.expiry)&&(n=!0),this.client.core.crypto.keychain.has(i.topic)||(n=!0),n&&s.push(i.topic)}),this.client.proposal.getAll().forEach(i=>{ms(i.expiryTimestamp)&&r.push(i.id)}),await Promise.all([...s.map(i=>this.deleteSession({topic:i})),...r.map(i=>this.deleteProposal(i))])}),P(this,"onProviderMessageEvent",async s=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(s):await this.onRelayMessage(s)}),P(this,"onRelayEventRequest",async s=>{this.requestQueue.queue.push(s),await this.processRequestsQueue()}),P(this,"processRequestsQueue",async()=>{if(this.requestQueue.state===qt.active){this.client.logger.info("Request queue already active, skipping...");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=qt.active;const s=this.requestQueue.queue.shift();if(s)try{await this.processRequest(s)}catch(r){this.client.logger.warn(r)}}this.requestQueue.state=qt.idle}),P(this,"processRequest",async s=>{const{topic:r,payload:i,attestation:n,transportType:o,encryptedId:a}=s,c=i.method;if(!this.shouldIgnorePairingRequest({topic:r,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:r,payload:i,attestation:n,encryptedId:a});case"wc_sessionSettle":return await this.onSessionSettleRequest(r,i);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(r,i);case"wc_sessionExtend":return await this.onSessionExtendRequest(r,i);case"wc_sessionPing":return await this.onSessionPingRequest(r,i);case"wc_sessionDelete":return await this.onSessionDeleteRequest(r,i);case"wc_sessionRequest":return await this.onSessionRequest({topic:r,payload:i,attestation:n,encryptedId:a,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(r,i);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:r,payload:i,attestation:n,encryptedId:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}}),P(this,"onRelayEventResponse",async s=>{const{topic:r,payload:i,transportType:n}=s,o=(await this.client.core.history.get(r,i.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(r,i,n);case"wc_sessionSettle":return this.onSessionSettleResponse(r,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(r,i);case"wc_sessionExtend":return this.onSessionExtendResponse(r,i);case"wc_sessionPing":return this.onSessionPingResponse(r,i);case"wc_sessionRequest":return this.onSessionRequestResponse(r,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(r,i);default:return this.client.logger.info(`Unsupported response method ${o}`)}}),P(this,"onRelayEventUnknownPayload",s=>{const{topic:r}=s,{message:i}=R("MISSING_OR_INVALID",`Decoded payload on topic ${r} is not identifiable as a JSON-RPC request or a response.`);throw new Error(i)}),P(this,"shouldIgnorePairingRequest",s=>{const{topic:r,requestMethod:i}=s,n=this.expectedPairingMethodMap.get(r);return!n||n.includes(i)?!1:!!(n.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)}),P(this,"onSessionProposeRequest",async s=>{const{topic:r,payload:i,attestation:n,encryptedId:o}=s,{params:a,id:c}=i;try{const l=this.client.core.eventClient.getEvent({topic:r});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),l?.setError(ss.proposal_listener_not_found)),this.isValidConnect(be({},i.params));const u=a.expiryTimestamp||De(Be.wc_sessionPropose.req.ttl),h=be({id:c,pairingTopic:r,expiryTimestamp:u},a);await this.setProposal(c,h);const d=await this.getVerifyContext({attestationId:n,hash:Ht(JSON.stringify(i)),encryptedId:o,metadata:h.proposer.metadata});l?.addTrace(Ft.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:h,verifyContext:d})}catch(l){await this.sendError({id:c,topic:r,error:l,rpcOpts:Be.wc_sessionPropose.autoReject}),this.client.logger.error(l)}}),P(this,"onSessionProposeResponse",async(s,r,i)=>{const{id:n}=r;if(ts(r)){const{result:o}=r;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(n);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const l=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:l});const u=await this.client.core.crypto.generateSharedKey(c,l);this.pendingSessions.set(n,{sessionTopic:u,pairingTopic:s,proposalId:n,publicKey:c});const h=await this.client.core.relayer.subscribe(u,{transportType:i});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:h}),await this.client.core.pairing.activate({topic:s})}else if(Wt(r)){await this.client.proposal.delete(n,we("USER_DISCONNECTED"));const o=pe("session_connect",n);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(o,{error:r.error})}}),P(this,"onSessionSettleRequest",async(s,r)=>{const{id:i,params:n}=r;try{this.isValidSessionSettleRequest(n);const{relay:o,controller:a,expiry:c,namespaces:l,sessionProperties:u,scopedProperties:h,sessionConfig:d}=r.params,m=[...this.pendingSessions.values()].find(f=>f.sessionTopic===s);if(!m)return this.client.logger.error(`Pending session not found for topic ${s}`);const w=this.client.proposal.get(m.proposalId),g=et(be(be(be({topic:s,relay:o,expiry:c,namespaces:l,acknowledged:!0,pairingTopic:m.pairingTopic,requiredNamespaces:w.requiredNamespaces,optionalNamespaces:w.optionalNamespaces,controller:a.publicKey,self:{publicKey:m.publicKey,metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},u&&{sessionProperties:u}),h&&{scopedProperties:h}),d&&{sessionConfig:d}),{transportType:Ne.relay});await this.client.session.set(g.topic,g),await this.setExpiry(g.topic,g.expiry),await this.client.core.pairing.updateMetadata({topic:m.pairingTopic,metadata:g.peer.metadata}),this.client.events.emit("session_connect",{session:g}),this.events.emit(pe("session_connect",m.proposalId),{session:g}),this.pendingSessions.delete(m.proposalId),this.deleteProposal(m.proposalId,!1),this.cleanupDuplicatePairings(g),await this.sendResult({id:r.id,topic:s,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:i,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"onSessionSettleResponse",async(s,r)=>{const{id:i}=r;ts(r)?(await this.client.session.update(s,{acknowledged:!0}),this.events.emit(pe("session_approve",i),{})):Wt(r)&&(await this.client.session.delete(s,we("USER_DISCONNECTED")),this.events.emit(pe("session_approve",i),{error:r.error}))}),P(this,"onSessionUpdateRequest",async(s,r)=>{const{params:i,id:n}=r;try{const o=`${s}_session_update`,a=Qr.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.warn(`Discarding out of sync request - ${n}`),this.sendError({id:n,topic:s,error:we("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(be({topic:s},i));try{Qr.set(o,n),await this.client.session.update(s,{namespaces:i.namespaces}),await this.sendResult({id:n,topic:s,result:!0,throwOnFailedPublish:!0})}catch(c){throw Qr.delete(o),c}this.client.events.emit("session_update",{id:n,topic:s,params:i})}catch(o){await this.sendError({id:n,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"isRequestOutOfSync",(s,r)=>r.toString().slice(0,-3){const{id:i}=r,n=pe("session_update",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);ts(r)?this.events.emit(pe("session_update",i),{}):Wt(r)&&this.events.emit(pe("session_update",i),{error:r.error})}),P(this,"onSessionExtendRequest",async(s,r)=>{const{id:i}=r;try{this.isValidExtend({topic:s}),await this.setExpiry(s,De(cr)),await this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:i,topic:s})}catch(n){await this.sendError({id:i,topic:s,error:n}),this.client.logger.error(n)}}),P(this,"onSessionExtendResponse",(s,r)=>{const{id:i}=r,n=pe("session_extend",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);ts(r)?this.events.emit(pe("session_extend",i),{}):Wt(r)&&this.events.emit(pe("session_extend",i),{error:r.error})}),P(this,"onSessionPingRequest",async(s,r)=>{const{id:i}=r;try{this.isValidPing({topic:s}),await this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:s})}catch(n){await this.sendError({id:i,topic:s,error:n}),this.client.logger.error(n)}}),P(this,"onSessionPingResponse",(s,r)=>{const{id:i}=r,n=pe("session_ping",i);setTimeout(()=>{if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners 2176`);ts(r)?this.events.emit(pe("session_ping",i),{}):Wt(r)&&this.events.emit(pe("session_ping",i),{error:r.error})},500)}),P(this,"onSessionDeleteRequest",async(s,r)=>{const{id:i}=r;try{this.isValidDisconnect({topic:s,reason:r.params}),Promise.all([new Promise(n=>{this.client.core.relayer.once(qe.publish,async()=>{n(await this.deleteSession({topic:s,id:i}))})}),this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:s,error:we("USER_DISCONNECTED")})]).catch(n=>this.client.logger.error(n))}catch(n){this.client.logger.error(n)}}),P(this,"onSessionRequest",async s=>{var r,i,n;const{topic:o,payload:a,attestation:c,encryptedId:l,transportType:u}=s,{id:h,params:d}=a;try{await this.isValidRequest(be({topic:o},d));const m=this.client.session.get(o),w=await this.getVerifyContext({attestationId:c,hash:Ht(JSON.stringify(Bs("wc_sessionRequest",d,h))),encryptedId:l,metadata:m.peer.metadata,transportType:u}),g={id:h,topic:o,params:d,verifyContext:w};await this.setPendingSessionRequest(g),u===Ne.link_mode&&(r=m.peer.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp((i=m.peer.metadata.redirect)==null?void 0:i.universal),(n=this.client.signConfig)!=null&&n.disableRequestQueue?this.emitSessionRequest(g):(this.addSessionRequestToSessionRequestQueue(g),this.processSessionRequestQueue())}catch(m){await this.sendError({id:h,topic:o,error:m}),this.client.logger.error(m)}}),P(this,"onSessionRequestResponse",(s,r)=>{const{id:i}=r,n=pe("session_request",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);ts(r)?this.events.emit(pe("session_request",i),{result:r.result}):Wt(r)&&this.events.emit(pe("session_request",i),{error:r.error})}),P(this,"onSessionEventRequest",async(s,r)=>{const{id:i,params:n}=r;try{const o=`${s}_session_event_${n.event.name}`,a=Qr.get(o);if(a&&this.isRequestOutOfSync(a,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(be({topic:s},n)),this.client.events.emit("session_event",{id:i,topic:s,params:n}),Qr.set(o,i)}catch(o){await this.sendError({id:i,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"onSessionAuthenticateResponse",(s,r)=>{const{id:i}=r;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:s,payload:r}),ts(r)?this.events.emit(pe("session_request",i),{result:r.result}):Wt(r)&&this.events.emit(pe("session_request",i),{error:r.error})}),P(this,"onSessionAuthenticateRequest",async s=>{var r;const{topic:i,payload:n,attestation:o,encryptedId:a,transportType:c}=s;try{const{requester:l,authPayload:u,expiryTimestamp:h}=n.params,d=await this.getVerifyContext({attestationId:o,hash:Ht(JSON.stringify(n)),encryptedId:a,metadata:l.metadata,transportType:c}),m={requester:l,pairingTopic:i,id:n.id,authPayload:u,verifyContext:d,expiryTimestamp:h};await this.setAuthRequest(n.id,{request:m,pairingTopic:i,transportType:c}),c===Ne.link_mode&&(r=l.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:i,params:n.params,id:n.id,verifyContext:d})}catch(l){this.client.logger.error(l);const u=n.params.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),d=this.getAppLinkIfEnabled(n.params.requester.metadata,c),m={type:os,receiverPublicKey:u,senderPublicKey:h};await this.sendError({id:n.id,topic:i,error:l,encodeOpts:m,rpcOpts:Be.wc_sessionAuthenticate.autoReject,appLink:d})}}),P(this,"addSessionRequestToSessionRequestQueue",s=>{this.sessionRequestQueue.queue.push(s)}),P(this,"cleanupAfterResponse",s=>{this.deletePendingSessionRequest(s.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=qt.idle,this.processSessionRequestQueue()},D.toMiliseconds(this.requestQueueDelay))}),P(this,"cleanupPendingSentRequestsForTopic",({topic:s,error:r})=>{const i=this.client.core.history.pending;i.length>0&&i.filter(n=>n.topic===s&&n.request.method==="wc_sessionRequest").forEach(n=>{const o=n.request.id,a=pe("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(pe("session_request",n.request.id),{error:r})})}),P(this,"processSessionRequestQueue",()=>{if(this.sessionRequestQueue.state===qt.active){this.client.logger.info("session request queue is already active.");return}const s=this.sessionRequestQueue.queue[0];if(!s){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=qt.active,this.emitSessionRequest(s)}catch(r){this.client.logger.error(r)}}),P(this,"emitSessionRequest",s=>{this.client.events.emit("session_request",s)}),P(this,"onPairingCreated",s=>{if(s.methods&&this.expectedPairingMethodMap.set(s.topic,s.methods),s.active)return;const r=this.client.proposal.getAll().find(i=>i.pairingTopic===s.topic);r&&this.onSessionProposeRequest({topic:s.topic,payload:Bs("wc_sessionPropose",et(be({},r),{requiredNamespaces:r.requiredNamespaces,optionalNamespaces:r.optionalNamespaces,relays:r.relays,proposer:r.proposer,sessionProperties:r.sessionProperties,scopedProperties:r.scopedProperties}),r.id)})}),P(this,"isValidConnect",async s=>{if(!ct(s)){const{message:l}=R("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(s)}`);throw new Error(l)}const{pairingTopic:r,requiredNamespaces:i,optionalNamespaces:n,sessionProperties:o,scopedProperties:a,relays:c}=s;if(Ge(r)||await this.isValidPairingTopic(r),!Nw(c)){const{message:l}=R("MISSING_OR_INVALID",`connect() relays: ${c}`);throw new Error(l)}if(!Ge(i)&&As(i)!==0){const l="requiredNamespaces are deprecated and are automatically assigned to optionalNamespaces";["fatal","error","silent"].includes(this.client.logger.level)?console.warn(l):this.client.logger.warn(l),this.validateNamespaces(i,"requiredNamespaces")}if(!Ge(n)&&As(n)!==0&&this.validateNamespaces(n,"optionalNamespaces"),Ge(o)||this.validateSessionProps(o,"sessionProperties"),!Ge(a)){this.validateSessionProps(a,"scopedProperties");const l=Object.keys(i||{}).concat(Object.keys(n||{}));if(!Object.keys(a).every(u=>l.includes(u)))throw new Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(a)}, required/optional namespaces: ${JSON.stringify(l)}`)}}),P(this,"validateNamespaces",(s,r)=>{const i=Aw(s,"connect()",r);if(i)throw new Error(i.message)}),P(this,"isValidApprove",async s=>{if(!ct(s))throw new Error(R("MISSING_OR_INVALID",`approve() params: ${s}`).message);const{id:r,namespaces:i,relayProtocol:n,sessionProperties:o,scopedProperties:a}=s;this.checkRecentlyDeleted(r),await this.isValidProposalId(r);const c=this.client.proposal.get(r),l=Qn(i,"approve()");if(l)throw new Error(l.message);const u=Tc(c.requiredNamespaces,i,"approve()");if(u)throw new Error(u.message);if(!xe(n,!0)){const{message:h}=R("MISSING_OR_INVALID",`approve() relayProtocol: ${n}`);throw new Error(h)}if(Ge(o)||this.validateSessionProps(o,"sessionProperties"),!Ge(a)){this.validateSessionProps(a,"scopedProperties");const h=new Set(Object.keys(i));if(!Object.keys(a).every(d=>h.has(d)))throw new Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(a)}, approved namespaces: ${Array.from(h).join(", ")}`)}}),P(this,"isValidReject",async s=>{if(!ct(s)){const{message:n}=R("MISSING_OR_INVALID",`reject() params: ${s}`);throw new Error(n)}const{id:r,reason:i}=s;if(this.checkRecentlyDeleted(r),await this.isValidProposalId(r),!Sw(i)){const{message:n}=R("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw new Error(n)}}),P(this,"isValidSessionSettleRequest",s=>{if(!ct(s)){const{message:l}=R("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${s}`);throw new Error(l)}const{relay:r,controller:i,namespaces:n,expiry:o}=s;if(!Wu(r)){const{message:l}=R("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(l)}const a=yw(i,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=Qn(n,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(ms(o)){const{message:l}=R("EXPIRED","onSessionSettleRequest()");throw new Error(l)}}),P(this,"isValidUpdate",async s=>{if(!ct(s)){const{message:c}=R("MISSING_OR_INVALID",`update() params: ${s}`);throw new Error(c)}const{topic:r,namespaces:i}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const n=this.client.session.get(r),o=Qn(i,"update()");if(o)throw new Error(o.message);const a=Tc(n.requiredNamespaces,i,"update()");if(a)throw new Error(a.message)}),P(this,"isValidExtend",async s=>{if(!ct(s)){const{message:i}=R("MISSING_OR_INVALID",`extend() params: ${s}`);throw new Error(i)}const{topic:r}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r)}),P(this,"isValidRequest",async s=>{if(!ct(s)){const{message:c}=R("MISSING_OR_INVALID",`request() params: ${s}`);throw new Error(c)}const{topic:r,request:i,chainId:n,expiry:o}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const{namespaces:a}=this.client.session.get(r);if(!Oc(a,n)){const{message:c}=R("MISSING_OR_INVALID",`request() chainId: ${n}`);throw new Error(c)}if(!Pw(i)){const{message:c}=R("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw new Error(c)}if(!Tw(a,n,i.method)){const{message:c}=R("MISSING_OR_INVALID",`request() method: ${i.method}`);throw new Error(c)}if(o&&!Uw(o,oo)){const{message:c}=R("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${oo.min} and ${oo.max}`);throw new Error(c)}}),P(this,"isValidRespond",async s=>{var r;if(!ct(s)){const{message:o}=R("MISSING_OR_INVALID",`respond() params: ${s}`);throw new Error(o)}const{topic:i,response:n}=s;try{await this.isValidSessionTopic(i)}catch(o){throw(r=s?.response)!=null&&r.id&&this.cleanupAfterResponse(s),o}if(!kw(n)){const{message:o}=R("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(n)}`);throw new Error(o)}}),P(this,"isValidPing",async s=>{if(!ct(s)){const{message:i}=R("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(i)}const{topic:r}=s;await this.isValidSessionOrPairingTopic(r)}),P(this,"isValidEmit",async s=>{if(!ct(s)){const{message:a}=R("MISSING_OR_INVALID",`emit() params: ${s}`);throw new Error(a)}const{topic:r,event:i,chainId:n}=s;await this.isValidSessionTopic(r);const{namespaces:o}=this.client.session.get(r);if(!Oc(o,n)){const{message:a}=R("MISSING_OR_INVALID",`emit() chainId: ${n}`);throw new Error(a)}if(!Ow(i)){const{message:a}=R("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}if(!xw(o,n,i.name)){const{message:a}=R("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}}),P(this,"isValidDisconnect",async s=>{if(!ct(s)){const{message:i}=R("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(i)}const{topic:r}=s;await this.isValidSessionOrPairingTopic(r)}),P(this,"isValidAuthenticate",s=>{const{chains:r,uri:i,domain:n,nonce:o}=s;if(!Array.isArray(r)||r.length===0)throw new Error("chains is required and must be a non-empty array");if(!xe(i,!1))throw new Error("uri is required parameter");if(!xe(n,!1))throw new Error("domain is required parameter");if(!xe(o,!1))throw new Error("nonce is required parameter");if([...new Set(r.map(c=>Pr(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=Pr(r[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")}),P(this,"getVerifyContext",async s=>{const{attestationId:r,hash:i,encryptedId:n,metadata:o,transportType:a}=s,c={verified:{verifyUrl:o.verifyUrl||wi,validation:"UNKNOWN",origin:o.url||""}};try{if(a===Ne.link_mode){const u=this.getAppLinkIfEnabled(o,a);return c.verified.validation=u&&new URL(u).origin===new URL(o.url).origin?"VALID":"INVALID",c}const l=await this.client.core.verify.resolve({attestationId:r,hash:i,encryptedId:n,verifyUrl:o.verifyUrl});l&&(c.verified.origin=l.origin,c.verified.isScam=l.isScam,c.verified.validation=l.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(c)}`),c}),P(this,"validateSessionProps",(s,r)=>{Object.values(s).forEach((i,n)=>{if(i==null){const{message:o}=R("MISSING_OR_INVALID",`${r} must contain an existing value for each key. Received: ${i} for key ${Object.keys(s)[n]}`);throw new Error(o)}})}),P(this,"getPendingAuthRequest",s=>{const r=this.client.auth.requests.get(s);return typeof r=="object"?r:void 0}),P(this,"addToRecentlyDeleted",(s,r)=>{if(this.recentlyDeletedMap.set(s,r),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let i=0;const n=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(i++>=n)break;this.recentlyDeletedMap.delete(o)}}}),P(this,"checkRecentlyDeleted",s=>{const r=this.recentlyDeletedMap.get(s);if(r){const{message:i}=R("MISSING_OR_INVALID",`Record was recently deleted - ${r}: ${s}`);throw new Error(i)}}),P(this,"isLinkModeEnabled",(s,r)=>{var i,n,o,a,c,l,u,h,d;return!s||r!==Ne.link_mode?!1:((n=(i=this.client.metadata)==null?void 0:i.redirect)==null?void 0:n.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((l=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:l.universal)!==""&&((u=s?.redirect)==null?void 0:u.universal)!==void 0&&((h=s?.redirect)==null?void 0:h.universal)!==""&&((d=s?.redirect)==null?void 0:d.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(s.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"}),P(this,"getAppLinkIfEnabled",(s,r)=>{var i;return this.isLinkModeEnabled(s,r)?(i=s?.redirect)==null?void 0:i.universal:void 0}),P(this,"handleLinkModeMessage",({url:s})=>{if(!s||!s.includes("wc_ev")||!s.includes("topic"))return;const r=Va(s,"topic")||"",i=decodeURIComponent(Va(s,"wc_ev")||""),n=this.client.session.keys.includes(r);n&&this.client.session.update(r,{transportType:Ne.link_mode}),this.client.core.dispatchEnvelope({topic:r,message:i,sessionExists:n})}),P(this,"registerLinkModeListeners",async()=>{var s;if(sa()||Ss()&&(s=this.client.metadata.redirect)!=null&&s.linkMode){const r=global==null?void 0:global.Linking;if(typeof r<"u"){r.addEventListener("url",this.handleLinkModeMessage,this.client.name);const i=await r.getInitialURL();i&&setTimeout(()=>{this.handleLinkModeMessage({url:i})},50)}}}),P(this,"shouldSetTVF",(s,r)=>{if(!r||s!=="wc_sessionRequest")return!1;const{request:i}=r;return Object.keys(ol).includes(i.method)}),P(this,"getTVFParams",(s,r,i)=>{var n,o;try{const a=r.request.method,c=this.extractTxHashesFromResult(a,i);return et(be({correlationId:s,rpcMethods:[a],chainId:r.chainId},this.isValidContractData(r.request.params)&&{contractAddresses:[(o=(n=r.request.params)==null?void 0:n[0])==null?void 0:o.to]}),{txHashes:c})}catch(a){this.client.logger.warn("Error getting TVF params",a)}return{}}),P(this,"isValidContractData",s=>{var r;if(!s)return!1;try{const i=s?.data||((r=s?.[0])==null?void 0:r.data);if(!i.startsWith("0x"))return!1;const n=i.slice(2);return/^[0-9a-fA-F]*$/.test(n)?n.length%2===0:!1}catch{}return!1}),P(this,"extractTxHashesFromResult",(s,r)=>{try{const i=ol[s];if(typeof r=="string")return[r];const n=r[i.key];if(Is(n))return s==="solana_signAllTransactions"?n.map(o=>tg(o)):n;if(typeof n=="string")return[n]}catch(i){this.client.logger.warn("Error extracting tx hashes from result",i)}return[]})}async processPendingMessageEvents(){try{const e=this.client.session.keys,s=this.client.core.relayer.messages.getWithoutAck(e);for(const[r,i]of Object.entries(s))for(const n of i)try{await this.onProviderMessageEvent({topic:r,message:n,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${r}, message: ${n}`)}}catch(e){this.client.logger.warn("processPendingMessageEvents failed",e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(qe.message,e=>{this.onProviderMessageEvent(e)})}async onRelayMessage(e){const{topic:s,message:r,attestation:i,transportType:n}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(ln)?this.client.auth.authKeys.get(ln):{publicKey:void 0};try{const a=await this.client.core.crypto.decode(s,r,{receiverPublicKey:o,encoding:n===Ne.link_mode?ws:Dt});Zo(a)?(this.client.core.history.set(s,a),await this.onRelayEventRequest({topic:s,payload:a,attestation:i,transportType:n,encryptedId:Ht(r)})):Qo(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:s,payload:a,transportType:n}),this.client.core.history.delete(s,a.id)):await this.onRelayEventUnknownPayload({topic:s,payload:a,transportType:n}),await this.client.core.relayer.messages.ack(s,r)}catch(a){this.client.logger.error(a)}}registerExpirerEvents(){this.client.core.expirer.on(_t.expired,async e=>{const{topic:s,id:r}=cu(e.target);if(r&&this.client.pendingRequest.keys.includes(r))return await this.deletePendingSessionRequest(r,R("EXPIRED"),!0);if(r&&this.client.auth.requests.keys.includes(r))return await this.deletePendingAuthRequest(r,R("EXPIRED"),!0);s?this.client.session.keys.includes(s)&&(await this.deleteSession({topic:s,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:s})):r&&(await this.deleteProposal(r,!0),this.client.events.emit("proposal_expire",{id:r}))})}registerPairingEvents(){this.client.core.pairing.events.on(Ls.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Ls.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!xe(e,!1)){const{message:s}=R("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(s)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(s)}if(ms(this.client.core.pairing.pairings.get(e).expiry)){const{message:s}=R("EXPIRED",`pairing topic: ${e}`);throw new Error(s)}}async isValidSessionTopic(e){if(!xe(e,!1)){const{message:s}=R("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(s)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(s)}if(ms(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:s}=R("EXPIRED",`session topic: ${e}`);throw new Error(s)}if(!this.client.core.crypto.keychain.has(e)){const{message:s}=R("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(s)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(xe(e,!1)){const{message:s}=R("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(s)}else{const{message:s}=R("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(s)}}async isValidProposalId(e){if(!_w(e)){const{message:s}=R("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(s)}if(!this.client.proposal.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(s)}if(ms(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:s}=R("EXPIRED",`proposal id: ${e}`);throw new Error(s)}}}class W0 extends er{constructor(e,s){super(e,s,S0,ua),this.core=e,this.logger=s}}let z0=class extends er{constructor(e,s){super(e,s,P0,ua),this.core=e,this.logger=s}};class H0 extends er{constructor(e,s){super(e,s,O0,ua,r=>r.id),this.core=e,this.logger=s}}class V0 extends er{constructor(e,s){super(e,s,R0,$n,()=>ln),this.core=e,this.logger=s}}class K0 extends er{constructor(e,s){super(e,s,U0,$n),this.core=e,this.logger=s}}class G0 extends er{constructor(e,s){super(e,s,D0,$n,r=>r.id),this.core=e,this.logger=s}}var J0=Object.defineProperty,Y0=(t,e,s)=>e in t?J0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ao=(t,e,s)=>Y0(t,typeof e!="symbol"?e+"":e,s);class X0{constructor(e,s){this.core=e,this.logger=s,ao(this,"authKeys"),ao(this,"pairingTopics"),ao(this,"requests"),this.authKeys=new V0(this.core,this.logger),this.pairingTopics=new K0(this.core,this.logger),this.requests=new G0(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}var Z0=Object.defineProperty,Q0=(t,e,s)=>e in t?Z0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ne=(t,e,s)=>Q0(t,typeof e!="symbol"?e+"":e,s);let eE=class lh extends lp{constructor(e){super(e),ne(this,"protocol",oh),ne(this,"version",ah),ne(this,"name",no.name),ne(this,"metadata"),ne(this,"core"),ne(this,"logger"),ne(this,"events",new Ys.EventEmitter),ne(this,"engine"),ne(this,"session"),ne(this,"proposal"),ne(this,"pendingRequest"),ne(this,"auth"),ne(this,"signConfig"),ne(this,"on",(r,i)=>this.events.on(r,i)),ne(this,"once",(r,i)=>this.events.once(r,i)),ne(this,"off",(r,i)=>this.events.off(r,i)),ne(this,"removeListener",(r,i)=>this.events.removeListener(r,i)),ne(this,"removeAllListeners",r=>this.events.removeAllListeners(r)),ne(this,"connect",async r=>{try{return await this.engine.connect(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"pair",async r=>{try{return await this.engine.pair(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"approve",async r=>{try{return await this.engine.approve(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"reject",async r=>{try{return await this.engine.reject(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"update",async r=>{try{return await this.engine.update(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"extend",async r=>{try{return await this.engine.extend(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"request",async r=>{try{return await this.engine.request(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"respond",async r=>{try{return await this.engine.respond(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"ping",async r=>{try{return await this.engine.ping(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"emit",async r=>{try{return await this.engine.emit(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"disconnect",async r=>{try{return await this.engine.disconnect(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"find",r=>{try{return this.engine.find(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"getPendingSessionRequests",()=>{try{return this.engine.getPendingSessionRequests()}catch(r){throw this.logger.error(r.message),r}}),ne(this,"authenticate",async(r,i)=>{try{return await this.engine.authenticate(r,i)}catch(n){throw this.logger.error(n.message),n}}),ne(this,"formatAuthMessage",r=>{try{return this.engine.formatAuthMessage(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"approveSessionAuthenticate",async r=>{try{return await this.engine.approveSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"rejectSessionAuthenticate",async r=>{try{return await this.engine.rejectSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),this.name=e?.name||no.name,this.metadata=ff(e?.metadata),this.signConfig=e?.signConfig;const s=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:Xo(Ti({level:e?.logger||no.logger}));this.core=e?.core||new _0(e),this.logger=st(s,this.name),this.session=new z0(this.core,this.logger),this.proposal=new W0(this.core,this.logger),this.pendingRequest=new H0(this.core,this.logger),this.engine=new F0(this),this.auth=new X0(this.core,this.logger)}static async init(e){const s=new lh(e);return await s.initialize(),s}get context(){return bt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info("SignClient Initialization Success"),setTimeout(()=>{this.engine.processRelayMessageCache()},D.toMiliseconds(D.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}};const cl="error",tE="wss://relay.walletconnect.org",sE="wc",rE="universal_provider",Zi=`${sE}@2:${rE}:`,uh="https://rpc.walletconnect.org/v1/",Er="generic",iE=`${uh}bundler`,kt={DEFAULT_CHAIN_CHANGED:"default_chain_changed"};function nE(){}function ha(t){return t==null||typeof t!="object"&&typeof t!="function"}function da(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function oE(t){if(ha(t))return t;if(Array.isArray(t)||da(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);const e=Object.getPrototypeOf(t),s=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new s(t);if(t instanceof RegExp){const r=new s(t);return r.lastIndex=t.lastIndex,r}if(t instanceof DataView)return new s(t.buffer.slice(0));if(t instanceof Error){const r=new s(t.message);return r.stack=t.stack,r.name=t.name,r.cause=t.cause,r}if(typeof File<"u"&&t instanceof File)return new s([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){const r=Object.create(e);return Object.assign(r,t)}return t}function ll(t){return typeof t=="object"&&t!==null}function hh(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function dh(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const aE="[object RegExp]",ph="[object String]",fh="[object Number]",gh="[object Boolean]",mh="[object Arguments]",cE="[object Symbol]",lE="[object Date]",uE="[object Map]",hE="[object Set]",dE="[object Array]",pE="[object ArrayBuffer]",fE="[object Object]",gE="[object DataView]",mE="[object Uint8Array]",wE="[object Uint8ClampedArray]",yE="[object Uint16Array]",bE="[object Uint32Array]",vE="[object Int8Array]",EE="[object Int16Array]",CE="[object Int32Array]",IE="[object Float32Array]",AE="[object Float64Array]";function NE(t,e){return Sr(t,void 0,t,new Map,e)}function Sr(t,e,s,r=new Map,i=void 0){const n=i?.(t,e,s,r);if(n!=null)return n;if(ha(t))return t;if(r.has(t))return r.get(t);if(Array.isArray(t)){const o=new Array(t.length);r.set(t,o);for(let a=0;a{if(typeof t=="object")switch(Object.prototype.toString.call(t)){case fh:case ph:case gh:{const o=new t.constructor(t?.valueOf());return Ms(o,t),o}case mh:{const o={};return Ms(o,t),o.length=t.length,o[Symbol.iterator]=t[Symbol.iterator],o}default:return}})}function ul(t){return SE(t)}function hl(t){return t!==null&&typeof t=="object"&&dh(t)==="[object Arguments]"}function PE(t){return da(t)}function kE(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){const s=t[Symbol.toStringTag];return s==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${s}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function OE(t,...e){const s=e.slice(0,-1),r=e[e.length-1];let i=t;for(let n=0;ne in t?xE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Qi=(t,e)=>{for(var s in e||(e={}))UE.call(e,s)&&pl(t,s,e[s]);if(dl)for(var s of dl(e))DE.call(e,s)&&pl(t,s,e[s]);return t},LE=(t,e)=>$E(t,RE(e));function yt(t,e,s){var r;const i=Pr(t);return((r=e.rpcMap)==null?void 0:r[i.reference])||`${uh}?chainId=${i.namespace}:${i.reference}&projectId=${s}`}function tr(t){return t.includes(":")?t.split(":")[1]:t}function wh(t){return t.map(e=>`${e.split(":")[0]}:${e.split(":")[1]}`)}function ME(t,e){const s=Object.keys(e.namespaces).filter(i=>i.includes(t));if(!s.length)return[];const r=[];return s.forEach(i=>{const n=e.namespaces[i].accounts;r.push(...n)}),r}function en(t={},e={}){const s=fl(t),r=fl(e);return TE(s,r)}function fl(t){var e,s,r,i,n;const o={};if(!As(t))return o;for(const[a,c]of Object.entries(t)){const l=Tn(a)?[a]:c.chains,u=c.methods||[],h=c.events||[],d=c.rpcMap||{},m=_r(a);o[m]=LE(Qi(Qi({},o[m]),c),{chains:Kt(l,(e=o[m])==null?void 0:e.chains),methods:Kt(u,(s=o[m])==null?void 0:s.methods),events:Kt(h,(r=o[m])==null?void 0:r.events)}),(As(d)||As(((i=o[m])==null?void 0:i.rpcMap)||{}))&&(o[m].rpcMap=Qi(Qi({},d),(n=o[m])==null?void 0:n.rpcMap))}return o}function gl(t){return t.includes(":")?t.split(":")[2]:t}function ml(t){const e={};for(const[s,r]of Object.entries(t)){const i=r.methods||[],n=r.events||[],o=r.accounts||[],a=Tn(s)?[s]:r.chains?r.chains:wh(r.accounts);e[s]={chains:a,methods:i,events:n,accounts:o}}return e}function co(t){return typeof t=="number"?t:t.includes("0x")?parseInt(t,16):(t=t.includes(":")?t.split(":")[1]:t,isNaN(Number(t))?t:Number(t))}const yh={},ue=t=>yh[t],lo=(t,e)=>{yh[t]=e};var BE=Object.defineProperty,jE=(t,e,s)=>e in t?BE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,lr=(t,e,s)=>jE(t,typeof e!="symbol"?e+"":e,s);class qE{constructor(e){lr(this,"name","polkadot"),lr(this,"client"),lr(this,"httpProviders"),lr(this,"events"),lr(this,"namespace"),lr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=tr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var FE=Object.defineProperty,WE=Object.defineProperties,zE=Object.getOwnPropertyDescriptors,wl=Object.getOwnPropertySymbols,HE=Object.prototype.hasOwnProperty,VE=Object.prototype.propertyIsEnumerable,Ko=(t,e,s)=>e in t?FE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,yl=(t,e)=>{for(var s in e||(e={}))HE.call(e,s)&&Ko(t,s,e[s]);if(wl)for(var s of wl(e))VE.call(e,s)&&Ko(t,s,e[s]);return t},bl=(t,e)=>WE(t,zE(e)),ur=(t,e,s)=>Ko(t,typeof e!="symbol"?e+"":e,s);class KE{constructor(e){ur(this,"name","eip155"),ur(this,"client"),ur(this,"chainId"),ur(this,"namespace"),ur(this,"httpProviders"),ur(this,"events"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(e){switch(e.request.method){case"eth_requestAccounts":return this.getAccounts();case"eth_accounts":return this.getAccounts();case"wallet_switchEthereumChain":return await this.handleSwitchChain(e);case"eth_chainId":return parseInt(this.getDefaultChain());case"wallet_getCapabilities":return await this.getCapabilities(e);case"wallet_getCallsStatus":return await this.getCallStatus(e)}return this.namespace.methods.includes(e.request.method)?await this.client.request(e):this.getHttpProvider().request(e.request)}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(parseInt(e),s),this.chainId=parseInt(e),this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}createHttpProvider(e,s){const r=s||yt(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=parseInt(tr(s));e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}getHttpProvider(){const e=this.chainId,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}async handleSwitchChain(e){var s,r;let i=e.request.params?(s=e.request.params[0])==null?void 0:s.chainId:"0x0";i=i.startsWith("0x")?i:`0x${i}`;const n=parseInt(i,16);if(this.isChainApproved(n))this.setDefaultChain(`${n}`);else if(this.namespace.methods.includes("wallet_switchEthereumChain"))await this.client.request({topic:e.topic,request:{method:e.request.method,params:[{chainId:i}]},chainId:(r=this.namespace.chains)==null?void 0:r[0]}),this.setDefaultChain(`${n}`);else throw new Error(`Failed to switch to chain 'eip155:${n}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(e){return this.namespace.chains.includes(`${this.name}:${e}`)}async getCapabilities(e){var s,r,i,n,o;const a=(r=(s=e.request)==null?void 0:s.params)==null?void 0:r[0],c=((n=(i=e.request)==null?void 0:i.params)==null?void 0:n[1])||[],l=`${a}${c.join(",")}`;if(!a)throw new Error("Missing address parameter in `wallet_getCapabilities` request");const u=this.client.session.get(e.topic),h=((o=u?.sessionProperties)==null?void 0:o.capabilities)||{};if(h!=null&&h[l])return h?.[l];const d=await this.client.request(e);try{await this.client.session.update(e.topic,{sessionProperties:bl(yl({},u.sessionProperties||{}),{capabilities:bl(yl({},h||{}),{[l]:d})})})}catch(m){console.warn("Failed to update session with capabilities",m)}return d}async getCallStatus(e){var s,r;const i=this.client.session.get(e.topic),n=(s=i.sessionProperties)==null?void 0:s.bundler_name;if(n){const a=this.getBundlerUrl(e.chainId,n);try{return await this.getUserOperationReceipt(a,e)}catch(c){console.warn("Failed to fetch call status from bundler",c,a)}}const o=(r=i.sessionProperties)==null?void 0:r.bundler_url;if(o)try{return await this.getUserOperationReceipt(o,e)}catch(a){console.warn("Failed to fetch call status from custom bundler",a,o)}if(this.namespace.methods.includes(e.request.method))return await this.client.request(e);throw new Error("Fetching call status not approved by the wallet.")}async getUserOperationReceipt(e,s){var r;const i=new URL(e),n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Bs("eth_getUserOperationReceipt",[(r=s.request.params)==null?void 0:r[0]]))});if(!n.ok)throw new Error(`Failed to fetch user operation receipt - ${n.status}`);return await n.json()}getBundlerUrl(e,s){return`${iE}?projectId=${this.client.core.projectId}&chainId=${e}&bundler=${s}`}}var GE=Object.defineProperty,JE=(t,e,s)=>e in t?GE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,hr=(t,e,s)=>JE(t,typeof e!="symbol"?e+"":e,s);class YE{constructor(e){hr(this,"name","solana"),hr(this,"client"),hr(this,"httpProviders"),hr(this,"events"),hr(this,"namespace"),hr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=tr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var XE=Object.defineProperty,ZE=(t,e,s)=>e in t?XE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,dr=(t,e,s)=>ZE(t,typeof e!="symbol"?e+"":e,s);class QE{constructor(e){dr(this,"name","cosmos"),dr(this,"client"),dr(this,"httpProviders"),dr(this,"events"),dr(this,"namespace"),dr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=tr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var eC=Object.defineProperty,tC=(t,e,s)=>e in t?eC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,pr=(t,e,s)=>tC(t,typeof e!="symbol"?e+"":e,s);class sC{constructor(e){pr(this,"name","algorand"),pr(this,"client"),pr(this,"httpProviders"),pr(this,"events"),pr(this,"namespace"),pr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(!this.httpProviders[e]){const r=s||yt(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;e[s]=this.createHttpProvider(s,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);return typeof r>"u"?void 0:new Pt(new Lt(r,ue("disableProviderPing")))}}var rC=Object.defineProperty,iC=(t,e,s)=>e in t?rC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,fr=(t,e,s)=>iC(t,typeof e!="symbol"?e+"":e,s);class nC{constructor(e){fr(this,"name","cip34"),fr(this,"client"),fr(this,"httpProviders"),fr(this,"events"),fr(this,"namespace"),fr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{const r=this.getCardanoRPCUrl(s),i=tr(s);e[i]=this.createHttpProvider(i,r)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}getCardanoRPCUrl(e){const s=this.namespace.rpcMap;if(s)return s[e]}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||this.getCardanoRPCUrl(e);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var oC=Object.defineProperty,aC=(t,e,s)=>e in t?oC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,gr=(t,e,s)=>aC(t,typeof e!="symbol"?e+"":e,s);class cC{constructor(e){gr(this,"name","elrond"),gr(this,"client"),gr(this,"httpProviders"),gr(this,"events"),gr(this,"namespace"),gr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=tr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var lC=Object.defineProperty,uC=(t,e,s)=>e in t?lC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,mr=(t,e,s)=>uC(t,typeof e!="symbol"?e+"":e,s);class hC{constructor(e){mr(this,"name","multiversx"),mr(this,"client"),mr(this,"httpProviders"),mr(this,"events"),mr(this,"namespace"),mr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=tr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var dC=Object.defineProperty,pC=(t,e,s)=>e in t?dC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,wr=(t,e,s)=>pC(t,typeof e!="symbol"?e+"":e,s);class fC{constructor(e){wr(this,"name","near"),wr(this,"client"),wr(this,"httpProviders"),wr(this,"events"),wr(this,"namespace"),wr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(this.chainId=e,!this.httpProviders[e]){const r=s||yt(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;e[s]=this.createHttpProvider(s,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace);return typeof r>"u"?void 0:new Pt(new Lt(r,ue("disableProviderPing")))}}var gC=Object.defineProperty,mC=(t,e,s)=>e in t?gC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,yr=(t,e,s)=>mC(t,typeof e!="symbol"?e+"":e,s);class wC{constructor(e){yr(this,"name","tezos"),yr(this,"client"),yr(this,"httpProviders"),yr(this,"events"),yr(this,"namespace"),yr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(this.chainId=e,!this.httpProviders[e]){const r=s||yt(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{e[s]=this.createHttpProvider(s)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace);return typeof r>"u"?void 0:new Pt(new Lt(r))}}var yC=Object.defineProperty,bC=(t,e,s)=>e in t?yC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,br=(t,e,s)=>bC(t,typeof e!="symbol"?e+"":e,s);class vC{constructor(e){br(this,"name",Er),br(this,"client"),br(this,"httpProviders"),br(this,"events"),br(this,"namespace"),br(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(e.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(e.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(e.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(e.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider(e.chainId).request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(kt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){var e,s;const r={};return(s=(e=this.namespace)==null?void 0:e.accounts)==null||s.forEach(i=>{const n=Pr(i);r[`${n.namespace}:${n.reference}`]=this.createHttpProvider(i)}),r}getHttpProvider(e){const s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||yt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Pt(new Lt(r,ue("disableProviderPing")))}}var EC=Object.defineProperty,CC=Object.defineProperties,IC=Object.getOwnPropertyDescriptors,vl=Object.getOwnPropertySymbols,AC=Object.prototype.hasOwnProperty,NC=Object.prototype.propertyIsEnumerable,Go=(t,e,s)=>e in t?EC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,tn=(t,e)=>{for(var s in e||(e={}))AC.call(e,s)&&Go(t,s,e[s]);if(vl)for(var s of vl(e))NC.call(e,s)&&Go(t,s,e[s]);return t},uo=(t,e)=>CC(t,IC(e)),At=(t,e,s)=>Go(t,typeof e!="symbol"?e+"":e,s);let _C=class bh{constructor(e){At(this,"client"),At(this,"namespaces"),At(this,"optionalNamespaces"),At(this,"sessionProperties"),At(this,"scopedProperties"),At(this,"events",new ea),At(this,"rpcProviders",{}),At(this,"session"),At(this,"providerOpts"),At(this,"logger"),At(this,"uri"),At(this,"disableProviderPing",!1),this.providerOpts=e,this.logger=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:Xo(Ti({level:e?.logger||cl})),this.disableProviderPing=e?.disableProviderPing||!1}static async init(e){const s=new bh(e);return await s.initialize(),s}async request(e,s,r){const[i,n]=this.validateChain(s);if(!this.session)throw new Error("Please call connect() before request()");return await this.getProvider(i).request({request:tn({},e),chainId:`${i}:${n}`,topic:this.session.topic,expiry:r})}sendAsync(e,s,r,i){const n=new Date().getTime();this.request(e,r,i).then(o=>s(null,In(n,o))).catch(o=>s(o,void 0))}async enable(){if(!this.client)throw new Error("Sign Client not initialized");return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){var e;if(!this.session)throw new Error("Please call connect() before enable()");await this.client.disconnect({topic:(e=this.session)==null?void 0:e.topic,reason:we("USER_DISCONNECTED")}),await this.cleanup()}async connect(e){if(!this.client)throw new Error("Sign Client not initialized");if(this.setNamespaces(e),await this.cleanupPendingPairings(),!e.skipPairing)return await this.pair(e.pairingTopic)}async authenticate(e,s){if(!this.client)throw new Error("Sign Client not initialized");this.setNamespaces(e),await this.cleanupPendingPairings();const{uri:r,response:i}=await this.client.authenticate(e,s);r&&(this.uri=r,this.events.emit("display_uri",r));const n=await i();if(this.session=n.session,this.session){const o=ml(this.session.namespaces);this.namespaces=en(this.namespaces,o),await this.persist("namespaces",this.namespaces),this.onConnect()}return n}on(e,s){this.events.on(e,s)}once(e,s){this.events.once(e,s)}removeListener(e,s){this.events.removeListener(e,s)}off(e,s){this.events.off(e,s)}get isWalletConnect(){return!0}async pair(e){const{uri:s,approval:r}=await this.client.connect({pairingTopic:e,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});s&&(this.uri=s,this.events.emit("display_uri",s));const i=await r();this.session=i;const n=ml(i.namespaces);return this.namespaces=en(this.namespaces,n),await this.persist("namespaces",this.namespaces),await this.persist("optionalNamespaces",this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(e,s){try{if(!this.session)return;const[r,i]=this.validateChain(e),n=this.getProvider(r);n.name===Er?n.setDefaultChain(`${r}:${i}`,s):n.setDefaultChain(i,s)}catch(r){if(!/Please call connect/.test(r.message))throw r}}async cleanupPendingPairings(e={}){this.logger.info("Cleaning up inactive pairings...");const s=this.client.pairing.getAll();if(Is(s)){for(const r of s)e.deletePairings?this.client.core.expirer.set(r.topic,0):await this.client.core.relayer.subscriber.unsubscribe(r.topic);this.logger.info(`Inactive pairings cleared: ${s.length}`)}}abortPairingAttempt(){this.logger.warn("abortPairingAttempt is deprecated. This is now a no-op.")}async checkStorage(){this.namespaces=await this.getFromStore("namespaces")||{},this.optionalNamespaces=await this.getFromStore("optionalNamespaces")||{},this.session&&this.createProviders()}async initialize(){this.logger.trace("Initialized"),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){var e,s;if(this.client=this.providerOpts.client||await eE.init({core:this.providerOpts.core,logger:this.providerOpts.logger||cl,relayUrl:this.providerOpts.relayUrl||tE,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(r){throw this.logger.error("Failed to get session",r),new Error(`The provided session: ${(s=(e=this.providerOpts)==null?void 0:e.session)==null?void 0:s.topic} doesn't exist in the Sign client`)}else{const r=this.client.session.getAll();this.session=r[0]}this.logger.trace("SignClient Initialized")}createProviders(){if(!this.client)throw new Error("Sign Client not initialized");if(!this.session)throw new Error("Session not initialized. Please call connect() before enable()");const e=[...new Set(Object.keys(this.session.namespaces).map(s=>_r(s)))];lo("client",this.client),lo("events",this.events),lo("disableProviderPing",this.disableProviderPing),e.forEach(s=>{if(!this.session)return;const r=ME(s,this.session),i=wh(r),n=en(this.namespaces,this.optionalNamespaces),o=uo(tn({},n[s]),{accounts:r,chains:i});switch(s){case"eip155":this.rpcProviders[s]=new KE({namespace:o});break;case"algorand":this.rpcProviders[s]=new sC({namespace:o});break;case"solana":this.rpcProviders[s]=new YE({namespace:o});break;case"cosmos":this.rpcProviders[s]=new QE({namespace:o});break;case"polkadot":this.rpcProviders[s]=new qE({namespace:o});break;case"cip34":this.rpcProviders[s]=new nC({namespace:o});break;case"elrond":this.rpcProviders[s]=new cC({namespace:o});break;case"multiversx":this.rpcProviders[s]=new hC({namespace:o});break;case"near":this.rpcProviders[s]=new fC({namespace:o});break;case"tezos":this.rpcProviders[s]=new wC({namespace:o});break;default:this.rpcProviders[Er]?this.rpcProviders[Er].updateNamespace(o):this.rpcProviders[Er]=new vC({namespace:o})}})}registerEventListeners(){if(typeof this.client>"u")throw new Error("Sign Client is not initialized");this.client.on("session_ping",e=>{var s;const{topic:r}=e;r===((s=this.session)==null?void 0:s.topic)&&this.events.emit("session_ping",e)}),this.client.on("session_event",e=>{var s;const{params:r,topic:i}=e;if(i!==((s=this.session)==null?void 0:s.topic))return;const{event:n}=r;if(n.name==="accountsChanged"){const o=n.data;o&&Is(o)&&this.events.emit("accountsChanged",o.map(gl))}else if(n.name==="chainChanged"){const o=r.chainId,a=r.event.data,c=_r(o),l=co(o)!==co(a)?`${c}:${co(a)}`:o;this.onChainChanged(l)}else this.events.emit(n.name,n.data);this.events.emit("session_event",e)}),this.client.on("session_update",({topic:e,params:s})=>{var r,i;if(e!==((r=this.session)==null?void 0:r.topic))return;const{namespaces:n}=s,o=(i=this.client)==null?void 0:i.session.get(e);this.session=uo(tn({},o),{namespaces:n}),this.onSessionUpdate(),this.events.emit("session_update",{topic:e,params:s})}),this.client.on("session_delete",async e=>{var s;e.topic===((s=this.session)==null?void 0:s.topic)&&(await this.cleanup(),this.events.emit("session_delete",e),this.events.emit("disconnect",uo(tn({},we("USER_DISCONNECTED")),{data:e.topic})))}),this.on(kt.DEFAULT_CHAIN_CHANGED,e=>{this.onChainChanged(e,!0)})}getProvider(e){return this.rpcProviders[e]||this.rpcProviders[Er]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(e=>{var s;this.getProvider(e).updateNamespace((s=this.session)==null?void 0:s.namespaces[e])})}setNamespaces(e){const{namespaces:s={},optionalNamespaces:r={},sessionProperties:i,scopedProperties:n}=e;this.optionalNamespaces=en(s,r),this.sessionProperties=i,this.scopedProperties=n}validateChain(e){const[s,r]=e?.split(":")||["",""];if(!this.namespaces||!Object.keys(this.namespaces).length)return[s,r];if(s&&!Object.keys(this.namespaces||{}).map(o=>_r(o)).includes(s))throw new Error(`Namespace '${s}' is not configured. Please call connect() first with namespace config.`);if(s&&r)return[s,r];const i=_r(Object.keys(this.namespaces)[0]),n=this.rpcProviders[i].getDefaultChain();return[i,n]}async requestAccounts(){const[e]=this.validateChain();return await this.getProvider(e).requestAccounts()}async onChainChanged(e,s=!1){if(!this.namespaces)return;const[r,i]=this.validateChain(e);if(!i)return;this.updateNamespaceChain(r,i),this.events.emit("chainChanged",i);const n=this.getProvider(r).getDefaultChain();s||this.getProvider(r).setDefaultChain(i),this.emitAccountsChangedOnChainChange({namespace:r,previousChainId:n,newChainId:e}),await this.persist("namespaces",this.namespaces)}emitAccountsChangedOnChainChange({namespace:e,previousChainId:s,newChainId:r}){var i,n;try{if(s===r)return;const o=(n=(i=this.session)==null?void 0:i.namespaces[e])==null?void 0:n.accounts;if(!o)return;const a=o.filter(c=>c.includes(`${r}:`)).map(gl);if(!Is(a))return;this.events.emit("accountsChanged",a)}catch(o){this.logger.warn("Failed to emit accountsChanged on chain change",o)}}updateNamespaceChain(e,s){if(!this.namespaces)return;const r=this.namespaces[e]?e:`${e}:${s}`,i={chains:[],methods:[],events:[],defaultChain:s};this.namespaces[r]?this.namespaces[r]&&(this.namespaces[r].defaultChain=s):this.namespaces[r]=i}onConnect(){this.createProviders(),this.events.emit("connect",{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore("namespaces"),await this.deleteFromStore("optionalNamespaces"),await this.deleteFromStore("sessionProperties"),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(e,s){var r;const i=((r=this.session)==null?void 0:r.topic)||"";await this.client.core.storage.setItem(`${Zi}/${e}${i}`,s)}async getFromStore(e){var s;const r=((s=this.session)==null?void 0:s.topic)||"";return await this.client.core.storage.getItem(`${Zi}/${e}${r}`)}async deleteFromStore(e){var s;const r=((s=this.session)==null?void 0:s.topic)||"";await this.client.core.storage.removeItem(`${Zi}/${e}${r}`)}async cleanupStorage(){var e;try{if(((e=this.client)==null?void 0:e.session.length)>0)return;const s=await this.client.core.storage.getKeys();for(const r of s)r.startsWith(Zi)&&await this.client.core.storage.removeItem(r)}catch(s){this.logger.warn("Failed to cleanup storage",s)}}};function sn(t,e){return j.getConnectorId(t)===e}function SC(t){const e=Array.from(p.state.chains.keys());let s=[];return t?(s.push([t,p.state.chains.get(t)]),sn(t,z.CONNECTOR_ID.WALLET_CONNECT)?e.forEach(r=>{r!==t&&sn(r,z.CONNECTOR_ID.WALLET_CONNECT)&&s.push([r,p.state.chains.get(r)])}):sn(t,z.CONNECTOR_ID.AUTH)&&e.forEach(r=>{r!==t&&sn(r,z.CONNECTOR_ID.AUTH)&&s.push([r,p.state.chains.get(r)])})):s=Array.from(p.state.chains.entries()),s}const fs={EIP155:"eip155",CONNECTOR_TYPE_WALLET_CONNECT:"WALLET_CONNECT",CONNECTOR_TYPE_INJECTED:"INJECTED",CONNECTOR_TYPE_ANNOUNCED:"ANNOUNCED"},vn={NetworkImageIds:{1:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",42161:"3bff954d-5cb0-47a0-9a23-d20192e74600",43114:"30c46e53-e989-45fb-4549-be3bd4eb3b00",56:"93564157-2e8e-4ce7-81df-b264dbee9b00",250:"06b26297-fe0c-4733-5d6b-ffa5498aac00",10:"ab9c186a-c52f-464b-2906-ca59d760a400",137:"41d04d42-da3b-4453-8506-668cc0727900",5e3:"e86fae9b-b770-4eea-e520-150e12c81100",295:"6a97d510-cac8-4e58-c7ce-e8681b044c00",11155111:"e909ea0a-f92a-4512-c8fc-748044ea6800",84532:"a18a7ecd-e307-4360-4746-283182228e00",1301:"4eeea7ef-0014-4649-5d1d-07271a80f600",130:"2257980a-3463-48c6-cbac-a42d2a956e00",10143:"0a728e83-bacb-46db-7844-948f05434900",100:"02b53f6a-e3d4-479e-1cb4-21178987d100",9001:"f926ff41-260d-4028-635e-91913fc28e00",324:"b310f07f-4ef7-49f3-7073-2a0a39685800",314:"5a73b3dd-af74-424e-cae0-0de859ee9400",4689:"34e68754-e536-40da-c153-6ef2e7188a00",1088:"3897a66d-40b9-4833-162f-a2c90531c900",1284:"161038da-44ae-4ec7-1208-0ea569454b00",1285:"f1d73bb6-5450-4e18-38f7-fb6484264a00",7777777:"845c60df-d429-4991-e687-91ae45791600",42220:"ab781bbc-ccc6-418d-d32d-789b15da1f00",8453:"7289c336-3981-4081-c5f4-efc26ac64a00",1313161554:"3ff73439-a619-4894-9262-4470c773a100",2020:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",2021:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",80094:"e329c2c9-59b0-4a02-83e4-212ff3779900",2741:"fc2427d1-5af9-4a9c-8da5-6f94627cd900","5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"a1b58899-f671-4276-6a5e-56ca5bd59700","4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z":"a1b58899-f671-4276-6a5e-56ca5bd59700",EtWTRABZaYq6iMfeYKouRu166VU2xqa1:"a1b58899-f671-4276-6a5e-56ca5bd59700","000000000019d6689c085ae165831e93":"0b4838db-0161-4ffe-022d-532bf03dba00","000000000933ea01ad0ee984209779ba":"39354064-d79b-420b-065d-f980c4b78200"},ConnectorImageIds:{[z.CONNECTOR_ID.COINBASE]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[z.CONNECTOR_ID.COINBASE_SDK]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[z.CONNECTOR_ID.SAFE]:"461db637-8616-43ce-035a-d89b8a1d5800",[z.CONNECTOR_ID.LEDGER]:"54a1aa77-d202-4f8d-0fb2-5d2bb6db0300",[z.CONNECTOR_ID.WALLET_CONNECT]:"ef1a1fcf-7fe8-4d69-bd6d-fda1345b4400",[z.CONNECTOR_ID.INJECTED]:"07ba87ed-43aa-4adf-4540-9e6a2b9cae00"},ConnectorNamesMap:{[z.CONNECTOR_ID.INJECTED]:"Browser Wallet",[z.CONNECTOR_ID.WALLET_CONNECT]:"WalletConnect",[z.CONNECTOR_ID.COINBASE]:"Coinbase",[z.CONNECTOR_ID.COINBASE_SDK]:"Coinbase",[z.CONNECTOR_ID.LEDGER]:"Ledger",[z.CONNECTOR_ID.SAFE]:"Safe"}},pa={getCaipTokens(t){if(!t)return;const e={};return Object.entries(t).forEach(([s,r])=>{e[`${fs.EIP155}:${s}`]=r}),e},isLowerCaseMatch(t,e){return t?.toLowerCase()===e?.toLowerCase()}};new AbortController;const vr={UniversalProviderErrors:{UNAUTHORIZED_DOMAIN_NOT_ALLOWED:{message:"Unauthorized: origin not allowed",alertErrorKey:"INVALID_APP_CONFIGURATION"},JWT_VALIDATION_ERROR:{message:"JWT validation error: JWT Token is not yet valid",alertErrorKey:"JWT_TOKEN_NOT_VALID"},INVALID_KEY:{message:"Unauthorized: invalid key",alertErrorKey:"INVALID_PROJECT_ID"}},ALERT_ERRORS:{SWITCH_NETWORK_NOT_FOUND:{shortMessage:"Network Not Found",longMessage:"Network not found - please make sure it is included in 'networks' array in createAppKit function"},INVALID_APP_CONFIGURATION:{shortMessage:"Invalid App Configuration",longMessage:()=>`Origin ${PC()?window.origin:"unknown"} not found on Allowlist - update configuration on cloud.reown.com`},IFRAME_LOAD_FAILED:{shortMessage:"Network Error - Could not load embedded wallet",longMessage:()=>"There was an issue loading the embedded wallet. Please try again later."},IFRAME_REQUEST_TIMEOUT:{shortMessage:"Embedded Wallet Request Timed Out",longMessage:()=>"There was an issue doing the request to the embedded wallet. Please try again later."},UNVERIFIED_DOMAIN:{shortMessage:"Invalid App Configuration",longMessage:()=>"There was an issue loading the embedded wallet. Please verify that your domain is allowed at cloud.reown.com"},JWT_TOKEN_NOT_VALID:{shortMessage:"Session Expired",longMessage:"Invalid session found on UniversalProvider - please check your time settings and connect again"},INVALID_PROJECT_ID:{shortMessage:"Invalid App Configuration",longMessage:"Invalid Project ID - update configuration"},PROJECT_ID_NOT_CONFIGURED:{shortMessage:"Project ID Not Configured",longMessage:"Project ID Not Configured - update configuration on cloud.reown.com"}}};function PC(){return typeof window<"u"}const kC={createLogger(t,e="error"){const s=Ti({level:e}),{logger:r}=Dl({opts:s});return r.error=(...i)=>{for(const n of i)if(n instanceof Error){t(n,...i);return}t(void 0,...i)},r}},OC="rpc.walletconnect.org";function El(t,e){const s=new URL("https://rpc.walletconnect.org/v1/");return s.searchParams.set("chainId",t),s.searchParams.set("projectId",e),s.toString()}const ho=["near:mainnet","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","eip155:1101","eip155:56","eip155:42161","eip155:7777777","eip155:59144","eip155:324","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","eip155:5000","solana:4sgjmw1sunhzsxgspuhpqldx6wiyjntz","eip155:80084","eip155:5003","eip155:100","eip155:8453","eip155:42220","eip155:1313161555","eip155:17000","eip155:1","eip155:300","eip155:1313161554","eip155:1329","eip155:84532","eip155:421614","eip155:11155111","eip155:8217","eip155:43114","solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z","eip155:999999999","eip155:11155420","eip155:80002","eip155:97","eip155:43113","eip155:137","eip155:10","eip155:1301","bip122:000000000019d6689c085ae165831e93","bip122:000000000933ea01ad0ee984209779ba"],Cr={extendRpcUrlWithProjectId(t,e){let s=!1;try{s=new URL(t).host===OC}catch{s=!1}if(s){const r=new URL(t);return r.searchParams.has("projectId")||r.searchParams.set("projectId",e),r.toString()}return t},isCaipNetwork(t){return"chainNamespace"in t&&"caipNetworkId"in t},getChainNamespace(t){return this.isCaipNetwork(t)?t.chainNamespace:z.CHAIN.EVM},getCaipNetworkId(t){return this.isCaipNetwork(t)?t.caipNetworkId:`${z.CHAIN.EVM}:${t.id}`},getDefaultRpcUrl(t,e,s){const r=t.rpcUrls?.default?.http?.[0];return ho.includes(e)?El(e,s):r||""},extendCaipNetwork(t,{customNetworkImageUrls:e,projectId:s,customRpcUrls:r}){const i=this.getChainNamespace(t),n=this.getCaipNetworkId(t),o=t.rpcUrls.default.http?.[0],a=this.getDefaultRpcUrl(t,n,s),c=t?.rpcUrls?.chainDefault?.http?.[0]||o,l=r?.[n]?.map(d=>d.url)||[],u=[...l,a],h=[...l];return c&&!h.includes(c)&&h.push(c),{...t,chainNamespace:i,caipNetworkId:n,assets:{imageId:vn.NetworkImageIds[t.id],imageUrl:e?.[t.id]},rpcUrls:{...t.rpcUrls,default:{http:u},chainDefault:{http:h}}}},extendCaipNetworks(t,{customNetworkImageUrls:e,projectId:s,customRpcUrls:r}){return t.map(i=>Cr.extendCaipNetwork(i,{customNetworkImageUrls:e,customRpcUrls:r,projectId:s}))},getViemTransport(t,e,s){const r=[];return s?.forEach(i=>{r.push(zi(i.url,i.config))}),ho.includes(t.caipNetworkId)&&r.push(zi(El(t.caipNetworkId,e),{fetchOptions:{headers:{"Content-Type":"text/plain"}}})),t?.rpcUrls?.default?.http?.forEach(i=>{r.push(zi(i))}),Ca(r)},extendWagmiTransports(t,e,s){if(ho.includes(t.caipNetworkId)){const r=this.getDefaultRpcUrl(t,t.caipNetworkId,e);return Ca([s,zi(r)])}return s},getUnsupportedNetwork(t){return{id:t.split(":")[1],caipNetworkId:t,name:z.UNSUPPORTED_NETWORK_NAME,chainNamespace:t.split(":")[0],nativeCurrency:{name:"",decimals:0,symbol:""},rpcUrls:{default:{http:[]}}}},getCaipNetworkFromStorage(t){const e=F.getActiveCaipNetworkId(),s=p.getAllRequestedCaipNetworks(),r=Array.from(p.state.chains?.keys()||[]),i=e?.split(":")[0],n=i?r.includes(i):!1,o=s?.find(c=>c.caipNetworkId===e);return n&&!o&&e?this.getUnsupportedNetwork(e):o||t||s?.[0]}},En={eip155:void 0,solana:void 0,polkadot:void 0,bip122:void 0,cosmos:void 0},at=_e({providers:{...En},providerIds:{...En}}),Se={state:at,subscribeKey(t,e){return Qe(at,t,e)},subscribe(t){return Ze(at,()=>{t(at)})},subscribeProviders(t){return Ze(at.providers,()=>t(at.providers))},setProvider(t,e){e&&(at.providers[t]=zs(e))},getProvider(t){return at.providers[t]},setProviderId(t,e){e&&(at.providerIds[t]=e)},getProviderId(t){if(t)return at.providerIds[t]},reset(){at.providers={...En},at.providerIds={...En}},resetChain(t){at.providers[t]=void 0,at.providerIds[t]=void 0}},TC={VIEW_DIRECTION:{Next:"next",Prev:"prev"},DEFAULT_CONNECT_METHOD_ORDER:["email","social","wallet"],ANIMATION_DURATIONS:{HeaderText:120,ModalHeight:150,ViewTransition:150}},Jo={filterOutDuplicatesByRDNS(t){const e=O.state.enableEIP6963?j.state.connectors:[],s=F.getRecentWallets(),r=e.map(a=>a.info?.rdns).filter(Boolean),i=s.map(a=>a.rdns).filter(Boolean),n=r.concat(i);if(n.includes("io.metamask.mobile")&&X.isMobile()){const a=n.indexOf("io.metamask.mobile");n[a]="io.metamask"}return t.filter(a=>!n.includes(String(a?.rdns)))},filterOutDuplicatesByIds(t){const e=j.state.connectors.filter(a=>a.type==="ANNOUNCED"||a.type==="INJECTED"),s=F.getRecentWallets(),r=e.map(a=>a.explorerId),i=s.map(a=>a.id),n=r.concat(i);return t.filter(a=>!n.includes(a?.id))},filterOutDuplicateWallets(t){const e=this.filterOutDuplicatesByRDNS(t);return this.filterOutDuplicatesByIds(e)},markWalletsAsInstalled(t){const{connectors:e}=j.state,{featuredWalletIds:s}=O.state,r=e.filter(o=>o.type==="ANNOUNCED").reduce((o,a)=>(a.info?.rdns&&(o[a.info.rdns]=!0),o),{});return t.map(o=>({...o,installed:!!o.rdns&&!!r[o.rdns??""]})).sort((o,a)=>{const c=Number(a.installed)-Number(o.installed);if(c!==0)return c;if(s?.length){const l=s.indexOf(o.id),u=s.indexOf(a.id);if(l!==-1&&u!==-1)return l-u;if(l!==-1)return-1;if(u!==-1)return 1}return 0})},getConnectOrderMethod(t,e){const s=t?.connectMethodsOrder||O.state.features?.connectMethodsOrder,r=e||j.state.connectors;if(s)return s;const{injected:i,announced:n}=un.getConnectorsByType(r,V.state.recommended,V.state.featured),o=i.filter(un.showConnector),a=n.filter(un.showConnector);return o.length||a.length?["wallet","email","social"]:TC.DEFAULT_CONNECT_METHOD_ORDER},isExcluded(t){const e=!!t.rdns&&V.state.excludedWallets.some(r=>r.rdns===t.rdns),s=!!t.name&&V.state.excludedWallets.some(r=>pa.isLowerCaseMatch(r.name,t.name));return e||s}},un={getConnectorsByType(t,e,s){const{customWallets:r}=O.state,i=F.getRecentWallets(),n=Jo.filterOutDuplicateWallets(e),o=Jo.filterOutDuplicateWallets(s),a=t.filter(h=>h.type==="MULTI_CHAIN"),c=t.filter(h=>h.type==="ANNOUNCED"),l=t.filter(h=>h.type==="INJECTED"),u=t.filter(h=>h.type==="EXTERNAL");return{custom:r,recent:i,external:u,multiChain:a,announced:c,injected:l,recommended:n,featured:o}},showConnector(t){const e=t.info?.rdns,s=!!e&&V.state.excludedWallets.some(i=>!!i.rdns&&i.rdns===e),r=!!t.name&&V.state.excludedWallets.some(i=>pa.isLowerCaseMatch(i.name,t.name));return!(t.type==="INJECTED"&&(t.name==="Browser Wallet"&&(!X.isMobile()||X.isMobile()&&!e&&!Y.checkInstalled())||s||r)||(t.type==="ANNOUNCED"||t.type==="EXTERNAL")&&(s||r))},getIsConnectedWithWC(){return Array.from(p.state.chains.values()).some(s=>j.getConnectorId(s.namespace)===z.CONNECTOR_ID.WALLET_CONNECT)},getConnectorTypeOrder({recommended:t,featured:e,custom:s,recent:r,announced:i,injected:n,multiChain:o,external:a,overriddenConnectors:c=O.state.features?.connectorTypeOrder??[]}){const l=un.getIsConnectedWithWC(),d=[{type:"walletConnect",isEnabled:O.state.enableWalletConnect&&!l},{type:"recent",isEnabled:r.length>0},{type:"injected",isEnabled:[...n,...i,...o].length>0},{type:"featured",isEnabled:e.length>0},{type:"custom",isEnabled:s&&s.length>0},{type:"external",isEnabled:a.length>0},{type:"recommended",isEnabled:t.length>0}].filter(f=>f.isEnabled),m=new Set(d.map(f=>f.type)),w=c.filter(f=>m.has(f)).map(f=>({type:f,isEnabled:!0})),g=d.filter(({type:f})=>!w.some(({type:b})=>b===f));return Array.from(new Set([...w,...g].map(({type:f})=>f)))}};const hn=globalThis,fa=hn.ShadowRoot&&(hn.ShadyCSS===void 0||hn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ga=Symbol(),Cl=new WeakMap;let vh=class{constructor(e,s,r){if(this._$cssResult$=!0,r!==ga)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=s}get styleSheet(){let e=this.o;const s=this.t;if(fa&&e===void 0){const r=s!==void 0&&s.length===1;r&&(e=Cl.get(s)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&Cl.set(s,e))}return e}toString(){return this.cssText}};const Nt=t=>new vh(typeof t=="string"?t:t+"",void 0,ga),kr=(t,...e)=>{const s=t.length===1?t[0]:e.reduce((r,i,n)=>r+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1],t[0]);return new vh(s,t,ga)},xC=(t,e)=>{if(fa)t.adoptedStyleSheets=e.map(s=>s instanceof CSSStyleSheet?s:s.styleSheet);else for(const s of e){const r=document.createElement("style"),i=hn.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=s.cssText,t.appendChild(r)}},Il=fa?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let s="";for(const r of e.cssRules)s+=r.cssText;return Nt(s)})(t):t;const{is:$C,defineProperty:RC,getOwnPropertyDescriptor:UC,getOwnPropertyNames:DC,getOwnPropertySymbols:LC,getPrototypeOf:MC}=Object,Rn=globalThis,Al=Rn.trustedTypes,BC=Al?Al.emptyScript:"",jC=Rn.reactiveElementPolyfillSupport,bi=(t,e)=>t,Yo={toAttribute(t,e){switch(e){case Boolean:t=t?BC:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=t!==null;break;case Number:s=t===null?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch{s=null}}return s}},Eh=(t,e)=>!$C(t,e),Nl={attribute:!0,type:String,converter:Yo,reflect:!1,useDefault:!1,hasChanged:Eh};Symbol.metadata??=Symbol("metadata"),Rn.litPropertyMetadata??=new WeakMap;let Ir=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,s=Nl){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(e,s),!s.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(e,r,s);i!==void 0&&RC(this.prototype,e,i)}}static getPropertyDescriptor(e,s,r){const{get:i,set:n}=UC(this.prototype,e)??{get(){return this[s]},set(o){this[s]=o}};return{get:i,set(o){const a=i?.call(this);n?.call(this,o),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Nl}static _$Ei(){if(this.hasOwnProperty(bi("elementProperties")))return;const e=MC(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(bi("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(bi("properties"))){const s=this.properties,r=[...DC(s),...LC(s)];for(const i of r)this.createProperty(i,s[i])}const e=this[Symbol.metadata];if(e!==null){const s=litPropertyMetadata.get(e);if(s!==void 0)for(const[r,i]of s)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[s,r]of this.elementProperties){const i=this._$Eu(s,r);i!==void 0&&this._$Eh.set(i,s)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const s=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)s.unshift(Il(i))}else e!==void 0&&s.push(Il(e));return s}static _$Eu(e,s){const r=s.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,s=this.constructor.elementProperties;for(const r of s.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return xC(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,s,r){this._$AK(e,r)}_$ET(e,s){const r=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,r);if(i!==void 0&&r.reflect===!0){const n=(r.converter?.toAttribute!==void 0?r.converter:Yo).toAttribute(s,r.type);this._$Em=e,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(e,s){const r=this.constructor,i=r._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const n=r.getPropertyOptions(i),o=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:Yo;this._$Em=i;const a=o.fromAttribute(s,n.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(e,s,r,i=!1,n){if(e!==void 0){const o=this.constructor;if(i===!1&&(n=this[e]),r??=o.getPropertyOptions(e),!((r.hasChanged??Eh)(n,s)||r.useDefault&&r.reflect&&n===this._$Ej?.get(e)&&!this.hasAttribute(o._$Eu(e,r))))return;this.C(e,s,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,s,{useDefault:r,reflect:i,wrapped:n},o){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,o??s??this[e]),n!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(s=void 0),this._$AL.set(e,s)),i===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(s){Promise.reject(s)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[i,n]of this._$Ep)this[i]=n;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[i,n]of r){const{wrapped:o}=n,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,n,a)}}let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(s)):this._$EM()}catch(r){throw e=!1,this._$EM(),r}e&&this._$AE(s)}willUpdate(e){}_$AE(e){this._$EO?.forEach(s=>s.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(s=>this._$ET(s,this[s])),this._$EM()}updated(e){}firstUpdated(e){}};Ir.elementStyles=[],Ir.shadowRootOptions={mode:"open"},Ir[bi("elementProperties")]=new Map,Ir[bi("finalized")]=new Map,jC?.({ReactiveElement:Ir}),(Rn.reactiveElementVersions??=[]).push("2.1.2");const ma=globalThis,_l=t=>t,Cn=ma.trustedTypes,Sl=Cn?Cn.createPolicy("lit-html",{createHTML:t=>t}):void 0,Ch="$lit$",ys=`lit$${Math.random().toFixed(9).slice(2)}$`,Ih="?"+ys,qC=`<${Ih}>`,Js=document,Pi=()=>Js.createComment(""),ki=t=>t===null||typeof t!="object"&&typeof t!="function",wa=Array.isArray,FC=t=>wa(t)||typeof t?.[Symbol.iterator]=="function",po=`[ +\f\r]`,ii=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Pl=/-->/g,kl=/>/g,xs=RegExp(`>|${po}(?:([^\\s"'>=/]+)(${po}*=${po}*(?:[^ +\f\r"'\`<>=]|("|')|))|$)`,"g"),Ol=/'/g,Tl=/"/g,Ah=/^(?:script|style|textarea|title)$/i,Nh=t=>(e,...s)=>({_$litType$:t,strings:e,values:s}),R1=Nh(1),U1=Nh(2),Br=Symbol.for("lit-noChange"),Fe=Symbol.for("lit-nothing"),xl=new WeakMap,qs=Js.createTreeWalker(Js,129);function _h(t,e){if(!wa(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return Sl!==void 0?Sl.createHTML(e):e}const WC=(t,e)=>{const s=t.length-1,r=[];let i,n=e===2?"":e===3?"":"",o=ii;for(let a=0;a"?(o=i??ii,h=-1):u[1]===void 0?h=-2:(h=o.lastIndex-u[2].length,l=u[1],o=u[3]===void 0?xs:u[3]==='"'?Tl:Ol):o===Tl||o===Ol?o=xs:o===Pl||o===kl?o=ii:(o=xs,i=void 0);const m=o===xs&&t[a+1].startsWith("/>")?" ":"";n+=o===ii?c+qC:h>=0?(r.push(l),c.slice(0,h)+Ch+c.slice(h)+ys+m):c+ys+(h===-2?a:m)}return[_h(t,n+(t[s]||"")+(e===2?"":e===3?"":"")),r]};class Oi{constructor({strings:e,_$litType$:s},r){let i;this.parts=[];let n=0,o=0;const a=e.length-1,c=this.parts,[l,u]=WC(e,s);if(this.el=Oi.createElement(l,r),qs.currentNode=this.el.content,s===2||s===3){const h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(i=qs.nextNode())!==null&&c.length0){i.textContent=Cn?Cn.emptyScript:"";for(let m=0;m2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Fe}_$AI(e,s=this,r,i){const n=this.strings;let o=!1;if(n===void 0)e=jr(this,e,s,0),o=!ki(e)||e!==this._$AH&&e!==Br,o&&(this._$AH=e);else{const a=e;let c,l;for(e=n[0],c=0;c{const r=s?.renderBefore??e;let i=r._$litPart$;if(i===void 0){const n=s?.renderBefore??null;r._$litPart$=i=new qi(e.insertBefore(Pi(),n),n,void 0,s??{})}return i._$AI(t),i};const ya=globalThis;class dn extends Ir{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=YC(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Br}}dn._$litElement$=!0,dn.finalized=!0,ya.litElementHydrateSupport?.({LitElement:dn});const XC=ya.litElementPolyfillSupport;XC?.({LitElement:dn});(ya.litElementVersions??=[]).push("4.2.2");let vi,Ns,_s;function D1(t,e){vi=document.createElement("style"),Ns=document.createElement("style"),_s=document.createElement("style"),vi.textContent=Or(t).core.cssText,Ns.textContent=Or(t).dark.cssText,_s.textContent=Or(t).light.cssText,document.head.appendChild(vi),document.head.appendChild(Ns),document.head.appendChild(_s),Sh(e)}function Sh(t){Ns&&_s&&(t==="light"?(Ns.removeAttribute("media"),_s.media="enabled"):(_s.removeAttribute("media"),Ns.media="enabled"))}function ZC(t){vi&&Ns&&_s&&(vi.textContent=Or(t).core.cssText,Ns.textContent=Or(t).dark.cssText,_s.textContent=Or(t).light.cssText)}function Or(t){return{core:kr` + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); + @keyframes w3m-shake { + 0% { + transform: scale(1) rotate(0deg); + } + 20% { + transform: scale(1) rotate(-1deg); + } + 40% { + transform: scale(1) rotate(1.5deg); + } + 60% { + transform: scale(1) rotate(-1.5deg); + } + 80% { + transform: scale(1) rotate(1deg); + } + 100% { + transform: scale(1) rotate(0deg); + } + } + @keyframes w3m-iframe-fade-out { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } + } + @keyframes w3m-iframe-zoom-in { + 0% { + transform: translateY(50px); + opacity: 0; + } + 100% { + transform: translateY(0px); + opacity: 1; + } + } + @keyframes w3m-iframe-zoom-in-mobile { + 0% { + transform: scale(0.95); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } + } + :root { + --w3m-modal-width: 360px; + --w3m-color-mix-strength: ${Nt(t?.["--w3m-color-mix-strength"]?`${t["--w3m-color-mix-strength"]}%`:"0%")}; + --w3m-font-family: ${Nt(t?.["--w3m-font-family"]||"Inter, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;")}; + --w3m-font-size-master: ${Nt(t?.["--w3m-font-size-master"]||"10px")}; + --w3m-border-radius-master: ${Nt(t?.["--w3m-border-radius-master"]||"4px")}; + --w3m-z-index: ${Nt(t?.["--w3m-z-index"]||999)}; + + --wui-font-family: var(--w3m-font-family); + + --wui-font-size-mini: calc(var(--w3m-font-size-master) * 0.8); + --wui-font-size-micro: var(--w3m-font-size-master); + --wui-font-size-tiny: calc(var(--w3m-font-size-master) * 1.2); + --wui-font-size-small: calc(var(--w3m-font-size-master) * 1.4); + --wui-font-size-paragraph: calc(var(--w3m-font-size-master) * 1.6); + --wui-font-size-medium: calc(var(--w3m-font-size-master) * 1.8); + --wui-font-size-large: calc(var(--w3m-font-size-master) * 2); + --wui-font-size-title-6: calc(var(--w3m-font-size-master) * 2.2); + --wui-font-size-medium-title: calc(var(--w3m-font-size-master) * 2.4); + --wui-font-size-2xl: calc(var(--w3m-font-size-master) * 4); + + --wui-border-radius-5xs: var(--w3m-border-radius-master); + --wui-border-radius-4xs: calc(var(--w3m-border-radius-master) * 1.5); + --wui-border-radius-3xs: calc(var(--w3m-border-radius-master) * 2); + --wui-border-radius-xxs: calc(var(--w3m-border-radius-master) * 3); + --wui-border-radius-xs: calc(var(--w3m-border-radius-master) * 4); + --wui-border-radius-s: calc(var(--w3m-border-radius-master) * 5); + --wui-border-radius-m: calc(var(--w3m-border-radius-master) * 7); + --wui-border-radius-l: calc(var(--w3m-border-radius-master) * 9); + --wui-border-radius-3xl: calc(var(--w3m-border-radius-master) * 20); + + --wui-font-weight-light: 400; + --wui-font-weight-regular: 500; + --wui-font-weight-medium: 600; + --wui-font-weight-bold: 700; + + --wui-letter-spacing-2xl: -1.6px; + --wui-letter-spacing-medium-title: -0.96px; + --wui-letter-spacing-title-6: -0.88px; + --wui-letter-spacing-large: -0.8px; + --wui-letter-spacing-medium: -0.72px; + --wui-letter-spacing-paragraph: -0.64px; + --wui-letter-spacing-small: -0.56px; + --wui-letter-spacing-tiny: -0.48px; + --wui-letter-spacing-micro: -0.2px; + --wui-letter-spacing-mini: -0.16px; + + --wui-spacing-0: 0px; + --wui-spacing-4xs: 2px; + --wui-spacing-3xs: 4px; + --wui-spacing-xxs: 6px; + --wui-spacing-2xs: 7px; + --wui-spacing-xs: 8px; + --wui-spacing-1xs: 10px; + --wui-spacing-s: 12px; + --wui-spacing-m: 14px; + --wui-spacing-l: 16px; + --wui-spacing-2l: 18px; + --wui-spacing-xl: 20px; + --wui-spacing-xxl: 24px; + --wui-spacing-2xl: 32px; + --wui-spacing-3xl: 40px; + --wui-spacing-4xl: 90px; + --wui-spacing-5xl: 95px; + + --wui-icon-box-size-xxs: 14px; + --wui-icon-box-size-xs: 20px; + --wui-icon-box-size-sm: 24px; + --wui-icon-box-size-md: 32px; + --wui-icon-box-size-mdl: 36px; + --wui-icon-box-size-lg: 40px; + --wui-icon-box-size-2lg: 48px; + --wui-icon-box-size-xl: 64px; + + --wui-icon-size-inherit: inherit; + --wui-icon-size-xxs: 10px; + --wui-icon-size-xs: 12px; + --wui-icon-size-sm: 14px; + --wui-icon-size-md: 16px; + --wui-icon-size-mdl: 18px; + --wui-icon-size-lg: 20px; + --wui-icon-size-xl: 24px; + --wui-icon-size-xxl: 28px; + + --wui-wallet-image-size-inherit: inherit; + --wui-wallet-image-size-sm: 40px; + --wui-wallet-image-size-md: 56px; + --wui-wallet-image-size-lg: 80px; + + --wui-visual-size-size-inherit: inherit; + --wui-visual-size-sm: 40px; + --wui-visual-size-md: 55px; + --wui-visual-size-lg: 80px; + + --wui-box-size-md: 100px; + --wui-box-size-lg: 120px; + + --wui-ease-out-power-2: cubic-bezier(0, 0, 0.22, 1); + --wui-ease-out-power-1: cubic-bezier(0, 0, 0.55, 1); + + --wui-ease-in-power-3: cubic-bezier(0.66, 0, 1, 1); + --wui-ease-in-power-2: cubic-bezier(0.45, 0, 1, 1); + --wui-ease-in-power-1: cubic-bezier(0.3, 0, 1, 1); + + --wui-ease-inout-power-1: cubic-bezier(0.45, 0, 0.55, 1); + + --wui-duration-lg: 200ms; + --wui-duration-md: 125ms; + --wui-duration-sm: 75ms; + + --wui-path-network-sm: path( + 'M15.4 2.1a5.21 5.21 0 0 1 5.2 0l11.61 6.7a5.21 5.21 0 0 1 2.61 4.52v13.4c0 1.87-1 3.59-2.6 4.52l-11.61 6.7c-1.62.93-3.6.93-5.22 0l-11.6-6.7a5.21 5.21 0 0 1-2.61-4.51v-13.4c0-1.87 1-3.6 2.6-4.52L15.4 2.1Z' + ); + + --wui-path-network-md: path( + 'M43.4605 10.7248L28.0485 1.61089C25.5438 0.129705 22.4562 0.129705 19.9515 1.61088L4.53951 10.7248C2.03626 12.2051 0.5 14.9365 0.5 17.886V36.1139C0.5 39.0635 2.03626 41.7949 4.53951 43.2752L19.9515 52.3891C22.4562 53.8703 25.5438 53.8703 28.0485 52.3891L43.4605 43.2752C45.9637 41.7949 47.5 39.0635 47.5 36.114V17.8861C47.5 14.9365 45.9637 12.2051 43.4605 10.7248Z' + ); + + --wui-path-network-lg: path( + 'M78.3244 18.926L50.1808 2.45078C45.7376 -0.150261 40.2624 -0.150262 35.8192 2.45078L7.6756 18.926C3.23322 21.5266 0.5 26.3301 0.5 31.5248V64.4752C0.5 69.6699 3.23322 74.4734 7.6756 77.074L35.8192 93.5492C40.2624 96.1503 45.7376 96.1503 50.1808 93.5492L78.3244 77.074C82.7668 74.4734 85.5 69.6699 85.5 64.4752V31.5248C85.5 26.3301 82.7668 21.5266 78.3244 18.926Z' + ); + + --wui-width-network-sm: 36px; + --wui-width-network-md: 48px; + --wui-width-network-lg: 86px; + + --wui-height-network-sm: 40px; + --wui-height-network-md: 54px; + --wui-height-network-lg: 96px; + + --wui-icon-size-network-xs: 12px; + --wui-icon-size-network-sm: 16px; + --wui-icon-size-network-md: 24px; + --wui-icon-size-network-lg: 42px; + + --wui-color-inherit: inherit; + + --wui-color-inverse-100: #fff; + --wui-color-inverse-000: #000; + + --wui-cover: rgba(20, 20, 20, 0.8); + + --wui-color-modal-bg: var(--wui-color-modal-bg-base); + + --wui-color-accent-100: var(--wui-color-accent-base-100); + --wui-color-accent-090: var(--wui-color-accent-base-090); + --wui-color-accent-080: var(--wui-color-accent-base-080); + + --wui-color-success-100: var(--wui-color-success-base-100); + --wui-color-success-125: var(--wui-color-success-base-125); + + --wui-color-warning-100: var(--wui-color-warning-base-100); + + --wui-color-error-100: var(--wui-color-error-base-100); + --wui-color-error-125: var(--wui-color-error-base-125); + + --wui-color-blue-100: var(--wui-color-blue-base-100); + --wui-color-blue-90: var(--wui-color-blue-base-90); + + --wui-icon-box-bg-error-100: var(--wui-icon-box-bg-error-base-100); + --wui-icon-box-bg-blue-100: var(--wui-icon-box-bg-blue-base-100); + --wui-icon-box-bg-success-100: var(--wui-icon-box-bg-success-base-100); + --wui-icon-box-bg-inverse-100: var(--wui-icon-box-bg-inverse-base-100); + + --wui-all-wallets-bg-100: var(--wui-all-wallets-bg-100); + + --wui-avatar-border: var(--wui-avatar-border-base); + + --wui-thumbnail-border: var(--wui-thumbnail-border-base); + + --wui-wallet-button-bg: var(--wui-wallet-button-bg-base); + + --wui-box-shadow-blue: var(--wui-color-accent-glass-020); + } + + @supports (background: color-mix(in srgb, white 50%, black)) { + :root { + --wui-color-modal-bg: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-modal-bg-base) + ); + + --wui-box-shadow-blue: color-mix(in srgb, var(--wui-color-accent-100) 20%, transparent); + + --wui-color-accent-100: color-mix( + in srgb, + var(--wui-color-accent-base-100) 100%, + transparent + ); + --wui-color-accent-090: color-mix( + in srgb, + var(--wui-color-accent-base-100) 90%, + transparent + ); + --wui-color-accent-080: color-mix( + in srgb, + var(--wui-color-accent-base-100) 80%, + transparent + ); + --wui-color-accent-glass-090: color-mix( + in srgb, + var(--wui-color-accent-base-100) 90%, + transparent + ); + --wui-color-accent-glass-080: color-mix( + in srgb, + var(--wui-color-accent-base-100) 80%, + transparent + ); + --wui-color-accent-glass-020: color-mix( + in srgb, + var(--wui-color-accent-base-100) 20%, + transparent + ); + --wui-color-accent-glass-015: color-mix( + in srgb, + var(--wui-color-accent-base-100) 15%, + transparent + ); + --wui-color-accent-glass-010: color-mix( + in srgb, + var(--wui-color-accent-base-100) 10%, + transparent + ); + --wui-color-accent-glass-005: color-mix( + in srgb, + var(--wui-color-accent-base-100) 5%, + transparent + ); + --wui-color-accent-002: color-mix( + in srgb, + var(--wui-color-accent-base-100) 2%, + transparent + ); + + --wui-color-fg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-100) + ); + --wui-color-fg-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-125) + ); + --wui-color-fg-150: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-150) + ); + --wui-color-fg-175: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-175) + ); + --wui-color-fg-200: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-200) + ); + --wui-color-fg-225: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-225) + ); + --wui-color-fg-250: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-250) + ); + --wui-color-fg-275: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-275) + ); + --wui-color-fg-300: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-300) + ); + --wui-color-fg-325: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-325) + ); + --wui-color-fg-350: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-350) + ); + + --wui-color-bg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-100) + ); + --wui-color-bg-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-125) + ); + --wui-color-bg-150: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-150) + ); + --wui-color-bg-175: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-175) + ); + --wui-color-bg-200: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-200) + ); + --wui-color-bg-225: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-225) + ); + --wui-color-bg-250: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-250) + ); + --wui-color-bg-275: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-275) + ); + --wui-color-bg-300: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-300) + ); + --wui-color-bg-325: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-325) + ); + --wui-color-bg-350: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-350) + ); + + --wui-color-success-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-success-base-100) + ); + --wui-color-success-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-success-base-125) + ); + + --wui-color-warning-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-warning-base-100) + ); + + --wui-color-error-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-error-base-100) + ); + --wui-color-blue-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-blue-base-100) + ); + --wui-color-blue-90: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-blue-base-90) + ); + --wui-color-error-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-error-base-125) + ); + + --wui-icon-box-bg-error-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-error-base-100) + ); + --wui-icon-box-bg-accent-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-blue-base-100) + ); + --wui-icon-box-bg-success-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-success-base-100) + ); + --wui-icon-box-bg-inverse-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-inverse-base-100) + ); + + --wui-all-wallets-bg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-all-wallets-bg-100) + ); + + --wui-avatar-border: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-avatar-border-base) + ); + + --wui-thumbnail-border: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-thumbnail-border-base) + ); + + --wui-wallet-button-bg: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-wallet-button-bg-base) + ); + } + } + `,light:kr` + :root { + --w3m-color-mix: ${Nt(t?.["--w3m-color-mix"]||"#fff")}; + --w3m-accent: ${Nt(bs(t,"dark")["--w3m-accent"])}; + --w3m-default: #fff; + + --wui-color-modal-bg-base: ${Nt(bs(t,"dark")["--w3m-background"])}; + --wui-color-accent-base-100: var(--w3m-accent); + + --wui-color-blueberry-100: hsla(230, 100%, 67%, 1); + --wui-color-blueberry-090: hsla(231, 76%, 61%, 1); + --wui-color-blueberry-080: hsla(230, 59%, 55%, 1); + --wui-color-blueberry-050: hsla(231, 100%, 70%, 0.1); + + --wui-color-fg-100: #e4e7e7; + --wui-color-fg-125: #d0d5d5; + --wui-color-fg-150: #a8b1b1; + --wui-color-fg-175: #a8b0b0; + --wui-color-fg-200: #949e9e; + --wui-color-fg-225: #868f8f; + --wui-color-fg-250: #788080; + --wui-color-fg-275: #788181; + --wui-color-fg-300: #6e7777; + --wui-color-fg-325: #9a9a9a; + --wui-color-fg-350: #363636; + + --wui-color-bg-100: #141414; + --wui-color-bg-125: #191a1a; + --wui-color-bg-150: #1e1f1f; + --wui-color-bg-175: #222525; + --wui-color-bg-200: #272a2a; + --wui-color-bg-225: #2c3030; + --wui-color-bg-250: #313535; + --wui-color-bg-275: #363b3b; + --wui-color-bg-300: #3b4040; + --wui-color-bg-325: #252525; + --wui-color-bg-350: #ffffff; + + --wui-color-success-base-100: #26d962; + --wui-color-success-base-125: #30a46b; + + --wui-color-warning-base-100: #f3a13f; + + --wui-color-error-base-100: #f25a67; + --wui-color-error-base-125: #df4a34; + + --wui-color-blue-base-100: rgba(102, 125, 255, 1); + --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); + + --wui-color-success-glass-001: rgba(38, 217, 98, 0.01); + --wui-color-success-glass-002: rgba(38, 217, 98, 0.02); + --wui-color-success-glass-005: rgba(38, 217, 98, 0.05); + --wui-color-success-glass-010: rgba(38, 217, 98, 0.1); + --wui-color-success-glass-015: rgba(38, 217, 98, 0.15); + --wui-color-success-glass-020: rgba(38, 217, 98, 0.2); + --wui-color-success-glass-025: rgba(38, 217, 98, 0.25); + --wui-color-success-glass-030: rgba(38, 217, 98, 0.3); + --wui-color-success-glass-060: rgba(38, 217, 98, 0.6); + --wui-color-success-glass-080: rgba(38, 217, 98, 0.8); + + --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); + + --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); + + --wui-color-error-glass-001: rgba(242, 90, 103, 0.01); + --wui-color-error-glass-002: rgba(242, 90, 103, 0.02); + --wui-color-error-glass-005: rgba(242, 90, 103, 0.05); + --wui-color-error-glass-010: rgba(242, 90, 103, 0.1); + --wui-color-error-glass-015: rgba(242, 90, 103, 0.15); + --wui-color-error-glass-020: rgba(242, 90, 103, 0.2); + --wui-color-error-glass-025: rgba(242, 90, 103, 0.25); + --wui-color-error-glass-030: rgba(242, 90, 103, 0.3); + --wui-color-error-glass-060: rgba(242, 90, 103, 0.6); + --wui-color-error-glass-080: rgba(242, 90, 103, 0.8); + + --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); + + --wui-color-gray-glass-001: rgba(255, 255, 255, 0.01); + --wui-color-gray-glass-002: rgba(255, 255, 255, 0.02); + --wui-color-gray-glass-005: rgba(255, 255, 255, 0.05); + --wui-color-gray-glass-010: rgba(255, 255, 255, 0.1); + --wui-color-gray-glass-015: rgba(255, 255, 255, 0.15); + --wui-color-gray-glass-020: rgba(255, 255, 255, 0.2); + --wui-color-gray-glass-025: rgba(255, 255, 255, 0.25); + --wui-color-gray-glass-030: rgba(255, 255, 255, 0.3); + --wui-color-gray-glass-060: rgba(255, 255, 255, 0.6); + --wui-color-gray-glass-080: rgba(255, 255, 255, 0.8); + --wui-color-gray-glass-090: rgba(255, 255, 255, 0.9); + + --wui-color-dark-glass-100: rgba(42, 42, 42, 1); + + --wui-icon-box-bg-error-base-100: #3c2426; + --wui-icon-box-bg-blue-base-100: #20303f; + --wui-icon-box-bg-success-base-100: #1f3a28; + --wui-icon-box-bg-inverse-base-100: #243240; + + --wui-all-wallets-bg-100: #222b35; + + --wui-avatar-border-base: #252525; + + --wui-thumbnail-border-base: #252525; + + --wui-wallet-button-bg-base: var(--wui-color-bg-125); + + --w3m-card-embedded-shadow-color: rgb(17 17 18 / 25%); + } + `,dark:kr` + :root { + --w3m-color-mix: ${Nt(t?.["--w3m-color-mix"]||"#000")}; + --w3m-accent: ${Nt(bs(t,"light")["--w3m-accent"])}; + --w3m-default: #000; + + --wui-color-modal-bg-base: ${Nt(bs(t,"light")["--w3m-background"])}; + --wui-color-accent-base-100: var(--w3m-accent); + + --wui-color-blueberry-100: hsla(231, 100%, 70%, 1); + --wui-color-blueberry-090: hsla(231, 97%, 72%, 1); + --wui-color-blueberry-080: hsla(231, 92%, 74%, 1); + + --wui-color-fg-100: #141414; + --wui-color-fg-125: #2d3131; + --wui-color-fg-150: #474d4d; + --wui-color-fg-175: #636d6d; + --wui-color-fg-200: #798686; + --wui-color-fg-225: #828f8f; + --wui-color-fg-250: #8b9797; + --wui-color-fg-275: #95a0a0; + --wui-color-fg-300: #9ea9a9; + --wui-color-fg-325: #9a9a9a; + --wui-color-fg-350: #d0d0d0; + + --wui-color-bg-100: #ffffff; + --wui-color-bg-125: #f5fafa; + --wui-color-bg-150: #f3f8f8; + --wui-color-bg-175: #eef4f4; + --wui-color-bg-200: #eaf1f1; + --wui-color-bg-225: #e5eded; + --wui-color-bg-250: #e1e9e9; + --wui-color-bg-275: #dce7e7; + --wui-color-bg-300: #d8e3e3; + --wui-color-bg-325: #f3f3f3; + --wui-color-bg-350: #202020; + + --wui-color-success-base-100: #26b562; + --wui-color-success-base-125: #30a46b; + + --wui-color-warning-base-100: #f3a13f; + + --wui-color-error-base-100: #f05142; + --wui-color-error-base-125: #df4a34; + + --wui-color-blue-base-100: rgba(102, 125, 255, 1); + --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); + + --wui-color-success-glass-001: rgba(38, 181, 98, 0.01); + --wui-color-success-glass-002: rgba(38, 181, 98, 0.02); + --wui-color-success-glass-005: rgba(38, 181, 98, 0.05); + --wui-color-success-glass-010: rgba(38, 181, 98, 0.1); + --wui-color-success-glass-015: rgba(38, 181, 98, 0.15); + --wui-color-success-glass-020: rgba(38, 181, 98, 0.2); + --wui-color-success-glass-025: rgba(38, 181, 98, 0.25); + --wui-color-success-glass-030: rgba(38, 181, 98, 0.3); + --wui-color-success-glass-060: rgba(38, 181, 98, 0.6); + --wui-color-success-glass-080: rgba(38, 181, 98, 0.8); + + --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); + + --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); + + --wui-color-error-glass-001: rgba(240, 81, 66, 0.01); + --wui-color-error-glass-002: rgba(240, 81, 66, 0.02); + --wui-color-error-glass-005: rgba(240, 81, 66, 0.05); + --wui-color-error-glass-010: rgba(240, 81, 66, 0.1); + --wui-color-error-glass-015: rgba(240, 81, 66, 0.15); + --wui-color-error-glass-020: rgba(240, 81, 66, 0.2); + --wui-color-error-glass-025: rgba(240, 81, 66, 0.25); + --wui-color-error-glass-030: rgba(240, 81, 66, 0.3); + --wui-color-error-glass-060: rgba(240, 81, 66, 0.6); + --wui-color-error-glass-080: rgba(240, 81, 66, 0.8); + + --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); + + --wui-icon-box-bg-error-base-100: #f4dfdd; + --wui-icon-box-bg-blue-base-100: #d9ecfb; + --wui-icon-box-bg-success-base-100: #daf0e4; + --wui-icon-box-bg-inverse-base-100: #dcecfc; + + --wui-all-wallets-bg-100: #e8f1fa; + + --wui-avatar-border-base: #f3f4f4; + + --wui-thumbnail-border-base: #eaefef; + + --wui-wallet-button-bg-base: var(--wui-color-bg-125); + + --wui-color-gray-glass-001: rgba(0, 0, 0, 0.01); + --wui-color-gray-glass-002: rgba(0, 0, 0, 0.02); + --wui-color-gray-glass-005: rgba(0, 0, 0, 0.05); + --wui-color-gray-glass-010: rgba(0, 0, 0, 0.1); + --wui-color-gray-glass-015: rgba(0, 0, 0, 0.15); + --wui-color-gray-glass-020: rgba(0, 0, 0, 0.2); + --wui-color-gray-glass-025: rgba(0, 0, 0, 0.25); + --wui-color-gray-glass-030: rgba(0, 0, 0, 0.3); + --wui-color-gray-glass-060: rgba(0, 0, 0, 0.6); + --wui-color-gray-glass-080: rgba(0, 0, 0, 0.8); + --wui-color-gray-glass-090: rgba(0, 0, 0, 0.9); + + --wui-color-dark-glass-100: rgba(233, 233, 233, 1); + + --w3m-card-embedded-shadow-color: rgb(224 225 233 / 25%); + } + `}}const L1=kr` + *, + *::after, + *::before, + :host { + margin: 0; + padding: 0; + box-sizing: border-box; + font-style: normal; + text-rendering: optimizeSpeed; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + font-family: var(--wui-font-family); + backface-visibility: hidden; + } +`,M1=kr` + button, + a { + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + position: relative; + transition: + color var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), + border var(--wui-duration-lg) var(--wui-ease-out-power-1), + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), + box-shadow var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: background-color, color, border, box-shadow, border-radius; + outline: none; + border: none; + column-gap: var(--wui-spacing-3xs); + background-color: transparent; + text-decoration: none; + } + + wui-flex { + transition: border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: border-radius; + } + + button:disabled > wui-wallet-image, + button:disabled > wui-all-wallets-image, + button:disabled > wui-network-image, + button:disabled > wui-image, + button:disabled > wui-transaction-visual, + button:disabled > wui-logo { + filter: grayscale(1); + } + + @media (hover: hover) and (pointer: fine) { + button:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + button:active:enabled { + background-color: var(--wui-color-gray-glass-010); + } + } + + button:disabled > wui-icon-box { + opacity: 0.5; + } + + input { + border: none; + outline: none; + appearance: none; + } +`,B1=kr` + .wui-color-inherit { + color: var(--wui-color-inherit); + } + + .wui-color-accent-100 { + color: var(--wui-color-accent-100); + } + + .wui-color-error-100 { + color: var(--wui-color-error-100); + } + + .wui-color-blue-100 { + color: var(--wui-color-blue-100); + } + + .wui-color-blue-90 { + color: var(--wui-color-blue-90); + } + + .wui-color-error-125 { + color: var(--wui-color-error-125); + } + + .wui-color-success-100 { + color: var(--wui-color-success-100); + } + + .wui-color-success-125 { + color: var(--wui-color-success-125); + } + + .wui-color-inverse-100 { + color: var(--wui-color-inverse-100); + } + + .wui-color-inverse-000 { + color: var(--wui-color-inverse-000); + } + + .wui-color-fg-100 { + color: var(--wui-color-fg-100); + } + + .wui-color-fg-200 { + color: var(--wui-color-fg-200); + } + + .wui-color-fg-300 { + color: var(--wui-color-fg-300); + } + + .wui-color-fg-325 { + color: var(--wui-color-fg-325); + } + + .wui-color-fg-350 { + color: var(--wui-color-fg-350); + } + + .wui-bg-color-inherit { + background-color: var(--wui-color-inherit); + } + + .wui-bg-color-blue-100 { + background-color: var(--wui-color-accent-100); + } + + .wui-bg-color-error-100 { + background-color: var(--wui-color-error-100); + } + + .wui-bg-color-error-125 { + background-color: var(--wui-color-error-125); + } + + .wui-bg-color-success-100 { + background-color: var(--wui-color-success-100); + } + + .wui-bg-color-success-125 { + background-color: var(--wui-color-success-100); + } + + .wui-bg-color-inverse-100 { + background-color: var(--wui-color-inverse-100); + } + + .wui-bg-color-inverse-000 { + background-color: var(--wui-color-inverse-000); + } + + .wui-bg-color-fg-100 { + background-color: var(--wui-color-fg-100); + } + + .wui-bg-color-fg-200 { + background-color: var(--wui-color-fg-200); + } + + .wui-bg-color-fg-300 { + background-color: var(--wui-color-fg-300); + } + + .wui-color-fg-325 { + background-color: var(--wui-color-fg-325); + } + + .wui-color-fg-350 { + background-color: var(--wui-color-fg-350); + } +`,ui={ERROR_CODE_UNRECOGNIZED_CHAIN_ID:4902,ERROR_CODE_DEFAULT:5e3,ERROR_INVALID_CHAIN_ID:32603,DEFAULT_ALLOWED_ANCESTORS:["http://localhost:*","https://*.pages.dev","https://*.vercel.app","https://*.ngrok-free.app","https://secure-mobile.walletconnect.com","https://secure-mobile.walletconnect.org"]};function Fi(t){return{formatters:void 0,fees:void 0,serializers:void 0,...t}}const $l=Fi({id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!1,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",deprecatedCaipNetworkId:"solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ"}),Rl=Fi({id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",deprecatedCaipNetworkId:"solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K"});Fi({id:"4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",name:"Solana Testnet",network:"solana-testnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"});Fi({id:"000000000019d6689c085ae165831e93",caipNetworkId:"bip122:000000000019d6689c085ae165831e93",chainNamespace:"bip122",name:"Bitcoin",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}}});Fi({id:"000000000933ea01ad0ee984209779ba",caipNetworkId:"bip122:000000000933ea01ad0ee984209779ba",chainNamespace:"bip122",name:"Bitcoin Testnet",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},testnet:!0});const QC={solana:["solana_signMessage","solana_signTransaction","solana_requestAccounts","solana_getAccounts","solana_signAllTransactions","solana_signAndSendTransaction"],eip155:["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_showCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"],bip122:["sendTransfer","signMessage","signPsbt","getAccountAddresses"]},pn={getMethodsByChainNamespace(t){return QC[t]||[]},createDefaultNamespace(t){return{methods:this.getMethodsByChainNamespace(t),events:["accountsChanged","chainChanged"],chains:[],rpcMap:{}}},applyNamespaceOverrides(t,e){if(!e)return{...t};const s={...t},r=new Set;if(e.methods&&Object.keys(e.methods).forEach(i=>r.add(i)),e.chains&&Object.keys(e.chains).forEach(i=>r.add(i)),e.events&&Object.keys(e.events).forEach(i=>r.add(i)),e.rpcMap&&Object.keys(e.rpcMap).forEach(i=>{const[n]=i.split(":");n&&r.add(n)}),r.forEach(i=>{s[i]||(s[i]=this.createDefaultNamespace(i))}),e.methods&&Object.entries(e.methods).forEach(([i,n])=>{s[i]&&(s[i].methods=n)}),e.chains&&Object.entries(e.chains).forEach(([i,n])=>{s[i]&&(s[i].chains=n)}),e.events&&Object.entries(e.events).forEach(([i,n])=>{s[i]&&(s[i].events=n)}),e.rpcMap){const i=new Set;Object.entries(e.rpcMap).forEach(([n,o])=>{const[a,c]=n.split(":");!a||!c||!s[a]||(s[a].rpcMap||(s[a].rpcMap={}),i.has(a)||(s[a].rpcMap={},i.add(a)),s[a].rpcMap[c]=o)})}return s},createNamespaces(t,e){const s=t.reduce((r,i)=>{const{id:n,chainNamespace:o,rpcUrls:a}=i,c=a.default.http[0];r[o]||(r[o]=this.createDefaultNamespace(o));const l=`${o}:${n}`,u=r[o];switch(u.chains.push(l),l){case $l.caipNetworkId:u.chains.push($l.deprecatedCaipNetworkId);break;case Rl.caipNetworkId:u.chains.push(Rl.deprecatedCaipNetworkId);break}return u?.rpcMap&&c&&(u.rpcMap[n]=c),r},{});return this.applyNamespaceOverrides(s,e)},resolveReownName:async t=>{const e=await fi.resolveName(t);return(Object.values(e?.addresses)||[])[0]?.address||!1},getChainsFromNamespaces(t={}){return Object.values(t).flatMap(e=>{const s=e.chains||[],r=e.accounts.map(i=>{const[n,o]=i.split(":");return`${n}:${o}`});return Array.from(new Set([...s,...r]))})},isSessionEventData(t){return typeof t=="object"&&t!==null&&"id"in t&&"topic"in t&&"params"in t&&typeof t.params=="object"&&t.params!==null&&"chainId"in t.params&&"event"in t.params&&typeof t.params.event=="object"&&t.params.event!==null},isOriginAllowed(t,e,s){for(const r of[...e,...s])if(r.includes("*")){const n=`^${r.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&").replace(/\\\*/gu,".*")}$`;if(new RegExp(n,"u").test(t))return!0}else try{if(new URL(r).origin===t)return!0}catch{if(r===t)return!0}return!1}};class Ph{constructor({provider:e,namespace:s}){this.id=z.CONNECTOR_ID.WALLET_CONNECT,this.name=vn.ConnectorNamesMap[z.CONNECTOR_ID.WALLET_CONNECT],this.type="WALLET_CONNECT",this.imageId=vn.ConnectorImageIds[z.CONNECTOR_ID.WALLET_CONNECT],this.getCaipNetworks=p.getCaipNetworks.bind(p),this.caipNetworks=this.getCaipNetworks(),this.provider=e,this.chain=s}get chains(){return this.getCaipNetworks()}async connectWalletConnect(){if(!await this.authenticate()){const s=this.getCaipNetworks(),r=O.state.universalProviderConfigOverride,i=pn.createNamespaces(s,r);await this.provider.connect({optionalNamespaces:i})}return{clientId:await this.provider.client.core.crypto.getClientId(),session:this.provider.session}}async disconnect(){await this.provider.disconnect()}async authenticate(){const e=this.chains.map(s=>s.caipNetworkId);return gi.universalProviderAuthenticate({universalProvider:this.provider,chains:e,methods:e1})}}const e1=["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"];class t1{constructor(e){this.availableConnectors=[],this.eventListeners=new Map,this.getCaipNetworks=s=>p.getCaipNetworks(s),e&&this.construct(e)}construct(e){this.projectId=e.projectId,this.namespace=e.namespace,this.adapterType=e.adapterType}get connectors(){return this.availableConnectors}get networks(){return this.getCaipNetworks(this.namespace)}setAuthProvider(e){this.addConnector({id:z.CONNECTOR_ID.AUTH,type:"AUTH",name:z.CONNECTOR_NAMES.AUTH,provider:e,imageId:vn.ConnectorImageIds[z.CONNECTOR_ID.AUTH],chain:this.namespace,chains:[]})}addConnector(...e){const s=new Set;this.availableConnectors=[...e,...this.availableConnectors].filter(r=>s.has(r.id)?!1:(s.add(r.id),!0)),this.emit("connectors",this.availableConnectors)}setStatus(e,s){W.setStatus(e,s)}on(e,s){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e)?.add(s)}off(e,s){const r=this.eventListeners.get(e);r&&r.delete(s)}removeAllEventListeners(){this.eventListeners.forEach(e=>{e.clear()})}emit(e,s){const r=this.eventListeners.get(e);r&&r.forEach(i=>i(s))}async connectWalletConnect(e){return{clientId:(await this.getWalletConnectConnector().connectWalletConnect()).clientId}}async switchNetwork(e){const{caipNetwork:s,providerType:r}=e;if(!e.provider)return;const i="provider"in e.provider?e.provider.provider:e.provider;if(r==="WALLET_CONNECT"){i.setDefaultChain(s.caipNetworkId);return}if(i&&r==="AUTH"){const n=i,o=W.state.preferredAccountTypes?.[s.chainNamespace];await n.switchNetwork(s.caipNetworkId);const a=await n.getUser({chainId:s.caipNetworkId,preferredAccountType:o});this.emit("switchNetwork",a)}}getWalletConnectConnector(){const e=this.connectors.find(s=>s instanceof Ph);if(!e)throw new Error("WalletConnectConnector not found");return e}}class s1 extends t1{setUniversalProvider(e){this.addConnector(new Ph({provider:e,caipNetworks:this.getCaipNetworks(),namespace:this.namespace}))}async connect(e){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:Number(e.chainId),provider:this.provider,address:""})}async disconnect(){try{await this.getWalletConnectConnector().disconnect()}catch(e){console.warn("UniversalAdapter:disconnect - error",e)}}async getAccounts({namespace:e}){const r=this.provider?.session?.namespaces?.[e]?.accounts?.map(i=>{const[,,n]=i.split(":");return n}).filter((i,n,o)=>o.indexOf(i)===n)||[];return Promise.resolve({accounts:r.map(i=>X.createAccount(e,i,e==="bip122"?"payment":"eoa"))})}async syncConnectors(){return Promise.resolve()}async getBalance(e){if(!(e.caipNetwork&&ve.BALANCE_SUPPORTED_CHAINS.includes(e.caipNetwork?.chainNamespace))||e.caipNetwork?.testnet)return{balance:"0.00",symbol:e.caipNetwork?.nativeCurrency.symbol||""};if(W.state.balanceLoading&&e.chainId===p.state.activeCaipNetwork?.id)return{balance:W.state.balance||"0.00",symbol:W.state.balanceSymbol||""};const i=(await W.fetchTokenBalance()).find(n=>n.chainId===`${e.caipNetwork?.chainNamespace}:${e.chainId}`&&n.symbol===e.caipNetwork?.nativeCurrency.symbol);return{balance:i?.quantity.numeric||"0.00",symbol:i?.symbol||e.caipNetwork?.nativeCurrency.symbol||""}}async signMessage(e){const{provider:s,message:r,address:i}=e;if(!s)throw new Error("UniversalAdapter:signMessage - provider is undefined");let n="";return p.state.activeCaipNetwork?.chainNamespace===z.CHAIN.SOLANA?n=(await s.request({method:"solana_signMessage",params:{message:ru.encode(new TextEncoder().encode(r)),pubkey:i}},p.state.activeCaipNetwork?.caipNetworkId)).signature:n=await s.request({method:"personal_sign",params:[r,i]},p.state.activeCaipNetwork?.caipNetworkId),{signature:n}}async estimateGas(){return Promise.resolve({gas:BigInt(0)})}async sendTransaction(){return Promise.resolve({hash:""})}walletGetAssets(e){return Promise.resolve({})}async writeContract(){return Promise.resolve({hash:""})}parseUnits(){return 0n}formatUnits(){return"0"}async getCapabilities(){return Promise.resolve({})}async grantPermissions(){return Promise.resolve({})}async revokePermissions(){return Promise.resolve("0x")}async syncConnection(){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:1,provider:this.provider,address:""})}async switchNetwork(e){const{caipNetwork:s}=e,r=this.getWalletConnectConnector();if(s.chainNamespace===z.CHAIN.EVM)try{await r.provider?.request({method:"wallet_switchEthereumChain",params:[{chainId:ba(s.id)}]})}catch(i){if(i.code===ui.ERROR_CODE_UNRECOGNIZED_CHAIN_ID||i.code===ui.ERROR_INVALID_CHAIN_ID||i.code===ui.ERROR_CODE_DEFAULT||i?.data?.originalError?.code===ui.ERROR_CODE_UNRECOGNIZED_CHAIN_ID)try{await r.provider?.request({method:"wallet_addEthereumChain",params:[{chainId:ba(s.id),rpcUrls:[s?.rpcUrls.chainDefault?.http],chainName:s.name,nativeCurrency:s.nativeCurrency,blockExplorerUrls:[s.blockExplorers?.default.url]}]})}catch{throw new Error("Chain is not supported")}}r.provider.setDefaultChain(s.caipNetworkId)}getWalletConnectProvider(){return this.connectors.find(r=>r.type==="WALLET_CONNECT")?.provider}}const r1=["email","socials","swaps","onramp","activity","reownBranding"],rn={email:{apiFeatureName:"social_login",localFeatureName:"email",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return!!t.isEnabled&&e.includes("email")},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.email:!!t},socials:{apiFeatureName:"social_login",localFeatureName:"socials",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e.filter(s=>s!=="email"):!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.socials:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.socials:!1:t},swaps:{apiFeatureName:"swap",localFeatureName:"swaps",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.swaps:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.swaps:!1:t},onramp:{apiFeatureName:"onramp",localFeatureName:"onramp",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.onramp:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.onramp:!1:t},activity:{apiFeatureName:"activity",localFeatureName:"history",returnType:!1,isLegacy:!0,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.activity:!!t},reownBranding:{apiFeatureName:"reown_branding",localFeatureName:"reownBranding",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.reownBranding:!!t}},i1={localSettingsOverridden:new Set,getApiConfig(t,e){return e?.find(s=>s.id===t)},addWarning(t,e){if(t!==void 0){const s=rn[e],r=s.isLegacy?`"features.${s.localFeatureName}" (now "${e}")`:`"features.${e}"`;this.localSettingsOverridden.add(r)}},processFeature(t,e,s,r,i){const n=rn[t],o=e[n.localFeatureName];if(i&&!n.isAvailableOnBasic)return!1;if(r){const a=this.getApiConfig(n.apiFeatureName,s);return a?.config===null?this.processFallbackFeature(t,o):a?.config?(o!==void 0&&this.addWarning(o,t),this.processApiFeature(t,a)):!1}return this.processFallbackFeature(t,o)},processApiFeature(t,e){return rn[t].processApi(e)},processFallbackFeature(t,e){return rn[t].processFallback(e)},async fetchRemoteFeatures(t){const e=t.basic??!1,s=t.features||{};this.localSettingsOverridden.clear();let r=null,i=!1;try{r=await V.fetchProjectConfig(),i=r!=null}catch(o){console.warn("[Reown Config] Failed to fetch remote project configuration. Using local/default values.",o)}const n=i&&!e?ve.DEFAULT_REMOTE_FEATURES:ve.DEFAULT_REMOTE_FEATURES_DISABLED;try{for(const o of r1){const a=this.processFeature(o,s,r,i,e);Object.assign(n,{[o]:a})}}catch(o){return console.warn("[Reown Config] Failed to process the configuration from Cloud. Using default values.",o),ve.DEFAULT_REMOTE_FEATURES}if(i&&this.localSettingsOverridden.size>0){const o=`Your local configuration for ${Array.from(this.localSettingsOverridden).join(", ")} was ignored because a remote configuration was successfully fetched. Please manage these features via your project dashboard on dashboard.reown.com.`;Us.open({shortMessage:"Local configuration ignored",longMessage:`[Reown Config Notice] ${o}`},"warning")}return n}};class n1{constructor(e){this.chainNamespaces=[],this.remoteFeatures={},this.reportedAlertErrors={},this.getCaipNetwork=(s,r)=>{if(s){const i=p.getNetworkData(s)?.requestedCaipNetworks?.find(a=>a.id===r);if(i)return i;const n=p.getNetworkData(s)?.caipNetwork;return n||p.getRequestedCaipNetworks(s).filter(a=>a.chainNamespace===s)?.[0]}return p.state.activeCaipNetwork||this.defaultCaipNetwork},this.getCaipNetworkId=()=>{const s=this.getCaipNetwork();if(s)return s.id},this.getCaipNetworks=s=>p.getCaipNetworks(s),this.getActiveChainNamespace=()=>p.state.activeChain,this.setRequestedCaipNetworks=(s,r)=>{p.setRequestedCaipNetworks(s,r)},this.getApprovedCaipNetworkIds=()=>p.getAllApprovedCaipNetworkIds(),this.getCaipAddress=s=>p.state.activeChain===s||!s?p.state.activeCaipAddress:p.getAccountProp("caipAddress",s),this.setClientId=s=>{J.setClientId(s)},this.getProvider=s=>Se.getProvider(s),this.getProviderType=s=>Se.getProviderId(s),this.getPreferredAccountType=s=>W.state.preferredAccountTypes?.[s],this.setCaipAddress=(s,r)=>{W.setCaipAddress(s,r),s&&O.state.enableEmbedded&&this.close()},this.setBalance=(s,r,i)=>{W.setBalance(s,r,i)},this.setProfileName=(s,r)=>{W.setProfileName(s,r)},this.setProfileImage=(s,r)=>{W.setProfileImage(s,r)},this.setUser=(s,r)=>{W.setUser(s,r)},this.resetAccount=s=>{W.resetAccount(s)},this.setCaipNetwork=s=>{p.setActiveCaipNetwork(s)},this.setCaipNetworkOfNamespace=(s,r)=>{p.setChainNetworkData(r,{caipNetwork:s})},this.setAllAccounts=(s,r)=>{W.setAllAccounts(s,r),O.setHasMultipleAddresses(s?.length>1)},this.setStatus=(s,r)=>{W.setStatus(s,r),j.isConnected()?F.setConnectionStatus("connected"):F.setConnectionStatus("disconnected")},this.getAddressByChainNamespace=s=>p.getAccountProp("address",s),this.setConnectors=s=>{const r=[...j.state.allConnectors,...s];j.setConnectors(r)},this.setConnections=(s,r)=>{Y.setConnections(s,r)},this.fetchIdentity=s=>J.fetchIdentity(s),this.getReownName=s=>fi.getNamesForAddress(s),this.getConnectors=()=>j.getConnectors(),this.getConnectorImage=s=>Fl.getConnectorImage(s),this.setConnectedWalletInfo=(s,r)=>{const i=Se.getProviderId(r),n=s?{...s,type:i}:void 0;W.setConnectedWalletInfo(n,r)},this.getIsConnectedState=()=>!!p.state.activeCaipAddress,this.addAddressLabel=(s,r,i)=>{W.addAddressLabel(s,r,i)},this.removeAddressLabel=(s,r)=>{W.removeAddressLabel(s,r)},this.getAddress=s=>p.state.activeChain===s||!s?W.state.address:p.getAccountProp("address",s),this.setApprovedCaipNetworksData=s=>p.setApprovedCaipNetworksData(s),this.resetNetwork=s=>{p.resetNetwork(s)},this.addConnector=s=>{j.addConnector(s)},this.resetWcConnection=()=>{Y.resetWcConnection()},this.setAddressExplorerUrl=(s,r)=>{W.setAddressExplorerUrl(s,r)},this.setSmartAccountDeployed=(s,r)=>{W.setSmartAccountDeployed(s,r)},this.setSmartAccountEnabledNetworks=(s,r)=>{p.setSmartAccountEnabledNetworks(s,r)},this.setPreferredAccountType=(s,r)=>{W.setPreferredAccountType(s,r)},this.setEIP6963Enabled=s=>{O.setEIP6963Enabled(s)},this.handleUnsafeRPCRequest=()=>{if(this.isOpen()){if(this.isTransactionStackEmpty())return;this.redirect("ApproveTransaction")}else this.open({view:"ApproveTransaction"})},this.options=e,this.version=e.sdkVersion,this.caipNetworks=this.extendCaipNetworks(e),this.chainNamespaces=this.getChainNamespacesSet(e.adapters,this.caipNetworks),this.defaultCaipNetwork=this.extendDefaultCaipNetwork(e),this.chainAdapters=this.createAdapters(e.adapters),this.readyPromise=this.initialize(e)}getChainNamespacesSet(e,s){const r=e?.map(n=>n.namespace).filter(n=>!!n);if(r?.length)return[...new Set(r)];const i=s?.map(n=>n.chainNamespace);return[...new Set(i)]}async initialize(e){this.initializeProjectSettings(e),this.initControllers(e),await this.initChainAdapters(),this.sendInitializeEvent(e),await this.syncExistingConnection(),this.remoteFeatures=await i1.fetchRemoteFeatures(e),O.setRemoteFeatures(this.remoteFeatures),this.remoteFeatures.onramp&&bo.setOnrampProviders(this.remoteFeatures.onramp),(O.state.remoteFeatures?.email||Array.isArray(O.state.remoteFeatures?.socials)&&O.state.remoteFeatures?.socials.length>0)&&await this.checkAllowedOrigins()}async checkAllowedOrigins(){const e=await V.fetchAllowedOrigins();if(e&&X.isClient()){const s=window.location.origin;pn.isOriginAllowed(s,e,ui.DEFAULT_ALLOWED_ANCESTORS)||Us.open(vr.ALERT_ERRORS.INVALID_APP_CONFIGURATION,"error")}else Us.open(vr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error")}sendInitializeEvent(e){const{...s}=e;delete s.adapters,delete s.universalProvider,Pe.sendEvent({type:"track",event:"INITIALIZE",properties:{...s,networks:e.networks.map(r=>r.id),siweConfig:{options:e.siweConfig?.options||{}}}})}initControllers(e){this.initializeOptionsController(e),this.initializeChainController(e),this.initializeThemeController(e),this.initializeConnectionController(e),this.initializeConnectorController()}initializeThemeController(e){e.themeMode&&ft.setThemeMode(e.themeMode),e.themeVariables&&ft.setThemeVariables(e.themeVariables)}initializeChainController(e){if(!this.connectionControllerClient||!this.networkControllerClient)throw new Error("ConnectionControllerClient and NetworkControllerClient must be set");p.initialize(e.adapters??[],this.caipNetworks,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient});const s=this.getDefaultNetwork();s&&p.setActiveCaipNetwork(s)}initializeConnectionController(e){Y.setWcBasic(e.basic??!1)}initializeConnectorController(){j.initialize(this.chainNamespaces)}initializeProjectSettings(e){O.setProjectId(e.projectId),O.setSdkVersion(e.sdkVersion)}initializeOptionsController(e){O.setDebug(e.debug!==!1),O.setEnableWalletConnect(e.enableWalletConnect!==!1),O.setEnableWalletGuide(e.enableWalletGuide!==!1),O.setEnableWallets(e.enableWallets!==!1),O.setEIP6963Enabled(e.enableEIP6963!==!1),O.setEnableNetworkSwitch(e.enableNetworkSwitch!==!1),O.setEnableAuthLogger(e.enableAuthLogger!==!1),O.setCustomRpcUrls(e.customRpcUrls),O.setEnableEmbedded(e.enableEmbedded),O.setAllWallets(e.allWallets),O.setIncludeWalletIds(e.includeWalletIds),O.setExcludeWalletIds(e.excludeWalletIds),O.setFeaturedWalletIds(e.featuredWalletIds),O.setTokens(e.tokens),O.setTermsConditionsUrl(e.termsConditionsUrl),O.setPrivacyPolicyUrl(e.privacyPolicyUrl),O.setCustomWallets(e.customWallets),O.setFeatures(e.features),O.setAllowUnsupportedChain(e.allowUnsupportedChain),O.setUniversalProviderConfigOverride(e.universalProviderConfigOverride),O.setPreferUniversalLinks(e.experimental_preferUniversalLinks),O.setDefaultAccountTypes(e.defaultAccountTypes);const s=F.getPreferredAccountTypes()||{},r={...O.state.defaultAccountTypes,...s};W.setPreferredAccountTypes(r);const i=this.getDefaultMetaData();if(!e.metadata&&i&&(e.metadata=i),O.setMetadata(e.metadata),O.setDisableAppend(e.disableAppend),O.setEnableEmbedded(e.enableEmbedded),O.setSIWX(e.siwx),!e.projectId){Us.open(vr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error");return}if(e.adapters?.find(o=>o.namespace===z.CHAIN.EVM)&&e.siweConfig){if(e.siwx)throw new Error("Cannot set both `siweConfig` and `siwx` options");O.setSIWX(e.siweConfig.mapToSIWX())}}getDefaultMetaData(){return X.isClient()?{name:document.getElementsByTagName("title")?.[0]?.textContent||"",description:document.querySelector('meta[property="og:description"]')?.content||"",url:window.location.origin,icons:[document.querySelector('link[rel~="icon"]')?.href||""]}:null}setUnsupportedNetwork(e){const s=this.getActiveChainNamespace();if(s){const r=Cr.getUnsupportedNetwork(`${s}:${e}`);p.setActiveCaipNetwork(r)}}getDefaultNetwork(){return Cr.getCaipNetworkFromStorage(this.defaultCaipNetwork)}extendCaipNetwork(e,s){return Cr.extendCaipNetwork(e,{customNetworkImageUrls:s.chainImages,projectId:s.projectId})}extendCaipNetworks(e){return Cr.extendCaipNetworks(e.networks,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId})}extendDefaultCaipNetwork(e){const s=e.networks.find(i=>i.id===e.defaultNetwork?.id);return s?Cr.extendCaipNetwork(s,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId}):void 0}async disconnectNamespace(e){try{const s=this.getAdapter(e),r=Se.getProvider(e),i=Se.getProviderId(e),{caipAddress:n}=p.getAccountData(e)||{};this.setLoading(!0,e),n&&s?.disconnect&&await s.disconnect({provider:r,providerType:i}),F.removeConnectedNamespace(e),Se.resetChain(e),this.setUser(void 0,e),this.setStatus("disconnected",e),this.setConnectedWalletInfo(void 0,e),j.removeConnectorId(e),p.resetAccount(e),p.resetNetwork(e),this.setLoading(!1,e)}catch(s){throw this.setLoading(!1,e),new Error(`Failed to disconnect chain ${e}: ${s.message}`)}}createClients(){this.connectionControllerClient={connectWalletConnect:async()=>{const e=p.state.activeChain,s=this.getAdapter(e),r=this.getCaipNetwork(e)?.id;if(!s)throw new Error("Adapter not found");const i=await s.connectWalletConnect(r);this.close(),this.setClientId(i?.clientId||null),F.setConnectedNamespaces([...p.state.chains.keys()]),this.chainNamespaces.forEach(n=>{j.setConnectorId(fs.CONNECTOR_TYPE_WALLET_CONNECT,n)}),await this.syncWalletConnectAccount()},connectExternal:async({id:e,info:s,type:r,provider:i,chain:n,caipNetwork:o,socialUri:a})=>{const c=p.state.activeChain,l=n||c,u=this.getAdapter(l);if(n&&n!==c&&!o){const g=this.getCaipNetworks().find(f=>f.chainNamespace===n);g&&this.setCaipNetwork(g)}if(!u)throw new Error("Adapter not found");const h=this.getCaipNetwork(l),d=await u.connect({id:e,info:s,type:r,provider:i,socialUri:a,chainId:o?.id||h?.id,rpcUrl:o?.rpcUrls?.default?.http?.[0]||h?.rpcUrls?.default?.http?.[0]});if(!d)return;F.addConnectedNamespace(l),this.syncProvider({...d,chainNamespace:l});const m=W.state.allAccounts,{accounts:w}=m?.length>0?{accounts:[...m]}:await u.getAccounts({namespace:l,id:e});this.setAllAccounts(w,l),this.setStatus("connected",l),this.syncConnectedWalletInfo(l)},reconnectExternal:async({id:e,info:s,type:r,provider:i})=>{const n=p.state.activeChain,o=this.getAdapter(n);o?.reconnect&&(await o?.reconnect({id:e,info:s,type:r,provider:i,chainId:this.getCaipNetwork()?.id}),F.addConnectedNamespace(n),this.syncConnectedWalletInfo(n))},disconnect:async e=>{const s=SC(e);try{const r=await Promise.allSettled(s.map(async([n])=>this.disconnectNamespace(n)));he.resetSend(),Y.resetWcConnection(),await gi.clearSessions(),j.setFilterByNamespace(void 0);const i=r.filter(n=>n.status==="rejected");if(i.length>0)throw new Error(i.map(n=>n.reason.message).join(", "));F.deleteConnectedSocialProvider(),Pe.sendEvent({type:"track",event:"DISCONNECT_SUCCESS",properties:{namespace:e||"all"}})}catch(r){throw new Error(`Failed to disconnect chains: ${r.message}`)}},checkInstalled:e=>e?e.some(s=>!!window.ethereum?.[String(s)]):!!window.ethereum,signMessage:async e=>(await this.getAdapter(p.state.activeChain)?.signMessage({message:e,address:W.state.address,provider:Se.getProvider(p.state.activeChain)}))?.signature||"",sendTransaction:async e=>{const s=e.chainNamespace;if(ve.SEND_SUPPORTED_NAMESPACES.includes(s)){const r=this.getAdapter(p.state.activeChain),i=Se.getProvider(s);return(await r?.sendTransaction({...e,caipNetwork:this.getCaipNetwork(),provider:i}))?.hash||""}return""},estimateGas:async e=>{if(e.chainNamespace===z.CHAIN.EVM){const s=this.getAdapter(p.state.activeChain),r=Se.getProvider(p.state.activeChain),i=this.getCaipNetwork();if(!i)throw new Error("CaipNetwork is undefined");return(await s?.estimateGas({...e,provider:r,caipNetwork:i}))?.gas||0n}return 0n},getEnsAvatar:async()=>(await this.syncIdentity({address:W.state.address,chainId:Number(this.getCaipNetwork()?.id),chainNamespace:p.state.activeChain}),W.state.profileImage||!1),getEnsAddress:async e=>await pn.resolveReownName(e),writeContract:async e=>{const s=this.getAdapter(p.state.activeChain),r=this.getCaipNetwork(),i=this.getCaipAddress(),n=Se.getProvider(p.state.activeChain);if(!r||!i)throw new Error("CaipNetwork or CaipAddress is undefined");return(await s?.writeContract({...e,caipNetwork:r,provider:n,caipAddress:i}))?.hash},parseUnits:(e,s)=>this.getAdapter(p.state.activeChain)?.parseUnits({value:e,decimals:s})??0n,formatUnits:(e,s)=>this.getAdapter(p.state.activeChain)?.formatUnits({value:e,decimals:s})??"0",getCapabilities:async e=>await this.getAdapter(p.state.activeChain)?.getCapabilities(e),grantPermissions:async e=>await this.getAdapter(p.state.activeChain)?.grantPermissions(e),revokePermissions:async e=>{const s=this.getAdapter(p.state.activeChain);return s?.revokePermissions?await s.revokePermissions(e):"0x"},walletGetAssets:async e=>await this.getAdapter(p.state.activeChain)?.walletGetAssets(e)??{},updateBalance:e=>{const s=this.getCaipNetwork(e);!s||!W.state.address||this.updateNativeBalance(W.state.address,s?.id,e)}},this.networkControllerClient={switchCaipNetwork:async e=>await this.switchCaipNetwork(e),getApprovedCaipNetworksData:async()=>this.getApprovedCaipNetworksData()},Y.setClient(this.connectionControllerClient)}getApprovedCaipNetworksData(){if(Se.getProviderId(p.state.activeChain)===fs.CONNECTOR_TYPE_WALLET_CONNECT){const s=this.universalProvider?.session?.namespaces;return{supportsAllNetworks:this.universalProvider?.session?.peer?.metadata.name==="MetaMask Wallet",approvedCaipNetworkIds:this.getChainsFromNamespaces(s)}}return{supportsAllNetworks:!0,approvedCaipNetworkIds:[]}}async switchCaipNetwork(e){if(!e)return;const s=e.chainNamespace;if(this.getAddressByChainNamespace(e.chainNamespace)){const i=Se.getProvider(s),n=Se.getProviderId(s);if(e.chainNamespace===p.state.activeChain)await this.getAdapter(s)?.switchNetwork({caipNetwork:e,provider:i,providerType:n});else if(this.setCaipNetwork(e),n===fs.CONNECTOR_TYPE_WALLET_CONNECT)this.syncWalletConnectAccount();else{const o=this.getAddressByChainNamespace(s);o&&this.syncAccount({address:o,chainId:e.id,chainNamespace:s})}}else this.setCaipNetwork(e)}getChainsFromNamespaces(e={}){return Object.values(e).flatMap(s=>{const r=s.chains||[],i=s.accounts.map(n=>{const{chainId:o,chainNamespace:a}=ls.parseCaipAddress(n);return`${a}:${o}`});return Array.from(new Set([...r,...i]))})}createAdapters(e){return this.createClients(),this.chainNamespaces.reduce((s,r)=>{const i=e?.find(n=>n.namespace===r);return i?(i.construct({namespace:r,projectId:this.options?.projectId,networks:this.getCaipNetworks()}),s[r]=i):s[r]=new s1({namespace:r,networks:this.getCaipNetworks()}),s},{})}async initChainAdapter(e){this.onConnectors(e),this.listenAdapter(e),await this.chainAdapters?.[e].syncConnectors(this.options,this),await this.createUniversalProviderForAdapter(e)}async initChainAdapters(){await Promise.all(this.chainNamespaces.map(async e=>{await this.initChainAdapter(e)}))}onConnectors(e){this.getAdapter(e)?.on("connectors",this.setConnectors.bind(this))}listenAdapter(e){const s=this.getAdapter(e);if(!s)return;const r=F.getConnectionStatus();r==="connected"?this.setStatus("connecting",e):r==="disconnected"?(F.clearAddressCache(),this.setStatus(r,e)):this.setStatus(r,e),s.on("switchNetwork",({address:i,chainId:n})=>{const o=this.getCaipNetworks().find(l=>l.id===n||l.caipNetworkId===n),a=p.state.activeChain===e,c=p.getAccountProp("address",e);if(o){const l=a&&i?i:c;l&&this.syncAccount({address:l,chainId:o.id,chainNamespace:e})}else this.setUnsupportedNetwork(n)}),s.on("disconnect",this.disconnect.bind(this,e)),s.on("connections",i=>{this.setConnections(i,e)}),s.on("pendingTransactions",()=>{const i=W.state.address,n=p.state.activeCaipNetwork;!i||!n?.id||this.updateNativeBalance(i,n.id,n.chainNamespace)}),s.on("accountChanged",({address:i,chainId:n})=>{const o=p.state.activeChain===e;o&&n?this.syncAccount({address:i,chainId:n,chainNamespace:e}):o&&p.state.activeCaipNetwork?.id?this.syncAccount({address:i,chainId:p.state.activeCaipNetwork?.id,chainNamespace:e}):this.syncAccountInfo(i,n,e),this.syncAllAccounts(e)})}async createUniversalProviderForAdapter(e){await this.getUniversalProvider(),this.universalProvider&&this.chainAdapters?.[e]?.setUniversalProvider?.(this.universalProvider)}async syncExistingConnection(){await Promise.allSettled(this.chainNamespaces.map(e=>this.syncNamespaceConnection(e)))}async syncNamespaceConnection(e){try{e===z.CHAIN.EVM&&X.isSafeApp()&&j.setConnectorId(z.CONNECTOR_ID.SAFE,e);const s=j.getConnectorId(e);switch(this.setStatus("connecting",e),s){case z.CONNECTOR_ID.WALLET_CONNECT:await this.syncWalletConnectAccount();break;case z.CONNECTOR_ID.AUTH:break;default:await this.syncAdapterConnection(e)}}catch(s){console.warn("AppKit couldn't sync existing connection",s),this.setStatus("disconnected",e)}}async syncAdapterConnection(e){const s=this.getAdapter(e),r=j.getConnectorId(e),i=this.getCaipNetwork(e),o=j.getConnectors(e).find(a=>a.id===r);try{if(!s||!o)throw new Error(`Adapter or connector not found for namespace ${e}`);if(!i?.id)throw new Error("CaipNetwork not found");const a=await s?.syncConnection({namespace:e,id:o.id,chainId:i.id,rpcUrl:i?.rpcUrls?.default?.http?.[0]});if(a){const c=await s?.getAccounts({namespace:e,id:o.id});c&&c.accounts.length>0?this.setAllAccounts(c.accounts,e):this.setAllAccounts([X.createAccount(e,a.address,"eoa")],e),this.syncProvider({...a,chainNamespace:e}),await this.syncAccount({...a,chainNamespace:e}),this.setStatus("connected",e)}else this.setStatus("disconnected",e)}catch{this.setStatus("disconnected",e)}}async syncWalletConnectAccount(){const e=this.chainNamespaces.map(async s=>{const r=this.getAdapter(s),i=this.universalProvider?.session?.namespaces?.[s]?.accounts||[],n=p.state.activeCaipNetwork?.id,o=i.find(a=>{const{chainId:c}=ls.parseCaipAddress(a);return c===n?.toString()})||i[0];if(o){const a=ls.validateCaipAddress(o),{chainId:c,address:l}=ls.parseCaipAddress(a);if(Se.setProviderId(s,fs.CONNECTOR_TYPE_WALLET_CONNECT),this.caipNetworks&&p.state.activeCaipNetwork&&r?.namespace!==z.CHAIN.EVM){const u=r?.getWalletConnectProvider({caipNetworks:this.getCaipNetworks(),provider:this.universalProvider,activeCaipNetwork:p.state.activeCaipNetwork});Se.setProvider(s,u)}else Se.setProvider(s,this.universalProvider);j.setConnectorId(z.CONNECTOR_ID.WALLET_CONNECT,s),F.addConnectedNamespace(s),this.syncWalletConnectAccounts(s),await this.syncAccount({address:l,chainId:c,chainNamespace:s})}else this.setStatus("disconnected",s);this.syncConnectedWalletInfo(s),await p.setApprovedCaipNetworksData(s)});await Promise.all(e)}syncWalletConnectAccounts(e){const s=this.universalProvider?.session?.namespaces?.[e]?.accounts?.map(r=>{const{address:i}=ls.parseCaipAddress(r);return i}).filter((r,i,n)=>n.indexOf(r)===i);s&&this.setAllAccounts(s.map(r=>X.createAccount(e,r,e==="bip122"?"payment":"eoa")),e)}syncProvider({type:e,provider:s,id:r,chainNamespace:i}){Se.setProviderId(i,e),Se.setProvider(i,s),j.setConnectorId(r,i)}async syncAllAccounts(e){const s=j.getConnectorId(e);if(!s)return;const i=await this.getAdapter(e)?.getAccounts({namespace:e,id:s});i&&i.accounts.length>0&&this.setAllAccounts(i.accounts,e)}async syncAccount(e){const s=e.chainNamespace===p.state.activeChain,r=p.getCaipNetworkByNamespace(e.chainNamespace,e.chainId),{address:i,chainId:n,chainNamespace:o}=e,{chainId:a}=F.getActiveNetworkProps(),c=n||a,l=p.state.activeCaipNetwork?.name===z.UNSUPPORTED_NETWORK_NAME,u=p.getNetworkProp("supportsAllNetworks",o);if(this.setStatus("connected",o),!(l&&!u)&&c){let h=this.getCaipNetworks().find(w=>w.id.toString()===c.toString()),d=this.getCaipNetworks().find(w=>w.chainNamespace===o);if(!u&&!h&&!d){const w=this.getApprovedCaipNetworkIds()||[],g=w.find(y=>ls.parseCaipNetworkId(y)?.chainId===c.toString()),f=w.find(y=>ls.parseCaipNetworkId(y)?.chainNamespace===o);h=this.getCaipNetworks().find(y=>y.caipNetworkId===g),d=this.getCaipNetworks().find(y=>y.caipNetworkId===f||"deprecatedCaipNetworkId"in y&&y.deprecatedCaipNetworkId===f)}const m=h||d;m?.chainNamespace===p.state.activeChain?O.state.enableNetworkSwitch&&!O.state.allowUnsupportedChain&&p.state.activeCaipNetwork?.name===z.UNSUPPORTED_NETWORK_NAME?p.showUnsupportedChainUI():this.setCaipNetwork(m):s||r&&this.setCaipNetworkOfNamespace(r,o),this.syncConnectedWalletInfo(o),pa.isLowerCaseMatch(i,W.state.address)||this.syncAccountInfo(i,m?.id,o),s?await this.syncBalance({address:i,chainId:m?.id,chainNamespace:o}):await this.syncBalance({address:i,chainId:r?.id,chainNamespace:o})}}async syncAccountInfo(e,s,r){const i=this.getCaipAddress(r),n=s||i?.split(":")[1];if(!n)return;const o=`${r}:${n}:${e}`;this.setCaipAddress(o,r),await this.syncIdentity({address:e,chainId:n,chainNamespace:r})}async syncReownName(e,s){try{const r=await this.getReownName(e);if(r[0]){const i=r[0];this.setProfileName(i.name,s)}else this.setProfileName(null,s)}catch{this.setProfileName(null,s)}}syncConnectedWalletInfo(e){const s=j.getConnectorId(e),r=Se.getProviderId(e);if(r===fs.CONNECTOR_TYPE_ANNOUNCED||r===fs.CONNECTOR_TYPE_INJECTED){if(s){const i=this.getConnectors().find(n=>n.id===s);if(i){const{info:n,name:o,imageUrl:a}=i,c=a||this.getConnectorImage(i);this.setConnectedWalletInfo({name:o,icon:c,...n},e)}}}else if(r===fs.CONNECTOR_TYPE_WALLET_CONNECT){const i=Se.getProvider(e);i?.session&&this.setConnectedWalletInfo({...i.session.peer.metadata,name:i.session.peer.metadata.name,icon:i.session.peer.metadata.icons?.[0]},e)}else if(s&&s===z.CONNECTOR_ID.COINBASE){const i=this.getConnectors().find(n=>n.id===z.CONNECTOR_ID.COINBASE);this.setConnectedWalletInfo({name:"Coinbase Wallet",icon:this.getConnectorImage(i)},e)}}async syncBalance(e){!Ml.getNetworksByNamespace(this.getCaipNetworks(),e.chainNamespace).find(r=>r.id.toString()===e.chainId?.toString())||!e.chainId||await this.updateNativeBalance(e.address,e.chainId,e.chainNamespace)}async ready(){await this.readyPromise}async updateNativeBalance(e,s,r){const i=this.getAdapter(r),n=p.getCaipNetworkByNamespace(r,s);if(i){const o=await i.getBalance({address:e,chainId:s,caipNetwork:n,tokens:this.options.tokens});return this.setBalance(o.balance,o.symbol,r),o}}async initializeUniversalAdapter(){const e=kC.createLogger((r,...i)=>{r&&this.handleAlertError(r),console.error(...i)}),s={projectId:this.options?.projectId,metadata:{name:this.options?.metadata?this.options?.metadata.name:"",description:this.options?.metadata?this.options?.metadata.description:"",url:this.options?.metadata?this.options?.metadata.url:"",icons:this.options?.metadata?this.options?.metadata.icons:[""]},logger:e};O.setManualWCControl(!!this.options?.manualWCControl),this.universalProvider=this.options.universalProvider??await _C.init(s),this.listenWalletConnect()}listenWalletConnect(){this.universalProvider&&(this.universalProvider.on("display_uri",e=>{Y.setUri(e)}),this.universalProvider.on("connect",Y.finalizeWcConnection),this.universalProvider.on("disconnect",()=>{this.chainNamespaces.forEach(e=>{this.resetAccount(e)}),Y.resetWcConnection()}),this.universalProvider.on("chainChanged",e=>{const s=this.getCaipNetworks().find(i=>i.id==e),r=this.getCaipNetwork();if(!s){this.setUnsupportedNetwork(e);return}r?.id!==s?.id&&this.setCaipNetwork(s)}),this.universalProvider.on("session_event",e=>{if(pn.isSessionEventData(e)){const{name:s,data:r}=e.params.event;s==="accountsChanged"&&Array.isArray(r)&&X.isCaipAddress(r[0])&&this.syncAccount(ls.parseCaipAddress(r[0]))}}))}createUniversalProvider(){return!this.universalProviderInitPromise&&X.isClient()&&this.options?.projectId&&(this.universalProviderInitPromise=this.initializeUniversalAdapter()),this.universalProviderInitPromise}async getUniversalProvider(){if(!this.universalProvider)try{await this.createUniversalProvider()}catch(e){Pe.sendEvent({type:"error",event:"INTERNAL_SDK_ERROR",properties:{errorType:"UniversalProviderInitError",errorMessage:e instanceof Error?e.message:"Unknown",uncaught:!1}}),console.error("AppKit:getUniversalProvider - Cannot create provider",e)}return this.universalProvider}handleAlertError(e){const s=Object.entries(vr.UniversalProviderErrors).find(([,{message:a}])=>e.message.includes(a)),[r,i]=s??[],{message:n,alertErrorKey:o}=i??{};if(r&&n&&!this.reportedAlertErrors[r]){const a=vr.ALERT_ERRORS[o];a&&(Us.open(a,"error"),this.reportedAlertErrors[r]=!0)}}getAdapter(e){if(e)return this.chainAdapters?.[e]}createAdapter(e){if(!e)return;const s=e.namespace;if(!s)return;this.createClients();const r=e;r.namespace=s,r.construct({namespace:s,projectId:this.options?.projectId,networks:this.getCaipNetworks()}),this.chainNamespaces.includes(s)||this.chainNamespaces.push(s),this.chainAdapters&&(this.chainAdapters[s]=r)}async open(e){return await this.injectModalUi(),e?.uri&&Y.setUri(e.uri),e?.arguments&&e?.view==="Swap"?We.open({...e,data:{swap:e.arguments}}):We.open(e)}async close(){await this.injectModalUi(),We.close()}setLoading(e,s){We.setLoading(e,s)}async disconnect(e){await Y.disconnect(e)}getSIWX(){return O.state.siwx}getError(){return""}getChainId(){return p.state.activeCaipNetwork?.id}async switchNetwork(e){const s=this.getCaipNetworks().find(r=>r.id===e.id);if(!s){Us.open(vr.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND,"error");return}await p.switchActiveNetwork(s)}getWalletProvider(){return p.state.activeChain?Se.state.providers[p.state.activeChain]:null}getWalletProviderType(){return Se.getProviderId(p.state.activeChain)}subscribeProviders(e){return Se.subscribeProviders(e)}getThemeMode(){return ft.state.themeMode}getThemeVariables(){return ft.state.themeVariables}setThemeMode(e){ft.setThemeMode(e),Sh(ft.state.themeMode)}setTermsConditionsUrl(e){O.setTermsConditionsUrl(e)}setPrivacyPolicyUrl(e){O.setPrivacyPolicyUrl(e)}setThemeVariables(e){ft.setThemeVariables(e),ZC(ft.state.themeVariables)}subscribeTheme(e){return ft.subscribe(e)}getWalletInfo(){return W.state.connectedWalletInfo}getAccount(e){const s=j.getAuthConnector(e),r=p.getAccountData(e),i=p.state.activeChain,n=F.getConnectedConnectorId(e||i);if(r)return{allAccounts:r.allAccounts,caipAddress:r.caipAddress,address:X.getPlainAddress(r.caipAddress),isConnected:!!r.caipAddress,status:r.status,embeddedWalletInfo:s&&n===z.CONNECTOR_ID.AUTH?{user:r.user?{...r.user,username:F.getConnectedSocialUsername()}:void 0,authProvider:r.socialProvider||"email",accountType:r.preferredAccountTypes?.[e||i],isSmartAccountDeployed:!!r.smartAccountDeployed}:void 0}}subscribeAccount(e,s){const r=()=>{const i=this.getAccount(s);i&&e(i)};s?p.subscribeChainProp("accountState",r,s):p.subscribe(r),j.subscribe(r)}subscribeNetwork(e){return p.subscribe(({activeCaipNetwork:s})=>{e({caipNetwork:s,chainId:s?.id,caipNetworkId:s?.caipNetworkId})})}subscribeWalletInfo(e){return W.subscribeKey("connectedWalletInfo",e)}subscribeShouldUpdateToAddress(e){W.subscribeKey("shouldUpdateToAddress",e)}subscribeCaipNetworkChange(e){p.subscribeKey("activeCaipNetwork",e)}getState(){return Es.state}subscribeState(e){return Es.subscribe(e)}showErrorMessage(e){Ut.showError(e)}showSuccessMessage(e){Ut.showSuccess(e)}getEvent(){return{...Pe.state}}subscribeEvents(e){return Pe.subscribe(e)}replace(e){re.replace(e)}redirect(e){re.push(e)}popTransactionStack(e){re.popTransactionStack(e)}isOpen(){return We.state.open}isTransactionStackEmpty(){return re.state.transactionStack.length===0}static getInstance(){return this.instance}updateFeatures(e){O.setFeatures(e)}updateRemoteFeatures(e){O.setRemoteFeatures(e)}updateOptions(e){const r={...O.state||{},...e};O.setOptions(r)}setConnectMethodsOrder(e){O.setConnectMethodsOrder(e)}setWalletFeaturesOrder(e){O.setWalletFeaturesOrder(e)}setCollapseWallets(e){O.setCollapseWallets(e)}setSocialsOrder(e){O.setSocialsOrder(e)}getConnectMethodsOrder(){return Jo.getConnectOrderMethod(O.state.features,j.getConnectors())}addNetwork(e,s){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);const r=this.extendCaipNetwork(s,this.options);this.getCaipNetworks().find(i=>i.id===r.id)||p.addNetwork(r)}removeNetwork(e,s){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);this.getCaipNetworks().find(i=>i.id===s)&&p.removeNetwork(e,s)}}let Ul=!1;class kh extends n1{async open(e){j.isConnected()||await super.open(e)}async close(){await super.close(),this.options.manualWCControl&&Y.finalizeWcConnection()}async syncIdentity(e){return Promise.resolve()}async syncBalance(e){return Promise.resolve()}async injectModalUi(){if(!Ul&&X.isClient()){if(await fo(()=>import("./basic-knqDsQCx.js"),__vite__mapDeps([6,7,1,2,3,4,5])),await fo(()=>import("./w3m-modal-edAIOpgJ.js"),__vite__mapDeps([8,7,1,2,3,4,5])),!document.querySelector("w3m-modal")){const s=document.createElement("w3m-modal");!O.state.disableAppend&&!O.state.enableEmbedded&&document.body.insertAdjacentElement("beforeend",s)}Ul=!0}}}const o1="1.7.8";function a1(t){return new kh({...t,basic:!0,sdkVersion:`html-core-${o1}`})}const j1=Object.freeze(Object.defineProperty({__proto__:null,AppKit:kh,createAppKit:a1},Symbol.toStringTag,{value:"Module"}));export{Us as A,Ut as B,p as C,V as D,Pe as E,D1 as F,X as G,Up as H,z as I,Eh as J,Yo as K,Fe as L,We as M,Br as N,O,un as P,Y as Q,re as R,gi as S,ft as T,F as U,ve as V,Jo as W,j1 as X,Ua as a,Np as b,A1 as c,Dp as d,I1 as e,Nn as f,S1 as g,_1 as h,vt as i,Ze as j,kr as k,L1 as l,dn as m,R1 as n,M1 as o,_e as p,B1 as q,N1 as r,Qe as s,Zl as t,Fl as u,Rt as v,U1 as w,TC as x,j as y,W as z}; diff --git a/dist/assets/create-FASO7PVG-D_rvSpre.js b/dist/assets/create-FASO7PVG-D_rvSpre.js new file mode 100644 index 0000000..727abb6 --- /dev/null +++ b/dist/assets/create-FASO7PVG-D_rvSpre.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.7%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%20style%3D%22mix-blend-mode%3Ascreen%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.04%22%20fill-rule%3D%22evenodd%22%20d%3D%22M32%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6C1%2011.13%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c2.817%200%204.87%200%206.486-.133%201.606-.131%202.695-.387%203.6-.848a9%209%200%200%200%203.933-3.933c.461-.905.717-1.994.848-3.6C47%2036.87%2047%2034.816%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201ZM1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c5.6%200%208.4%200%2010.54-1.09a10.001%2010.001%200%200%200%204.37-4.37C48%2040.4%2048%2037.6%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20d%3D%22M24%2013a1.5%201.5%200%200%200-1.5%201.5v8.2c0%20.28%200%20.42-.055.527a.5.5%200%200%201-.218.218c-.107.055-.247.055-.527.055h-8.2a1.5%201.5%200%200%200%200%203h8.2c.28%200%20.42%200%20.527.055a.5.5%200%200%201%20.218.218c.055.107.055.247.055.527v8.2a1.5%201.5%200%200%200%203%200v-8.2c0-.28%200-.42.055-.527a.5.5%200%200%201%20.218-.218c.107-.055.247-.055.527-.055h8.2a1.5%201.5%200%200%200%200-3h-8.2c-.28%200-.42%200-.527-.055a.5.5%200%200%201-.218-.218c-.055-.107-.055-.247-.055-.527v-8.2A1.5%201.5%200%200%200%2024%2013Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24%2012a1.5%201.5%200%200%200-1.5%201.5v8.2c0%20.28%200%20.42-.055.527a.5.5%200%200%201-.218.218c-.107.055-.247.055-.527.055h-8.2a1.5%201.5%200%200%200%200%203h8.2c.28%200%20.42%200%20.527.055a.5.5%200%200%201%20.218.218c.055.107.055.247.055.527v8.2a1.5%201.5%200%200%200%203%200v-8.2c0-.28%200-.42.055-.527a.5.5%200%200%201%20.218-.218c.107-.055.247-.055.527-.055h8.2a1.5%201.5%200%200%200%200-3h-8.2c-.28%200-.42%200-.527-.055a.5.5%200%200%201-.218-.218c-.055-.107-.055-.247-.055-.527v-8.2A1.5%201.5%200%200%200%2024%2012Z%22%2F%3E%3Cdefs%3E%3CradialGradient%20id%3D%22a%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-40.077%2073.374%2058.603)%20scale(94.7484)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.276%22%20stop-color%3D%22%2320FF4D%22%2F%3E%3Cstop%20offset%3D%22.464%22%20stop-color%3D%22%231499FF%22%2F%3E%3Cstop%20offset%3D%22.755%22%20stop-color%3D%22%23FF6FC5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BC67FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22b%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(45%205.303%20-12.803)%20scale(78.4889)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22red%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2300A3FF%22%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/cronos-HJPAQTAE-BEOvlOC4.js b/dist/assets/cronos-HJPAQTAE-BEOvlOC4.js new file mode 100644 index 0000000..d6cb238 --- /dev/null +++ b/dist/assets/cronos-HJPAQTAE-BEOvlOC4.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%2228%22%20height%3D%2228%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22A%22%20x1%3D%22-18.275%25%22%20x2%3D%2284.959%25%22%20y1%3D%228.219%25%22%20y2%3D%2271.393%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23002d74%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23001246%22%2F%3E%3C%2FlinearGradient%3E%3Ccircle%20id%3D%22B%22%20cx%3D%2214%22%20cy%3D%2214%22%20r%3D%2214%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22C%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23B%22%2F%3E%3C%2Fmask%3E%3Cg%20fill-rule%3D%22nonzero%22%3E%3Cpath%20fill%3D%22url(%23A)%22%20d%3D%22M-1.326-1.326h30.651v30.651H-1.326z%22%20mask%3D%22url(%23C)%22%2F%3E%3Cg%20fill%3D%22%23fff%22%3E%3Cpath%20d%3D%22M14.187%206L7%2010.175v8.35l7.187%204.175%207.175-4.175v-8.35L14.187%206zm5.046%2011.286l-5.058%202.936-5.046-2.936v-5.871l5.058-2.936%205.046%202.936v5.871z%22%2F%3E%3Cpath%20d%3D%22M14.187%2022.7l7.175-4.175v-8.35L14.187%206v2.479l5.046%202.936v5.883l-5.058%202.936V22.7h.012z%22%2F%3E%3Cpath%20d%3D%22M14.175%206L7%2010.175v8.35l7.175%204.175v-2.479l-5.046-2.936v-5.883l5.046-2.924V6zm3.36%2010.299l-3.348%201.949-3.36-1.949v-3.898l3.36-1.949%203.348%201.949-1.399.818-1.961-1.143-1.949%201.143v2.274l1.961%201.143%201.961-1.143%201.387.806z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/cursor-D6xeH2My.js b/dist/assets/cursor-D6xeH2My.js new file mode 100644 index 0000000..561fbab --- /dev/null +++ b/dist/assets/cursor-D6xeH2My.js @@ -0,0 +1,3 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=o` + +`;export{l as cursorSvg}; diff --git a/dist/assets/cursor-transparent-DDMfHo3z.js b/dist/assets/cursor-transparent-DDMfHo3z.js new file mode 100644 index 0000000..a4e7b5c --- /dev/null +++ b/dist/assets/cursor-transparent-DDMfHo3z.js @@ -0,0 +1,12 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=o` + + + + `;export{e as cursorTransparentSvg}; diff --git a/dist/assets/de_DE-PYAO5YD6-BWlqPWgO.js b/dist/assets/de_DE-PYAO5YD6-BWlqPWgO.js new file mode 100644 index 0000000..3db2ab0 --- /dev/null +++ b/dist/assets/de_DE-PYAO5YD6-BWlqPWgO.js @@ -0,0 +1,1487 @@ +var e=`{ + "connect_wallet": { + "label": "Wallet verbinden", + "wrong_network": { + "label": "Falsches Netzwerk" + } + }, + "intro": { + "title": "Was ist ein Wallet?", + "description": "Ein Wallet wird verwendet, um digitale Assets zu senden, empfangen, speichern und anzeigen. Es ist auch eine neue Möglichkeit, sich anzumelden, ohne auf jeder Website neue Konten und Passwörter erstellen zu müssen.", + "digital_asset": { + "title": "Ein Zuhause für Ihre digitalen Vermögenswerte", + "description": "Wallets werden verwendet, um digitale Assets wie Ethereum und NFTs zu senden, empfangen, speichern und anzeigen." + }, + "login": { + "title": "Eine neue Möglichkeit, sich anzumelden", + "description": "Anstatt auf jeder Website neue Konten und Passwörter zu erstellen, verbinden Sie einfach Ihr Wallet." + }, + "get": { + "label": "Ein Wallet holen" + }, + "learn_more": { + "label": "Mehr erfahren" + } + }, + "sign_in": { + "label": "Verifizieren Sie Ihr Konto", + "description": "Um die Verbindung abzuschließen, müssen Sie eine Nachricht in Ihrem Wallet signieren, um zu verifizieren, dass Sie der Inhaber dieses Kontos sind.", + "message": { + "send": "Nachricht signieren", + "preparing": "Nachricht wird vorbereitet...", + "cancel": "Abbrechen", + "preparing_error": "Fehler beim Vorbereiten der Nachricht, bitte erneut versuchen!" + }, + "signature": { + "waiting": "Warten auf Signatur...", + "verifying": "Signatur wird überprüft...", + "signing_error": "Fehler beim Signieren der Nachricht, bitte erneut versuchen!", + "verifying_error": "Fehler bei der Überprüfung der Signatur, bitte erneut versuchen!", + "oops_error": "Oops, etwas ist schiefgelaufen!" + } + }, + "connect": { + "label": "Verbinden", + "title": "Ein Wallet verbinden", + "new_to_ethereum": { + "description": "Neu bei Ethereum-Wallets?", + "learn_more": { + "label": "Mehr erfahren" + } + }, + "learn_more": { + "label": "Mehr erfahren" + }, + "recent": "Zuletzt", + "status": { + "opening": "%{wallet} wird geöffnet...", + "connecting": "Verbinden", + "connect_mobile": "Fahren Sie in %{wallet} fort", + "not_installed": "%{wallet} ist nicht installiert", + "not_available": "%{wallet} ist nicht verfügbar", + "confirm": "Bestätigen Sie die Verbindung in der Erweiterung", + "confirm_mobile": "Akzeptieren Sie die Verbindungsanfrage im Wallet" + }, + "secondary_action": { + "get": { + "description": "Haben Sie kein %{wallet}?", + "label": "HOLEN" + }, + "install": { + "label": "INSTALLIEREN" + }, + "retry": { + "label": "ERNEUT VERSUCHEN" + } + }, + "walletconnect": { + "description": { + "full": "Benötigen Sie das offizielle WalletConnect-Modul?", + "compact": "Benötigen Sie das WalletConnect-Modul?" + }, + "open": { + "label": "ÖFFNEN" + } + } + }, + "connect_scan": { + "title": "Mit %{wallet} scannen", + "fallback_title": "Mit Ihrem Telefon scannen" + }, + "connector_group": { + "installed": "Installiert", + "recommended": "Empfohlen", + "other": "Andere", + "popular": "Beliebt", + "more": "Mehr", + "others": "Andere" + }, + "get": { + "title": "Ein Wallet holen", + "action": { + "label": "HOLEN" + }, + "mobile": { + "description": "Mobiles Wallet" + }, + "extension": { + "description": "Browser-Erweiterung" + }, + "mobile_and_extension": { + "description": "Mobiles Wallet und Erweiterung" + }, + "mobile_and_desktop": { + "description": "Mobile und Desktop Wallet" + }, + "looking_for": { + "title": "Nicht das, wonach Sie suchen?", + "mobile": { + "description": "Wählen Sie auf dem Hauptbildschirm ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen." + }, + "desktop": { + "compact_description": "Wählen Sie auf dem Hauptbildschirm ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen.", + "wide_description": "Wählen Sie links ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen." + } + } + }, + "get_options": { + "title": "Beginnen Sie mit %{wallet}", + "short_title": "%{wallet} besorgen", + "mobile": { + "title": "%{wallet} für Mobilgeräte", + "description": "Verwenden Sie das mobile Wallet, um die Welt von Ethereum zu erkunden.", + "download": { + "label": "App herunterladen" + } + }, + "extension": { + "title": "%{wallet} für %{browser}", + "description": "Greifen Sie direkt von Ihrem bevorzugten Webbrowser auf Ihr Wallet zu.", + "download": { + "label": "Zu %{browser} hinzufügen" + } + }, + "desktop": { + "title": "%{wallet} für %{platform}", + "description": "Greifen Sie nativ von Ihrem leistungsstarken Desktop auf Ihr Wallet zu.", + "download": { + "label": "Hinzufügen zu %{platform}" + } + } + }, + "get_mobile": { + "title": "%{wallet} installieren", + "description": "Scannen Sie mit Ihrem Telefon, um auf iOS oder Android herunterzuladen", + "continue": { + "label": "Fortfahren" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "Verbinden" + }, + "learn_more": { + "label": "Mehr erfahren" + } + }, + "extension": { + "refresh": { + "label": "Aktualisieren" + }, + "learn_more": { + "label": "Mehr erfahren" + } + }, + "desktop": { + "connect": { + "label": "Verbinden" + }, + "learn_more": { + "label": "Mehr erfahren" + } + } + }, + "chains": { + "title": "Netzwerke wechseln", + "wrong_network": "Falsches Netzwerk erkannt, wechseln oder trennen Sie die Verbindung, um fortzufahren.", + "confirm": "Im Wallet bestätigen", + "switching_not_supported": "Ihr Wallet unterstützt das Wechseln von Netzwerken von %{appName} aus nicht. Versuchen Sie stattdessen, innerhalb Ihres Wallets die Netzwerke zu wechseln.", + "switching_not_supported_fallback": "Ihr Wallet unterstützt das Wechseln von Netzwerken von dieser App aus nicht. Versuchen Sie stattdessen, innerhalb Ihres Wallets die Netzwerke zu wechseln.", + "disconnect": "Trennen", + "connected": "Verbunden" + }, + "profile": { + "disconnect": { + "label": "Trennen" + }, + "copy_address": { + "label": "Adresse kopieren", + "copied": "Kopiert!" + }, + "explorer": { + "label": "Mehr im Explorer ansehen" + }, + "transactions": { + "description": "%{appName}-Transaktionen werden hier angezeigt...", + "description_fallback": "Ihre Transaktionen werden hier angezeigt...", + "recent": { + "title": "Neueste Transaktionen" + }, + "clear": { + "label": "Alles löschen" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "Füge Ready zu deinem Startbildschirm hinzu, um schneller auf dein Wallet zuzugreifen.", + "title": "Öffnen Sie die Ready App" + }, + "step2": { + "description": "Erstellen Sie ein Wallet und einen Benutzernamen oder importieren Sie ein bestehendes Wallet.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Schaltfläche QR-Scan" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "Installieren Sie die BeraSig-Erweiterung", + "description": "Wir empfehlen, BeraSig an die Taskleiste anzuheften, um leichter auf Ihre Brieftasche zuzugreifen." + }, + "step2": { + "title": "Erstellen Sie eine Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Best Wallet-App", + "description": "Fügen Sie die Best Wallet zu Ihrem Startbildschirm hinzu, um schneller auf Ihre Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, die Bifrost Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", + "title": "Öffnen Sie die Bifrost Wallet-App" + }, + "step2": { + "description": "Erstellen oder importieren Sie ein Wallet mit Ihrer Wiederherstellungsphrase.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, die Bitget Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", + "title": "Öffnen Sie die Bitget Wallet-App" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Wir empfehlen, die Bitget Wallet in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", + "title": "Installieren Sie die Bitget Wallet-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "Wir empfehlen, Bitski in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", + "title": "Installieren Sie die Bitski-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Bitverse Wallet App", + "description": "Fügen Sie die Bitverse Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "Öffnen Sie die Bloom Wallet-App", + "description": "Wir empfehlen, Bloom Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." + }, + "step2": { + "description": "Erstellen oder importieren Sie ein Wallet mit Ihrer Wiederherstellungsphrase.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nachdem Sie ein Wallet haben, klicken Sie auf „Verbinden“, um über Bloom eine Verbindung herzustellen. Eine Verbindungsmeldung in der App wird angezeigt, um die Verbindung zu bestätigen.", + "title": "Klicken Sie auf Verbinden" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, Bybit auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", + "title": "Öffnen Sie die Bybit App" + }, + "step2": { + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie Bybit Wallet für einfachen Zugriff an.", + "title": "Installieren Sie die Bybit Wallet Erweiterung" + }, + "step2": { + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie das Bybit Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, Binance auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", + "title": "Öffnen Sie die Binance App" + }, + "step2": { + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die WalletConnect-Schaltfläche" + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die Binance Wallet Erweiterung", + "description": "Wir empfehlen, die Binance Wallet an Ihre Taskleiste zu heften, um schneller darauf zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, die Coin98 Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", + "title": "Öffnen Sie die Coin98 Wallet-App" + }, + "step2": { + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die WalletConnect-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie die Coin98 Wallet an, um einen einfachen Zugriff zu ermöglichen.", + "title": "Installieren Sie die Coin98 Wallet-Erweiterung" + }, + "step2": { + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie die Coin98 Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, die Coinbase Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", + "title": "Öffnen Sie die Coinbase Wallet-App" + }, + "step2": { + "description": "Sie können Ihr Wallet problemlos mit der Cloud-Backup-Funktion sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Wir empfehlen, die Coinbase Wallet in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", + "title": "Installieren Sie die Coinbase Wallet-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "Wir empfehlen, die Compass Wallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Installieren Sie die Compass Wallet Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, Core auf Ihren Startbildschirm zu legen, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Öffnen Sie die Core-App" + }, + "step2": { + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die WalletConnect-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Wir empfehlen, Core an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können.", + "title": "Installieren Sie die Core-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, FoxWallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten.", + "title": "Öffnen Sie die FoxWallet-App" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, Frontier Wallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten.", + "title": "Öffnen Sie die Frontier Wallet-App" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Wir empfehlen, Frontier Wallet an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können.", + "title": "Installieren Sie die Frontier Wallet-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die imToken-App", + "description": "Platzieren Sie die imToken-App auf Ihrem Startbildschirm für schnelleren Zugriff auf Ihr Wallet." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", + "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, ioPay auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", + "title": "Öffnen Sie die ioPay App" + }, + "step2": { + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die WalletConnect-Schaltfläche" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "Wir empfehlen, Kaikas an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Installieren Sie die Kaikas Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die Kaikas App", + "description": "Legen Sie die Kaikas App auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", + "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "Wir empfehlen, Kaia an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Installieren Sie die Kaia Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die Kaia-App", + "description": "Legen Sie die Kaia-App auf Ihren Startbildschirm für schnelleren Zugriff auf Ihre Wallet." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", + "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Kraken Wallet App", + "description": "Fügen Sie die Kraken Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Kresus Wallet App", + "description": "Fügen Sie die Kresus Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "Installieren Sie die Magic Eden Erweiterung", + "description": "Wir empfehlen, Magic Eden an Ihre Taskleiste zu heften, um einfacher auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die MetaMask-App", + "description": "Wir empfehlen, MetaMask auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die MetaMask-Erweiterung", + "description": "Wir empfehlen, MetaMask an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "Installieren Sie die NestWallet Erweiterung", + "description": "Wir empfehlen, die NestWallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die OKX Wallet-App", + "description": "Wir empfehlen, OKX Wallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die OKX Wallet-Erweiterung", + "description": "Wir empfehlen, OKX Wallet an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Omni-App", + "description": "Fügen Sie Omni Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "Legen Sie die 1inch Wallet auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Öffnen Sie die 1inch Wallet App" + }, + "step2": { + "description": "Erstellen Sie ein Wallet und einen Benutzernamen oder importieren Sie ein bestehendes Wallet.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Schaltfläche QR-Scan" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die TokenPocket-App", + "description": "Wir empfehlen, TokenPocket auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die TokenPocket-Erweiterung", + "description": "Wir empfehlen, TokenPocket an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Trust Wallet-App", + "description": "Platzieren Sie Trust Wallet auf Ihrem Startbildschirm für schnelleren Zugriff auf Ihr Wallet." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf WalletConnect in den Einstellungen", + "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die Trust Wallet-Erweiterung", + "description": "Klicken Sie oben rechts in Ihrem Browser und pinnen Sie Trust Wallet für einfachen Zugriff." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Trust Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Uniswap-App", + "description": "Fügen Sie Uniswap Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Zerion-App", + "description": "Wir empfehlen, Zerion auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die Zerion-Erweiterung", + "description": "Wir empfehlen, Zerion an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Rainbow-App", + "description": "Wir empfehlen, Rainbow auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "Wir empfehlen, die Enkrypt Wallet an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben.", + "title": "Installieren Sie die Enkrypt Wallet-Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "Wir empfehlen, Frame an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben.", + "title": "Installieren Sie Frame und die zugehörige Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "Installieren Sie die OneKey Wallet-Erweiterung", + "description": "Wir empfehlen, die OneKey Wallet an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die ParaSwap-App", + "description": "Fügen Sie die ParaSwap Wallet zu Ihrem Startbildschirm hinzu, um schneller auf Ihre Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "Installieren Sie die Phantom-Erweiterung", + "description": "Wir empfehlen, Phantom an Ihre Taskleiste anzuheften, um leichteren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "Installieren Sie die Rabby-Erweiterung", + "description": "Wir empfehlen, Rabby an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, die Ronin Wallet Ihrem Startbildschirm hinzuzufügen, um schneller darauf zuzugreifen.", + "title": "Öffnen Sie die Ronin Wallet App" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + }, + "extension": { + "step1": { + "description": "Wir empfehlen, die Ronin Wallet an Ihre Taskleiste zu heften, um schneller darauf zuzugreifen.", + "title": "Installieren Sie die Ronin Wallet Erweiterung" + }, + "step2": { + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", + "title": "Aktualisieren Sie Ihren Browser" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "Installieren Sie die Ramper Erweiterung", + "description": "Wir empfehlen, Ramper an Ihre Taskleiste zu heften, um einfacher darauf zugreifen zu können." + }, + "step2": { + "title": "Erstellen Sie eine Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "Installieren Sie die Core-Erweiterung", + "description": "Wir empfehlen, Safeheron an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "Installieren Sie die Taho-Erweiterung", + "description": "Wir empfehlen, Taho an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "Installieren Sie die Wigwam-Erweiterung", + "description": "Wir empfehlen, Wigwam an Ihre Taskleiste anzuheften, um einen schnelleren Zugriff auf Ihr Wallet zu ermöglichen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "Installieren Sie die Talisman-Erweiterung", + "description": "Wir empfehlen, Talisman an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder Importieren Sie eine Ethereum-Wallet", + "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihre Wiederherstellungsphrase mit anderen." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "Installieren Sie die CTRL Wallet-Erweiterung", + "description": "Wir empfehlen, CTRL Wallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Zeal App", + "description": "Fügen Sie die Zeal Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf das QR-Symbol und scannen Sie", + "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die Zeal-Erweiterung", + "description": "Wir empfehlen, Zeal an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "Installieren Sie die SafePal Wallet-Erweiterung", + "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie SafePal Wallet für einfachen Zugriff an." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie die SafePal Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die SafePal Wallet-App", + "description": "Platzieren Sie SafePal Wallet auf Ihrem Startbildschirm, um schnelleren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf WalletConnect in den Einstellungen", + "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "Installieren Sie die Desig-Erweiterung", + "description": "Wir empfehlen, Desig an Ihre Taskleiste anzuheften, um leichteren Zugriff auf Ihre Wallet zu haben." + }, + "step2": { + "title": "Erstellen Sie eine Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "Installieren Sie die SubWallet-Erweiterung", + "description": "Wir empfehlen, SubWallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihre Wiederherstellungsphrase mit anderen." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die SubWallet-App", + "description": "Wir empfehlen, SubWallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "Installieren Sie die CLV Wallet-Erweiterung", + "description": "Wir empfehlen, CLV Wallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die CLV Wallet-App", + "description": "Wir empfehlen, CLV Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Okto-App", + "description": "Fügen Sie Okto Ihrem Startbildschirm hinzu, um schnellen Zugriff zu erhalten" + }, + "step2": { + "title": "Erstellen Sie ein MPC-Wallet", + "description": "Erstellen Sie ein Konto und generieren Sie ein Wallet" + }, + "step3": { + "title": "Tippen Sie auf WalletConnect in den Einstellungen", + "description": "Tippen Sie auf das QR-Scan-Symbol oben rechts und bestätigen Sie die Aufforderung zum Verbinden." + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "Öffnen Sie die Ledger Live-App", + "description": "Wir empfehlen, Ledger Live auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." + }, + "step2": { + "title": "Richten Sie Ihr Ledger ein", + "description": "Richten Sie ein neues Ledger ein oder verbinden Sie sich mit einem bestehenden." + }, + "step3": { + "title": "Verbinden", + "description": "Eine Verbindungsmeldung erscheint, um Ihr Wallet zu verbinden." + } + }, + "qr_code": { + "step1": { + "title": "Öffnen Sie die Ledger Live-App", + "description": "Wir empfehlen, Ledger Live auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." + }, + "step2": { + "title": "Richten Sie Ihr Ledger ein", + "description": "Sie können entweder mit der Desktop-App synchronisieren oder Ihr Ledger verbinden." + }, + "step3": { + "title": "Code scannen", + "description": "Tippen Sie auf WalletConnect und wechseln Sie dann zum Scanner. Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Valora-App", + "description": "Wir empfehlen, Valora für einen schnelleren Zugriff auf Ihrem Startbildschirm zu platzieren." + }, + "step2": { + "title": "Erstellen oder importieren Sie eine Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Gate-App", + "description": "Wir empfehlen, Gate auf Ihrem Startbildschirm abzulegen, um schnellen Zugriff zu erhalten." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + }, + "extension": { + "step1": { + "title": "Installieren Sie die Gate-Erweiterung", + "description": "Wir empfehlen, Gate in Ihre Taskleiste zu heften, um leichteren Zugriff auf Ihr Wallet zu haben." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." + }, + "step3": { + "title": "Aktualisieren Sie Ihren Browser", + "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "Öffnen Sie keys.gemini.com", + "description": "Besuchen Sie keys.gemini.com in Ihrem mobilen Browser – kein App-Download erforderlich." + }, + "step2": { + "title": "Erstellen Sie Ihr Wallet sofort", + "description": "Richten Sie Ihr Smart Wallet in Sekundenschnelle ein, indem Sie die integrierte Authentifizierung Ihres Geräts verwenden." + }, + "step3": { + "title": "Scannen zum Verbinden", + "description": "Scannen Sie den QR-Code, um Ihr Wallet sofort zu verbinden – es funktioniert einfach." + } + }, + "extension": { + "step1": { + "title": "Gehen Sie zu keys.gemini.com", + "description": "Keine Erweiterungen oder Downloads erforderlich – Ihr Wallet ist sicher im Browser integriert." + }, + "step2": { + "title": "Ein-Klick Einrichtung", + "description": "Erstellen Sie Ihre Smart Wallet sofort mit Passkey-Authentifizierung – einfacher als jedes andere Wallet." + }, + "step3": { + "title": "Verbinden und los", + "description": "Genehmigen Sie die Verbindung und Sie sind bereit – die unvoreingenommene Wallet, die einfach funktioniert." + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "Legen Sie xPortal auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen.", + "title": "Öffnen Sie die xPortal-App" + }, + "step2": { + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Schaltfläche QR-Scan" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "Wir empfehlen, MEW Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können.", + "title": "Öffnen Sie die MEW Wallet-App" + }, + "step2": { + "description": "Sie können Ihr Wallet problemlos mit der Cloud-Backup-Funktion sichern.", + "title": "Erstellen oder importieren Sie ein Wallet" + }, + "step3": { + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", + "title": "Tippen Sie auf die Scan-Schaltfläche" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "Öffne die ZilPay-App", + "description": "Füge ZilPay zu deinem Startbildschirm hinzu, um schneller auf dein Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "Öffnen Sie die Nova Wallet App", + "description": "Fügen Sie die Nova Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." + }, + "step2": { + "title": "Erstellen oder importieren Sie ein Wallet", + "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." + }, + "step3": { + "title": "Tippen Sie auf die Scan-Schaltfläche", + "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." + } + } + } + } +} +`;export{e as default}; diff --git a/dist/assets/degen-FQQ4XGHB-CeHTs88l.js b/dist/assets/degen-FQQ4XGHB-CeHTs88l.js new file mode 100644 index 0000000..0b4d6db --- /dev/null +++ b/dist/assets/degen-FQQ4XGHB-CeHTs88l.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23A36EFD%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%234C2897%22%20d%3D%22m11.494%2022.367.097%201.764c.006.12.051.233.127.326.531.643%202.913%202.887%208.28%202.887%205.368%200%207.721-2.215%208.272-2.875.083-.1.13-.224.139-.354l.096-1.747a44.59%2044.59%200%200%200%201.298-.747c1.037-.562%202.195.245%202.197%201.43.004%201.915-1.493%203.883-3.512%205.124-2.276%201.398-5.674%201.979-8.488%201.979-2.814%200-6.212-.58-8.488-1.98C9.493%2026.935%207.996%2024.967%208%2023.05c.002-1.184%201.16-1.99%202.197-1.429%200%200%20.658.395%201.297.746Z%22%2F%3E%3Cpath%20fill%3D%22%234C2897%22%20d%3D%22M20%209.846c4.388%200%205.578.103%207.362.308.822.095%201.482.707%201.42%201.536l-.657%208.954c-.206.06-.43.135-.682.22-1.318.442-3.385%201.135-7.444%201.135s-6.125-.693-7.444-1.136c-.252-.084-.476-.16-.682-.22l-.657-8.953c-.06-.83.596-1.456%201.42-1.536%201.763-.171%203.598-.308%207.363-.308Zm-7.812%2015.088.002.032.046.01a7.876%207.876%200%200%201-.048-.042Zm15.579.041.04-.01.003-.028a6.056%206.056%200%200%201-.043.038Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/desktop-UN-8S_IL.js b/dist/assets/desktop-UN-8S_IL.js new file mode 100644 index 0000000..3359f7f --- /dev/null +++ b/dist/assets/desktop-UN-8S_IL.js @@ -0,0 +1,9 @@ +import{w as c}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=c` + + +`;export{t as desktopSvg}; diff --git a/dist/assets/disconnect-BcS4OnJD.js b/dist/assets/disconnect-BcS4OnJD.js new file mode 100644 index 0000000..46d5c39 --- /dev/null +++ b/dist/assets/disconnect-BcS4OnJD.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=o` + +`;export{l as disconnectSvg}; diff --git a/dist/assets/discord-BkEqZ6pU.js b/dist/assets/discord-BkEqZ6pU.js new file mode 100644 index 0000000..7caaab3 --- /dev/null +++ b/dist/assets/discord-BkEqZ6pU.js @@ -0,0 +1,17 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const r=l` + + + + + + + + + + +`;export{r as discordSvg}; diff --git a/dist/assets/es_419-HRGOJ6VT-D-qzxUM-.js b/dist/assets/es_419-HRGOJ6VT-D-qzxUM-.js new file mode 100644 index 0000000..a54f882 --- /dev/null +++ b/dist/assets/es_419-HRGOJ6VT-D-qzxUM-.js @@ -0,0 +1,1487 @@ +var e=`{ + "connect_wallet": { + "label": "Conectar la billetera", + "wrong_network": { + "label": "Red incorrecta" + } + }, + "intro": { + "title": "¿Qué es una billetera?", + "description": "Una billetera se usa para enviar, recibir, almacenar y mostrar activos digitales. También es una nueva forma de iniciar sesión, sin necesidad de crear nuevas cuentas y contraseñas en cada sitio web.", + "digital_asset": { + "title": "Un hogar para tus Activos Digitales", + "description": "Las carteras se utilizan para enviar, recibir, almacenar y mostrar activos digitales como Ethereum y NFTs." + }, + "login": { + "title": "Una nueva forma de iniciar sesión", + "description": "En lugar de crear nuevas cuentas y contraseñas en cada sitio web, simplemente conecta tu cartera." + }, + "get": { + "label": "Obtener una billetera" + }, + "learn_more": { + "label": "Obtener más información" + } + }, + "sign_in": { + "label": "Verifica tu cuenta", + "description": "Para terminar de conectar, debes firmar un mensaje en tu billetera para verificar que eres el propietario de esta cuenta.", + "message": { + "send": "Enviar mensaje", + "preparing": "Preparando mensaje...", + "cancel": "Cancelar", + "preparing_error": "Error al preparar el mensaje, ¡intenta de nuevo!" + }, + "signature": { + "waiting": "Esperando firma...", + "verifying": "Verificando firma...", + "signing_error": "Error al firmar el mensaje, ¡intenta de nuevo!", + "verifying_error": "Error al verificar la firma, ¡intenta de nuevo!", + "oops_error": "¡Ups! Algo salió mal." + } + }, + "connect": { + "label": "Conectar", + "title": "Conectar una billetera", + "new_to_ethereum": { + "description": "¿Eres nuevo en las billeteras Ethereum?", + "learn_more": { + "label": "Obtener más información" + } + }, + "learn_more": { + "label": "Obtener más información" + }, + "recent": "Reciente", + "status": { + "opening": "Abriendo %{wallet}...", + "connecting": "Conectando", + "connect_mobile": "Continuar en %{wallet}", + "not_installed": "%{wallet} no está instalado", + "not_available": "%{wallet} no está disponible", + "confirm": "Confirma la conexión en la extensión", + "confirm_mobile": "Aceptar la solicitud de conexión en la cartera" + }, + "secondary_action": { + "get": { + "description": "¿No tienes %{wallet}?", + "label": "OBTENER" + }, + "install": { + "label": "INSTALAR" + }, + "retry": { + "label": "REINTENTAR" + } + }, + "walletconnect": { + "description": { + "full": "¿Necesitas el modal oficial de WalletConnect?", + "compact": "¿Necesitas el modal de WalletConnect?" + }, + "open": { + "label": "ABRIR" + } + } + }, + "connect_scan": { + "title": "Escanea con %{wallet}", + "fallback_title": "Escanea con tu teléfono" + }, + "connector_group": { + "installed": "Instalado", + "recommended": "Recomendado", + "other": "Otro", + "popular": "Popular", + "more": "Más", + "others": "Otros" + }, + "get": { + "title": "Obtener una billetera", + "action": { + "label": "OBTENER" + }, + "mobile": { + "description": "Billetera Móvil" + }, + "extension": { + "description": "Extensión de navegador" + }, + "mobile_and_extension": { + "description": "Billetera móvil y extensión" + }, + "mobile_and_desktop": { + "description": "Billetera Móvil y de Escritorio" + }, + "looking_for": { + "title": "¿No es lo que estás buscando?", + "mobile": { + "description": "Seleccione una billetera en la pantalla principal para comenzar con un proveedor de billetera diferente." + }, + "desktop": { + "compact_description": "Seleccione una cartera en la pantalla principal para comenzar con un proveedor de cartera diferente.", + "wide_description": "Seleccione una cartera a la izquierda para comenzar con un proveedor de cartera diferente." + } + } + }, + "get_options": { + "title": "Comienza con %{wallet}", + "short_title": "Obtener %{wallet}", + "mobile": { + "title": "%{wallet} para móvil", + "description": "Use la billetera móvil para explorar el mundo de Ethereum.", + "download": { + "label": "Obtener la aplicación" + } + }, + "extension": { + "title": "%{wallet} para %{browser}", + "description": "Acceda a su billetera directamente desde su navegador web favorito.", + "download": { + "label": "Añadir a %{browser}" + } + }, + "desktop": { + "title": "%{wallet} para %{platform}", + "description": "Acceda a su billetera de forma nativa desde su potente escritorio.", + "download": { + "label": "Añadir a %{platform}" + } + } + }, + "get_mobile": { + "title": "Instalar %{wallet}", + "description": "Escanee con su teléfono para descargar en iOS o Android", + "continue": { + "label": "Continuar" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "Conectar" + }, + "learn_more": { + "label": "Obtener más información" + } + }, + "extension": { + "refresh": { + "label": "Actualizar" + }, + "learn_more": { + "label": "Obtener más información" + } + }, + "desktop": { + "connect": { + "label": "Conectar" + }, + "learn_more": { + "label": "Obtener más información" + } + } + }, + "chains": { + "title": "Cambiar redes", + "wrong_network": "Se detectó la red incorrecta, cambia o desconéctate para continuar.", + "confirm": "Confirmar en la cartera", + "switching_not_supported": "Tu cartera no admite cambiar las redes desde %{appName}. Intenta cambiar las redes desde tu cartera.", + "switching_not_supported_fallback": "Su billetera no admite el cambio de redes desde esta aplicación. Intente cambiar de red desde dentro de su billetera en su lugar.", + "disconnect": "Desconectar", + "connected": "Conectado" + }, + "profile": { + "disconnect": { + "label": "Desconectar" + }, + "copy_address": { + "label": "Copiar dirección", + "copied": "¡Copiado!" + }, + "explorer": { + "label": "Ver más en el explorador" + }, + "transactions": { + "description": "%{appName} transacciones aparecerán aquí...", + "description_fallback": "Tus transacciones aparecerán aquí...", + "recent": { + "title": "Transacciones recientes" + }, + "clear": { + "label": "Borrar Todo" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "Agrega Ready a tu pantalla de inicio para un acceso más rápido a tu billetera.", + "title": "Abre la aplicación Ready" + }, + "step2": { + "description": "Cree una billetera y un nombre de usuario, o importe una billetera existente.", + "title": "Crea o Importa una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón Escanear QR" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "Instala la extensión BeraSig", + "description": "Recomendamos anclar BeraSig a tu barra de tareas para acceder más fácilmente a tu cartera." + }, + "step2": { + "title": "Crea una Cartera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Best Wallet", + "description": "Agrega Best Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Bifrost Wallet en su pantalla de inicio para un acceso más rápido.", + "title": "Abra la aplicación Bifrost Wallet" + }, + "step2": { + "description": "Cree o importe una billetera usando su frase de recuperación.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un aviso de conexión para que conecte su billetera.", + "title": "Toque el botón de escaneo" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "Recomendamos colocar Bitget Wallet en su pantalla de inicio para un acceso más rápido.", + "title": "Abra la aplicación Bitget Wallet" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un aviso de conexión para que pueda conectar su billetera.", + "title": "Toque el botón de escanear" + } + }, + "extension": { + "step1": { + "description": "Recomendamos anclar Bitget Wallet a su barra de tareas para un acceso más rápido a su billetera.", + "title": "Instale la extensión de la Billetera Bitget" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "Recomendamos anclar Bitski a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión Bitski" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configure su billetera, haga clic abajo para actualizar el navegador y cargar la extensión.", + "title": "Actualiza tu navegador" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Bitverse Wallet", + "description": "Agregue Bitverse Wallet a su pantalla de inicio para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "Abra la aplicación Bloom Wallet", + "description": "Recomendamos colocar Bloom Wallet en su pantalla de inicio para un acceso más rápido." + }, + "step2": { + "description": "Cree o importe una billetera usando su frase de recuperación.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de tener una billetera, haga clic en Conectar para conectarse a través de Bloom. Aparecerá un aviso de conexión en la aplicación para que confirme la conexión.", + "title": "Haga clic en Conectar" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Bybit en su pantalla de inicio para un acceso más rápido a su billetera.", + "title": "Abra la aplicación Bybit" + }, + "step2": { + "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón de escaneo" + } + }, + "extension": { + "step1": { + "description": "Haga clic en la parte superior derecha de su navegador y ancle Bybit Wallet para un acceso fácil.", + "title": "Instale la extensión Bybit Wallet" + }, + "step2": { + "description": "Crea una nueva billetera o importa una existente.", + "title": "Crear o Importar una billetera" + }, + "step3": { + "description": "Una vez que haya configurado Bybit Wallet, haga clic a continuación para actualizar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Binance en tu pantalla de inicio para un acceso más rápido a tu billetera.", + "title": "Abre la aplicación Binance" + }, + "step2": { + "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón WalletConnect" + } + }, + "extension": { + "step1": { + "title": "Instale la extensión Binance Wallet", + "description": "Recomendamos anclar Binance Wallet a su barra de tareas para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crea o Importa una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Coin98 Wallet en la pantalla de inicio para un acceso más rápido a su billetera.", + "title": "Abra la aplicación Coin98 Wallet" + }, + "step2": { + "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un aviso de conexión para que conecte su billetera.", + "title": "Toque el botón WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Haga clic en la parte superior derecha de su navegador y fije Coin98 Wallet para un fácil acceso.", + "title": "Instale la extensión Coin98 Wallet" + }, + "step2": { + "description": "Crea una nueva billetera o importa una existente.", + "title": "Crear o Importar una billetera" + }, + "step3": { + "description": "Una vez que configures Coin98 Wallet, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refresca tu navegador" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Coinbase Wallet en tu pantalla de inicio para un acceso más rápido.", + "title": "Abre la aplicación de la Billetera Coinbase" + }, + "step2": { + "description": "Puedes respaldar tu billetera fácilmente utilizando la función de respaldo en la nube.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera.", + "title": "Pulsa el botón de escanear" + } + }, + "extension": { + "step1": { + "description": "Te recomendamos anclar la Billetera Coinbase a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión de la Billetera Coinbase" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configure su billetera, haga clic abajo para refrescar el navegador y cargar la extensión.", + "title": "Refresca tu navegador" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "Recomendamos anclar la Billetera Compass a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión de la Billetera Compass" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Core en su pantalla de inicio para un acceso más rápido a su billetera.", + "title": "Abra la aplicación Core" + }, + "step2": { + "description": "Puedes respaldar fácilmente tu billetera utilizando nuestra función de respaldo en tu teléfono.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera.", + "title": "Toque el botón WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Recomendamos fijar Core a tu barra de tareas para acceder más rápido a tu billetera.", + "title": "Instala la extensión Core" + }, + "step2": { + "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refresca tu navegador" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "Recomendamos poner FoxWallet en tu pantalla de inicio para un acceso más rápido.", + "title": "Abre la aplicación FoxWallet" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá una solicitud de conexión para que conectes tu billetera.", + "title": "Toca el botón de escanear" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "Recomendamos poner la Billetera Frontier en tu pantalla principal para un acceso más rápido.", + "title": "Abre la aplicación de la Billetera Frontier" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje para que conectes tu billetera.", + "title": "Haz clic en el botón de escaneo" + } + }, + "extension": { + "step1": { + "description": "Recomendamos anclar la billetera Frontier a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión de la billetera Frontier" + }, + "step2": { + "description": "Asegúrese de hacer una copia de seguridad de su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configure su billetera, haga clic a continuación para actualizar el navegador y cargar la extensión.", + "title": "Actualizar tu navegador" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "Abrir la aplicación imToken", + "description": "Pon la aplicación imToken en tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca el Icono del Escáner en la esquina superior derecha", + "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "Recomendamos poner ioPay en tu pantalla de inicio para un acceso más rápido a tu billetera.", + "title": "Abre la aplicación ioPay" + }, + "step2": { + "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón WalletConnect" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "Recomendamos anclar Kaikas a su barra de tareas para un acceso más rápido a su billetera.", + "title": "Instale la extensión Kaikas" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + }, + "qr_code": { + "step1": { + "title": "Abra la aplicación Kaikas", + "description": "Ponga la aplicación Kaikas en su pantalla de inicio para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca el Icono del Escáner en la esquina superior derecha", + "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "Recomendamos anclar Kaia a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión Kaia" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + }, + "qr_code": { + "step1": { + "title": "Abre la aplicación Kaia", + "description": "Pon la aplicación Kaia en tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca el Icono del Escáner en la esquina superior derecha", + "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Kraken Wallet", + "description": "Agrega la Billetera Kraken a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Kresus Wallet", + "description": "Agregue Kresus Wallet a su pantalla de inicio para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "Instala la extensión de Magic Eden", + "description": "Recomendamos anclar Magic Eden a tu barra de tareas para acceder más fácilmente a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "Abre la aplicación MetaMask", + "description": "Recomendamos colocar MetaMask en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Toca el botón de escanear", + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión MetaMask", + "description": "Recomendamos anclar MetaMask a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de hacer una copia de seguridad de tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Refresca tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "Instala la extensión NestWallet", + "description": "Recomendamos fijar NestWallet a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "Abre la aplicación OKX Wallet", + "description": "Recomendamos colocar OKX Wallet en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Toca el botón de escanear", + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión de Billetera OKX", + "description": "Recomendamos anclar la Billetera OKX a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Refresca tu navegador", + "description": "Una vez que configure su billetera, haga clic abajo para actualizar el navegador y cargar la extensión." + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Omni", + "description": "Agregue Omni a su pantalla de inicio para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crear una nueva billetera o importar una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla principal, escanea el código y confirma el aviso para conectar." + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "Ponga 1inch Wallet en su pantalla de inicio para un acceso más rápido a su billetera.", + "title": "Abra la aplicación 1inch Wallet" + }, + "step2": { + "description": "Cree una billetera y un nombre de usuario, o importe una billetera existente.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón Escanear QR" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "Abre la aplicación TokenPocket", + "description": "Recomendamos colocar TokenPocket en tu pantalla principal para un acceso más rápido." + }, + "step2": { + "title": "Crear o importar una Billetera", + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Toca el botón de escaneo", + "description": "Después de escanear, aparecerá una solicitud de conexión para que puedas conectar tu billetera." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión TokenPocket", + "description": "Recomendamos anclar TokenPocket a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Actualiza tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Trust Wallet", + "description": "Ubica Trust Wallet en tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca WalletConnect en Configuraciones", + "description": "Elige Nueva Conexión, luego escanea el código QR y confirma el aviso para conectar." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión de Trust Wallet", + "description": "Haz clic en la parte superior derecha de tu navegador y fija Trust Wallet para un fácil acceso." + }, + "step2": { + "title": "Crea o Importa una billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Refresca tu navegador", + "description": "Una vez que configures Trust Wallet, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Uniswap", + "description": "Agrega la billetera Uniswap a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca el icono QR y escanea", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Zerion", + "description": "Recomendamos poner Zerion en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Toca el botón de escanear", + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión Zerion", + "description": "Recomendamos anclar Zerion a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Actualiza tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Rainbow", + "description": "Recomendamos poner Rainbow en tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Puedes respaldar fácilmente tu billetera usando nuestra función de respaldo en tu teléfono." + }, + "step3": { + "title": "Toca el botón de escanear", + "description": "Después de escanear, aparecerá una solicitud de conexión para que conectes tu billetera." + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "Recomendamos anclar la Billetera Enkrypt a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala la extensión de Billetera Enkrypt" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión.", + "title": "Refresca tu navegador" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "Recomendamos anclar Frame a tu barra de tareas para un acceso más rápido a tu billetera.", + "title": "Instala Frame y la extensión complementaria" + }, + "step2": { + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refresca tu navegador" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "Instale la extensión de Billetera OneKey", + "description": "Recomendamos anclar la Billetera OneKey a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Actualiza tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "Abre la aplicación ParaSwap", + "description": "Agrega ParaSwap Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "Instala la extensión Phantom", + "description": "Recomendamos fijar Phantom a tu barra de tareas para un acceso más fácil a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." + }, + "step3": { + "title": "Actualiza tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "Instala la extensión Rabby", + "description": "Recomendamos anclar Rabby a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Actualiza tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para actualizar el navegador y cargar la extensión." + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "Recomendamos poner Ronin Wallet en su pantalla de inicio para un acceso más rápido.", + "title": "Abra la aplicación Ronin Wallet" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón de escaneo" + } + }, + "extension": { + "step1": { + "description": "Recomendamos anclar Ronin Wallet a su barra de tareas para un acceso más rápido a su billetera.", + "title": "Instale la extensión Ronin Wallet" + }, + "step2": { + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", + "title": "Refrescar tu navegador" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "Instale la extensión Ramper", + "description": "Recomendamos anclar Ramper a su barra de tareas para un acceso más fácil a su billetera." + }, + "step2": { + "title": "Crea una Cartera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "Instala la extensión Core", + "description": "Recomendamos anclar Safeheron a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Refresca tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "Instala la extensión de Taho", + "description": "Recomendamos anclar Taho a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crea o Importa una Billetera", + "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." + }, + "step3": { + "title": "Refresca tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "Instale la extensión Wigwam", + "description": "Recomendamos anclar Wigwam a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "Instala la extensión de Talisman", + "description": "Recomendamos anclar Talisman a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crea o importa una billetera Ethereum", + "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase de recuperación con nadie." + }, + "step3": { + "title": "Recarga tu navegador", + "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "Instala la extensión CTRL Wallet", + "description": "Recomendamos anclar CTRL Wallet a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crea o Importa una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Zeal", + "description": "Agrega Zeal Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el icono de QR y escanee", + "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." + } + }, + "extension": { + "step1": { + "title": "Instale la extensión Zeal", + "description": "Recomendamos anclar Zeal a su barra de tareas para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "Instale la extensión de la billetera SafePal", + "description": "Haga clic en la esquina superior derecha de su navegador y ancle SafePal Wallet para un fácil acceso." + }, + "step2": { + "title": "Crear o Importar una billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configure la Billetera SafePal, haga clic abajo para refrescar el navegador y cargar la extensión." + } + }, + "qr_code": { + "step1": { + "title": "Abra la aplicación Billetera SafePal", + "description": "Coloque la Billetera SafePal en su pantalla de inicio para un acceso más rápido a su billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toca WalletConnect en Configuraciones", + "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "Instala la extensión Desig", + "description": "Recomendamos anclar Desig a tu barra de tareas para acceder más fácilmente a tu cartera." + }, + "step2": { + "title": "Crea una Cartera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "Instala la extensión SubWallet", + "description": "Recomendamos anclar SubWallet a tu barra de tareas para acceder a tu cartera más rápidamente." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase de recuperación con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + }, + "qr_code": { + "step1": { + "title": "Abre la aplicación SubWallet", + "description": "Recomendamos colocar SubWallet en tu pantalla principal para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "Instala la extensión CLV Wallet", + "description": "Recomendamos anclar la billetera CLV a tu barra de tareas para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + }, + "qr_code": { + "step1": { + "title": "Abra la aplicación CLV Wallet", + "description": "Recomendamos colocar la billetera CLV en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Okto", + "description": "Agrega Okto a tu pantalla de inicio para un acceso rápido" + }, + "step2": { + "title": "Crea una billetera MPC", + "description": "Crea una cuenta y genera una billetera" + }, + "step3": { + "title": "Toca WalletConnect en Configuraciones", + "description": "Toca el icono de Escanear QR en la parte superior derecha y confirma el mensaje para conectar." + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "Abra la aplicación Ledger Live", + "description": "Recomendamos poner Ledger Live en su pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Configure su Ledger", + "description": "Configure un nuevo Ledger o conéctese a uno existente." + }, + "step3": { + "title": "Conectar", + "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." + } + }, + "qr_code": { + "step1": { + "title": "Abra la aplicación Ledger Live", + "description": "Recomendamos poner Ledger Live en su pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Configure su Ledger", + "description": "Puedes sincronizar con la aplicación de escritorio o conectar tu Ledger." + }, + "step3": { + "title": "Escanea el código", + "description": "Toca WalletConnect y luego cambia a Scanner. Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "Abre la aplicación Valora", + "description": "Recomendamos poner Valora en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Gate", + "description": "Recomendamos poner Gate en tu pantalla de inicio para un acceso más rápido." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + }, + "extension": { + "step1": { + "title": "Instala la extensión de Gate", + "description": "Recomendamos fijar Gate a tu barra de tareas para un acceso más fácil a tu billetera." + }, + "step2": { + "title": "Crear o Importar una Billetera", + "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." + }, + "step3": { + "title": "Refrescar tu navegador", + "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "Abre keys.gemini.com", + "description": "Visita keys.gemini.com en tu navegador móvil - no se requiere descargar una app." + }, + "step2": { + "title": "Crea Tu Billetera Al Instante", + "description": "Configura tu billetera inteligente en segundos usando la autenticación integrada de tu dispositivo." + }, + "step3": { + "title": "Escanear para Conectar", + "description": "Escanea el código QR para conectar tu billetera al instante - simplemente funciona." + } + }, + "extension": { + "step1": { + "title": "Ve a keys.gemini.com", + "description": "No se necesitan extensiones o descargas - tu billetera vive de forma segura en el navegador." + }, + "step2": { + "title": "Configuración con Un Solo Clic", + "description": "Crea tu billetera inteligente al instante con autenticación de clave de acceso - más fácil que cualquier otra billetera." + }, + "step3": { + "title": "Conectar y listo", + "description": "Aprueba la conexión y listo - la billetera sin opiniones que simplemente funciona." + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "Coloque xPortal en su pantalla de inicio a su billetera para un acceso más rápido.", + "title": "Abra la aplicación xPortal" + }, + "step2": { + "description": "Crea una billetera o importa una existente.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón Escanear QR" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "Recomendamos colocar la billetera MEW en tu pantalla de inicio para un acceso más rápido.", + "title": "Abre la aplicación MEW Wallet" + }, + "step2": { + "description": "Puedes respaldar tu billetera fácilmente utilizando la función de respaldo en la nube.", + "title": "Crear o Importar una Billetera" + }, + "step3": { + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", + "title": "Toque el botón de escaneo" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "Abre la aplicación ZilPay", + "description": "Agrega ZilPay a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crea o Importa una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "Abra la aplicación Nova Wallet", + "description": "Agrega Nova Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." + }, + "step2": { + "title": "Crea o Importa una Billetera", + "description": "Crea una nueva billetera o importa una existente." + }, + "step3": { + "title": "Toque el botón de escaneo", + "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." + } + } + } + } +} +`;export{e as default}; diff --git a/dist/assets/ethereum-RGGVA4PY-SWGOlkuk.js b/dist/assets/ethereum-RGGVA4PY-SWGOlkuk.js new file mode 100644 index 0000000..63d865a --- /dev/null +++ b/dist/assets/ethereum-RGGVA4PY-SWGOlkuk.js @@ -0,0 +1 @@ +var e="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%2325292E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23a)%22%20fill-opacity%3D%22.3%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M8.19%2014.77%2014%2018.21l5.8-3.44-5.8%208.19-5.81-8.19Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m14%2016.93-5.81-3.44L14%204.34l5.81%209.15L14%2016.93Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%220%22%20x2%3D%2214%22%20y1%3D%220%22%20y2%3D%2228%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2214%22%20x2%3D%2214%22%20y1%3D%2214.77%22%20y2%3D%2222.96%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%22.9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E%0A";export{e as default}; diff --git a/dist/assets/etherscan-CvUnTVeC.js b/dist/assets/etherscan-CvUnTVeC.js new file mode 100644 index 0000000..4f2cb53 --- /dev/null +++ b/dist/assets/etherscan-CvUnTVeC.js @@ -0,0 +1,6 @@ +import{w as c}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=c` + +`;export{i as etherscanSvg}; diff --git a/dist/assets/events-DQ172AOg.js b/dist/assets/events-DQ172AOg.js new file mode 100644 index 0000000..565c01c --- /dev/null +++ b/dist/assets/events-DQ172AOg.js @@ -0,0 +1 @@ +var p={exports:{}},x;function T(){if(x)return p.exports;x=1;var a=typeof Reflect=="object"?Reflect:null,h=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},v;a&&typeof a.ownKeys=="function"?v=a.ownKeys:Object.getOwnPropertySymbols?v=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:v=function(e){return Object.getOwnPropertyNames(e)};function C(t){console&&console.warn&&console.warn(t)}var d=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}p.exports=o,p.exports.once=M,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var L=10;function l(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return L},set:function(t){if(typeof t!="number"||t<0||d(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");L=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||d(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function m(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return m(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(s=n[0]),s instanceof Error)throw s;var u=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw u.context=s,u}var c=f[e];if(c===void 0)return!1;if(typeof c=="function")h(c,this,n);else for(var O=c.length,P=b(c,O),r=0;r0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,C(u)}return t}o.prototype.addListener=function(e,n){return y(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return y(this,e,n,!0)};function R(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function g(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=R.bind(r);return i.listener=n,r.wrapFn=i,i}o.prototype.once=function(e,n){return l(n),this.on(e,g(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return l(n),this.prependListener(e,g(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,i,f,s,u;if(l(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(f=-1,s=r.length-1;s>=0;s--)if(r[s]===n||r[s].listener===n){u=r[s].listener,f=s;break}if(f<0)return this;f===0?r.shift():j(r,f),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,u||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var f=Object.keys(r),s;for(i=0;i=0;i--)this.removeListener(e,n[i]);return this};function _(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?N(i):b(i,i.length)}o.prototype.listeners=function(e){return _(this,e,!0)},o.prototype.rawListeners=function(e){return _(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):w.call(t,e)},o.prototype.listenerCount=w;function w(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?v(this._events):[]};function b(t,e){for(var n=new Array(e),r=0;r + + +`;export{m as exclamationTriangleSvg}; diff --git a/dist/assets/extension-D8VLaaI7.js b/dist/assets/extension-D8VLaaI7.js new file mode 100644 index 0000000..d2f31a7 --- /dev/null +++ b/dist/assets/extension-D8VLaaI7.js @@ -0,0 +1,8 @@ +import{w as a}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=a` + +`;export{l as extensionSvg}; diff --git a/dist/assets/external-link-FOmorQPu.js b/dist/assets/external-link-FOmorQPu.js new file mode 100644 index 0000000..bec008e --- /dev/null +++ b/dist/assets/external-link-FOmorQPu.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const n=o` + +`;export{n as externalLinkSvg}; diff --git a/dist/assets/facebook-DKNIyHFb.js b/dist/assets/facebook-DKNIyHFb.js new file mode 100644 index 0000000..8460832 --- /dev/null +++ b/dist/assets/facebook-DKNIyHFb.js @@ -0,0 +1,26 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=l` + + + + + + + + + + + + + + + +`;export{p as facebookSvg}; diff --git a/dist/assets/farcaster-DAlF0Frl.js b/dist/assets/farcaster-DAlF0Frl.js new file mode 100644 index 0000000..a8707bd --- /dev/null +++ b/dist/assets/farcaster-DAlF0Frl.js @@ -0,0 +1,12 @@ +import{w as h}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const f=h` + + + + +`;export{f as farcasterSvg}; diff --git a/dist/assets/filters-a4jzre7v.js b/dist/assets/filters-a4jzre7v.js new file mode 100644 index 0000000..c4bc595 --- /dev/null +++ b/dist/assets/filters-a4jzre7v.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` + +`;export{t as filtersSvg}; diff --git a/dist/assets/flow-5FQJFCTK-CUie2reO.js b/dist/assets/flow-5FQJFCTK-CUie2reO.js new file mode 100644 index 0000000..3d20a4d --- /dev/null +++ b/dist/assets/flow-5FQJFCTK-CUie2reO.js @@ -0,0 +1 @@ +var C="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Ccircle%20fill%3D%22%2300ef8b%22%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%2F%3E%3Crect%20fill%3D%22%23fff%22%20x%3D%2257.82%22%20y%3D%2242.18%22%20width%3D%2214.12%22%20height%3D%2214.12%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.71%2C61.59a5.3%2C5.3%2C0%2C1%2C1-5.3-5.3h5.3V42.18h-5.3A19.41%2C19.41%2C0%2C1%2C0%2C57.82%2C61.59v-5.3H43.71Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M63.12%2C35.12H79V21H63.12A19.43%2C19.43%2C0%2C0%2C0%2C43.71%2C40.41v1.77H57.82V40.41A5.3%2C5.3%2C0%2C0%2C1%2C63.12%2C35.12Z%22%2F%3E%3Cpolygon%20fill%3D%22%2316ff99%22%20points%3D%2243.71%2056.29%2057.82%2056.29%2057.82%2056.29%2057.82%2042.18%2057.82%2042.18%2043.71%2042.18%2043.71%2056.29%22%2F%3E%3C%2Fsvg%3E";export{C as default}; diff --git a/dist/assets/fr_FR-IGGVC6RM-D8LpUM75.js b/dist/assets/fr_FR-IGGVC6RM-D8LpUM75.js new file mode 100644 index 0000000..675e667 --- /dev/null +++ b/dist/assets/fr_FR-IGGVC6RM-D8LpUM75.js @@ -0,0 +1,1487 @@ +var e=`{ + "connect_wallet": { + "label": "Connecter le portefeuille", + "wrong_network": { + "label": "Réseau incorrect" + } + }, + "intro": { + "title": "Qu'est-ce qu'un portefeuille?", + "description": "Un portefeuille est utilisé pour envoyer, recevoir, stocker et afficher des actifs numériques. C'est aussi une nouvelle façon de se connecter, sans avoir besoin de créer de nouveaux comptes et mots de passe sur chaque site.", + "digital_asset": { + "title": "Un foyer pour vos actifs numériques", + "description": "Les portefeuilles sont utilisés pour envoyer, recevoir, stocker et afficher des actifs numériques comme Ethereum et les NFTs." + }, + "login": { + "title": "Une nouvelle façon de se connecter", + "description": "Au lieu de créer de nouveaux comptes et mots de passe sur chaque site Web, connectez simplement votre portefeuille." + }, + "get": { + "label": "Obtenir un portefeuille" + }, + "learn_more": { + "label": "En savoir plus" + } + }, + "sign_in": { + "label": "Vérifiez votre compte", + "description": "Pour terminer la connexion, vous devez signer un message dans votre portefeuille pour vérifier que vous êtes le propriétaire de ce compte.", + "message": { + "send": "Envoyer le message", + "preparing": "Préparation du message...", + "cancel": "Annuler", + "preparing_error": "Erreur lors de la préparation du message, veuillez réessayer!" + }, + "signature": { + "waiting": "En attente de la signature...", + "verifying": "Vérification de la signature...", + "signing_error": "Erreur lors de la signature du message, veuillez réessayer!", + "verifying_error": "Erreur lors de la vérification de la signature, veuillez réessayer!", + "oops_error": "Oups, quelque chose a mal tourné!" + } + }, + "connect": { + "label": "Connecter", + "title": "Connecter un portefeuille", + "new_to_ethereum": { + "description": "Nouveau aux portefeuilles Ethereum?", + "learn_more": { + "label": "En savoir plus" + } + }, + "learn_more": { + "label": "En savoir plus" + }, + "recent": "Récents", + "status": { + "opening": "Ouverture %{wallet}...", + "connecting": "Connect :)ing", + "connect_mobile": "Continuer dans %{wallet}", + "not_installed": "%{wallet} n'est pas installé", + "not_available": "%{wallet} n'est pas disponible", + "confirm": "Confirmez la connexion dans l'extension", + "confirm_mobile": "Accepter la demande de connexion dans le portefeuille" + }, + "secondary_action": { + "get": { + "description": "Vous n'avez pas de %{wallet}?", + "label": "OBTENIR" + }, + "install": { + "label": "INSTALLER" + }, + "retry": { + "label": "RÉESSAYER" + } + }, + "walletconnect": { + "description": { + "full": "Vous avez besoin du modal officiel de WalletConnect ?", + "compact": "Besoin du modal de WalletConnect ?" + }, + "open": { + "label": "OUVRIR" + } + } + }, + "connect_scan": { + "title": "Scannez avec %{wallet}", + "fallback_title": "Scannez avec votre téléphone" + }, + "connector_group": { + "installed": "Installé", + "recommended": "Recommandé", + "other": "Autre", + "popular": "Populaire", + "more": "Plus", + "others": "Autres" + }, + "get": { + "title": "Obtenez un portefeuille", + "action": { + "label": "OBTENIR" + }, + "mobile": { + "description": "Portefeuille mobile" + }, + "extension": { + "description": "Extension de navigateur" + }, + "mobile_and_extension": { + "description": "Portefeuille mobile et extension" + }, + "mobile_and_desktop": { + "description": "Portefeuille mobile et de bureau" + }, + "looking_for": { + "title": "Ce n'est pas ce que vous cherchez ?", + "mobile": { + "description": "Sélectionnez un portefeuille sur l'écran principal pour commencer avec un autre fournisseur de portefeuille." + }, + "desktop": { + "compact_description": "Sélectionnez un portefeuille sur l'écran principal pour commencer avec un autre fournisseur de portefeuille.", + "wide_description": "Sélectionnez un portefeuille sur la gauche pour commencer avec un autre fournisseur de portefeuille." + } + } + }, + "get_options": { + "title": "Commencez avec %{wallet}", + "short_title": "Obtenez %{wallet}", + "mobile": { + "title": "%{wallet} pour mobile", + "description": "Utilisez le portefeuille mobile pour explorer le monde d'Ethereum.", + "download": { + "label": "Obtenez l'application" + } + }, + "extension": { + "title": "%{wallet} pour %{browser}", + "description": "Accédez à votre portefeuille directement depuis votre navigateur web préféré.", + "download": { + "label": "Ajouter à %{browser}" + } + }, + "desktop": { + "title": "%{wallet} pour %{platform}", + "description": "Accédez à votre portefeuille nativement depuis votre puissant ordinateur de bureau.", + "download": { + "label": "Ajouter à %{platform}" + } + } + }, + "get_mobile": { + "title": "Installer %{wallet}", + "description": "Scannez avec votre téléphone pour télécharger sur iOS ou Android", + "continue": { + "label": "Continuer" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "Connecter" + }, + "learn_more": { + "label": "En savoir plus" + } + }, + "extension": { + "refresh": { + "label": "Rafraîchir" + }, + "learn_more": { + "label": "En savoir plus" + } + }, + "desktop": { + "connect": { + "label": "Connecter" + }, + "learn_more": { + "label": "En savoir plus" + } + } + }, + "chains": { + "title": "Changer de réseau", + "wrong_network": "Mauvais réseau détecté, changez ou déconnectez-vous pour continuer.", + "confirm": "Confirmer dans le portefeuille", + "switching_not_supported": "Votre portefeuille ne supporte pas le changement de réseau depuis %{appName}. Essayez de changer de réseau depuis votre portefeuille.", + "switching_not_supported_fallback": "Votre portefeuille ne prend pas en charge le changement de réseau à partir de cette application. Essayez de changer de réseau à partir de votre portefeuille à la place.", + "disconnect": "Déconnecter", + "connected": "Connecté" + }, + "profile": { + "disconnect": { + "label": "Déconnecter" + }, + "copy_address": { + "label": "Copier l'adresse", + "copied": "Copié !" + }, + "explorer": { + "label": "Voir plus sur l'explorateur" + }, + "transactions": { + "description": "%{appName} transactions apparaîtront ici...", + "description_fallback": "Vos transactions apparaîtront ici...", + "recent": { + "title": "Transactions Récentes" + }, + "clear": { + "label": "Tout supprimer" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "Ajoutez Ready à votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application Ready" + }, + "step2": { + "description": "Créez un portefeuille et un nom d'utilisateur, ou importez un portefeuille existant.", + "title": "Créez ou Importer un portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton Scan QR" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "Installez l'extension BeraSig", + "description": "Nous vous recommandons d'épingler BeraSig à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Best Wallet", + "description": "Ajoutez Best Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de mettre le portefeuille Bifrost sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application Bifrost Wallet" + }, + "step2": { + "description": "Créez ou importez un portefeuille en utilisant votre phrase de récupération.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après votre scan, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de placer Bitget Wallet sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application Bitget Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après le scan, une incitation de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + }, + "extension": { + "step1": { + "description": "Nous vous recommandons d'épingler Bitget Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension de portefeuille Bitget" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", + "title": "Créez ou Importez un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Bitski à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Bitski" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Bitverse Wallet", + "description": "Ajoutez Bitverse Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "Ouvrez l'application Bloom Wallet", + "description": "Nous recommandons de placer Bloom Wallet sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "description": "Créez ou importez un portefeuille en utilisant votre phrase de récupération.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir obtenu un portefeuille, cliquez sur Connecter pour vous connecter via Bloom. Une invite de connexion apparaîtra dans l'application pour que vous confirmiez la connexion.", + "title": "Cliquez sur Connecter" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "Nous recommandons de placer Bybit sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application Bybit" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + }, + "extension": { + "step1": { + "description": "Cliquez en haut à droite de votre navigateur et épinglez le portefeuille Bybit pour un accès facile.", + "title": "Installez l'extension Bybit Wallet" + }, + "step2": { + "description": "Créez un nouveau portefeuille ou importez-en un existant.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré Bybit Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de mettre Binance sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application Binance" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton WalletConnect" + } + }, + "extension": { + "step1": { + "title": "Installez l'extension Binance Wallet", + "description": "Nous recommandons d'épingler Binance Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de placer Coin98 Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application Coin98 Wallet" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après que vous ayez scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Cliquez en haut à droite de votre navigateur et épinglez Coin98 Wallet pour un accès facile.", + "title": "Installez l'extension Coin98 Wallet" + }, + "step2": { + "description": "Créez un nouveau portefeuille ou importez-en un existant.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré Coin98 Wallet, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "Nous recommandons de placer Coinbase Wallet sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application Coinbase Wallet" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant la fonction de sauvegarde cloud.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après avoir scanné, une invite de connexion s'affichera pour que vous puissiez connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + }, + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Coinbase Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Coinbase Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sûre. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Actualisez votre navigateur" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "Nous vous recommandons d'épingler Compass Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Compass Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "Nous recommandons de placer Core sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application Core" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Core à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Core" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créez ou Importer un Portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "Nous recommandons de mettre FoxWallet sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application FoxWallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après avoir scanné, une invitation à la connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de placer le portefeuille Frontier sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application Frontier Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + }, + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Frontier Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Frontier Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", + "title": "Créez ou importez un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application imToken", + "description": "Placez l'application imToken sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou importez un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant ." + }, + "step3": { + "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", + "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "Nous recommandons de placer ioPay sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application ioPay" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton WalletConnect" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Kaikas à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Kaikas" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application Kaikas", + "description": "Placez l'application Kaikas sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", + "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "Nous vous recommandons d'épingler Kaia à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Kaia" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application Kaia", + "description": "Mettez l'application Kaia sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", + "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Kraken Wallet", + "description": "Ajoutez Kraken Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Kresus Wallet", + "description": "Ajoutez Kresus Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "Installez l'extension Magic Eden", + "description": "Nous vous recommandons d'épingler Magic Eden à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application MetaMask", + "description": "Nous vous recommandons de mettre MetaMask sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Veillez à sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + }, + "extension": { + "step1": { + "title": "Installez l’extension de MetaMask", + "description": "Nous recommandons d'épingler MetaMask à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "Installez l'extension NestWallet", + "description": "Nous vous recommandons d'épingler NestWallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application OKX Wallet", + "description": "Nous recommandons de mettre OKX Wallet sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Appuyez sur le bouton de numérisation", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + }, + "extension": { + "step1": { + "title": "Installez l'extension de portefeuille OKX", + "description": "Nous vous recommandons d'épingler le portefeuille OKX à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Omni", + "description": "Ajoutez Omni à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Appuyez sur l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "Placez 1inch Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application 1inch Wallet" + }, + "step2": { + "description": "Créez un portefeuille et un nom d'utilisateur, ou importez un portefeuille existant.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton Scan QR" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application TokenPocket", + "description": "Nous vous recommandons de mettre TokenPocket sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créez ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille à l'aide d'une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après votre scan, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + }, + "extension": { + "step1": { + "title": "Installez l'extension TokenPocket", + "description": "Nous recommandons d'épingler TokenPocket à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Trust Wallet", + "description": "Placez Trust Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Créer un nouveau portefeuille ou en importer un existant." + }, + "step3": { + "title": "Appuyez sur WalletConnect dans les paramètres", + "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." + } + }, + "extension": { + "step1": { + "title": "Installez l'extension Trust Wallet", + "description": "Cliquez en haut à droite de votre navigateur et épinglez Trust Wallet pour un accès facile." + }, + "step2": { + "title": "Créer ou importer un portefeuille", + "description": "Créer un nouveau portefeuille ou en importer un existant." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré Trust Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Uniswap", + "description": "Ajoutez Uniswap Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou importez un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Tapez sur l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Zerion", + "description": "Nous vous recommandons de mettre Zerion sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." + } + }, + "extension": { + "step1": { + "title": "Installer l'extension Zerion", + "description": "Nous recommandons d'épingler Zerion à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importez un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "Ouvre l'application Rainbow", + "description": "Nous vous recommandons de mettre Rainbow sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importez un portefeuille", + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir scanné, une invite de connexion apparaîtra pour que vous connectiez votre portefeuille." + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "Nous vous recommandons d'épingler Enkrypt Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Enkrypt Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l’extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "Nous vous recommandons d'épingler Frame à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez Frame & l'extension complémentaire" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille à l'aide d'une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", + "title": "Créer ou Importer un portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "Installez l'extension OneKey Wallet", + "description": "Nous vous recommandons d'épingler OneKey Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application ParaSwap", + "description": "Ajoutez ParaSwap Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "Installez l'extension Phantom", + "description": "Nous vous recommandons d'épingler Phantom à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "Installez l'extension Rabby", + "description": "Nous recommandons d'épingler Rabby à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." + }, + "step3": { + "title": "Actualisez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "Nous recommandons de placer Ronin Wallet sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application Ronin Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + }, + "extension": { + "step1": { + "description": "Nous recommandons d'épingler Ronin Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", + "title": "Installez l'extension Ronin Wallet" + }, + "step2": { + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", + "title": "Rafraîchissez votre navigateur" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "Installez l'extension Ramper", + "description": "Nous recommandons d'épingler Ramper à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "Installez l'extension Core", + "description": "Nous recommandons d'épingler Safeheron à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "Installez l'extension Taho", + "description": "Nous vous recommandons d'épingler Taho à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importez un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "Installez l'extension Wigwam", + "description": "Nous vous recommandons d'épingler Wigwam à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "Installez l'extension Talisman", + "description": "Nous vous recommandons d'épingler Talisman à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou importer un portefeuille Ethereum", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "Installez l'extension CTRL Wallet", + "description": "Nous vous recommandons d'épingler CTRL Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importer un portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Zeal", + "description": "Ajoutez Zeal Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Touchez l'icône QR et scannez", + "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." + } + }, + "extension": { + "step1": { + "title": "Installez l'extension Zeal", + "description": "Nous vous recommandons d'épingler Zeal à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "Installez l'extension SafePal Wallet", + "description": "Cliquez en haut à droite de votre navigateur et épinglez SafePal Wallet pour un accès facile." + }, + "step2": { + "title": "Créer ou Importer un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré SafePal Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application SafePal Wallet", + "description": "Mettez SafePal Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur WalletConnect dans les paramètres", + "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "Installez l'extension Desig", + "description": "Nous vous recommandons d'épingler Desig à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "Installez l'extension SubWallet", + "description": "Nous vous recommandons d'épingler SubWallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application SubWallet", + "description": "Nous vous recommandons de mettre SubWallet sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "Installez l'extension CLV Wallet", + "description": "Nous vous recommandons d'épingler CLV Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application CLV Wallet", + "description": "Nous vous recommandons de mettre CLV Wallet sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Okto", + "description": "Ajoutez Okto à votre écran d'accueil pour un accès rapide" + }, + "step2": { + "title": "Créer un portefeuille MPC", + "description": "Créez un compte et générez un portefeuille" + }, + "step3": { + "title": "Appuyez sur WalletConnect dans les paramètres", + "description": "Touchez l'icône 'Scan QR' en haut à droite et confirmez l'invite pour vous connecter." + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "Ouvrez l'application Ledger Live", + "description": "Nous vous recommandons de mettre Ledger Live sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Configurez votre Ledger", + "description": "Configurez un nouveau Ledger ou connectez-vous à un existant." + }, + "step3": { + "title": "Connecter", + "description": "Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." + } + }, + "qr_code": { + "step1": { + "title": "Ouvrez l'application Ledger Live", + "description": "Nous vous recommandons de mettre Ledger Live sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Configurez votre Ledger", + "description": "Vous pouvez soit synchroniser avec l'application de bureau, soit connecter votre Ledger." + }, + "step3": { + "title": "Scannez le code", + "description": "Appuyez sur WalletConnect puis passez au Scanner. Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Valora", + "description": "Nous vous recommandons de mettre Valora sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou importer un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Gate", + "description": "Nous vous recommandons de mettre Gate sur votre écran d'accueil pour un accès plus rapide." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + }, + "extension": { + "step1": { + "title": "Installez l'extension Gate", + "description": "Nous vous recommandons d'épingler Gate à votre barre des tâches pour un accès plus facile à votre portefeuille." + }, + "step2": { + "title": "Créer ou Importer un Portefeuille", + "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." + }, + "step3": { + "title": "Rafraîchissez votre navigateur", + "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "Ouvrez keys.gemini.com", + "description": "Visitez keys.gemini.com sur votre navigateur mobile - aucun téléchargement d'application requis." + }, + "step2": { + "title": "Créez votre portefeuille instantanément", + "description": "Configurez votre portefeuille intelligent en quelques secondes grâce à l'authentification intégrée à votre appareil." + }, + "step3": { + "title": "Scannez pour connecter", + "description": "Scannez le code QR pour connecter instantanément votre portefeuille - ça fonctionne tout simplement." + } + }, + "extension": { + "step1": { + "title": "Accédez à keys.gemini.com", + "description": "Aucune extension ni téléchargement nécessaire - votre portefeuille vit en toute sécurité dans le navigateur." + }, + "step2": { + "title": "Configuration en un clic", + "description": "Créez votre portefeuille intelligent instantanément avec une authentification par clé de passe - plus facile que n'importe quel portefeuille existant." + }, + "step3": { + "title": "Connectez et Allez-y", + "description": "Approuvez la connexion et vous êtes prêt - le portefeuille sans prétention qui fonctionne tout simplement." + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "Mettez xPortal sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", + "title": "Ouvrez l'application xPortal" + }, + "step2": { + "description": "Créez un portefeuille ou importez-en un existant.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton Scan QR" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "Nous vous recommandons de mettre MEW Wallet sur votre écran d'accueil pour un accès plus rapide.", + "title": "Ouvrez l'application MEW Wallet" + }, + "step2": { + "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant la fonction de sauvegarde cloud.", + "title": "Créer ou Importer un Portefeuille" + }, + "step3": { + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", + "title": "Appuyez sur le bouton de scan" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application ZilPay", + "description": "Ajoutez ZilPay à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importer un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "Ouvrez l'application Nova Wallet", + "description": "Ajoutez Nova Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." + }, + "step2": { + "title": "Créez ou Importer un portefeuille", + "description": "Créez un nouveau portefeuille ou importez-en un existant." + }, + "step3": { + "title": "Appuyez sur le bouton de scan", + "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." + } + } + } + } +} +`;export{e as default}; diff --git a/dist/assets/github-Cqvk3h94.js b/dist/assets/github-Cqvk3h94.js new file mode 100644 index 0000000..197fe8d --- /dev/null +++ b/dist/assets/github-Cqvk3h94.js @@ -0,0 +1,18 @@ +import{w as i}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const h=i` + + + + + + + + + + + + + +`;export{h as githubSvg}; diff --git a/dist/assets/gnosis-37ZC4RBL-B137OtHZ.js b/dist/assets/gnosis-37ZC4RBL-B137OtHZ.js new file mode 100644 index 0000000..b839bfa --- /dev/null +++ b/dist/assets/gnosis-37ZC4RBL-B137OtHZ.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23133629%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M8.26%2017.907a4.468%204.468%200%200%201%20.935-2.806l6.377%206.38a4.52%204.52%200%200%201-2.805.935%204.525%204.525%200%200%201-4.507-4.51ZM27.233%2022.411a4.522%204.522%200%200%200%204.202-2.8%204.528%204.528%200%200%200%20.342-1.742%204.528%204.528%200%200%200-.935-2.806l-6.396%206.399a4.469%204.469%200%200%200%202.787.95Z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M32.165%2013.768a6.39%206.39%200%200%201%201.524%204.139%206.437%206.437%200%200%201-6.433%206.431%206.394%206.394%200%200%201-4.124-1.501l-3.095%203.096-3.095-3.096a6.385%206.385%200%200%201-4.128%201.501%206.434%206.434%200%200%201-4.956-10.561l-1.445-1.445-1.38-1.404a17.414%2017.414%200%200%200-2.533%209.07A17.503%2017.503%200%200%200%2013.302%2036.17a17.501%2017.501%200%200%200%2019.064-3.793A17.515%2017.515%200%200%200%2037.5%2020.013c.029-3.198-.84-6.34-2.506-9.07l-2.829%202.825Z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M32.675%207.926A17.448%2017.448%200%200%200%2020.014%202.5%2017.475%2017.475%200%200%200%207.348%207.926c-.425.467-.841.935-1.23%201.436L20%2023.244%2033.88%209.348c-.366-.504-.769-.979-1.205-1.422ZM20.014%2020.002%209.26%209.245a15.036%2015.036%200%200%201%2010.754-4.462%2014.989%2014.989%200%200%201%2010.753%204.462L20.014%2020.002Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/google-D2EWKpif.js b/dist/assets/google-D2EWKpif.js new file mode 100644 index 0000000..f750c96 --- /dev/null +++ b/dist/assets/google-D2EWKpif.js @@ -0,0 +1,18 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const v=l` + + + + +`;export{v as googleSvg}; diff --git a/dist/assets/gravity-J5YQHTYH-Bj6B0uod.js b/dist/assets/gravity-J5YQHTYH-Bj6B0uod.js new file mode 100644 index 0000000..022d1f0 --- /dev/null +++ b/dist/assets/gravity-J5YQHTYH-Bj6B0uod.js @@ -0,0 +1 @@ +var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M34.027%2011.935a.723.723%200%200%200-1.001-.256L14.436%2022.97a6.317%206.317%200%200%201%205.578-9.283c1.499%200%202.875.522%203.958%201.393l-3.955%202.712%2010.278-5.928a.461.461%200%201%200-.493-.78l-2.517%201.725a10.205%2010.205%200%200%200-7.271-3.03C14.362%209.779%209.78%2014.355%209.78%2020c0%201.818.476%203.524%201.308%205.003l-5.212%203.166%205.351-2.927a10.23%2010.23%200%200%200%208.787%204.98c5.652%200%2010.233-4.577%2010.233-10.222v-1.22c0-.957.389-2.18%201.765-2.917a.237.237%200%201%200-.23-.413L19.58%2022.487c1.362-.578%202.404-.93%203.784-1.207%202.876-.577%202.949.793%201.838%202.337-.743%201.034-2.423%202.695-5.186%202.695a6.318%206.318%200%200%201-5.35-2.95L33.748%2012.93a.721.721%200%200%200%20.279-.994Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%223.995%22%20x2%3D%2229.453%22%20y1%3D%2240%22%20y2%3D%220%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.023%22%20stop-color%3D%22%23E57536%22%2F%3E%3Cstop%20offset%3D%22.605%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/dist/assets/hardhat-TX56IT5N-CV1FY-wE.js b/dist/assets/hardhat-TX56IT5N-CV1FY-wE.js new file mode 100644 index 0000000..258b219 --- /dev/null +++ b/dist/assets/hardhat-TX56IT5N-CV1FY-wE.js @@ -0,0 +1 @@ +var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Crect%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22url(%23a)%22%20rx%3D%2214%22%2F%3E%3Cg%20clip-path%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FFF100%22%20d%3D%22M22.458%2018.409v-.875c0-.162-.258-.317-.72-.457l.011-1.088c0-1.676-.49-3.312-1.402-4.685a7.833%207.833%200%200%200-3.702-2.994l-.033-.218a.639.639%200%200%200-.138-.315.592.592%200%200%200-.277-.188%207.429%207.429%200%200%200-4.395%200%20.592.592%200%200%200-.278.188.64.64%200%200%200-.14.315l-.031.203a7.83%207.83%200%200%200-3.727%202.991%208.474%208.474%200%200%200-1.414%204.703v1.093c-.456.139-.71.292-.71.454v.874a.224.224%200%200%200%20.03.147c.227-.178.487-.303.764-.366.704-.181%201.42-.307%202.143-.378.202-.024.407-.003.601.063s.372.174.523.318a2.945%202.945%200%200%200%202.043.836h4.748c.756%200%201.485-.299%202.043-.836a1.42%201.42%200%200%201%20.522-.32c.194-.067.4-.09.602-.066a14.2%2014.2%200%200%201%202.143.376c.262.053.51.167.724.334.012.013.027.024.037.036a.227.227%200%200%200%20.033-.145Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M9.574%2016.569c-.006-.2-.01-.402-.01-.604.003-3.04.677-5.765%201.79-7.668a7.83%207.83%200%200%200-3.728%202.99%208.474%208.474%200%200%200-1.414%204.702v1.093a17.98%2017.98%200%200%201%203.362-.513Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M21.749%2015.989a8.409%208.409%200%200%200-1.773-5.199c.498%201.674.746%203.42.735%205.173%200%20.296-.008.59-.02.88a9.2%209.2%200%200%201%201.045.234l.013-1.088Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M21.664%2018.187c-.705-.18-1.42-.306-2.143-.377a1.365%201.365%200%200%200-.602.064%201.416%201.416%200%200%200-.523.32%202.943%202.943%200%200%201-2.043.835h-4.745a2.945%202.945%200%200%201-2.043-.835%201.417%201.417%200%200%200-.522-.322%201.366%201.366%200%200%200-.602-.065%2014.18%2014.18%200%200%200-2.143.377%201.962%201.962%200%200%200-.764.367c.36.58%204.006%201.19%208.448%201.19s8.086-.612%208.447-1.19c-.013-.012-.027-.023-.037-.035a1.8%201.8%200%200%200-.728-.329Z%22%2F%3E%3Cpath%20fill%3D%22%230A0A0A%22%20d%3D%22m13.98%209.823-1.818%203.258%201.817%201.188V9.824Z%22%2F%3E%3Cpath%20fill%3D%22%234B4D4D%22%20d%3D%22M13.98%209.824v4.444l1.817-1.186-1.817-3.258Zm0%205.09v1.55c.034-.052%201.817-2.738%201.817-2.74l-1.817%201.19Z%22%2F%3E%3Cpath%20fill%3D%22%230A0A0A%22%20d%3D%22m13.98%2014.914-1.818-1.187%201.818%202.737v-1.55Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2214%22%20x2%3D%2214%22%20y1%3D%220%22%20y2%3D%2228%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F7F1FD%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FBFCDC%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%228.783%22%20x2%3D%228.783%22%20y1%3D%2217.082%22%20y2%3D%228.297%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EDCF00%22%2F%3E%3Cstop%20offset%3D%22.33%22%20stop-color%3D%22%23F0D500%22%2F%3E%3Cstop%20offset%3D%22.77%22%20stop-color%3D%22%23F9E500%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FFF100%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%2220.862%22%20x2%3D%2220.862%22%20y1%3D%2217.146%22%20y2%3D%2210.79%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EDCF00%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23F7E100%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FFF100%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(6.30353%200%200%206.64935%206.45%2023.084)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFF100%22%2F%3E%3Cstop%20offset%3D%22.23%22%20stop-color%3D%22%23F9E500%22%2F%3E%3Cstop%20offset%3D%22.67%22%20stop-color%3D%22%23F0D500%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EDCF00%22%2F%3E%3C%2FradialGradient%3E%3CclipPath%20id%3D%22b%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h17v13H0z%22%20transform%3D%22translate(5.5%207)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E%0A";export{D as default}; diff --git a/dist/assets/help-circle-ZM6Tvbf1.js b/dist/assets/help-circle-ZM6Tvbf1.js new file mode 100644 index 0000000..b226a3a --- /dev/null +++ b/dist/assets/help-circle-ZM6Tvbf1.js @@ -0,0 +1,12 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const c=l` + + +`;export{c as helpCircleSvg}; diff --git a/dist/assets/hi_IN-XSKAA3MF-C3QUpWyP.js b/dist/assets/hi_IN-XSKAA3MF-C3QUpWyP.js new file mode 100644 index 0000000..457d61b --- /dev/null +++ b/dist/assets/hi_IN-XSKAA3MF-C3QUpWyP.js @@ -0,0 +1,1487 @@ +var u=`{ + "connect_wallet": { + "label": "वॉलेट को कनेक्ट करें", + "wrong_network": { + "label": "गलत नेटवर्क" + } + }, + "intro": { + "title": "वॉलेट क्या है?", + "description": "एक वॉलेट का उपयोग डिजिटल संपत्तियों को भेजने, प्राप्त करने, संग्रहित करने और प्रदर्शित करने के लिए किया जाता है। यह एक नया तरीका भी है लॉग इन करने का, हर वेबसाइट पर नए खाते और पासवर्ड बनाने की जरूरत के बिना।", + "digital_asset": { + "title": "अपने डिजिटल संपत्तियों के लिए एक घर", + "description": "वॉलेट का उपयोग Ethereum और NFTs जैसी डिजिटल संपत्तियों को भेजने, प्राप्त करने, संग्रहित करने और प्रदर्शित करने के लिए किया जाता है." + }, + "login": { + "title": "लॉग इन करने का एक नया तरीका", + "description": "हर वेबसाइट पर नए खाते और पासवर्ड बनाने की बजाय, बस अपना वॉलेट कनेक्ट करें." + }, + "get": { + "label": "एक वॉलेट प्राप्त करें" + }, + "learn_more": { + "label": "और जानें" + } + }, + "sign_in": { + "label": "अपने खाते की पुष्टि करें", + "description": "जुड़ने को पूरा करने के लिए, आपको अपने बटुए में एक संदेश पर हस्ताक्षर करना होगा ताकि पुष्टि हो सके कि आप इस खाते के मालिक हैं।", + "message": { + "send": "संदेश भेजें", + "preparing": "संदेश तैयार कर रहा है...", + "cancel": "रद्द करें", + "preparing_error": "संदेश तैयार करते समय त्रुटि, कृपया पुनः प्रयास करें!" + }, + "signature": { + "waiting": "हस्ताक्षर का इंतजार कर रहा है...", + "verifying": "हस्ताक्षर की पुष्टि की जा रही है...", + "signing_error": "संदेश पर हस्ताक्षर करते समय त्रुटि, कृपया पुनः प्रयास करें!", + "verifying_error": "हस्ताक्षर की पुष्टि में त्रुटि, कृपया पुनः प्रयास करें!", + "oops_error": "ओह, कुछ गलत हो गया!" + } + }, + "connect": { + "label": "कनेक्ट करें", + "title": "वॉलेट को कनेक्ट करें", + "new_to_ethereum": { + "description": "Ethereum वॉलेट्स में नए हैं?", + "learn_more": { + "label": "और जानें" + } + }, + "learn_more": { + "label": "और जानें।" + }, + "recent": "हाल ही में", + "status": { + "opening": "%{wallet}खोल रहा है...", + "connecting": "जोड़ रहा है", + "connect_mobile": "जारी रखें %{wallet}", + "not_installed": "%{wallet} स्थापित नहीं है", + "not_available": "%{wallet} उपलब्ध नहीं है", + "confirm": "एक्सटेंशन में कनेक्शन की पुष्टि करें", + "confirm_mobile": "वॉलेट में कनेक्शन अनुरोध स्वीकार करें" + }, + "secondary_action": { + "get": { + "description": "क्या आपके पास %{wallet}नहीं है ?", + "label": "प्राप्त करें" + }, + "install": { + "label": "स्थापित करें" + }, + "retry": { + "label": "पुनः प्रयास करें" + } + }, + "walletconnect": { + "description": { + "full": "क्या आपको आधिकारिक WalletConnect मोडल की आवश्यकता है?", + "compact": "क्या आपको WalletConnect मोडल की आवश्यकता है?" + }, + "open": { + "label": "खोलें" + } + } + }, + "connect_scan": { + "title": "स्कैन करें विथ %{wallet}", + "fallback_title": "अपने फोन से स्कैन करें" + }, + "connector_group": { + "installed": "स्थापित", + "recommended": "अनुशंसित", + "other": "अन्य", + "popular": "लोकप्रिय", + "more": "अधिक", + "others": "अन्य लोग" + }, + "get": { + "title": "एक वॉलेट प्राप्त करें", + "action": { + "label": "प्राप्त करें" + }, + "mobile": { + "description": "मोबाइल वॉलेट" + }, + "extension": { + "description": "ब्राउज़र एक्सटेंशन" + }, + "mobile_and_extension": { + "description": "मोबाइल वॉलेट और एक्सटेंशन" + }, + "mobile_and_desktop": { + "description": "मोबाइल और डेस्कटॉप वॉलेट" + }, + "looking_for": { + "title": "क्या आपको जो चाहिए वह नहीं मिल रहा है?", + "mobile": { + "description": "मुख्य स्क्रीन पर एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।" + }, + "desktop": { + "compact_description": "मुख्य स्क्रीन पर एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।", + "wide_description": "बाएं एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।" + } + } + }, + "get_options": { + "title": "%{wallet}के साथ शुरू करें", + "short_title": "%{wallet}प्राप्त करें", + "mobile": { + "title": "मोबाइल के लिए %{wallet}", + "description": "मोबाइल वॉलेट का उपयोग करके Ethereum की दुनिया का अन्वेषण करें।", + "download": { + "label": "ऐप प्राप्त करें" + } + }, + "extension": { + "title": "%{wallet} के लिए %{browser}", + "description": "अपने पसंदीदा वेब ब्राउज़र से अपने वॉलेट तक पहुंचें।", + "download": { + "label": "करें जोड़ें %{browser}" + } + }, + "desktop": { + "title": "%{wallet} के लिए %{platform}", + "description": "अपने शक्तिशाली डेस्कटॉप से आपके वॉलेट की स्वतंत्रता द्वारा पहुंच।", + "download": { + "label": "को जोड़ें %{platform}" + } + } + }, + "get_mobile": { + "title": "स्थापित करें %{wallet}", + "description": "iOS या Android पर डाउनलोड करने के लिए अपने फोन से स्कैन करें", + "continue": { + "label": "जारी रखें" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "जोड़ें" + }, + "learn_more": { + "label": "और जानें" + } + }, + "extension": { + "refresh": { + "label": "ताज़ा करें" + }, + "learn_more": { + "label": "और जानें" + } + }, + "desktop": { + "connect": { + "label": "कनेक्ट करें" + }, + "learn_more": { + "label": "और जानें" + } + } + }, + "chains": { + "title": "नेटवर्क स्विच करें", + "wrong_network": "गलत नेटवर्क का पता चला, जारी रखने के लिए स्विच करें या कनेक्ट करें।", + "confirm": "वॉलेट में पुष्टि करें", + "switching_not_supported": "आपका वॉलेट नेटवर्क्स को %{appName}से स्विच करना समर्थन नहीं करता . बजाय अपने वॉलेट के भीतर से नेटवर्क स्विच करने का प्रयास करें।", + "switching_not_supported_fallback": "आपका वॉलेट इस एप से नेटवर्क्स स्विच करने का समर्थन नहीं करता। बजाय उसके, अपना वॉलेट द्वारा नेटवर्क्स स्विच करने की कोशिश करें।", + "disconnect": "डिकनेक्ट", + "connected": "कनेक्ट किया गया" + }, + "profile": { + "disconnect": { + "label": "डिकनेक्ट" + }, + "copy_address": { + "label": "पता कॉपी करें", + "copied": "कॉपी कर दिया गया!" + }, + "explorer": { + "label": "एक्सप्लोरर पर अधिक देखें" + }, + "transactions": { + "description": "%{appName} लेन - देन यहां दिखाई देंगे...", + "description_fallback": "आपके लेन-देन यहां दिखाई देंगे...", + "recent": { + "title": "हाल के लेन - देन" + }, + "clear": { + "label": "सभी को हटाएं" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "अपने वॉलेट तक अधिक जल्दी पहुंचने के लिए Ready को अपने होम स्क्रीन पर जोड़ें।", + "title": "Ready ऐप को खोलें" + }, + "step2": { + "description": "वॉलेट और उपयोगकर्ता नाम बनाएं, या मौजूदा वॉलेट को आयात करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "QR स्कैन बटन को टैप करें" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "BeraSig एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट के लिए आसानी से पहुंच पाने के लिए BeraSig को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "एक वॉलेट बनाएँ", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "Best Wallet ऐप खोलें", + "description": "अपने होम स्क्रीन पर Best Wallet जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "हम आपको सलाह देते हैं कि Bifrost Wallet को अपने होम स्क्रीन पर लगाएं, ताकि त्वरित एक्सेस को सुनिश्चित किया जा सके।", + "title": "Bifrost Wallet ऐप को खोलें" + }, + "step2": { + "description": "अपने रिकवरी फ़्रेज़ का उपयोग करके एक वॉलेट बनाएं या इंपोर्ट करें।", + "title": "वॉलेट बनाएं या इंपोर्ट करें" + }, + "step3": { + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।", + "title": "स्कैन बटन को टैप करें" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "हम इसे सुझाव देते हैं कि आप अपने होम स्क्रीन पर Bitget वॉलेट को रखें ताकि जल्दी एक्सेस कर सकें।", + "title": "Bitget वॉलेट एप को खोलें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने का एक संकेत दिखाई देगा।", + "title": "स्कैन बटन पर टैप करें" + } + }, + "extension": { + "step1": { + "description": "हम इसे सुझाव देते हैं कि आप Bitget वॉलेट को आपके टास्कबार में पिन करें ताकि आपके वॉलेट तक जल्दी पहुंच सकें।", + "title": "Bitget Wallet एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप किसी सुरक्षित तरीके से ले रहे हैं। अपनी गुप्त वाक्यांश को कभी किसी के साथ साझा न करें।", + "title": "एक वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "हम आपको अपने वॉलेट तक जल्दी पहुंचने के लिए Bitski को अपने टास्कबार में पिन करने की सलाह देते हैं।", + "title": "Bitski एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपने वॉलेट का बैकअप बना रहे हैं। कभी भी किसी के साथ अपने गोपनीय वाक्यांश को साझा न करें।", + "title": "एक वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेट कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "Bitverse Wallet ऐप को खोलें", + "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए Bitverse Wallet को अपनी होम स्क्रीन पर जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "Bloom वॉलेट ऐप खोलें", + "description": "आपकी सुविधा के लिए हम Bloom वॉलेट को होम स्क्रीन पर रखने की सलाह देते हैं।" + }, + "step2": { + "description": "अपने रिकवरी फ़्रेज़ का उपयोग करके एक वॉलेट बनाएं या इंपोर्ट करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जब आपके पास वॉलेट हो, तो Bloom के माध्यम से जुड़ने के लिए Connect पर क्लिक करें। ऐप में एक कनेक्शन प्रॉम्प्ट दिखाई देगा जिसे आपको कनेक्शन की पुष्टि करनी होगी।", + "title": "Connect पर क्लिक करें" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "हम आपके वॉलेट तक तेजी से पहुँचने के लिए Bybit को आपकी होम स्क्रीन पर रखने की सलाह देते हैं।", + "title": "Bybit ऐप को खोलें" + }, + "step2": { + "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "स्कैन बटन को टैप करें" + } + }, + "extension": { + "step1": { + "description": "अपने ब्राउज़र के ऊपरी दाएँ कोने पर क्लिक करें और आसान पहुँच के लिए Bybit Wallet को पिन करें।", + "title": "Bybit Wallet एक्सटेंशन को इंस्टॉल करें" + }, + "step2": { + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", + "title": "एक बटुआ बनाएं या आयात करें" + }, + "step3": { + "description": "Bybit Wallet सेट अप करने के बाद, ब्राउज़र को रिफ्रेश करने के लिए नीचे क्लिक करें और एक्सटेंशन को लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "हम अपने वॉलेट के तेज एक्सेस के लिए Binance को अपने होम स्क्रीन पर रखने की सलाह देते हैं।", + "title": "Binance ऐप को खोलें" + }, + "step2": { + "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "WalletConnect बटन पर टैप करें" + } + }, + "extension": { + "step1": { + "title": "Binance वॉलेट एक्सटेंशन इंस्टॉल करें", + "description": "अपने वॉलेट तक जल्दी पहुंच के लिए हम Binance Wallet को आपके टास्कबार पर पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "हम आपके वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Coin98 वॉलेट रखने की सलाह देते हैं।", + "title": "Coin98 वॉलेट ऐप को खोलें" + }, + "step2": { + "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रांप्ट दिखाई देगा।", + "title": "WalletConnect बटन पर टैप करें" + } + }, + "extension": { + "step1": { + "description": "अपने ब्राउज़र के ऊपरी दाएं हिस्से पर क्लिक करें और आसानी से पहुंच के लिए Coin98 वॉलेट को पिन करें।", + "title": "Coin98 वॉलेट एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", + "title": "एक बटुआ बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप Coin98 वॉलेट सेट करते हैं, तो नीचे क्लिक करके ब्राउजर को ताजा करें और एक्सटेंशन को लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "हम आपको सलाह देते हैं कि आपकी मुख्य बिल्ड स्क्रीन पर Coinbase वॉलेट को रखें जिससे आपकी पहुंच तेज हो।", + "title": "Coinbase वॉलेट ऐप खोलें" + }, + "step2": { + "description": "आप बादल बैकअप सुविधा का उपयोग करके आसानी से अपने वॉलेट का बैकअप ले सकते हैं।", + "title": "एक वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करते हैं, आपको अपने वॉलेट से कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।", + "title": "स्कैन बटन को छूना" + } + }, + "extension": { + "step1": { + "description": "हमारा सिफारिश है कि आप अपने वॉलेट तक जल्दी पहुंचने के लिए Coinbase वॉलेट को अपने टास्कबार पर पिन पर रखें।", + "title": "Coinbase वॉलेट एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त पुनर्प्राप्ति वाक्यांश कभी भी किसी के साथ साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेट अप करते हैं, तो ब्राउज़र को ताजगी देने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें.", + "title": "अपना ब्राउज़र ताजा करें" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "हम अपने वॉलेट तक त्वरित पहुंच के लिए Compass Wallet को अपने कार्यपट्टी में पिन करने की सलाह देते हैं।", + "title": "Compass Wallet एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "हम आपकी वॉलेट के तेज एक्सेस के लिए Core को आपके होम स्क्रीन पर डालने की सलाह देते हैं.", + "title": "Core एप खोलें" + }, + "step2": { + "description": "आप आसानी से अपने फ़ोन पर हमारे बैकअप फीचर का उपयोग करके अपना वॉलेट बैकअप कर सकते हैं.", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए आपके लिए कनेक्शन प्राम्प्ट प्रकट होगा.", + "title": "WalletConnect बटन को छूने के साथ" + } + }, + "extension": { + "step1": { + "description": "हम अपने वॉलेट के लिए तेज एक्सेस के लिए कोर को अपने टास्कबार में पिन करने की सिफारिश करते हैं।", + "title": "कोर एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले। कभी भी किसी के साथ अपनी गुप्त वाक्यांश साझा न करें।", + "title": "एक वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपने वॉलेट की स्थापना कर लें, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा कर सकें और एक्सटेंशन को लोड कर सकें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "हम FoxWallet को अपने होम स्क्रीन पर रखने की सिफारिश करते हैं ताकि त्वरित एक्सेस मिल सके।", + "title": "FoxWallet ऐप खोलें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जब आप स्कैन करेंगे, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।", + "title": "स्कैन बटन पर टैप करें" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "हमारी सिफारिश है कि आप अपने होम स्क्रीन पर फ्रंटियर वॉलेट रखें जिससे कि आपको त्वरित पहुंच मिले।", + "title": "फ्रंटियर वॉलेट ऐप को खोलें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जब आप स्कैन करते हैं, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।", + "title": "स्कैन बटन को टैप करें" + } + }, + "extension": { + "step1": { + "description": "हम आपके वॉलेट की तेजी से पहुंच के लिए Frontier Wallet को अपने टास्कबार में पिन करने की सिफारिश करते हैं।", + "title": "Frontier Wallet एक्सटेंशन इंस्टॉल करें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "वॉलेट सेटअप होने के बाद, ब्राउज़र को रिफ्रेश करने के लिए नीचे क्लिक करें और एक्सटेंशन लोड करें।", + "title": "अपना ब्राउज़र रिफ्रेश करें" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "imToken ऐप खोलें", + "description": "अपने वॉलेट के तेजी से पहुँच के लिए imToken एप्लीकेशन को अपने होम स्क्रीन पर रखें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "एक नया वॉलेट बनाएं या मौजूदा एक को आयात करें।" + }, + "step3": { + "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", + "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "हम आपकी वॉलेट के तेज एक्सेस के लिए ioPay को आपके होम स्क्रीन पर डालने की सलाह देते हैं.", + "title": "ioPay ऐप खोलें" + }, + "step2": { + "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "WalletConnect बटन पर टैप करें" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "हम आपके वॉलेट तक जल्दी पहुँचने के लिए Kaikas को आपके टास्कबार पर पिन करने की सलाह देते हैं।", + "title": "Kaikas एक्सटेंशन को इंस्टॉल करें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + }, + "qr_code": { + "step1": { + "title": "Kaikas ऐप को खोलें", + "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए Kaikas ऐप को अपनी होम स्क्रीन पर रखें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", + "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "हम आपके वॉलेट तक त्वरित पहुँच के लिए Kaia को अपने टास्कबार में पिन करने की सलाह देते हैं।", + "title": "Kaia एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + }, + "qr_code": { + "step1": { + "title": "Kaia ऐप को खोलें", + "description": "अपने वॉलेट के तेज एक्सेस के लिए Kaia ऐप को अपने होम स्क्रीन पर रखें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", + "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "Kraken Wallet ऐप खोलें", + "description": "हम आपके वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Kraken Wallet रखने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "Kresus वॉलेट ऐप खोलें", + "description": "अपने वॉलेट तक तेज़ी से पहुँचने के लिए Kresus Wallet को अपने होम स्क्रीन पर जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "Magic Eden एक्सटेंशन स्थापित करें", + "description": "हम आपके वॉलेट के आसान उपयोग के लिए Magic Eden को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "MetaMask ऐप को खोलें", + "description": "हम आपको MetaMask को आपकी होम स्क्रीन पर रखने की सलाह देते हैं, इससे आपको त्वरित पहुँच मिलेगी।" + }, + "step2": { + "title": "एक वॉलेट बनाएं या इम्पोर्ट करें", + "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन पर टैप करें", + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रॉम्प्ट दिखाई देगा।" + } + }, + "extension": { + "step1": { + "title": "MetaMask एक्सटेंशन स्थापित करें", + "description": "हम अपने वॉलेट तक जल्दी से पहुँचने के लिए MetaMask को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेना सुनिश्चित करें। अपनी गुप्त वाक्यांश को किसी के साथ शेयर न करें।" + }, + "step3": { + "title": "अपना ब्राउज़र ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेट अप करते हैं, तो ब्राउजर को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "NestWallet एक्सटेंशन स्थापित करें", + "description": "हम आपके वॉलेट के तेज एक्सेस के लिए NestWallet को आपके टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "OKX Wallet ऐप खोलें", + "description": "हम आपको OKX Wallet को अपने होम स्क्रीन पर रखने की सलाह देते हैं, जिससे आप जल्दी से पहुंच सकें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने का यकीन करें। कभी भी किसी के साथ अपने गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन पर टैप करें", + "description": "जब आप स्कैन करते हैं, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।" + } + }, + "extension": { + "step1": { + "title": "OKX वॉलेट एक्सटेंशन स्थापित करें", + "description": "हम अपने वॉलेट तक तेज़ी से पहुंचने के लिए आपको OKX वॉलेट को अपने कार्यपट्टी में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने का यकीन करें। कभी भी किसी के साथ अपने गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "जब आप अपना वॉलेट सेट अप कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताजा करें और एक्सटेंशन को लोड करें।" + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "Omni ऐप को खोलें", + "description": "अपने वॉलेट तक अधिक जल्दी पहुंचने के लिए Omni को अपने होम स्क्रीन पर जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "एक नया वॉलेट बनाएं या मौजूदा एक को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होम स्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए 1inch Wallet को अपनी होम स्क्रीन पर रखें।", + "title": "1inch Wallet ऐप को खोलें" + }, + "step2": { + "description": "वॉलेट और उपयोगकर्ता नाम बनाएं, या मौजूदा वॉलेट को आयात करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "QR स्कैन बटन को टैप करें" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "TokenPocket ऐप को खोलें", + "description": "हम आपको TokenPocket को अपने होम स्क्रीन पर रखने की सलाह देते हैं ताकि आपको तेज एक्सेस मिल सके।" + }, + "step2": { + "title": "एक वॉलेट बनाएँ या आयात करें", + "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन पर टैप करें", + "description": "एक बार स्कैन करने के बाद, आपके लिए एक कनेक्शन प्रॉम्प्ट प्रकट होगा ताकि आप अपने वॉलेट को कनेक्ट कर सकें।" + } + }, + "extension": { + "step1": { + "title": "TokenPocket एक्सटेंशन स्थापित करें", + "description": "हम अपने वॉलेट तक त्वरित पहुंच के लिए TokenPocket को अपने taskbar पर pin करने की सिफारिश करते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेते हैं। कभी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपना ब्राउज़र ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताज़ा ब्राउज़र लोड करें और एक्सटेंशन अप करें।" + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "Trust Wallet ऐप खोलें", + "description": "अपने वॉलेट तक तेज़ी से पहुंचने के लिए Trust Wallet को अपने होम स्क्रीन पर रखें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट आयात करें।" + }, + "step3": { + "title": "सेटिंग्स में WalletConnect को टैप करें", + "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और प्रम्प्ट की पुष्टि करें।" + } + }, + "extension": { + "step1": { + "title": "Trust Wallet एक्सटेंशन को इंस्टॉल करें", + "description": "अपने ब्राउज़र के ऊपरी दाएं कोने पर क्लिक करें और Trust Wallet को आसानी से प्रवेश के लिए पिन करें।" + }, + "step2": { + "title": "एक वॉलेट बनाएं या आयात करें", + "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट आयात करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार Trust Wallet सेट अप करने के बाद, नीचे क्लिक करें ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए।" + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "Uniswap ऐप को खोलें", + "description": "अपने होम स्क्रीन पर Uniswap वॉलेट जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "Zerion ऐप को खोलें", + "description": "हम सलाह देते हैं कि आप Zerion को अपने होम स्क्रीन पर रखें, इससे तेजी से एक्सेस करने में आसानी होगी।" + }, + "step2": { + "title": "एक वॉलेट बनाएं या आयात करें", + "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "आप स्कैन करने के बाद, एक कनेक्शन प्रोम्प्ट आपके बटुए को कनेक्ट करने के लिए प्रकट होगा।" + } + }, + "extension": { + "step1": { + "title": "Zerion एक्सटेंशन स्थापित करें", + "description": "हमारी सिफारिश है कि आप अपने वॉलेट तक जल्दी पहुँचने के लिए Zerion को अपने टास्कबार में पिन करें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप एक सुरक्षित विधि का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। अपना गुप्त वाक्य कभी किसी के साथ साझा न करें।" + }, + "step3": { + "title": "अपना ब्राउज़र ताज़ा करें", + "description": "एक बार जब आप अपने वॉलेट की स्थापना कर लें, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "Rainbow ऐप को खोलें", + "description": "हम अपने वॉलेट के तेज एक्सेस के लिए Rainbow को अपने होम स्क्रीन पर रखने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "आप अपने फ़ोन पर हमारे बैकअप फीचर का उपयोग करके अपने वॉलेट का बैकअप आसानी से ले सकते हैं।" + }, + "step3": { + "title": "स्कैन बटन पर टैप करें", + "description": "जब आप स्कैन करते हैं, तो आपकी वॉलेट से कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।" + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Enkrypt वॉलेट को अपने टास्कबार में पिन करने की सलाह देते हैं।", + "title": "Enkrypt वॉलेट एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "सुनिश्चित करें कि आप अपनी वॉलेट का बैकअप एक सुरक्षित तरीके से ले। अपनी गुप्त वाक्यांश को कभी भी किसी के साथ साझा न करें।", + "title": "एक वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपनी वॉलेट सेट कर लें, तो नीचे क्लिक करें ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Frame को अपने टास्कबार में पिन करने की सलाह देते हैं।", + "title": "Frame और साथी एक्सटेंशन स्थापित करें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेना सुनिश्चित करें। कभी भी अपनी गुप्त वाक्यांश को किसी के साथ साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपने वॉलेट की सेटअप कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।", + "title": "अपना ब्राउज़र ताज़ा करें" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "OneKey Wallet एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट की तेज एक्सेस के लिए OneKey Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वाक्यांश किसी के साथ भी साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेट अप कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "ParaSwap ऐप खोलें", + "description": "अपने होम स्क्रीन पर ParaSwap Wallet जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "फैंटम एक्सटेंशन स्थापित करें", + "description": "हम आपके वॉलेट के आसान उपयोग के लिए फैंटम को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "एक वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेट कर लें, तो ब्राउज़र को ताजगी देने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "Rabby एक्सटेंशन स्थापित करें", + "description": "हम आपको सलाह देते हैं कि अपने वॉलेट की जल्दी से पहुँच के लिए Rabby को अपने टास्कबार में पिन करें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेते हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपना ब्राउज़र ताज़ा करें", + "description": "जब आप अपना वॉलेट सेट अप कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए नीचे क्लिक करें।" + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "हम आपके वॉलेट तक जल्दी पहुँच के लिए Ronin Wallet को आपके होम स्क्रीन पर डालने की सलाह देते हैं।", + "title": "Ronin Wallet ऐप खोलें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "स्कैन बटन को टैप करें" + } + }, + "extension": { + "step1": { + "description": "अपने वॉलेट तक जल्दी पहुँच के लिए हम Ronin Wallet को आपके टास्कबार पर पिन करने की सलाह देते हैं।", + "title": "Ronin Wallet एक्सटेंशन इंस्टॉल करें" + }, + "step2": { + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", + "title": "अपने ब्राउज़र को ताज़ा करें" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "Ramper एक्सटेंशन इंस्टॉल करें", + "description": "अपने वॉलेट तक आसान पहुँच के लिए हम Ramper को आपके टास्कबार पर पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "एक वॉलेट बनाएँ", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "कोर एक्सटेंशन स्थापित करें", + "description": "हम आपको सलाह देते हैं कि अपने वॉलेट की जल्दी से पहुँच के लिए Safeheron को अपने टास्कबार में पिन करें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपने गुप्त वाक्यांश को साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपने वॉलेट को सेट अप करते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "ताहो एक्सटेंशन स्थापित करें", + "description": "हम आपके वॉलेट तक त्वरित पहुँच के लिए ताहो को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "एक वॉलेट बनाएँ या आयात करें", + "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपने गुप्त वाक्यांश को साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना बटुआ सेट कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "Wigwam एक्सटेंशन स्थापित करें", + "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Wigwam को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "तालिसमान एक्सटेंशन स्थापित करें", + "description": "हम आपके बटुए के त्वरित पहुँच के लिए तालिसमान को अपने टास्कबार में पिन करने की सिफारिश करते हैं।" + }, + "step2": { + "title": "एक ईथेरियम बटुए बनाएं या आयात करें", + "description": "अपने बटुए का बैकअप एक सुरक्षित तरीके से लेने का ध्यान रखें। कभी भी अपनी वसूली वाक्यांश को किसी के साथ साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना बटुआ सेट कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "CTRL Wallet एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट तक तेजी से पहुंचने के लिए CTRL Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "Zeal ऐप को खोलें", + "description": "अपने वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Zeal वॉलेट जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "QR आइकन पर टैप करें और स्कैन करें", + "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" + } + }, + "extension": { + "step1": { + "title": "Zeal एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट तक जल्दी पहुँचने के लिए Zeal को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "SafePal Wallet एक्सटेंशन स्थापित करें", + "description": "अपने ब्राउज़र के शीर्ष दाएं में क्लिक करें और SafePal Wallet को आसानी से पहुंच के लिए पिन करें।" + }, + "step2": { + "title": "एक बटुआ बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप SafePal वॉलेट सेट अप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को रिफ्रेश करें और एक्सटेंशन लोड करें।" + } + }, + "qr_code": { + "step1": { + "title": "SafePal वॉलेट ऐप खोलें", + "description": "अपने वॉलेट तक जल्दी पहुंचने के लिए SafePal वॉलेट को अपनी होम स्क्रीन पर रखें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "सेटिंग्स में WalletConnect को टैप करें", + "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "Desig एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट के लिए आसानी से पहुंच पाने के लिए Desig को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "एक वॉलेट बनाएँ", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "SubWallet एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट तक तेजी से पहुंचने के लिए SubWallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने बटुए का बैकअप एक सुरक्षित तरीके से लेने का ध्यान रखें। कभी भी अपनी वसूली वाक्यांश को किसी के साथ साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + }, + "qr_code": { + "step1": { + "title": "SubWallet ऐप खोलें", + "description": "हम आपको तेजी से पहुंचने के लिए SubWallet को अपने होम स्क्रीन पर रखने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "CLV Wallet एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट तक तेजी से पहुंचने के लिए CLV Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + }, + "qr_code": { + "step1": { + "title": "CLV वॉलेट ऐप खोलें", + "description": "हम तीव्र पहुंच के लिए आपके होम स्क्रीन पर CLV वॉलेट रखने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "Okto ऐप को खोलें", + "description": "त्वरित पहुंच के लिए अपने होम स्क्रीन पर Okto जोड़ें" + }, + "step2": { + "title": "एक MPC वॉलेट बनाएं", + "description": "एक खाता बनाएं और वॉलेट उत्पन्न करें" + }, + "step3": { + "title": "सेटिंग्स में WalletConnect को टैप करें", + "description": "ऊपरी दाएँ में स्कैन QR आइकन को टैप करें और कनेक्ट करने के लिए संकेत दें।" + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "लेजर लाइव ऐप खोलें", + "description": "हम तेज एक्सेस के लिए अपने होम स्क्रीन पर Ledger Live डालने की सिफारिश करते हैं।" + }, + "step2": { + "title": "अपना लेजर सेट करें", + "description": "एक नया लेजर सेट अप करें या मौजूदा वाले से कनेक्ट करें।" + }, + "step3": { + "title": "कनेक्ट करें", + "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रॉम्प्ट दिखाई देगा।" + } + }, + "qr_code": { + "step1": { + "title": "लेजर लाइव ऐप खोलें", + "description": "हम तेज एक्सेस के लिए अपने होम स्क्रीन पर Ledger Live डालने की सिफारिश करते हैं।" + }, + "step2": { + "title": "अपना लेजर सेट करें", + "description": "आप डेस्कटॉप ऐप के साथ सिंक कर सकते हैं या अपने Ledger को कनेक्ट कर सकते हैं।" + }, + "step3": { + "title": "कोड स्कैन करें", + "description": "WalletConnect पर टैप करें फिर स्कैनर पर स्विच करें। जब आप स्कैन करेंगे, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।" + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "Valora ऐप खोलें", + "description": "हम सलाह देते हैं कि आप Valora को अपने होम स्क्रीन पर रखें, इससे तेजी से एक्सेस करने में आसानी होगी।" + }, + "step2": { + "title": "एक वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "गेट ऐप खोलें", + "description": "हम आपको गेट को अपने होम स्क्रीन पर रखने की सलाह देते हैं ताकि तेज़ी से एक्सेस मिल सके।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + }, + "extension": { + "step1": { + "title": "गेट एक्सटेंशन स्थापित करें", + "description": "हम आपको अपने वॉलेट के आसान उपयोग के लिए गेट को अपने टास्कबार में पिन करने की सलाह देते हैं।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" + }, + "step3": { + "title": "अपने ब्राउज़र को ताज़ा करें", + "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "keys.gemini.com खोलें", + "description": "अपने मोबाइल ब्राउज़र पर keys.gemini.com पर जाएँ - कोई ऐप डाउनलोड करने की आवश्यकता नहीं।" + }, + "step2": { + "title": "अपने वॉलेट को तुरंत बनाएं", + "description": "अपने डिवाइस की इनबिल्ट प्रमाणीकरण का उपयोग करके सेकंडों में अपना स्मार्ट वॉलेट सेट करें।" + }, + "step3": { + "title": "कनेक्ट करने के लिए स्कैन करें", + "description": "QR कोड को स्कैन करके तुरंत अपने वॉलेट को कनेक्ट करें - यह बस काम करता है।" + } + }, + "extension": { + "step1": { + "title": "keys.gemini.com पर जाएँ", + "description": "कोई एक्सटेंशन या डाउनलोड की आवश्यकता नहीं है - आपका वॉलेट सुरक्षित रूप से ब्राउज़र में रहता है।" + }, + "step2": { + "title": "वन-क्लिक सेटअप", + "description": "पासकी प्रमाणीकृत से तुरंत अपना स्मार्ट वॉलेट बनाएं - बाजार के किसी भी वॉलेट से आसान।" + }, + "step3": { + "title": "कनेक्ट करें और चलें", + "description": "कनेक्शन को अनुमोदन करें और आप तैयार हैं - यह वॉलेट बिना किसी पूर्वाग्रह के बस काम करता है।" + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "तेजी से अपने वॉलेट को खोलने के लिए xPortal को अपने होम स्क्रीन पर रखें।", + "title": "xPortal ऐप खोलें" + }, + "step2": { + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "QR स्कैन बटन को टैप करें" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "हम तीव्र पहुंच के लिए आपके होम स्क्रीन पर MEW वॉलेट रखने की सलाह देते हैं।", + "title": "MEW वॉलेट ऐप खोलें" + }, + "step2": { + "description": "आप बादल बैकअप सुविधा का उपयोग करके आसानी से अपने वॉलेट का बैकअप ले सकते हैं।", + "title": "वॉलेट बनाएं या आयात करें" + }, + "step3": { + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", + "title": "स्कैन बटन को टैप करें" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "ZilPay ऐप को खोलें", + "description": "अपने वॉलेट तक अधिक जल्दी पहुंचने के लिए ZilPay को अपने होम स्क्रीन पर जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "Nova Wallet ऐप खोलें", + "description": "अपने वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Nova वॉलेट जोड़ें।" + }, + "step2": { + "title": "वॉलेट बनाएं या आयात करें", + "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" + }, + "step3": { + "title": "स्कैन बटन को टैप करें", + "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" + } + } + } + } +} +`;export{u as default}; diff --git a/dist/assets/hyperevm-VKPAA4SA-CHwraEsx.js b/dist/assets/hyperevm-VKPAA4SA-CHwraEsx.js new file mode 100644 index 0000000..60befc0 --- /dev/null +++ b/dist/assets/hyperevm-VKPAA4SA-CHwraEsx.js @@ -0,0 +1 @@ +var C="data:image/svg+xml,%3Csvg%20width%3D%22144%22%20height%3D%22144%22%20viewBox%3D%220%200%20144%20144%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M144%2071.6991C144%20119.306%20114.866%20134.582%2099.5156%20120.98C86.8804%20109.889%2083.1211%2086.4521%2064.116%2084.0456C39.9942%2081.0113%2037.9057%20113.133%2022.0334%20113.133C3.5504%20113.133%200%2086.2428%200%2072.4315C0%2058.3063%203.96809%2039.0542%2019.736%2039.0542C38.1146%2039.0542%2039.1588%2066.5722%2062.132%2065.1073C85.0007%2063.5379%2085.4184%2034.8689%20100.247%2022.6271C113.195%2012.0593%20144%2023.4641%20144%2071.6991Z%22%20fill%3D%22%2397FCE4%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/dist/assets/id-CWR5zdT0.js b/dist/assets/id-CWR5zdT0.js new file mode 100644 index 0000000..50b349c --- /dev/null +++ b/dist/assets/id-CWR5zdT0.js @@ -0,0 +1,12 @@ +import{w as c}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=c` + +`;export{e as idSvg}; diff --git a/dist/assets/id_ID-KUOB4UAL-K9y-nRWm.js b/dist/assets/id_ID-KUOB4UAL-K9y-nRWm.js new file mode 100644 index 0000000..de151ef --- /dev/null +++ b/dist/assets/id_ID-KUOB4UAL-K9y-nRWm.js @@ -0,0 +1,1487 @@ +var n=`{ + "connect_wallet": { + "label": "Hubungkan Dompet", + "wrong_network": { + "label": "Jaringan yang salah" + } + }, + "intro": { + "title": "Apa itu Dompet?", + "description": "Sebuah dompet digunakan untuk mengirim, menerima, menyimpan, dan menampilkan aset digital. Ini juga cara baru untuk masuk, tanpa perlu membuat akun dan kata sandi baru di setiap situs web.", + "digital_asset": { + "title": "Sebuah Rumah untuk Aset Digital Anda", + "description": "Dompet digunakan untuk mengirim, menerima, menyimpan, dan menampilkan aset digital seperti Ethereum dan NFTs." + }, + "login": { + "title": "Cara Baru untuk Masuk", + "description": "Alih-alih membuat akun dan kata sandi baru di setiap situs web, cukup hubungkan dompet Anda." + }, + "get": { + "label": "Dapatkan Dompet" + }, + "learn_more": { + "label": "Pelajari lebih lanjut" + } + }, + "sign_in": { + "label": "Verifikasi akun Anda", + "description": "Untuk menyelesaikan koneksi, Anda harus menandatangani sebuah pesan di dompet Anda untuk memastikan bahwa Anda adalah pemilik dari akun ini.", + "message": { + "send": "Kirim pesan", + "preparing": "Mempersiapkan pesan...", + "cancel": "Batal", + "preparing_error": "Kesalahan dalam mempersiapkan pesan, silakan coba lagi!" + }, + "signature": { + "waiting": "Menunggu tanda tangan...", + "verifying": "Memverifikasi tanda tangan...", + "signing_error": "Kesalahan dalam menandatangani pesan, silakan coba lagi!", + "verifying_error": "Kesalahan dalam memverifikasi tanda tangan, silakan coba lagi!", + "oops_error": "Ups, ada yang salah!" + } + }, + "connect": { + "label": "Hubungkan", + "title": "Hubungkan Dompet", + "new_to_ethereum": { + "description": "Baru dalam dompet Ethereum?", + "learn_more": { + "label": "Pelajari lebih lanjut" + } + }, + "learn_more": { + "label": "Pelajari lebih lanjut" + }, + "recent": "Terkini", + "status": { + "opening": "Membuka %{wallet}...", + "connecting": "Menghubungkan", + "connect_mobile": "Lanjutkan di %{wallet}", + "not_installed": "%{wallet} tidak terpasang", + "not_available": "%{wallet} tidak tersedia", + "confirm": "Konfirmasikan koneksi di ekstensi", + "confirm_mobile": "Terima permintaan koneksi di dompet" + }, + "secondary_action": { + "get": { + "description": "Tidak memiliki %{wallet}?", + "label": "DAPATKAN" + }, + "install": { + "label": "PASANG" + }, + "retry": { + "label": "COBA LAGI" + } + }, + "walletconnect": { + "description": { + "full": "Perlu modal resmi WalletConnect?", + "compact": "Perlu modal WalletConnect?" + }, + "open": { + "label": "BUKA" + } + } + }, + "connect_scan": { + "title": "Pindai dengan %{wallet}", + "fallback_title": "Pindai dengan ponsel Anda" + }, + "connector_group": { + "installed": "Terinstal", + "recommended": "Direkomendasikan", + "other": "Lainnya", + "popular": "Populer", + "more": "Lebih Banyak", + "others": "Lainnya" + }, + "get": { + "title": "Dapatkan Dompet", + "action": { + "label": "DAPATKAN" + }, + "mobile": { + "description": "Dompet Mobile" + }, + "extension": { + "description": "Ekstensi Browser" + }, + "mobile_and_extension": { + "description": "Dompet Mobile dan Ekstensi" + }, + "mobile_and_desktop": { + "description": "Dompet Seluler dan Desktop" + }, + "looking_for": { + "title": "Bukan yang Anda cari?", + "mobile": { + "description": "Pilih dompet di layar utama untuk memulai dengan penyedia dompet yang berbeda." + }, + "desktop": { + "compact_description": "Pilih dompet di layar utama untuk memulai dengan penyedia dompet yang berbeda.", + "wide_description": "Pilih dompet di sebelah kiri untuk memulai dengan penyedia dompet yang berbeda." + } + } + }, + "get_options": { + "title": "Mulai dengan %{wallet}", + "short_title": "Dapatkan %{wallet}", + "mobile": { + "title": "%{wallet} untuk Mobile", + "description": "Gunakan dompet mobile untuk menjelajahi dunia Ethereum.", + "download": { + "label": "Dapatkan aplikasinya" + } + }, + "extension": { + "title": "%{wallet} untuk %{browser}", + "description": "Akses dompet Anda langsung dari browser web favorit Anda.", + "download": { + "label": "Tambahkan ke %{browser}" + } + }, + "desktop": { + "title": "%{wallet} untuk %{platform}", + "description": "Akses dompet Anda secara native dari desktop yang kuat Anda.", + "download": { + "label": "Tambahkan ke %{platform}" + } + } + }, + "get_mobile": { + "title": "Instal %{wallet}", + "description": "Pindai dengan ponsel Anda untuk mengunduh di iOS atau Android", + "continue": { + "label": "Lanjutkan" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "Hubungkan" + }, + "learn_more": { + "label": "Pelajari lebih lanjut" + } + }, + "extension": { + "refresh": { + "label": "Segarkan" + }, + "learn_more": { + "label": "Pelajari lebih lanjut" + } + }, + "desktop": { + "connect": { + "label": "Hubungkan" + }, + "learn_more": { + "label": "Pelajari lebih lanjut" + } + } + }, + "chains": { + "title": "Alihkan Jaringan", + "wrong_network": "Jaringan yang salah terdeteksi, alihkan atau diskonek untuk melanjutkan.", + "confirm": "Konfirmasi di Dompet", + "switching_not_supported": "Dompet Anda tidak mendukung pengalihan jaringan dari %{appName}. Coba alihkan jaringan dari dalam dompet Anda.", + "switching_not_supported_fallback": "Wallet Anda tidak mendukung penggantian jaringan dari aplikasi ini. Cobalah ganti jaringan dari dalam wallet Anda.", + "disconnect": "Putuskan koneksi", + "connected": "Terkoneksi" + }, + "profile": { + "disconnect": { + "label": "Putuskan koneksi" + }, + "copy_address": { + "label": "Salin Alamat", + "copied": "Tersalin!" + }, + "explorer": { + "label": "Lihat lebih banyak di penjelajah" + }, + "transactions": { + "description": "%{appName} transaksi akan muncul di sini...", + "description_fallback": "Transaksi Anda akan muncul di sini...", + "recent": { + "title": "Transaksi Terbaru" + }, + "clear": { + "label": "Hapus Semua" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "Tambahkan Ready ke layar utama Anda untuk akses yang lebih cepat ke dompet Anda.", + "title": "Buka aplikasi Ready" + }, + "step2": { + "description": "Buat dompet dan nama pengguna, atau impor dompet yang ada.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol Scan QR" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "Instal ekstensi BeraSig", + "description": "Kami merekomendasikan menempelkan BeraSig ke taskbar Anda untuk akses dompet Anda lebih mudah." + }, + "step2": { + "title": "Buat Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Best Wallet", + "description": "Tambahkan Best Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk menempatkan Bifrost Wallet di layar utama anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi Bifrost Wallet" + }, + "step2": { + "description": "Buat atau impor sebuah dompet menggunakan frasa pemulihan Anda.", + "title": "Buat atau Impor sebuah Wallet" + }, + "step3": { + "description": "Setelah Anda memindai, sebuah pesan akan muncul untuk menghubungkan dompet Anda.", + "title": "Tekan tombol scan" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "Kami menyarankan untuk meletakkan Bitget Wallet di layar depan Anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi Bitget Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Wallet" + }, + "step3": { + "description": "Setelah Anda pindai, akan muncul petunjuk untuk menghubungkan wallet Anda.", + "title": "Tekan tombol pindai" + } + }, + "extension": { + "step1": { + "description": "Kami menyarankan untuk memasang Bitget Wallet ke taskbar Anda untuk akses yang lebih cepat ke wallet Anda.", + "title": "Instal ekstensi Dompet Bitget" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "Kami merekomendasikan untuk memasang Bitski ke taskbar Anda untuk akses dompet Anda yang lebih cepat.", + "title": "Pasang ekstensi Bitski" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Bitverse Wallet", + "description": "Tambahkan Bitverse Wallet ke layar utama Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "Buka aplikasi Bloom Wallet", + "description": "Kami merekomendasikan untuk meletakkan Bloom Wallet di layar utama Anda untuk akses yang lebih cepat." + }, + "step2": { + "description": "Buat atau impor sebuah dompet menggunakan frasa pemulihan Anda.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memiliki dompet, klik pada Sambungkan untuk terhubung melalui Bloom. Sebuah permintaan sambungan akan muncul di aplikasi untuk Anda konfirmasi.", + "title": "Klik pada Sambungkan" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "Kami menyarankan menempatkan Bybit di layar utama Anda untuk akses yang lebih cepat ke dompet Anda.", + "title": "Buka aplikasi Bybit" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol scan" + } + }, + "extension": { + "step1": { + "description": "Klik di pojok kanan atas browser Anda dan sematkan Wallet Bybit untuk akses yang mudah.", + "title": "Pasang ekstensi Wallet Bybit" + }, + "step2": { + "description": "Buat dompet baru atau impor yang sudah ada.", + "title": "Buat atau Impor sebuah dompet" + }, + "step3": { + "description": "Setelah Anda mengatur Wallet Bybit, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk meletakkan Binance di layar utama Anda untuk akses lebih cepat ke wallet Anda.", + "title": "Buka aplikasi Binance" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Ketuk tombol WalletConnect" + } + }, + "extension": { + "step1": { + "title": "Pasang ekstensi Binance Wallet", + "description": "Kami merekomendasikan untuk memasang Binance Wallet di taskbar Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk menaruh Coin98 Wallet di layar utama Anda untuk akses wallet Anda lebih cepat.", + "title": "Buka aplikasi Coin98 Wallet" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", + "title": "Buat atau Impor Wallet" + }, + "step3": { + "description": "Setelah Anda melakukan pemindaian, akan muncul prompt koneksi untuk Anda menghubungkan wallet Anda.", + "title": "Ketuk tombol WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Klik di pojok kanan atas browser Anda dan sematkan Coin98 Wallet untuk akses mudah.", + "title": "Pasang ekstensi Coin98 Wallet" + }, + "step2": { + "description": "Buat dompet baru atau impor yang sudah ada.", + "title": "Buat atau Impor sebuah dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan Coin98 Wallet, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan memasang Coinbase Wallet di layar utama Anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi Coinbase Wallet" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan dompet Anda menggunakan fitur cadangan awan.", + "title": "Buat atau Impor sebuah Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul sebuah petunjuk koneksi untuk Anda menyambungkan dompet Anda.", + "title": "Ketuk tombol pindai" + } + }, + "extension": { + "step1": { + "description": "Kami merekomendasikan untuk menempel Coinbase Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda.", + "title": "Instal ekstensi Coinbase Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun.", + "title": "Buat atau Import Wallet" + }, + "step3": { + "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "Kami merekomendasikan untuk menempelkan Compass Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda.", + "title": "Instal ekstensi Compass Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk meletakkan Core di layar utama Anda untuk akses lebih cepat ke wallet Anda.", + "title": "Buka aplikasi Core" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan wallet Anda dengan menggunakan fitur cadangan kami di telepon Anda.", + "title": "Buat atau Import Wallet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menyambungkan wallet Anda.", + "title": "Ketuk tombol WalletConnect" + } + }, + "extension": { + "step1": { + "description": "Kami merekomendasikan untuk menempelkan Core pada taskbar Anda untuk akses ke dompet Anda lebih cepat.", + "title": "Pasang ekstensi Core" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk menaruh FoxWallet pada layar utama Anda untuk akses lebih cepat.", + "title": "Buka aplikasi FoxWallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", + "title": "Buat atau Impor Wallet" + }, + "step3": { + "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda hubungkan dompet Anda.", + "title": "Ketuk tombol pindai" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk meletakkan Frontier Wallet di layar awal Anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi Frontier Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", + "title": "Buat atau Impor Wallet" + }, + "step3": { + "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda menghubungkan dompet Anda.", + "title": "Ketuk tombol pindai" + } + }, + "extension": { + "step1": { + "description": "Kami menyarankan menempelkan Frontier Wallet ke taskbar Anda untuk akses yang lebih cepat ke dompet Anda.", + "title": "Instal ekstensi Frontier Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "Buka aplikasi imToken", + "description": "Letakkan aplikasi imToken di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk Ikon Scanner di pojok kanan atas", + "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk menaruh ioPay di layar utama Anda untuk akses wallet Anda lebih cepat.", + "title": "Buka aplikasi ioPay" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Ketuk tombol WalletConnect" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "Kami menyarankan memasang Kaikas di taskbar Anda untuk akses yang lebih cepat ke dompet Anda.", + "title": "Pasang ekstensi Kaikas" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi Kaikas", + "description": "Letakkan aplikasi Kaikas di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk Ikon Scanner di pojok kanan atas", + "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "Kami merekomendasikan menempelkan Kaia ke taskbar Anda untuk akses dompet Anda lebih cepat.", + "title": "Instal ekstensi Kaia" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi Kaia", + "description": "Letakkan aplikasi Kaia di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk Ikon Scanner di pojok kanan atas", + "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Kraken Wallet", + "description": "Tambahkan Kraken Wallet ke layar utama Anda untuk akses lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Kresus Wallet", + "description": "Tambahkan Kresus Wallet ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "Instal ekstensi Magic Eden", + "description": "Kami menyarankan untuk menempelkan Magic Eden ke taskbar Anda untuk akses lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "Buka aplikasi MetaMask", + "description": "Kami merekomendasikan untuk meletakkan MetaMask di layar beranda Anda untuk akses yang lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Ketuk tombol pindai", + "description": "Setelah Anda memindai, petunjuk koneksi akan muncul untuk Anda menyambungkan dompet Anda." + } + }, + "extension": { + "step1": { + "title": "Pasang ekstensi MetaMask", + "description": "Kami menyarankan untuk memasang MetaMask pada taskbar Anda untuk akses wallet lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "Instal ekstensi NestWallet", + "description": "Kami menyarankan untuk memasang NestWallet ke taskbar Anda untuk akses dompet yang lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "Buka aplikasi OKX Wallet", + "description": "Kami menyarankan untuk menaruh OKX Wallet di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Ketuk tombol scan", + "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda hubungkan dompet Anda." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi OKX Wallet", + "description": "Kami menyarankan untuk menempelkan OKX Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda mengatur wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Omni", + "description": "Tambahkan Omni ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Buat wallet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi petunjuk untuk terhubung." + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "Letakkan Wallet 1inch di layar utama Anda untuk akses yang lebih cepat ke dompet Anda.", + "title": "Buka aplikasi Wallet 1inch" + }, + "step2": { + "description": "Buat dompet dan nama pengguna, atau impor dompet yang ada.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol Scan QR" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "Buka aplikasi TokenPocket", + "description": "Kami sarankan meletakkan TokenPocket di layar utama Anda untuk akses yang lebih cepat." + }, + "step2": { + "title": "Buat atau impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Ketuk tombol pindai", + "description": "Setelah Anda memindai, Indikasi sambungan akan muncul untuk Anda menghubungkan dompet Anda." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi TokenPocket", + "description": "Kami merekomendasikan penambatan TokenPocket ke taskbar Anda untuk akses dompet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda mengatur dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Trust Wallet", + "description": "Pasang Trust Wallet di layar utama Anda untuk akses dompet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk WalletConnect di Pengaturan", + "description": "Pilih Koneksi Baru, kemudian pindai kode QR dan konfirmasi perintah untuk terhubung." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi Trust Wallet", + "description": "Klik di pojok kanan atas browser Anda dan sematkan Trust Wallet untuk akses mudah." + }, + "step2": { + "title": "Buat atau Impor dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda mengatur Trust Wallet, klik di bawah untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Uniswap", + "description": "Tambahkan Uniswap Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Buat wallet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan pindai", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Zerion", + "description": "Kami merekomendasikan untuk meletakkan Zerion di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Ketuk tombol scan", + "description": "Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi Zerion", + "description": "Kami menyarankan untuk menempelkan Zerion ke taskbar Anda untuk akses lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda mengatur wallet Anda, klik di bawah untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Rainbow", + "description": "Kami menyarankan menempatkan Rainbow di layar home Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul pesan untuk menghubungkan dompet Anda." + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "Kami menyarankan untuk memasang Enkrypt Wallet ke taskbar Anda untuk akses dompet yang lebih cepat.", + "title": "Instal ekstensi Enkrypt Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet, klik di bawah ini untuk memuat ulang peramban dan meload ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "Kami menyarankan untuk memasang Frame ke taskbar Anda untuk akses dompet yang lebih cepat.", + "title": "Instal Frame & ekstensi pendamping" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", + "title": "Buat atau Impor Wallet" + }, + "step3": { + "description": "Setelah Anda menyetel wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "Instal ekstensi OneKey Wallet", + "description": "Kami menyarankan untuk menempelkan OneKey Wallet ke taskbar Anda untuk akses wallet yang lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "Buka aplikasi ParaSwap", + "description": "Tambahkan ParaSwap Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "Instal ekstensi Phantom", + "description": "Kami menyarankan untuk mem-pin Phantom ke taskbar Anda untuk akses dompet yang lebih mudah." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "Instal ekstensi Rabby", + "description": "Kami merekomendasikan menempelkan Rabby ke taskbar Anda untuk akses lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan wallet Anda dengan metode yang aman. Jangan pernah berbagi frase rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "Kami merekomendasikan untuk meletakkan Ronin Wallet di layar utama Anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi Ronin Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol scan" + } + }, + "extension": { + "step1": { + "description": "Kami merekomendasikan untuk memasang Ronin Wallet di taskbar Anda untuk akses yang lebih cepat ke wallet Anda.", + "title": "Pasang ekstensi Ronin Wallet" + }, + "step2": { + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", + "title": "Segarkan browser Anda" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "Pasang ekstensi Ramper", + "description": "Kami merekomendasikan untuk memasang Ramper di taskbar Anda untuk akses yang lebih mudah ke wallet Anda." + }, + "step2": { + "title": "Buat Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "Instal ekstensi Core", + "description": "Kami merekomendasikan menempelkan Safeheron ke taskbar Anda untuk akses lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Wallet", + "description": "Pastikan untuk mencadangkan dompet Anda dengan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda mengatur dompet Anda, klik di bawah untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "Instal ekstensi Taho", + "description": "Kami merekomendasikan pengepinan Taho ke taskbar Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda dengan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "Instal ekstensi Wigwam", + "description": "Kami menyarankan untuk memasang Wigwam ke taskbar Anda untuk akses dompet yang lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "Instal ekstensi Talisman", + "description": "Kami merekomendasikan menempelkan Talisman ke taskbar Anda untuk akses dompet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet Ethereum", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase pemulihan Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "Instal ekstensi CTRL Wallet", + "description": "Kami merekomendasikan untuk menempelkan CTRL Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Zeal", + "description": "Tambahkan Zeal Wallet ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk ikon QR dan scan", + "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi Zeal", + "description": "Kami merekomendasikan untuk mem-pin Zeal ke taskbar Anda untuk akses wallet lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "Pasang ekstensi SafePal Wallet", + "description": "Klik di pojok kanan atas browser Anda dan pin SafePal Wallet untuk akses mudah." + }, + "step2": { + "title": "Buat atau Impor sebuah dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan SafePal Wallet, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi SafePal Wallet", + "description": "Letakkan SafePal Wallet di layar utama Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Ketuk WalletConnect di Pengaturan", + "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "Instal ekstensi Desig", + "description": "Kami merekomendasikan menempelkan Desig ke taskbar Anda untuk akses dompet Anda lebih mudah." + }, + "step2": { + "title": "Buat Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "Instal ekstensi SubWallet", + "description": "Kami merekomendasikan menempelkan SubWallet ke taskbar Anda untuk akses dompet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase pemulihan Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi SubWallet", + "description": "Kami merekomendasikan menaruh SubWallet di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "Instal ekstensi CLV Wallet", + "description": "Kami merekomendasikan menempelkan CLV Wallet ke taskbar Anda untuk akses dompet Anda lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi CLV Wallet", + "description": "Kami sarankan untuk menempatkan CLV Wallet di layar utama Anda untuk akses yang lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Okto", + "description": "Tambahkan Okto ke layar utama Anda untuk akses cepat" + }, + "step2": { + "title": "Buat Wallet MPC", + "description": "Buat akun dan generate wallet" + }, + "step3": { + "title": "Ketuk WalletConnect di Pengaturan", + "description": "Ketuk ikon Scan QR di pojok kanan atas dan konfirmasi prompt untuk terhubung." + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "Buka aplikasi Ledger Live", + "description": "Kami merekomendasikan menempatkan Ledger Live di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Atur Ledger Anda", + "description": "Atur Ledger baru atau hubungkan ke Ledger yang sudah ada." + }, + "step3": { + "title": "Hubungkan", + "description": "Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." + } + }, + "qr_code": { + "step1": { + "title": "Buka aplikasi Ledger Live", + "description": "Kami merekomendasikan menempatkan Ledger Live di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Atur Ledger Anda", + "description": "Anda dapat melakukan sinkronisasi dengan aplikasi desktop atau menghubungkan Ledger Anda." + }, + "step3": { + "title": "Pindai kode", + "description": "Ketuk WalletConnect lalu Beralih ke Scanner. Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Valora", + "description": "Kami merekomendasikan untuk meletakkan Valora di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Buat atau Impor dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Gate", + "description": "Kami merekomendasikan untuk meletakkan Gate di layar utama Anda untuk akses lebih cepat." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + }, + "extension": { + "step1": { + "title": "Instal ekstensi Gate", + "description": "Kami menyarankan untuk mem-pin Gate ke taskbar Anda untuk akses dompet yang lebih mudah." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." + }, + "step3": { + "title": "Segarkan browser Anda", + "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "Buka keys.gemini.com", + "description": "Kunjungi keys.gemini.com di browser ponsel Anda - tidak perlu mengunduh aplikasi." + }, + "step2": { + "title": "Buat Dompet Anda Seketika", + "description": "Siapkan dompet pintar Anda dalam hitungan detik menggunakan autentikasi bawaan perangkat Anda." + }, + "step3": { + "title": "Pindai untuk Terhubung", + "description": "Pindai kode QR untuk langsung menghubungkan dompet Anda - ini berfungsi dengan sangat baik." + } + }, + "extension": { + "step1": { + "title": "Pergi ke keys.gemini.com", + "description": "Tidak diperlukan ekstensi atau unduhan - dompet Anda aman di dalam browser." + }, + "step2": { + "title": "Pengaturan Sekali Klik", + "description": "Buat dompet pintar Anda secara instan dengan otentikasi passkey - lebih mudah dari semua dompet yang ada diluar sana." + }, + "step3": { + "title": "Sambungkan dan Mulai", + "description": "Setujui sambungan dan Anda siap - dompet yang tidak memihak yang hanya berfungsi." + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "Letakkan xPortal di layar utama Anda untuk akses lebih cepat ke dompet Anda.", + "title": "Buka aplikasi xPortal" + }, + "step2": { + "description": "Buat dompet baru atau impor yang sudah ada.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol Scan QR" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "Kami sarankan untuk menempatkan MEW Wallet di layar utama Anda untuk akses yang lebih cepat.", + "title": "Buka aplikasi MEW Wallet" + }, + "step2": { + "description": "Anda dapat dengan mudah mencadangkan dompet Anda menggunakan fitur cadangan awan.", + "title": "Buat atau Impor Dompet" + }, + "step3": { + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", + "title": "Tekan tombol scan" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "Buka aplikasi ZilPay", + "description": "Tambahkan ZilPay ke layar utama Anda untuk akses yang lebih cepat ke dompet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "Buka aplikasi Nova Wallet", + "description": "Tambahkan Nova Wallet ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." + }, + "step2": { + "title": "Buat atau Impor Dompet", + "description": "Buat dompet baru atau impor yang sudah ada." + }, + "step3": { + "title": "Tekan tombol scan", + "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." + } + } + } + } +} +`;export{n as default}; diff --git a/dist/assets/image-DqSKWtw4.js b/dist/assets/image-DqSKWtw4.js new file mode 100644 index 0000000..10eedbd --- /dev/null +++ b/dist/assets/image-DqSKWtw4.js @@ -0,0 +1,4 @@ +import{w as C}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=C` + + +`;export{t as imageSvg}; diff --git a/dist/assets/index-B0eu9Tuz.js b/dist/assets/index-B0eu9Tuz.js new file mode 100644 index 0000000..9849bef --- /dev/null +++ b/dist/assets/index-B0eu9Tuz.js @@ -0,0 +1,47 @@ +import{r as Z2,n as Y2}from"./index-BJmn9h7A.js";import{r as J2}from"./index-My90LZL7.js";import{r as X2}from"./events-DQ172AOg.js";function Q2(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function $2(){if(typeof WebSocket<"u")return WebSocket;if(typeof global.WebSocket<"u")return global.WebSocket;if(typeof window.WebSocket<"u")return window.WebSocket;if(typeof self.WebSocket<"u")return self.WebSocket;throw new Error("`WebSocket` is not supported in this environment")}const ev=$2(),tv=Object.freeze(Object.defineProperty({__proto__:null,WebSocket:ev},Symbol.toStringTag,{value:"Module"}));var Cd={},Ln={},Nt={},sn={},Or={},Un={},zn={},A0;function Ap(){if(A0)return zn;A0=1,Object.defineProperty(zn,"__esModule",{value:!0}),zn.getSDKVersion=void 0;const e=()=>"9.1.0";return zn.getSDKVersion=e,zn}var Dn={},T0;function rv(){if(T0)return Dn;T0=1,Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.generateRequestId=void 0;const e=r=>r.toString(16).padStart(2,"0"),t=r=>{const i=new Uint8Array(r/2);return window.crypto.getRandomValues(i),Array.from(i,e).join("")},n=()=>typeof window<"u"?t(10):new Date().getTime().toString(36);return Dn.generateRequestId=n,Dn}var S0;function Tp(){if(S0)return Un;S0=1,Object.defineProperty(Un,"__esModule",{value:!0}),Un.MessageFormatter=void 0;const e=Ap(),t=rv();class n{}return Un.MessageFormatter=n,n.makeRequest=(r,i)=>({id:(0,t.generateRequestId)(),method:r,params:i,env:{sdkVersion:(0,e.getSDKVersion)()}}),n.makeResponse=(r,i,a)=>({id:r,success:!0,version:a,data:i}),n.makeErrorResponse=(r,i,a)=>({id:r,success:!1,error:i,version:a}),Un}var Cr={},I0;function Jr(){if(I0)return Cr;I0=1,Object.defineProperty(Cr,"__esModule",{value:!0}),Cr.RestrictedMethods=Cr.Methods=void 0;var e;(function(n){n.sendTransactions="sendTransactions",n.rpcCall="rpcCall",n.getChainInfo="getChainInfo",n.getSafeInfo="getSafeInfo",n.getTxBySafeTxHash="getTxBySafeTxHash",n.getSafeBalances="getSafeBalances",n.signMessage="signMessage",n.signTypedMessage="signTypedMessage",n.getEnvironmentInfo="getEnvironmentInfo",n.getOffChainSignature="getOffChainSignature",n.requestAddressBook="requestAddressBook",n.wallet_getPermissions="wallet_getPermissions",n.wallet_requestPermissions="wallet_requestPermissions"})(e||(Cr.Methods=e={}));var t;return(function(n){n.requestAddressBook="requestAddressBook"})(t||(Cr.RestrictedMethods=t={})),Cr}var B0;function nv(){return B0||(B0=1,(function(e){var t=Or&&Or.__createBinding||(Object.create?(function(a,o,c,u){u===void 0&&(u=c);var d=Object.getOwnPropertyDescriptor(o,c);(!d||("get"in d?!o.__esModule:d.writable||d.configurable))&&(d={enumerable:!0,get:function(){return o[c]}}),Object.defineProperty(a,u,d)}):(function(a,o,c,u){u===void 0&&(u=c),a[u]=o[c]})),n=Or&&Or.__exportStar||function(a,o){for(var c in a)c!=="default"&&!Object.prototype.hasOwnProperty.call(o,c)&&t(o,a,c)};Object.defineProperty(e,"__esModule",{value:!0});const r=Tp();class i{constructor(o=null,c=!1){this.allowedOrigins=null,this.callbacks=new Map,this.debugMode=!1,this.isServer=typeof window>"u",this.isValidMessage=({origin:u,data:d,source:l})=>{const f=!d,b=!this.isServer&&l===window.parent,T=typeof d.version<"u"&&parseInt(d.version.split(".")[0]),w=typeof T=="number"&&T>=1;let p=!0;return Array.isArray(this.allowedOrigins)&&(p=this.allowedOrigins.find(O=>O.test(u))!==void 0),!f&&b&&w&&p},this.logIncomingMessage=u=>{console.info(`Safe Apps SDK v1: A message was received from origin ${u.origin}. `,u.data)},this.onParentMessage=u=>{this.isValidMessage(u)&&(this.debugMode&&this.logIncomingMessage(u),this.handleIncomingMessage(u.data))},this.handleIncomingMessage=u=>{const{id:d}=u,l=this.callbacks.get(d);l&&(l(u),this.callbacks.delete(d))},this.send=(u,d)=>{const l=r.MessageFormatter.makeRequest(u,d);if(this.isServer)throw new Error("Window doesn't exist");return window.parent.postMessage(l,"*"),new Promise((f,b)=>{this.callbacks.set(l.id,T=>{if(!T.success){b(new Error(T.error));return}f(T)})})},this.allowedOrigins=o,this.debugMode=c,this.isServer||window.addEventListener("message",this.onParentMessage)}}e.default=i,n(Jr(),e)})(Or)),Or}var Gn={},xr={},Vn={},R0;function ov(){if(R0)return Vn;R0=1,Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.isObjectEIP712TypedData=void 0;const e=t=>typeof t=="object"&&t!=null&&"domain"in t&&"types"in t&&"message"in t;return Vn.isObjectEIP712TypedData=e,Vn}var xd={},O0;function iv(){return O0||(O0=1,Object.defineProperty(xd,"__esModule",{value:!0})),xd}var qd={},C0;function sv(){return C0||(C0=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TransferDirection=e.TransactionStatus=e.TokenType=e.Operation=void 0;var t=J2();Object.defineProperty(e,"Operation",{enumerable:!0,get:function(){return t.Operation}}),Object.defineProperty(e,"TokenType",{enumerable:!0,get:function(){return t.TokenType}}),Object.defineProperty(e,"TransactionStatus",{enumerable:!0,get:function(){return t.TransactionStatus}}),Object.defineProperty(e,"TransferDirection",{enumerable:!0,get:function(){return t.TransferDirection}})})(qd)),qd}var Hd={},x0;function av(){return x0||(x0=1,Object.defineProperty(Hd,"__esModule",{value:!0}),Jr()),Hd}var q0;function mf(){return q0||(q0=1,(function(e){var t=xr&&xr.__createBinding||(Object.create?(function(r,i,a,o){o===void 0&&(o=a);var c=Object.getOwnPropertyDescriptor(i,a);(!c||("get"in c?!i.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return i[a]}}),Object.defineProperty(r,o,c)}):(function(r,i,a,o){o===void 0&&(o=a),r[o]=i[a]})),n=xr&&xr.__exportStar||function(r,i){for(var a in r)a!=="default"&&!Object.prototype.hasOwnProperty.call(i,a)&&t(i,r,a)};Object.defineProperty(e,"__esModule",{value:!0}),n(ov(),e),n(iv(),e),n(sv(),e),n(av(),e)})(xr)),xr}var H0;function cv(){if(H0)return Gn;H0=1,Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.TXs=void 0;const e=Jr(),t=mf();class n{constructor(i){this.communicator=i}async getBySafeTxHash(i){if(!i)throw new Error("Invalid safeTxHash");return(await this.communicator.send(e.Methods.getTxBySafeTxHash,{safeTxHash:i})).data}async signMessage(i){const a={message:i};return(await this.communicator.send(e.Methods.signMessage,a)).data}async signTypedMessage(i){if(!(0,t.isObjectEIP712TypedData)(i))throw new Error("Invalid typed data");return(await this.communicator.send(e.Methods.signTypedMessage,{typedData:i})).data}async send({txs:i,params:a}){if(!i||!i.length)throw new Error("No transactions were passed");const o={txs:i,params:a};return(await this.communicator.send(e.Methods.sendTransactions,o)).data}}return Gn.TXs=n,Gn}var Wn={},Kn={},M0;function hf(){return M0||(M0=1,Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.RPC_CALLS=void 0,Kn.RPC_CALLS={eth_call:"eth_call",eth_gasPrice:"eth_gasPrice",eth_getLogs:"eth_getLogs",eth_getBalance:"eth_getBalance",eth_getCode:"eth_getCode",eth_getBlockByHash:"eth_getBlockByHash",eth_getBlockByNumber:"eth_getBlockByNumber",eth_getStorageAt:"eth_getStorageAt",eth_getTransactionByHash:"eth_getTransactionByHash",eth_getTransactionReceipt:"eth_getTransactionReceipt",eth_getTransactionCount:"eth_getTransactionCount",eth_estimateGas:"eth_estimateGas",safe_setSettings:"safe_setSettings"}),Kn}var k0;function uv(){if(k0)return Wn;k0=1,Object.defineProperty(Wn,"__esModule",{value:!0}),Wn.Eth=void 0;const e=hf(),t=Jr(),n={defaultBlockParam:(i="latest")=>i,returnFullTxObjectParam:(i=!1)=>i,blockNumberToHex:i=>Number.isInteger(i)?`0x${i.toString(16)}`:i};class r{constructor(a){this.communicator=a,this.call=this.buildRequest({call:e.RPC_CALLS.eth_call,formatters:[null,n.defaultBlockParam]}),this.getBalance=this.buildRequest({call:e.RPC_CALLS.eth_getBalance,formatters:[null,n.defaultBlockParam]}),this.getCode=this.buildRequest({call:e.RPC_CALLS.eth_getCode,formatters:[null,n.defaultBlockParam]}),this.getStorageAt=this.buildRequest({call:e.RPC_CALLS.eth_getStorageAt,formatters:[null,n.blockNumberToHex,n.defaultBlockParam]}),this.getPastLogs=this.buildRequest({call:e.RPC_CALLS.eth_getLogs}),this.getBlockByHash=this.buildRequest({call:e.RPC_CALLS.eth_getBlockByHash,formatters:[null,n.returnFullTxObjectParam]}),this.getBlockByNumber=this.buildRequest({call:e.RPC_CALLS.eth_getBlockByNumber,formatters:[n.blockNumberToHex,n.returnFullTxObjectParam]}),this.getTransactionByHash=this.buildRequest({call:e.RPC_CALLS.eth_getTransactionByHash}),this.getTransactionReceipt=this.buildRequest({call:e.RPC_CALLS.eth_getTransactionReceipt}),this.getTransactionCount=this.buildRequest({call:e.RPC_CALLS.eth_getTransactionCount,formatters:[null,n.defaultBlockParam]}),this.getGasPrice=this.buildRequest({call:e.RPC_CALLS.eth_gasPrice}),this.getEstimateGas=o=>this.buildRequest({call:e.RPC_CALLS.eth_estimateGas})([o]),this.setSafeSettings=this.buildRequest({call:e.RPC_CALLS.safe_setSettings})}buildRequest(a){const{call:o,formatters:c}=a;return async u=>{c&&Array.isArray(u)&&c.forEach((f,b)=>{f&&(u[b]=f(u[b]))});const d={call:o,params:u||[]};return(await this.communicator.send(t.Methods.rpcCall,d)).data}}}return Wn.Eth=r,Wn}var Ft={},Md={},kd={},Zn={},Yn={},N0;function dv(){return N0||(N0=1,Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.version=void 0,Yn.version="1.2.3"),Yn}var F0;function Sn(){if(F0)return Zn;F0=1,Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.BaseError=void 0;const e=dv();class t extends Error{constructor(r,i={}){const a=i.cause instanceof t?i.cause.details:i.cause?.message?i.cause.message:i.details,o=i.cause instanceof t&&i.cause.docsPath||i.docsPath,c=[r||"An error occurred.","",...i.metaMessages?[...i.metaMessages,""]:[],...o?[`Docs: https://abitype.dev${o}`]:[],...a?[`Details: ${a}`]:[],`Version: abitype@${e.version}`].join(` +`);super(c),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiTypeError"}),i.cause&&(this.cause=i.cause),this.details=a,this.docsPath=o,this.metaMessages=i.metaMessages,this.shortMessage=r}}return Zn.BaseError=t,Zn}var Pi={},L0;function fv(){if(L0)return Pi;L0=1,Object.defineProperty(Pi,"__esModule",{value:!0}),Pi.narrow=e;function e(t){return t}return Pi}var Ai={},Ti={},Si={},Ii={},qt={},U0;function Nu(){if(U0)return qt;U0=1,Object.defineProperty(qt,"__esModule",{value:!0}),qt.isTupleRegex=qt.integerRegex=qt.bytesRegex=void 0,qt.execTyped=e;function e(t,n){return t.exec(n)?.groups}return qt.bytesRegex=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,qt.integerRegex=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,qt.isTupleRegex=/^\(.+?\).*?$/,qt}var z0;function Sp(){if(z0)return Ii;z0=1,Object.defineProperty(Ii,"__esModule",{value:!0}),Ii.formatAbiParameter=n;const e=Nu(),t=/^tuple(?(\[(\d*)\])*)$/;function n(r){let i=r.type;if(t.test(r.type)&&"components"in r){i="(";const a=r.components.length;for(let c=0;c[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/;function n(y){return t.test(y)}function r(y){return(0,e.execTyped)(t,y)}const i=/^event (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/;function a(y){return i.test(y)}function o(y){return(0,e.execTyped)(i,y)}const c=/^function (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)(?: (?external|public{1}))?(?: (?pure|view|nonpayable|payable{1}))?(?: returns\s?\((?.*?)\))?$/;function u(y){return c.test(y)}function d(y){return(0,e.execTyped)(c,y)}const l=/^struct (?[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?.*?)\}$/;function f(y){return l.test(y)}function b(y){return(0,e.execTyped)(l,y)}const T=/^constructor\((?.*?)\)(?:\s(?payable{1}))?$/;function w(y){return T.test(y)}function p(y){return(0,e.execTyped)(T,y)}const O=/^fallback\(\) external(?:\s(?payable{1}))?$/;function S(y){return O.test(y)}function m(y){return(0,e.execTyped)(O,y)}const j=/^receive\(\) external payable$/;function s(y){return j.test(y)}return ke.modifiers=new Set(["memory","indexed","storage","calldata"]),ke.eventModifiers=new Set(["indexed"]),ke.functionModifiers=new Set(["calldata","memory","storage"]),ke}var Ri={},Lt={},K0;function Fu(){if(K0)return Lt;K0=1,Object.defineProperty(Lt,"__esModule",{value:!0}),Lt.UnknownSolidityTypeError=Lt.UnknownTypeError=Lt.InvalidAbiItemError=void 0;const e=Sn();class t extends e.BaseError{constructor({signature:a}){super("Failed to parse ABI item.",{details:`parseAbiItem(${JSON.stringify(a,null,2)})`,docsPath:"/api/human#parseabiitem-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiItemError"})}}Lt.InvalidAbiItemError=t;class n extends e.BaseError{constructor({type:a}){super("Unknown type.",{metaMessages:[`Type "${a}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownTypeError"})}}Lt.UnknownTypeError=n;class r extends e.BaseError{constructor({type:a}){super("Unknown type.",{metaMessages:[`Type "${a}" is not a valid ABI type.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSolidityTypeError"})}}return Lt.UnknownSolidityTypeError=r,Lt}var Ge={},Z0;function Go(){if(Z0)return Ge;Z0=1,Object.defineProperty(Ge,"__esModule",{value:!0}),Ge.InvalidAbiTypeParameterError=Ge.InvalidFunctionModifierError=Ge.InvalidModifierError=Ge.SolidityProtectedKeywordError=Ge.InvalidParameterError=Ge.InvalidAbiParametersError=Ge.InvalidAbiParameterError=void 0;const e=Sn();class t extends e.BaseError{constructor({param:d}){super("Failed to parse ABI parameter.",{details:`parseAbiParameter(${JSON.stringify(d,null,2)})`,docsPath:"/api/human#parseabiparameter-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiParameterError"})}}Ge.InvalidAbiParameterError=t;class n extends e.BaseError{constructor({params:d}){super("Failed to parse ABI parameters.",{details:`parseAbiParameters(${JSON.stringify(d,null,2)})`,docsPath:"/api/human#parseabiparameters-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiParametersError"})}}Ge.InvalidAbiParametersError=n;class r extends e.BaseError{constructor({param:d}){super("Invalid ABI parameter.",{details:d}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParameterError"})}}Ge.InvalidParameterError=r;class i extends e.BaseError{constructor({param:d,name:l}){super("Invalid ABI parameter.",{details:d,metaMessages:[`"${l}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SolidityProtectedKeywordError"})}}Ge.SolidityProtectedKeywordError=i;class a extends e.BaseError{constructor({param:d,type:l,modifier:f}){super("Invalid ABI parameter.",{details:d,metaMessages:[`Modifier "${f}" not allowed${l?` in "${l}" type`:""}.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidModifierError"})}}Ge.InvalidModifierError=a;class o extends e.BaseError{constructor({param:d,type:l,modifier:f}){super("Invalid ABI parameter.",{details:d,metaMessages:[`Modifier "${f}" not allowed${l?` in "${l}" type`:""}.`,`Data location can only be specified for array, struct, or mapping types, but "${f}" was given.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidFunctionModifierError"})}}Ge.InvalidFunctionModifierError=o;class c extends e.BaseError{constructor({abiParameter:d}){super("Invalid ABI parameter.",{details:JSON.stringify(d,null,2),metaMessages:["ABI parameter type is invalid."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiTypeParameterError"})}}return Ge.InvalidAbiTypeParameterError=c,Ge}var Ut={},Y0;function yf(){if(Y0)return Ut;Y0=1,Object.defineProperty(Ut,"__esModule",{value:!0}),Ut.InvalidStructSignatureError=Ut.UnknownSignatureError=Ut.InvalidSignatureError=void 0;const e=Sn();class t extends e.BaseError{constructor({signature:a,type:o}){super(`Invalid ${o} signature.`,{details:a}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSignatureError"})}}Ut.InvalidSignatureError=t;class n extends e.BaseError{constructor({signature:a}){super("Unknown signature.",{details:a}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSignatureError"})}}Ut.UnknownSignatureError=n;class r extends e.BaseError{constructor({signature:a}){super("Invalid struct signature.",{details:a,metaMessages:["No properties exist."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStructSignatureError"})}}return Ut.InvalidStructSignatureError=r,Ut}var Jn={},J0;function Rp(){if(J0)return Jn;J0=1,Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.CircularReferenceError=void 0;const e=Sn();class t extends e.BaseError{constructor({type:r}){super("Circular reference detected.",{metaMessages:[`Struct "${r}" is a circular reference.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CircularReferenceError"})}}return Jn.CircularReferenceError=t,Jn}var ot={},Xn={},X0;function Op(){if(X0)return Xn;X0=1,Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.InvalidParenthesisError=void 0;const e=Sn();class t extends e.BaseError{constructor({current:r,depth:i}){super("Unbalanced parentheses.",{metaMessages:[`"${r.trim()}" has too many ${i>0?"opening":"closing"} parentheses.`],details:`Depth "${i}"`}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParenthesisError"})}}return Xn.InvalidParenthesisError=t,Xn}var an={},Q0;function bv(){if(Q0)return an;Q0=1,Object.defineProperty(an,"__esModule",{value:!0}),an.parameterCache=void 0,an.getParameterCacheKey=e;function e(t,n,r){let i="";if(r)for(const a of Object.entries(r)){if(!a)continue;let o="";for(const c of a[1])o+=`[${c.type}${c.name?`:${c.name}`:""}]`;i+=`(${a[0]}{${o}})`}return n?`${n}:${t}${i}`:`${t}${i}`}return an.parameterCache=new Map([["address",{type:"address"}],["bool",{type:"bool"}],["bytes",{type:"bytes"}],["bytes32",{type:"bytes32"}],["int",{type:"int256"}],["int256",{type:"int256"}],["string",{type:"string"}],["uint",{type:"uint256"}],["uint8",{type:"uint8"}],["uint16",{type:"uint16"}],["uint24",{type:"uint24"}],["uint32",{type:"uint32"}],["uint64",{type:"uint64"}],["uint96",{type:"uint96"}],["uint112",{type:"uint112"}],["uint160",{type:"uint160"}],["uint192",{type:"uint192"}],["uint256",{type:"uint256"}],["address owner",{type:"address",name:"owner"}],["address to",{type:"address",name:"to"}],["bool approved",{type:"bool",name:"approved"}],["bytes _data",{type:"bytes",name:"_data"}],["bytes data",{type:"bytes",name:"data"}],["bytes signature",{type:"bytes",name:"signature"}],["bytes32 hash",{type:"bytes32",name:"hash"}],["bytes32 r",{type:"bytes32",name:"r"}],["bytes32 root",{type:"bytes32",name:"root"}],["bytes32 s",{type:"bytes32",name:"s"}],["string name",{type:"string",name:"name"}],["string symbol",{type:"string",name:"symbol"}],["string tokenURI",{type:"string",name:"tokenURI"}],["uint tokenId",{type:"uint256",name:"tokenId"}],["uint8 v",{type:"uint8",name:"v"}],["uint256 balance",{type:"uint256",name:"balance"}],["uint256 tokenId",{type:"uint256",name:"tokenId"}],["uint256 value",{type:"uint256",name:"value"}],["event:address indexed from",{type:"address",name:"from",indexed:!0}],["event:address indexed to",{type:"address",name:"to",indexed:!0}],["event:uint indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}],["event:uint256 indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}]]),an}var $0;function Tn(){if($0)return ot;$0=1,Object.defineProperty(ot,"__esModule",{value:!0}),ot.parseSignature=c,ot.parseFunctionSignature=u,ot.parseEventSignature=d,ot.parseErrorSignature=l,ot.parseConstructorSignature=f,ot.parseFallbackSignature=b,ot.parseAbiParameter=O,ot.splitParameters=S,ot.isSolidityType=m,ot.isSolidityKeyword=s,ot.isValidDataLocation=y;const e=Nu(),t=Fu(),n=Go(),r=yf(),i=Op(),a=bv(),o=In();function c(g,E={}){if((0,o.isFunctionSignature)(g))return u(g,E);if((0,o.isEventSignature)(g))return d(g,E);if((0,o.isErrorSignature)(g))return l(g,E);if((0,o.isConstructorSignature)(g))return f(g,E);if((0,o.isFallbackSignature)(g))return b(g);if((0,o.isReceiveSignature)(g))return{type:"receive",stateMutability:"payable"};throw new r.UnknownSignatureError({signature:g})}function u(g,E={}){const B=(0,o.execFunctionSignature)(g);if(!B)throw new r.InvalidSignatureError({signature:g,type:"function"});const _=S(B.parameters),v=[],C=_.length;for(let R=0;R[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,w=/^\((?.+?)\)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,p=/^u?int$/;function O(g,E){const B=(0,a.getParameterCacheKey)(g,E?.type,E?.structs);if(a.parameterCache.has(B))return a.parameterCache.get(B);const _=e.isTupleRegex.test(g),v=(0,e.execTyped)(_?w:T,g);if(!v)throw new n.InvalidParameterError({param:g});if(v.name&&s(v.name))throw new n.SolidityProtectedKeywordError({param:g,name:v.name});const C=v.name?{name:v.name}:{},q=v.modifier==="indexed"?{indexed:!0}:{},R=E?.structs??{};let H,F={};if(_){H="tuple";const h=S(v.type),M=[],A=h.length;for(let P=0;P[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\[\d*?\])+?)?$/;function d(l=[],f={},b=new Set){const T=[],w=l.length;for(let p=0;pn(t,o)}return qi}var Hi={},Mi={},ce={},Qn={},al;function Qt(){if(al)return Qn;al=1,Object.defineProperty(Qn,"__esModule",{value:!0}),Qn.formatAbiItem=t,Qn.formatAbiParams=n;const e=qe();function t(i,{includeName:a=!1}={}){if(i.type!=="function"&&i.type!=="event"&&i.type!=="error")throw new e.InvalidDefinitionTypeError(i.type);return`${i.name}(${n(i.inputs,{includeName:a})})`}function n(i,{includeName:a=!1}={}){return i?i.map(o=>r(o,{includeName:a})).join(a?", ":","):""}function r(i,{includeName:a}){return i.type.startsWith("tuple")?`(${n(i.components,{includeName:a})})${i.type.slice(5)}`:i.type+(a&&i.name?` ${i.name}`:"")}return Qn}var ki={},Ni={},cl;function nt(){if(cl)return Ni;cl=1,Object.defineProperty(Ni,"__esModule",{value:!0}),Ni.isHex=e;function e(t,{strict:n=!0}={}){return!t||typeof t!="string"?!1:n?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x")}return Ni}var ul;function st(){if(ul)return ki;ul=1,Object.defineProperty(ki,"__esModule",{value:!0}),ki.size=t;const e=nt();function t(n){return(0,e.isHex)(n,{strict:!1})?Math.ceil((n.length-2)/2):n.length}return ki}var un={},$n={},dl;function pv(){return dl||(dl=1,Object.defineProperty($n,"__esModule",{value:!0}),$n.version=void 0,$n.version="2.44.0"),$n}var fl;function fe(){if(fl)return un;fl=1,Object.defineProperty(un,"__esModule",{value:!0}),un.BaseError=void 0,un.setErrorConfig=n;const e=pv();let t={getDocsUrl:({docsBaseUrl:a,docsPath:o="",docsSlug:c})=>o?`${a??"https://viem.sh"}${o}${c?`#${c}`:""}`:void 0,version:`viem@${e.version}`};function n(a){t=a}class r extends Error{constructor(o,c={}){const u=c.cause instanceof r?c.cause.details:c.cause?.message?c.cause.message:c.details,d=c.cause instanceof r&&c.cause.docsPath||c.docsPath,l=t.getDocsUrl?.({...c,docsPath:d}),f=[o||"An error occurred.","",...c.metaMessages?[...c.metaMessages,""]:[],...l?[`Docs: ${l}`]:[],...u?[`Details: ${u}`]:[],...t.version?[`Version: ${t.version}`]:[]].join(` +`);super(f,c.cause?{cause:c.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=u,this.docsPath=d,this.metaMessages=c.metaMessages,this.name=c.name??this.name,this.shortMessage=o,this.version=e.version}walk(o){return i(this,o)}}un.BaseError=r;function i(a,o){return o?.(a)?a:a&&typeof a=="object"&&"cause"in a&&a.cause!==void 0?i(a.cause,o):o?null:a}return un}var ll;function qe(){if(ll)return ce;ll=1,Object.defineProperty(ce,"__esModule",{value:!0}),ce.UnsupportedPackedAbiType=ce.InvalidDefinitionTypeError=ce.InvalidArrayError=ce.InvalidAbiDecodingTypeError=ce.InvalidAbiEncodingTypeError=ce.DecodeLogTopicsMismatch=ce.DecodeLogDataMismatch=ce.BytesSizeMismatchError=ce.AbiItemAmbiguityError=ce.AbiFunctionSignatureNotFoundError=ce.AbiFunctionOutputsNotFoundError=ce.AbiFunctionNotFoundError=ce.AbiEventNotFoundError=ce.AbiEventSignatureNotFoundError=ce.AbiEventSignatureEmptyTopicsError=ce.AbiErrorSignatureNotFoundError=ce.AbiErrorNotFoundError=ce.AbiErrorInputsNotFoundError=ce.AbiEncodingLengthMismatchError=ce.AbiEncodingBytesSizeMismatchError=ce.AbiEncodingArrayLengthMismatchError=ce.AbiDecodingZeroDataError=ce.AbiDecodingDataSizeTooSmallError=ce.AbiDecodingDataSizeInvalidError=ce.AbiConstructorParamsNotFoundError=ce.AbiConstructorNotFoundError=void 0;const e=Qt(),t=st(),n=fe();class r extends n.BaseError{constructor({docsPath:H}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(` +`),{docsPath:H,name:"AbiConstructorNotFoundError"})}}ce.AbiConstructorNotFoundError=r;class i extends n.BaseError{constructor({docsPath:H}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(` +`),{docsPath:H,name:"AbiConstructorParamsNotFoundError"})}}ce.AbiConstructorParamsNotFoundError=i;class a extends n.BaseError{constructor({data:H,size:F}){super([`Data size of ${F} bytes is invalid.`,"Size must be in increments of 32 bytes (size % 32 === 0)."].join(` +`),{metaMessages:[`Data: ${H} (${F} bytes)`],name:"AbiDecodingDataSizeInvalidError"})}}ce.AbiDecodingDataSizeInvalidError=a;class o extends n.BaseError{constructor({data:H,params:F,size:k}){super([`Data size of ${k} bytes is too small for given parameters.`].join(` +`),{metaMessages:[`Params: (${(0,e.formatAbiParams)(F,{includeName:!0})})`,`Data: ${H} (${k} bytes)`],name:"AbiDecodingDataSizeTooSmallError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=H,this.params=F,this.size=k}}ce.AbiDecodingDataSizeTooSmallError=o;class c extends n.BaseError{constructor(){super('Cannot decode zero data ("0x") with ABI parameters.',{name:"AbiDecodingZeroDataError"})}}ce.AbiDecodingZeroDataError=c;class u extends n.BaseError{constructor({expectedLength:H,givenLength:F,type:k}){super([`ABI encoding array length mismatch for type ${k}.`,`Expected length: ${H}`,`Given length: ${F}`].join(` +`),{name:"AbiEncodingArrayLengthMismatchError"})}}ce.AbiEncodingArrayLengthMismatchError=u;class d extends n.BaseError{constructor({expectedSize:H,value:F}){super(`Size of bytes "${F}" (bytes${(0,t.size)(F)}) does not match expected size (bytes${H}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}ce.AbiEncodingBytesSizeMismatchError=d;class l extends n.BaseError{constructor({expectedLength:H,givenLength:F}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${H}`,`Given length (values): ${F}`].join(` +`),{name:"AbiEncodingLengthMismatchError"})}}ce.AbiEncodingLengthMismatchError=l;class f extends n.BaseError{constructor(H,{docsPath:F}){super([`Arguments (\`args\`) were provided to "${H}", but "${H}" on the ABI does not contain any parameters (\`inputs\`).`,"Cannot encode error result without knowing what the parameter types are.","Make sure you are using the correct ABI and that the inputs exist on it."].join(` +`),{docsPath:F,name:"AbiErrorInputsNotFoundError"})}}ce.AbiErrorInputsNotFoundError=f;class b extends n.BaseError{constructor(H,{docsPath:F}={}){super([`Error ${H?`"${H}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the error exists on it."].join(` +`),{docsPath:F,name:"AbiErrorNotFoundError"})}}ce.AbiErrorNotFoundError=b;class T extends n.BaseError{constructor(H,{docsPath:F}){super([`Encoded error signature "${H}" not found on ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${H}.`].join(` +`),{docsPath:F,name:"AbiErrorSignatureNotFoundError"}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.signature=H}}ce.AbiErrorSignatureNotFoundError=T;class w extends n.BaseError{constructor({docsPath:H}){super("Cannot extract event signature from empty topics.",{docsPath:H,name:"AbiEventSignatureEmptyTopicsError"})}}ce.AbiEventSignatureEmptyTopicsError=w;class p extends n.BaseError{constructor(H,{docsPath:F}){super([`Encoded event signature "${H}" not found on ABI.`,"Make sure you are using the correct ABI and that the event exists on it.",`You can look up the signature here: https://openchain.xyz/signatures?query=${H}.`].join(` +`),{docsPath:F,name:"AbiEventSignatureNotFoundError"})}}ce.AbiEventSignatureNotFoundError=p;class O extends n.BaseError{constructor(H,{docsPath:F}={}){super([`Event ${H?`"${H}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the event exists on it."].join(` +`),{docsPath:F,name:"AbiEventNotFoundError"})}}ce.AbiEventNotFoundError=O;class S extends n.BaseError{constructor(H,{docsPath:F}={}){super([`Function ${H?`"${H}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it."].join(` +`),{docsPath:F,name:"AbiFunctionNotFoundError"})}}ce.AbiFunctionNotFoundError=S;class m extends n.BaseError{constructor(H,{docsPath:F}){super([`Function "${H}" does not contain any \`outputs\` on ABI.`,"Cannot decode function result without knowing what the parameter types are.","Make sure you are using the correct ABI and that the function exists on it."].join(` +`),{docsPath:F,name:"AbiFunctionOutputsNotFoundError"})}}ce.AbiFunctionOutputsNotFoundError=m;class j extends n.BaseError{constructor(H,{docsPath:F}){super([`Encoded function signature "${H}" not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it.",`You can look up the signature here: https://openchain.xyz/signatures?query=${H}.`].join(` +`),{docsPath:F,name:"AbiFunctionSignatureNotFoundError"})}}ce.AbiFunctionSignatureNotFoundError=j;class s extends n.BaseError{constructor(H,F){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${H.type}\` in \`${(0,e.formatAbiItem)(H.abiItem)}\`, and`,`\`${F.type}\` in \`${(0,e.formatAbiItem)(F.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."],name:"AbiItemAmbiguityError"})}}ce.AbiItemAmbiguityError=s;class y extends n.BaseError{constructor({expectedSize:H,givenSize:F}){super(`Expected bytes${H}, got bytes${F}.`,{name:"BytesSizeMismatchError"})}}ce.BytesSizeMismatchError=y;class g extends n.BaseError{constructor({abiItem:H,data:F,params:k,size:h}){super([`Data size of ${h} bytes is too small for non-indexed event parameters.`].join(` +`),{metaMessages:[`Params: (${(0,e.formatAbiParams)(k,{includeName:!0})})`,`Data: ${F} (${h} bytes)`],name:"DecodeLogDataMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=H,this.data=F,this.params=k,this.size=h}}ce.DecodeLogDataMismatch=g;class E extends n.BaseError{constructor({abiItem:H,param:F}){super([`Expected a topic for indexed event parameter${F.name?` "${F.name}"`:""} on event "${(0,e.formatAbiItem)(H,{includeName:!0})}".`].join(` +`),{name:"DecodeLogTopicsMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=H}}ce.DecodeLogTopicsMismatch=E;class B extends n.BaseError{constructor(H,{docsPath:F}){super([`Type "${H}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(` +`),{docsPath:F,name:"InvalidAbiEncodingType"})}}ce.InvalidAbiEncodingTypeError=B;class _ extends n.BaseError{constructor(H,{docsPath:F}){super([`Type "${H}" is not a valid decoding type.`,"Please provide a valid ABI type."].join(` +`),{docsPath:F,name:"InvalidAbiDecodingType"})}}ce.InvalidAbiDecodingTypeError=_;class v extends n.BaseError{constructor(H){super([`Value "${H}" is not a valid array.`].join(` +`),{name:"InvalidArrayError"})}}ce.InvalidArrayError=v;class C extends n.BaseError{constructor(H){super([`"${H}" is not a valid definition type.`,'Valid types: "function", "event", "error"'].join(` +`),{name:"InvalidDefinitionTypeError"})}}ce.InvalidDefinitionTypeError=C;class q extends n.BaseError{constructor(H){super(`Type "${H}" is not supported for packed encoding.`,{name:"UnsupportedPackedAbiType"})}}return ce.UnsupportedPackedAbiType=q,ce}var eo={},bl;function Cp(){if(bl)return eo;bl=1,Object.defineProperty(eo,"__esModule",{value:!0}),eo.FilterTypeNotSupportedError=void 0;const e=fe();class t extends e.BaseError{constructor(r){super(`Filter type "${r}" is not supported.`,{name:"FilterTypeNotSupportedError"})}}return eo.FilterTypeNotSupportedError=t,eo}var or={},dn={},zt={},ml;function Uu(){if(ml)return zt;ml=1,Object.defineProperty(zt,"__esModule",{value:!0}),zt.InvalidBytesLengthError=zt.SizeExceedsPaddingSizeError=zt.SliceOffsetOutOfBoundsError=void 0;const e=fe();class t extends e.BaseError{constructor({offset:a,position:o,size:c}){super(`Slice ${o==="start"?"starting":"ending"} at offset "${a}" is out-of-bounds (size: ${c}).`,{name:"SliceOffsetOutOfBoundsError"})}}zt.SliceOffsetOutOfBoundsError=t;class n extends e.BaseError{constructor({size:a,targetSize:o,type:c}){super(`${c.charAt(0).toUpperCase()}${c.slice(1).toLowerCase()} size (${a}) exceeds padding size (${o}).`,{name:"SizeExceedsPaddingSizeError"})}}zt.SizeExceedsPaddingSizeError=n;class r extends e.BaseError{constructor({size:a,targetSize:o,type:c}){super(`${c.charAt(0).toUpperCase()}${c.slice(1).toLowerCase()} is expected to be ${o} ${c} long, but is ${a} ${c} long.`,{name:"InvalidBytesLengthError"})}}return zt.InvalidBytesLengthError=r,zt}var hl;function br(){if(hl)return dn;hl=1,Object.defineProperty(dn,"__esModule",{value:!0}),dn.pad=t,dn.padHex=n,dn.padBytes=r;const e=Uu();function t(i,{dir:a,size:o=32}={}){return typeof i=="string"?n(i,{dir:a,size:o}):r(i,{dir:a,size:o})}function n(i,{dir:a,size:o=32}={}){if(o===null)return i;const c=i.replace("0x","");if(c.length>o*2)throw new e.SizeExceedsPaddingSizeError({size:Math.ceil(c.length/2),targetSize:o,type:"hex"});return`0x${c[a==="right"?"padEnd":"padStart"](o*2,"0")}`}function r(i,{dir:a,size:o=32}={}){if(o===null)return i;if(i.length>o)throw new e.SizeExceedsPaddingSizeError({size:i.length,targetSize:o,type:"bytes"});const c=new Uint8Array(o);for(let u=0;uf)throw new e.SizeOverflowError({givenSize:(0,t.size)(l),maxSize:f})}function a(l,f){const b=typeof f=="string"?{to:f}:f,T=b.to;return T==="number"?u(l,b):T==="bigint"?o(l,b):T==="string"?d(l,b):T==="boolean"?c(l,b):(0,r.hexToBytes)(l,b)}function o(l,f={}){const{signed:b}=f;f.size&&i(l,{size:f.size});const T=BigInt(l);if(!b)return T;const w=(l.length-2)/2,p=(1n<f.toString(16).padStart(2,"0"));function i(l,f={}){return typeof l=="number"||typeof l=="bigint"?c(l,f):typeof l=="string"?d(l,f):typeof l=="boolean"?a(l,f):o(l,f)}function a(l,f={}){const b=`0x${Number(l)}`;return typeof f.size=="number"?((0,n.assertSize)(b,{size:f.size}),(0,t.pad)(b,{size:f.size})):b}function o(l,f={}){let b="";for(let w=0;wp||w=u.zero&&T<=u.nine)return T-u.zero;if(T>=u.A&&T<=u.F)return T-(u.A-10);if(T>=u.a&&T<=u.f)return T-(u.a-10)}function l(T,w={}){let p=T;w.size&&((0,r.assertSize)(p,{size:w.size}),p=(0,n.pad)(p,{dir:"right",size:w.size}));let O=p.slice(2);O.length%2&&(O=`0${O}`);const S=O.length/2,m=new Uint8Array(S);for(let j=0,s=0;j>t&e)}:{h:Number(_>>t&e)|0,l:Number(_&e)|0}}function r(_,v=!1){const C=_.length;let q=new Uint32Array(C),R=new Uint32Array(C);for(let H=0;HBigInt(_>>>0)<>>0);ue.toBig=i;const a=(_,v,C)=>_>>>C;ue.shrSH=a;const o=(_,v,C)=>_<<32-C|v>>>C;ue.shrSL=o;const c=(_,v,C)=>_>>>C|v<<32-C;ue.rotrSH=c;const u=(_,v,C)=>_<<32-C|v>>>C;ue.rotrSL=u;const d=(_,v,C)=>_<<64-C|v>>>C-32;ue.rotrBH=d;const l=(_,v,C)=>_>>>C-32|v<<64-C;ue.rotrBL=l;const f=(_,v)=>v;ue.rotr32H=f;const b=(_,v)=>_;ue.rotr32L=b;const T=(_,v,C)=>_<>>32-C;ue.rotlSH=T;const w=(_,v,C)=>v<>>32-C;ue.rotlSL=w;const p=(_,v,C)=>v<>>64-C;ue.rotlBH=p;const O=(_,v,C)=>_<>>64-C;ue.rotlBL=O;function S(_,v,C,q){const R=(v>>>0)+(q>>>0);return{h:_+C+(R/2**32|0)|0,l:R|0}}const m=(_,v,C)=>(_>>>0)+(v>>>0)+(C>>>0);ue.add3L=m;const j=(_,v,C,q)=>v+C+q+(_/2**32|0)|0;ue.add3H=j;const s=(_,v,C,q)=>(_>>>0)+(v>>>0)+(C>>>0)+(q>>>0);ue.add4L=s;const y=(_,v,C,q,R)=>v+C+q+R+(_/2**32|0)|0;ue.add4H=y;const g=(_,v,C,q,R)=>(_>>>0)+(v>>>0)+(C>>>0)+(q>>>0)+(R>>>0);ue.add5L=g;const E=(_,v,C,q,R,H)=>v+C+q+R+H+(_/2**32|0)|0;ue.add5H=E;const B={fromBig:n,split:r,toBig:i,shrSH:a,shrSL:o,rotrSH:c,rotrSL:u,rotrBH:d,rotrBL:l,rotr32H:f,rotr32L:b,rotlSH:T,rotlSL:w,rotlBH:p,rotlBL:O,add:S,add3L:m,add3H:j,add4L:s,add4H:y,add5H:E,add5L:g};return ue.default=B,ue}var Nd={},to={},wl;function _v(){return wl||(wl=1,Object.defineProperty(to,"__esModule",{value:!0}),to.crypto=void 0,to.crypto=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0),to}var jl;function mr(){return jl||(jl=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.Hash=e.nextTick=e.swap32IfBE=e.byteSwapIfBE=e.swap8IfBE=e.isLE=void 0,e.isBytes=n,e.anumber=r,e.abytes=i,e.ahash=a,e.aexists=o,e.aoutput=c,e.u8=u,e.u32=d,e.clean=l,e.createView=f,e.rotr=b,e.rotl=T,e.byteSwap=w,e.byteSwap32=p,e.bytesToHex=m,e.hexToBytes=y,e.asyncLoop=E,e.utf8ToBytes=B,e.bytesToUtf8=_,e.toBytes=v,e.kdfInputToBytes=C,e.concatBytes=q,e.checkOpts=R,e.createHasher=F,e.createOptHasher=k,e.createXOFer=h,e.randomBytes=M;const t=_v();function n(A){return A instanceof Uint8Array||ArrayBuffer.isView(A)&&A.constructor.name==="Uint8Array"}function r(A){if(!Number.isSafeInteger(A)||A<0)throw new Error("positive integer expected, got "+A)}function i(A,...P){if(!n(A))throw new Error("Uint8Array expected");if(P.length>0&&!P.includes(A.length))throw new Error("Uint8Array expected of length "+P+", got length="+A.length)}function a(A){if(typeof A!="function"||typeof A.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");r(A.outputLen),r(A.blockLen)}function o(A,P=!0){if(A.destroyed)throw new Error("Hash instance has been destroyed");if(P&&A.finished)throw new Error("Hash#digest() has already been called")}function c(A,P){i(A);const I=P.outputLen;if(A.length>>P}function T(A,P){return A<>>32-P>>>0}e.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function w(A){return A<<24&4278190080|A<<8&16711680|A>>>8&65280|A>>>24&255}e.swap8IfBE=e.isLE?A=>A:A=>w(A),e.byteSwapIfBE=e.swap8IfBE;function p(A){for(let P=0;PA:p;const O=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",S=Array.from({length:256},(A,P)=>P.toString(16).padStart(2,"0"));function m(A){if(i(A),O)return A.toHex();let P="";for(let I=0;I=j._0&&A<=j._9)return A-j._0;if(A>=j.A&&A<=j.F)return A-(j.A-10);if(A>=j.a&&A<=j.f)return A-(j.a-10)}function y(A){if(typeof A!="string")throw new Error("hex string expected, got "+typeof A);if(O)return Uint8Array.fromHex(A);const P=A.length,I=P/2;if(P%2)throw new Error("hex string expected, got unpadded hex of length "+P);const x=new Uint8Array(I);for(let N=0,U=0;N{};e.nextTick=g;async function E(A,P,I){let x=Date.now();for(let N=0;N=0&&UA().update(v(x)).digest(),I=A();return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=()=>A(),P}function k(A){const P=(x,N)=>A(N).update(v(x)).digest(),I=A({});return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=x=>A(x),P}function h(A){const P=(x,N)=>A(N).update(v(x)).digest(),I=A({});return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=x=>A(x),P}e.wrapConstructor=F,e.wrapConstructorWithOpts=k,e.wrapXOFConstructorWithOpts=h;function M(A=32){if(t.crypto&&typeof t.crypto.getRandomValues=="function")return t.crypto.getRandomValues(new Uint8Array(A));if(t.crypto&&typeof t.crypto.randomBytes=="function")return Uint8Array.from(t.crypto.randomBytes(A));throw new Error("crypto.getRandomValues must be defined")}})(Nd)),Nd}var Pl;function vv(){if(Pl)return Se;Pl=1,Object.defineProperty(Se,"__esModule",{value:!0}),Se.shake256=Se.shake128=Se.keccak_512=Se.keccak_384=Se.keccak_256=Se.keccak_224=Se.sha3_512=Se.sha3_384=Se.sha3_256=Se.sha3_224=Se.Keccak=void 0,Se.keccakP=O;const e=xp(),t=mr(),n=BigInt(0),r=BigInt(1),i=BigInt(2),a=BigInt(7),o=BigInt(256),c=BigInt(113),u=[],d=[],l=[];for(let s=0,y=r,g=1,E=0;s<24;s++){[g,E]=[E,(2*g+3*E)%5],u.push(2*(5*E+g)),d.push((s+1)*(s+2)/2%64);let B=n;for(let _=0;_<7;_++)y=(y<>a)*c)%o,y&i&&(B^=r<<(r<g>32?(0,e.rotlBH)(s,y,g):(0,e.rotlSH)(s,y,g),p=(s,y,g)=>g>32?(0,e.rotlBL)(s,y,g):(0,e.rotlSL)(s,y,g);function O(s,y=24){const g=new Uint32Array(10);for(let E=24-y;E<24;E++){for(let v=0;v<10;v++)g[v]=s[v]^s[v+10]^s[v+20]^s[v+30]^s[v+40];for(let v=0;v<10;v+=2){const C=(v+8)%10,q=(v+2)%10,R=g[q],H=g[q+1],F=w(R,H,1)^g[C],k=p(R,H,1)^g[C+1];for(let h=0;h<50;h+=10)s[v+h]^=F,s[v+h+1]^=k}let B=s[2],_=s[3];for(let v=0;v<24;v++){const C=d[v],q=w(B,_,C),R=p(B,_,C),H=u[v];B=s[H],_=s[H+1],s[H]=q,s[H+1]=R}for(let v=0;v<50;v+=10){for(let C=0;C<10;C++)g[C]=s[v+C];for(let C=0;C<10;C++)s[v+C]^=~g[(C+2)%10]&g[(C+4)%10]}s[0]^=b[E],s[1]^=T[E]}(0,t.clean)(g)}class S extends t.Hash{constructor(y,g,E,B=!1,_=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=y,this.suffix=g,this.outputLen=E,this.enableXOF=B,this.rounds=_,(0,t.anumber)(E),!(0=E&&this.keccak();const v=Math.min(E-this.posOut,_-B);y.set(g.subarray(this.posOut,this.posOut+v),B),this.posOut+=v,B+=v}return y}xofInto(y){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(y)}xof(y){return(0,t.anumber)(y),this.xofInto(new Uint8Array(y))}digestInto(y){if((0,t.aoutput)(y,this),this.finished)throw new Error("digest() was already called");return this.writeInto(y),this.destroy(),y}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,(0,t.clean)(this.state)}_cloneInto(y){const{blockLen:g,suffix:E,outputLen:B,rounds:_,enableXOF:v}=this;return y||(y=new S(g,E,B,v,_)),y.state32.set(this.state32),y.pos=this.pos,y.posOut=this.posOut,y.finished=this.finished,y.rounds=_,y.suffix=E,y.outputLen=B,y.enableXOF=v,y.destroyed=this.destroyed,y}}Se.Keccak=S;const m=(s,y,g)=>(0,t.createHasher)(()=>new S(y,s,g));Se.sha3_224=m(6,144,224/8),Se.sha3_256=m(6,136,256/8),Se.sha3_384=m(6,104,384/8),Se.sha3_512=m(6,72,512/8),Se.keccak_224=m(1,144,224/8),Se.keccak_256=m(1,136,256/8),Se.keccak_384=m(1,104,384/8),Se.keccak_512=m(1,72,512/8);const j=(s,y,g)=>(0,t.createXOFer)((E={})=>new S(y,s,E.dkLen===void 0?g:E.dkLen,!0));return Se.shake128=j(31,168,128/8),Se.shake256=j(31,136,256/8),Se}var Al;function at(){if(Al)return Li;Al=1,Object.defineProperty(Li,"__esModule",{value:!0}),Li.keccak256=i;const e=vv(),t=nt(),n=Pe(),r=ie();function i(a,o){const c=o||"hex",u=(0,e.keccak_256)((0,t.isHex)(a,{strict:!1})?(0,n.toBytes)(a):a);return c==="bytes"?u:(0,r.toHex)(u)}return Li}var ro={},Ui={},zi={},Tl;function Ev(){if(Tl)return zi;Tl=1,Object.defineProperty(zi,"__esModule",{value:!0}),zi.hashSignature=r;const e=Pe(),t=at(),n=i=>(0,t.keccak256)((0,e.toBytes)(i));function r(i){return n(i)}return zi}var no={},Di={},Sl;function wv(){if(Sl)return Di;Sl=1,Object.defineProperty(Di,"__esModule",{value:!0}),Di.normalizeSignature=t;const e=fe();function t(n){let r=!0,i="",a=0,o="",c=!1;for(let u=0;u{const i=typeof r=="string"?r:(0,e.formatAbiItem)(r);return(0,t.normalizeSignature)(i)};return no.toSignature=n,no}var Bl;function zu(){if(Bl)return Ui;Bl=1,Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.toSignatureHash=n;const e=Ev(),t=gf();function n(r){return(0,e.hashSignature)((0,t.toSignature)(r))}return Ui}var Rl;function Rn(){if(Rl)return ro;Rl=1,Object.defineProperty(ro,"__esModule",{value:!0}),ro.toEventSelector=void 0;const e=zu();return ro.toEventSelector=e.toSignatureHash,ro}var oo={},io={},Ol;function St(){if(Ol)return io;Ol=1,Object.defineProperty(io,"__esModule",{value:!0}),io.InvalidAddressError=void 0;const e=fe();class t extends e.BaseError{constructor({address:r}){super(`Address "${r}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}return io.InvalidAddressError=t,io}var Fd={},so={},Cl;function Xr(){if(Cl)return so;Cl=1,Object.defineProperty(so,"__esModule",{value:!0}),so.LruMap=void 0;class e extends Map{constructor(n){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=n}get(n){const r=super.get(n);return super.has(n)&&r!==void 0&&(this.delete(n),super.set(n,r)),r}set(n,r){if(super.set(n,r),this.maxSize&&this.size>this.maxSize){const i=this.keys().next().value;i&&this.delete(i)}return this}}return so.LruMap=e,so}var ao={},xl;function yt(){if(xl)return ao;xl=1,Object.defineProperty(ao,"__esModule",{value:!0}),ao.checksumAddress=o,ao.getAddress=c;const e=St(),t=Pe(),n=at(),r=Xr(),i=ct(),a=new r.LruMap(8192);function o(u,d){if(a.has(`${u}.${d}`))return a.get(`${u}.${d}`);const l=d?`${d}${u.toLowerCase()}`:u.substring(2).toLowerCase(),f=(0,n.keccak256)((0,t.stringToBytes)(l),"bytes"),b=(d?l.substring(`${d}0x`.length):l).split("");for(let w=0;w<40;w+=2)f[w>>1]>>4>=8&&b[w]&&(b[w]=b[w].toUpperCase()),(f[w>>1]&15)>=8&&b[w+1]&&(b[w+1]=b[w+1].toUpperCase());const T=`0x${b.join("")}`;return a.set(`${u}.${d}`,T),T}function c(u,d){if(!(0,i.isAddress)(u,{strict:!1}))throw new e.InvalidAddressError({address:u});return o(u,d)}return ao}var ql;function ct(){return ql||(ql=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isAddressCache=void 0,e.isAddress=i;const t=Xr(),n=yt(),r=/^0x[a-fA-F0-9]{40}$/;e.isAddressCache=new t.LruMap(8192);function i(a,o){const{strict:c=!0}=o??{},u=`${a}.${c}`;if(e.isAddressCache.has(u))return e.isAddressCache.get(u);const d=r.test(a)?a.toLowerCase()===a?!0:c?(0,n.checksumAddress)(a)===a:!0:!1;return e.isAddressCache.set(u,d),d}})(Fd)),Fd}var fn={},Hl;function De(){if(Hl)return fn;Hl=1,Object.defineProperty(fn,"__esModule",{value:!0}),fn.concat=e,fn.concatBytes=t,fn.concatHex=n;function e(r){return typeof r[0]=="string"?n(r):t(r)}function t(r){let i=0;for(const c of r)i+=c.length;const a=new Uint8Array(i);let o=0;for(const c of r)a.set(c,o),o+=c.length;return a}function n(r){return`0x${r.reduce((i,a)=>i+a.replace("0x",""),"")}`}return fn}var ln={},Ml;function vt(){if(Ml)return ln;Ml=1,Object.defineProperty(ln,"__esModule",{value:!0}),ln.slice=r,ln.sliceBytes=o,ln.sliceHex=c;const e=Uu(),t=nt(),n=st();function r(u,d,l,{strict:f}={}){return(0,t.isHex)(u,{strict:!1})?c(u,d,l,{strict:f}):o(u,d,l,{strict:f})}function i(u,d){if(typeof d=="number"&&d>0&&d>(0,n.size)(u)-1)throw new e.SliceOffsetOutOfBoundsError({offset:d,position:"start",size:(0,n.size)(u)})}function a(u,d,l){if(typeof d=="number"&&typeof l=="number"&&(0,n.size)(u)!==l-d)throw new e.SliceOffsetOutOfBoundsError({offset:l,position:"end",size:(0,n.size)(u)})}function o(u,d,l,{strict:f}={}){i(u,d);const b=u.slice(d,l);return f&&a(b,d,l),b}function c(u,d,l,{strict:f}={}){i(u,d);const b=`0x${u.replace("0x","").slice((d??0)*2,(l??u.length)*2)}`;return f&&a(b,d,l),b}return ln}var Gt={},kl;function Du(){return kl||(kl=1,Object.defineProperty(Gt,"__esModule",{value:!0}),Gt.integerRegex=Gt.bytesRegex=Gt.arrayRegex=void 0,Gt.arrayRegex=/^(.*)\[([0-9]*)\]$/,Gt.bytesRegex=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,Gt.integerRegex=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/),Gt}var Nl;function It(){if(Nl)return oo;Nl=1,Object.defineProperty(oo,"__esModule",{value:!0}),oo.encodeAbiParameters=f,oo.getArrayComponents=g;const e=qe(),t=St(),n=fe(),r=Bn(),i=ct(),a=De(),o=br(),c=st(),u=vt(),d=ie(),l=Du();function f(E,B){if(E.length!==B.length)throw new e.AbiEncodingLengthMismatchError({expectedLength:E.length,givenLength:B.length});const _=b({params:E,values:B}),v=w(_);return v.length===0?"0x":v}function b({params:E,values:B}){const _=[];for(let v=0;v0?(0,a.concat)([H,R]):H}}if(C)return{dynamic:!0,encoded:R}}return{dynamic:!1,encoded:(0,a.concat)(q.map(({encoded:R})=>R))}}function S(E,{param:B}){const[,_]=B.type.split("bytes"),v=(0,c.size)(E);if(!_){let C=E;return v%32!==0&&(C=(0,o.padHex)(C,{dir:"right",size:Math.ceil((E.length-2)/2/32)*32})),{dynamic:!0,encoded:(0,a.concat)([(0,o.padHex)((0,d.numberToHex)(v,{size:32})),C])}}if(v!==Number.parseInt(_,10))throw new e.AbiEncodingBytesSizeMismatchError({expectedSize:Number.parseInt(_,10),value:E});return{dynamic:!1,encoded:(0,o.padHex)(E,{dir:"right"})}}function m(E){if(typeof E!="boolean")throw new n.BaseError(`Invalid boolean value: "${E}" (type: ${typeof E}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:(0,o.padHex)((0,d.boolToHex)(E))}}function j(E,{signed:B,size:_=256}){if(typeof _=="number"){const v=2n**(BigInt(_)-(B?1n:0n))-1n,C=B?-v-1n:0n;if(E>v||EC))}}function g(E){const B=E.match(/^(.*)\[(\d+)?\]$/);return B?[B[2]?Number(B[2]):null,B[1]]:void 0}return oo}var bn={},co={},Fl;function Qr(){if(Fl)return co;Fl=1,Object.defineProperty(co,"__esModule",{value:!0}),co.toFunctionSelector=void 0;const e=vt(),t=zu(),n=r=>(0,e.slice)((0,t.toSignatureHash)(r),0,4);return co.toFunctionSelector=n,co}var Ll;function er(){if(Ll)return bn;Ll=1,Object.defineProperty(bn,"__esModule",{value:!0}),bn.getAbiItem=a,bn.isArgOfType=o,bn.getAmbiguousTypes=c;const e=qe(),t=nt(),n=ct(),r=Rn(),i=Qr();function a(u){const{abi:d,args:l=[],name:f}=u,b=(0,t.isHex)(f,{strict:!1}),T=d.filter(p=>b?p.type==="function"?(0,i.toFunctionSelector)(p)===f:p.type==="event"?(0,r.toEventSelector)(p)===f:!1:"name"in p&&p.name===f);if(T.length===0)return;if(T.length===1)return T[0];let w;for(const p of T){if(!("inputs"in p))continue;if(!l||l.length===0){if(!p.inputs||p.inputs.length===0)return p;continue}if(!p.inputs||p.inputs.length===0||p.inputs.length!==l.length)continue;if(l.every((S,m)=>{const j="inputs"in p&&p.inputs[m];return j?o(S,j):!1})){if(w&&"inputs"in w&&w.inputs){const S=c(p.inputs,w.inputs,l);if(S)throw new e.AbiItemAmbiguityError({abiItem:p,type:S[0]},{abiItem:w,type:S[1]})}w=p}}return w||T[0]}function o(u,d){const l=typeof u,f=d.type;switch(f){case"address":return(0,n.isAddress)(u,{strict:!1});case"bool":return l==="boolean";case"function":return l==="string";case"string":return l==="string";default:return f==="tuple"&&"components"in d?Object.values(d.components).every((b,T)=>l==="object"&&o(Object.values(u)[T],b)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(f)?l==="number"||l==="bigint":/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(f)?l==="string"||u instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(f)?Array.isArray(u)&&u.every(b=>o(b,{...d,type:f.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function c(u,d,l){for(const f in u){const b=u[f],T=d[f];if(b.type==="tuple"&&T.type==="tuple"&&"components"in b&&"components"in T)return c(b.components,T.components,l[f]);const w=[b.type,T.type];if(w.includes("address")&&w.includes("bytes20")?!0:w.includes("address")&&w.includes("string")?(0,n.isAddress)(l[f],{strict:!1}):w.includes("address")&&w.includes("bytes")?(0,n.isAddress)(l[f],{strict:!1}):!1)return w}}return bn}var Ul;function $r(){if(Ul)return Mi;Ul=1,Object.defineProperty(Mi,"__esModule",{value:!0}),Mi.encodeEventTopics=d;const e=qe(),t=Cp(),n=Pe(),r=at(),i=Rn(),a=It(),o=Qt(),c=er(),u="/docs/contract/encodeEventTopics";function d(f){const{abi:b,eventName:T,args:w}=f;let p=b[0];if(T){const j=(0,c.getAbiItem)({abi:b,name:T});if(!j)throw new e.AbiEventNotFoundError(T,{docsPath:u});p=j}if(p.type!=="event")throw new e.AbiEventNotFoundError(void 0,{docsPath:u});const O=(0,o.formatAbiItem)(p),S=(0,i.toEventSelector)(O);let m=[];if(w&&"inputs"in p){const j=p.inputs?.filter(y=>"indexed"in y&&y.indexed),s=Array.isArray(w)?w:Object.values(w).length>0?j?.map(y=>w[y.name])??[]:[];s.length>0&&(m=j?.map((y,g)=>Array.isArray(s[g])?s[g].map((E,B)=>l({param:y,value:s[g][B]})):typeof s[g]<"u"&&s[g]!==null?l({param:y,value:s[g]}):null)??[])}return[S,...m]}function l({param:f,value:b}){if(f.type==="string"||f.type==="bytes")return(0,r.keccak256)((0,n.toBytes)(b));if(f.type==="tuple"||f.type.match(/^(.*)\[(\d+)?\]$/))throw new t.FilterTypeNotSupportedError(f.type);return(0,a.encodeAbiParameters)([f],[b])}return Mi}var Gi={},zl;function Gu(){if(zl)return Gi;zl=1,Object.defineProperty(Gi,"__esModule",{value:!0}),Gi.createFilterRequestScope=e;function e(t,{method:n}){const r={};return t.transport.type==="fallback"&&t.transport.onResponse?.(({method:i,response:a,status:o,transport:c})=>{o==="success"&&n===i&&(r[a]=c.request)}),(i=>r[i]||t.request)}return Gi}var Dl;function pf(){if(Dl)return Hi;Dl=1,Object.defineProperty(Hi,"__esModule",{value:!0}),Hi.createContractEventFilter=r;const e=$r(),t=ie(),n=Gu();async function r(i,a){const{address:o,abi:c,args:u,eventName:d,fromBlock:l,strict:f,toBlock:b}=a,T=(0,n.createFilterRequestScope)(i,{method:"eth_newFilter"}),w=d?(0,e.encodeEventTopics)({abi:c,args:u,eventName:d}):void 0,p=await i.request({method:"eth_newFilter",params:[{address:o,fromBlock:typeof l=="bigint"?(0,t.numberToHex)(l):l,toBlock:typeof b=="bigint"?(0,t.numberToHex)(b):b,topics:w}]});return{abi:c,args:u,eventName:d,id:p,request:T(p),strict:!!f,type:"event"}}return Hi}var Vi={},Wi={},Gl;function He(){if(Gl)return Wi;Gl=1,Object.defineProperty(Wi,"__esModule",{value:!0}),Wi.parseAccount=e;function e(t){return typeof t=="string"?{address:t,type:"json-rpc"}:t}return Wi}var Ki={},Zi={},Vl;function qp(){if(Vl)return Zi;Vl=1,Object.defineProperty(Zi,"__esModule",{value:!0}),Zi.prepareEncodeFunctionData=a;const e=qe(),t=Qr(),n=Qt(),r=er(),i="/docs/contract/encodeFunctionData";function a(o){const{abi:c,args:u,functionName:d}=o;let l=c[0];if(d){const f=(0,r.getAbiItem)({abi:c,args:u,name:d});if(!f)throw new e.AbiFunctionNotFoundError(d,{docsPath:i});l=f}if(l.type!=="function")throw new e.AbiFunctionNotFoundError(void 0,{docsPath:i});return{abi:[l],functionName:(0,t.toFunctionSelector)((0,n.formatAbiItem)(l))}}return Zi}var Wl;function ut(){if(Wl)return Ki;Wl=1,Object.defineProperty(Ki,"__esModule",{value:!0}),Ki.encodeFunctionData=r;const e=De(),t=It(),n=qp();function r(i){const{args:a}=i,{abi:o,functionName:c}=i.abi.length===1&&i.functionName?.startsWith("0x")?i:(0,n.prepareEncodeFunctionData)(i),u=o[0],d=c,l="inputs"in u&&u.inputs?(0,t.encodeAbiParameters)(u.inputs,a??[]):void 0;return(0,e.concatHex)([d,l??"0x"])}return Ki}var Yi={},Qe={},Vt={},Kl;function _f(){return Kl||(Kl=1,Object.defineProperty(Vt,"__esModule",{value:!0}),Vt.solidityPanic=Vt.solidityError=Vt.panicReasons=void 0,Vt.panicReasons={1:"An `assert` condition failed.",17:"Arithmetic operation resulted in underflow or overflow.",18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:"Attempted to convert to an invalid type.",34:"Attempted to access a storage byte array that is incorrectly encoded.",49:"Performed `.pop()` on an empty array",50:"Array index is out of bounds.",65:"Allocated too much memory or created an array which is too large.",81:"Attempted to call a zero-initialized variable of internal function type."},Vt.solidityError={inputs:[{name:"message",type:"string"}],name:"Error",type:"error"},Vt.solidityPanic={inputs:[{name:"reason",type:"uint256"}],name:"Panic",type:"error"}),Vt}var Ji={},Xi={},Qi={},Wt={},Zl;function Hp(){if(Zl)return Wt;Zl=1,Object.defineProperty(Wt,"__esModule",{value:!0}),Wt.RecursiveReadLimitExceededError=Wt.PositionOutOfBoundsError=Wt.NegativeOffsetError=void 0;const e=fe();class t extends e.BaseError{constructor({offset:a}){super(`Offset \`${a}\` cannot be negative.`,{name:"NegativeOffsetError"})}}Wt.NegativeOffsetError=t;class n extends e.BaseError{constructor({length:a,position:o}){super(`Position \`${o}\` is out of bounds (\`0 < position < ${a}\`).`,{name:"PositionOutOfBoundsError"})}}Wt.PositionOutOfBoundsError=n;class r extends e.BaseError{constructor({count:a,limit:o}){super(`Recursive read limit of \`${o}\` exceeded (recursive read count: \`${a}\`).`,{name:"RecursiveReadLimitExceededError"})}}return Wt.RecursiveReadLimitExceededError=r,Wt}var Yl;function Vo(){if(Yl)return Qi;Yl=1,Object.defineProperty(Qi,"__esModule",{value:!0}),Qi.createCursor=n;const e=Hp(),t={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new e.RecursiveReadLimitExceededError({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(r){if(r<0||r>this.bytes.length-1)throw new e.PositionOutOfBoundsError({length:this.bytes.length,position:r})},decrementPosition(r){if(r<0)throw new e.NegativeOffsetError({offset:r});const i=this.position-r;this.assertPosition(i),this.position=i},getReadCount(r){return this.positionReadCount.get(r||this.position)||0},incrementPosition(r){if(r<0)throw new e.NegativeOffsetError({offset:r});const i=this.position+r;this.assertPosition(i),this.position=i},inspectByte(r){const i=r??this.position;return this.assertPosition(i),this.bytes[i]},inspectBytes(r,i){const a=i??this.position;return this.assertPosition(a+r-1),this.bytes.subarray(a,a+r)},inspectUint8(r){const i=r??this.position;return this.assertPosition(i),this.bytes[i]},inspectUint16(r){const i=r??this.position;return this.assertPosition(i+1),this.dataView.getUint16(i)},inspectUint24(r){const i=r??this.position;return this.assertPosition(i+2),(this.dataView.getUint16(i)<<8)+this.dataView.getUint8(i+2)},inspectUint32(r){const i=r??this.position;return this.assertPosition(i+3),this.dataView.getUint32(i)},pushByte(r){this.assertPosition(this.position),this.bytes[this.position]=r,this.position++},pushBytes(r){this.assertPosition(this.position+r.length-1),this.bytes.set(r,this.position),this.position+=r.length},pushUint8(r){this.assertPosition(this.position),this.bytes[this.position]=r,this.position++},pushUint16(r){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,r),this.position+=2},pushUint24(r){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,r>>8),this.dataView.setUint8(this.position+2,r&255),this.position+=3},pushUint32(r){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,r),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const r=this.inspectByte();return this.position++,r},readBytes(r,i){this.assertReadLimit(),this._touch();const a=this.inspectBytes(r);return this.position+=i??r,a},readUint8(){this.assertReadLimit(),this._touch();const r=this.inspectUint8();return this.position+=1,r},readUint16(){this.assertReadLimit(),this._touch();const r=this.inspectUint16();return this.position+=2,r},readUint24(){this.assertReadLimit(),this._touch();const r=this.inspectUint24();return this.position+=3,r},readUint32(){this.assertReadLimit(),this._touch();const r=this.inspectUint32();return this.position+=4,r},get remaining(){return this.bytes.length-this.position},setPosition(r){const i=this.position;return this.assertPosition(r),this.position=r,()=>this.position=i},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const r=this.getReadCount();this.positionReadCount.set(this.position,r+1),r>0&&this.recursiveReadCount++}};function n(r,{recursiveReadLimit:i=8192}={}){const a=Object.create(t);return a.bytes=r,a.dataView=new DataView(r.buffer??r,r.byteOffset,r.byteLength),a.positionReadCount=new Map,a.recursiveReadLimit=i,a}return Qi}var sr={},Jl;function vf(){if(Jl)return sr;Jl=1,Object.defineProperty(sr,"__esModule",{value:!0}),sr.fromBytes=i,sr.bytesToBigInt=a,sr.bytesToBool=o,sr.bytesToNumber=c,sr.bytesToString=u;const e=Bn(),t=$t(),n=Ne(),r=ie();function i(d,l){const f=typeof l=="string"?{to:l}:l,b=f.to;return b==="number"?c(d,f):b==="bigint"?a(d,f):b==="boolean"?o(d,f):b==="string"?u(d,f):(0,r.bytesToHex)(d,f)}function a(d,l={}){typeof l.size<"u"&&(0,n.assertSize)(d,{size:l.size});const f=(0,r.bytesToHex)(d,l);return(0,n.hexToBigInt)(f,l)}function o(d,l={}){let f=d;if(typeof l.size<"u"&&((0,n.assertSize)(f,{size:l.size}),f=(0,t.trim)(f)),f.length>1||f[0]>1)throw new e.InvalidBytesBooleanError(f);return!!f[0]}function c(d,l={}){typeof l.size<"u"&&(0,n.assertSize)(d,{size:l.size});const f=(0,r.bytesToHex)(d,l);return(0,n.hexToNumber)(f,l)}function u(d,l={}){let f=d;return typeof l.size<"u"&&((0,n.assertSize)(f,{size:l.size}),f=(0,t.trim)(f,{dir:"right"})),new TextDecoder().decode(f)}return sr}var Xl;function hr(){if(Xl)return Xi;Xl=1,Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.decodeAbiParameters=l;const e=qe(),t=yt(),n=Vo(),r=st(),i=vt(),a=$t(),o=vf(),c=Pe(),u=ie(),d=It();function l(g,E){const B=typeof E=="string"?(0,c.hexToBytes)(E):E,_=(0,n.createCursor)(B);if((0,r.size)(B)===0&&g.length>0)throw new e.AbiDecodingZeroDataError;if((0,r.size)(E)&&(0,r.size)(E)<32)throw new e.AbiDecodingDataSizeTooSmallError({data:typeof E=="string"?E:(0,u.bytesToHex)(E),params:g,size:(0,r.size)(E)});let v=0;const C=[];for(let q=0;q48?(0,o.bytesToBigInt)(v,{signed:B}):(0,o.bytesToNumber)(v,{signed:B}),32]}function j(g,E,{staticPosition:B}){const _=E.components.length===0||E.components.some(({name:q})=>!q),v=_?[]:{};let C=0;if(y(E)){const q=(0,o.bytesToNumber)(g.readBytes(T)),R=B+q;for(let H=0;HT.type==="error"&&l===(0,r.toFunctionSelector)((0,a.formatAbiItem)(T)));if(!b)throw new t.AbiErrorSignatureNotFoundError(l,{docsPath:"/docs/contract/decodeErrorResult"});return{abiItem:b,args:"inputs"in b&&b.inputs&&b.inputs.length>0?(0,i.decodeAbiParameters)(b.inputs,(0,n.slice)(d,4)):void 0,errorName:b.name}}return Ji}var $i={},uo={},$l;function Ve(){if($l)return uo;$l=1,Object.defineProperty(uo,"__esModule",{value:!0}),uo.stringify=void 0;const e=(t,n,r)=>JSON.stringify(t,(i,a)=>{const o=typeof a=="bigint"?a.toString():a;return typeof n=="function"?n(i,o):o},r);return uo.stringify=e,uo}var eb;function Mp(){if(eb)return $i;eb=1,Object.defineProperty($i,"__esModule",{value:!0}),$i.formatAbiItemWithArgs=t;const e=Ve();function t({abiItem:n,args:r,includeFunctionName:i=!0,includeName:a=!1}){if("name"in n&&"inputs"in n&&n.inputs)return`${i?n.name:""}(${n.inputs.map((o,c)=>`${a&&o.name?`${o.name}: `:""}${typeof r[c]=="object"?(0,e.stringify)(r[c]):r[c]}`).join(", ")})`}return $i}var es={},Kt={},tb;function Wo(){return tb||(tb=1,Object.defineProperty(Kt,"__esModule",{value:!0}),Kt.weiUnits=Kt.gweiUnits=Kt.etherUnits=void 0,Kt.etherUnits={gwei:9,wei:18},Kt.gweiUnits={ether:-9,wei:9},Kt.weiUnits={ether:-18,gwei:-9}),Kt}var ts={},rb;function Wu(){if(rb)return ts;rb=1,Object.defineProperty(ts,"__esModule",{value:!0}),ts.formatUnits=e;function e(t,n){let r=t.toString();const i=r.startsWith("-");i&&(r=r.slice(1)),r=r.padStart(n,"0");let[a,o]=[r.slice(0,r.length-n),r.slice(r.length-n)];return o=o.replace(/(0+)$/,""),`${i?"-":""}${a||"0"}${o?`.${o}`:""}`}return ts}var nb;function Ko(){if(nb)return es;nb=1,Object.defineProperty(es,"__esModule",{value:!0}),es.formatEther=n;const e=Wo(),t=Wu();function n(r,i="wei"){return(0,t.formatUnits)(r,e.etherUnits[i])}return es}var rs={},ob;function en(){if(ob)return rs;ob=1,Object.defineProperty(rs,"__esModule",{value:!0}),rs.formatGwei=n;const e=Wo(),t=Wu();function n(r,i="wei"){return(0,t.formatUnits)(r,e.gweiUnits[i])}return rs}var Zt={},ib;function Ef(){if(ib)return Zt;ib=1,Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.StateAssignmentConflictError=Zt.AccountStateConflictError=void 0,Zt.prettyStateMapping=r,Zt.prettyStateOverride=i;const e=fe();class t extends e.BaseError{constructor({address:o}){super(`State for account "${o}" is set multiple times.`,{name:"AccountStateConflictError"})}}Zt.AccountStateConflictError=t;class n extends e.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}Zt.StateAssignmentConflictError=n;function r(a){return a.reduce((o,{slot:c,value:u})=>`${o} ${c}: ${u} +`,"")}function i(a){return a.reduce((o,{address:c,...u})=>{let d=`${o} ${c}: +`;return u.nonce&&(d+=` nonce: ${u.nonce} +`),u.balance&&(d+=` balance: ${u.balance} +`),u.code&&(d+=` code: ${u.code} +`),u.state&&(d+=` state: +`,d+=r(u.state)),u.stateDiff&&(d+=` stateDiff: +`,d+=r(u.stateDiff)),d},` State Override: +`).slice(0,-1)}return Zt}var Ie={},sb;function dt(){if(sb)return Ie;sb=1,Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.WaitForTransactionReceiptTimeoutError=Ie.TransactionReceiptRevertedError=Ie.TransactionReceiptNotFoundError=Ie.TransactionNotFoundError=Ie.TransactionExecutionError=Ie.InvalidStorageKeySizeError=Ie.InvalidSerializedTransactionError=Ie.InvalidSerializedTransactionTypeError=Ie.InvalidSerializableTransactionError=Ie.InvalidLegacyVError=Ie.FeeConflictError=void 0,Ie.prettyPrint=r;const e=Ko(),t=en(),n=fe();function r(p){const O=Object.entries(p).map(([m,j])=>j===void 0||j===!1?null:[m,j]).filter(Boolean),S=O.reduce((m,[j])=>Math.max(m,j.length),0);return O.map(([m,j])=>` ${`${m}:`.padEnd(S+1)} ${j}`).join(` +`)}class i extends n.BaseError{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(` +`),{name:"FeeConflictError"})}}Ie.FeeConflictError=i;class a extends n.BaseError{constructor({v:O}){super(`Invalid \`v\` value "${O}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}Ie.InvalidLegacyVError=a;class o extends n.BaseError{constructor({transaction:O}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",r(O),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}Ie.InvalidSerializableTransactionError=o;class c extends n.BaseError{constructor({serializedType:O}){super(`Serialized transaction type "${O}" is invalid.`,{name:"InvalidSerializedTransactionType"}),Object.defineProperty(this,"serializedType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.serializedType=O}}Ie.InvalidSerializedTransactionTypeError=c;class u extends n.BaseError{constructor({attributes:O,serializedTransaction:S,type:m}){const j=Object.entries(O).map(([s,y])=>typeof y>"u"?s:void 0).filter(Boolean);super(`Invalid serialized transaction of type "${m}" was provided.`,{metaMessages:[`Serialized Transaction: "${S}"`,j.length>0?`Missing Attributes: ${j.join(", ")}`:""].filter(Boolean),name:"InvalidSerializedTransactionError"}),Object.defineProperty(this,"serializedTransaction",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"type",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.serializedTransaction=S,this.type=m}}Ie.InvalidSerializedTransactionError=u;class d extends n.BaseError{constructor({storageKey:O}){super(`Size for storage key "${O}" is invalid. Expected 32 bytes. Got ${Math.floor((O.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}Ie.InvalidStorageKeySizeError=d;class l extends n.BaseError{constructor(O,{account:S,docsPath:m,chain:j,data:s,gas:y,gasPrice:g,maxFeePerGas:E,maxPriorityFeePerGas:B,nonce:_,to:v,value:C}){const q=r({chain:j&&`${j?.name} (id: ${j?.id})`,from:S?.address,to:v,value:typeof C<"u"&&`${(0,e.formatEther)(C)} ${j?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:y,gasPrice:typeof g<"u"&&`${(0,t.formatGwei)(g)} gwei`,maxFeePerGas:typeof E<"u"&&`${(0,t.formatGwei)(E)} gwei`,maxPriorityFeePerGas:typeof B<"u"&&`${(0,t.formatGwei)(B)} gwei`,nonce:_});super(O.shortMessage,{cause:O,docsPath:m,metaMessages:[...O.metaMessages?[...O.metaMessages," "]:[],"Request Arguments:",q].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=O}}Ie.TransactionExecutionError=l;class f extends n.BaseError{constructor({blockHash:O,blockNumber:S,blockTag:m,hash:j,index:s}){let y="Transaction";m&&s!==void 0&&(y=`Transaction at block time "${m}" at index "${s}"`),O&&s!==void 0&&(y=`Transaction at block hash "${O}" at index "${s}"`),S&&s!==void 0&&(y=`Transaction at block number "${S}" at index "${s}"`),j&&(y=`Transaction with hash "${j}"`),super(`${y} could not be found.`,{name:"TransactionNotFoundError"})}}Ie.TransactionNotFoundError=f;class b extends n.BaseError{constructor({hash:O}){super(`Transaction receipt with hash "${O}" could not be found. The Transaction may not be processed on a block yet.`,{name:"TransactionReceiptNotFoundError"})}}Ie.TransactionReceiptNotFoundError=b;class T extends n.BaseError{constructor({receipt:O}){super(`Transaction with hash "${O.transactionHash}" reverted.`,{metaMessages:['The receipt marked the transaction as "reverted". This could mean that the function on the contract you are trying to call threw an error.'," ","You can attempt to extract the revert reason by:","- calling the `simulateContract` or `simulateCalls` Action with the `abi` and `functionName` of the contract","- using the `call` Action with raw `data`"],name:"TransactionReceiptRevertedError"}),Object.defineProperty(this,"receipt",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.receipt=O}}Ie.TransactionReceiptRevertedError=T;class w extends n.BaseError{constructor({hash:O}){super(`Timed out while waiting for transaction with hash "${O}" to be confirmed.`,{name:"WaitForTransactionReceiptTimeoutError"})}}return Ie.WaitForTransactionReceiptTimeoutError=w,Ie}var qr={},ab;function wf(){if(ab)return qr;ab=1,Object.defineProperty(qr,"__esModule",{value:!0}),qr.getUrl=qr.getContractAddress=void 0;const e=n=>n;qr.getContractAddress=e;const t=n=>n;return qr.getUrl=t,qr}var cb;function yr(){if(cb)return Qe;cb=1,Object.defineProperty(Qe,"__esModule",{value:!0}),Qe.RawContractError=Qe.CounterfactualDeploymentFailedError=Qe.ContractFunctionZeroDataError=Qe.ContractFunctionRevertedError=Qe.ContractFunctionExecutionError=Qe.CallExecutionError=void 0;const e=He(),t=_f(),n=Vu(),r=Qt(),i=Mp(),a=er(),o=Ko(),c=en(),u=qe(),d=fe(),l=Ef(),f=dt(),b=wf();class T extends d.BaseError{constructor(s,{account:y,docsPath:g,chain:E,data:B,gas:_,gasPrice:v,maxFeePerGas:C,maxPriorityFeePerGas:q,nonce:R,to:H,value:F,stateOverride:k}){const h=y?(0,e.parseAccount)(y):void 0;let M=(0,f.prettyPrint)({from:h?.address,to:H,value:typeof F<"u"&&`${(0,o.formatEther)(F)} ${E?.nativeCurrency?.symbol||"ETH"}`,data:B,gas:_,gasPrice:typeof v<"u"&&`${(0,c.formatGwei)(v)} gwei`,maxFeePerGas:typeof C<"u"&&`${(0,c.formatGwei)(C)} gwei`,maxPriorityFeePerGas:typeof q<"u"&&`${(0,c.formatGwei)(q)} gwei`,nonce:R});k&&(M+=` +${(0,l.prettyStateOverride)(k)}`),super(s.shortMessage,{cause:s,docsPath:g,metaMessages:[...s.metaMessages?[...s.metaMessages," "]:[],"Raw Call Arguments:",M].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=s}}Qe.CallExecutionError=T;class w extends d.BaseError{constructor(s,{abi:y,args:g,contractAddress:E,docsPath:B,functionName:_,sender:v}){const C=(0,a.getAbiItem)({abi:y,args:g,name:_}),q=C?(0,i.formatAbiItemWithArgs)({abiItem:C,args:g,includeFunctionName:!1,includeName:!1}):void 0,R=C?(0,r.formatAbiItem)(C,{includeName:!0}):void 0,H=(0,f.prettyPrint)({address:E&&(0,b.getContractAddress)(E),function:R,args:q&&q!=="()"&&`${[...Array(_?.length??0).keys()].map(()=>" ").join("")}${q}`,sender:v});super(s.shortMessage||`An unknown error occurred while executing the contract function "${_}".`,{cause:s,docsPath:B,metaMessages:[...s.metaMessages?[...s.metaMessages," "]:[],H&&"Contract Call:",H].filter(Boolean),name:"ContractFunctionExecutionError"}),Object.defineProperty(this,"abi",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"args",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"contractAddress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"formattedArgs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"functionName",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sender",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abi=y,this.args=g,this.cause=s,this.contractAddress=E,this.functionName=_,this.sender=v}}Qe.ContractFunctionExecutionError=w;class p extends d.BaseError{constructor({abi:s,data:y,functionName:g,message:E}){let B,_,v,C;if(y&&y!=="0x")try{_=(0,n.decodeErrorResult)({abi:s,data:y});const{abiItem:R,errorName:H,args:F}=_;if(H==="Error")C=F[0];else if(H==="Panic"){const[k]=F;C=t.panicReasons[k]}else{const k=R?(0,r.formatAbiItem)(R,{includeName:!0}):void 0,h=R&&F?(0,i.formatAbiItemWithArgs)({abiItem:R,args:F,includeFunctionName:!1,includeName:!1}):void 0;v=[k?`Error: ${k}`:"",h&&h!=="()"?` ${[...Array(H?.length??0).keys()].map(()=>" ").join("")}${h}`:""]}}catch(R){B=R}else E&&(C=E);let q;B instanceof u.AbiErrorSignatureNotFoundError&&(q=B.signature,v=[`Unable to decode signature "${q}" as it was not found on the provided ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${q}.`]),super(C&&C!=="execution reverted"||q?[`The contract function "${g}" reverted with the following ${q?"signature":"reason"}:`,C||q].join(` +`):`The contract function "${g}" reverted.`,{cause:B,metaMessages:v,name:"ContractFunctionRevertedError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"raw",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"reason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=_,this.raw=y,this.reason=C,this.signature=q}}Qe.ContractFunctionRevertedError=p;class O extends d.BaseError{constructor({functionName:s}){super(`The contract function "${s}" returned no data ("0x").`,{metaMessages:["This could be due to any of the following:",` - The contract does not have the function "${s}",`," - The parameters passed to the contract function may be invalid, or"," - The address is not a contract."],name:"ContractFunctionZeroDataError"})}}Qe.ContractFunctionZeroDataError=O;class S extends d.BaseError{constructor({factory:s}){super(`Deployment for counterfactual contract call failed${s?` for factory "${s}".`:""}`,{metaMessages:["Please ensure:","- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).","- The `factoryData` is a valid encoded function call for contract deployment function on the factory."],name:"CounterfactualDeploymentFailedError"})}}Qe.CounterfactualDeploymentFailedError=S;class m extends d.BaseError{constructor({data:s,message:y}){super(y||"",{name:"RawContractError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=s}}return Qe.RawContractError=m,Qe}var lt={},ub;function Bt(){if(ub)return lt;ub=1,Object.defineProperty(lt,"__esModule",{value:!0}),lt.TimeoutError=lt.SocketClosedError=lt.RpcRequestError=lt.WebSocketRequestError=lt.HttpRequestError=void 0;const e=Ve(),t=fe(),n=wf();class r extends t.BaseError{constructor({body:d,cause:l,details:f,headers:b,status:T,url:w}){super("HTTP request failed.",{cause:l,details:f,metaMessages:[T&&`Status: ${T}`,`URL: ${(0,n.getUrl)(w)}`,d&&`Request body: ${(0,e.stringify)(d)}`].filter(Boolean),name:"HttpRequestError"}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"headers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=d,this.headers=b,this.status=T,this.url=w}}lt.HttpRequestError=r;class i extends t.BaseError{constructor({body:d,cause:l,details:f,url:b}){super("WebSocket request failed.",{cause:l,details:f,metaMessages:[`URL: ${(0,n.getUrl)(b)}`,d&&`Request body: ${(0,e.stringify)(d)}`].filter(Boolean),name:"WebSocketRequestError"}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.url=b}}lt.WebSocketRequestError=i;class a extends t.BaseError{constructor({body:d,error:l,url:f}){super("RPC Request failed.",{cause:l,details:l.message,metaMessages:[`URL: ${(0,n.getUrl)(f)}`,`Request body: ${(0,e.stringify)(d)}`],name:"RpcRequestError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=l.code,this.data=l.data,this.url=f}}lt.RpcRequestError=a;class o extends t.BaseError{constructor({url:d}={}){super("The socket has been closed.",{metaMessages:[d&&`URL: ${(0,n.getUrl)(d)}`].filter(Boolean),name:"SocketClosedError"}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.url=d}}lt.SocketClosedError=o;class c extends t.BaseError{constructor({body:d,url:l}){super("The request took too long to respond.",{details:"The request timed out.",metaMessages:[`URL: ${(0,n.getUrl)(l)}`,`Request body: ${(0,e.stringify)(d)}`],name:"TimeoutError"}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.url=l}}return lt.TimeoutError=c,lt}var ae={},db;function gr(){if(db)return ae;db=1,Object.defineProperty(ae,"__esModule",{value:!0}),ae.UnknownRpcError=ae.AtomicityNotSupportedError=ae.AtomicReadyWalletRejectedUpgradeError=ae.BundleTooLargeError=ae.UnknownBundleIdError=ae.DuplicateIdError=ae.UnsupportedChainIdError=ae.UnsupportedNonOptionalCapabilityError=ae.SwitchChainError=ae.ChainDisconnectedError=ae.ProviderDisconnectedError=ae.UnsupportedProviderMethodError=ae.UnauthorizedProviderError=ae.UserRejectedRequestError=ae.JsonRpcVersionUnsupportedError=ae.LimitExceededRpcError=ae.MethodNotSupportedRpcError=ae.TransactionRejectedRpcError=ae.ResourceUnavailableRpcError=ae.ResourceNotFoundRpcError=ae.InvalidInputRpcError=ae.InternalRpcError=ae.InvalidParamsRpcError=ae.MethodNotFoundRpcError=ae.InvalidRequestRpcError=ae.ParseRpcError=ae.ProviderRpcError=ae.RpcError=void 0;const e=fe(),t=Bt(),n=-1;class r extends e.BaseError{constructor(k,{code:h,docsPath:M,metaMessages:A,name:P,shortMessage:I}){super(I,{cause:k,docsPath:M,metaMessages:A||k?.metaMessages,name:P||"RpcError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=P||k.name,this.code=k instanceof t.RpcRequestError?k.code:h??n}}ae.RpcError=r;class i extends r{constructor(k,h){super(k,h),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=h.data}}ae.ProviderRpcError=i;class a extends r{constructor(k){super(k,{code:a.code,name:"ParseRpcError",shortMessage:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."})}}ae.ParseRpcError=a,Object.defineProperty(a,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});class o extends r{constructor(k){super(k,{code:o.code,name:"InvalidRequestRpcError",shortMessage:"JSON is not a valid request object."})}}ae.InvalidRequestRpcError=o,Object.defineProperty(o,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});class c extends r{constructor(k,{method:h}={}){super(k,{code:c.code,name:"MethodNotFoundRpcError",shortMessage:`The method${h?` "${h}"`:""} does not exist / is not available.`})}}ae.MethodNotFoundRpcError=c,Object.defineProperty(c,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});class u extends r{constructor(k){super(k,{code:u.code,name:"InvalidParamsRpcError",shortMessage:["Invalid parameters were provided to the RPC method.","Double check you have provided the correct parameters."].join(` +`)})}}ae.InvalidParamsRpcError=u,Object.defineProperty(u,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});class d extends r{constructor(k){super(k,{code:d.code,name:"InternalRpcError",shortMessage:"An internal error was received."})}}ae.InternalRpcError=d,Object.defineProperty(d,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});class l extends r{constructor(k){super(k,{code:l.code,name:"InvalidInputRpcError",shortMessage:["Missing or invalid parameters.","Double check you have provided the correct parameters."].join(` +`)})}}ae.InvalidInputRpcError=l,Object.defineProperty(l,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3});class f extends r{constructor(k){super(k,{code:f.code,name:"ResourceNotFoundRpcError",shortMessage:"Requested resource not found."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ResourceNotFoundRpcError"})}}ae.ResourceNotFoundRpcError=f,Object.defineProperty(f,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001});class b extends r{constructor(k){super(k,{code:b.code,name:"ResourceUnavailableRpcError",shortMessage:"Requested resource not available."})}}ae.ResourceUnavailableRpcError=b,Object.defineProperty(b,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002});class T extends r{constructor(k){super(k,{code:T.code,name:"TransactionRejectedRpcError",shortMessage:"Transaction creation failed."})}}ae.TransactionRejectedRpcError=T,Object.defineProperty(T,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003});class w extends r{constructor(k,{method:h}={}){super(k,{code:w.code,name:"MethodNotSupportedRpcError",shortMessage:`Method${h?` "${h}"`:""} is not supported.`})}}ae.MethodNotSupportedRpcError=w,Object.defineProperty(w,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004});class p extends r{constructor(k){super(k,{code:p.code,name:"LimitExceededRpcError",shortMessage:"Request exceeds defined limit."})}}ae.LimitExceededRpcError=p,Object.defineProperty(p,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005});class O extends r{constructor(k){super(k,{code:O.code,name:"JsonRpcVersionUnsupportedError",shortMessage:"Version of JSON-RPC protocol is not supported."})}}ae.JsonRpcVersionUnsupportedError=O,Object.defineProperty(O,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006});class S extends i{constructor(k){super(k,{code:S.code,name:"UserRejectedRequestError",shortMessage:"User rejected the request."})}}ae.UserRejectedRequestError=S,Object.defineProperty(S,"code",{enumerable:!0,configurable:!0,writable:!0,value:4001});class m extends i{constructor(k){super(k,{code:m.code,name:"UnauthorizedProviderError",shortMessage:"The requested method and/or account has not been authorized by the user."})}}ae.UnauthorizedProviderError=m,Object.defineProperty(m,"code",{enumerable:!0,configurable:!0,writable:!0,value:4100});class j extends i{constructor(k,{method:h}={}){super(k,{code:j.code,name:"UnsupportedProviderMethodError",shortMessage:`The Provider does not support the requested method${h?` " ${h}"`:""}.`})}}ae.UnsupportedProviderMethodError=j,Object.defineProperty(j,"code",{enumerable:!0,configurable:!0,writable:!0,value:4200});class s extends i{constructor(k){super(k,{code:s.code,name:"ProviderDisconnectedError",shortMessage:"The Provider is disconnected from all chains."})}}ae.ProviderDisconnectedError=s,Object.defineProperty(s,"code",{enumerable:!0,configurable:!0,writable:!0,value:4900});class y extends i{constructor(k){super(k,{code:y.code,name:"ChainDisconnectedError",shortMessage:"The Provider is not connected to the requested chain."})}}ae.ChainDisconnectedError=y,Object.defineProperty(y,"code",{enumerable:!0,configurable:!0,writable:!0,value:4901});class g extends i{constructor(k){super(k,{code:g.code,name:"SwitchChainError",shortMessage:"An error occurred when attempting to switch chain."})}}ae.SwitchChainError=g,Object.defineProperty(g,"code",{enumerable:!0,configurable:!0,writable:!0,value:4902});class E extends i{constructor(k){super(k,{code:E.code,name:"UnsupportedNonOptionalCapabilityError",shortMessage:"This Wallet does not support a capability that was not marked as optional."})}}ae.UnsupportedNonOptionalCapabilityError=E,Object.defineProperty(E,"code",{enumerable:!0,configurable:!0,writable:!0,value:5700});class B extends i{constructor(k){super(k,{code:B.code,name:"UnsupportedChainIdError",shortMessage:"This Wallet does not support the requested chain ID."})}}ae.UnsupportedChainIdError=B,Object.defineProperty(B,"code",{enumerable:!0,configurable:!0,writable:!0,value:5710});class _ extends i{constructor(k){super(k,{code:_.code,name:"DuplicateIdError",shortMessage:"There is already a bundle submitted with this ID."})}}ae.DuplicateIdError=_,Object.defineProperty(_,"code",{enumerable:!0,configurable:!0,writable:!0,value:5720});class v extends i{constructor(k){super(k,{code:v.code,name:"UnknownBundleIdError",shortMessage:"This bundle id is unknown / has not been submitted"})}}ae.UnknownBundleIdError=v,Object.defineProperty(v,"code",{enumerable:!0,configurable:!0,writable:!0,value:5730});class C extends i{constructor(k){super(k,{code:C.code,name:"BundleTooLargeError",shortMessage:"The call bundle is too large for the Wallet to process."})}}ae.BundleTooLargeError=C,Object.defineProperty(C,"code",{enumerable:!0,configurable:!0,writable:!0,value:5740});class q extends i{constructor(k){super(k,{code:q.code,name:"AtomicReadyWalletRejectedUpgradeError",shortMessage:"The Wallet can support atomicity after an upgrade, but the user rejected the upgrade."})}}ae.AtomicReadyWalletRejectedUpgradeError=q,Object.defineProperty(q,"code",{enumerable:!0,configurable:!0,writable:!0,value:5750});class R extends i{constructor(k){super(k,{code:R.code,name:"AtomicityNotSupportedError",shortMessage:"The wallet does not support atomic execution but the request requires it."})}}ae.AtomicityNotSupportedError=R,Object.defineProperty(R,"code",{enumerable:!0,configurable:!0,writable:!0,value:5760});class H extends r{constructor(k){super(k,{name:"UnknownRpcError",shortMessage:"An unknown RPC error occurred."})}}return ae.UnknownRpcError=H,ae}var fb;function pr(){if(fb)return Yi;fb=1,Object.defineProperty(Yi,"__esModule",{value:!0}),Yi.getContractError=o;const e=qe(),t=fe(),n=yr(),r=Bt(),i=gr(),a=3;function o(c,{abi:u,address:d,args:l,docsPath:f,functionName:b,sender:T}){const w=c instanceof n.RawContractError?c:c instanceof t.BaseError?c.walk(y=>"data"in y)||c.walk():{},{code:p,data:O,details:S,message:m,shortMessage:j}=w,s=c instanceof e.AbiDecodingZeroDataError?new n.ContractFunctionZeroDataError({functionName:b}):[a,i.InternalRpcError.code].includes(p)&&(O||S||m||j)||p===i.InvalidInputRpcError.code&&S==="execution reverted"&&O?new n.ContractFunctionRevertedError({abi:u,data:typeof O=="object"?O.data:O,functionName:b,message:w instanceof r.RpcRequestError?S:j??m}):c;return new n.ContractFunctionExecutionError(s,{abi:u,args:l,contractAddress:d,docsPath:f,functionName:b,sender:T})}return Yi}var ns={},os={},is={},ss={},lb;function kp(){if(lb)return ss;lb=1,Object.defineProperty(ss,"__esModule",{value:!0}),ss.publicKeyToAddress=n;const e=yt(),t=at();function n(r){const i=(0,t.keccak256)(`0x${r.substring(4)}`).substring(26);return(0,e.checksumAddress)(`0x${i}`)}return ss}var as={},Ld={},Ee={},Ye={},bb;function Np(){if(bb)return Ye;bb=1,Object.defineProperty(Ye,"__esModule",{value:!0}),Ye.SHA512_IV=Ye.SHA384_IV=Ye.SHA224_IV=Ye.SHA256_IV=Ye.HashMD=void 0,Ye.setBigUint64=t,Ye.Chi=n,Ye.Maj=r;const e=mr();function t(a,o,c,u){if(typeof a.setBigUint64=="function")return a.setBigUint64(o,c,u);const d=BigInt(32),l=BigInt(4294967295),f=Number(c>>d&l),b=Number(c&l),T=u?4:0,w=u?0:4;a.setUint32(o+T,f,u),a.setUint32(o+w,b,u)}function n(a,o,c){return a&o^~a&c}function r(a,o,c){return a&o^a&c^o&c}class i extends e.Hash{constructor(o,c,u,d){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=o,this.outputLen=c,this.padOffset=u,this.isLE=d,this.buffer=new Uint8Array(o),this.view=(0,e.createView)(this.buffer)}update(o){(0,e.aexists)(this),o=(0,e.toBytes)(o),(0,e.abytes)(o);const{view:c,buffer:u,blockLen:d}=this,l=o.length;for(let f=0;fd-f&&(this.process(u,0),f=0);for(let O=f;Op.length)throw new Error("_sha2: outputLen bigger than state");for(let O=0;O>>3,h=(0,n.rotr)(F,17)^(0,n.rotr)(F,19)^F>>>10;i[R]=h+i[R-7]+k+i[R-16]|0}let{A:y,B:g,C:E,D:B,E:_,F:v,G:C,H:q}=this;for(let R=0;R<64;R++){const H=(0,n.rotr)(_,6)^(0,n.rotr)(_,11)^(0,n.rotr)(_,25),F=q+H+(0,e.Chi)(_,v,C)+r[R]+i[R]|0,h=((0,n.rotr)(y,2)^(0,n.rotr)(y,13)^(0,n.rotr)(y,22))+(0,e.Maj)(y,g,E)|0;q=C,C=v,v=_,_=B+F|0,B=E,E=g,g=y,y=F+h|0}y=y+this.A|0,g=g+this.B|0,E=E+this.C|0,B=B+this.D|0,_=_+this.E|0,v=v+this.F|0,C=C+this.G|0,q=q+this.H|0,this.set(y,g,E,B,_,v,C,q)}roundClean(){(0,n.clean)(i)}destroy(){this.set(0,0,0,0,0,0,0,0),(0,n.clean)(this.buffer)}}Ee.SHA256=a;class o extends a{constructor(){super(28),this.A=e.SHA224_IV[0]|0,this.B=e.SHA224_IV[1]|0,this.C=e.SHA224_IV[2]|0,this.D=e.SHA224_IV[3]|0,this.E=e.SHA224_IV[4]|0,this.F=e.SHA224_IV[5]|0,this.G=e.SHA224_IV[6]|0,this.H=e.SHA224_IV[7]|0}}Ee.SHA224=o;const c=t.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(m=>BigInt(m))),u=c[0],d=c[1],l=new Uint32Array(80),f=new Uint32Array(80);class b extends e.HashMD{constructor(j=64){super(128,j,16,!1),this.Ah=e.SHA512_IV[0]|0,this.Al=e.SHA512_IV[1]|0,this.Bh=e.SHA512_IV[2]|0,this.Bl=e.SHA512_IV[3]|0,this.Ch=e.SHA512_IV[4]|0,this.Cl=e.SHA512_IV[5]|0,this.Dh=e.SHA512_IV[6]|0,this.Dl=e.SHA512_IV[7]|0,this.Eh=e.SHA512_IV[8]|0,this.El=e.SHA512_IV[9]|0,this.Fh=e.SHA512_IV[10]|0,this.Fl=e.SHA512_IV[11]|0,this.Gh=e.SHA512_IV[12]|0,this.Gl=e.SHA512_IV[13]|0,this.Hh=e.SHA512_IV[14]|0,this.Hl=e.SHA512_IV[15]|0}get(){const{Ah:j,Al:s,Bh:y,Bl:g,Ch:E,Cl:B,Dh:_,Dl:v,Eh:C,El:q,Fh:R,Fl:H,Gh:F,Gl:k,Hh:h,Hl:M}=this;return[j,s,y,g,E,B,_,v,C,q,R,H,F,k,h,M]}set(j,s,y,g,E,B,_,v,C,q,R,H,F,k,h,M){this.Ah=j|0,this.Al=s|0,this.Bh=y|0,this.Bl=g|0,this.Ch=E|0,this.Cl=B|0,this.Dh=_|0,this.Dl=v|0,this.Eh=C|0,this.El=q|0,this.Fh=R|0,this.Fl=H|0,this.Gh=F|0,this.Gl=k|0,this.Hh=h|0,this.Hl=M|0}process(j,s){for(let I=0;I<16;I++,s+=4)l[I]=j.getUint32(s),f[I]=j.getUint32(s+=4);for(let I=16;I<80;I++){const x=l[I-15]|0,N=f[I-15]|0,U=t.rotrSH(x,N,1)^t.rotrSH(x,N,8)^t.shrSH(x,N,7),L=t.rotrSL(x,N,1)^t.rotrSL(x,N,8)^t.shrSL(x,N,7),z=l[I-2]|0,D=f[I-2]|0,J=t.rotrSH(z,D,19)^t.rotrBH(z,D,61)^t.shrSH(z,D,6),Z=t.rotrSL(z,D,19)^t.rotrBL(z,D,61)^t.shrSL(z,D,6),Y=t.add4L(L,Z,f[I-7],f[I-16]),X=t.add4H(Y,U,J,l[I-7],l[I-16]);l[I]=X|0,f[I]=Y|0}let{Ah:y,Al:g,Bh:E,Bl:B,Ch:_,Cl:v,Dh:C,Dl:q,Eh:R,El:H,Fh:F,Fl:k,Gh:h,Gl:M,Hh:A,Hl:P}=this;for(let I=0;I<80;I++){const x=t.rotrSH(R,H,14)^t.rotrSH(R,H,18)^t.rotrBH(R,H,41),N=t.rotrSL(R,H,14)^t.rotrSL(R,H,18)^t.rotrBL(R,H,41),U=R&F^~R&h,L=H&k^~H&M,z=t.add5L(P,N,L,d[I],f[I]),D=t.add5H(z,A,x,U,u[I],l[I]),J=z|0,Z=t.rotrSH(y,g,28)^t.rotrBH(y,g,34)^t.rotrBH(y,g,39),Y=t.rotrSL(y,g,28)^t.rotrBL(y,g,34)^t.rotrBL(y,g,39),X=y&E^y&_^E&_,oe=g&B^g&v^B&v;A=h|0,P=M|0,h=F|0,M=k|0,F=R|0,k=H|0,{h:R,l:H}=t.add(C|0,q|0,D|0,J|0),C=_|0,q=v|0,_=E|0,v=B|0,E=y|0,B=g|0;const W=t.add3L(J,Y,oe);y=t.add3H(W,D,Z,X),g=W|0}({h:y,l:g}=t.add(this.Ah|0,this.Al|0,y|0,g|0)),{h:E,l:B}=t.add(this.Bh|0,this.Bl|0,E|0,B|0),{h:_,l:v}=t.add(this.Ch|0,this.Cl|0,_|0,v|0),{h:C,l:q}=t.add(this.Dh|0,this.Dl|0,C|0,q|0),{h:R,l:H}=t.add(this.Eh|0,this.El|0,R|0,H|0),{h:F,l:k}=t.add(this.Fh|0,this.Fl|0,F|0,k|0),{h,l:M}=t.add(this.Gh|0,this.Gl|0,h|0,M|0),{h:A,l:P}=t.add(this.Hh|0,this.Hl|0,A|0,P|0),this.set(y,g,E,B,_,v,C,q,R,H,F,k,h,M,A,P)}roundClean(){(0,n.clean)(l,f)}destroy(){(0,n.clean)(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}Ee.SHA512=b;class T extends b{constructor(){super(48),this.Ah=e.SHA384_IV[0]|0,this.Al=e.SHA384_IV[1]|0,this.Bh=e.SHA384_IV[2]|0,this.Bl=e.SHA384_IV[3]|0,this.Ch=e.SHA384_IV[4]|0,this.Cl=e.SHA384_IV[5]|0,this.Dh=e.SHA384_IV[6]|0,this.Dl=e.SHA384_IV[7]|0,this.Eh=e.SHA384_IV[8]|0,this.El=e.SHA384_IV[9]|0,this.Fh=e.SHA384_IV[10]|0,this.Fl=e.SHA384_IV[11]|0,this.Gh=e.SHA384_IV[12]|0,this.Gl=e.SHA384_IV[13]|0,this.Hh=e.SHA384_IV[14]|0,this.Hl=e.SHA384_IV[15]|0}}Ee.SHA384=T;const w=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),p=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class O extends b{constructor(){super(28),this.Ah=w[0]|0,this.Al=w[1]|0,this.Bh=w[2]|0,this.Bl=w[3]|0,this.Ch=w[4]|0,this.Cl=w[5]|0,this.Dh=w[6]|0,this.Dl=w[7]|0,this.Eh=w[8]|0,this.El=w[9]|0,this.Fh=w[10]|0,this.Fl=w[11]|0,this.Gh=w[12]|0,this.Gl=w[13]|0,this.Hh=w[14]|0,this.Hl=w[15]|0}}Ee.SHA512_224=O;class S extends b{constructor(){super(32),this.Ah=p[0]|0,this.Al=p[1]|0,this.Bh=p[2]|0,this.Bl=p[3]|0,this.Ch=p[4]|0,this.Cl=p[5]|0,this.Dh=p[6]|0,this.Dl=p[7]|0,this.Eh=p[8]|0,this.El=p[9]|0,this.Fh=p[10]|0,this.Fl=p[11]|0,this.Gh=p[12]|0,this.Gl=p[13]|0,this.Hh=p[14]|0,this.Hl=p[15]|0}}return Ee.SHA512_256=S,Ee.sha256=(0,n.createHasher)(()=>new a),Ee.sha224=(0,n.createHasher)(()=>new o),Ee.sha512=(0,n.createHasher)(()=>new b),Ee.sha384=(0,n.createHasher)(()=>new T),Ee.sha512_256=(0,n.createHasher)(()=>new S),Ee.sha512_224=(0,n.createHasher)(()=>new O),Ee}var fo={},Ud={},hb;function jv(){return hb||(hb=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hmac=e.HMAC=void 0;const t=mr();class n extends t.Hash{constructor(a,o){super(),this.finished=!1,this.destroyed=!1,(0,t.ahash)(a);const c=(0,t.toBytes)(o);if(this.iHash=a.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const u=this.blockLen,d=new Uint8Array(u);d.set(c.length>u?a.create().update(c).digest():c);for(let l=0;lnew n(i,a).update(o).digest();e.hmac=r,e.hmac.create=(i,a)=>new n(i,a)})(Ud)),Ud}var zd={},Hr={},Re={},pe={},yb;function Zo(){if(yb)return pe;yb=1;Object.defineProperty(pe,"__esModule",{value:!0}),pe.notImplemented=pe.bitMask=void 0,pe.isBytes=n,pe.abytes=r,pe.abool=i,pe.numberToHexUnpadded=a,pe.hexToNumber=o,pe.bytesToHex=d,pe.hexToBytes=b,pe.bytesToNumberBE=T,pe.bytesToNumberLE=w,pe.numberToBytesBE=p,pe.numberToBytesLE=O,pe.numberToVarBytesBE=S,pe.ensureBytes=m,pe.concatBytes=j,pe.equalBytes=s,pe.utf8ToBytes=y,pe.inRange=E,pe.aInRange=B,pe.bitLen=_,pe.bitGet=v,pe.bitSet=C,pe.createHmacDrbg=F,pe.validateObject=h,pe.memoized=A;const e=BigInt(0),t=BigInt(1);function n(P){return P instanceof Uint8Array||ArrayBuffer.isView(P)&&P.constructor.name==="Uint8Array"}function r(P){if(!n(P))throw new Error("Uint8Array expected")}function i(P,I){if(typeof I!="boolean")throw new Error(P+" boolean expected, got "+I)}function a(P){const I=P.toString(16);return I.length&1?"0"+I:I}function o(P){if(typeof P!="string")throw new Error("hex string expected, got "+typeof P);return P===""?e:BigInt("0x"+P)}const c=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",u=Array.from({length:256},(P,I)=>I.toString(16).padStart(2,"0"));function d(P){if(r(P),c)return P.toHex();let I="";for(let x=0;x=l._0&&P<=l._9)return P-l._0;if(P>=l.A&&P<=l.F)return P-(l.A-10);if(P>=l.a&&P<=l.f)return P-(l.a-10)}function b(P){if(typeof P!="string")throw new Error("hex string expected, got "+typeof P);if(c)return Uint8Array.fromHex(P);const I=P.length,x=I/2;if(I%2)throw new Error("hex string expected, got unpadded hex of length "+I);const N=new Uint8Array(x);for(let U=0,L=0;Utypeof P=="bigint"&&e<=P;function E(P,I,x){return g(P)&&g(I)&&g(x)&&I<=P&&Pe;P>>=t,I+=1);return I}function v(P,I){return P>>BigInt(I)&t}function C(P,I,x){return P|(x?t:e)<(t<new Uint8Array(P),H=P=>Uint8Array.from(P);function F(P,I,x){if(typeof P!="number"||P<2)throw new Error("hashLen must be a number");if(typeof I!="number"||I<2)throw new Error("qByteLen must be a number");if(typeof x!="function")throw new Error("hmacFn must be a function");let N=R(P),U=R(P),L=0;const z=()=>{N.fill(1),U.fill(0),L=0},D=(...X)=>x(U,N,...X),J=(X=R(0))=>{U=D(H([0]),X),N=D(),X.length!==0&&(U=D(H([1]),X),N=D())},Z=()=>{if(L++>=1e3)throw new Error("drbg: tried 1000 values");let X=0;const oe=[];for(;X{z(),J(X);let W;for(;!(W=oe(Z()));)J();return z(),W}}const k={bigint:P=>typeof P=="bigint",function:P=>typeof P=="function",boolean:P=>typeof P=="boolean",string:P=>typeof P=="string",stringOrUint8Array:P=>typeof P=="string"||n(P),isSafeInteger:P=>Number.isSafeInteger(P),array:P=>Array.isArray(P),field:(P,I)=>I.Fp.isValid(P),hash:P=>typeof P=="function"&&Number.isSafeInteger(P.outputLen)};function h(P,I,x={}){const N=(U,L,z)=>{const D=k[L];if(typeof D!="function")throw new Error("invalid validator function");const J=P[U];if(!(z&&J===void 0)&&!D(J,P))throw new Error("param "+String(U)+" is invalid. Expected "+L+", got "+J)};for(const[U,L]of Object.entries(I))N(U,L,!1);for(const[U,L]of Object.entries(x))N(U,L,!0);return P}const M=()=>{throw new Error("not implemented")};pe.notImplemented=M;function A(P){const I=new WeakMap;return(x,...N)=>{const U=I.get(x);if(U!==void 0)return U;const L=P(x,...N);return I.set(x,L),L}}return pe}var gb;function Ku(){if(gb)return Re;gb=1,Object.defineProperty(Re,"__esModule",{value:!0}),Re.isNegativeLE=void 0,Re.mod=d,Re.pow=l,Re.pow2=f,Re.invert=b,Re.tonelliShanks=p,Re.FpSqrt=O,Re.validateField=j,Re.FpPow=s,Re.FpInvertBatch=y,Re.FpDiv=g,Re.FpLegendre=E,Re.FpIsSquare=B,Re.nLength=_,Re.Field=v,Re.FpSqrtOdd=C,Re.FpSqrtEven=q,Re.hashToPrivateScalar=R,Re.getFieldBytesLength=H,Re.getMinHashLength=F,Re.mapHashToField=k;const e=mr(),t=Zo(),n=BigInt(0),r=BigInt(1),i=BigInt(2),a=BigInt(3),o=BigInt(4),c=BigInt(5),u=BigInt(8);function d(h,M){const A=h%M;return A>=n?A:M+A}function l(h,M,A){return s(v(A),h,M)}function f(h,M,A){let P=h;for(;M-- >n;)P*=P,P%=A;return P}function b(h,M){if(h===n)throw new Error("invert: expected non-zero number");if(M<=n)throw new Error("invert: expected positive modulus, got "+M);let A=d(h,M),P=M,I=n,x=r;for(;A!==n;){const U=P/A,L=P%A,z=I-x*U;P=A,A=L,I=x,x=z}if(P!==r)throw new Error("invert: does not exist");return d(I,M)}function T(h,M){const A=(h.ORDER+r)/o,P=h.pow(M,A);if(!h.eql(h.sqr(P),M))throw new Error("Cannot find square root");return P}function w(h,M){const A=(h.ORDER-c)/u,P=h.mul(M,i),I=h.pow(P,A),x=h.mul(M,I),N=h.mul(h.mul(x,i),I),U=h.mul(x,h.sub(N,h.ONE));if(!h.eql(h.sqr(U),M))throw new Error("Cannot find square root");return U}function p(h){if(h1e3)throw new Error("Cannot find square root: probably non-prime P");if(A===1)return T;let x=I.pow(P,M);const N=(M+r)/i;return function(L,z){if(L.is0(z))return z;if(E(L,z)!==1)throw new Error("Cannot find square root");let D=A,J=L.mul(L.ONE,x),Z=L.pow(z,M),Y=L.pow(z,N);for(;!L.eql(Z,L.ONE);){if(L.is0(Z))return L.ZERO;let X=1,oe=L.sqr(Z);for(;!L.eql(oe,L.ONE);)if(X++,oe=L.sqr(oe),X===D)throw new Error("Cannot find square root");const W=r<(d(h,M)&r)===r;Re.isNegativeLE=S;const m=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function j(h){const M={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},A=m.reduce((P,I)=>(P[I]="function",P),M);return(0,t.validateObject)(h,A)}function s(h,M,A){if(An;)A&r&&(P=h.mul(P,I)),I=h.sqr(I),A>>=r;return P}function y(h,M,A=!1){const P=new Array(M.length).fill(A?h.ZERO:void 0),I=M.reduce((N,U,L)=>h.is0(U)?N:(P[L]=N,h.mul(N,U)),h.ONE),x=h.inv(I);return M.reduceRight((N,U,L)=>h.is0(U)?N:(P[L]=h.mul(N,P[L]),h.mul(N,U)),x),P}function g(h,M,A){return h.mul(M,typeof A=="bigint"?b(A,h.ORDER):h.inv(A))}function E(h,M){const A=(h.ORDER-r)/i,P=h.pow(M,A),I=h.eql(P,h.ONE),x=h.eql(P,h.ZERO),N=h.eql(P,h.neg(h.ONE));if(!I&&!x&&!N)throw new Error("invalid Legendre symbol result");return I?1:x?0:-1}function B(h,M){return E(h,M)===1}function _(h,M){M!==void 0&&(0,e.anumber)(M);const A=M!==void 0?M:h.toString(2).length,P=Math.ceil(A/8);return{nBitLength:A,nByteLength:P}}function v(h,M,A=!1,P={}){if(h<=n)throw new Error("invalid field: expected ORDER > 0, got "+h);const{nBitLength:I,nByteLength:x}=_(h,M);if(x>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let N;const U=Object.freeze({ORDER:h,isLE:A,BITS:I,BYTES:x,MASK:(0,t.bitMask)(I),ZERO:n,ONE:r,create:L=>d(L,h),isValid:L=>{if(typeof L!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof L);return n<=L&&LL===n,isOdd:L=>(L&r)===r,neg:L=>d(-L,h),eql:(L,z)=>L===z,sqr:L=>d(L*L,h),add:(L,z)=>d(L+z,h),sub:(L,z)=>d(L-z,h),mul:(L,z)=>d(L*z,h),pow:(L,z)=>s(U,L,z),div:(L,z)=>d(L*b(z,h),h),sqrN:L=>L*L,addN:(L,z)=>L+z,subN:(L,z)=>L-z,mulN:(L,z)=>L*z,inv:L=>b(L,h),sqrt:P.sqrt||(L=>(N||(N=O(h)),N(U,L))),toBytes:L=>A?(0,t.numberToBytesLE)(L,x):(0,t.numberToBytesBE)(L,x),fromBytes:L=>{if(L.length!==x)throw new Error("Field.fromBytes: expected "+x+" bytes, got "+L.length);return A?(0,t.bytesToNumberLE)(L):(0,t.bytesToNumberBE)(L)},invertBatch:L=>y(U,L),cmov:(L,z,D)=>D?z:L});return Object.freeze(U)}function C(h,M){if(!h.isOdd)throw new Error("Field doesn't have isOdd");const A=h.sqrt(M);return h.isOdd(A)?A:h.neg(A)}function q(h,M){if(!h.isOdd)throw new Error("Field doesn't have isOdd");const A=h.sqrt(M);return h.isOdd(A)?h.neg(A):A}function R(h,M,A=!1){h=(0,t.ensureBytes)("privateHash",h);const P=h.length,I=_(M).nByteLength+8;if(I<24||P1024)throw new Error("hashToPrivateScalar: expected "+I+"-1024 bytes of input, got "+P);const x=A?(0,t.bytesToNumberLE)(h):(0,t.bytesToNumberBE)(h);return d(x,M-r)+r}function H(h){if(typeof h!="bigint")throw new Error("field order must be bigint");const M=h.toString(2).length;return Math.ceil(M/8)}function F(h){const M=H(h);return M+Math.ceil(M/2)}function k(h,M,A=!1){const P=h.length,I=H(M),x=F(M);if(P<16||P1024)throw new Error("expected "+x+"-1024 bytes of input, got "+P);const N=A?(0,t.bytesToNumberLE)(h):(0,t.bytesToNumberBE)(h),U=d(N,M-r)+r;return A?(0,t.numberToBytesLE)(U,I):(0,t.numberToBytesBE)(U,I)}return Re}var pb;function Pv(){if(pb)return Hr;pb=1,Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.wNAF=T,Hr.pippenger=w,Hr.precomputeMSMUnsafe=p,Hr.validateBasic=O;const e=Ku(),t=Zo(),n=BigInt(0),r=BigInt(1);function i(S,m){const j=m.negate();return S?j:m}function a(S,m){if(!Number.isSafeInteger(S)||S<=0||S>m)throw new Error("invalid window size, expected [1.."+m+"], got W="+S)}function o(S,m){a(S,m);const j=Math.ceil(m/S)+1,s=2**(S-1),y=2**S,g=(0,t.bitMask)(S),E=BigInt(S);return{windows:j,windowSize:s,mask:g,maxNumber:y,shiftBy:E}}function c(S,m,j){const{windowSize:s,mask:y,maxNumber:g,shiftBy:E}=j;let B=Number(S&y),_=S>>E;B>s&&(B-=g,_+=r);const v=m*s,C=v+Math.abs(B)-1,q=B===0,R=B<0,H=m%2!==0;return{nextN:_,offset:C,isZero:q,isNeg:R,isNegF:H,offsetF:v}}function u(S,m){if(!Array.isArray(S))throw new Error("array expected");S.forEach((j,s)=>{if(!(j instanceof m))throw new Error("invalid point at index "+s)})}function d(S,m){if(!Array.isArray(S))throw new Error("array of scalars expected");S.forEach((j,s)=>{if(!m.isValid(j))throw new Error("invalid scalar at index "+s)})}const l=new WeakMap,f=new WeakMap;function b(S){return f.get(S)||1}function T(S,m){return{constTimeNegate:i,hasPrecomputes(j){return b(j)!==1},unsafeLadder(j,s,y=S.ZERO){let g=j;for(;s>n;)s&r&&(y=y.add(g)),g=g.double(),s>>=r;return y},precomputeWindow(j,s){const{windows:y,windowSize:g}=o(s,m),E=[];let B=j,_=B;for(let v=0;v12?_=B-3:B>4?_=B-2:B>0&&(_=2);const v=(0,t.bitMask)(_),C=new Array(Number(v)+1).fill(E),q=Math.floor((m.BITS-1)/_)*_;let R=E;for(let H=q;H>=0;H-=_){C.fill(E);for(let k=0;k>BigInt(H)&v);C[M]=C[M].add(j[k])}let F=E;for(let k=C.length-1,h=E;k>0;k--)h=h.add(C[k]),F=F.add(h);if(R=R.add(F),H!==0)for(let k=0;k<_;k++)R=R.double()}return R}function p(S,m,j,s){a(s,m.BITS),u(j,S);const y=S.ZERO,g=2**s-1,E=Math.ceil(m.BITS/s),B=(0,t.bitMask)(s),_=j.map(v=>{const C=[];for(let q=0,R=v;q{if(d(v,m),v.length>j.length)throw new Error("array of scalars must be smaller than array of points");let C=y;for(let q=0;q>R&B);k&&(C=C.add(_[H][k-1]))}}return C}}function O(S){return(0,e.validateField)(S.Fp),(0,t.validateObject)(S,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...(0,e.nLength)(S.n,S.nBitLength),...S,p:S.Fp.ORDER})}return Hr}var _b;function Lp(){return _b||(_b=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DER=e.DERErr=void 0,e.weierstrassPoints=T,e.weierstrass=p,e.SWUFpSqrtRatio=O,e.mapToCurveSimpleSWU=S;const t=Pv(),n=Ku(),r=Zo();function i(m){m.lowS!==void 0&&(0,r.abool)("lowS",m.lowS),m.prehash!==void 0&&(0,r.abool)("prehash",m.prehash)}function a(m){const j=(0,t.validateBasic)(m);(0,r.validateObject)(j,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});const{endo:s,Fp:y,a:g}=j;if(s){if(!y.eql(g,y.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if(typeof s!="object"||typeof s.beta!="bigint"||typeof s.splitScalar!="function")throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...j})}class o extends Error{constructor(j=""){super(j)}}e.DERErr=o,e.DER={Err:o,_tlv:{encode:(m,j)=>{const{Err:s}=e.DER;if(m<0||m>256)throw new s("tlv.encode: wrong tag");if(j.length&1)throw new s("tlv.encode: unpadded data");const y=j.length/2,g=(0,r.numberToHexUnpadded)(y);if(g.length/2&128)throw new s("tlv.encode: long form length too big");const E=y>127?(0,r.numberToHexUnpadded)(g.length/2|128):"";return(0,r.numberToHexUnpadded)(m)+E+g+j},decode(m,j){const{Err:s}=e.DER;let y=0;if(m<0||m>256)throw new s("tlv.encode: wrong tag");if(j.length<2||j[y++]!==m)throw new s("tlv.decode: wrong tlv");const g=j[y++],E=!!(g&128);let B=0;if(!E)B=g;else{const v=g&127;if(!v)throw new s("tlv.decode(long): indefinite length not supported");if(v>4)throw new s("tlv.decode(long): byte length is too big");const C=j.subarray(y,y+v);if(C.length!==v)throw new s("tlv.decode: length bytes not complete");if(C[0]===0)throw new s("tlv.decode(long): zero leftmost byte");for(const q of C)B=B<<8|q;if(y+=v,B<128)throw new s("tlv.decode(long): not minimal encoding")}const _=j.subarray(y,y+B);if(_.length!==B)throw new s("tlv.decode: wrong value length");return{v:_,l:j.subarray(y+B)}}},_int:{encode(m){const{Err:j}=e.DER;if(m{const U=x.toAffine();return(0,r.concatBytes)(Uint8Array.from([4]),s.toBytes(U.x),s.toBytes(U.y))}),E=j.fromBytes||(I=>{const x=I.subarray(1),N=s.fromBytes(x.subarray(0,s.BYTES)),U=s.fromBytes(x.subarray(s.BYTES,2*s.BYTES));return{x:N,y:U}});function B(I){const{a:x,b:N}=j,U=s.sqr(I),L=s.mul(U,I);return s.add(s.add(L,s.mul(I,x)),N)}function _(I,x){const N=s.sqr(x),U=B(I);return s.eql(N,U)}if(!_(j.Gx,j.Gy))throw new Error("bad curve params: generator point");const v=s.mul(s.pow(j.a,f),b),C=s.mul(s.sqr(j.b),BigInt(27));if(s.is0(s.add(v,C)))throw new Error("bad curve params: a or b");function q(I){return(0,r.inRange)(I,d,j.n)}function R(I){const{allowedPrivateKeyLengths:x,nByteLength:N,wrapPrivateKey:U,n:L}=j;if(x&&typeof I!="bigint"){if((0,r.isBytes)(I)&&(I=(0,r.bytesToHex)(I)),typeof I!="string"||!x.includes(I.length))throw new Error("invalid private key");I=I.padStart(N*2,"0")}let z;try{z=typeof I=="bigint"?I:(0,r.bytesToNumberBE)((0,r.ensureBytes)("private key",I,N))}catch{throw new Error("invalid private key, expected hex or "+N+" bytes, got "+typeof I)}return U&&(z=(0,n.mod)(z,L)),(0,r.aInRange)("private key",z,d,L),z}function H(I){if(!(I instanceof h))throw new Error("ProjectivePoint expected")}const F=(0,r.memoized)((I,x)=>{const{px:N,py:U,pz:L}=I;if(s.eql(L,s.ONE))return{x:N,y:U};const z=I.is0();x==null&&(x=z?s.ONE:s.inv(L));const D=s.mul(N,x),J=s.mul(U,x),Z=s.mul(L,x);if(z)return{x:s.ZERO,y:s.ZERO};if(!s.eql(Z,s.ONE))throw new Error("invZ was invalid");return{x:D,y:J}}),k=(0,r.memoized)(I=>{if(I.is0()){if(j.allowInfinityPoint&&!s.is0(I.py))return;throw new Error("bad point: ZERO")}const{x,y:N}=I.toAffine();if(!s.isValid(x)||!s.isValid(N))throw new Error("bad point: x or y not FE");if(!_(x,N))throw new Error("bad point: equation left != right");if(!I.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(x,N,U){if(x==null||!s.isValid(x))throw new Error("x required");if(N==null||!s.isValid(N)||s.is0(N))throw new Error("y required");if(U==null||!s.isValid(U))throw new Error("z required");this.px=x,this.py=N,this.pz=U,Object.freeze(this)}static fromAffine(x){const{x:N,y:U}=x||{};if(!x||!s.isValid(N)||!s.isValid(U))throw new Error("invalid affine point");if(x instanceof h)throw new Error("projective point not allowed");const L=z=>s.eql(z,s.ZERO);return L(N)&&L(U)?h.ZERO:new h(N,U,s.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(x){const N=(0,n.FpInvertBatch)(s,x.map(U=>U.pz));return x.map((U,L)=>U.toAffine(N[L])).map(h.fromAffine)}static fromHex(x){const N=h.fromAffine(E((0,r.ensureBytes)("pointHex",x)));return N.assertValidity(),N}static fromPrivateKey(x){return h.BASE.multiply(R(x))}static msm(x,N){return(0,t.pippenger)(h,y,x,N)}_setWindowSize(x){P.setWindowSize(this,x)}assertValidity(){k(this)}hasEvenY(){const{y:x}=this.toAffine();if(s.isOdd)return!s.isOdd(x);throw new Error("Field doesn't support isOdd")}equals(x){H(x);const{px:N,py:U,pz:L}=this,{px:z,py:D,pz:J}=x,Z=s.eql(s.mul(N,J),s.mul(z,L)),Y=s.eql(s.mul(U,J),s.mul(D,L));return Z&&Y}negate(){return new h(this.px,s.neg(this.py),this.pz)}double(){const{a:x,b:N}=j,U=s.mul(N,f),{px:L,py:z,pz:D}=this;let J=s.ZERO,Z=s.ZERO,Y=s.ZERO,X=s.mul(L,L),oe=s.mul(z,z),W=s.mul(D,D),K=s.mul(L,z);return K=s.add(K,K),Y=s.mul(L,D),Y=s.add(Y,Y),J=s.mul(x,Y),Z=s.mul(U,W),Z=s.add(J,Z),J=s.sub(oe,Z),Z=s.add(oe,Z),Z=s.mul(J,Z),J=s.mul(K,J),Y=s.mul(U,Y),W=s.mul(x,W),K=s.sub(X,W),K=s.mul(x,K),K=s.add(K,Y),Y=s.add(X,X),X=s.add(Y,X),X=s.add(X,W),X=s.mul(X,K),Z=s.add(Z,X),W=s.mul(z,D),W=s.add(W,W),X=s.mul(W,K),J=s.sub(J,X),Y=s.mul(W,oe),Y=s.add(Y,Y),Y=s.add(Y,Y),new h(J,Z,Y)}add(x){H(x);const{px:N,py:U,pz:L}=this,{px:z,py:D,pz:J}=x;let Z=s.ZERO,Y=s.ZERO,X=s.ZERO;const oe=j.a,W=s.mul(j.b,f);let K=s.mul(N,z),$=s.mul(U,D),re=s.mul(L,J),te=s.add(N,U),ne=s.add(z,D);te=s.mul(te,ne),ne=s.add(K,$),te=s.sub(te,ne),ne=s.add(N,L);let se=s.add(z,J);return ne=s.mul(ne,se),se=s.add(K,re),ne=s.sub(ne,se),se=s.add(U,L),Z=s.add(D,J),se=s.mul(se,Z),Z=s.add($,re),se=s.sub(se,Z),X=s.mul(oe,ne),Z=s.mul(W,re),X=s.add(Z,X),Z=s.sub($,X),X=s.add($,X),Y=s.mul(Z,X),$=s.add(K,K),$=s.add($,K),re=s.mul(oe,re),ne=s.mul(W,ne),$=s.add($,re),re=s.sub(K,re),re=s.mul(oe,re),ne=s.add(ne,re),K=s.mul($,ne),Y=s.add(Y,K),K=s.mul(se,ne),Z=s.mul(te,Z),Z=s.sub(Z,K),K=s.mul(te,$),X=s.mul(se,X),X=s.add(X,K),new h(Z,Y,X)}subtract(x){return this.add(x.negate())}is0(){return this.equals(h.ZERO)}wNAF(x){return P.wNAFCached(this,x,h.normalizeZ)}multiplyUnsafe(x){const{endo:N,n:U}=j;(0,r.aInRange)("scalar",x,u,U);const L=h.ZERO;if(x===u)return L;if(this.is0()||x===d)return this;if(!N||P.hasPrecomputes(this))return P.wNAFCachedUnsafe(this,x,h.normalizeZ);let{k1neg:z,k1:D,k2neg:J,k2:Z}=N.splitScalar(x),Y=L,X=L,oe=this;for(;D>u||Z>u;)D&d&&(Y=Y.add(oe)),Z&d&&(X=X.add(oe)),oe=oe.double(),D>>=d,Z>>=d;return z&&(Y=Y.negate()),J&&(X=X.negate()),X=new h(s.mul(X.px,N.beta),X.py,X.pz),Y.add(X)}multiply(x){const{endo:N,n:U}=j;(0,r.aInRange)("scalar",x,d,U);let L,z;if(N){const{k1neg:D,k1:J,k2neg:Z,k2:Y}=N.splitScalar(x);let{p:X,f:oe}=this.wNAF(J),{p:W,f:K}=this.wNAF(Y);X=P.constTimeNegate(D,X),W=P.constTimeNegate(Z,W),W=new h(s.mul(W.px,N.beta),W.py,W.pz),L=X.add(W),z=oe.add(K)}else{const{p:D,f:J}=this.wNAF(x);L=D,z=J}return h.normalizeZ([L,z])[0]}multiplyAndAddUnsafe(x,N,U){const L=h.BASE,z=(J,Z)=>Z===u||Z===d||!J.equals(L)?J.multiplyUnsafe(Z):J.multiply(Z),D=z(this,N).add(z(x,U));return D.is0()?void 0:D}toAffine(x){return F(this,x)}isTorsionFree(){const{h:x,isTorsionFree:N}=j;if(x===d)return!0;if(N)return N(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:x,clearCofactor:N}=j;return x===d?this:N?N(h,this):this.multiplyUnsafe(j.h)}toRawBytes(x=!0){return(0,r.abool)("isCompressed",x),this.assertValidity(),g(h,this,x)}toHex(x=!0){return(0,r.abool)("isCompressed",x),(0,r.bytesToHex)(this.toRawBytes(x))}}h.BASE=new h(j.Gx,j.Gy,s.ONE),h.ZERO=new h(s.ZERO,s.ONE,s.ZERO);const{endo:M,nBitLength:A}=j,P=(0,t.wNAF)(h,M?Math.ceil(A/2):A);return{CURVE:j,ProjectivePoint:h,normPrivateKeyToScalar:R,weierstrassEquation:B,isWithinCurveOrder:q}}function w(m){const j=(0,t.validateBasic)(m);return(0,r.validateObject)(j,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...j})}function p(m){const j=w(m),{Fp:s,n:y,nByteLength:g,nBitLength:E}=j,B=s.BYTES+1,_=2*s.BYTES+1;function v(W){return(0,n.mod)(W,y)}function C(W){return(0,n.invert)(W,y)}const{ProjectivePoint:q,normPrivateKeyToScalar:R,weierstrassEquation:H,isWithinCurveOrder:F}=T({...j,toBytes(W,K,$){const re=K.toAffine(),te=s.toBytes(re.x),ne=r.concatBytes;return(0,r.abool)("isCompressed",$),$?ne(Uint8Array.from([K.hasEvenY()?2:3]),te):ne(Uint8Array.from([4]),te,s.toBytes(re.y))},fromBytes(W){const K=W.length,$=W[0],re=W.subarray(1);if(K===B&&($===2||$===3)){const te=(0,r.bytesToNumberBE)(re);if(!(0,r.inRange)(te,d,s.ORDER))throw new Error("Point is not on curve");const ne=H(te);let se;try{se=s.sqrt(ne)}catch(be){const me=be instanceof Error?": "+be.message:"";throw new Error("Point is not on curve"+me)}const ee=(se&d)===d;return($&1)===1!==ee&&(se=s.neg(se)),{x:te,y:se}}else if(K===_&&$===4){const te=s.fromBytes(re.subarray(0,s.BYTES)),ne=s.fromBytes(re.subarray(s.BYTES,2*s.BYTES));return{x:te,y:ne}}else{const te=B,ne=_;throw new Error("invalid Point, expected length of "+te+", or uncompressed "+ne+", got "+K)}}});function k(W){const K=y>>d;return W>K}function h(W){return k(W)?v(-W):W}const M=(W,K,$)=>(0,r.bytesToNumberBE)(W.slice(K,$));class A{constructor(K,$,re){(0,r.aInRange)("r",K,d,y),(0,r.aInRange)("s",$,d,y),this.r=K,this.s=$,re!=null&&(this.recovery=re),Object.freeze(this)}static fromCompact(K){const $=g;return K=(0,r.ensureBytes)("compactSignature",K,$*2),new A(M(K,0,$),M(K,$,2*$))}static fromDER(K){const{r:$,s:re}=e.DER.toSig((0,r.ensureBytes)("DER",K));return new A($,re)}assertValidity(){}addRecoveryBit(K){return new A(this.r,this.s,K)}recoverPublicKey(K){const{r:$,s:re,recovery:te}=this,ne=L((0,r.ensureBytes)("msgHash",K));if(te==null||![0,1,2,3].includes(te))throw new Error("recovery id invalid");const se=te===2||te===3?$+j.n:$;if(se>=s.ORDER)throw new Error("recovery id 2 or 3 invalid");const ee=(te&1)===0?"02":"03",Q=q.fromHex(ee+c(se,s.BYTES)),be=C(se),me=v(-ne*be),Ue=v(re*be),Ae=q.BASE.multiplyAndAddUnsafe(Q,me,Ue);if(!Ae)throw new Error("point at infinify");return Ae.assertValidity(),Ae}hasHighS(){return k(this.s)}normalizeS(){return this.hasHighS()?new A(this.r,v(-this.s),this.recovery):this}toDERRawBytes(){return(0,r.hexToBytes)(this.toDERHex())}toDERHex(){return e.DER.hexFromSig(this)}toCompactRawBytes(){return(0,r.hexToBytes)(this.toCompactHex())}toCompactHex(){const K=g;return c(this.r,K)+c(this.s,K)}}const P={isValidPrivateKey(W){try{return R(W),!0}catch{return!1}},normPrivateKeyToScalar:R,randomPrivateKey:()=>{const W=(0,n.getMinHashLength)(j.n);return(0,n.mapHashToField)(j.randomBytes(W),j.n)},precompute(W=8,K=q.BASE){return K._setWindowSize(W),K.multiply(BigInt(3)),K}};function I(W,K=!0){return q.fromPrivateKey(W).toRawBytes(K)}function x(W){if(typeof W=="bigint")return!1;if(W instanceof q)return!0;const $=(0,r.ensureBytes)("key",W).length,re=s.BYTES,te=re+1,ne=2*re+1;if(!(j.allowedPrivateKeyLengths||g===te))return $===te||$===ne}function N(W,K,$=!0){if(x(W)===!0)throw new Error("first arg must be private key");if(x(K)===!1)throw new Error("second arg must be public key");return q.fromHex(K).multiply(R(W)).toRawBytes($)}const U=j.bits2int||function(W){if(W.length>8192)throw new Error("input is too large");const K=(0,r.bytesToNumberBE)(W),$=W.length*8-E;return $>0?K>>BigInt($):K},L=j.bits2int_modN||function(W){return v(U(W))},z=(0,r.bitMask)(E);function D(W){return(0,r.aInRange)("num < 2^"+E,W,u,z),(0,r.numberToBytesBE)(W,g)}function J(W,K,$=Z){if(["recovered","canonical"].some(Me=>Me in $))throw new Error("sign() legacy options not supported");const{hash:re,randomBytes:te}=j;let{lowS:ne,prehash:se,extraEntropy:ee}=$;ne==null&&(ne=!0),W=(0,r.ensureBytes)("msgHash",W),i($),se&&(W=(0,r.ensureBytes)("prehashed msgHash",re(W)));const Q=L(W),be=R(K),me=[D(be),D(Q)];if(ee!=null&&ee!==!1){const Me=ee===!0?te(s.BYTES):ee;me.push((0,r.ensureBytes)("extraEntropy",Me))}const Ue=(0,r.concatBytes)(...me),Ae=Q;function Xe(Me){const Te=U(Me);if(!F(Te))return;const pt=C(Te),Ke=q.BASE.multiply(Te).toAffine(),Le=v(Ke.x);if(Le===u)return;const Ze=v(pt*v(Ae+Le*be));if(Ze===u)return;let ze=(Ke.x===Le?0:2)|Number(Ke.y&d),xt=Ze;return ne&&k(Ze)&&(xt=h(Ze),ze^=1),new A(Le,xt,ze)}return{seed:Ue,k2sig:Xe}}const Z={lowS:j.lowS,prehash:!1},Y={lowS:j.lowS,prehash:!1};function X(W,K,$=Z){const{seed:re,k2sig:te}=J(W,K,$),ne=j;return(0,r.createHmacDrbg)(ne.hash.outputLen,ne.nByteLength,ne.hmac)(re,te)}q.BASE._setWindowSize(8);function oe(W,K,$,re=Y){const te=W;K=(0,r.ensureBytes)("msgHash",K),$=(0,r.ensureBytes)("publicKey",$);const{lowS:ne,prehash:se,format:ee}=re;if(i(re),"strict"in re)throw new Error("options.strict was renamed to lowS");if(ee!==void 0&&ee!=="compact"&&ee!=="der")throw new Error("format must be compact or der");const Q=typeof te=="string"||(0,r.isBytes)(te),be=!Q&&!ee&&typeof te=="object"&&te!==null&&typeof te.r=="bigint"&&typeof te.s=="bigint";if(!Q&&!be)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let me,Ue;try{if(be&&(me=new A(te.r,te.s)),Q){try{ee!=="compact"&&(me=A.fromDER(te))}catch(ze){if(!(ze instanceof e.DER.Err))throw ze}!me&&ee!=="der"&&(me=A.fromCompact(te))}Ue=q.fromHex($)}catch{return!1}if(!me||ne&&me.hasHighS())return!1;se&&(K=j.hash(K));const{r:Ae,s:Xe}=me,Me=L(K),Te=C(Xe),pt=v(Me*Te),Ke=v(Ae*Te),Le=q.BASE.multiplyAndAddUnsafe(Ue,pt,Ke)?.toAffine();return Le?v(Le.x)===Ae:!1}return{CURVE:j,getPublicKey:I,getSharedSecret:N,sign:X,verify:oe,ProjectivePoint:q,Signature:A,utils:P}}function O(m,j){const s=m.ORDER;let y=u;for(let k=s-d;k%l===u;k/=l)y+=d;const g=y,E=l<{let M=R,A=m.pow(h,C),P=m.sqr(A);P=m.mul(P,h);let I=m.mul(k,P);I=m.pow(I,v),I=m.mul(I,A),A=m.mul(I,h),P=m.mul(I,k);let x=m.mul(P,A);I=m.pow(x,q);let N=m.eql(I,m.ONE);A=m.mul(P,H),I=m.mul(x,M),P=m.cmov(A,P,N),x=m.cmov(I,x,N);for(let U=g;U>d;U--){let L=U-l;L=l<{let P=m.sqr(A);const I=m.mul(M,A);P=m.mul(P,I);let x=m.pow(P,k);x=m.mul(x,I);const N=m.mul(x,h),U=m.mul(m.sqr(x),A),L=m.eql(U,M);let z=m.cmov(N,x,L);return{isValid:L,value:z}}}return F}function S(m,j){if((0,n.validateField)(m),!m.isValid(j.A)||!m.isValid(j.B)||!m.isValid(j.Z))throw new Error("mapToCurveSimpleSWU: invalid opts");const s=O(m,j.Z);if(!m.isOdd)throw new Error("Fp.isOdd is not implemented!");return y=>{let g,E,B,_,v,C,q,R;g=m.sqr(y),g=m.mul(g,j.Z),E=m.sqr(g),E=m.add(E,g),B=m.add(E,m.ONE),B=m.mul(B,j.B),_=m.cmov(j.Z,m.neg(E),!m.eql(E,m.ZERO)),_=m.mul(_,j.A),E=m.sqr(B),C=m.sqr(_),v=m.mul(C,j.A),E=m.add(E,v),E=m.mul(E,B),C=m.mul(C,_),v=m.mul(C,j.B),E=m.add(E,v),q=m.mul(g,B);const{isValid:H,value:F}=s(E,C);R=m.mul(g,y),R=m.mul(R,F),q=m.cmov(q,B,H),R=m.cmov(R,F,H);const k=m.isOdd(y)===m.isOdd(R);R=m.cmov(m.neg(R),R,k);const h=(0,n.FpInvertBatch)(m,[_],!0)[0];return q=m.mul(q,h),{x:q,y:R}}}})(zd)),zd}var vb;function Av(){if(vb)return fo;vb=1,Object.defineProperty(fo,"__esModule",{value:!0}),fo.getHash=r,fo.createCurve=i;const e=jv(),t=mr(),n=Lp();function r(a){return{hash:a,hmac:(o,...c)=>(0,e.hmac)(a,o,(0,t.concatBytes)(...c)),randomBytes:t.randomBytes}}function i(a,o){const c=u=>(0,n.weierstrass)({...a,...r(u)});return{...c(o),create:c}}return fo}var ar={},Eb;function Tv(){if(Eb)return ar;Eb=1,Object.defineProperty(ar,"__esModule",{value:!0}),ar.expand_message_xmd=o,ar.expand_message_xof=c,ar.hash_to_field=u,ar.isogenyMap=d,ar.createHasher=l;const e=Ku(),t=Zo(),n=t.bytesToNumberBE;function r(f,b){if(a(f),a(b),f<0||f>=1<<8*b)throw new Error("invalid I2OSP input: "+f);const T=Array.from({length:b}).fill(0);for(let w=b-1;w>=0;w--)T[w]=f&255,f>>>=8;return new Uint8Array(T)}function i(f,b){const T=new Uint8Array(f.length);for(let w=0;w255&&(b=w((0,t.concatBytes)((0,t.utf8ToBytes)("H2C-OVERSIZE-DST-"),b)));const{outputLen:p,blockLen:O}=w,S=Math.ceil(T/p);if(T>65535||S>255)throw new Error("expand_message_xmd: invalid lenInBytes");const m=(0,t.concatBytes)(b,r(b.length,1)),j=r(0,O),s=r(T,2),y=new Array(S),g=w((0,t.concatBytes)(j,f,s,r(0,1),m));y[0]=w((0,t.concatBytes)(g,r(1,1),m));for(let B=1;B<=S;B++){const _=[i(g,y[B-1]),r(B+1,1),m];y[B]=w((0,t.concatBytes)(..._))}return(0,t.concatBytes)(...y).slice(0,T)}function c(f,b,T,w,p){if((0,t.abytes)(f),(0,t.abytes)(b),a(T),b.length>255){const O=Math.ceil(2*w/8);b=p.create({dkLen:O}).update((0,t.utf8ToBytes)("H2C-OVERSIZE-DST-")).update(b).digest()}if(T>65535||b.length>255)throw new Error("expand_message_xof: invalid lenInBytes");return p.create({dkLen:T}).update(f).update(r(T,2)).update(b).update(r(b.length,1)).digest()}function u(f,b,T){(0,t.validateObject)(T,{DST:"stringOrUint8Array",p:"bigint",m:"isSafeInteger",k:"isSafeInteger",hash:"hash"});const{p:w,k:p,m:O,hash:S,expand:m,DST:j}=T;(0,t.abytes)(f),a(b);const s=typeof j=="string"?(0,t.utf8ToBytes)(j):j,y=w.toString(2).length,g=Math.ceil((y+p)/8),E=b*O*g;let B;if(m==="xmd")B=o(f,s,E,S);else if(m==="xof")B=c(f,s,E,p,S);else if(m==="_internal_pass")B=f;else throw new Error('expand must be "xmd" or "xof"');const _=new Array(b);for(let v=0;vArray.from(w).reverse());return(w,p)=>{const[O,S,m,j]=T.map(g=>g.reduce((E,B)=>f.add(f.mul(E,w),B))),[s,y]=(0,e.FpInvertBatch)(f,[S,j],!0);return w=f.mul(O,s),p=f.mul(p,f.mul(m,y)),{x:w,y:p}}}function l(f,b,T){if(typeof b!="function")throw new Error("mapToCurve() must be defined");function w(O){return f.fromAffine(b(O))}function p(O){const S=O.clearCofactor();return S.equals(f.ZERO)?f.ZERO:(S.assertValidity(),S)}return{defaults:T,hashToCurve(O,S){const m=u(O,2,{...T,DST:T.DST,...S}),j=w(m[0]),s=w(m[1]);return p(j.add(s))},encodeToCurve(O,S){const m=u(O,1,{...T,DST:T.encodeDST,...S});return p(w(m[0]))},mapToCurve(O){if(!Array.isArray(O))throw new Error("expected array of bigints");for(const S of O)if(typeof S!="bigint")throw new Error("expected array of bigints");return p(w(O))}}}return ar}var wb;function Yo(){return wb||(wb=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.encodeToCurve=e.hashToCurve=e.secp256k1_hasher=e.schnorr=e.secp256k1=void 0;const t=Fp(),n=mr(),r=Av(),i=Tv(),a=Ku(),o=Zo(),c=Lp(),u=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),d=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),l=BigInt(0),f=BigInt(1),b=BigInt(2),T=(h,M)=>(h+M/b)/M;function w(h){const M=u,A=BigInt(3),P=BigInt(6),I=BigInt(11),x=BigInt(22),N=BigInt(23),U=BigInt(44),L=BigInt(88),z=h*h*h%M,D=z*z*h%M,J=(0,a.pow2)(D,A,M)*D%M,Z=(0,a.pow2)(J,A,M)*D%M,Y=(0,a.pow2)(Z,b,M)*z%M,X=(0,a.pow2)(Y,I,M)*Y%M,oe=(0,a.pow2)(X,x,M)*X%M,W=(0,a.pow2)(oe,U,M)*oe%M,K=(0,a.pow2)(W,L,M)*W%M,$=(0,a.pow2)(K,U,M)*oe%M,re=(0,a.pow2)($,A,M)*D%M,te=(0,a.pow2)(re,N,M)*X%M,ne=(0,a.pow2)(te,P,M)*z%M,se=(0,a.pow2)(ne,b,M);if(!p.eql(p.sqr(se),h))throw new Error("Cannot find square root");return se}const p=(0,a.Field)(u,void 0,void 0,{sqrt:w});e.secp256k1=(0,r.createCurve)({a:l,b:BigInt(7),Fp:p,n:d,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:h=>{const M=d,A=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),P=-f*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),I=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),x=A,N=BigInt("0x100000000000000000000000000000000"),U=T(x*h,M),L=T(-P*h,M);let z=(0,a.mod)(h-U*A-L*I,M),D=(0,a.mod)(-U*P-L*x,M);const J=z>N,Z=D>N;if(J&&(z=M-z),Z&&(D=M-D),z>N||D>N)throw new Error("splitScalar: Endomorphism failed, k="+h);return{k1neg:J,k1:z,k2neg:Z,k2:D}}}},t.sha256);const O={};function S(h,...M){let A=O[h];if(A===void 0){const P=(0,t.sha256)(Uint8Array.from(h,I=>I.charCodeAt(0)));A=(0,o.concatBytes)(P,P),O[h]=A}return(0,t.sha256)((0,o.concatBytes)(A,...M))}const m=h=>h.toRawBytes(!0).slice(1),j=h=>(0,o.numberToBytesBE)(h,32),s=h=>(0,a.mod)(h,u),y=h=>(0,a.mod)(h,d),g=e.secp256k1.ProjectivePoint,E=(h,M,A)=>g.BASE.multiplyAndAddUnsafe(h,M,A);function B(h){let M=e.secp256k1.utils.normPrivateKeyToScalar(h),A=g.fromPrivateKey(M);return{scalar:A.hasEvenY()?M:y(-M),bytes:m(A)}}function _(h){(0,o.aInRange)("x",h,f,u);const M=s(h*h),A=s(M*h+BigInt(7));let P=w(A);P%b!==l&&(P=s(-P));const I=new g(h,P,f);return I.assertValidity(),I}const v=o.bytesToNumberBE;function C(...h){return y(v(S("BIP0340/challenge",...h)))}function q(h){return B(h).bytes}function R(h,M,A=(0,n.randomBytes)(32)){const P=(0,o.ensureBytes)("message",h),{bytes:I,scalar:x}=B(M),N=(0,o.ensureBytes)("auxRand",A,32),U=j(x^v(S("BIP0340/aux",N))),L=S("BIP0340/nonce",U,I,P),z=y(v(L));if(z===l)throw new Error("sign failed: k is zero");const{bytes:D,scalar:J}=B(z),Z=C(D,I,P),Y=new Uint8Array(64);if(Y.set(D,0),Y.set(j(y(J+Z*x)),32),!H(Y,P,I))throw new Error("sign: Invalid signature produced");return Y}function H(h,M,A){const P=(0,o.ensureBytes)("signature",h,64),I=(0,o.ensureBytes)("message",M),x=(0,o.ensureBytes)("publicKey",A,32);try{const N=_(v(x)),U=v(P.subarray(0,32));if(!(0,o.inRange)(U,f,u))return!1;const L=v(P.subarray(32,64));if(!(0,o.inRange)(L,f,d))return!1;const z=C(j(U),m(N),I),D=E(N,L,y(-z));return!(!D||!D.hasEvenY()||D.toAffine().x!==U)}catch{return!1}}e.schnorr={getPublicKey:q,sign:R,verify:H,utils:{randomPrivateKey:e.secp256k1.utils.randomPrivateKey,lift_x:_,pointToBytes:m,numberToBytesBE:o.numberToBytesBE,bytesToNumberBE:o.bytesToNumberBE,taggedHash:S,mod:a.mod}};const F=(0,i.isogenyMap)(p,[["0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7","0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581","0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262","0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c"],["0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b","0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14","0x0000000000000000000000000000000000000000000000000000000000000001"],["0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c","0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3","0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931","0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84"],["0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b","0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573","0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f","0x0000000000000000000000000000000000000000000000000000000000000001"]].map(h=>h.map(M=>BigInt(M)))),k=(0,c.mapToCurveSimpleSWU)(p,{A:BigInt("0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533"),B:BigInt("1771"),Z:p.create(BigInt("-11"))});e.secp256k1_hasher=(0,i.createHasher)(e.secp256k1.ProjectivePoint,h=>{const{x:M,y:A}=k(p.create(h[0]));return F(M,A)},{DST:"secp256k1_XMD:SHA-256_SSWU_RO_",encodeDST:"secp256k1_XMD:SHA-256_SSWU_NU_",p:p.ORDER,m:1,k:128,expand:"xmd",hash:t.sha256}),e.hashToCurve=e.secp256k1_hasher.hashToCurve,e.encodeToCurve=e.secp256k1_hasher.encodeToCurve})(Ld)),Ld}var jb;function jf(){if(jb)return as;jb=1,Object.defineProperty(as,"__esModule",{value:!0}),as.recoverPublicKey=i;const e=nt(),t=st(),n=Ne(),r=ie();async function i({hash:o,signature:c}){const u=(0,e.isHex)(o)?o:(0,r.toHex)(o),{secp256k1:d}=await Promise.resolve().then(()=>Yo());return`0x${(()=>{if(typeof c=="object"&&"r"in c&&"s"in c){const{r:p,s:O,v:S,yParity:m}=c,j=Number(m??S),s=a(j);return new d.Signature((0,n.hexToBigInt)(p),(0,n.hexToBigInt)(O)).addRecoveryBit(s)}const b=(0,e.isHex)(c)?c:(0,r.toHex)(c);if((0,t.size)(b)!==65)throw new Error("invalid signature length");const T=(0,n.hexToNumber)(`0x${b.slice(130)}`),w=a(T);return d.Signature.fromCompact(b.substring(2,130)).addRecoveryBit(w)})().recoverPublicKey(u.substring(2)).toHex(!1)}`}function a(o){if(o===0||o===1)return o;if(o===27)return 0;if(o===28)return 1;throw new Error("Invalid yParityOrV value")}return as}var Pb;function _r(){if(Pb)return is;Pb=1,Object.defineProperty(is,"__esModule",{value:!0}),is.recoverAddress=n;const e=kp(),t=jf();async function n({hash:r,signature:i}){return(0,e.publicKeyToAddress)(await(0,t.recoverPublicKey)({hash:r,signature:i}))}return is}var cs={},mn={},Ab;function Jo(){if(Ab)return mn;Ab=1,Object.defineProperty(mn,"__esModule",{value:!0}),mn.toRlp=i,mn.bytesToRlp=a,mn.hexToRlp=o;const e=fe(),t=Vo(),n=Pe(),r=ie();function i(f,b="hex"){const T=c(f),w=(0,t.createCursor)(new Uint8Array(T.length));return T.encode(w),b==="hex"?(0,r.bytesToHex)(w.bytes):w.bytes}function a(f,b="bytes"){return i(f,b)}function o(f,b="hex"){return i(f,b)}function c(f){return Array.isArray(f)?u(f.map(b=>c(b))):d(f)}function u(f){const b=f.reduce((p,O)=>p+O.length,0),T=l(b);return{length:b<=55?1+b:1+T+b,encode(p){b<=55?p.pushByte(192+b):(p.pushByte(247+T),T===1?p.pushUint8(b):T===2?p.pushUint16(b):T===3?p.pushUint24(b):p.pushUint32(b));for(const{encode:O}of f)O(p)}}}function d(f){const b=typeof f=="string"?(0,n.hexToBytes)(f):f,T=l(b.length);return{length:b.length===1&&b[0]<128?1:b.length<=55?1+b.length:1+T+b.length,encode(p){b.length===1&&b[0]<128?p.pushBytes(b):b.length<=55?(p.pushByte(128+b.length),p.pushBytes(b)):(p.pushByte(183+T),T===1?p.pushUint8(b.length):T===2?p.pushUint16(b.length):T===3?p.pushUint24(b.length):p.pushUint32(b.length),p.pushBytes(b))}}}function l(f){if(f<2**8)return 1;if(f<2**16)return 2;if(f<2**24)return 3;if(f<2**32)return 4;throw new e.BaseError("Length is too large.")}return mn}var Tb;function Up(){if(Tb)return cs;Tb=1,Object.defineProperty(cs,"__esModule",{value:!0}),cs.hashAuthorization=a;const e=De(),t=Pe(),n=ie(),r=Jo(),i=at();function a(o){const{chainId:c,nonce:u,to:d}=o,l=o.contractAddress??o.address,f=(0,i.keccak256)((0,e.concatHex)(["0x05",(0,r.toRlp)([c?(0,n.numberToHex)(c):"0x",l,u?(0,n.numberToHex)(u):"0x"])]));return d==="bytes"?(0,t.hexToBytes)(f):f}return cs}var Sb;function Xo(){if(Sb)return os;Sb=1,Object.defineProperty(os,"__esModule",{value:!0}),os.recoverAuthorizationAddress=n;const e=_r(),t=Up();async function n(r){const{authorization:i,signature:a}=r;return(0,e.recoverAddress)({hash:(0,t.hashAuthorization)(i),signature:a??i})}return os}var us={},lo={},Ib;function zp(){if(Ib)return lo;Ib=1,Object.defineProperty(lo,"__esModule",{value:!0}),lo.EstimateGasExecutionError=void 0;const e=Ko(),t=en(),n=fe(),r=dt();class i extends n.BaseError{constructor(o,{account:c,docsPath:u,chain:d,data:l,gas:f,gasPrice:b,maxFeePerGas:T,maxPriorityFeePerGas:w,nonce:p,to:O,value:S}){const m=(0,r.prettyPrint)({from:c?.address,to:O,value:typeof S<"u"&&`${(0,e.formatEther)(S)} ${d?.nativeCurrency?.symbol||"ETH"}`,data:l,gas:f,gasPrice:typeof b<"u"&&`${(0,t.formatGwei)(b)} gwei`,maxFeePerGas:typeof T<"u"&&`${(0,t.formatGwei)(T)} gwei`,maxPriorityFeePerGas:typeof w<"u"&&`${(0,t.formatGwei)(w)} gwei`,nonce:p});super(o.shortMessage,{cause:o,docsPath:u,metaMessages:[...o.metaMessages?[...o.metaMessages," "]:[],"Estimate Gas Arguments:",m].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=o}}return lo.EstimateGasExecutionError=i,lo}var we={},Bb;function tr(){if(Bb)return we;Bb=1,Object.defineProperty(we,"__esModule",{value:!0}),we.UnknownNodeError=we.TipAboveFeeCapError=we.TransactionTypeNotSupportedError=we.IntrinsicGasTooLowError=we.IntrinsicGasTooHighError=we.InsufficientFundsError=we.NonceMaxValueError=we.NonceTooLowError=we.NonceTooHighError=we.FeeCapTooLowError=we.FeeCapTooHighError=we.ExecutionRevertedError=void 0;const e=en(),t=fe();class n extends t.BaseError{constructor({cause:p,message:O}={}){const S=O?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${S?`with reason: ${S}`:"for an unknown reason"}.`,{cause:p,name:"ExecutionRevertedError"})}}we.ExecutionRevertedError=n,Object.defineProperty(n,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(n,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted|gas required exceeds allowance/});class r extends t.BaseError{constructor({cause:p,maxFeePerGas:O}={}){super(`The fee cap (\`maxFeePerGas\`${O?` = ${(0,e.formatGwei)(O)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:p,name:"FeeCapTooHighError"})}}we.FeeCapTooHighError=r,Object.defineProperty(r,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class i extends t.BaseError{constructor({cause:p,maxFeePerGas:O}={}){super(`The fee cap (\`maxFeePerGas\`${O?` = ${(0,e.formatGwei)(O)}`:""} gwei) cannot be lower than the block base fee.`,{cause:p,name:"FeeCapTooLowError"})}}we.FeeCapTooLowError=i,Object.defineProperty(i,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class a extends t.BaseError{constructor({cause:p,nonce:O}={}){super(`Nonce provided for the transaction ${O?`(${O}) `:""}is higher than the next one expected.`,{cause:p,name:"NonceTooHighError"})}}we.NonceTooHighError=a,Object.defineProperty(a,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class o extends t.BaseError{constructor({cause:p,nonce:O}={}){super([`Nonce provided for the transaction ${O?`(${O}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(` +`),{cause:p,name:"NonceTooLowError"})}}we.NonceTooLowError=o,Object.defineProperty(o,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class c extends t.BaseError{constructor({cause:p,nonce:O}={}){super(`Nonce provided for the transaction ${O?`(${O}) `:""}exceeds the maximum allowed nonce.`,{cause:p,name:"NonceMaxValueError"})}}we.NonceMaxValueError=c,Object.defineProperty(c,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class u extends t.BaseError{constructor({cause:p}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(` +`),{cause:p,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}we.InsufficientFundsError=u,Object.defineProperty(u,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class d extends t.BaseError{constructor({cause:p,gas:O}={}){super(`The amount of gas ${O?`(${O}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:p,name:"IntrinsicGasTooHighError"})}}we.IntrinsicGasTooHighError=d,Object.defineProperty(d,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class l extends t.BaseError{constructor({cause:p,gas:O}={}){super(`The amount of gas ${O?`(${O}) `:""}provided for the transaction is too low.`,{cause:p,name:"IntrinsicGasTooLowError"})}}we.IntrinsicGasTooLowError=l,Object.defineProperty(l,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class f extends t.BaseError{constructor({cause:p}){super("The transaction type is not supported for this chain.",{cause:p,name:"TransactionTypeNotSupportedError"})}}we.TransactionTypeNotSupportedError=f,Object.defineProperty(f,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class b extends t.BaseError{constructor({cause:p,maxPriorityFeePerGas:O,maxFeePerGas:S}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${O?` = ${(0,e.formatGwei)(O)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${S?` = ${(0,e.formatGwei)(S)} gwei`:""}).`].join(` +`),{cause:p,name:"TipAboveFeeCapError"})}}we.TipAboveFeeCapError=b,Object.defineProperty(b,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class T extends t.BaseError{constructor({cause:p}){super(`An error occurred while executing: ${p?.shortMessage}`,{cause:p,name:"UnknownNodeError"})}}return we.UnknownNodeError=T,we}var bo={},Rb;function Qo(){if(Rb)return bo;Rb=1,Object.defineProperty(bo,"__esModule",{value:!0}),bo.containsNodeError=i,bo.getNodeError=a;const e=fe(),t=tr(),n=Bt(),r=gr();function i(o){return o instanceof r.TransactionRejectedRpcError||o instanceof r.InvalidInputRpcError||o instanceof n.RpcRequestError&&o.code===t.ExecutionRevertedError.code}function a(o,c){const u=(o.details||"").toLowerCase(),d=o instanceof e.BaseError?o.walk(l=>l?.code===t.ExecutionRevertedError.code):o;return d instanceof e.BaseError?new t.ExecutionRevertedError({cause:o,message:d.details}):t.ExecutionRevertedError.nodeMessage.test(u)?new t.ExecutionRevertedError({cause:o,message:o.details}):t.FeeCapTooHighError.nodeMessage.test(u)?new t.FeeCapTooHighError({cause:o,maxFeePerGas:c?.maxFeePerGas}):t.FeeCapTooLowError.nodeMessage.test(u)?new t.FeeCapTooLowError({cause:o,maxFeePerGas:c?.maxFeePerGas}):t.NonceTooHighError.nodeMessage.test(u)?new t.NonceTooHighError({cause:o,nonce:c?.nonce}):t.NonceTooLowError.nodeMessage.test(u)?new t.NonceTooLowError({cause:o,nonce:c?.nonce}):t.NonceMaxValueError.nodeMessage.test(u)?new t.NonceMaxValueError({cause:o,nonce:c?.nonce}):t.InsufficientFundsError.nodeMessage.test(u)?new t.InsufficientFundsError({cause:o}):t.IntrinsicGasTooHighError.nodeMessage.test(u)?new t.IntrinsicGasTooHighError({cause:o,gas:c?.gas}):t.IntrinsicGasTooLowError.nodeMessage.test(u)?new t.IntrinsicGasTooLowError({cause:o,gas:c?.gas}):t.TransactionTypeNotSupportedError.nodeMessage.test(u)?new t.TransactionTypeNotSupportedError({cause:o}):t.TipAboveFeeCapError.nodeMessage.test(u)?new t.TipAboveFeeCapError({cause:o,maxFeePerGas:c?.maxFeePerGas,maxPriorityFeePerGas:c?.maxPriorityFeePerGas}):new t.UnknownNodeError({cause:o})}return bo}var Ob;function Dp(){if(Ob)return us;Ob=1,Object.defineProperty(us,"__esModule",{value:!0}),us.getEstimateGasError=r;const e=zp(),t=tr(),n=Qo();function r(i,{docsPath:a,...o}){const c=(()=>{const u=(0,n.getNodeError)(i,o);return u instanceof t.UnknownNodeError?i:u})();return new e.EstimateGasExecutionError(c,{docsPath:a,...o})}return us}var ds={},Cb;function vr(){if(Cb)return ds;Cb=1,Object.defineProperty(ds,"__esModule",{value:!0}),ds.extract=e;function e(t,{format:n}){if(!n)return{};const r={};function i(o){const c=Object.keys(o);for(const u of c)u in t&&(r[u]=t[u]),o[u]&&typeof o[u]=="object"&&!Array.isArray(o[u])&&i(o[u])}const a=n(t||{});return i(a),r}return ds}var Dd={},fs={},xb;function $o(){if(xb)return fs;xb=1,Object.defineProperty(fs,"__esModule",{value:!0}),fs.defineFormatter=e;function e(t,n){return({exclude:r,format:i})=>({exclude:r,format:(a,o)=>{const c=n(a,o);if(r)for(const u of r)delete c[u];return{...c,...i(a,o)}},type:t})}return fs}var qb;function Rt(){return qb||(qb=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.defineTransactionRequest=e.rpcTransactionType=void 0,e.formatTransactionRequest=r;const t=ie(),n=$o();e.rpcTransactionType={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function r(a,o){const c={};return typeof a.authorizationList<"u"&&(c.authorizationList=i(a.authorizationList)),typeof a.accessList<"u"&&(c.accessList=a.accessList),typeof a.blobVersionedHashes<"u"&&(c.blobVersionedHashes=a.blobVersionedHashes),typeof a.blobs<"u"&&(typeof a.blobs[0]!="string"?c.blobs=a.blobs.map(u=>(0,t.bytesToHex)(u)):c.blobs=a.blobs),typeof a.data<"u"&&(c.data=a.data),a.account&&(c.from=a.account.address),typeof a.from<"u"&&(c.from=a.from),typeof a.gas<"u"&&(c.gas=(0,t.numberToHex)(a.gas)),typeof a.gasPrice<"u"&&(c.gasPrice=(0,t.numberToHex)(a.gasPrice)),typeof a.maxFeePerBlobGas<"u"&&(c.maxFeePerBlobGas=(0,t.numberToHex)(a.maxFeePerBlobGas)),typeof a.maxFeePerGas<"u"&&(c.maxFeePerGas=(0,t.numberToHex)(a.maxFeePerGas)),typeof a.maxPriorityFeePerGas<"u"&&(c.maxPriorityFeePerGas=(0,t.numberToHex)(a.maxPriorityFeePerGas)),typeof a.nonce<"u"&&(c.nonce=(0,t.numberToHex)(a.nonce)),typeof a.to<"u"&&(c.to=a.to),typeof a.type<"u"&&(c.type=e.rpcTransactionType[a.type]),typeof a.value<"u"&&(c.value=(0,t.numberToHex)(a.value)),c}e.defineTransactionRequest=(0,n.defineFormatter)("transactionRequest",r);function i(a){return a.map(o=>({address:o.address,r:o.r?(0,t.numberToHex)(BigInt(o.r)):o.r,s:o.s?(0,t.numberToHex)(BigInt(o.s)):o.s,chainId:(0,t.numberToHex)(o.chainId),nonce:(0,t.numberToHex)(o.nonce),...typeof o.yParity<"u"?{yParity:(0,t.numberToHex)(o.yParity)}:{},...typeof o.v<"u"&&typeof o.yParity>"u"?{v:(0,t.numberToHex)(o.v)}:{}}))}})(Dd)),Dd}var hn={},Hb;function Pf(){if(Hb)return hn;Hb=1,Object.defineProperty(hn,"__esModule",{value:!0}),hn.serializeStateMapping=a,hn.serializeAccountStateOverride=o,hn.serializeStateOverride=c;const e=St(),t=Uu(),n=Ef(),r=ct(),i=ie();function a(u){if(!(!u||u.length===0))return u.reduce((d,{slot:l,value:f})=>{if(l.length!==66)throw new t.InvalidBytesLengthError({size:l.length,targetSize:66,type:"hex"});if(f.length!==66)throw new t.InvalidBytesLengthError({size:f.length,targetSize:66,type:"hex"});return d[l]=f,d},{})}function o(u){const{balance:d,nonce:l,state:f,stateDiff:b,code:T}=u,w={};if(T!==void 0&&(w.code=T),d!==void 0&&(w.balance=(0,i.numberToHex)(d)),l!==void 0&&(w.nonce=(0,i.numberToHex)(l)),f!==void 0&&(w.state=a(f)),b!==void 0){if(w.state)throw new n.StateAssignmentConflictError;w.stateDiff=a(b)}return w}function c(u){if(!u)return;const d={};for(const{address:l,...f}of u){if(!(0,r.isAddress)(l,{strict:!1}))throw new e.InvalidAddressError({address:l});if(d[l])throw new n.AccountStateConflictError({address:l});d[l]=o(f)}return d}return hn}var ls={},V={},Mb;function Af(){return Mb||(Mb=1,Object.defineProperty(V,"__esModule",{value:!0}),V.minInt144=V.minInt136=V.minInt128=V.minInt120=V.minInt112=V.minInt104=V.minInt96=V.minInt88=V.minInt80=V.minInt72=V.minInt64=V.minInt56=V.minInt48=V.minInt40=V.minInt32=V.minInt24=V.minInt16=V.minInt8=V.maxInt256=V.maxInt248=V.maxInt240=V.maxInt232=V.maxInt224=V.maxInt216=V.maxInt208=V.maxInt200=V.maxInt192=V.maxInt184=V.maxInt176=V.maxInt168=V.maxInt160=V.maxInt152=V.maxInt144=V.maxInt136=V.maxInt128=V.maxInt120=V.maxInt112=V.maxInt104=V.maxInt96=V.maxInt88=V.maxInt80=V.maxInt72=V.maxInt64=V.maxInt56=V.maxInt48=V.maxInt40=V.maxInt32=V.maxInt24=V.maxInt16=V.maxInt8=void 0,V.maxUint256=V.maxUint248=V.maxUint240=V.maxUint232=V.maxUint224=V.maxUint216=V.maxUint208=V.maxUint200=V.maxUint192=V.maxUint184=V.maxUint176=V.maxUint168=V.maxUint160=V.maxUint152=V.maxUint144=V.maxUint136=V.maxUint128=V.maxUint120=V.maxUint112=V.maxUint104=V.maxUint96=V.maxUint88=V.maxUint80=V.maxUint72=V.maxUint64=V.maxUint56=V.maxUint48=V.maxUint40=V.maxUint32=V.maxUint24=V.maxUint16=V.maxUint8=V.minInt256=V.minInt248=V.minInt240=V.minInt232=V.minInt224=V.minInt216=V.minInt208=V.minInt200=V.minInt192=V.minInt184=V.minInt176=V.minInt168=V.minInt160=V.minInt152=void 0,V.maxInt8=2n**(8n-1n)-1n,V.maxInt16=2n**(16n-1n)-1n,V.maxInt24=2n**(24n-1n)-1n,V.maxInt32=2n**(32n-1n)-1n,V.maxInt40=2n**(40n-1n)-1n,V.maxInt48=2n**(48n-1n)-1n,V.maxInt56=2n**(56n-1n)-1n,V.maxInt64=2n**(64n-1n)-1n,V.maxInt72=2n**(72n-1n)-1n,V.maxInt80=2n**(80n-1n)-1n,V.maxInt88=2n**(88n-1n)-1n,V.maxInt96=2n**(96n-1n)-1n,V.maxInt104=2n**(104n-1n)-1n,V.maxInt112=2n**(112n-1n)-1n,V.maxInt120=2n**(120n-1n)-1n,V.maxInt128=2n**(128n-1n)-1n,V.maxInt136=2n**(136n-1n)-1n,V.maxInt144=2n**(144n-1n)-1n,V.maxInt152=2n**(152n-1n)-1n,V.maxInt160=2n**(160n-1n)-1n,V.maxInt168=2n**(168n-1n)-1n,V.maxInt176=2n**(176n-1n)-1n,V.maxInt184=2n**(184n-1n)-1n,V.maxInt192=2n**(192n-1n)-1n,V.maxInt200=2n**(200n-1n)-1n,V.maxInt208=2n**(208n-1n)-1n,V.maxInt216=2n**(216n-1n)-1n,V.maxInt224=2n**(224n-1n)-1n,V.maxInt232=2n**(232n-1n)-1n,V.maxInt240=2n**(240n-1n)-1n,V.maxInt248=2n**(248n-1n)-1n,V.maxInt256=2n**(256n-1n)-1n,V.minInt8=-(2n**(8n-1n)),V.minInt16=-(2n**(16n-1n)),V.minInt24=-(2n**(24n-1n)),V.minInt32=-(2n**(32n-1n)),V.minInt40=-(2n**(40n-1n)),V.minInt48=-(2n**(48n-1n)),V.minInt56=-(2n**(56n-1n)),V.minInt64=-(2n**(64n-1n)),V.minInt72=-(2n**(72n-1n)),V.minInt80=-(2n**(80n-1n)),V.minInt88=-(2n**(88n-1n)),V.minInt96=-(2n**(96n-1n)),V.minInt104=-(2n**(104n-1n)),V.minInt112=-(2n**(112n-1n)),V.minInt120=-(2n**(120n-1n)),V.minInt128=-(2n**(128n-1n)),V.minInt136=-(2n**(136n-1n)),V.minInt144=-(2n**(144n-1n)),V.minInt152=-(2n**(152n-1n)),V.minInt160=-(2n**(160n-1n)),V.minInt168=-(2n**(168n-1n)),V.minInt176=-(2n**(176n-1n)),V.minInt184=-(2n**(184n-1n)),V.minInt192=-(2n**(192n-1n)),V.minInt200=-(2n**(200n-1n)),V.minInt208=-(2n**(208n-1n)),V.minInt216=-(2n**(216n-1n)),V.minInt224=-(2n**(224n-1n)),V.minInt232=-(2n**(232n-1n)),V.minInt240=-(2n**(240n-1n)),V.minInt248=-(2n**(248n-1n)),V.minInt256=-(2n**(256n-1n)),V.maxUint8=2n**8n-1n,V.maxUint16=2n**16n-1n,V.maxUint24=2n**24n-1n,V.maxUint32=2n**32n-1n,V.maxUint40=2n**40n-1n,V.maxUint48=2n**48n-1n,V.maxUint56=2n**56n-1n,V.maxUint64=2n**64n-1n,V.maxUint72=2n**72n-1n,V.maxUint80=2n**80n-1n,V.maxUint88=2n**88n-1n,V.maxUint96=2n**96n-1n,V.maxUint104=2n**104n-1n,V.maxUint112=2n**112n-1n,V.maxUint120=2n**120n-1n,V.maxUint128=2n**128n-1n,V.maxUint136=2n**136n-1n,V.maxUint144=2n**144n-1n,V.maxUint152=2n**152n-1n,V.maxUint160=2n**160n-1n,V.maxUint168=2n**168n-1n,V.maxUint176=2n**176n-1n,V.maxUint184=2n**184n-1n,V.maxUint192=2n**192n-1n,V.maxUint200=2n**200n-1n,V.maxUint208=2n**208n-1n,V.maxUint216=2n**216n-1n,V.maxUint224=2n**224n-1n,V.maxUint232=2n**232n-1n,V.maxUint240=2n**240n-1n,V.maxUint248=2n**248n-1n,V.maxUint256=2n**256n-1n),V}var kb;function Ot(){if(kb)return ls;kb=1,Object.defineProperty(ls,"__esModule",{value:!0}),ls.assertRequest=a;const e=He(),t=Af(),n=St(),r=tr(),i=ct();function a(o){const{account:c,maxFeePerGas:u,maxPriorityFeePerGas:d,to:l}=o,f=c?(0,e.parseAccount)(c):void 0;if(f&&!(0,i.isAddress)(f.address))throw new n.InvalidAddressError({address:f.address});if(l&&!(0,i.isAddress)(l))throw new n.InvalidAddressError({address:l});if(u&&u>t.maxUint256)throw new r.FeeCapTooHighError({maxFeePerGas:u});if(d&&u&&d>u)throw new r.TipAboveFeeCapError({maxFeePerGas:u,maxPriorityFeePerGas:d})}return ls}var Gd={},mo={},Yt={},Nb;function ei(){if(Nb)return Yt;Nb=1,Object.defineProperty(Yt,"__esModule",{value:!0}),Yt.MaxFeePerGasTooLowError=Yt.Eip1559FeesNotSupportedError=Yt.BaseFeeScalarError=void 0;const e=en(),t=fe();class n extends t.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}Yt.BaseFeeScalarError=n;class r extends t.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}Yt.Eip1559FeesNotSupportedError=r;class i extends t.BaseError{constructor({maxPriorityFeePerGas:o}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${(0,e.formatGwei)(o)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}return Yt.MaxFeePerGasTooLowError=i,Yt}var ho={},bs={},yo={},Fb;function Tf(){if(Fb)return yo;Fb=1,Object.defineProperty(yo,"__esModule",{value:!0}),yo.BlockNotFoundError=void 0;const e=fe();class t extends e.BaseError{constructor({blockHash:r,blockNumber:i}){let a="Block";r&&(a=`Block at hash "${r}"`),i&&(a=`Block at number "${i}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}return yo.BlockNotFoundError=t,yo}var yn={},Vd={},Lb;function On(){return Lb||(Lb=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.defineTransaction=e.transactionType=void 0,e.formatTransaction=r;const t=Ne(),n=$o();e.transactionType={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function r(a,o){const c={...a,blockHash:a.blockHash?a.blockHash:null,blockNumber:a.blockNumber?BigInt(a.blockNumber):null,chainId:a.chainId?(0,t.hexToNumber)(a.chainId):void 0,gas:a.gas?BigInt(a.gas):void 0,gasPrice:a.gasPrice?BigInt(a.gasPrice):void 0,maxFeePerBlobGas:a.maxFeePerBlobGas?BigInt(a.maxFeePerBlobGas):void 0,maxFeePerGas:a.maxFeePerGas?BigInt(a.maxFeePerGas):void 0,maxPriorityFeePerGas:a.maxPriorityFeePerGas?BigInt(a.maxPriorityFeePerGas):void 0,nonce:a.nonce?(0,t.hexToNumber)(a.nonce):void 0,to:a.to?a.to:null,transactionIndex:a.transactionIndex?Number(a.transactionIndex):null,type:a.type?e.transactionType[a.type]:void 0,typeHex:a.type?a.type:void 0,value:a.value?BigInt(a.value):void 0,v:a.v?BigInt(a.v):void 0};return a.authorizationList&&(c.authorizationList=i(a.authorizationList)),c.yParity=(()=>{if(a.yParity)return Number(a.yParity);if(typeof c.v=="bigint"){if(c.v===0n||c.v===27n)return 0;if(c.v===1n||c.v===28n)return 1;if(c.v>=35n)return c.v%2n===0n?1:0}})(),c.type==="legacy"&&(delete c.accessList,delete c.maxFeePerBlobGas,delete c.maxFeePerGas,delete c.maxPriorityFeePerGas,delete c.yParity),c.type==="eip2930"&&(delete c.maxFeePerBlobGas,delete c.maxFeePerGas,delete c.maxPriorityFeePerGas),c.type==="eip1559"&&delete c.maxFeePerBlobGas,c}e.defineTransaction=(0,n.defineFormatter)("transaction",r);function i(a){return a.map(o=>({address:o.address,chainId:Number(o.chainId),nonce:Number(o.nonce),r:o.r,s:o.s,yParity:Number(o.yParity)}))}})(Vd)),Vd}var Ub;function Zu(){if(Ub)return yn;Ub=1,Object.defineProperty(yn,"__esModule",{value:!0}),yn.defineBlock=void 0,yn.formatBlock=n;const e=$o(),t=On();function n(r,i){const a=(r.transactions??[]).map(o=>typeof o=="string"?o:(0,t.formatTransaction)(o));return{...r,baseFeePerGas:r.baseFeePerGas?BigInt(r.baseFeePerGas):null,blobGasUsed:r.blobGasUsed?BigInt(r.blobGasUsed):void 0,difficulty:r.difficulty?BigInt(r.difficulty):void 0,excessBlobGas:r.excessBlobGas?BigInt(r.excessBlobGas):void 0,gasLimit:r.gasLimit?BigInt(r.gasLimit):void 0,gasUsed:r.gasUsed?BigInt(r.gasUsed):void 0,hash:r.hash?r.hash:null,logsBloom:r.logsBloom?r.logsBloom:null,nonce:r.nonce?r.nonce:null,number:r.number?BigInt(r.number):null,size:r.size?BigInt(r.size):void 0,timestamp:r.timestamp?BigInt(r.timestamp):void 0,transactions:a,totalDifficulty:r.totalDifficulty?BigInt(r.totalDifficulty):null}}return yn.defineBlock=(0,e.defineFormatter)("block",n),yn}var zb;function tn(){if(zb)return bs;zb=1,Object.defineProperty(bs,"__esModule",{value:!0}),bs.getBlock=r;const e=Tf(),t=ie(),n=Zu();async function r(i,{blockHash:a,blockNumber:o,blockTag:c=i.experimental_blockTag??"latest",includeTransactions:u}={}){const d=u??!1,l=o!==void 0?(0,t.numberToHex)(o):void 0;let f=null;if(a?f=await i.request({method:"eth_getBlockByHash",params:[a,d]},{dedupe:!0}):f=await i.request({method:"eth_getBlockByNumber",params:[l||c,d]},{dedupe:!!l}),!f)throw new e.BlockNotFoundError({blockHash:a,blockNumber:o});return(i.chain?.formatters?.block?.format||n.formatBlock)(f,"getBlock")}return bs}var ms={},Db;function Sf(){if(Db)return ms;Db=1,Object.defineProperty(ms,"__esModule",{value:!0}),ms.getGasPrice=e;async function e(t){const n=await t.request({method:"eth_gasPrice"});return BigInt(n)}return ms}var Gb;function Gp(){if(Gb)return ho;Gb=1,Object.defineProperty(ho,"__esModule",{value:!0}),ho.estimateMaxPriorityFeePerGas=a,ho.internal_estimateMaxPriorityFeePerGas=o;const e=ei(),t=Ne(),n=ge(),r=tn(),i=Sf();async function a(c,u){return o(c,u)}async function o(c,u){const{block:d,chain:l=c.chain,request:f}=u||{};try{const b=l?.fees?.maxPriorityFeePerGas??l?.fees?.defaultPriorityFee;if(typeof b=="function"){const w=d||await(0,n.getAction)(c,r.getBlock,"getBlock")({}),p=await b({block:w,client:c,request:f});if(p===null)throw new Error;return p}if(typeof b<"u")return b;const T=await c.request({method:"eth_maxPriorityFeePerGas"});return(0,t.hexToBigInt)(T)}catch{const[b,T]=await Promise.all([d?Promise.resolve(d):(0,n.getAction)(c,r.getBlock,"getBlock")({}),(0,n.getAction)(c,i.getGasPrice,"getGasPrice")({})]);if(typeof b.baseFeePerGas!="bigint")throw new e.Eip1559FeesNotSupportedError;const w=T-b.baseFeePerGas;return w<0n?0n:w}}return ho}var Vb;function Vp(){if(Vb)return mo;Vb=1,Object.defineProperty(mo,"__esModule",{value:!0}),mo.estimateFeesPerGas=a,mo.internal_estimateFeesPerGas=o;const e=ei(),t=ge(),n=Gp(),r=tn(),i=Sf();async function a(c,u){return o(c,u)}async function o(c,u){const{block:d,chain:l=c.chain,request:f,type:b="eip1559"}=u||{},T=await(async()=>typeof l?.fees?.baseFeeMultiplier=="function"?l.fees.baseFeeMultiplier({block:d,client:c,request:f}):l?.fees?.baseFeeMultiplier??1.2)();if(T<1)throw new e.BaseFeeScalarError;const p=10**(T.toString().split(".")[1]?.length??0),O=j=>j*BigInt(Math.ceil(T*p))/BigInt(p),S=d||await(0,t.getAction)(c,r.getBlock,"getBlock")({});if(typeof l?.fees?.estimateFeesPerGas=="function"){const j=await l.fees.estimateFeesPerGas({block:d,client:c,multiply:O,request:f,type:b});if(j!==null)return j}if(b==="eip1559"){if(typeof S.baseFeePerGas!="bigint")throw new e.Eip1559FeesNotSupportedError;const j=typeof f?.maxPriorityFeePerGas=="bigint"?f.maxPriorityFeePerGas:await(0,n.internal_estimateMaxPriorityFeePerGas)(c,{block:S,chain:l,request:f}),s=O(S.baseFeePerGas);return{maxFeePerGas:f?.maxFeePerGas??s+j,maxPriorityFeePerGas:j}}return{gasPrice:f?.gasPrice??O(await(0,t.getAction)(c,i.getGasPrice,"getGasPrice")({}))}}return mo}var hs={},Wb;function Yu(){if(Wb)return hs;Wb=1,Object.defineProperty(hs,"__esModule",{value:!0}),hs.getTransactionCount=n;const e=Ne(),t=ie();async function n(r,{address:i,blockTag:a="latest",blockNumber:o}){const c=await r.request({method:"eth_getTransactionCount",params:[i,typeof o=="bigint"?(0,t.numberToHex)(o):a]},{dedupe:!!o});return(0,e.hexToNumber)(c)}return hs}var ys={},Kb;function Ju(){if(Kb)return ys;Kb=1,Object.defineProperty(ys,"__esModule",{value:!0}),ys.blobsToCommitments=n;const e=Pe(),t=ie();function n(r){const{kzg:i}=r,a=r.to??(typeof r.blobs[0]=="string"?"hex":"bytes"),o=typeof r.blobs[0]=="string"?r.blobs.map(u=>(0,e.hexToBytes)(u)):r.blobs,c=[];for(const u of o)c.push(Uint8Array.from(i.blobToKzgCommitment(u)));return a==="bytes"?c:c.map(u=>(0,t.bytesToHex)(u))}return ys}var gs={},Zb;function Xu(){if(Zb)return gs;Zb=1,Object.defineProperty(gs,"__esModule",{value:!0}),gs.blobsToProofs=n;const e=Pe(),t=ie();function n(r){const{kzg:i}=r,a=r.to??(typeof r.blobs[0]=="string"?"hex":"bytes"),o=typeof r.blobs[0]=="string"?r.blobs.map(d=>(0,e.hexToBytes)(d)):r.blobs,c=typeof r.commitments[0]=="string"?r.commitments.map(d=>(0,e.hexToBytes)(d)):r.commitments,u=[];for(let d=0;d(0,t.bytesToHex)(d))}return gs}var ps={},_s={},vs={},Et={},Yb;function Sv(){if(Yb)return Et;Yb=1,Object.defineProperty(Et,"__esModule",{value:!0}),Et.sha224=Et.SHA224=Et.sha256=Et.SHA256=void 0;const e=Fp();return Et.SHA256=e.SHA256,Et.sha256=e.sha256,Et.SHA224=e.SHA224,Et.sha224=e.sha224,Et}var Jb;function If(){if(Jb)return vs;Jb=1,Object.defineProperty(vs,"__esModule",{value:!0}),vs.sha256=i;const e=Sv(),t=nt(),n=Pe(),r=ie();function i(a,o){const c=o||"hex",u=(0,e.sha256)((0,t.isHex)(a,{strict:!1})?(0,n.toBytes)(a):a);return c==="bytes"?u:(0,r.toHex)(u)}return vs}var Xb;function Bf(){if(Xb)return _s;Xb=1,Object.defineProperty(_s,"__esModule",{value:!0}),_s.commitmentToVersionedHash=n;const e=ie(),t=If();function n(r){const{commitment:i,version:a=1}=r,o=r.to??(typeof i=="string"?"hex":"bytes"),c=(0,t.sha256)(i,"bytes");return c.set([a],0),o==="bytes"?c:(0,e.bytesToHex)(c)}return _s}var Qb;function Rf(){if(Qb)return ps;Qb=1,Object.defineProperty(ps,"__esModule",{value:!0}),ps.commitmentsToVersionedHashes=t;const e=Bf();function t(n){const{commitments:r,version:i}=n,a=n.to??(typeof r[0]=="string"?"hex":"bytes"),o=[];for(const c of r)o.push((0,e.commitmentToVersionedHash)({commitment:c,to:a,version:i}));return o}return ps}var Es={},ws={},Wd={},$b;function Iv(){return $b||($b=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.maxBytesPerTransaction=e.bytesPerBlob=e.fieldElementsPerBlob=e.bytesPerFieldElement=void 0;const t=6;e.bytesPerFieldElement=32,e.fieldElementsPerBlob=4096,e.bytesPerBlob=e.bytesPerFieldElement*e.fieldElementsPerBlob,e.maxBytesPerTransaction=e.bytesPerBlob*t-1-1*e.fieldElementsPerBlob*t})(Wd)),Wd}var wt={},go={},em;function Wp(){return em||(em=1,Object.defineProperty(go,"__esModule",{value:!0}),go.versionedHashVersionKzg=void 0,go.versionedHashVersionKzg=1),go}var tm;function Kp(){if(tm)return wt;tm=1,Object.defineProperty(wt,"__esModule",{value:!0}),wt.InvalidVersionedHashVersionError=wt.InvalidVersionedHashSizeError=wt.EmptyBlobError=wt.BlobSizeTooLargeError=void 0;const e=Wp(),t=fe();class n extends t.BaseError{constructor({maxSize:c,size:u}){super("Blob size is too large.",{metaMessages:[`Max: ${c} bytes`,`Given: ${u} bytes`],name:"BlobSizeTooLargeError"})}}wt.BlobSizeTooLargeError=n;class r extends t.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}wt.EmptyBlobError=r;class i extends t.BaseError{constructor({hash:c,size:u}){super(`Versioned hash "${c}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${u}`],name:"InvalidVersionedHashSizeError"})}}wt.InvalidVersionedHashSizeError=i;class a extends t.BaseError{constructor({hash:c,version:u}){super(`Versioned hash "${c}" version is invalid.`,{metaMessages:[`Expected: ${e.versionedHashVersionKzg}`,`Received: ${u}`],name:"InvalidVersionedHashVersionError"})}}return wt.InvalidVersionedHashVersionError=a,wt}var rm;function Zp(){if(rm)return ws;rm=1,Object.defineProperty(ws,"__esModule",{value:!0}),ws.toBlobs=o;const e=Iv(),t=Kp(),n=Vo(),r=st(),i=Pe(),a=ie();function o(c){const u=c.to??(typeof c.data=="string"?"hex":"bytes"),d=typeof c.data=="string"?(0,i.hexToBytes)(c.data):c.data,l=(0,r.size)(d);if(!l)throw new t.EmptyBlobError;if(l>e.maxBytesPerTransaction)throw new t.BlobSizeTooLargeError({maxSize:e.maxBytesPerTransaction,size:l});const f=[];let b=!0,T=0;for(;b;){const w=(0,n.createCursor)(new Uint8Array(e.bytesPerBlob));let p=0;for(;pw.bytes):f.map(w=>(0,a.bytesToHex)(w.bytes))}return ws}var nm;function Qu(){if(nm)return Es;nm=1,Object.defineProperty(Es,"__esModule",{value:!0}),Es.toBlobSidecars=r;const e=Ju(),t=Xu(),n=Zp();function r(i){const{data:a,kzg:o,to:c}=i,u=i.blobs??(0,n.toBlobs)({data:a,to:c}),d=i.commitments??(0,e.blobsToCommitments)({blobs:u,kzg:o,to:c}),l=i.proofs??(0,t.blobsToProofs)({blobs:u,commitments:d,kzg:o,to:c}),f=[];for(let b=0;b{const u=(0,n.getNodeError)(i,o);return u instanceof e.UnknownNodeError?i:u})();return new t.TransactionExecutionError(c,{docsPath:a,...o})}return As}var Ts={},sm;function Er(){if(sm)return Ts;sm=1,Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getChainId=t;const e=Ne();async function t(n){const r=await n.request({method:"eth_chainId"},{dedupe:!0});return(0,e.hexToNumber)(r)}return Ts}var am;function Of(){if(am)return Ps;am=1,Object.defineProperty(Ps,"__esModule",{value:!0}),Ps.fillTransaction=l;const e=He(),t=ei(),n=ti(),r=vr(),i=On(),a=Rt(),o=ge(),c=Ot(),u=tn(),d=Er();async function l(f,b){const{account:T=f.account,accessList:w,authorizationList:p,chain:O=f.chain,blobVersionedHashes:S,blobs:m,data:j,gas:s,gasPrice:y,maxFeePerBlobGas:g,maxFeePerGas:E,maxPriorityFeePerGas:B,nonce:_,nonceManager:v,to:C,type:q,value:R,...H}=b,F=await(async()=>{if(!T||!v||typeof _<"u")return _;const A=(0,e.parseAccount)(T),P=O?O.id:await(0,o.getAction)(f,d.getChainId,"getChainId")({});return await v.consume({address:A.address,chainId:P,client:f})})();(0,c.assertRequest)(b);const k=O?.formatters?.transactionRequest?.format,M=(k||a.formatTransactionRequest)({...(0,r.extract)(H,{format:k}),account:T?(0,e.parseAccount)(T):void 0,accessList:w,authorizationList:p,blobs:m,blobVersionedHashes:S,data:j,gas:s,gasPrice:y,maxFeePerBlobGas:g,maxFeePerGas:E,maxPriorityFeePerGas:B,nonce:F,to:C,type:q,value:R},"fillTransaction");try{const A=await f.request({method:"eth_fillTransaction",params:[M]}),I=(O?.formatters?.transaction?.format||i.formatTransaction)(A.tx);delete I.blockHash,delete I.blockNumber,delete I.r,delete I.s,delete I.transactionIndex,delete I.v,delete I.yParity,I.data=I.input,I.gas&&(I.gas=b.gas??I.gas),I.gasPrice&&(I.gasPrice=b.gasPrice??I.gasPrice),I.maxFeePerBlobGas&&(I.maxFeePerBlobGas=b.maxFeePerBlobGas??I.maxFeePerBlobGas),I.maxFeePerGas&&(I.maxFeePerGas=b.maxFeePerGas??I.maxFeePerGas),I.maxPriorityFeePerGas&&(I.maxPriorityFeePerGas=b.maxPriorityFeePerGas??I.maxPriorityFeePerGas),I.nonce&&(I.nonce=b.nonce??I.nonce);const x=await(async()=>{if(typeof O?.fees?.baseFeeMultiplier=="function"){const z=await(0,o.getAction)(f,u.getBlock,"getBlock")({});return O.fees.baseFeeMultiplier({block:z,client:f,request:b})}return O?.fees?.baseFeeMultiplier??1.2})();if(x<1)throw new t.BaseFeeScalarError;const U=10**(x.toString().split(".")[1]?.length??0),L=z=>z*BigInt(Math.ceil(x*U))/BigInt(U);return I.maxFeePerGas&&!b.maxFeePerGas&&(I.maxFeePerGas=L(I.maxFeePerGas)),I.gasPrice&&!b.gasPrice&&(I.gasPrice=L(I.gasPrice)),{raw:A.raw,transaction:{from:M.from,...I}}}catch(A){throw(0,n.getTransactionError)(A,{...b,chain:f.chain})}}return Ps}var cm;function ri(){return cm||(cm=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.supportsFillTransaction=e.eip1559NetworkCache=e.defaultParameters=void 0,e.prepareTransactionRequest=S;const t=He(),n=Vp(),r=Cf(),i=tn(),a=Yu(),o=ei(),c=Ju(),u=Xu(),d=Rf(),l=Qu(),f=ge(),b=Xr(),T=Ot(),w=$u(),p=Of(),O=Er();e.defaultParameters=["blobVersionedHashes","chainId","fees","gas","nonce","type"],e.eip1559NetworkCache=new Map,e.supportsFillTransaction=new b.LruMap(128);async function S(m,j){let s=j;s.account??=m.account,s.parameters??=e.defaultParameters;const{account:y,chain:g=m.chain,nonceManager:E,parameters:B}=s,_=(()=>{if(typeof g?.prepareTransactionRequest=="function")return{fn:g.prepareTransactionRequest,runAt:["beforeFillTransaction"]};if(Array.isArray(g?.prepareTransactionRequest))return{fn:g.prepareTransactionRequest[0],runAt:g.prepareTransactionRequest[1].runAt}})();let v;async function C(){return v||(typeof s.chainId<"u"?s.chainId:g?g.id:(v=await(0,f.getAction)(m,O.getChainId,"getChainId")({}),v))}const q=y&&(0,t.parseAccount)(y);let R=s.nonce;if(B.includes("nonce")&&typeof R>"u"&&q&&E){const x=await C();R=await E.consume({address:q.address,chainId:x,client:m})}_?.fn&&_.runAt?.includes("beforeFillTransaction")&&(s=await _.fn({...s,chain:g},{phase:"beforeFillTransaction"}),R??=s.nonce);const F=((B.includes("blobVersionedHashes")||B.includes("sidecars"))&&s.kzg&&s.blobs||e.supportsFillTransaction.get(m.uid)===!1||!["fees","gas"].some(N=>B.includes(N))?!1:!!(B.includes("chainId")&&typeof s.chainId!="number"||B.includes("nonce")&&typeof R!="number"||B.includes("fees")&&typeof s.gasPrice!="bigint"&&(typeof s.maxFeePerGas!="bigint"||typeof s.maxPriorityFeePerGas!="bigint")||B.includes("gas")&&typeof s.gas!="bigint"))?await(0,f.getAction)(m,p.fillTransaction,"fillTransaction")({...s,nonce:R}).then(x=>{const{chainId:N,from:U,gas:L,gasPrice:z,nonce:D,maxFeePerBlobGas:J,maxFeePerGas:Z,maxPriorityFeePerGas:Y,type:X,...oe}=x.transaction;return e.supportsFillTransaction.set(m.uid,!0),{...s,...U?{from:U}:{},...X?{type:X}:{},...typeof N<"u"?{chainId:N}:{},...typeof L<"u"?{gas:L}:{},...typeof z<"u"?{gasPrice:z}:{},...typeof D<"u"?{nonce:D}:{},...typeof J<"u"?{maxFeePerBlobGas:J}:{},...typeof Z<"u"?{maxFeePerGas:Z}:{},...typeof Y<"u"?{maxPriorityFeePerGas:Y}:{},..."nonceKey"in oe&&typeof oe.nonceKey<"u"?{nonceKey:oe.nonceKey}:{}}}).catch(x=>{const N=x;return N.name!=="TransactionExecutionError"||N.walk?.(L=>{const z=L;return z.name==="MethodNotFoundRpcError"||z.name==="MethodNotSupportedRpcError"})&&e.supportsFillTransaction.set(m.uid,!1),s}):s;R??=F.nonce,s={...F,...q?{from:q?.address}:{},...R?{nonce:R}:{}};const{blobs:k,gas:h,kzg:M,type:A}=s;_?.fn&&_.runAt?.includes("beforeFillParameters")&&(s=await _.fn({...s,chain:g},{phase:"beforeFillParameters"}));let P;async function I(){return P||(P=await(0,f.getAction)(m,i.getBlock,"getBlock")({blockTag:"latest"}),P)}if(B.includes("nonce")&&typeof R>"u"&&q&&!E&&(s.nonce=await(0,f.getAction)(m,a.getTransactionCount,"getTransactionCount")({address:q.address,blockTag:"pending"})),(B.includes("blobVersionedHashes")||B.includes("sidecars"))&&k&&M){const x=(0,c.blobsToCommitments)({blobs:k,kzg:M});if(B.includes("blobVersionedHashes")){const N=(0,d.commitmentsToVersionedHashes)({commitments:x,to:"hex"});s.blobVersionedHashes=N}if(B.includes("sidecars")){const N=(0,u.blobsToProofs)({blobs:k,commitments:x,kzg:M}),U=(0,l.toBlobSidecars)({blobs:k,commitments:x,proofs:N,to:"hex"});s.sidecars=U}}if(B.includes("chainId")&&(s.chainId=await C()),(B.includes("fees")||B.includes("type"))&&typeof A>"u")try{s.type=(0,w.getTransactionType)(s)}catch{let x=e.eip1559NetworkCache.get(m.uid);typeof x>"u"&&(x=typeof(await I())?.baseFeePerGas=="bigint",e.eip1559NetworkCache.set(m.uid,x)),s.type=x?"eip1559":"legacy"}if(B.includes("fees"))if(s.type!=="legacy"&&s.type!=="eip2930"){if(typeof s.maxFeePerGas>"u"||typeof s.maxPriorityFeePerGas>"u"){const x=await I(),{maxFeePerGas:N,maxPriorityFeePerGas:U}=await(0,n.internal_estimateFeesPerGas)(m,{block:x,chain:g,request:s});if(typeof s.maxPriorityFeePerGas>"u"&&s.maxFeePerGas&&s.maxFeePerGas"u"){const x=await I(),{gasPrice:N}=await(0,n.internal_estimateFeesPerGas)(m,{block:x,chain:g,request:s,type:"legacy"});s.gasPrice=N}}return B.includes("gas")&&typeof h>"u"&&(s.gas=await(0,f.getAction)(m,r.estimateGas,"estimateGas")({...s,account:q,prepare:q?.type==="local"?[]:["blobVersionedHashes"]})),_?.fn&&_.runAt?.includes("afterFillParameters")&&(s=await _.fn({...s,chain:g},{phase:"afterFillParameters"})),(0,T.assertRequest)(s),delete s.parameters,s}})(Gd)),Gd}var um;function Cf(){if(um)return ns;um=1,Object.defineProperty(ns,"__esModule",{value:!0}),ns.estimateGas=l;const e=He(),t=fe(),n=Xo(),r=ie(),i=Dp(),a=vr(),o=Rt(),c=Pf(),u=Ot(),d=ri();async function l(f,b){const{account:T=f.account,prepare:w=!0}=b,p=T?(0,e.parseAccount)(T):void 0,O=(()=>{if(Array.isArray(w))return w;if(p?.type!=="local")return["blobVersionedHashes"]})();try{const S=await(async()=>{if(b.to)return b.to;if(b.authorizationList&&b.authorizationList.length>0)return await(0,n.recoverAuthorizationAddress)({authorization:b.authorizationList[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`")})})(),{accessList:m,authorizationList:j,blobs:s,blobVersionedHashes:y,blockNumber:g,blockTag:E,data:B,gas:_,gasPrice:v,maxFeePerBlobGas:C,maxFeePerGas:q,maxPriorityFeePerGas:R,nonce:H,value:F,stateOverride:k,...h}=w?await(0,d.prepareTransactionRequest)(f,{...b,parameters:O,to:S}):b;if(_&&b.gas!==_)return _;const A=(typeof g=="bigint"?(0,r.numberToHex)(g):void 0)||E,P=(0,c.serializeStateOverride)(k);(0,u.assertRequest)(b);const I=f.chain?.formatters?.transactionRequest?.format,N=(I||o.formatTransactionRequest)({...(0,a.extract)(h,{format:I}),account:p,accessList:m,authorizationList:j,blobs:s,blobVersionedHashes:y,data:B,gasPrice:v,maxFeePerBlobGas:C,maxFeePerGas:q,maxPriorityFeePerGas:R,nonce:H,to:S,value:F},"estimateGas");return BigInt(await f.request({method:"eth_estimateGas",params:P?[N,A??f.experimental_blockTag??"latest",P]:A?[N,A]:[N]}))}catch(S){throw(0,i.getEstimateGasError)(S,{...b,account:p,chain:f.chain})}}return ns}var dm;function Yp(){if(dm)return Vi;dm=1,Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.estimateContractGas=a;const e=He(),t=ut(),n=pr(),r=ge(),i=Cf();async function a(o,c){const{abi:u,address:d,args:l,functionName:f,dataSuffix:b,...T}=c,w=(0,t.encodeFunctionData)({abi:u,args:l,functionName:f});try{return await(0,r.getAction)(o,i.estimateGas,"estimateGas")({data:`${w}${b?b.replace("0x",""):""}`,to:d,...T})}catch(p){const O=T.account?(0,e.parseAccount)(T.account):void 0;throw(0,n.getContractError)(p,{abi:u,address:d,args:l,docsPath:"/docs/contract/estimateContractGas",functionName:f,sender:O?.address})}}return Vi}var Ss={},Is={},Bs={},Rs={},fm;function Ct(){if(fm)return Rs;fm=1,Object.defineProperty(Rs,"__esModule",{value:!0}),Rs.isAddressEqual=n;const e=St(),t=ct();function n(r,i){if(!(0,t.isAddress)(r,{strict:!1}))throw new e.InvalidAddressError({address:r});if(!(0,t.isAddress)(i,{strict:!1}))throw new e.InvalidAddressError({address:i});return r.toLowerCase()===i.toLowerCase()}return Rs}var Os={},lm;function ni(){if(lm)return Os;lm=1,Object.defineProperty(Os,"__esModule",{value:!0}),Os.decodeEventLog=c;const e=qe(),t=Hp(),n=st(),r=Rn(),i=hr(),a=Qt(),o="/docs/contract/decodeEventLog";function c(d){const{abi:l,data:f,strict:b,topics:T}=d,w=b??!0,[p,...O]=T;if(!p)throw new e.AbiEventSignatureEmptyTopicsError({docsPath:o});const S=l.find(B=>B.type==="event"&&p===(0,r.toEventSelector)((0,a.formatAbiItem)(B)));if(!(S&&"name"in S)||S.type!=="event")throw new e.AbiEventSignatureNotFoundError(p,{docsPath:o});const{name:m,inputs:j}=S,s=j?.some(B=>!("name"in B&&B.name)),y=s?[]:{},g=j.map((B,_)=>[B,_]).filter(([B])=>"indexed"in B&&B.indexed);for(let B=0;B!("indexed"in B&&B.indexed));if(E.length>0){if(f&&f!=="0x")try{const B=(0,i.decodeAbiParameters)(E,f);if(B)if(s)for(let _=0;_0?y:void 0}}function u({param:d,value:l}){return d.type==="string"||d.type==="bytes"||d.type==="tuple"||d.type.match(/^(.*)\[(\d+)?\]$/)?l:((0,i.decodeAbiParameters)([d],l)||[])[0]}return Os}var bm;function oi(){if(bm)return Bs;bm=1,Object.defineProperty(Bs,"__esModule",{value:!0}),Bs.parseEventLogs=a;const e=Ct(),t=Pe(),n=at(),r=Rn(),i=ni();function a(c){const{abi:u,args:d,logs:l,strict:f=!0}=c,b=(()=>{if(c.eventName)return Array.isArray(c.eventName)?c.eventName:[c.eventName]})();return l.map(T=>{const w=u.filter(S=>S.type==="event"&&T.topics[0]===(0,r.toEventSelector)(S));if(w.length===0)return null;let p,O;for(const S of w)try{p=(0,i.decodeEventLog)({...T,abi:[S],strict:!0}),O=S;break}catch{}if(!p&&!f){O=w[0];try{p=(0,i.decodeEventLog)({...T,abi:[O],strict:!1})}catch{const S=O.inputs?.some(m=>!("name"in m&&m.name));return{...T,args:S?[]:{},eventName:O.name}}}return!p||!O||b&&!b.includes(p.eventName)||!o({args:p.args,inputs:O.inputs,matchArgs:d})?null:{...p,...T}}).filter(Boolean)}function o(c){const{args:u,inputs:d,matchArgs:l}=c;if(!l)return!0;if(!u)return!1;function f(b,T,w){try{return b.type==="address"?(0,e.isAddressEqual)(T,w):b.type==="string"||b.type==="bytes"?(0,n.keccak256)((0,t.toBytes)(T))===w:T===w}catch{return!1}}return Array.isArray(u)&&Array.isArray(l)?l.every((b,T)=>{if(b==null)return!0;const w=d[T];return w?(Array.isArray(b)?b:[b]).some(O=>f(w,O,u[T])):!1}):typeof u=="object"&&!Array.isArray(u)&&typeof l=="object"&&!Array.isArray(l)?Object.entries(l).every(([b,T])=>{if(T==null)return!0;const w=d.find(O=>O.name===b);return w?(Array.isArray(T)?T:[T]).some(O=>f(w,O,u[b])):!1}):!1}return Bs}var Cs={},mm;function rr(){if(mm)return Cs;mm=1,Object.defineProperty(Cs,"__esModule",{value:!0}),Cs.formatLog=e;function e(t,{args:n,eventName:r}={}){return{...t,blockHash:t.blockHash?t.blockHash:null,blockNumber:t.blockNumber?BigInt(t.blockNumber):null,blockTimestamp:t.blockTimestamp?BigInt(t.blockTimestamp):t.blockTimestamp===null?null:void 0,logIndex:t.logIndex?Number(t.logIndex):null,transactionHash:t.transactionHash?t.transactionHash:null,transactionIndex:t.transactionIndex?Number(t.transactionIndex):null,...r?{args:n,eventName:r}:{}}}return Cs}var hm;function xf(){if(hm)return Is;hm=1,Object.defineProperty(Is,"__esModule",{value:!0}),Is.getLogs=i;const e=$r(),t=oi(),n=ie(),r=rr();async function i(a,{address:o,blockHash:c,fromBlock:u,toBlock:d,event:l,events:f,args:b,strict:T}={}){const w=T??!1,p=f??(l?[l]:void 0);let O=[];p&&(O=[p.flatMap(s=>(0,e.encodeEventTopics)({abi:[s],eventName:s.name,args:f?void 0:b}))],l&&(O=O[0]));let S;c?S=await a.request({method:"eth_getLogs",params:[{address:o,topics:O,blockHash:c}]}):S=await a.request({method:"eth_getLogs",params:[{address:o,topics:O,fromBlock:typeof u=="bigint"?(0,n.numberToHex)(u):u,toBlock:typeof d=="bigint"?(0,n.numberToHex)(d):d}]});const m=S.map(j=>(0,r.formatLog)(j));return p?(0,t.parseEventLogs)({abi:p,args:b,logs:m,strict:w}):m}return Is}var ym;function qf(){if(ym)return Ss;ym=1,Object.defineProperty(Ss,"__esModule",{value:!0}),Ss.getContractEvents=r;const e=er(),t=ge(),n=xf();async function r(i,a){const{abi:o,address:c,args:u,blockHash:d,eventName:l,fromBlock:f,toBlock:b,strict:T}=a,w=l?(0,e.getAbiItem)({abi:o,name:l}):void 0,p=w?void 0:o.filter(O=>O.type==="event");return(0,t.getAction)(i,n.getLogs,"getLogs")({address:c,args:u,blockHash:d,event:w,events:p,fromBlock:f,toBlock:b,strict:T})}return Ss}var xs={},qs={},gm;function nr(){if(gm)return qs;gm=1,Object.defineProperty(qs,"__esModule",{value:!0}),qs.decodeFunctionResult=i;const e=qe(),t=hr(),n=er(),r="/docs/contract/decodeFunctionResult";function i(a){const{abi:o,args:c,functionName:u,data:d}=a;let l=o[0];if(u){const b=(0,n.getAbiItem)({abi:o,args:c,name:u});if(!b)throw new e.AbiFunctionNotFoundError(u,{docsPath:r});l=b}if(l.type!=="function")throw new e.AbiFunctionNotFoundError(void 0,{docsPath:r});if(!l.outputs)throw new e.AbiFunctionOutputsNotFoundError(l.name,{docsPath:r});const f=(0,t.decodeAbiParameters)(l.outputs,d);if(f&&f.length>1)return f;if(f&&f.length===1)return f[0]}return qs}var po={},_o={},le={},_e={},pm;function rn(){if(pm)return _e;pm=1;Object.defineProperty(_e,"__esModule",{value:!0}),_e.notImplemented=_e.bitMask=void 0,_e.isBytes=n,_e.abytes=r,_e.abool=i,_e.numberToHexUnpadded=a,_e.hexToNumber=o,_e.bytesToHex=d,_e.hexToBytes=b,_e.bytesToNumberBE=T,_e.bytesToNumberLE=w,_e.numberToBytesBE=p,_e.numberToBytesLE=O,_e.numberToVarBytesBE=S,_e.ensureBytes=m,_e.concatBytes=j,_e.equalBytes=s,_e.utf8ToBytes=y,_e.inRange=E,_e.aInRange=B,_e.bitLen=_,_e.bitGet=v,_e.bitSet=C,_e.createHmacDrbg=F,_e.validateObject=h,_e.memoized=A;const e=BigInt(0),t=BigInt(1);function n(P){return P instanceof Uint8Array||ArrayBuffer.isView(P)&&P.constructor.name==="Uint8Array"}function r(P){if(!n(P))throw new Error("Uint8Array expected")}function i(P,I){if(typeof I!="boolean")throw new Error(P+" boolean expected, got "+I)}function a(P){const I=P.toString(16);return I.length&1?"0"+I:I}function o(P){if(typeof P!="string")throw new Error("hex string expected, got "+typeof P);return P===""?e:BigInt("0x"+P)}const c=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",u=Array.from({length:256},(P,I)=>I.toString(16).padStart(2,"0"));function d(P){if(r(P),c)return P.toHex();let I="";for(let x=0;x=l._0&&P<=l._9)return P-l._0;if(P>=l.A&&P<=l.F)return P-(l.A-10);if(P>=l.a&&P<=l.f)return P-(l.a-10)}function b(P){if(typeof P!="string")throw new Error("hex string expected, got "+typeof P);if(c)return Uint8Array.fromHex(P);const I=P.length,x=I/2;if(I%2)throw new Error("hex string expected, got unpadded hex of length "+I);const N=new Uint8Array(x);for(let U=0,L=0;Utypeof P=="bigint"&&e<=P;function E(P,I,x){return g(P)&&g(I)&&g(x)&&I<=P&&Pe;P>>=t,I+=1);return I}function v(P,I){return P>>BigInt(I)&t}function C(P,I,x){return P|(x?t:e)<(t<new Uint8Array(P),H=P=>Uint8Array.from(P);function F(P,I,x){if(typeof P!="number"||P<2)throw new Error("hashLen must be a number");if(typeof I!="number"||I<2)throw new Error("qByteLen must be a number");if(typeof x!="function")throw new Error("hmacFn must be a function");let N=R(P),U=R(P),L=0;const z=()=>{N.fill(1),U.fill(0),L=0},D=(...X)=>x(U,N,...X),J=(X=R(0))=>{U=D(H([0]),X),N=D(),X.length!==0&&(U=D(H([1]),X),N=D())},Z=()=>{if(L++>=1e3)throw new Error("drbg: tried 1000 values");let X=0;const oe=[];for(;X{z(),J(X);let W;for(;!(W=oe(Z()));)J();return z(),W}}const k={bigint:P=>typeof P=="bigint",function:P=>typeof P=="function",boolean:P=>typeof P=="boolean",string:P=>typeof P=="string",stringOrUint8Array:P=>typeof P=="string"||n(P),isSafeInteger:P=>Number.isSafeInteger(P),array:P=>Array.isArray(P),field:(P,I)=>I.Fp.isValid(P),hash:P=>typeof P=="function"&&Number.isSafeInteger(P.outputLen)};function h(P,I,x={}){const N=(U,L,z)=>{const D=k[L];if(typeof D!="function")throw new Error("invalid validator function");const J=P[U];if(!(z&&J===void 0)&&!D(J,P))throw new Error("param "+String(U)+" is invalid. Expected "+L+", got "+J)};for(const[U,L]of Object.entries(I))N(U,L,!1);for(const[U,L]of Object.entries(x))N(U,L,!0);return P}const M=()=>{throw new Error("not implemented")};_e.notImplemented=M;function A(P){const I=new WeakMap;return(x,...N)=>{const U=I.get(x);if(U!==void 0)return U;const L=P(x,...N);return I.set(x,L),L}}return _e}var he={},vo={},gn={},Eo={},_m;function Bv(){return _m||(_m=1,Object.defineProperty(Eo,"__esModule",{value:!0}),Eo.version=void 0,Eo.version="0.1.1"),Eo}var vm;function Rv(){if(vm)return gn;vm=1,Object.defineProperty(gn,"__esModule",{value:!0}),gn.getUrl=t,gn.getVersion=n,gn.prettyPrint=r;const e=Bv();function t(i){return i}function n(){return e.version}function r(i){if(!i)return"";const a=Object.entries(i).map(([c,u])=>u===void 0||u===!1?null:[c,u]).filter(Boolean),o=a.reduce((c,[u])=>Math.max(c,u.length),0);return a.map(([c,u])=>` ${`${c}:`.padEnd(o+1)} ${u}`).join(` +`)}return gn}var Em;function gt(){if(Em)return vo;Em=1,Object.defineProperty(vo,"__esModule",{value:!0}),vo.BaseError=void 0;const e=Rv();class t extends Error{static setStaticOptions(i){t.prototype.docsOrigin=i.docsOrigin,t.prototype.showVersion=i.showVersion,t.prototype.version=i.version}constructor(i,a={}){const o=(()=>{if(a.cause instanceof t){if(a.cause.details)return a.cause.details;if(a.cause.shortMessage)return a.cause.shortMessage}return a.cause&&"details"in a.cause&&typeof a.cause.details=="string"?a.cause.details:a.cause?.message?a.cause.message:a.details})(),c=a.cause instanceof t&&a.cause.docsPath||a.docsPath,u=a.docsOrigin??t.prototype.docsOrigin,d=`${u}${c??""}`,l=!!(a.version??t.prototype.showVersion),f=a.version??t.prototype.version,b=[i||"An error occurred.",...a.metaMessages?["",...a.metaMessages]:[],...o||c||l?["",o?`Details: ${o}`:void 0,c?`See: ${d}`:void 0,l?`Version: ${f}`:void 0]:[]].filter(T=>typeof T=="string").join(` +`);super(b,a.cause?{cause:a.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsOrigin",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"showVersion",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.cause=a.cause,this.details=o,this.docs=d,this.docsOrigin=u,this.docsPath=c,this.shortMessage=i,this.showVersion=l,this.version=f}walk(i){return n(this,i)}}vo.BaseError=t,Object.defineProperty(t,"defaultStaticOptions",{enumerable:!0,configurable:!0,writable:!0,value:{docsOrigin:"https://oxlib.sh",showVersion:!1,version:`ox@${(0,e.getVersion)()}`}}),t.setStaticOptions(t.defaultStaticOptions);function n(r,i){return i?.(r)?r:r&&typeof r=="object"&&"cause"in r&&r.cause?n(r.cause,i):i?null:r}return vo}var Kd={},wm;function Jp(){return wm||(wm=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.charCodeMap=void 0,e.assertSize=n,e.assertStartOffset=r,e.assertEndOffset=i,e.charCodeToBase16=a,e.pad=o,e.trim=c;const t=Mt();function n(u,d){if(t.size(u)>d)throw new t.SizeOverflowError({givenSize:t.size(u),maxSize:d})}function r(u,d){if(typeof d=="number"&&d>0&&d>t.size(u)-1)throw new t.SliceOffsetOutOfBoundsError({offset:d,position:"start",size:t.size(u)})}function i(u,d,l){if(typeof d=="number"&&typeof l=="number"&&t.size(u)!==l-d)throw new t.SliceOffsetOutOfBoundsError({offset:l,position:"end",size:t.size(u)})}e.charCodeMap={zero:48,nine:57,A:65,F:70,a:97,f:102};function a(u){if(u>=e.charCodeMap.zero&&u<=e.charCodeMap.nine)return u-e.charCodeMap.zero;if(u>=e.charCodeMap.A&&u<=e.charCodeMap.F)return u-(e.charCodeMap.A-10);if(u>=e.charCodeMap.a&&u<=e.charCodeMap.f)return u-(e.charCodeMap.a-10)}function o(u,d={}){const{dir:l,size:f=32}=d;if(f===0)return u;if(u.length>f)throw new t.SizeExceedsPaddingSizeError({size:u.length,targetSize:f,type:"Bytes"});const b=new Uint8Array(f);for(let T=0;Tc)throw new e.SizeOverflowError({givenSize:e.size(o),maxSize:c})}function n(o,c){if(typeof c=="number"&&c>0&&c>e.size(o)-1)throw new e.SliceOffsetOutOfBoundsError({offset:c,position:"start",size:e.size(o)})}function r(o,c,u){if(typeof c=="number"&&typeof u=="number"&&e.size(o)!==u-c)throw new e.SliceOffsetOutOfBoundsError({offset:u,position:"end",size:e.size(o)})}function i(o,c={}){const{dir:u,size:d=32}=c;if(d===0)return o;const l=o.replace("0x","");if(l.length>d*2)throw new e.SizeExceedsPaddingSizeError({size:Math.ceil(l.length/2),targetSize:d,type:"Hex"});return`0x${l[u==="right"?"padEnd":"padStart"](d*2,"0")}`}function a(o,c={}){const{dir:u="left"}=c;let d=o.replace("0x",""),l=0;for(let f=0;f{const c=o;return typeof c=="string"&&c.endsWith(e)?BigInt(c.slice(0,-e.length)):typeof i=="function"?i(a,c):c})}function n(r,i,a){return JSON.stringify(r,(o,c)=>typeof i=="function"?i(o,c):typeof c=="bigint"?c.toString()+e:c,a)}return wo}var Am;function Mt(){if(Am)return he;Am=1,Object.defineProperty(he,"__esModule",{value:!0}),he.SizeExceedsPaddingSizeError=he.SliceOffsetOutOfBoundsError=he.SizeOverflowError=he.InvalidBytesTypeError=he.InvalidBytesBooleanError=void 0,he.assert=u,he.concat=d,he.from=l,he.fromArray=f,he.fromBoolean=b,he.fromHex=T,he.fromNumber=w,he.fromString=p,he.isEqual=O,he.padLeft=S,he.padRight=m,he.random=j,he.size=s,he.slice=y,he.toBigInt=g,he.toBoolean=E,he.toHex=B,he.toNumber=_,he.toString=v,he.trimLeft=C,he.trimRight=q,he.validate=R;const e=rn(),t=gt(),n=We(),r=Jp(),i=Xp(),a=ed(),o=new TextDecoder,c=new TextEncoder;function u(A){if(!(A instanceof Uint8Array)){if(!A)throw new F(A);if(typeof A!="object")throw new F(A);if(!("BYTES_PER_ELEMENT"in A))throw new F(A);if(A.BYTES_PER_ELEMENT!==1||A.constructor.name!=="Uint8Array")throw new F(A)}}function d(...A){let P=0;for(const x of A)P+=x.length;const I=new Uint8Array(P);for(let x=0,N=0;x1||x[0]>1)throw new H(x);return!!x[0]}function B(A,P={}){return n.fromBytes(A,P)}function _(A,P={}){const{size:I}=P;typeof I<"u"&&r.assertSize(A,I);const x=n.fromBytes(A,P);return n.toNumber(x,P)}function v(A,P={}){const{size:I}=P;let x=A;return typeof I<"u"&&(r.assertSize(x,I),x=q(x)),o.decode(x)}function C(A){return r.trim(A,{dir:"left"})}function q(A){return r.trim(A,{dir:"right"})}function R(A){try{return u(A),!0}catch{return!1}}class H extends t.BaseError{constructor(P){super(`Bytes value \`${P}\` is not a valid boolean.`,{metaMessages:["The bytes array must contain a single byte of either a `0` or `1` value."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.InvalidBytesBooleanError"})}}he.InvalidBytesBooleanError=H;class F extends t.BaseError{constructor(P){super(`Value \`${typeof P=="object"?a.stringify(P):P}\` of type \`${typeof P}\` is an invalid Bytes value.`,{metaMessages:["Bytes values must be of type `Bytes`."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.InvalidBytesTypeError"})}}he.InvalidBytesTypeError=F;class k extends t.BaseError{constructor({givenSize:P,maxSize:I}){super(`Size cannot exceed \`${I}\` bytes. Given size: \`${P}\` bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SizeOverflowError"})}}he.SizeOverflowError=k;class h extends t.BaseError{constructor({offset:P,position:I,size:x}){super(`Slice ${I==="start"?"starting":"ending"} at offset \`${P}\` is out-of-bounds (size: \`${x}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SliceOffsetOutOfBoundsError"})}}he.SliceOffsetOutOfBoundsError=h;class M extends t.BaseError{constructor({size:P,targetSize:I,type:x}){super(`${x.charAt(0).toUpperCase()}${x.slice(1).toLowerCase()} size (\`${P}\`) exceeds padding size (\`${I}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SizeExceedsPaddingSizeError"})}}return he.SizeExceedsPaddingSizeError=M,he}var Tm;function We(){if(Tm)return le;Tm=1,Object.defineProperty(le,"__esModule",{value:!0}),le.SizeExceedsPaddingSizeError=le.SliceOffsetOutOfBoundsError=le.SizeOverflowError=le.InvalidLengthError=le.InvalidHexValueError=le.InvalidHexTypeError=le.InvalidHexBooleanError=le.IntegerOutOfRangeError=void 0,le.assert=u,le.concat=d,le.from=l,le.fromBoolean=f,le.fromBytes=b,le.fromNumber=T,le.fromString=w,le.isEqual=p,le.padLeft=O,le.padRight=S,le.random=m,le.slice=j,le.size=s,le.trimLeft=y,le.trimRight=g,le.toBigInt=E,le.toBoolean=B,le.toBytes=_,le.toNumber=v,le.toString=C,le.validate=q;const e=rn(),t=Mt(),n=gt(),r=Jp(),i=Xp(),a=ed(),o=new TextEncoder,c=Array.from({length:256},(I,x)=>x.toString(16).padStart(2,"0"));function u(I,x={}){const{strict:N=!1}=x;if(!I)throw new F(I);if(typeof I!="string")throw new F(I);if(N&&!/^0x[0-9a-fA-F]*$/.test(I))throw new k(I);if(!I.startsWith("0x"))throw new k(I)}function d(...I){return`0x${I.reduce((x,N)=>x+N.replace("0x",""),"")}`}function l(I){return I instanceof Uint8Array?b(I):Array.isArray(I)?b(new Uint8Array(I)):I}function f(I,x={}){const N=`0x${Number(I)}`;return typeof x.size=="number"?(i.assertSize(N,x.size),O(N,x.size)):N}function b(I,x={}){let N="";for(let L=0;Lz||L>1n;return U<=D?U:U-z-1n}function B(I,x={}){x.size&&i.assertSize(I,x.size);const N=y(I);if(N==="0x")return!1;if(N==="0x1")return!0;throw new H(I)}function _(I,x={}){return t.fromHex(I,x)}function v(I,x={}){const{signed:N,size:U}=x;return Number(!N&&!U?I:E(I,x))}function C(I,x={}){const{size:N}=x;let U=t.fromHex(I);return N&&(r.assertSize(U,N),U=t.trimRight(U)),new TextDecoder().decode(U)}function q(I,x={}){const{strict:N=!1}=x;try{return u(I,{strict:N}),!0}catch{return!1}}class R extends n.BaseError{constructor({max:x,min:N,signed:U,size:L,value:z}){super(`Number \`${z}\` is not in safe${L?` ${L*8}-bit`:""}${U?" signed":" unsigned"} integer range ${x?`(\`${N}\` to \`${x}\`)`:`(above \`${N}\`)`}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.IntegerOutOfRangeError"})}}le.IntegerOutOfRangeError=R;class H extends n.BaseError{constructor(x){super(`Hex value \`"${x}"\` is not a valid boolean.`,{metaMessages:['The hex value must be `"0x0"` (false) or `"0x1"` (true).']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexBooleanError"})}}le.InvalidHexBooleanError=H;class F extends n.BaseError{constructor(x){super(`Value \`${typeof x=="object"?a.stringify(x):x}\` of type \`${typeof x}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexTypeError"})}}le.InvalidHexTypeError=F;class k extends n.BaseError{constructor(x){super(`Value \`${x}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexValueError"})}}le.InvalidHexValueError=k;class h extends n.BaseError{constructor(x){super(`Hex value \`"${x}"\` is an odd length (${x.length-2} nibbles).`,{metaMessages:["It must be an even length."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidLengthError"})}}le.InvalidLengthError=h;class M extends n.BaseError{constructor({givenSize:x,maxSize:N}){super(`Size cannot exceed \`${N}\` bytes. Given size: \`${x}\` bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeOverflowError"})}}le.SizeOverflowError=M;class A extends n.BaseError{constructor({offset:x,position:N,size:U}){super(`Slice ${N==="start"?"starting":"ending"} at offset \`${x}\` is out-of-bounds (size: \`${U}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SliceOffsetOutOfBoundsError"})}}le.SliceOffsetOutOfBoundsError=A;class P extends n.BaseError{constructor({size:x,targetSize:N,type:U}){super(`${U.charAt(0).toUpperCase()}${U.slice(1).toLowerCase()} size (\`${x}\`) exceeds padding size (\`${N}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeExceedsPaddingSizeError"})}}return le.SizeExceedsPaddingSizeError=P,le}var jo={},Sm;function Ov(){if(Sm)return jo;Sm=1,Object.defineProperty(jo,"__esModule",{value:!0}),jo.fromRpc=t,jo.toRpc=n;const e=We();function t(r){return{...r,amount:BigInt(r.amount),index:Number(r.index),validatorIndex:Number(r.validatorIndex)}}function n(r){return{address:r.address,amount:e.fromNumber(r.amount),index:e.fromNumber(r.index),validatorIndex:e.fromNumber(r.validatorIndex)}}return jo}var Im;function Qp(){if(Im)return _o;Im=1,Object.defineProperty(_o,"__esModule",{value:!0}),_o.fromRpc=n,_o.toRpc=r;const e=We(),t=Ov();function n(i){return{...i.baseFeePerGas&&{baseFeePerGas:BigInt(i.baseFeePerGas)},...i.blobBaseFee&&{blobBaseFee:BigInt(i.blobBaseFee)},...i.feeRecipient&&{feeRecipient:i.feeRecipient},...i.gasLimit&&{gasLimit:BigInt(i.gasLimit)},...i.number&&{number:BigInt(i.number)},...i.prevRandao&&{prevRandao:BigInt(i.prevRandao)},...i.time&&{time:BigInt(i.time)},...i.withdrawals&&{withdrawals:i.withdrawals.map(t.fromRpc)}}}function r(i){return{...typeof i.baseFeePerGas=="bigint"&&{baseFeePerGas:e.fromNumber(i.baseFeePerGas)},...typeof i.blobBaseFee=="bigint"&&{blobBaseFee:e.fromNumber(i.blobBaseFee)},...typeof i.feeRecipient=="string"&&{feeRecipient:i.feeRecipient},...typeof i.gasLimit=="bigint"&&{gasLimit:e.fromNumber(i.gasLimit)},...typeof i.number=="bigint"&&{number:e.fromNumber(i.number)},...typeof i.prevRandao=="bigint"&&{prevRandao:e.fromNumber(i.prevRandao)},...typeof i.time=="bigint"&&{time:e.fromNumber(i.time)},...i.withdrawals&&{withdrawals:i.withdrawals.map(t.toRpc)}}}return _o}var ve={},Bm;function wr(){if(Bm)return ve;Bm=1,Object.defineProperty(ve,"__esModule",{value:!0}),ve.erc4626Abi=ve.erc721Abi=ve.erc1155Abi=ve.erc20Abi_bytes32=ve.erc20Abi=ve.erc6492SignatureValidatorAbi=ve.erc1271Abi=ve.addressResolverAbi=ve.textResolverAbi=ve.universalResolverReverseAbi=ve.universalResolverResolveAbi=ve.batchGatewayAbi=ve.multicall3Abi=void 0,ve.multicall3Abi=[{inputs:[{components:[{name:"target",type:"address"},{name:"allowFailure",type:"bool"},{name:"callData",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"aggregate3",outputs:[{components:[{name:"success",type:"bool"},{name:"returnData",type:"bytes"}],name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"}],ve.batchGatewayAbi=[{name:"query",type:"function",stateMutability:"view",inputs:[{type:"tuple[]",name:"queries",components:[{type:"address",name:"sender"},{type:"string[]",name:"urls"},{type:"bytes",name:"data"}]}],outputs:[{type:"bool[]",name:"failures"},{type:"bytes[]",name:"responses"}]},{name:"HttpError",type:"error",inputs:[{type:"uint16",name:"status"},{type:"string",name:"message"}]}];const e=[{inputs:[{name:"dns",type:"bytes"}],name:"DNSDecodingFailed",type:"error"},{inputs:[{name:"ens",type:"string"}],name:"DNSEncodingFailed",type:"error"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[{name:"status",type:"uint16"},{name:"message",type:"string"}],name:"HttpError",type:"error"},{inputs:[],name:"InvalidBatchGatewayResponse",type:"error"},{inputs:[{name:"errorData",type:"bytes"}],name:"ResolverError",type:"error"},{inputs:[{name:"name",type:"bytes"},{name:"resolver",type:"address"}],name:"ResolverNotContract",type:"error"},{inputs:[{name:"name",type:"bytes"}],name:"ResolverNotFound",type:"error"},{inputs:[{name:"primary",type:"string"},{name:"primaryAddress",type:"bytes"}],name:"ReverseAddressMismatch",type:"error"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"UnsupportedResolverProfile",type:"error"}];return ve.universalResolverResolveAbi=[...e,{name:"resolveWithGateways",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"},{name:"gateways",type:"string[]"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]}],ve.universalResolverReverseAbi=[...e,{name:"reverseWithGateways",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"},{type:"uint256",name:"coinType"},{type:"string[]",name:"gateways"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolver"},{type:"address",name:"reverseResolver"}]}],ve.textResolverAbi=[{name:"text",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"key",type:"string"}],outputs:[{name:"",type:"string"}]}],ve.addressResolverAbi=[{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"}],outputs:[{name:"",type:"address"}]},{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"coinType",type:"uint256"}],outputs:[{name:"",type:"bytes"}]}],ve.erc1271Abi=[{name:"isValidSignature",type:"function",stateMutability:"view",inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],outputs:[{name:"",type:"bytes4"}]}],ve.erc6492SignatureValidatorAbi=[{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function",name:"isValidSig"}],ve.erc20Abi=[{type:"event",name:"Approval",inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}]},{type:"event",name:"Transfer",inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{type:"uint8"}]},{type:"function",name:"name",stateMutability:"view",inputs:[],outputs:[{type:"string"}]},{type:"function",name:"symbol",stateMutability:"view",inputs:[],outputs:[{type:"string"}]},{type:"function",name:"totalSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]}],ve.erc20Abi_bytes32=[{type:"event",name:"Approval",inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}]},{type:"event",name:"Transfer",inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{type:"uint8"}]},{type:"function",name:"name",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{type:"function",name:"symbol",stateMutability:"view",inputs:[],outputs:[{type:"bytes32"}]},{type:"function",name:"totalSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]}],ve.erc1155Abi=[{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ERC1155InsufficientBalance",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC1155InvalidApprover",type:"error"},{inputs:[{internalType:"uint256",name:"idsLength",type:"uint256"},{internalType:"uint256",name:"valuesLength",type:"uint256"}],name:"ERC1155InvalidArrayLength",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"}],name:"ERC1155InvalidOperator",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC1155InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC1155InvalidSender",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"address",name:"owner",type:"address"}],name:"ERC1155MissingApprovalForAll",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256[]",name:"ids",type:"uint256[]"},{indexed:!1,internalType:"uint256[]",name:"values",type:"uint256[]"}],name:"TransferBatch",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"TransferSingle",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"value",type:"string"},{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"URI",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts",type:"address[]"},{internalType:"uint256[]",name:"ids",type:"uint256[]"}],name:"balanceOfBatch",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256[]",name:"values",type:"uint256[]"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeBatchTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"uri",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}],ve.erc721Abi=[{type:"event",name:"Approval",inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!0,name:"tokenId",type:"uint256"}]},{type:"event",name:"ApprovalForAll",inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"operator",type:"address"},{indexed:!1,name:"approved",type:"bool"}]},{type:"event",name:"Transfer",inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!0,name:"tokenId",type:"uint256"}]},{type:"function",name:"approve",stateMutability:"payable",inputs:[{name:"spender",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"getApproved",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{type:"address"}]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"operator",type:"address"}],outputs:[{type:"bool"}]},{type:"function",name:"name",stateMutability:"view",inputs:[],outputs:[{type:"string"}]},{type:"function",name:"ownerOf",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{name:"owner",type:"address"}]},{type:"function",name:"safeTransferFrom",stateMutability:"payable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]},{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"symbol",stateMutability:"view",inputs:[],outputs:[{type:"string"}]},{type:"function",name:"tokenByIndex",stateMutability:"view",inputs:[{name:"index",type:"uint256"}],outputs:[{type:"uint256"}]},{type:"function",name:"tokenByIndex",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"index",type:"uint256"}],outputs:[{name:"tokenId",type:"uint256"}]},{type:"function",name:"tokenURI",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{type:"string"}]},{type:"function",name:"totalSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]},{type:"function",name:"transferFrom",stateMutability:"payable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]}],ve.erc4626Abi=[{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"sender",type:"address"},{indexed:!0,name:"receiver",type:"address"},{indexed:!1,name:"assets",type:"uint256"},{indexed:!1,name:"shares",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"sender",type:"address"},{indexed:!0,name:"receiver",type:"address"},{indexed:!0,name:"owner",type:"address"},{indexed:!1,name:"assets",type:"uint256"},{indexed:!1,name:"shares",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],name:"allowance",outputs:[{type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],name:"approve",outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"asset",outputs:[{name:"assetTokenAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"address"}],name:"balanceOf",outputs:[{type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"shares",type:"uint256"}],name:"convertToAssets",outputs:[{name:"assets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"assets",type:"uint256"}],name:"convertToShares",outputs:[{name:"shares",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"assets",type:"uint256"},{name:"receiver",type:"address"}],name:"deposit",outputs:[{name:"shares",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"caller",type:"address"}],name:"maxDeposit",outputs:[{name:"maxAssets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"caller",type:"address"}],name:"maxMint",outputs:[{name:"maxShares",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"maxRedeem",outputs:[{name:"maxShares",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"maxWithdraw",outputs:[{name:"maxAssets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"shares",type:"uint256"},{name:"receiver",type:"address"}],name:"mint",outputs:[{name:"assets",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"assets",type:"uint256"}],name:"previewDeposit",outputs:[{name:"shares",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"shares",type:"uint256"}],name:"previewMint",outputs:[{name:"assets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"shares",type:"uint256"}],name:"previewRedeem",outputs:[{name:"assets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"assets",type:"uint256"}],name:"previewWithdraw",outputs:[{name:"shares",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"shares",type:"uint256"},{name:"receiver",type:"address"},{name:"owner",type:"address"}],name:"redeem",outputs:[{name:"assets",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalAssets",outputs:[{name:"totalManagedAssets",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transfer",outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"assets",type:"uint256"},{name:"receiver",type:"address"},{name:"owner",type:"address"}],name:"withdraw",outputs:[{name:"shares",type:"uint256"}],stateMutability:"nonpayable",type:"function"}],ve}var Po={},Rm;function Cv(){return Rm||(Rm=1,Object.defineProperty(Po,"__esModule",{value:!0}),Po.aggregate3Signature=void 0,Po.aggregate3Signature="0x82ad56cb"),Po}var jt={},Om;function ii(){return Om||(Om=1,Object.defineProperty(jt,"__esModule",{value:!0}),jt.multicall3Bytecode=jt.erc6492SignatureValidatorByteCode=jt.deploylessCallViaFactoryBytecode=jt.deploylessCallViaBytecodeBytecode=void 0,jt.deploylessCallViaBytecodeBytecode="0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe",jt.deploylessCallViaFactoryBytecode="0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe",jt.erc6492SignatureValidatorByteCode="0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572",jt.multicall3Bytecode="0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033"),jt}var bt={},Cm;function si(){if(Cm)return bt;Cm=1,Object.defineProperty(bt,"__esModule",{value:!0}),bt.InvalidChainIdError=bt.ClientChainNotConfiguredError=bt.ChainNotFoundError=bt.ChainMismatchError=bt.ChainDoesNotSupportContract=void 0;const e=fe();class t extends e.BaseError{constructor({blockNumber:c,chain:u,contract:d}){super(`Chain "${u.name}" does not support contract "${d.name}".`,{metaMessages:["This could be due to any of the following:",...c&&d.blockCreated&&d.blockCreated>c?[`- The contract "${d.name}" was not deployed until block ${d.blockCreated} (current block ${c}).`]:[`- The chain does not have the contract "${d.name}" configured.`]],name:"ChainDoesNotSupportContract"})}}bt.ChainDoesNotSupportContract=t;class n extends e.BaseError{constructor({chain:c,currentChainId:u}){super(`The current chain of the wallet (id: ${u}) does not match the target chain for the transaction (id: ${c.id} – ${c.name}).`,{metaMessages:[`Current Chain ID: ${u}`,`Expected Chain ID: ${c.id} – ${c.name}`],name:"ChainMismatchError"})}}bt.ChainMismatchError=n;class r extends e.BaseError{constructor(){super(["No chain was provided to the request.","Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(` +`),{name:"ChainNotFoundError"})}}bt.ChainNotFoundError=r;class i extends e.BaseError{constructor(){super("No chain was provided to the Client.",{name:"ClientChainNotConfiguredError"})}}bt.ClientChainNotConfiguredError=i;class a extends e.BaseError{constructor({chainId:c}){super(typeof c=="number"?`Chain ID "${c}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}return bt.InvalidChainIdError=a,bt}var Hs={},xm;function ai(){if(xm)return Hs;xm=1,Object.defineProperty(Hs,"__esModule",{value:!0}),Hs.encodeDeployData=i;const e=qe(),t=De(),n=It(),r="/docs/contract/encodeDeployData";function i(a){const{abi:o,args:c,bytecode:u}=a;if(!c||c.length===0)return u;const d=o.find(f=>"type"in f&&f.type==="constructor");if(!d)throw new e.AbiConstructorNotFoundError({docsPath:r});if(!("inputs"in d))throw new e.AbiConstructorParamsNotFoundError({docsPath:r});if(!d.inputs||d.inputs.length===0)throw new e.AbiConstructorParamsNotFoundError({docsPath:r});const l=(0,n.encodeAbiParameters)(d.inputs,c);return(0,t.concatHex)([u,l])}return Hs}var Ms={},qm;function jr(){if(qm)return Ms;qm=1,Object.defineProperty(Ms,"__esModule",{value:!0}),Ms.getChainContractAddress=t;const e=si();function t({blockNumber:n,chain:r,contract:i}){const a=r?.contracts?.[i];if(!a)throw new e.ChainDoesNotSupportContract({chain:r,contract:{name:i}});if(n&&a.blockCreated&&a.blockCreated>n)throw new e.ChainDoesNotSupportContract({blockNumber:n,chain:r,contract:{name:i,blockCreated:a.blockCreated}});return a.address}return Ms}var ks={},Hm;function Hf(){if(Hm)return ks;Hm=1,Object.defineProperty(ks,"__esModule",{value:!0}),ks.getCallError=r;const e=yr(),t=tr(),n=Qo();function r(i,{docsPath:a,...o}){const c=(()=>{const u=(0,n.getNodeError)(i,o);return u instanceof t.UnknownNodeError?i:u})();return new e.CallExecutionError(c,{docsPath:a,...o})}return ks}var Ns={},Fs={},Mm;function Mf(){if(Mm)return Fs;Mm=1,Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.withResolvers=e;function e(){let t=()=>{},n=()=>{};return{promise:new Promise((i,a)=>{t=i,n=a}),resolve:t,reject:n}}return Fs}var km;function kf(){if(km)return Ns;km=1,Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.createBatchScheduler=n;const e=Mf(),t=new Map;function n({fn:r,id:i,shouldSplitBatch:a,wait:o=0,sort:c}){const u=async()=>{const T=f();d();const w=T.map(({args:p})=>p);w.length!==0&&r(w).then(p=>{c&&Array.isArray(p)&&p.sort(c);for(let O=0;O{for(let O=0;Ot.delete(i),l=()=>f().map(({args:T})=>T),f=()=>t.get(i)||[],b=T=>t.set(i,[...f(),T]);return{flush:d,async schedule(T){const{promise:w,resolve:p,reject:O}=(0,e.withResolvers)();return a?.([...l(),T])&&u(),f().length>0?(b({args:T,resolve:p,reject:O}),w):(b({args:T,resolve:p,reject:O}),setTimeout(u,o),w)}}}return Ns}var Zd={},Jt={},Nm;function xv(){if(Nm)return Jt;Nm=1,Object.defineProperty(Jt,"__esModule",{value:!0}),Jt.OffchainLookupSenderMismatchError=Jt.OffchainLookupResponseMalformedError=Jt.OffchainLookupError=void 0;const e=Ve(),t=fe(),n=wf();class r extends t.BaseError{constructor({callbackSelector:c,cause:u,data:d,extraData:l,sender:f,urls:b}){super(u.shortMessage||"An error occurred while fetching for an offchain result.",{cause:u,metaMessages:[...u.metaMessages||[],u.metaMessages?.length?"":[],"Offchain Gateway Call:",b&&[" Gateway URL(s):",...b.map(T=>` ${(0,n.getUrl)(T)}`)],` Sender: ${f}`,` Data: ${d}`,` Callback selector: ${c}`,` Extra data: ${l}`].flat(),name:"OffchainLookupError"})}}Jt.OffchainLookupError=r;class i extends t.BaseError{constructor({result:c,url:u}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${(0,n.getUrl)(u)}`,`Response: ${(0,e.stringify)(c)}`],name:"OffchainLookupResponseMalformedError"})}}Jt.OffchainLookupResponseMalformedError=i;class a extends t.BaseError{constructor({sender:c,to:u}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${u}`,`OffchainLookup sender address: ${c}`],name:"OffchainLookupSenderMismatchError"})}}return Jt.OffchainLookupSenderMismatchError=a,Jt}var Yd={},Ls={},Fm;function Nf(){if(Fm)return Ls;Fm=1,Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.decodeFunctionData=a;const e=qe(),t=vt(),n=Qr(),r=hr(),i=Qt();function a(o){const{abi:c,data:u}=o,d=(0,t.slice)(u,0,4),l=c.find(f=>f.type==="function"&&d===(0,n.toFunctionSelector)((0,i.formatAbiItem)(f)));if(!l)throw new e.AbiFunctionSignatureNotFoundError(d,{docsPath:"/docs/contract/decodeFunctionData"});return{functionName:l.name,args:"inputs"in l&&l.inputs&&l.inputs.length>0?(0,r.decodeAbiParameters)(l.inputs,(0,t.slice)(u,4)):void 0}}return Ls}var Us={},Lm;function Ff(){if(Lm)return Us;Lm=1,Object.defineProperty(Us,"__esModule",{value:!0}),Us.encodeErrorResult=c;const e=qe(),t=De(),n=Qr(),r=It(),i=Qt(),a=er(),o="/docs/contract/encodeErrorResult";function c(u){const{abi:d,errorName:l,args:f}=u;let b=d[0];if(l){const O=(0,a.getAbiItem)({abi:d,args:f,name:l});if(!O)throw new e.AbiErrorNotFoundError(l,{docsPath:o});b=O}if(b.type!=="error")throw new e.AbiErrorNotFoundError(void 0,{docsPath:o});const T=(0,i.formatAbiItem)(b),w=(0,n.toFunctionSelector)(T);let p="0x";if(f&&f.length>0){if(!b.inputs)throw new e.AbiErrorInputsNotFoundError(b.name,{docsPath:o});p=(0,r.encodeAbiParameters)(b.inputs,f)}return(0,t.concatHex)([w,p])}return Us}var zs={},Um;function Lf(){if(Um)return zs;Um=1,Object.defineProperty(zs,"__esModule",{value:!0}),zs.encodeFunctionResult=i;const e=qe(),t=It(),n=er(),r="/docs/contract/encodeFunctionResult";function i(a){const{abi:o,functionName:c,result:u}=a;let d=o[0];if(c){const f=(0,n.getAbiItem)({abi:o,name:c});if(!f)throw new e.AbiFunctionNotFoundError(c,{docsPath:r});d=f}if(d.type!=="function")throw new e.AbiFunctionNotFoundError(void 0,{docsPath:r});if(!d.outputs)throw new e.AbiFunctionOutputsNotFoundError(d.name,{docsPath:r});const l=(()=>{if(d.outputs.length===0)return[];if(d.outputs.length===1)return[u];if(Array.isArray(u))return u;throw new e.InvalidArrayError(u)})();return(0,t.encodeAbiParameters)(d.outputs,l)}return zs}var zm;function td(){return zm||(zm=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.localBatchGatewayUrl=void 0,e.localBatchGatewayRequest=o;const t=wr(),n=_f(),r=Nf(),i=Ff(),a=Lf();e.localBatchGatewayUrl="x-batch-gateway:true";async function o(u){const{data:d,ccipRequest:l}=u,{args:[f]}=(0,r.decodeFunctionData)({abi:t.batchGatewayAbi,data:d}),b=[],T=[];return await Promise.all(f.map(async(w,p)=>{try{T[p]=w.urls.includes(e.localBatchGatewayUrl)?await o({data:w.data,ccipRequest:l}):await l(w),b[p]=!1}catch(O){b[p]=!0,T[p]=c(O)}})),(0,a.encodeFunctionResult)({abi:t.batchGatewayAbi,functionName:"query",result:[b,T]})}function c(u){return u.name==="HttpRequestError"&&u.status?(0,i.encodeErrorResult)({abi:t.batchGatewayAbi,errorName:"HttpError",args:[u.status,u.shortMessage]}):(0,i.encodeErrorResult)({abi:[n.solidityError],errorName:"Error",args:["shortMessage"in u?u.shortMessage:u.message]})}})(Yd)),Yd}var Dm;function Uf(){return Dm||(Dm=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.offchainLookupAbiItem=e.offchainLookupSignature=void 0,e.offchainLookup=f,e.ccipRequest=b;const t=ci(),n=xv(),r=Bt(),i=Vu(),a=It(),o=Ct(),c=De(),u=nt(),d=td(),l=Ve();e.offchainLookupSignature="0x556f1830",e.offchainLookupAbiItem={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function f(T,{blockNumber:w,blockTag:p,data:O,to:S}){const{args:m}=(0,i.decodeErrorResult)({data:O,abi:[e.offchainLookupAbiItem]}),[j,s,y,g,E]=m,{ccipRead:B}=T,_=B&&typeof B?.request=="function"?B.request:b;try{if(!(0,o.isAddressEqual)(S,j))throw new n.OffchainLookupSenderMismatchError({sender:j,to:S});const v=s.includes(d.localBatchGatewayUrl)?await(0,d.localBatchGatewayRequest)({data:y,ccipRequest:_}):await _({data:y,sender:j,urls:s}),{data:C}=await(0,t.call)(T,{blockNumber:w,blockTag:p,data:(0,c.concat)([g,(0,a.encodeAbiParameters)([{type:"bytes"},{type:"bytes"}],[v,E])]),to:S});return C}catch(v){throw new n.OffchainLookupError({callbackSelector:g,cause:v,data:O,extraData:E,sender:j,urls:s})}}async function b({data:T,sender:w,urls:p}){let O=new Error("An unknown error occurred.");for(let S=0;S{const Te=[Ae,ee];return be&&Q?[...Te,be,Q]:be?[...Te,be]:Q?[...Te,{},Q]:Te})(),Me=await v.request({method:"eth_call",params:Xe});return Me==="0x"?{data:void 0}:{data:Me}}catch(se){const ee=_(se),{offchainLookup:Q,offchainLookupSignature:be}=await Promise.resolve().then(()=>Uf());if(v.ccipRead!==!1&&ee?.slice(0,10)===be&&Y)return{data:await Q(v,{data:ee,to:Y})};throw te&&ee?.slice(0,10)==="0x101bb98d"?new u.CounterfactualDeploymentFailedError({factory:x}):(0,w.getCallError)(se,{...C,account:K,chain:v.chain})}}function y({request:v}){const{data:C,to:q,...R}=v;return!(!C||C.startsWith(i.aggregate3Signature)||!q||Object.values(R).filter(H=>typeof H<"u").length>0)}async function g(v,C){const{batchSize:q=1024,deployless:R=!1,wait:H=0}=typeof v.batch?.multicall=="object"?v.batch.multicall:{},{blockNumber:F,blockTag:k=v.experimental_blockTag??"latest",data:h,to:M}=C,A=(()=>{if(R)return null;if(C.multicallAddress)return C.multicallAddress;if(v.chain)return(0,b.getChainContractAddress)({blockNumber:F,chain:v.chain,contract:"multicall3"});throw new c.ClientChainNotConfiguredError})(),I=(typeof F=="bigint"?(0,T.numberToHex)(F):void 0)||k,{schedule:x}=(0,S.createBatchScheduler)({id:`${v.uid}.${I}`,wait:H,shouldSplitBatch(L){return L.reduce((D,{data:J})=>D+(J.length-2),0)>q*2},fn:async L=>{const z=L.map(Z=>({allowFailure:!0,callData:Z.data,target:Z.to})),D=(0,f.encodeFunctionData)({abi:r.multicall3Abi,args:[z],functionName:"aggregate3"}),J=await v.request({method:"eth_call",params:[{...A===null?{data:E({code:a.multicall3Bytecode,data:D})}:{to:A,data:D}},I]});return(0,d.decodeFunctionResult)({abi:r.multicall3Abi,args:[z],functionName:"aggregate3",data:J||"0x"})}}),[{returnData:N,success:U}]=await x({data:h,to:M});if(!U)throw new u.RawContractError({data:N});return N==="0x"?{data:void 0}:{data:N}}function E(v){const{code:C,data:q}=v;return(0,l.encodeDeployData)({abi:(0,e.parseAbi)(["constructor(bytes, bytes)"]),bytecode:a.deploylessCallViaBytecodeBytecode,args:[C,q]})}function B(v){const{data:C,factory:q,factoryData:R,to:H}=v;return(0,l.encodeDeployData)({abi:(0,e.parseAbi)(["constructor(address, bytes, address, bytes)"]),bytecode:a.deploylessCallViaFactoryBytecode,args:[H,C,q,R]})}function _(v){if(!(v instanceof o.BaseError))return;const C=v.walk();return typeof C?.data=="object"?C.data?.data:C.data}return po}var Vm;function kt(){if(Vm)return xs;Vm=1,Object.defineProperty(xs,"__esModule",{value:!0}),xs.readContract=a;const e=nr(),t=ut(),n=pr(),r=ge(),i=ci();async function a(o,c){const{abi:u,address:d,args:l,functionName:f,...b}=c,T=(0,t.encodeFunctionData)({abi:u,args:l,functionName:f});try{const{data:w}=await(0,r.getAction)(o,i.call,"call")({...b,data:T,to:d});return(0,e.decodeFunctionResult)({abi:u,args:l,functionName:f,data:w||"0x"})}catch(w){throw(0,n.getContractError)(w,{abi:u,address:d,args:l,docsPath:"/docs/contract/readContract",functionName:f})}}return xs}var Ds={},Wm;function $p(){if(Wm)return Ds;Wm=1,Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.simulateContract=o;const e=He(),t=nr(),n=ut(),r=pr(),i=ge(),a=ci();async function o(c,u){const{abi:d,address:l,args:f,dataSuffix:b,functionName:T,...w}=u,p=w.account?(0,e.parseAccount)(w.account):c.account,O=(0,n.encodeFunctionData)({abi:d,args:f,functionName:T});try{const{data:S}=await(0,i.getAction)(c,a.call,"call")({batch:!1,data:`${O}${b?b.replace("0x",""):""}`,to:l,...w,account:p}),m=(0,t.decodeFunctionResult)({abi:d,args:f,functionName:T,data:S||"0x"}),j=d.filter(s=>"name"in s&&s.name===u.functionName);return{result:m,request:{abi:j,address:l,args:f,dataSuffix:b,functionName:T,...w,account:p}}}catch(S){throw(0,r.getContractError)(S,{abi:d,address:l,args:f,docsPath:"/docs/contract/simulateContract",functionName:T,sender:p?.address})}}return Ds}var Gs={},Jd={},Km;function nn(){return Km||(Km=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.cleanupCache=e.listenersCache=void 0,e.observe=n,e.listenersCache=new Map,e.cleanupCache=new Map;let t=0;function n(r,i,a){const o=++t,c=()=>e.listenersCache.get(r)||[],u=()=>{const T=c();e.listenersCache.set(r,T.filter(w=>w.id!==o))},d=()=>{const T=c();if(!T.some(p=>p.id===o))return;const w=e.cleanupCache.get(r);if(T.length===1&&w){const p=w();p instanceof Promise&&p.catch(()=>{})}u()},l=c();if(e.listenersCache.set(r,[...l,{id:o,fns:i}]),l&&l.length>0)return d;const f={};for(const T in i)f[T]=((...w)=>{const p=c();if(p.length!==0)for(const O of p)O.fns[T]?.(...w)});const b=a(f);return typeof b=="function"&&e.cleanupCache.set(r,b),d}})(Jd)),Jd}var Vs={},Ws={},Zm;function zf(){if(Zm)return Ws;Zm=1,Object.defineProperty(Ws,"__esModule",{value:!0}),Ws.wait=e;async function e(t){return new Promise(n=>setTimeout(n,t))}return Ws}var Ym;function Cn(){if(Ym)return Vs;Ym=1,Object.defineProperty(Vs,"__esModule",{value:!0}),Vs.poll=t;const e=zf();function t(n,{emitOnBegin:r,initialWaitTime:i,interval:a}){let o=!0;const c=()=>o=!1;return(async()=>{let d;r&&(d=await n({unpoll:c}));const l=await i?.(d)??a;await(0,e.wait)(l);const f=async()=>{o&&(await n({unpoll:c}),await(0,e.wait)(a),f())};f()})(),c}return Vs}var Ao={},Xd={},Jm;function e_(){return Jm||(Jm=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.responseCache=e.promiseCache=void 0,e.getCache=t,e.withCache=n,e.promiseCache=new Map,e.responseCache=new Map;function t(r){const i=(c,u)=>({clear:()=>u.delete(c),get:()=>u.get(c),set:d=>u.set(c,d)}),a=i(r,e.promiseCache),o=i(r,e.responseCache);return{clear:()=>{a.clear(),o.clear()},promise:a,response:o}}async function n(r,{cacheKey:i,cacheTime:a=Number.POSITIVE_INFINITY}){const o=t(i),c=o.response.get();if(c&&a>0&&Date.now()-c.created.getTime()`blockNumber.${i}`;function n(i){return(0,e.getCache)(t(i))}async function r(i,{cacheTime:a=i.cacheTime}={}){const o=await(0,e.withCache)(()=>i.request({method:"eth_blockNumber"}),{cacheKey:t(i.uid),cacheTime:a});return BigInt(o)}return Ao}var Ks={},Qm;function rd(){if(Qm)return Ks;Qm=1,Object.defineProperty(Ks,"__esModule",{value:!0}),Ks.getFilterChanges=n;const e=oi(),t=rr();async function n(r,{filter:i}){const a="strict"in i&&i.strict,o=await i.request({method:"eth_getFilterChanges",params:[i.id]});if(typeof o[0]=="string")return o;const c=o.map(u=>(0,t.formatLog)(u));return!("abi"in i)||!i.abi?c:(0,e.parseEventLogs)({abi:i.abi,logs:c,strict:a})}return Ks}var Zs={},$m;function nd(){if($m)return Zs;$m=1,Object.defineProperty(Zs,"__esModule",{value:!0}),Zs.uninstallFilter=e;async function e(t,{filter:n}){return n.request({method:"eth_uninstallFilter",params:[n.id]})}return Zs}var eh;function t_(){if(eh)return Gs;eh=1,Object.defineProperty(Gs,"__esModule",{value:!0}),Gs.watchContractEvent=w;const e=qe(),t=gr(),n=ni(),r=$r(),i=rr(),a=ge(),o=nn(),c=Cn(),u=Ve(),d=pf(),l=ui(),f=qf(),b=rd(),T=nd();function w(p,O){const{abi:S,address:m,args:j,batch:s=!0,eventName:y,fromBlock:g,onError:E,onLogs:B,poll:_,pollingInterval:v=p.pollingInterval,strict:C}=O;return(typeof _<"u"?_:typeof g=="bigint"?!0:!(p.transport.type==="webSocket"||p.transport.type==="ipc"||p.transport.type==="fallback"&&(p.transport.transports[0].config.type==="webSocket"||p.transport.transports[0].config.type==="ipc")))?(()=>{const F=C??!1,k=(0,u.stringify)(["watchContractEvent",m,j,s,p.uid,y,v,F,g]);return(0,o.observe)(k,{onLogs:B,onError:E},h=>{let M;g!==void 0&&(M=g-1n);let A,P=!1;const I=(0,c.poll)(async()=>{if(!P){try{A=await(0,a.getAction)(p,d.createContractEventFilter,"createContractEventFilter")({abi:S,address:m,args:j,eventName:y,strict:F,fromBlock:g})}catch{}P=!0;return}try{let x;if(A)x=await(0,a.getAction)(p,b.getFilterChanges,"getFilterChanges")({filter:A});else{const N=await(0,a.getAction)(p,l.getBlockNumber,"getBlockNumber")({});M&&M{A&&await(0,a.getAction)(p,T.uninstallFilter,"uninstallFilter")({filter:A}),I()}})})():(()=>{const F=C??!1,k=(0,u.stringify)(["watchContractEvent",m,j,s,p.uid,y,v,F]);let h=!0,M=()=>h=!1;return(0,o.observe)(k,{onLogs:B,onError:E},A=>((async()=>{try{const P=(()=>{if(p.transport.type==="fallback"){const N=p.transport.transports.find(U=>U.config.type==="webSocket"||U.config.type==="ipc");return N?N.value:p.transport}return p.transport})(),I=y?(0,r.encodeEventTopics)({abi:S,eventName:y,args:j}):[],{unsubscribe:x}=await P.subscribe({params:["logs",{address:m,topics:I}],onData(N){if(!h)return;const U=N.result;try{const{eventName:L,args:z}=(0,n.decodeEventLog)({abi:S,data:U.data,topics:U.topics,strict:C}),D=(0,i.formatLog)(U,{args:z,eventName:L});A.onLogs([D])}catch(L){let z,D;if(L instanceof e.DecodeLogDataMismatch||L instanceof e.DecodeLogTopicsMismatch){if(C)return;z=L.abiItem.name,D=L.abiItem.inputs?.some(Z=>!("name"in Z&&Z.name))}const J=(0,i.formatLog)(U,{args:D?[]:{},eventName:z});A.onLogs([J])}},onError(N){A.onError?.(N)}});M=x,h||M()}catch(P){E?.(P)}})(),()=>M()))})()}return Gs}var To={},Mr={},th;function Pr(){if(th)return Mr;th=1,Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.AccountTypeNotSupportedError=Mr.AccountNotFoundError=void 0;const e=fe();class t extends e.BaseError{constructor({docsPath:i}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(` +`),{docsPath:i,docsSlug:"account",name:"AccountNotFoundError"})}}Mr.AccountNotFoundError=t;class n extends e.BaseError{constructor({docsPath:i,metaMessages:a,type:o}){super(`Account type "${o}" is not supported.`,{docsPath:i,metaMessages:a,name:"AccountTypeNotSupportedError"})}}return Mr.AccountTypeNotSupportedError=n,Mr}var Ys={},Js={},rh;function di(){if(rh)return Js;rh=1,Object.defineProperty(Js,"__esModule",{value:!0}),Js.assertCurrentChain=t;const e=si();function t({chain:n,currentChainId:r}){if(!n)throw new e.ChainNotFoundError;if(r!==n.id)throw new e.ChainMismatchError({chain:n,currentChainId:r})}return Js}var Xs={},nh;function Df(){if(nh)return Xs;nh=1,Object.defineProperty(Xs,"__esModule",{value:!0}),Xs.sendRawTransaction=e;async function e(t,{serializedTransaction:n}){return t.request({method:"eth_sendRawTransaction",params:[n]},{retryCount:0})}return Xs}var oh;function od(){if(oh)return Ys;oh=1,Object.defineProperty(Ys,"__esModule",{value:!0}),Ys.sendTransaction=p;const e=He(),t=Pr(),n=fe(),r=Xo(),i=di(),a=ti(),o=vr(),c=Rt(),u=ge(),d=Xr(),l=Ot(),f=Er(),b=ri(),T=Df(),w=new d.LruMap(128);async function p(O,S){const{account:m=O.account,chain:j=O.chain,accessList:s,authorizationList:y,blobs:g,data:E,gas:B,gasPrice:_,maxFeePerBlobGas:v,maxFeePerGas:C,maxPriorityFeePerGas:q,nonce:R,type:H,value:F,...k}=S;if(typeof m>"u")throw new t.AccountNotFoundError({docsPath:"/docs/actions/wallet/sendTransaction"});const h=m?(0,e.parseAccount)(m):null;try{(0,l.assertRequest)(S);const M=await(async()=>{if(S.to)return S.to;if(S.to!==null&&y&&y.length>0)return await(0,r.recoverAuthorizationAddress)({authorization:y[0]}).catch(()=>{throw new n.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if(h?.type==="json-rpc"||h===null){let A;j!==null&&(A=await(0,u.getAction)(O,f.getChainId,"getChainId")({}),(0,i.assertCurrentChain)({currentChainId:A,chain:j}));const P=O.chain?.formatters?.transactionRequest?.format,x=(P||c.formatTransactionRequest)({...(0,o.extract)(k,{format:P}),accessList:s,account:h,authorizationList:y,blobs:g,chainId:A,data:E,gas:B,gasPrice:_,maxFeePerBlobGas:v,maxFeePerGas:C,maxPriorityFeePerGas:q,nonce:R,to:M,type:H,value:F},"sendTransaction"),N=w.get(O.uid),U=N?"wallet_sendTransaction":"eth_sendTransaction";try{return await O.request({method:U,params:[x]},{retryCount:0})}catch(L){if(N===!1)throw L;const z=L;if(z.name==="InvalidInputRpcError"||z.name==="InvalidParamsRpcError"||z.name==="MethodNotFoundRpcError"||z.name==="MethodNotSupportedRpcError")return await O.request({method:"wallet_sendTransaction",params:[x]},{retryCount:0}).then(D=>(w.set(O.uid,!0),D)).catch(D=>{const J=D;throw J.name==="MethodNotFoundRpcError"||J.name==="MethodNotSupportedRpcError"?(w.set(O.uid,!1),z):J});throw z}}if(h?.type==="local"){const A=await(0,u.getAction)(O,b.prepareTransactionRequest,"prepareTransactionRequest")({account:h,accessList:s,authorizationList:y,blobs:g,chain:j,data:E,gas:B,gasPrice:_,maxFeePerBlobGas:v,maxFeePerGas:C,maxPriorityFeePerGas:q,nonce:R,nonceManager:h.nonceManager,parameters:[...b.defaultParameters,"sidecars"],type:H,value:F,...k,to:M}),P=j?.serializers?.transaction,I=await h.signTransaction(A,{serializer:P});return await(0,u.getAction)(O,T.sendRawTransaction,"sendRawTransaction")({serializedTransaction:I})}throw h?.type==="smart"?new t.AccountTypeNotSupportedError({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new t.AccountTypeNotSupportedError({docsPath:"/docs/actions/wallet/sendTransaction",type:h?.type})}catch(M){throw M instanceof t.AccountTypeNotSupportedError?M:(0,a.getTransactionError)(M,{...S,account:h,chain:S.chain||void 0})}}return Ys}var ih;function Gf(){if(ih)return To;ih=1,Object.defineProperty(To,"__esModule",{value:!0}),To.writeContract=o;const e=He(),t=Pr(),n=ut(),r=pr(),i=ge(),a=od();async function o(c,u){return o.internal(c,a.sendTransaction,"sendTransaction",u)}return(function(c){async function u(d,l,f,b){const{abi:T,account:w=d.account,address:p,args:O,dataSuffix:S,functionName:m,...j}=b;if(typeof w>"u")throw new t.AccountNotFoundError({docsPath:"/docs/contract/writeContract"});const s=w?(0,e.parseAccount)(w):null,y=(0,n.encodeFunctionData)({abi:T,args:O,functionName:m});try{return await(0,i.getAction)(d,l,f)({data:`${y}${S?S.replace("0x",""):""}`,to:p,account:s,...j})}catch(g){throw(0,r.getContractError)(g,{abi:T,address:p,args:O,docsPath:"/docs/contract/writeContract",functionName:m,sender:s?.address})}}c.internal=u})(o||(To.writeContract=o={})),To}var sh;function qv(){if(sh)return cn;sh=1,Object.defineProperty(cn,"__esModule",{value:!0}),cn.getContract=u,cn.getFunctionParameters=d,cn.getEventParameters=l;const e=ge(),t=pf(),n=Yp(),r=qf(),i=kt(),a=$p(),o=t_(),c=Gf();function u({abi:f,address:b,client:T}){const w=T,[p,O]=w?"public"in w&&"wallet"in w?[w.public,w.wallet]:"public"in w?[w.public,void 0]:"wallet"in w?[void 0,w.wallet]:[w,w]:[void 0,void 0],S=p!=null,m=O!=null,j={};let s=!1,y=!1,g=!1;for(const E of f)if(E.type==="function"?E.stateMutability==="view"||E.stateMutability==="pure"?s=!0:y=!0:E.type==="event"&&(g=!0),s&&y&&g)break;return S&&(s&&(j.read=new Proxy({},{get(E,B){return(..._)=>{const{args:v,options:C}=d(_);return(0,e.getAction)(p,i.readContract,"readContract")({abi:f,address:b,functionName:B,args:v,...C})}}})),y&&(j.simulate=new Proxy({},{get(E,B){return(..._)=>{const{args:v,options:C}=d(_);return(0,e.getAction)(p,a.simulateContract,"simulateContract")({abi:f,address:b,functionName:B,args:v,...C})}}})),g&&(j.createEventFilter=new Proxy({},{get(E,B){return(..._)=>{const v=f.find(R=>R.type==="event"&&R.name===B),{args:C,options:q}=l(_,v);return(0,e.getAction)(p,t.createContractEventFilter,"createContractEventFilter")({abi:f,address:b,eventName:B,args:C,...q})}}}),j.getEvents=new Proxy({},{get(E,B){return(..._)=>{const v=f.find(R=>R.type==="event"&&R.name===B),{args:C,options:q}=l(_,v);return(0,e.getAction)(p,r.getContractEvents,"getContractEvents")({abi:f,address:b,eventName:B,args:C,...q})}}}),j.watchEvent=new Proxy({},{get(E,B){return(..._)=>{const v=f.find(R=>R.type==="event"&&R.name===B),{args:C,options:q}=l(_,v);return(0,e.getAction)(p,o.watchContractEvent,"watchContractEvent")({abi:f,address:b,eventName:B,args:C,...q})}}}))),m&&y&&(j.write=new Proxy({},{get(E,B){return(..._)=>{const{args:v,options:C}=d(_);return(0,e.getAction)(O,c.writeContract,"writeContract")({abi:f,address:b,functionName:B,args:v,...C})}}})),(S||m)&&y&&(j.estimateGas=new Proxy({},{get(E,B){return(..._)=>{const{args:v,options:C}=d(_),q=p??O;return(0,e.getAction)(q,n.estimateContractGas,"estimateContractGas")({abi:f,address:b,functionName:B,args:v,...C,account:C.account??O.account})}}})),j.address=b,j.abi=f,j}function d(f){const b=f.length&&Array.isArray(f[0]),T=b?f[0]:[],w=(b?f[1]:f[0])??{};return{args:T,options:w}}function l(f,b){let T=!1;Array.isArray(f[0])?T=!0:f.length===1?T=b.inputs.some(O=>O.indexed):f.length===2&&(T=!0);const w=T?f[0]:void 0,p=(T?f[1]:f[0])??{};return{args:w,options:p}}return cn}var pn={},So={},ah;function r_(){if(ah)return So;ah=1,Object.defineProperty(So,"__esModule",{value:!0}),So.BundleFailedError=void 0;const e=fe();class t extends e.BaseError{constructor(r){super(`Call bundle failed with status: ${r.statusCode}`,{name:"BundleFailedError"}),Object.defineProperty(this,"result",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=r}}return So.BundleFailedError=t,So}var Qs={},ch;function id(){if(ch)return Qs;ch=1,Object.defineProperty(Qs,"__esModule",{value:!0}),Qs.withRetry=t;const e=zf();function t(n,{delay:r=100,retryCount:i=2,shouldRetry:a=()=>!0}={}){return new Promise((o,c)=>{const u=async({count:d=0}={})=>{const l=async({error:f})=>{const b=typeof r=="function"?r({count:d,error:f}):r;b&&await(0,e.wait)(b),u({count:d+1})};try{const f=await n();o(f)}catch(f){if(d(0,r.formatLog)(d)):null,to:o.to?o.to:null,transactionIndex:o.transactionIndex?(0,t.hexToNumber)(o.transactionIndex):null,status:o.status?e.receiptStatuses[o.status]:null,type:o.type?i.transactionType[o.type]||o.type:null};return o.blobGasPrice&&(u.blobGasPrice=BigInt(o.blobGasPrice)),o.blobGasUsed&&(u.blobGasUsed=BigInt(o.blobGasUsed)),u}e.defineTransactionReceipt=(0,n.defineFormatter)("transactionReceipt",a)})(Qd)),Qd}var $d={},dh;function Vf(){return dh||(dh=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.fallbackTransactionErrorMagicIdentifier=e.fallbackMagicIdentifier=void 0,e.sendCalls=l;const t=He(),n=fe(),r=gr(),i=ut(),a=De(),o=Ne(),c=ie(),u=ti(),d=od();e.fallbackMagicIdentifier="0x5792579257925792579257925792579257925792579257925792579257925792",e.fallbackTransactionErrorMagicIdentifier=(0,c.numberToHex)(0,{size:32});async function l(f,b){const{account:T=f.account,capabilities:w,chain:p=f.chain,experimental_fallback:O,experimental_fallbackDelay:S=32,forceAtomic:m=!1,id:j,version:s="2.0.0"}=b,y=T?(0,t.parseAccount)(T):null,g=b.calls.map(E=>{const B=E,_=B.abi?(0,i.encodeFunctionData)({abi:B.abi,functionName:B.functionName,args:B.args}):B.data;return{data:B.dataSuffix&&_?(0,a.concat)([_,B.dataSuffix]):_,to:B.to,value:B.value?(0,c.numberToHex)(B.value):void 0}});try{const E=await f.request({method:"wallet_sendCalls",params:[{atomicRequired:m,calls:g,capabilities:w,chainId:(0,c.numberToHex)(p.id),from:y?.address,id:j,version:s}]},{retryCount:0});return typeof E=="string"?{id:E}:E}catch(E){const B=E;if(O&&(B.name==="MethodNotFoundRpcError"||B.name==="MethodNotSupportedRpcError"||B.name==="UnknownRpcError"||B.details.toLowerCase().includes("does not exist / is not available")||B.details.toLowerCase().includes("missing or invalid. request()")||B.details.toLowerCase().includes("did not match any variant of untagged enum")||B.details.toLowerCase().includes("account upgraded to unsupported contract")||B.details.toLowerCase().includes("eip-7702 not supported")||B.details.toLowerCase().includes("unsupported wc_ method")||B.details.toLowerCase().includes("feature toggled misconfigured")||B.details.toLowerCase().includes("jsonrpcengine: response has no error or result for request"))){if(w&&Object.values(w).some(R=>!R.optional)){const R="non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";throw new r.UnsupportedNonOptionalCapabilityError(new n.BaseError(R,{details:R}))}if(m&&g.length>1){const q="`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";throw new r.AtomicityNotSupportedError(new n.BaseError(q,{details:q}))}const _=[];for(const q of g){const R=(0,d.sendTransaction)(f,{account:y,chain:p,data:q.data,to:q.to,value:q.value?(0,o.hexToBigInt)(q.value):void 0});_.push(R),S>0&&await new Promise(H=>setTimeout(H,S))}const v=await Promise.allSettled(_);if(v.every(q=>q.status==="rejected"))throw v[0].reason;const C=v.map(q=>q.status==="fulfilled"?q.value:e.fallbackTransactionErrorMagicIdentifier);return{id:(0,a.concat)([...C,(0,c.numberToHex)(p.id,{size:32}),e.fallbackMagicIdentifier])}}throw(0,u.getTransactionError)(E,{...b,account:y,chain:b.chain})}}})($d)),$d}var fh;function n_(){if(fh)return $s;fh=1,Object.defineProperty($s,"__esModule",{value:!0}),$s.getCallsStatus=a;const e=vt(),t=$t(),n=Ne(),r=fi(),i=Vf();async function a(o,c){async function u(O){if(O.endsWith(i.fallbackMagicIdentifier.slice(2))){const m=(0,t.trim)((0,e.sliceHex)(O,-64,-32)),j=(0,e.sliceHex)(O,0,-64).slice(2).match(/.{1,64}/g),s=await Promise.all(j.map(g=>i.fallbackTransactionErrorMagicIdentifier.slice(2)!==g?o.request({method:"eth_getTransactionReceipt",params:[`0x${g}`]},{dedupe:!0}):void 0)),y=s.some(g=>g===null)?100:s.every(g=>g?.status==="0x1")?200:s.every(g=>g?.status==="0x0")?500:600;return{atomic:!1,chainId:(0,n.hexToNumber)(m),receipts:s.filter(Boolean),status:y,version:"2.0.0"}}return o.request({method:"wallet_getCallsStatus",params:[O]})}const{atomic:d=!1,chainId:l,receipts:f,version:b="2.0.0",...T}=await u(c.id),[w,p]=(()=>{const O=T.status;return O>=100&&O<200?["pending",O]:O>=200&&O<300?["success",O]:O>=300&&O<700?["failure",O]:O==="CONFIRMED"?["success",200]:O==="PENDING"?["pending",100]:[void 0,O]})();return{...T,atomic:d,chainId:l?(0,n.hexToNumber)(l):void 0,receipts:f?.map(O=>({...O,blockNumber:(0,n.hexToBigInt)(O.blockNumber),gasUsed:(0,n.hexToBigInt)(O.gasUsed),status:r.receiptStatuses[O.status]}))??[],statusCode:p,status:w,version:b}}return $s}var lh;function Wf(){if(lh)return pn;lh=1,Object.defineProperty(pn,"__esModule",{value:!0}),pn.WaitForCallsStatusTimeoutError=void 0,pn.waitForCallsStatus=d;const e=fe(),t=r_(),n=ge(),r=nn(),i=Cn(),a=Mf(),o=id(),c=Ve(),u=n_();async function d(f,b){const{id:T,pollingInterval:w=f.pollingInterval,status:p=({statusCode:v})=>v===200||v>=300,retryCount:O=4,retryDelay:S=({count:v})=>~~(1<{const C=(0,i.poll)(async()=>{const q=R=>{clearTimeout(B),C(),R(),_()};try{const R=await(0,o.withRetry)(async()=>{const H=await(0,n.getAction)(f,u.getCallsStatus,"getCallsStatus")({id:T});if(j&&H.status==="failure")throw new t.BundleFailedError(H);return H},{retryCount:O,delay:S});if(!p(R))return;q(()=>v.resolve(R))}catch(R){q(()=>v.reject(R))}},{interval:w,emitOnBegin:!0});return C});return B=m?setTimeout(()=>{_(),clearTimeout(B),E(new l({id:T}))},m):void 0,await y}class l extends e.BaseError{constructor({id:b}){super(`Timed out while waiting for call bundle with id "${b}" to be confirmed.`,{name:"WaitForCallsStatusTimeoutError"})}}return pn.WaitForCallsStatusTimeoutError=l,pn}var Io={},ea={},bh;function o_(){if(bh)return ea;bh=1,Object.defineProperty(ea,"__esModule",{value:!0}),ea.uid=r;const e=256;let t=e,n;function r(i=11){if(!n||t+i>e*2){n="",t=0;for(let a=0;a{const _=B(E);for(const C in y)delete _[C];const v={...E,..._};return Object.assign(v,{extend:g(v)})}}return Object.assign(y,{extend:g(y)})}function r(){return null}return Io}var ta={},ra={},na={},oa={},hh;function Kf(){if(hh)return oa;hh=1,Object.defineProperty(oa,"__esModule",{value:!0}),oa.isNullUniversalResolverError=n;const e=fe(),t=yr();function n(r){if(!(r instanceof e.BaseError))return!1;const i=r.walk(a=>a instanceof t.ContractFunctionRevertedError);return i instanceof t.ContractFunctionRevertedError?i.data?.errorName==="HttpError"||i.data?.errorName==="ResolverError"||i.data?.errorName==="ResolverNotContract"||i.data?.errorName==="ResolverNotFound"||i.data?.errorName==="ReverseAddressMismatch"||i.data?.errorName==="UnsupportedResolverProfile":!1}return oa}var ia={},sa={},yh;function i_(){if(yh)return sa;yh=1,Object.defineProperty(sa,"__esModule",{value:!0}),sa.encodedLabelToLabelhash=t;const e=nt();function t(n){if(n.length!==66||n.indexOf("[")!==0||n.indexOf("]")!==65)return null;const r=`0x${n.slice(1,65)}`;return(0,e.isHex)(r)?r:null}return sa}var gh;function Zf(){if(gh)return ia;gh=1,Object.defineProperty(ia,"__esModule",{value:!0}),ia.namehash=a;const e=De(),t=Pe(),n=ie(),r=at(),i=i_();function a(o){let c=new Uint8Array(32).fill(0);if(!o)return(0,n.bytesToHex)(c);const u=o.split(".");for(let d=u.length-1;d>=0;d-=1){const l=(0,i.encodedLabelToLabelhash)(u[d]),f=l?(0,t.toBytes)(l):(0,r.keccak256)((0,t.stringToBytes)(u[d]),"bytes");c=(0,r.keccak256)((0,e.concat)([c,f]),"bytes")}return(0,n.bytesToHex)(c)}return ia}var aa={},ca={},ph;function Hv(){if(ph)return ca;ph=1,Object.defineProperty(ca,"__esModule",{value:!0}),ca.encodeLabelhash=e;function e(t){return`[${t.slice(2)}]`}return ca}var ua={},_h;function s_(){if(_h)return ua;_h=1,Object.defineProperty(ua,"__esModule",{value:!0}),ua.labelhash=i;const e=Pe(),t=ie(),n=at(),r=i_();function i(a){const o=new Uint8Array(32).fill(0);return a?(0,r.encodedLabelToLabelhash)(a)||(0,n.keccak256)((0,e.stringToBytes)(a)):(0,t.bytesToHex)(o)}return ua}var vh;function Yf(){if(vh)return aa;vh=1,Object.defineProperty(aa,"__esModule",{value:!0}),aa.packetToBytes=r;const e=Pe(),t=Hv(),n=s_();function r(i){const a=i.replace(/^\.|\.$/gm,"");if(a.length===0)return new Uint8Array(1);const o=new Uint8Array((0,e.stringToBytes)(a).byteLength+2);let c=0;const u=a.split(".");for(let d=0;d255&&(l=(0,e.stringToBytes)((0,t.encodeLabelhash)((0,n.labelhash)(u[d])))),o[c]=l.length,o.set(l,c+1),c+=l.length+1}return o.byteLength!==c+1?o.slice(0,c+1):o}return aa}var Eh;function Mv(){if(Eh)return na;Eh=1,Object.defineProperty(na,"__esModule",{value:!0}),na.getEnsAddress=b;const e=wr(),t=nr(),n=ut(),r=jr(),i=$t(),a=ie(),o=Kf(),c=td(),u=Zf(),d=Yf(),l=ge(),f=kt();async function b(T,w){const{blockNumber:p,blockTag:O,coinType:S,name:m,gatewayUrls:j,strict:s}=w,{chain:y}=T,g=(()=>{if(w.universalResolverAddress)return w.universalResolverAddress;if(!y)throw new Error("client chain not configured. universalResolverAddress is required.");return(0,r.getChainContractAddress)({blockNumber:p,chain:y,contract:"ensUniversalResolver"})})(),E=y?.ensTlds;if(E&&!E.some(_=>m.endsWith(_)))return null;const B=S!=null?[(0,u.namehash)(m),BigInt(S)]:[(0,u.namehash)(m)];try{const _=(0,n.encodeFunctionData)({abi:e.addressResolverAbi,functionName:"addr",args:B}),v={address:g,abi:e.universalResolverResolveAbi,functionName:"resolveWithGateways",args:[(0,a.toHex)((0,d.packetToBytes)(m)),_,j??[c.localBatchGatewayUrl]],blockNumber:p,blockTag:O},q=await(0,l.getAction)(T,f.readContract,"readContract")(v);if(q[0]==="0x")return null;const R=(0,t.decodeFunctionResult)({abi:e.addressResolverAbi,args:B,functionName:"addr",data:q[0]});return R==="0x"||(0,i.trim)(R)==="0x00"?null:R}catch(_){if(s)throw _;if((0,o.isNullUniversalResolverError)(_))return null;throw _}}return na}var da={},fa={},Pt={},mt={},wh;function Jf(){if(wh)return mt;wh=1,Object.defineProperty(mt,"__esModule",{value:!0}),mt.EnsInvalidChainIdError=mt.EnsAvatarUnsupportedNamespaceError=mt.EnsAvatarUriResolutionError=mt.EnsAvatarInvalidNftUriError=mt.EnsAvatarInvalidMetadataError=void 0;const e=fe();class t extends e.BaseError{constructor({data:c}){super("Unable to extract image from metadata. The metadata may be malformed or invalid.",{metaMessages:["- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.","",`Provided data: ${JSON.stringify(c)}`],name:"EnsAvatarInvalidMetadataError"})}}mt.EnsAvatarInvalidMetadataError=t;class n extends e.BaseError{constructor({reason:c}){super(`ENS NFT avatar URI is invalid. ${c}`,{name:"EnsAvatarInvalidNftUriError"})}}mt.EnsAvatarInvalidNftUriError=n;class r extends e.BaseError{constructor({uri:c}){super(`Unable to resolve ENS avatar URI "${c}". The URI may be malformed, invalid, or does not respond with a valid image.`,{name:"EnsAvatarUriResolutionError"})}}mt.EnsAvatarUriResolutionError=r;class i extends e.BaseError{constructor({namespace:c}){super(`ENS NFT avatar namespace "${c}" is not supported. Must be "erc721" or "erc1155".`,{name:"EnsAvatarUnsupportedNamespaceError"})}}mt.EnsAvatarUnsupportedNamespaceError=i;class a extends e.BaseError{constructor({chainId:c}){super(`Invalid ENSIP-11 chainId: ${c}. Must be between 0 and 0x7fffffff, or 1.`,{name:"EnsInvalidChainIdError"})}}return mt.EnsInvalidChainIdError=a,mt}var jh;function kv(){if(jh)return Pt;jh=1,Object.defineProperty(Pt,"__esModule",{value:!0}),Pt.isImageUri=o,Pt.getGateway=c,Pt.resolveAvatarUri=u,Pt.getJsonImage=d,Pt.getMetadataAvatarUri=l,Pt.parseAvatarUri=f,Pt.parseNftUri=b,Pt.getNftTokenUri=T;const e=kt(),t=Jf(),n=/(?https?:\/\/[^/]*|ipfs:\/|ipns:\/|ar:\/)?(?\/)?(?ipfs\/|ipns\/)?(?[\w\-.]+)(?\/.*)?/,r=/^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?[\w\-.]+))?(?\/.*)?$/,i=/^data:([a-zA-Z\-/+]*);base64,([^"].*)/,a=/^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;async function o(w){try{const p=await fetch(w,{method:"HEAD"});return p.status===200?p.headers.get("content-type")?.startsWith("image/"):!1}catch(p){return typeof p=="object"&&typeof p.response<"u"||!Object.hasOwn(globalThis,"Image")?!1:new Promise(O=>{const S=new Image;S.onload=()=>{O(!0)},S.onerror=()=>{O(!1)},S.src=w})}}function c(w,p){return w?w.endsWith("/")?w.slice(0,-1):w:p}function u({uri:w,gatewayUrls:p}){const O=i.test(w);if(O)return{uri:w,isOnChain:!0,isEncoded:O};const S=c(p?.ipfs,"https://ipfs.io"),m=c(p?.arweave,"https://arweave.net"),j=w.match(n),{protocol:s,subpath:y,target:g,subtarget:E=""}=j?.groups||{},B=s==="ipns:/"||y==="ipns/",_=s==="ipfs:/"||y==="ipfs/"||r.test(w);if(w.startsWith("http")&&!B&&!_){let C=w;return p?.arweave&&(C=w.replace(/https:\/\/arweave.net/g,p?.arweave)),{uri:C,isOnChain:!1,isEncoded:!1}}if((B||_)&&g)return{uri:`${S}/${B?"ipns":"ipfs"}/${g}${E}`,isOnChain:!1,isEncoded:!1};if(s==="ar:/"&&g)return{uri:`${m}/${g}${E||""}`,isOnChain:!1,isEncoded:!1};let v=w.replace(a,"");if(v.startsWith("m.json());return await f({gatewayUrls:w,uri:d(O)})}catch{throw new t.EnsAvatarUriResolutionError({uri:p})}}async function f({gatewayUrls:w,uri:p}){const{uri:O,isOnChain:S}=u({uri:p,gatewayUrls:w});if(S||await o(O))return O;throw new t.EnsAvatarUriResolutionError({uri:p})}function b(w){let p=w;p.startsWith("did:nft:")&&(p=p.replace("did:nft:","").replace(/_/g,"/"));const[O,S,m]=p.split("/"),[j,s]=O.split(":"),[y,g]=S.split(":");if(!j||j.toLowerCase()!=="eip155")throw new t.EnsAvatarInvalidNftUriError({reason:"Only EIP-155 supported"});if(!s)throw new t.EnsAvatarInvalidNftUriError({reason:"Chain ID not found"});if(!g)throw new t.EnsAvatarInvalidNftUriError({reason:"Contract address not found"});if(!m)throw new t.EnsAvatarInvalidNftUriError({reason:"Token ID not found"});if(!y)throw new t.EnsAvatarInvalidNftUriError({reason:"ERC namespace not found"});return{chainID:Number.parseInt(s,10),namespace:y.toLowerCase(),contractAddress:g,tokenID:m}}async function T(w,{nft:p}){if(p.namespace==="erc721")return(0,e.readContract)(w,{address:p.contractAddress,abi:[{name:"tokenURI",type:"function",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"tokenURI",args:[BigInt(p.tokenID)]});if(p.namespace==="erc1155")return(0,e.readContract)(w,{address:p.contractAddress,abi:[{name:"uri",type:"function",stateMutability:"view",inputs:[{name:"_id",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"uri",args:[BigInt(p.tokenID)]});throw new t.EnsAvatarUnsupportedNamespaceError({namespace:p.namespace})}return Pt}var Ph;function Nv(){if(Ph)return fa;Ph=1,Object.defineProperty(fa,"__esModule",{value:!0}),fa.parseAvatarRecord=t;const e=kv();async function t(r,{gatewayUrls:i,record:a}){return/eip155:/i.test(a)?n(r,{gatewayUrls:i,record:a}):(0,e.parseAvatarUri)({uri:a,gatewayUrls:i})}async function n(r,{gatewayUrls:i,record:a}){const o=(0,e.parseNftUri)(a),c=await(0,e.getNftTokenUri)(r,{nft:o}),{uri:u,isOnChain:d,isEncoded:l}=(0,e.resolveAvatarUri)({uri:c,gatewayUrls:i});if(d&&(u.includes("data:application/json;base64,")||u.startsWith("{"))){const b=l?atob(u.replace("data:application/json;base64,","")):u,T=JSON.parse(b);return(0,e.parseAvatarUri)({uri:(0,e.getJsonImage)(T),gatewayUrls:i})}let f=o.tokenID;return o.namespace==="erc1155"&&(f=f.replace("0x","").padStart(64,"0")),(0,e.getMetadataAvatarUri)({gatewayUrls:i,uri:u.replace(/(?:0x)?{id}/,f)})}return fa}var la={},Ah;function a_(){if(Ah)return la;Ah=1,Object.defineProperty(la,"__esModule",{value:!0}),la.getEnsText=f;const e=wr(),t=nr(),n=ut(),r=jr(),i=ie(),a=Kf(),o=td(),c=Zf(),u=Yf(),d=ge(),l=kt();async function f(b,T){const{blockNumber:w,blockTag:p,key:O,name:S,gatewayUrls:m,strict:j}=T,{chain:s}=b,y=(()=>{if(T.universalResolverAddress)return T.universalResolverAddress;if(!s)throw new Error("client chain not configured. universalResolverAddress is required.");return(0,r.getChainContractAddress)({blockNumber:w,chain:s,contract:"ensUniversalResolver"})})(),g=s?.ensTlds;if(g&&!g.some(E=>S.endsWith(E)))return null;try{const E={address:y,abi:e.universalResolverResolveAbi,args:[(0,i.toHex)((0,u.packetToBytes)(S)),(0,n.encodeFunctionData)({abi:e.textResolverAbi,functionName:"text",args:[(0,c.namehash)(S),O]}),m??[o.localBatchGatewayUrl]],functionName:"resolveWithGateways",blockNumber:w,blockTag:p},_=await(0,d.getAction)(b,l.readContract,"readContract")(E);if(_[0]==="0x")return null;const v=(0,t.decodeFunctionResult)({abi:e.textResolverAbi,functionName:"text",data:_[0]});return v===""?null:v}catch(E){if(j)throw E;if((0,a.isNullUniversalResolverError)(E))return null;throw E}}return la}var Th;function Fv(){if(Th)return da;Th=1,Object.defineProperty(da,"__esModule",{value:!0}),da.getEnsAvatar=r;const e=Nv(),t=ge(),n=a_();async function r(i,{blockNumber:a,blockTag:o,assetGatewayUrls:c,name:u,gatewayUrls:d,strict:l,universalResolverAddress:f}){const b=await(0,t.getAction)(i,n.getEnsText,"getEnsText")({blockNumber:a,blockTag:o,key:"avatar",name:u,universalResolverAddress:f,gatewayUrls:d,strict:l});if(!b)return null;try{return await(0,e.parseAvatarRecord)(i,{record:b,gatewayUrls:c})}catch{return null}}return da}var ba={},Sh;function Lv(){if(Sh)return ba;Sh=1,Object.defineProperty(ba,"__esModule",{value:!0}),ba.getEnsName=o;const e=wr(),t=jr(),n=Kf(),r=td(),i=ge(),a=kt();async function o(c,u){const{address:d,blockNumber:l,blockTag:f,coinType:b=60n,gatewayUrls:T,strict:w}=u,{chain:p}=c,O=(()=>{if(u.universalResolverAddress)return u.universalResolverAddress;if(!p)throw new Error("client chain not configured. universalResolverAddress is required.");return(0,t.getChainContractAddress)({blockNumber:l,chain:p,contract:"ensUniversalResolver"})})();try{const S={address:O,abi:e.universalResolverReverseAbi,args:[d,b,T??[r.localBatchGatewayUrl]],functionName:"reverseWithGateways",blockNumber:l,blockTag:f},m=(0,i.getAction)(c,a.readContract,"readContract"),[j]=await m(S);return j||null}catch(S){if(w)throw S;if((0,n.isNullUniversalResolverError)(S))return null;throw S}}return ba}var ma={},Ih;function Uv(){if(Ih)return ma;Ih=1,Object.defineProperty(ma,"__esModule",{value:!0}),ma.getEnsResolver=a;const e=jr(),t=ie(),n=Yf(),r=ge(),i=kt();async function a(o,c){const{blockNumber:u,blockTag:d,name:l}=c,{chain:f}=o,b=(()=>{if(c.universalResolverAddress)return c.universalResolverAddress;if(!f)throw new Error("client chain not configured. universalResolverAddress is required.");return(0,e.getChainContractAddress)({blockNumber:u,chain:f,contract:"ensUniversalResolver"})})(),T=f?.ensTlds;if(T&&!T.some(p=>l.endsWith(p)))throw new Error(`${l} is not a valid ENS TLD (${T?.join(", ")}) for chain "${f.name}" (id: ${f.id}).`);const[w]=await(0,r.getAction)(o,i.readContract,"readContract")({address:b,abi:[{inputs:[{type:"bytes"}],name:"findResolver",outputs:[{type:"address"},{type:"bytes32"},{type:"uint256"}],stateMutability:"view",type:"function"}],functionName:"findResolver",args:[(0,t.toHex)((0,n.packetToBytes)(l))],blockNumber:u,blockTag:d});return w}return ma}var ha={},Bh;function c_(){if(Bh)return ha;Bh=1,Object.defineProperty(ha,"__esModule",{value:!0}),ha.createAccessList=o;const e=He(),t=ie(),n=Hf(),r=vr(),i=Rt(),a=Ot();async function o(c,u){const{account:d=c.account,blockNumber:l,blockTag:f="latest",blobs:b,data:T,gas:w,gasPrice:p,maxFeePerBlobGas:O,maxFeePerGas:S,maxPriorityFeePerGas:m,to:j,value:s,...y}=u,g=d?(0,e.parseAccount)(d):void 0;try{(0,a.assertRequest)(u);const B=(typeof l=="bigint"?(0,t.numberToHex)(l):void 0)||f,_=c.chain?.formatters?.transactionRequest?.format,C=(_||i.formatTransactionRequest)({...(0,r.extract)(y,{format:_}),account:g,blobs:b,data:T,gas:w,gasPrice:p,maxFeePerBlobGas:O,maxFeePerGas:S,maxPriorityFeePerGas:m,to:j,value:s},"createAccessList"),q=await c.request({method:"eth_createAccessList",params:[C,B]});return{accessList:q.accessList,gasUsed:BigInt(q.gasUsed)}}catch(E){throw(0,n.getCallError)(E,{...u,account:g,chain:c.chain})}}return ha}var ya={},Rh;function zv(){if(Rh)return ya;Rh=1,Object.defineProperty(ya,"__esModule",{value:!0}),ya.createBlockFilter=t;const e=Gu();async function t(n){const r=(0,e.createFilterRequestScope)(n,{method:"eth_newBlockFilter"}),i=await n.request({method:"eth_newBlockFilter"});return{id:i,request:r(i),type:"block"}}return ya}var ga={},Oh;function u_(){if(Oh)return ga;Oh=1,Object.defineProperty(ga,"__esModule",{value:!0}),ga.createEventFilter=r;const e=$r(),t=ie(),n=Gu();async function r(i,{address:a,args:o,event:c,events:u,fromBlock:d,strict:l,toBlock:f}={}){const b=u??(c?[c]:void 0),T=(0,n.createFilterRequestScope)(i,{method:"eth_newFilter"});let w=[];b&&(w=[b.flatMap(S=>(0,e.encodeEventTopics)({abi:[S],eventName:S.name,args:o}))],c&&(w=w[0]));const p=await i.request({method:"eth_newFilter",params:[{address:a,fromBlock:typeof d=="bigint"?(0,t.numberToHex)(d):d,toBlock:typeof f=="bigint"?(0,t.numberToHex)(f):f,...w.length?{topics:w}:{}}]});return{abi:b,args:o,eventName:c?c.name:void 0,fromBlock:d,id:p,request:T(p),strict:!!l,toBlock:f,type:"event"}}return ga}var pa={},Ch;function d_(){if(Ch)return pa;Ch=1,Object.defineProperty(pa,"__esModule",{value:!0}),pa.createPendingTransactionFilter=t;const e=Gu();async function t(n){const r=(0,e.createFilterRequestScope)(n,{method:"eth_newPendingTransactionFilter"}),i=await n.request({method:"eth_newPendingTransactionFilter"});return{id:i,request:r(i),type:"transaction"}}return pa}var _a={},xh;function Dv(){if(xh)return _a;xh=1,Object.defineProperty(_a,"__esModule",{value:!0}),_a.getBalance=t;const e=ie();async function t(n,{address:r,blockNumber:i,blockTag:a=n.experimental_blockTag??"latest"}){const o=typeof i=="bigint"?(0,e.numberToHex)(i):void 0,c=await n.request({method:"eth_getBalance",params:[r,o||a]});return BigInt(c)}return _a}var va={},qh;function Gv(){if(qh)return va;qh=1,Object.defineProperty(va,"__esModule",{value:!0}),va.getBlobBaseFee=e;async function e(t){const n=await t.request({method:"eth_blobBaseFee"});return BigInt(n)}return va}var Ea={},Hh;function Vv(){if(Hh)return Ea;Hh=1,Object.defineProperty(Ea,"__esModule",{value:!0}),Ea.getBlockTransactionCount=n;const e=Ne(),t=ie();async function n(r,{blockHash:i,blockNumber:a,blockTag:o="latest"}={}){const c=a!==void 0?(0,t.numberToHex)(a):void 0;let u;return i?u=await r.request({method:"eth_getBlockTransactionCountByHash",params:[i]},{dedupe:!0}):u=await r.request({method:"eth_getBlockTransactionCountByNumber",params:[c||o]},{dedupe:!!c}),(0,e.hexToNumber)(u)}return Ea}var wa={},Mh;function f_(){if(Mh)return wa;Mh=1,Object.defineProperty(wa,"__esModule",{value:!0}),wa.getCode=t;const e=ie();async function t(n,{address:r,blockNumber:i,blockTag:a="latest"}){const o=i!==void 0?(0,e.numberToHex)(i):void 0,c=await n.request({method:"eth_getCode",params:[r,o||a]},{dedupe:!!o});if(c!=="0x")return c}return wa}var ja={},Bo={},kh;function Wv(){if(kh)return Bo;kh=1,Object.defineProperty(Bo,"__esModule",{value:!0}),Bo.Eip712DomainNotFoundError=void 0;const e=fe();class t extends e.BaseError{constructor({address:r}){super(`No EIP-712 domain found on contract "${r}".`,{metaMessages:["Ensure that:",`- The contract is deployed at the address "${r}".`,"- `eip712Domain()` function exists on the contract.","- `eip712Domain()` function matches signature to ERC-5267 specification."],name:"Eip712DomainNotFoundError"})}}return Bo.Eip712DomainNotFoundError=t,Bo}var Nh;function Kv(){if(Nh)return ja;Nh=1,Object.defineProperty(ja,"__esModule",{value:!0}),ja.getEip712Domain=r;const e=Wv(),t=ge(),n=kt();async function r(a,o){const{address:c,factory:u,factoryData:d}=o;try{const[l,f,b,T,w,p,O]=await(0,t.getAction)(a,n.readContract,"readContract")({abi:i,address:c,functionName:"eip712Domain",factory:u,factoryData:d});return{domain:{name:f,version:b,chainId:Number(T),verifyingContract:w,salt:p},extensions:O,fields:l}}catch(l){const f=l;throw f.name==="ContractFunctionExecutionError"&&f.cause.name==="ContractFunctionZeroDataError"?new e.Eip712DomainNotFoundError({address:c}):f}}const i=[{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"}];return ja}var Pa={},Aa={},Fh;function Zv(){if(Fh)return Aa;Fh=1,Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.formatFeeHistory=e;function e(t){return{baseFeePerGas:t.baseFeePerGas.map(n=>BigInt(n)),gasUsedRatio:t.gasUsedRatio,oldestBlock:BigInt(t.oldestBlock),reward:t.reward?.map(n=>n.map(r=>BigInt(r)))}}return Aa}var Lh;function Yv(){if(Lh)return Pa;Lh=1,Object.defineProperty(Pa,"__esModule",{value:!0}),Pa.getFeeHistory=n;const e=ie(),t=Zv();async function n(r,{blockCount:i,blockNumber:a,blockTag:o="latest",rewardPercentiles:c}){const u=typeof a=="bigint"?(0,e.numberToHex)(a):void 0,d=await r.request({method:"eth_feeHistory",params:[(0,e.numberToHex)(i),u||o,c]},{dedupe:!!u});return(0,t.formatFeeHistory)(d)}return Pa}var Ta={},Uh;function Jv(){if(Uh)return Ta;Uh=1,Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.getFilterLogs=n;const e=oi(),t=rr();async function n(r,{filter:i}){const a=i.strict??!1,c=(await i.request({method:"eth_getFilterLogs",params:[i.id]})).map(u=>(0,t.formatLog)(u));return i.abi?(0,e.parseEventLogs)({abi:i.abi,logs:c,strict:a}):c}return Ta}var Sa={},Ia={},ef={},Ba={},zh;function l_(){if(zh)return Ba;zh=1,Object.defineProperty(Ba,"__esModule",{value:!0}),Ba.encodePacked=c;const e=qe(),t=St(),n=ct(),r=De(),i=br(),a=ie(),o=Du();function c(d,l){if(d.length!==l.length)throw new e.AbiEncodingLengthMismatchError({expectedLength:d.length,givenLength:l.length});const f=[];for(let b=0;bt.maxUint256)throw new o.FeeCapTooHighError({maxFeePerGas:j});if(m&&j&&m>j)throw new o.TipAboveFeeCapError({maxFeePerGas:j,maxPriorityFeePerGas:m})}function w(O){const{chainId:S,maxPriorityFeePerGas:m,gasPrice:j,maxFeePerGas:s,to:y}=O;if(S<=0)throw new a.InvalidChainIdError({chainId:S});if(y&&!(0,c.isAddress)(y))throw new n.InvalidAddressError({address:y});if(m||s)throw new r.BaseError("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(j&&j>t.maxUint256)throw new o.FeeCapTooHighError({maxFeePerGas:j})}function p(O){const{chainId:S,maxPriorityFeePerGas:m,gasPrice:j,maxFeePerGas:s,to:y}=O;if(y&&!(0,c.isAddress)(y))throw new n.InvalidAddressError({address:y});if(typeof S<"u"&&S<=0)throw new a.InvalidChainIdError({chainId:S});if(m||s)throw new r.BaseError("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(j&&j>t.maxUint256)throw new o.FeeCapTooHighError({maxFeePerGas:j})}return ur}var Ca={},Wh;function Qf(){if(Wh)return Ca;Wh=1,Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.serializeAccessList=r;const e=St(),t=dt(),n=ct();function r(i){if(!i||i.length===0)return[];const a=[];for(let o=0;o"u"||typeof h>"u")){const N=typeof s.blobs[0]=="string"?s.blobs:s.blobs.map(z=>(0,u.bytesToHex)(z)),U=s.kzg,L=(0,n.blobsToCommitments)({blobs:N,kzg:U});if(typeof k>"u"&&(k=(0,i.commitmentsToVersionedHashes)({commitments:L})),typeof h>"u"){const z=(0,r.blobsToProofs)({blobs:N,commitments:L,kzg:U});h=(0,a.toBlobSidecars)({blobs:N,commitments:L,proofs:z})}}const M=(0,b.serializeAccessList)(H),A=[(0,u.numberToHex)(g),B?(0,u.numberToHex)(B):"0x",R?(0,u.numberToHex)(R):"0x",q?(0,u.numberToHex)(q):"0x",E?(0,u.numberToHex)(E):"0x",_??"0x",v?(0,u.numberToHex)(v):"0x",F??"0x",M,C?(0,u.numberToHex)(C):"0x",k??[],...j(s,y)],P=[],I=[],x=[];if(h)for(let N=0;N{if(y.v>=35n)return(y.v-35n)/2n>0?y.v:27n+(y.v===35n?0n:1n);if(g>0)return BigInt(g*2)+BigInt(35n+y.v-27n);const h=27n+(y.v===27n?0n:1n);if(y.v!==h)throw new e.InvalidLegacyVError({v:y.v});return h})(),F=(0,c.trim)(y.r),k=(0,c.trim)(y.s);R=[...R,(0,u.numberToHex)(H),F==="0x00"?"0x":F,k==="0x00"?"0x":k]}else g>0&&(R=[...R,(0,u.numberToHex)(g),"0x","0x"]);return(0,d.toRlp)(R)}function j(s,y){const g=y??s,{v:E,yParity:B}=g;if(typeof g.r>"u")return[];if(typeof g.s>"u")return[];if(typeof E>"u"&&typeof B>"u")return[];const _=(0,c.trim)(g.r),v=(0,c.trim)(g.s);return[typeof B=="number"?B?(0,u.numberToHex)(1):"0x":E===0n?"0x":E===1n?(0,u.numberToHex)(1):E===27n?"0x":(0,u.numberToHex)(1),_==="0x00"?"0x":_,v==="0x00"?"0x":v]}return Ro}var Zh;function m_(){if(Zh)return Oa;Zh=1,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.serializeAuthorizationList=n;const e=ie(),t=cd();function n(r){if(!r||r.length===0)return[];const i=[];for(const a of r){const{chainId:o,nonce:c,...u}=a,d=a.address;i.push([o?(0,e.toHex)(o):"0x",d,c?(0,e.toHex)(c):"0x",...(0,t.toYParitySignatureArray)({},u)])}return i}return Oa}var xa={},Yh;function h_(){if(Yh)return xa;Yh=1,Object.defineProperty(xa,"__esModule",{value:!0}),xa.verifyAuthorization=r;const e=yt(),t=Ct(),n=Xo();async function r({address:i,authorization:a,signature:o}){return(0,t.isAddressEqual)((0,e.getAddress)(i),await(0,n.recoverAuthorizationAddress)({authorization:a,signature:o}))}return xa}var Oo={},tf={},Jh;function Xv(){return Jh||(Jh=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.promiseCache=void 0,e.withDedupe=n;const t=Xr();e.promiseCache=new t.LruMap(8192);function n(r,{enabled:i=!0,id:a}){if(!i||!a)return r();if(e.promiseCache.get(a))return e.promiseCache.get(a);const o=r().finally(()=>e.promiseCache.delete(a));return e.promiseCache.set(a,o),o}})(tf)),tf}var Xh;function y_(){if(Xh)return Oo;Xh=1,Object.defineProperty(Oo,"__esModule",{value:!0}),Oo.buildRequest=c,Oo.shouldRetry=u;const e=fe(),t=Bt(),n=gr(),r=ie(),i=Xv(),a=id(),o=Ve();function c(d,l={}){return async(f,b={})=>{const{dedupe:T=!1,methods:w,retryDelay:p=150,retryCount:O=3,uid:S}={...l,...b},{method:m}=f;if(w?.exclude?.includes(m))throw new n.MethodNotSupportedRpcError(new Error("method not supported"),{method:m});if(w?.include&&!w.include.includes(m))throw new n.MethodNotSupportedRpcError(new Error("method not supported"),{method:m});const j=T?(0,r.stringToHex)(`${S}.${(0,o.stringify)(f)}`):void 0;return(0,i.withDedupe)(()=>(0,a.withRetry)(async()=>{try{return await d(f)}catch(s){const y=s;switch(y.code){case n.ParseRpcError.code:throw new n.ParseRpcError(y);case n.InvalidRequestRpcError.code:throw new n.InvalidRequestRpcError(y);case n.MethodNotFoundRpcError.code:throw new n.MethodNotFoundRpcError(y,{method:f.method});case n.InvalidParamsRpcError.code:throw new n.InvalidParamsRpcError(y);case n.InternalRpcError.code:throw new n.InternalRpcError(y);case n.InvalidInputRpcError.code:throw new n.InvalidInputRpcError(y);case n.ResourceNotFoundRpcError.code:throw new n.ResourceNotFoundRpcError(y);case n.ResourceUnavailableRpcError.code:throw new n.ResourceUnavailableRpcError(y);case n.TransactionRejectedRpcError.code:throw new n.TransactionRejectedRpcError(y);case n.MethodNotSupportedRpcError.code:throw new n.MethodNotSupportedRpcError(y,{method:f.method});case n.LimitExceededRpcError.code:throw new n.LimitExceededRpcError(y);case n.JsonRpcVersionUnsupportedError.code:throw new n.JsonRpcVersionUnsupportedError(y);case n.UserRejectedRequestError.code:throw new n.UserRejectedRequestError(y);case n.UnauthorizedProviderError.code:throw new n.UnauthorizedProviderError(y);case n.UnsupportedProviderMethodError.code:throw new n.UnsupportedProviderMethodError(y);case n.ProviderDisconnectedError.code:throw new n.ProviderDisconnectedError(y);case n.ChainDisconnectedError.code:throw new n.ChainDisconnectedError(y);case n.SwitchChainError.code:throw new n.SwitchChainError(y);case n.UnsupportedNonOptionalCapabilityError.code:throw new n.UnsupportedNonOptionalCapabilityError(y);case n.UnsupportedChainIdError.code:throw new n.UnsupportedChainIdError(y);case n.DuplicateIdError.code:throw new n.DuplicateIdError(y);case n.UnknownBundleIdError.code:throw new n.UnknownBundleIdError(y);case n.BundleTooLargeError.code:throw new n.BundleTooLargeError(y);case n.AtomicReadyWalletRejectedUpgradeError.code:throw new n.AtomicReadyWalletRejectedUpgradeError(y);case n.AtomicityNotSupportedError.code:throw new n.AtomicityNotSupportedError(y);case 5e3:throw new n.UserRejectedRequestError(y);default:throw s instanceof e.BaseError?s:new n.UnknownRpcError(y)}}},{delay:({count:s,error:y})=>{if(y&&y instanceof t.HttpRequestError){const g=y?.headers?.get("Retry-After");if(g?.match(/\d/))return Number.parseInt(g,10)*1e3}return~~(1<u(s)}),{enabled:T,id:j})}}function u(d){return"code"in d&&typeof d.code=="number"?d.code===-1||d.code===n.LimitExceededRpcError.code||d.code===n.InternalRpcError.code:d instanceof t.HttpRequestError&&d.status?d.status===403||d.status===408||d.status===413||d.status===429||d.status===500||d.status===502||d.status===503||d.status===504:!0}return Oo}var Co={},Qh;function g_(){if(Qh)return Co;Qh=1,Object.defineProperty(Co,"__esModule",{value:!0}),Co.defineChain=e,Co.extendSchema=t;function e(n){const r={formatters:void 0,fees:void 0,serializers:void 0,...n};function i(a){return o=>{const c=typeof o=="function"?o(a):o,u={...a,...c};return Object.assign(u,{extend:i(u)})}}return Object.assign(r,{extend:i(r)})}function t(){return{}}return Co}var qa={},$h;function p_(){if($h)return qa;$h=1,Object.defineProperty(qa,"__esModule",{value:!0}),qa.extractChain=e;function e({chains:t,id:n}){return t.find(r=>r.id===n)}return qa}var Ha={},e1;function $f(){if(e1)return Ha;e1=1,Object.defineProperty(Ha,"__esModule",{value:!0}),Ha.fromRlp=a;const e=fe(),t=Bn(),n=Vo(),r=Pe(),i=ie();function a(d,l="hex"){const f=(()=>{if(typeof d=="string"){if(d.length>3&&d.length%2!==0)throw new t.InvalidHexValueError(d);return(0,r.hexToBytes)(d)}return d})(),b=(0,n.createCursor)(f,{recursiveReadLimit:Number.POSITIVE_INFINITY});return o(b,l)}function o(d,l="hex"){if(d.bytes.length===0)return l==="hex"?(0,i.bytesToHex)(d.bytes):d.bytes;const f=d.readByte();if(f<128&&d.decrementPosition(1),f<192){const T=c(d,f,128),w=d.readBytes(T);return l==="hex"?(0,i.bytesToHex)(w):w}const b=c(d,f,192);return u(d,b,l)}function c(d,l,f){if(f===128&&l<128)return 1;if(l<=f+55)return l-f;if(l===f+55+1)return d.readUint8();if(l===f+55+2)return d.readUint16();if(l===f+55+3)return d.readUint24();if(l===f+55+4)return d.readUint32();throw new e.BaseError("Invalid RLP prefix")}function u(d,l,f){const b=d.position,T=[];for(;d.position-bnew i);const a=Math.pow(2,32),o=Array.from({length:64},(B,_)=>Math.floor(a*Math.abs(Math.sin(_+1)))),c=n.slice(0,4),u=new Uint32Array(16);class d extends e.HashMD{constructor(){super(64,16,8,!0),this.A=c[0]|0,this.B=c[1]|0,this.C=c[2]|0,this.D=c[3]|0}get(){const{A:_,B:v,C,D:q}=this;return[_,v,C,q]}set(_,v,C,q){this.A=_|0,this.B=v|0,this.C=C|0,this.D=q|0}process(_,v){for(let F=0;F<16;F++,v+=4)u[F]=_.getUint32(v,!0);let{A:C,B:q,C:R,D:H}=this;for(let F=0;F<64;F++){let k,h,M;F<16?(k=(0,e.Chi)(q,R,H),h=F,M=[7,12,17,22]):F<32?(k=(0,e.Chi)(H,q,R),h=(5*F+1)%16,M=[5,9,14,20]):F<48?(k=q^R^H,h=(3*F+5)%16,M=[4,11,16,23]):(k=R^(q|~H),h=7*F%16,M=[6,10,15,21]),k=k+C+o[F]+u[h],C=H,H=R,R=q,q=q+(0,t.rotl)(k,M[F%4])}C=C+this.A|0,q=q+this.B|0,R=R+this.C|0,H=H+this.D|0,this.set(C,q,R,H)}roundClean(){(0,t.clean)(u)}destroy(){this.set(0,0,0,0),(0,t.clean)(this.buffer)}}$e.MD5=d,$e.md5=(0,t.createHasher)(()=>new d);const l=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),f=Uint8Array.from(new Array(16).fill(0).map((B,_)=>_)),b=f.map(B=>(9*B+5)%16),T=(()=>{const v=[[f],[b]];for(let C=0;C<4;C++)for(let q of v)q.push(q[C].map(R=>l[R]));return v})(),w=T[0],p=T[1],O=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(B=>Uint8Array.from(B)),S=w.map((B,_)=>B.map(v=>O[_][v])),m=p.map((B,_)=>B.map(v=>O[_][v])),j=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),s=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function y(B,_,v,C){return B===0?_^v^C:B===1?_&v|~_&C:B===2?(_|~v)^C:B===3?_&C|v&~C:_^(v|~C)}const g=new Uint32Array(16);class E extends e.HashMD{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:_,h1:v,h2:C,h3:q,h4:R}=this;return[_,v,C,q,R]}set(_,v,C,q,R){this.h0=_|0,this.h1=v|0,this.h2=C|0,this.h3=q|0,this.h4=R|0}process(_,v){for(let I=0;I<16;I++,v+=4)g[I]=_.getUint32(v,!0);let C=this.h0|0,q=C,R=this.h1|0,H=R,F=this.h2|0,k=F,h=this.h3|0,M=h,A=this.h4|0,P=A;for(let I=0;I<5;I++){const x=4-I,N=j[I],U=s[I],L=w[I],z=p[I],D=S[I],J=m[I];for(let Z=0;Z<16;Z++){const Y=(0,t.rotl)(C+y(I,R,F,h)+g[L[Z]]+N,D[Z])+A|0;C=A,A=h,h=(0,t.rotl)(F,10)|0,F=R,R=Y}for(let Z=0;Z<16;Z++){const Y=(0,t.rotl)(q+y(x,H,k,M)+g[z[Z]]+U,J[Z])+P|0;q=P,P=M,M=(0,t.rotl)(k,10)|0,k=H,H=Y}}this.set(this.h1+F+M|0,this.h2+h+P|0,this.h3+A+q|0,this.h4+C+H|0,this.h0+R+k|0)}roundClean(){(0,t.clean)(g)}destroy(){this.destroyed=!0,(0,t.clean)(this.buffer),this.set(0,0,0,0,0)}}return $e.RIPEMD160=E,$e.ripemd160=(0,t.createHasher)(()=>new E),$e}var n1;function $v(){if(n1)return kr;n1=1,Object.defineProperty(kr,"__esModule",{value:!0}),kr.ripemd160=kr.RIPEMD160=void 0;const e=Qv();return kr.RIPEMD160=e.RIPEMD160,kr.ripemd160=e.ripemd160,kr}var o1;function __(){if(o1)return ka;o1=1,Object.defineProperty(ka,"__esModule",{value:!0}),ka.ripemd160=i;const e=$v(),t=nt(),n=Pe(),r=ie();function i(a,o){const c=o||"hex",u=(0,e.ripemd160)((0,t.isHex)(a,{strict:!1})?(0,n.toBytes)(a):a);return c==="bytes"?u:(0,r.toHex)(u)}return ka}var rf={},i1;function v_(){return i1||(i1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.toEventHash=void 0;var t=zu();Object.defineProperty(e,"toEventHash",{enumerable:!0,get:function(){return t.toSignatureHash}})})(rf)),rf}var nf={},s1;function E_(){return s1||(s1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.toEventSignature=void 0;var t=gf();Object.defineProperty(e,"toEventSignature",{enumerable:!0,get:function(){return t.toSignature}})})(nf)),nf}var of={},a1;function w_(){return a1||(a1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.toFunctionHash=void 0;var t=zu();Object.defineProperty(e,"toFunctionHash",{enumerable:!0,get:function(){return t.toSignatureHash}})})(of)),of}var sf={},c1;function j_(){return c1||(c1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.toFunctionSignature=void 0;var t=gf();Object.defineProperty(e,"toFunctionSignature",{enumerable:!0,get:function(){return t.toSignature}})})(sf)),sf}var Nr={},u1;function P_(){if(u1)return Nr;u1=1,Object.defineProperty(Nr,"__esModule",{value:!0}),Nr.nonceManager=void 0,Nr.createNonceManager=n,Nr.jsonRpc=r;const e=Yu(),t=Xr();function n(i){const{source:a}=i,o=new Map,c=new t.LruMap(8192),u=new Map,d=({address:l,chainId:f})=>`${l}.${f}`;return{async consume({address:l,chainId:f,client:b}){const T=d({address:l,chainId:f}),w=this.get({address:l,chainId:f,client:b});this.increment({address:l,chainId:f});const p=await w;return await a.set({address:l,chainId:f},p),c.set(T,p),p},async increment({address:l,chainId:f}){const b=d({address:l,chainId:f}),T=o.get(b)??0;o.set(b,T+1)},async get({address:l,chainId:f,client:b}){const T=d({address:l,chainId:f});let w=u.get(T);return w||(w=(async()=>{try{const O=await a.get({address:l,chainId:f,client:b}),S=c.get(T)??0;return S>0&&O<=S?S+1:(c.delete(T),O)}finally{this.reset({address:l,chainId:f})}})(),u.set(T,w)),(o.get(T)??0)+await w},reset({address:l,chainId:f}){const b=d({address:l,chainId:f});o.delete(b),u.delete(b)}}}function r(){return{async get(i){const{address:a,client:o}=i;return(0,e.getTransactionCount)(o,{address:a,blockTag:"pending"})},set(){}}}return Nr.nonceManager=n({source:r()}),Nr}var vn={},Na={},Fa={},d1;function t0(){if(d1)return Fa;d1=1,Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.withTimeout=e;function e(t,{errorInstance:n=new Error("timed out"),timeout:r,signal:i}){return new Promise((a,o)=>{(async()=>{let c;try{const u=new AbortController;r>0&&(c=setTimeout(()=>{i?u.abort():o(n)},r)),a(await t({signal:u?.signal||null}))}catch(u){u?.name==="AbortError"&&o(n),o(u)}finally{clearTimeout(c)}})()})}return Fa}var xo={},f1;function A_(){if(f1)return xo;f1=1,Object.defineProperty(xo,"__esModule",{value:!0}),xo.idCache=void 0;function e(){return{current:0,take(){return this.current++},reset(){this.current=0}}}return xo.idCache=e(),xo}var l1;function r0(){if(l1)return Na;l1=1,Object.defineProperty(Na,"__esModule",{value:!0}),Na.getHttpRpcClient=i;const e=Bt(),t=t0(),n=Ve(),r=A_();function i(a,o={}){return{async request(c){const{body:u,fetchFn:d=o.fetchFn??fetch,onRequest:l=o.onRequest,onResponse:f=o.onResponse,timeout:b=o.timeout??1e4}=c,T={...o.fetchOptions??{},...c.fetchOptions??{}},{headers:w,method:p,signal:O}=T;try{const S=await(0,t.withTimeout)(async({signal:j})=>{const s={...T,body:Array.isArray(u)?(0,n.stringify)(u.map(B=>({jsonrpc:"2.0",id:B.id??r.idCache.take(),...B}))):(0,n.stringify)({jsonrpc:"2.0",id:u.id??r.idCache.take(),...u}),headers:{"Content-Type":"application/json",...w},method:p||"POST",signal:O||(b>0?j:null)},y=new Request(a,s),g=await l?.(y,s)??{...s,url:a};return await d(g.url??a,g)},{errorInstance:new e.TimeoutError({body:u,url:a}),timeout:b,signal:!0});f&&await f(S);let m;if(S.headers.get("Content-Type")?.startsWith("application/json"))m=await S.json();else{m=await S.text();try{m=JSON.parse(m||"{}")}catch(j){if(S.ok)throw j;m={error:m}}}if(!S.ok)throw new e.HttpRequestError({body:u,details:(0,n.stringify)(m.error)||S.statusText,headers:S.headers,status:S.status,url:a});return m}catch(S){throw S instanceof e.HttpRequestError||S instanceof e.TimeoutError?S:new e.HttpRequestError({body:u,cause:S,url:a})}}}}return Na}var La={},af={},b1;function T_(){return b1||(b1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.socketClientCache=void 0,e.getSocketRpcClient=a;const t=Bt(),n=kf(),r=t0(),i=A_();e.socketClientCache=new Map;async function a(o){const{getSocket:c,keepAlive:u=!0,key:d="socket",reconnect:l=!0,url:f}=o,{interval:b=3e4}=typeof u=="object"?u:{},{attempts:T=5,delay:w=2e3}=typeof l=="object"?l:{},p=JSON.stringify({keepAlive:u,key:d,url:f,reconnect:l});let O=e.socketClientCache.get(p);if(O)return O;let S=0;const{schedule:m}=(0,n.createBatchScheduler)({id:p,fn:async()=>{const y=new Map,g=new Map;let E,B,_,v=!1;function C(){if(l&&S{await q().catch(console.error),v=!1},w)}else y.clear(),g.clear()}async function q(){const R=await c({onClose(){for(const H of y.values())H.onError?.(new t.SocketClosedError({url:f}));for(const H of g.values())H.onError?.(new t.SocketClosedError({url:f}));C()},onError(H){E=H;for(const F of y.values())F.onError?.(E);for(const F of g.values())F.onError?.(E);C()},onOpen(){E=void 0,S=0},onResponse(H){const F=H.method==="eth_subscription",k=F?H.params.subscription:H.id,h=F?g:y,M=h.get(k);M&&M.onResponse(H),F||h.delete(k)}});if(B=R,u&&(_&&clearInterval(_),_=setInterval(()=>B.ping?.(),b)),l&&g.size>0){const H=g.entries();for(const[F,{onResponse:k,body:h,onError:M}]of H)h&&(g.delete(F),O?.request({body:h,onResponse:k,onError:M}))}return R}return await q(),E=void 0,O={close(){_&&clearInterval(_),B.close(),e.socketClientCache.delete(p)},get socket(){return B},request({body:R,onError:H,onResponse:F}){E&&H&&H(E);const k=R.id??i.idCache.take(),h=M=>{typeof M.id=="number"&&k!==M.id||(R.method==="eth_subscribe"&&typeof M.result=="string"&&g.set(M.result,{onResponse:h,onError:H,body:R}),F(M))};R.method==="eth_unsubscribe"&&g.delete(R.params?.[0]),y.set(k,{onResponse:h,onError:H});try{B.request({body:{jsonrpc:"2.0",id:k,...R}})}catch(M){H?.(M)}},requestAsync({body:R,timeout:H=1e4}){return(0,r.withTimeout)(()=>new Promise((F,k)=>this.request({body:R,onError:k,onResponse:F})),{errorInstance:new t.TimeoutError({body:R,url:f}),timeout:H})},requests:y,subscriptions:g,url:f},e.socketClientCache.set(p,O),[O]}}),[j,[s]]=await m();return s}})(af)),af}const e6=Z2(tv);var m1;function n0(){if(m1)return La;m1=1,Object.defineProperty(La,"__esModule",{value:!0}),La.getWebSocketRpcClient=n;const e=Bt(),t=T_();async function n(r,i={}){const{keepAlive:a,reconnect:o}=i;return(0,t.getSocketRpcClient)({async getSocket({onClose:c,onError:u,onOpen:d,onResponse:l}){const f=await Promise.resolve().then(()=>e6).then(O=>O.WebSocket),b=new f(r);function T(){b.removeEventListener("close",T),b.removeEventListener("message",w),b.removeEventListener("error",u),b.removeEventListener("open",d),c()}function w({data:O}){if(!(typeof O=="string"&&O.trim().length===0))try{const S=JSON.parse(O);l(S)}catch(S){u(S)}}b.addEventListener("close",T),b.addEventListener("message",w),b.addEventListener("error",u),b.addEventListener("open",d),b.readyState===f.CONNECTING&&await new Promise((O,S)=>{b&&(b.onopen=O,b.onerror=S)});const{close:p}=b;return Object.assign(b,{close(){p.bind(b)(),T()},ping(){try{if(b.readyState===b.CLOSED||b.readyState===b.CLOSING)throw new e.WebSocketRequestError({url:b.url,cause:new e.SocketClosedError({url:b.url})});const O={jsonrpc:"2.0",id:null,method:"net_version",params:[]};b.send(JSON.stringify(O))}catch(O){u(O)}},request({body:O}){if(b.readyState===b.CLOSED||b.readyState===b.CLOSING)throw new e.WebSocketRequestError({body:O,url:b.url,cause:new e.SocketClosedError({url:b.url})});return b.send(JSON.stringify(O))}})},keepAlive:a,reconnect:o,url:r})}return La}var h1;function S_(){if(h1)return vn;h1=1,Object.defineProperty(vn,"__esModule",{value:!0}),vn.rpc=void 0,vn.getSocket=i;const e=r0(),t=n0();function n(a,{body:o,onError:c,onResponse:u}){return a.request({body:o,onError:c,onResponse:u}),a}async function r(a,{body:o,timeout:c=1e4}){return a.requestAsync({body:o,timeout:c})}async function i(a){const o=await(0,t.getWebSocketRpcClient)(a);return Object.assign(o.socket,{requests:o.requests,subscriptions:o.subscriptions})}return vn.rpc={http(a,o){return(0,e.getHttpRpcClient)(a).request(o)},webSocket:n,webSocketAsync:r},vn}var Ua={},za={},qo={},y1;function I_(){return y1||(y1=1,Object.defineProperty(qo,"__esModule",{value:!0}),qo.presignMessagePrefix=void 0,qo.presignMessagePrefix=`Ethereum Signed Message: +`),qo}var g1;function B_(){if(g1)return za;g1=1,Object.defineProperty(za,"__esModule",{value:!0}),za.toPrefixedMessage=i;const e=I_(),t=De(),n=st(),r=ie();function i(a){const o=typeof a=="string"?(0,r.stringToHex)(a):typeof a.raw=="string"?a.raw:(0,r.bytesToHex)(a.raw),c=(0,r.stringToHex)(`${e.presignMessagePrefix}${(0,n.size)(o)}`);return(0,t.concat)([c,o])}return za}var p1;function li(){if(p1)return Ua;p1=1,Object.defineProperty(Ua,"__esModule",{value:!0}),Ua.hashMessage=n;const e=at(),t=B_();function n(r,i){return(0,e.keccak256)((0,t.toPrefixedMessage)(r),i)}return Ua}var Fr={},Lr={},Xt={},_1;function R_(){if(_1)return Xt;_1=1,Object.defineProperty(Xt,"__esModule",{value:!0}),Xt.InvalidStructTypeError=Xt.InvalidPrimaryTypeError=Xt.InvalidDomainError=void 0;const e=Ve(),t=fe();class n extends t.BaseError{constructor({domain:o}){super(`Invalid domain "${(0,e.stringify)(o)}".`,{metaMessages:["Must be a valid EIP-712 domain."]})}}Xt.InvalidDomainError=n;class r extends t.BaseError{constructor({primaryType:o,types:c}){super(`Invalid primary type \`${o}\` must be one of \`${JSON.stringify(Object.keys(c))}\`.`,{docsPath:"/api/glossary/Errors#typeddatainvalidprimarytypeerror",metaMessages:["Check that the primary type is a key in `types`."]})}}Xt.InvalidPrimaryTypeError=r;class i extends t.BaseError{constructor({type:o}){super(`Struct type "${o}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}}return Xt.InvalidStructTypeError=i,Xt}var v1;function ud(){if(v1)return Lr;v1=1,Object.defineProperty(Lr,"__esModule",{value:!0}),Lr.serializeTypedData=d,Lr.validateTypedData=l,Lr.getTypesForEIP712Domain=f,Lr.domainSeparator=b;const e=qe(),t=St(),n=R_(),r=ct(),i=st(),a=ie(),o=Du(),c=bi(),u=Ve();function d(w){const{domain:p,message:O,primaryType:S,types:m}=w,j=(g,E)=>{const B={...E};for(const _ of g){const{name:v,type:C}=_;C==="address"&&(B[v]=B[v].toLowerCase())}return B},s=m.EIP712Domain?p?j(m.EIP712Domain,p):{}:{},y=(()=>{if(S!=="EIP712Domain")return j(m[S],O)})();return(0,u.stringify)({domain:s,message:y,primaryType:S,types:m})}function l(w){const{domain:p,message:O,primaryType:S,types:m}=w,j=(s,y)=>{for(const g of s){const{name:E,type:B}=g,_=y[E],v=B.match(o.integerRegex);if(v&&(typeof _=="number"||typeof _=="bigint")){const[R,H,F]=v;(0,a.numberToHex)(_,{signed:H==="int",size:Number.parseInt(F,10)/8})}if(B==="address"&&typeof _=="string"&&!(0,r.isAddress)(_))throw new t.InvalidAddressError({address:_});const C=B.match(o.bytesRegex);if(C){const[R,H]=C;if(H&&(0,i.size)(_)!==Number.parseInt(H,10))throw new e.BytesSizeMismatchError({expectedSize:Number.parseInt(H,10),givenSize:(0,i.size)(_)})}const q=m[B];q&&(T(B),j(q,_))}};if(m.EIP712Domain&&p){if(typeof p!="object")throw new n.InvalidDomainError({domain:p});j(m.EIP712Domain,p)}if(S!=="EIP712Domain")if(m[S])j(m[S],O);else throw new n.InvalidPrimaryTypeError({primaryType:S,types:m})}function f({domain:w}){return[typeof w?.name=="string"&&{name:"name",type:"string"},w?.version&&{name:"version",type:"string"},(typeof w?.chainId=="number"||typeof w?.chainId=="bigint")&&{name:"chainId",type:"uint256"},w?.verifyingContract&&{name:"verifyingContract",type:"address"},w?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}function b({domain:w}){return(0,c.hashDomain)({domain:w,types:{EIP712Domain:f({domain:w})}})}function T(w){if(w==="address"||w==="bool"||w==="string"||w.startsWith("bytes")||w.startsWith("uint")||w.startsWith("int"))throw new n.InvalidStructTypeError({type:w})}return Lr}var E1;function bi(){if(E1)return Fr;E1=1,Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.hashTypedData=a,Fr.hashDomain=o,Fr.hashStruct=c,Fr.encodeType=l;const e=It(),t=De(),n=ie(),r=at(),i=ud();function a(T){const{domain:w={},message:p,primaryType:O}=T,S={EIP712Domain:(0,i.getTypesForEIP712Domain)({domain:w}),...T.types};(0,i.validateTypedData)({domain:w,message:p,primaryType:O,types:S});const m=["0x1901"];return w&&m.push(o({domain:w,types:S})),O!=="EIP712Domain"&&m.push(c({data:p,primaryType:O,types:S})),(0,r.keccak256)((0,t.concat)(m))}function o({domain:T,types:w}){return c({data:T,primaryType:"EIP712Domain",types:w})}function c({data:T,primaryType:w,types:p}){const O=u({data:T,primaryType:w,types:p});return(0,r.keccak256)(O)}function u({data:T,primaryType:w,types:p}){const O=[{type:"bytes32"}],S=[d({primaryType:w,types:p})];for(const m of p[w]){const[j,s]=b({types:p,name:m.name,type:m.type,value:T[m.name]});O.push(j),S.push(s)}return(0,e.encodeAbiParameters)(O,S)}function d({primaryType:T,types:w}){const p=(0,n.toHex)(l({primaryType:T,types:w}));return(0,r.keccak256)(p)}function l({primaryType:T,types:w}){let p="";const O=f({primaryType:T,types:w});O.delete(T);const S=[T,...Array.from(O).sort()];for(const m of S)p+=`${m}(${w[m].map(({name:j,type:s})=>`${s} ${j}`).join(",")})`;return p}function f({primaryType:T,types:w},p=new Set){const S=T.match(/^\w*/u)?.[0];if(p.has(S)||w[S]===void 0)return p;p.add(S);for(const m of w[S])f({primaryType:m.type,types:w},p);return p}function b({types:T,name:w,type:p,value:O}){if(T[p]!==void 0)return[{type:"bytes32"},(0,r.keccak256)(u({data:O,primaryType:p,types:T}))];if(p==="bytes")return[{type:"bytes32"},(0,r.keccak256)(O)];if(p==="string")return[{type:"bytes32"},(0,r.keccak256)((0,n.toHex)(O))];if(p.lastIndexOf("]")===p.length-1){const S=p.slice(0,p.lastIndexOf("[")),m=O.map(j=>b({name:w,type:S,types:T,value:j}));return[{type:"bytes32"},(0,r.keccak256)((0,e.encodeAbiParameters)(m.map(([j])=>j),m.map(([,j])=>j)))]}return[{type:p},O]}return Fr}var Da={},Ur={},w1;function o0(){return w1||(w1=1,Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.zeroHash=Ur.erc6492MagicBytes=void 0,Ur.erc6492MagicBytes="0x6492649264926492649264926492649264926492649264926492649264926492",Ur.zeroHash="0x0000000000000000000000000000000000000000000000000000000000000000"),Ur}var j1;function i0(){if(j1)return Da;j1=1,Object.defineProperty(Da,"__esModule",{value:!0}),Da.isErc6492Signature=n;const e=o0(),t=vt();function n(r){return(0,t.sliceHex)(r,-32)===e.erc6492MagicBytes}return Da}var Ga={},Ho={},cf={},Ce={},et={},En={},Mo={},P1;function t6(){if(P1)return Mo;P1=1,Object.defineProperty(Mo,"__esModule",{value:!0}),Mo.LruMap=void 0;class e extends Map{constructor(n){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=n}get(n){const r=super.get(n);return super.has(n)&&r!==void 0&&(this.delete(n),super.set(n,r)),r}set(n,r){if(super.set(n,r),this.maxSize&&this.size>this.maxSize){const i=this.keys().next().value;i&&this.delete(i)}return this}}return Mo.LruMap=e,Mo}var A1;function r6(){if(A1)return En;A1=1,Object.defineProperty(En,"__esModule",{value:!0}),En.checksum=void 0,En.clear=n;const e=t6(),t={checksum:new e.LruMap(8192)};En.checksum=t.checksum;function n(){for(const r of Object.values(t))r.clear()}return En}var zr={},Dr={},tt={},Je={},uf={},ko={},T1;function n6(){return T1||(T1=1,Object.defineProperty(ko,"__esModule",{value:!0}),ko.crypto=void 0,ko.crypto=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0),ko}var S1;function Ar(){return S1||(S1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.Hash=e.nextTick=e.swap32IfBE=e.byteSwapIfBE=e.swap8IfBE=e.isLE=void 0,e.isBytes=n,e.anumber=r,e.abytes=i,e.ahash=a,e.aexists=o,e.aoutput=c,e.u8=u,e.u32=d,e.clean=l,e.createView=f,e.rotr=b,e.rotl=T,e.byteSwap=w,e.byteSwap32=p,e.bytesToHex=m,e.hexToBytes=y,e.asyncLoop=E,e.utf8ToBytes=B,e.bytesToUtf8=_,e.toBytes=v,e.kdfInputToBytes=C,e.concatBytes=q,e.checkOpts=R,e.createHasher=F,e.createOptHasher=k,e.createXOFer=h,e.randomBytes=M;const t=n6();function n(A){return A instanceof Uint8Array||ArrayBuffer.isView(A)&&A.constructor.name==="Uint8Array"}function r(A){if(!Number.isSafeInteger(A)||A<0)throw new Error("positive integer expected, got "+A)}function i(A,...P){if(!n(A))throw new Error("Uint8Array expected");if(P.length>0&&!P.includes(A.length))throw new Error("Uint8Array expected of length "+P+", got length="+A.length)}function a(A){if(typeof A!="function"||typeof A.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");r(A.outputLen),r(A.blockLen)}function o(A,P=!0){if(A.destroyed)throw new Error("Hash instance has been destroyed");if(P&&A.finished)throw new Error("Hash#digest() has already been called")}function c(A,P){i(A);const I=P.outputLen;if(A.length>>P}function T(A,P){return A<>>32-P>>>0}e.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function w(A){return A<<24&4278190080|A<<8&16711680|A>>>8&65280|A>>>24&255}e.swap8IfBE=e.isLE?A=>A:A=>w(A),e.byteSwapIfBE=e.swap8IfBE;function p(A){for(let P=0;PA:p;const O=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",S=Array.from({length:256},(A,P)=>P.toString(16).padStart(2,"0"));function m(A){if(i(A),O)return A.toHex();let P="";for(let I=0;I=j._0&&A<=j._9)return A-j._0;if(A>=j.A&&A<=j.F)return A-(j.A-10);if(A>=j.a&&A<=j.f)return A-(j.a-10)}function y(A){if(typeof A!="string")throw new Error("hex string expected, got "+typeof A);if(O)return Uint8Array.fromHex(A);const P=A.length,I=P/2;if(P%2)throw new Error("hex string expected, got unpadded hex of length "+P);const x=new Uint8Array(I);for(let N=0,U=0;N{};e.nextTick=g;async function E(A,P,I){let x=Date.now();for(let N=0;N=0&&UA().update(v(x)).digest(),I=A();return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=()=>A(),P}function k(A){const P=(x,N)=>A(N).update(v(x)).digest(),I=A({});return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=x=>A(x),P}function h(A){const P=(x,N)=>A(N).update(v(x)).digest(),I=A({});return P.outputLen=I.outputLen,P.blockLen=I.blockLen,P.create=x=>A(x),P}e.wrapConstructor=F,e.wrapConstructorWithOpts=k,e.wrapXOFConstructorWithOpts=h;function M(A=32){if(t.crypto&&typeof t.crypto.getRandomValues=="function")return t.crypto.getRandomValues(new Uint8Array(A));if(t.crypto&&typeof t.crypto.randomBytes=="function")return Uint8Array.from(t.crypto.randomBytes(A));throw new Error("crypto.getRandomValues must be defined")}})(uf)),uf}var I1;function O_(){if(I1)return Je;I1=1,Object.defineProperty(Je,"__esModule",{value:!0}),Je.SHA512_IV=Je.SHA384_IV=Je.SHA224_IV=Je.SHA256_IV=Je.HashMD=void 0,Je.setBigUint64=t,Je.Chi=n,Je.Maj=r;const e=Ar();function t(a,o,c,u){if(typeof a.setBigUint64=="function")return a.setBigUint64(o,c,u);const d=BigInt(32),l=BigInt(4294967295),f=Number(c>>d&l),b=Number(c&l),T=u?4:0,w=u?0:4;a.setUint32(o+T,f,u),a.setUint32(o+w,b,u)}function n(a,o,c){return a&o^~a&c}function r(a,o,c){return a&o^a&c^o&c}class i extends e.Hash{constructor(o,c,u,d){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=o,this.outputLen=c,this.padOffset=u,this.isLE=d,this.buffer=new Uint8Array(o),this.view=(0,e.createView)(this.buffer)}update(o){(0,e.aexists)(this),o=(0,e.toBytes)(o),(0,e.abytes)(o);const{view:c,buffer:u,blockLen:d}=this,l=o.length;for(let f=0;fd-f&&(this.process(u,0),f=0);for(let O=f;Op.length)throw new Error("_sha2: outputLen bigger than state");for(let O=0;Onew i);const a=Math.pow(2,32),o=Array.from({length:64},(B,_)=>Math.floor(a*Math.abs(Math.sin(_+1)))),c=n.slice(0,4),u=new Uint32Array(16);class d extends e.HashMD{constructor(){super(64,16,8,!0),this.A=c[0]|0,this.B=c[1]|0,this.C=c[2]|0,this.D=c[3]|0}get(){const{A:_,B:v,C,D:q}=this;return[_,v,C,q]}set(_,v,C,q){this.A=_|0,this.B=v|0,this.C=C|0,this.D=q|0}process(_,v){for(let F=0;F<16;F++,v+=4)u[F]=_.getUint32(v,!0);let{A:C,B:q,C:R,D:H}=this;for(let F=0;F<64;F++){let k,h,M;F<16?(k=(0,e.Chi)(q,R,H),h=F,M=[7,12,17,22]):F<32?(k=(0,e.Chi)(H,q,R),h=(5*F+1)%16,M=[5,9,14,20]):F<48?(k=q^R^H,h=(3*F+5)%16,M=[4,11,16,23]):(k=R^(q|~H),h=7*F%16,M=[6,10,15,21]),k=k+C+o[F]+u[h],C=H,H=R,R=q,q=q+(0,t.rotl)(k,M[F%4])}C=C+this.A|0,q=q+this.B|0,R=R+this.C|0,H=H+this.D|0,this.set(C,q,R,H)}roundClean(){(0,t.clean)(u)}destroy(){this.set(0,0,0,0),(0,t.clean)(this.buffer)}}tt.MD5=d,tt.md5=(0,t.createHasher)(()=>new d);const l=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),f=Uint8Array.from(new Array(16).fill(0).map((B,_)=>_)),b=f.map(B=>(9*B+5)%16),T=(()=>{const v=[[f],[b]];for(let C=0;C<4;C++)for(let q of v)q.push(q[C].map(R=>l[R]));return v})(),w=T[0],p=T[1],O=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(B=>Uint8Array.from(B)),S=w.map((B,_)=>B.map(v=>O[_][v])),m=p.map((B,_)=>B.map(v=>O[_][v])),j=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),s=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function y(B,_,v,C){return B===0?_^v^C:B===1?_&v|~_&C:B===2?(_|~v)^C:B===3?_&C|v&~C:_^(v|~C)}const g=new Uint32Array(16);class E extends e.HashMD{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:_,h1:v,h2:C,h3:q,h4:R}=this;return[_,v,C,q,R]}set(_,v,C,q,R){this.h0=_|0,this.h1=v|0,this.h2=C|0,this.h3=q|0,this.h4=R|0}process(_,v){for(let I=0;I<16;I++,v+=4)g[I]=_.getUint32(v,!0);let C=this.h0|0,q=C,R=this.h1|0,H=R,F=this.h2|0,k=F,h=this.h3|0,M=h,A=this.h4|0,P=A;for(let I=0;I<5;I++){const x=4-I,N=j[I],U=s[I],L=w[I],z=p[I],D=S[I],J=m[I];for(let Z=0;Z<16;Z++){const Y=(0,t.rotl)(C+y(I,R,F,h)+g[L[Z]]+N,D[Z])+A|0;C=A,A=h,h=(0,t.rotl)(F,10)|0,F=R,R=Y}for(let Z=0;Z<16;Z++){const Y=(0,t.rotl)(q+y(x,H,k,M)+g[z[Z]]+U,J[Z])+P|0;q=P,P=M,M=(0,t.rotl)(k,10)|0,k=H,H=Y}}this.set(this.h1+F+M|0,this.h2+h+P|0,this.h3+A+q|0,this.h4+C+H|0,this.h0+R+k|0)}roundClean(){(0,t.clean)(g)}destroy(){this.destroyed=!0,(0,t.clean)(this.buffer),this.set(0,0,0,0,0)}}return tt.RIPEMD160=E,tt.ripemd160=(0,t.createHasher)(()=>new E),tt}var R1;function i6(){if(R1)return Dr;R1=1,Object.defineProperty(Dr,"__esModule",{value:!0}),Dr.ripemd160=Dr.RIPEMD160=void 0;const e=o6();return Dr.RIPEMD160=e.RIPEMD160,Dr.ripemd160=e.ripemd160,Dr}var Be={},de={},O1;function C_(){if(O1)return de;O1=1,Object.defineProperty(de,"__esModule",{value:!0}),de.toBig=de.shrSL=de.shrSH=de.rotrSL=de.rotrSH=de.rotrBL=de.rotrBH=de.rotr32L=de.rotr32H=de.rotlSL=de.rotlSH=de.rotlBL=de.rotlBH=de.add5L=de.add5H=de.add4L=de.add4H=de.add3L=de.add3H=void 0,de.add=S,de.fromBig=n,de.split=r;const e=BigInt(2**32-1),t=BigInt(32);function n(_,v=!1){return v?{h:Number(_&e),l:Number(_>>t&e)}:{h:Number(_>>t&e)|0,l:Number(_&e)|0}}function r(_,v=!1){const C=_.length;let q=new Uint32Array(C),R=new Uint32Array(C);for(let H=0;HBigInt(_>>>0)<>>0);de.toBig=i;const a=(_,v,C)=>_>>>C;de.shrSH=a;const o=(_,v,C)=>_<<32-C|v>>>C;de.shrSL=o;const c=(_,v,C)=>_>>>C|v<<32-C;de.rotrSH=c;const u=(_,v,C)=>_<<32-C|v>>>C;de.rotrSL=u;const d=(_,v,C)=>_<<64-C|v>>>C-32;de.rotrBH=d;const l=(_,v,C)=>_>>>C-32|v<<64-C;de.rotrBL=l;const f=(_,v)=>v;de.rotr32H=f;const b=(_,v)=>_;de.rotr32L=b;const T=(_,v,C)=>_<>>32-C;de.rotlSH=T;const w=(_,v,C)=>v<>>32-C;de.rotlSL=w;const p=(_,v,C)=>v<>>64-C;de.rotlBH=p;const O=(_,v,C)=>_<>>64-C;de.rotlBL=O;function S(_,v,C,q){const R=(v>>>0)+(q>>>0);return{h:_+C+(R/2**32|0)|0,l:R|0}}const m=(_,v,C)=>(_>>>0)+(v>>>0)+(C>>>0);de.add3L=m;const j=(_,v,C,q)=>v+C+q+(_/2**32|0)|0;de.add3H=j;const s=(_,v,C,q)=>(_>>>0)+(v>>>0)+(C>>>0)+(q>>>0);de.add4L=s;const y=(_,v,C,q,R)=>v+C+q+R+(_/2**32|0)|0;de.add4H=y;const g=(_,v,C,q,R)=>(_>>>0)+(v>>>0)+(C>>>0)+(q>>>0)+(R>>>0);de.add5L=g;const E=(_,v,C,q,R,H)=>v+C+q+R+H+(_/2**32|0)|0;de.add5H=E;const B={fromBig:n,split:r,toBig:i,shrSH:a,shrSL:o,rotrSH:c,rotrSL:u,rotrBH:d,rotrBL:l,rotr32H:f,rotr32L:b,rotlSH:T,rotlSL:w,rotlBH:p,rotlBL:O,add:S,add3L:m,add3H:j,add4L:s,add4H:y,add5H:E,add5L:g};return de.default=B,de}var C1;function s6(){if(C1)return Be;C1=1,Object.defineProperty(Be,"__esModule",{value:!0}),Be.shake256=Be.shake128=Be.keccak_512=Be.keccak_384=Be.keccak_256=Be.keccak_224=Be.sha3_512=Be.sha3_384=Be.sha3_256=Be.sha3_224=Be.Keccak=void 0,Be.keccakP=O;const e=C_(),t=Ar(),n=BigInt(0),r=BigInt(1),i=BigInt(2),a=BigInt(7),o=BigInt(256),c=BigInt(113),u=[],d=[],l=[];for(let s=0,y=r,g=1,E=0;s<24;s++){[g,E]=[E,(2*g+3*E)%5],u.push(2*(5*E+g)),d.push((s+1)*(s+2)/2%64);let B=n;for(let _=0;_<7;_++)y=(y<>a)*c)%o,y&i&&(B^=r<<(r<g>32?(0,e.rotlBH)(s,y,g):(0,e.rotlSH)(s,y,g),p=(s,y,g)=>g>32?(0,e.rotlBL)(s,y,g):(0,e.rotlSL)(s,y,g);function O(s,y=24){const g=new Uint32Array(10);for(let E=24-y;E<24;E++){for(let v=0;v<10;v++)g[v]=s[v]^s[v+10]^s[v+20]^s[v+30]^s[v+40];for(let v=0;v<10;v+=2){const C=(v+8)%10,q=(v+2)%10,R=g[q],H=g[q+1],F=w(R,H,1)^g[C],k=p(R,H,1)^g[C+1];for(let h=0;h<50;h+=10)s[v+h]^=F,s[v+h+1]^=k}let B=s[2],_=s[3];for(let v=0;v<24;v++){const C=d[v],q=w(B,_,C),R=p(B,_,C),H=u[v];B=s[H],_=s[H+1],s[H]=q,s[H+1]=R}for(let v=0;v<50;v+=10){for(let C=0;C<10;C++)g[C]=s[v+C];for(let C=0;C<10;C++)s[v+C]^=~g[(C+2)%10]&g[(C+4)%10]}s[0]^=b[E],s[1]^=T[E]}(0,t.clean)(g)}class S extends t.Hash{constructor(y,g,E,B=!1,_=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=y,this.suffix=g,this.outputLen=E,this.enableXOF=B,this.rounds=_,(0,t.anumber)(E),!(0=E&&this.keccak();const v=Math.min(E-this.posOut,_-B);y.set(g.subarray(this.posOut,this.posOut+v),B),this.posOut+=v,B+=v}return y}xofInto(y){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(y)}xof(y){return(0,t.anumber)(y),this.xofInto(new Uint8Array(y))}digestInto(y){if((0,t.aoutput)(y,this),this.finished)throw new Error("digest() was already called");return this.writeInto(y),this.destroy(),y}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,(0,t.clean)(this.state)}_cloneInto(y){const{blockLen:g,suffix:E,outputLen:B,rounds:_,enableXOF:v}=this;return y||(y=new S(g,E,B,v,_)),y.state32.set(this.state32),y.pos=this.pos,y.posOut=this.posOut,y.finished=this.finished,y.rounds=_,y.suffix=E,y.outputLen=B,y.enableXOF=v,y.destroyed=this.destroyed,y}}Be.Keccak=S;const m=(s,y,g)=>(0,t.createHasher)(()=>new S(y,s,g));Be.sha3_224=m(6,144,224/8),Be.sha3_256=m(6,136,256/8),Be.sha3_384=m(6,104,384/8),Be.sha3_512=m(6,72,512/8),Be.keccak_224=m(1,144,224/8),Be.keccak_256=m(1,136,256/8),Be.keccak_384=m(1,104,384/8),Be.keccak_512=m(1,72,512/8);const j=(s,y,g)=>(0,t.createXOFer)((E={})=>new S(y,s,E.dkLen===void 0?g:E.dkLen,!0));return Be.shake128=j(31,168,128/8),Be.shake256=j(31,136,256/8),Be}var At={},je={},x1;function x_(){if(x1)return je;x1=1,Object.defineProperty(je,"__esModule",{value:!0}),je.sha512_224=je.sha512_256=je.sha384=je.sha512=je.sha224=je.sha256=je.SHA512_256=je.SHA512_224=je.SHA384=je.SHA512=je.SHA224=je.SHA256=void 0;const e=O_(),t=C_(),n=Ar(),r=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),i=new Uint32Array(64);class a extends e.HashMD{constructor(j=32){super(64,j,8,!1),this.A=e.SHA256_IV[0]|0,this.B=e.SHA256_IV[1]|0,this.C=e.SHA256_IV[2]|0,this.D=e.SHA256_IV[3]|0,this.E=e.SHA256_IV[4]|0,this.F=e.SHA256_IV[5]|0,this.G=e.SHA256_IV[6]|0,this.H=e.SHA256_IV[7]|0}get(){const{A:j,B:s,C:y,D:g,E,F:B,G:_,H:v}=this;return[j,s,y,g,E,B,_,v]}set(j,s,y,g,E,B,_,v){this.A=j|0,this.B=s|0,this.C=y|0,this.D=g|0,this.E=E|0,this.F=B|0,this.G=_|0,this.H=v|0}process(j,s){for(let R=0;R<16;R++,s+=4)i[R]=j.getUint32(s,!1);for(let R=16;R<64;R++){const H=i[R-15],F=i[R-2],k=(0,n.rotr)(H,7)^(0,n.rotr)(H,18)^H>>>3,h=(0,n.rotr)(F,17)^(0,n.rotr)(F,19)^F>>>10;i[R]=h+i[R-7]+k+i[R-16]|0}let{A:y,B:g,C:E,D:B,E:_,F:v,G:C,H:q}=this;for(let R=0;R<64;R++){const H=(0,n.rotr)(_,6)^(0,n.rotr)(_,11)^(0,n.rotr)(_,25),F=q+H+(0,e.Chi)(_,v,C)+r[R]+i[R]|0,h=((0,n.rotr)(y,2)^(0,n.rotr)(y,13)^(0,n.rotr)(y,22))+(0,e.Maj)(y,g,E)|0;q=C,C=v,v=_,_=B+F|0,B=E,E=g,g=y,y=F+h|0}y=y+this.A|0,g=g+this.B|0,E=E+this.C|0,B=B+this.D|0,_=_+this.E|0,v=v+this.F|0,C=C+this.G|0,q=q+this.H|0,this.set(y,g,E,B,_,v,C,q)}roundClean(){(0,n.clean)(i)}destroy(){this.set(0,0,0,0,0,0,0,0),(0,n.clean)(this.buffer)}}je.SHA256=a;class o extends a{constructor(){super(28),this.A=e.SHA224_IV[0]|0,this.B=e.SHA224_IV[1]|0,this.C=e.SHA224_IV[2]|0,this.D=e.SHA224_IV[3]|0,this.E=e.SHA224_IV[4]|0,this.F=e.SHA224_IV[5]|0,this.G=e.SHA224_IV[6]|0,this.H=e.SHA224_IV[7]|0}}je.SHA224=o;const c=t.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(m=>BigInt(m))),u=c[0],d=c[1],l=new Uint32Array(80),f=new Uint32Array(80);class b extends e.HashMD{constructor(j=64){super(128,j,16,!1),this.Ah=e.SHA512_IV[0]|0,this.Al=e.SHA512_IV[1]|0,this.Bh=e.SHA512_IV[2]|0,this.Bl=e.SHA512_IV[3]|0,this.Ch=e.SHA512_IV[4]|0,this.Cl=e.SHA512_IV[5]|0,this.Dh=e.SHA512_IV[6]|0,this.Dl=e.SHA512_IV[7]|0,this.Eh=e.SHA512_IV[8]|0,this.El=e.SHA512_IV[9]|0,this.Fh=e.SHA512_IV[10]|0,this.Fl=e.SHA512_IV[11]|0,this.Gh=e.SHA512_IV[12]|0,this.Gl=e.SHA512_IV[13]|0,this.Hh=e.SHA512_IV[14]|0,this.Hl=e.SHA512_IV[15]|0}get(){const{Ah:j,Al:s,Bh:y,Bl:g,Ch:E,Cl:B,Dh:_,Dl:v,Eh:C,El:q,Fh:R,Fl:H,Gh:F,Gl:k,Hh:h,Hl:M}=this;return[j,s,y,g,E,B,_,v,C,q,R,H,F,k,h,M]}set(j,s,y,g,E,B,_,v,C,q,R,H,F,k,h,M){this.Ah=j|0,this.Al=s|0,this.Bh=y|0,this.Bl=g|0,this.Ch=E|0,this.Cl=B|0,this.Dh=_|0,this.Dl=v|0,this.Eh=C|0,this.El=q|0,this.Fh=R|0,this.Fl=H|0,this.Gh=F|0,this.Gl=k|0,this.Hh=h|0,this.Hl=M|0}process(j,s){for(let I=0;I<16;I++,s+=4)l[I]=j.getUint32(s),f[I]=j.getUint32(s+=4);for(let I=16;I<80;I++){const x=l[I-15]|0,N=f[I-15]|0,U=t.rotrSH(x,N,1)^t.rotrSH(x,N,8)^t.shrSH(x,N,7),L=t.rotrSL(x,N,1)^t.rotrSL(x,N,8)^t.shrSL(x,N,7),z=l[I-2]|0,D=f[I-2]|0,J=t.rotrSH(z,D,19)^t.rotrBH(z,D,61)^t.shrSH(z,D,6),Z=t.rotrSL(z,D,19)^t.rotrBL(z,D,61)^t.shrSL(z,D,6),Y=t.add4L(L,Z,f[I-7],f[I-16]),X=t.add4H(Y,U,J,l[I-7],l[I-16]);l[I]=X|0,f[I]=Y|0}let{Ah:y,Al:g,Bh:E,Bl:B,Ch:_,Cl:v,Dh:C,Dl:q,Eh:R,El:H,Fh:F,Fl:k,Gh:h,Gl:M,Hh:A,Hl:P}=this;for(let I=0;I<80;I++){const x=t.rotrSH(R,H,14)^t.rotrSH(R,H,18)^t.rotrBH(R,H,41),N=t.rotrSL(R,H,14)^t.rotrSL(R,H,18)^t.rotrBL(R,H,41),U=R&F^~R&h,L=H&k^~H&M,z=t.add5L(P,N,L,d[I],f[I]),D=t.add5H(z,A,x,U,u[I],l[I]),J=z|0,Z=t.rotrSH(y,g,28)^t.rotrBH(y,g,34)^t.rotrBH(y,g,39),Y=t.rotrSL(y,g,28)^t.rotrBL(y,g,34)^t.rotrBL(y,g,39),X=y&E^y&_^E&_,oe=g&B^g&v^B&v;A=h|0,P=M|0,h=F|0,M=k|0,F=R|0,k=H|0,{h:R,l:H}=t.add(C|0,q|0,D|0,J|0),C=_|0,q=v|0,_=E|0,v=B|0,E=y|0,B=g|0;const W=t.add3L(J,Y,oe);y=t.add3H(W,D,Z,X),g=W|0}({h:y,l:g}=t.add(this.Ah|0,this.Al|0,y|0,g|0)),{h:E,l:B}=t.add(this.Bh|0,this.Bl|0,E|0,B|0),{h:_,l:v}=t.add(this.Ch|0,this.Cl|0,_|0,v|0),{h:C,l:q}=t.add(this.Dh|0,this.Dl|0,C|0,q|0),{h:R,l:H}=t.add(this.Eh|0,this.El|0,R|0,H|0),{h:F,l:k}=t.add(this.Fh|0,this.Fl|0,F|0,k|0),{h,l:M}=t.add(this.Gh|0,this.Gl|0,h|0,M|0),{h:A,l:P}=t.add(this.Hh|0,this.Hl|0,A|0,P|0),this.set(y,g,E,B,_,v,C,q,R,H,F,k,h,M,A,P)}roundClean(){(0,n.clean)(l,f)}destroy(){(0,n.clean)(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}je.SHA512=b;class T extends b{constructor(){super(48),this.Ah=e.SHA384_IV[0]|0,this.Al=e.SHA384_IV[1]|0,this.Bh=e.SHA384_IV[2]|0,this.Bl=e.SHA384_IV[3]|0,this.Ch=e.SHA384_IV[4]|0,this.Cl=e.SHA384_IV[5]|0,this.Dh=e.SHA384_IV[6]|0,this.Dl=e.SHA384_IV[7]|0,this.Eh=e.SHA384_IV[8]|0,this.El=e.SHA384_IV[9]|0,this.Fh=e.SHA384_IV[10]|0,this.Fl=e.SHA384_IV[11]|0,this.Gh=e.SHA384_IV[12]|0,this.Gl=e.SHA384_IV[13]|0,this.Hh=e.SHA384_IV[14]|0,this.Hl=e.SHA384_IV[15]|0}}je.SHA384=T;const w=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),p=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class O extends b{constructor(){super(28),this.Ah=w[0]|0,this.Al=w[1]|0,this.Bh=w[2]|0,this.Bl=w[3]|0,this.Ch=w[4]|0,this.Cl=w[5]|0,this.Dh=w[6]|0,this.Dl=w[7]|0,this.Eh=w[8]|0,this.El=w[9]|0,this.Fh=w[10]|0,this.Fl=w[11]|0,this.Gh=w[12]|0,this.Gl=w[13]|0,this.Hh=w[14]|0,this.Hl=w[15]|0}}je.SHA512_224=O;class S extends b{constructor(){super(32),this.Ah=p[0]|0,this.Al=p[1]|0,this.Bh=p[2]|0,this.Bl=p[3]|0,this.Ch=p[4]|0,this.Cl=p[5]|0,this.Dh=p[6]|0,this.Dl=p[7]|0,this.Eh=p[8]|0,this.El=p[9]|0,this.Fh=p[10]|0,this.Fl=p[11]|0,this.Gh=p[12]|0,this.Gl=p[13]|0,this.Hh=p[14]|0,this.Hl=p[15]|0}}return je.SHA512_256=S,je.sha256=(0,n.createHasher)(()=>new a),je.sha224=(0,n.createHasher)(()=>new o),je.sha512=(0,n.createHasher)(()=>new b),je.sha384=(0,n.createHasher)(()=>new T),je.sha512_256=(0,n.createHasher)(()=>new S),je.sha512_224=(0,n.createHasher)(()=>new O),je}var q1;function a6(){if(q1)return At;q1=1,Object.defineProperty(At,"__esModule",{value:!0}),At.sha224=At.SHA224=At.sha256=At.SHA256=void 0;const e=x_();return At.SHA256=e.SHA256,At.sha256=e.sha256,At.SHA224=e.SHA224,At.sha224=e.sha224,At}var H1;function s0(){if(H1)return zr;H1=1,Object.defineProperty(zr,"__esModule",{value:!0}),zr.keccak256=a,zr.ripemd160=o,zr.sha256=c,zr.validate=u;const e=i6(),t=s6(),n=a6(),r=Mt(),i=We();function a(d,l={}){const{as:f=typeof d=="string"?"Hex":"Bytes"}=l,b=(0,t.keccak_256)(r.from(d));return f==="Bytes"?b:i.fromBytes(b)}function o(d,l={}){const{as:f=typeof d=="string"?"Hex":"Bytes"}=l,b=(0,e.ripemd160)(r.from(d));return f==="Bytes"?b:i.fromBytes(b)}function c(d,l={}){const{as:f=typeof d=="string"?"Hex":"Bytes"}=l,b=(0,n.sha256)(r.from(d));return f==="Bytes"?b:i.fromBytes(b)}function u(d){return i.validate(d)&&i.size(d)===32}return zr}var Fe={},M1;function q_(){if(M1)return Fe;M1=1,Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.InvalidSerializedSizeError=Fe.InvalidUncompressedPrefixError=Fe.InvalidCompressedPrefixError=Fe.InvalidPrefixError=Fe.InvalidError=void 0,Fe.assert=i,Fe.compress=a,Fe.from=o,Fe.fromBytes=c,Fe.fromHex=u,Fe.toBytes=d,Fe.toHex=l,Fe.validate=f;const e=Mt(),t=gt(),n=We(),r=ed();function i(S,m={}){const{compressed:j}=m,{prefix:s,x:y,y:g}=S;if(j===!1||typeof y=="bigint"&&typeof g=="bigint"){if(s!==4)throw new T({prefix:s,cause:new p});return}if(j===!0||typeof y=="bigint"&&typeof g>"u"){if(s!==3&&s!==2)throw new T({prefix:s,cause:new w});return}throw new b({publicKey:S})}function a(S){const{x:m,y:j}=S;return{prefix:j%2n===0n?2:3,x:m}}function o(S){const m=(()=>{if(n.validate(S))return u(S);if(e.validate(S))return c(S);const{prefix:j,x:s,y}=S;return typeof s=="bigint"&&typeof y=="bigint"?{prefix:j??4,x:s,y}:{prefix:j,x:s}})();return i(m),m}function c(S){return u(n.fromBytes(S))}function u(S){if(S.length!==132&&S.length!==130&&S.length!==68)throw new O({publicKey:S});if(S.length===130){const s=BigInt(n.slice(S,0,32)),y=BigInt(n.slice(S,32,64));return{prefix:4,x:s,y}}if(S.length===132){const s=Number(n.slice(S,0,1)),y=BigInt(n.slice(S,1,33)),g=BigInt(n.slice(S,33,65));return{prefix:s,x:y,y:g}}const m=Number(n.slice(S,0,1)),j=BigInt(n.slice(S,1,33));return{prefix:m,x:j}}function d(S,m={}){return e.fromHex(l(S,m))}function l(S,m={}){i(S);const{prefix:j,x:s,y}=S,{includePrefix:g=!0}=m;return n.concat(g?n.fromNumber(j,{size:1}):"0x",n.fromNumber(s,{size:32}),typeof y=="bigint"?n.fromNumber(y,{size:32}):"0x")}function f(S,m={}){try{return i(S,m),!0}catch{return!1}}class b extends t.BaseError{constructor({publicKey:m}){super(`Value \`${r.stringify(m)}\` is not a valid public key.`,{metaMessages:["Public key must contain:","- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidError"})}}Fe.InvalidError=b;class T extends t.BaseError{constructor({prefix:m,cause:j}){super(`Prefix "${m}" is invalid.`,{cause:j}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidPrefixError"})}}Fe.InvalidPrefixError=T;class w extends t.BaseError{constructor(){super("Prefix must be 2 or 3 for compressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidCompressedPrefixError"})}}Fe.InvalidCompressedPrefixError=w;class p extends t.BaseError{constructor(){super("Prefix must be 4 for uncompressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidUncompressedPrefixError"})}}Fe.InvalidUncompressedPrefixError=p;class O extends t.BaseError{constructor({publicKey:m}){super(`Value \`${m}\` is an invalid public key size.`,{metaMessages:["Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).",`Received ${n.size(n.from(m))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidSerializedSizeError"})}}return Fe.InvalidSerializedSizeError=O,Fe}var k1;function dd(){if(k1)return et;k1=1,Object.defineProperty(et,"__esModule",{value:!0}),et.InvalidChecksumError=et.InvalidInputError=et.InvalidAddressError=void 0,et.assert=o,et.checksum=c,et.from=u,et.fromPublicKey=d,et.isEqual=l,et.validate=f;const e=Mt(),t=r6(),n=gt(),r=s0(),i=q_(),a=/^0x[a-fA-F0-9]{40}$/;function o(p,O={}){const{strict:S=!0}=O;if(!a.test(p))throw new b({address:p,cause:new T});if(S){if(p.toLowerCase()===p)return;if(c(p)!==p)throw new b({address:p,cause:new w})}}function c(p){if(t.checksum.has(p))return t.checksum.get(p);o(p,{strict:!1});const O=p.substring(2).toLowerCase(),S=r.keccak256(e.fromString(O),{as:"Bytes"}),m=O.split("");for(let s=0;s<40;s+=2)S[s>>1]>>4>=8&&m[s]&&(m[s]=m[s].toUpperCase()),(S[s>>1]&15)>=8&&m[s+1]&&(m[s+1]=m[s+1].toUpperCase());const j=`0x${m.join("")}`;return t.checksum.set(p,j),j}function u(p,O={}){const{checksum:S=!1}=O;return o(p),S?c(p):p}function d(p,O={}){const S=r.keccak256(`0x${i.toHex(p).slice(4)}`).substring(26);return u(`0x${S}`,O)}function l(p,O){return o(p,{strict:!1}),o(O,{strict:!1}),p.toLowerCase()===O.toLowerCase()}function f(p,O={}){const{strict:S=!0}=O??{};try{return o(p,{strict:S}),!0}catch{return!1}}class b extends n.BaseError{constructor({address:O,cause:S}){super(`Address "${O}" is invalid.`,{cause:S}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidAddressError"})}}et.InvalidAddressError=b;class T extends n.BaseError{constructor(){super("Address is not a 20 byte (40 hexadecimal character) value."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidInputError"})}}et.InvalidInputError=T;class w extends n.BaseError{constructor(){super("Address does not match its checksum counterpart."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidChecksumError"})}}return et.InvalidChecksumError=w,et}var xe={},G={},N1;function a0(){return N1||(N1=1,Object.defineProperty(G,"__esModule",{value:!0}),G.minInt120=G.minInt112=G.minInt104=G.minInt96=G.minInt88=G.minInt80=G.minInt72=G.minInt64=G.minInt56=G.minInt48=G.minInt40=G.minInt32=G.minInt24=G.minInt16=G.minInt8=G.maxInt256=G.maxInt248=G.maxInt240=G.maxInt232=G.maxInt224=G.maxInt216=G.maxInt208=G.maxInt200=G.maxInt192=G.maxInt184=G.maxInt176=G.maxInt168=G.maxInt160=G.maxInt152=G.maxInt144=G.maxInt136=G.maxInt128=G.maxInt120=G.maxInt112=G.maxInt104=G.maxInt96=G.maxInt88=G.maxInt80=G.maxInt72=G.maxInt64=G.maxInt56=G.maxInt48=G.maxInt40=G.maxInt32=G.maxInt24=G.maxInt16=G.maxInt8=G.integerRegex=G.bytesRegex=G.arrayRegex=void 0,G.maxUint256=G.maxUint248=G.maxUint240=G.maxUint232=G.maxUint224=G.maxUint216=G.maxUint208=G.maxUint200=G.maxUint192=G.maxUint184=G.maxUint176=G.maxUint168=G.maxUint160=G.maxUint152=G.maxUint144=G.maxUint136=G.maxUint128=G.maxUint120=G.maxUint112=G.maxUint104=G.maxUint96=G.maxUint88=G.maxUint80=G.maxUint72=G.maxUint64=G.maxUint56=G.maxUint48=G.maxUint40=G.maxUint32=G.maxUint24=G.maxUint16=G.maxUint8=G.minInt256=G.minInt248=G.minInt240=G.minInt232=G.minInt224=G.minInt216=G.minInt208=G.minInt200=G.minInt192=G.minInt184=G.minInt176=G.minInt168=G.minInt160=G.minInt152=G.minInt144=G.minInt136=G.minInt128=void 0,G.arrayRegex=/^(.*)\[([0-9]*)\]$/,G.bytesRegex=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,G.integerRegex=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,G.maxInt8=2n**(8n-1n)-1n,G.maxInt16=2n**(16n-1n)-1n,G.maxInt24=2n**(24n-1n)-1n,G.maxInt32=2n**(32n-1n)-1n,G.maxInt40=2n**(40n-1n)-1n,G.maxInt48=2n**(48n-1n)-1n,G.maxInt56=2n**(56n-1n)-1n,G.maxInt64=2n**(64n-1n)-1n,G.maxInt72=2n**(72n-1n)-1n,G.maxInt80=2n**(80n-1n)-1n,G.maxInt88=2n**(88n-1n)-1n,G.maxInt96=2n**(96n-1n)-1n,G.maxInt104=2n**(104n-1n)-1n,G.maxInt112=2n**(112n-1n)-1n,G.maxInt120=2n**(120n-1n)-1n,G.maxInt128=2n**(128n-1n)-1n,G.maxInt136=2n**(136n-1n)-1n,G.maxInt144=2n**(144n-1n)-1n,G.maxInt152=2n**(152n-1n)-1n,G.maxInt160=2n**(160n-1n)-1n,G.maxInt168=2n**(168n-1n)-1n,G.maxInt176=2n**(176n-1n)-1n,G.maxInt184=2n**(184n-1n)-1n,G.maxInt192=2n**(192n-1n)-1n,G.maxInt200=2n**(200n-1n)-1n,G.maxInt208=2n**(208n-1n)-1n,G.maxInt216=2n**(216n-1n)-1n,G.maxInt224=2n**(224n-1n)-1n,G.maxInt232=2n**(232n-1n)-1n,G.maxInt240=2n**(240n-1n)-1n,G.maxInt248=2n**(248n-1n)-1n,G.maxInt256=2n**(256n-1n)-1n,G.minInt8=-(2n**(8n-1n)),G.minInt16=-(2n**(16n-1n)),G.minInt24=-(2n**(24n-1n)),G.minInt32=-(2n**(32n-1n)),G.minInt40=-(2n**(40n-1n)),G.minInt48=-(2n**(48n-1n)),G.minInt56=-(2n**(56n-1n)),G.minInt64=-(2n**(64n-1n)),G.minInt72=-(2n**(72n-1n)),G.minInt80=-(2n**(80n-1n)),G.minInt88=-(2n**(88n-1n)),G.minInt96=-(2n**(96n-1n)),G.minInt104=-(2n**(104n-1n)),G.minInt112=-(2n**(112n-1n)),G.minInt120=-(2n**(120n-1n)),G.minInt128=-(2n**(128n-1n)),G.minInt136=-(2n**(136n-1n)),G.minInt144=-(2n**(144n-1n)),G.minInt152=-(2n**(152n-1n)),G.minInt160=-(2n**(160n-1n)),G.minInt168=-(2n**(168n-1n)),G.minInt176=-(2n**(176n-1n)),G.minInt184=-(2n**(184n-1n)),G.minInt192=-(2n**(192n-1n)),G.minInt200=-(2n**(200n-1n)),G.minInt208=-(2n**(208n-1n)),G.minInt216=-(2n**(216n-1n)),G.minInt224=-(2n**(224n-1n)),G.minInt232=-(2n**(232n-1n)),G.minInt240=-(2n**(240n-1n)),G.minInt248=-(2n**(248n-1n)),G.minInt256=-(2n**(256n-1n)),G.maxUint8=2n**8n-1n,G.maxUint16=2n**16n-1n,G.maxUint24=2n**24n-1n,G.maxUint32=2n**32n-1n,G.maxUint40=2n**40n-1n,G.maxUint48=2n**48n-1n,G.maxUint56=2n**56n-1n,G.maxUint64=2n**64n-1n,G.maxUint72=2n**72n-1n,G.maxUint80=2n**80n-1n,G.maxUint88=2n**88n-1n,G.maxUint96=2n**96n-1n,G.maxUint104=2n**104n-1n,G.maxUint112=2n**112n-1n,G.maxUint120=2n**120n-1n,G.maxUint128=2n**128n-1n,G.maxUint136=2n**136n-1n,G.maxUint144=2n**144n-1n,G.maxUint152=2n**152n-1n,G.maxUint160=2n**160n-1n,G.maxUint168=2n**168n-1n,G.maxUint176=2n**176n-1n,G.maxUint184=2n**184n-1n,G.maxUint192=2n**192n-1n,G.maxUint200=2n**200n-1n,G.maxUint208=2n**208n-1n,G.maxUint216=2n**216n-1n,G.maxUint224=2n**224n-1n,G.maxUint232=2n**232n-1n,G.maxUint240=2n**240n-1n,G.maxUint248=2n**248n-1n,G.maxUint256=2n**256n-1n),G}var F1;function c6(){if(F1)return xe;F1=1,Object.defineProperty(xe,"__esModule",{value:!0}),xe.decodeParameter=o,xe.decodeAddress=d,xe.decodeArray=l,xe.decodeBool=f,xe.decodeBytes=b,xe.decodeNumber=T,xe.decodeTuple=w,xe.decodeString=p,xe.prepareParameters=O,xe.prepareParameter=S,xe.encode=m,xe.encodeAddress=j,xe.encodeArray=s,xe.encodeBytes=y,xe.encodeBoolean=g,xe.encodeNumber=E,xe.encodeString=B,xe.encodeTuple=_,xe.getArrayComponents=v,xe.hasDynamicChild=C;const e=mi(),t=dd(),n=Mt(),r=gt(),i=We(),a=a0();function o(q,R,H){const{checksumAddress:F,staticPosition:k}=H,h=v(R.type);if(h){const[M,A]=h;return l(q,{...R,type:A},{checksumAddress:F,length:M,staticPosition:k})}if(R.type==="tuple")return w(q,R,{checksumAddress:F,staticPosition:k});if(R.type==="address")return d(q,{checksum:F});if(R.type==="bool")return f(q);if(R.type.startsWith("bytes"))return b(q,R,{staticPosition:k});if(R.type.startsWith("uint")||R.type.startsWith("int"))return T(q,R);if(R.type==="string")return p(q,{staticPosition:k});throw new e.InvalidTypeError(R.type)}const c=32,u=32;function d(q,R={}){const{checksum:H=!1}=R,F=q.readBytes(32);return[(h=>H?t.checksum(h):h)(i.fromBytes(n.slice(F,-20))),32]}function l(q,R,H){const{checksumAddress:F,length:k,staticPosition:h}=H;if(!k){const P=n.toNumber(q.readBytes(u)),I=h+P,x=I+c;q.setPosition(I);const N=n.toNumber(q.readBytes(c)),U=C(R);let L=0;const z=[];for(let D=0;D48?n.toBigInt(k,{signed:H}):n.toNumber(k,{signed:H}),32]}function w(q,R,H){const{checksumAddress:F,staticPosition:k}=H,h=R.components.length===0||R.components.some(({name:P})=>!P),M=h?[]:{};let A=0;if(C(R)){const P=n.toNumber(q.readBytes(u)),I=k+P;for(let x=0;x0?i.concat(I,P):I}}if(M)return{dynamic:!0,encoded:P}}return{dynamic:!1,encoded:i.concat(...A.map(({encoded:P})=>P))}}function y(q,{type:R}){const[,H]=R.split("bytes"),F=i.size(q);if(!H){let k=q;return F%32!==0&&(k=i.padRight(k,Math.ceil((q.length-2)/2/32)*32)),{dynamic:!0,encoded:i.concat(i.padLeft(i.fromNumber(F,{size:32})),k)}}if(F!==Number.parseInt(H,10))throw new e.BytesSizeMismatchError({expectedSize:Number.parseInt(H,10),value:q});return{dynamic:!1,encoded:i.padRight(q)}}function g(q){if(typeof q!="boolean")throw new r.BaseError(`Invalid boolean value: "${q}" (type: ${typeof q}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:i.padLeft(i.fromBoolean(q))}}function E(q,{signed:R,size:H}){if(typeof H=="number"){const F=2n**(BigInt(H)-(R?1n:0n))-1n,k=R?-F-1n:0n;if(q>F||qM))}}function v(q){const R=q.match(/^(.*)\[(\d+)?\]$/);return R?[R[2]?Number(R[2]):null,R[1]]:void 0}function C(q){const{type:R}=q;if(R==="string"||R==="bytes"||R.endsWith("[]"))return!0;if(R==="tuple")return q.components?.some(C);const H=v(q.type);return!!(H&&C({...q,type:H[1]}))}return xe}var Ht={},L1;function H_(){if(L1)return Ht;L1=1,Object.defineProperty(Ht,"__esModule",{value:!0}),Ht.RecursiveReadLimitExceededError=Ht.PositionOutOfBoundsError=Ht.NegativeOffsetError=void 0,Ht.create=n;const e=gt(),t={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new a({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(o){if(o<0||o>this.bytes.length-1)throw new i({length:this.bytes.length,position:o})},decrementPosition(o){if(o<0)throw new r({offset:o});const c=this.position-o;this.assertPosition(c),this.position=c},getReadCount(o){return this.positionReadCount.get(o||this.position)||0},incrementPosition(o){if(o<0)throw new r({offset:o});const c=this.position+o;this.assertPosition(c),this.position=c},inspectByte(o){const c=o??this.position;return this.assertPosition(c),this.bytes[c]},inspectBytes(o,c){const u=c??this.position;return this.assertPosition(u+o-1),this.bytes.subarray(u,u+o)},inspectUint8(o){const c=o??this.position;return this.assertPosition(c),this.bytes[c]},inspectUint16(o){const c=o??this.position;return this.assertPosition(c+1),this.dataView.getUint16(c)},inspectUint24(o){const c=o??this.position;return this.assertPosition(c+2),(this.dataView.getUint16(c)<<8)+this.dataView.getUint8(c+2)},inspectUint32(o){const c=o??this.position;return this.assertPosition(c+3),this.dataView.getUint32(c)},pushByte(o){this.assertPosition(this.position),this.bytes[this.position]=o,this.position++},pushBytes(o){this.assertPosition(this.position+o.length-1),this.bytes.set(o,this.position),this.position+=o.length},pushUint8(o){this.assertPosition(this.position),this.bytes[this.position]=o,this.position++},pushUint16(o){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,o),this.position+=2},pushUint24(o){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,o>>8),this.dataView.setUint8(this.position+2,o&255),this.position+=3},pushUint32(o){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,o),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const o=this.inspectByte();return this.position++,o},readBytes(o,c){this.assertReadLimit(),this._touch();const u=this.inspectBytes(o);return this.position+=c??o,u},readUint8(){this.assertReadLimit(),this._touch();const o=this.inspectUint8();return this.position+=1,o},readUint16(){this.assertReadLimit(),this._touch();const o=this.inspectUint16();return this.position+=2,o},readUint24(){this.assertReadLimit(),this._touch();const o=this.inspectUint24();return this.position+=3,o},readUint32(){this.assertReadLimit(),this._touch();const o=this.inspectUint32();return this.position+=4,o},get remaining(){return this.bytes.length-this.position},setPosition(o){const c=this.position;return this.assertPosition(o),this.position=o,()=>this.position=c},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const o=this.getReadCount();this.positionReadCount.set(this.position,o+1),o>0&&this.recursiveReadCount++}};function n(o,{recursiveReadLimit:c=8192}={}){const u=Object.create(t);return u.bytes=o,u.dataView=new DataView(o.buffer,o.byteOffset,o.byteLength),u.positionReadCount=new Map,u.recursiveReadLimit=c,u}class r extends e.BaseError{constructor({offset:c}){super(`Offset \`${c}\` cannot be negative.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.NegativeOffsetError"})}}Ht.NegativeOffsetError=r;class i extends e.BaseError{constructor({length:c,position:u}){super(`Position \`${u}\` is out of bounds (\`0 < position < ${c}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.PositionOutOfBoundsError"})}}Ht.PositionOutOfBoundsError=i;class a extends e.BaseError{constructor({count:c,limit:u}){super(`Recursive read limit of \`${u}\` exceeded (recursive read count: \`${c}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.RecursiveReadLimitExceededError"})}}return Ht.RecursiveReadLimitExceededError=a,Ht}var U1;function mi(){if(U1)return Ce;U1=1,Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.InvalidTypeError=Ce.InvalidArrayError=Ce.LengthMismatchError=Ce.BytesSizeMismatchError=Ce.ArrayLengthMismatchError=Ce.ZeroDataError=Ce.DataSizeTooSmallError=void 0,Ce.decode=u,Ce.encode=d,Ce.encodePacked=l,Ce.format=f,Ce.from=b;const e=lr(),t=dd(),n=Mt(),r=gt(),i=We(),a=c6(),o=H_(),c=a0();function u(s,y,g={}){const{as:E="Array",checksumAddress:B=!1}=g,_=typeof y=="string"?n.fromHex(y):y,v=o.create(_);if(n.size(_)===0&&s.length>0)throw new w;if(n.size(_)&&n.size(_)<32)throw new T({data:typeof y=="string"?y:i.fromBytes(y),parameters:s,size:n.size(_)});let C=0;const q=E==="Array"?[]:{};for(let R=0;R{if(typeof S=="string"){if(S.length>3&&S.length%2!==0)throw new n.InvalidLengthError(S);return e.fromHex(S)}return S})(),y=r.create(s,{recursiveReadLimit:Number.POSITIVE_INFINITY});return c(y,j)}function c(S,m="Hex"){if(S.bytes.length===0)return m==="Hex"?n.fromBytes(S.bytes):S.bytes;const j=S.readByte();if(j<128&&S.decrementPosition(1),j<192){const y=u(S,j,128),g=S.readBytes(y);return m==="Hex"?n.fromBytes(g):g}const s=u(S,j,192);return d(S,s,m)}function u(S,m,j){if(j===128&&m<128)return 1;if(m<=j+55)return m-j;if(m===j+55+1)return S.readUint8();if(m===j+55+2)return S.readUint16();if(m===j+55+3)return S.readUint24();if(m===j+55+4)return S.readUint32();throw new t.BaseError("Invalid RLP prefix")}function d(S,m,j){const s=S.position,y=[];for(;S.position-sT(m))):p(S)}function w(S){const m=S.reduce((y,g)=>y+g.length,0),j=O(m);return{length:m<=55?1+m:1+j+m,encode(y){m<=55?y.pushByte(192+m):(y.pushByte(247+j),j===1?y.pushUint8(m):j===2?y.pushUint16(m):j===3?y.pushUint24(m):y.pushUint32(m));for(const{encode:g}of S)g(y)}}}function p(S){const m=typeof S=="string"?e.fromHex(S):S,j=O(m.length);return{length:m.length===1&&m[0]<128?1:m.length<=55?1+m.length:1+j+m.length,encode(y){m.length===1&&m[0]<128?y.pushBytes(m):m.length<=55?(y.pushByte(128+m.length),y.pushBytes(m)):(y.pushByte(183+j),j===1?y.pushUint8(m.length):j===2?y.pushUint16(m.length):j===3?y.pushUint24(m.length):y.pushUint32(m.length),y.pushBytes(m))}}}function O(S){if(S<=255)return 1;if(S<=65535)return 2;if(S<=16777215)return 3;if(S<=4294967295)return 4;throw new t.BaseError("Length is too large.")}return _t}var ye={},df={},No={},ff={},D1;function d6(){return D1||(D1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hmac=e.HMAC=void 0;const t=Ar();class n extends t.Hash{constructor(a,o){super(),this.finished=!1,this.destroyed=!1,(0,t.ahash)(a);const c=(0,t.toBytes)(o);if(this.iHash=a.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const u=this.blockLen,d=new Uint8Array(u);d.set(c.length>u?a.create().update(c).digest():c);for(let l=0;lnew n(i,a).update(o).digest();e.hmac=r,e.hmac.create=(i,a)=>new n(i,a)})(ff)),ff}var lf={},Gr={},Oe={},G1;function fd(){if(G1)return Oe;G1=1,Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.isNegativeLE=void 0,Oe.mod=d,Oe.pow=l,Oe.pow2=f,Oe.invert=b,Oe.tonelliShanks=p,Oe.FpSqrt=O,Oe.validateField=j,Oe.FpPow=s,Oe.FpInvertBatch=y,Oe.FpDiv=g,Oe.FpLegendre=E,Oe.FpIsSquare=B,Oe.nLength=_,Oe.Field=v,Oe.FpSqrtOdd=C,Oe.FpSqrtEven=q,Oe.hashToPrivateScalar=R,Oe.getFieldBytesLength=H,Oe.getMinHashLength=F,Oe.mapHashToField=k;const e=Ar(),t=rn(),n=BigInt(0),r=BigInt(1),i=BigInt(2),a=BigInt(3),o=BigInt(4),c=BigInt(5),u=BigInt(8);function d(h,M){const A=h%M;return A>=n?A:M+A}function l(h,M,A){return s(v(A),h,M)}function f(h,M,A){let P=h;for(;M-- >n;)P*=P,P%=A;return P}function b(h,M){if(h===n)throw new Error("invert: expected non-zero number");if(M<=n)throw new Error("invert: expected positive modulus, got "+M);let A=d(h,M),P=M,I=n,x=r;for(;A!==n;){const U=P/A,L=P%A,z=I-x*U;P=A,A=L,I=x,x=z}if(P!==r)throw new Error("invert: does not exist");return d(I,M)}function T(h,M){const A=(h.ORDER+r)/o,P=h.pow(M,A);if(!h.eql(h.sqr(P),M))throw new Error("Cannot find square root");return P}function w(h,M){const A=(h.ORDER-c)/u,P=h.mul(M,i),I=h.pow(P,A),x=h.mul(M,I),N=h.mul(h.mul(x,i),I),U=h.mul(x,h.sub(N,h.ONE));if(!h.eql(h.sqr(U),M))throw new Error("Cannot find square root");return U}function p(h){if(h1e3)throw new Error("Cannot find square root: probably non-prime P");if(A===1)return T;let x=I.pow(P,M);const N=(M+r)/i;return function(L,z){if(L.is0(z))return z;if(E(L,z)!==1)throw new Error("Cannot find square root");let D=A,J=L.mul(L.ONE,x),Z=L.pow(z,M),Y=L.pow(z,N);for(;!L.eql(Z,L.ONE);){if(L.is0(Z))return L.ZERO;let X=1,oe=L.sqr(Z);for(;!L.eql(oe,L.ONE);)if(X++,oe=L.sqr(oe),X===D)throw new Error("Cannot find square root");const W=r<(d(h,M)&r)===r;Oe.isNegativeLE=S;const m=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function j(h){const M={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},A=m.reduce((P,I)=>(P[I]="function",P),M);return(0,t.validateObject)(h,A)}function s(h,M,A){if(An;)A&r&&(P=h.mul(P,I)),I=h.sqr(I),A>>=r;return P}function y(h,M,A=!1){const P=new Array(M.length).fill(A?h.ZERO:void 0),I=M.reduce((N,U,L)=>h.is0(U)?N:(P[L]=N,h.mul(N,U)),h.ONE),x=h.inv(I);return M.reduceRight((N,U,L)=>h.is0(U)?N:(P[L]=h.mul(N,P[L]),h.mul(N,U)),x),P}function g(h,M,A){return h.mul(M,typeof A=="bigint"?b(A,h.ORDER):h.inv(A))}function E(h,M){const A=(h.ORDER-r)/i,P=h.pow(M,A),I=h.eql(P,h.ONE),x=h.eql(P,h.ZERO),N=h.eql(P,h.neg(h.ONE));if(!I&&!x&&!N)throw new Error("invalid Legendre symbol result");return I?1:x?0:-1}function B(h,M){return E(h,M)===1}function _(h,M){M!==void 0&&(0,e.anumber)(M);const A=M!==void 0?M:h.toString(2).length,P=Math.ceil(A/8);return{nBitLength:A,nByteLength:P}}function v(h,M,A=!1,P={}){if(h<=n)throw new Error("invalid field: expected ORDER > 0, got "+h);const{nBitLength:I,nByteLength:x}=_(h,M);if(x>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let N;const U=Object.freeze({ORDER:h,isLE:A,BITS:I,BYTES:x,MASK:(0,t.bitMask)(I),ZERO:n,ONE:r,create:L=>d(L,h),isValid:L=>{if(typeof L!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof L);return n<=L&&LL===n,isOdd:L=>(L&r)===r,neg:L=>d(-L,h),eql:(L,z)=>L===z,sqr:L=>d(L*L,h),add:(L,z)=>d(L+z,h),sub:(L,z)=>d(L-z,h),mul:(L,z)=>d(L*z,h),pow:(L,z)=>s(U,L,z),div:(L,z)=>d(L*b(z,h),h),sqrN:L=>L*L,addN:(L,z)=>L+z,subN:(L,z)=>L-z,mulN:(L,z)=>L*z,inv:L=>b(L,h),sqrt:P.sqrt||(L=>(N||(N=O(h)),N(U,L))),toBytes:L=>A?(0,t.numberToBytesLE)(L,x):(0,t.numberToBytesBE)(L,x),fromBytes:L=>{if(L.length!==x)throw new Error("Field.fromBytes: expected "+x+" bytes, got "+L.length);return A?(0,t.bytesToNumberLE)(L):(0,t.bytesToNumberBE)(L)},invertBatch:L=>y(U,L),cmov:(L,z,D)=>D?z:L});return Object.freeze(U)}function C(h,M){if(!h.isOdd)throw new Error("Field doesn't have isOdd");const A=h.sqrt(M);return h.isOdd(A)?A:h.neg(A)}function q(h,M){if(!h.isOdd)throw new Error("Field doesn't have isOdd");const A=h.sqrt(M);return h.isOdd(A)?h.neg(A):A}function R(h,M,A=!1){h=(0,t.ensureBytes)("privateHash",h);const P=h.length,I=_(M).nByteLength+8;if(I<24||P1024)throw new Error("hashToPrivateScalar: expected "+I+"-1024 bytes of input, got "+P);const x=A?(0,t.bytesToNumberLE)(h):(0,t.bytesToNumberBE)(h);return d(x,M-r)+r}function H(h){if(typeof h!="bigint")throw new Error("field order must be bigint");const M=h.toString(2).length;return Math.ceil(M/8)}function F(h){const M=H(h);return M+Math.ceil(M/2)}function k(h,M,A=!1){const P=h.length,I=H(M),x=F(M);if(P<16||P1024)throw new Error("expected "+x+"-1024 bytes of input, got "+P);const N=A?(0,t.bytesToNumberLE)(h):(0,t.bytesToNumberBE)(h),U=d(N,M-r)+r;return A?(0,t.numberToBytesLE)(U,I):(0,t.numberToBytesBE)(U,I)}return Oe}var V1;function f6(){if(V1)return Gr;V1=1,Object.defineProperty(Gr,"__esModule",{value:!0}),Gr.wNAF=T,Gr.pippenger=w,Gr.precomputeMSMUnsafe=p,Gr.validateBasic=O;const e=fd(),t=rn(),n=BigInt(0),r=BigInt(1);function i(S,m){const j=m.negate();return S?j:m}function a(S,m){if(!Number.isSafeInteger(S)||S<=0||S>m)throw new Error("invalid window size, expected [1.."+m+"], got W="+S)}function o(S,m){a(S,m);const j=Math.ceil(m/S)+1,s=2**(S-1),y=2**S,g=(0,t.bitMask)(S),E=BigInt(S);return{windows:j,windowSize:s,mask:g,maxNumber:y,shiftBy:E}}function c(S,m,j){const{windowSize:s,mask:y,maxNumber:g,shiftBy:E}=j;let B=Number(S&y),_=S>>E;B>s&&(B-=g,_+=r);const v=m*s,C=v+Math.abs(B)-1,q=B===0,R=B<0,H=m%2!==0;return{nextN:_,offset:C,isZero:q,isNeg:R,isNegF:H,offsetF:v}}function u(S,m){if(!Array.isArray(S))throw new Error("array expected");S.forEach((j,s)=>{if(!(j instanceof m))throw new Error("invalid point at index "+s)})}function d(S,m){if(!Array.isArray(S))throw new Error("array of scalars expected");S.forEach((j,s)=>{if(!m.isValid(j))throw new Error("invalid scalar at index "+s)})}const l=new WeakMap,f=new WeakMap;function b(S){return f.get(S)||1}function T(S,m){return{constTimeNegate:i,hasPrecomputes(j){return b(j)!==1},unsafeLadder(j,s,y=S.ZERO){let g=j;for(;s>n;)s&r&&(y=y.add(g)),g=g.double(),s>>=r;return y},precomputeWindow(j,s){const{windows:y,windowSize:g}=o(s,m),E=[];let B=j,_=B;for(let v=0;v12?_=B-3:B>4?_=B-2:B>0&&(_=2);const v=(0,t.bitMask)(_),C=new Array(Number(v)+1).fill(E),q=Math.floor((m.BITS-1)/_)*_;let R=E;for(let H=q;H>=0;H-=_){C.fill(E);for(let k=0;k>BigInt(H)&v);C[M]=C[M].add(j[k])}let F=E;for(let k=C.length-1,h=E;k>0;k--)h=h.add(C[k]),F=F.add(h);if(R=R.add(F),H!==0)for(let k=0;k<_;k++)R=R.double()}return R}function p(S,m,j,s){a(s,m.BITS),u(j,S);const y=S.ZERO,g=2**s-1,E=Math.ceil(m.BITS/s),B=(0,t.bitMask)(s),_=j.map(v=>{const C=[];for(let q=0,R=v;q{if(d(v,m),v.length>j.length)throw new Error("array of scalars must be smaller than array of points");let C=y;for(let q=0;q>R&B);k&&(C=C.add(_[H][k-1]))}}return C}}function O(S){return(0,e.validateField)(S.Fp),(0,t.validateObject)(S,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...(0,e.nLength)(S.n,S.nBitLength),...S,p:S.Fp.ORDER})}return Gr}var W1;function M_(){return W1||(W1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DER=e.DERErr=void 0,e.weierstrassPoints=T,e.weierstrass=p,e.SWUFpSqrtRatio=O,e.mapToCurveSimpleSWU=S;const t=f6(),n=fd(),r=rn();function i(m){m.lowS!==void 0&&(0,r.abool)("lowS",m.lowS),m.prehash!==void 0&&(0,r.abool)("prehash",m.prehash)}function a(m){const j=(0,t.validateBasic)(m);(0,r.validateObject)(j,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});const{endo:s,Fp:y,a:g}=j;if(s){if(!y.eql(g,y.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if(typeof s!="object"||typeof s.beta!="bigint"||typeof s.splitScalar!="function")throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...j})}class o extends Error{constructor(j=""){super(j)}}e.DERErr=o,e.DER={Err:o,_tlv:{encode:(m,j)=>{const{Err:s}=e.DER;if(m<0||m>256)throw new s("tlv.encode: wrong tag");if(j.length&1)throw new s("tlv.encode: unpadded data");const y=j.length/2,g=(0,r.numberToHexUnpadded)(y);if(g.length/2&128)throw new s("tlv.encode: long form length too big");const E=y>127?(0,r.numberToHexUnpadded)(g.length/2|128):"";return(0,r.numberToHexUnpadded)(m)+E+g+j},decode(m,j){const{Err:s}=e.DER;let y=0;if(m<0||m>256)throw new s("tlv.encode: wrong tag");if(j.length<2||j[y++]!==m)throw new s("tlv.decode: wrong tlv");const g=j[y++],E=!!(g&128);let B=0;if(!E)B=g;else{const v=g&127;if(!v)throw new s("tlv.decode(long): indefinite length not supported");if(v>4)throw new s("tlv.decode(long): byte length is too big");const C=j.subarray(y,y+v);if(C.length!==v)throw new s("tlv.decode: length bytes not complete");if(C[0]===0)throw new s("tlv.decode(long): zero leftmost byte");for(const q of C)B=B<<8|q;if(y+=v,B<128)throw new s("tlv.decode(long): not minimal encoding")}const _=j.subarray(y,y+B);if(_.length!==B)throw new s("tlv.decode: wrong value length");return{v:_,l:j.subarray(y+B)}}},_int:{encode(m){const{Err:j}=e.DER;if(m{const U=x.toAffine();return(0,r.concatBytes)(Uint8Array.from([4]),s.toBytes(U.x),s.toBytes(U.y))}),E=j.fromBytes||(I=>{const x=I.subarray(1),N=s.fromBytes(x.subarray(0,s.BYTES)),U=s.fromBytes(x.subarray(s.BYTES,2*s.BYTES));return{x:N,y:U}});function B(I){const{a:x,b:N}=j,U=s.sqr(I),L=s.mul(U,I);return s.add(s.add(L,s.mul(I,x)),N)}function _(I,x){const N=s.sqr(x),U=B(I);return s.eql(N,U)}if(!_(j.Gx,j.Gy))throw new Error("bad curve params: generator point");const v=s.mul(s.pow(j.a,f),b),C=s.mul(s.sqr(j.b),BigInt(27));if(s.is0(s.add(v,C)))throw new Error("bad curve params: a or b");function q(I){return(0,r.inRange)(I,d,j.n)}function R(I){const{allowedPrivateKeyLengths:x,nByteLength:N,wrapPrivateKey:U,n:L}=j;if(x&&typeof I!="bigint"){if((0,r.isBytes)(I)&&(I=(0,r.bytesToHex)(I)),typeof I!="string"||!x.includes(I.length))throw new Error("invalid private key");I=I.padStart(N*2,"0")}let z;try{z=typeof I=="bigint"?I:(0,r.bytesToNumberBE)((0,r.ensureBytes)("private key",I,N))}catch{throw new Error("invalid private key, expected hex or "+N+" bytes, got "+typeof I)}return U&&(z=(0,n.mod)(z,L)),(0,r.aInRange)("private key",z,d,L),z}function H(I){if(!(I instanceof h))throw new Error("ProjectivePoint expected")}const F=(0,r.memoized)((I,x)=>{const{px:N,py:U,pz:L}=I;if(s.eql(L,s.ONE))return{x:N,y:U};const z=I.is0();x==null&&(x=z?s.ONE:s.inv(L));const D=s.mul(N,x),J=s.mul(U,x),Z=s.mul(L,x);if(z)return{x:s.ZERO,y:s.ZERO};if(!s.eql(Z,s.ONE))throw new Error("invZ was invalid");return{x:D,y:J}}),k=(0,r.memoized)(I=>{if(I.is0()){if(j.allowInfinityPoint&&!s.is0(I.py))return;throw new Error("bad point: ZERO")}const{x,y:N}=I.toAffine();if(!s.isValid(x)||!s.isValid(N))throw new Error("bad point: x or y not FE");if(!_(x,N))throw new Error("bad point: equation left != right");if(!I.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(x,N,U){if(x==null||!s.isValid(x))throw new Error("x required");if(N==null||!s.isValid(N)||s.is0(N))throw new Error("y required");if(U==null||!s.isValid(U))throw new Error("z required");this.px=x,this.py=N,this.pz=U,Object.freeze(this)}static fromAffine(x){const{x:N,y:U}=x||{};if(!x||!s.isValid(N)||!s.isValid(U))throw new Error("invalid affine point");if(x instanceof h)throw new Error("projective point not allowed");const L=z=>s.eql(z,s.ZERO);return L(N)&&L(U)?h.ZERO:new h(N,U,s.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(x){const N=(0,n.FpInvertBatch)(s,x.map(U=>U.pz));return x.map((U,L)=>U.toAffine(N[L])).map(h.fromAffine)}static fromHex(x){const N=h.fromAffine(E((0,r.ensureBytes)("pointHex",x)));return N.assertValidity(),N}static fromPrivateKey(x){return h.BASE.multiply(R(x))}static msm(x,N){return(0,t.pippenger)(h,y,x,N)}_setWindowSize(x){P.setWindowSize(this,x)}assertValidity(){k(this)}hasEvenY(){const{y:x}=this.toAffine();if(s.isOdd)return!s.isOdd(x);throw new Error("Field doesn't support isOdd")}equals(x){H(x);const{px:N,py:U,pz:L}=this,{px:z,py:D,pz:J}=x,Z=s.eql(s.mul(N,J),s.mul(z,L)),Y=s.eql(s.mul(U,J),s.mul(D,L));return Z&&Y}negate(){return new h(this.px,s.neg(this.py),this.pz)}double(){const{a:x,b:N}=j,U=s.mul(N,f),{px:L,py:z,pz:D}=this;let J=s.ZERO,Z=s.ZERO,Y=s.ZERO,X=s.mul(L,L),oe=s.mul(z,z),W=s.mul(D,D),K=s.mul(L,z);return K=s.add(K,K),Y=s.mul(L,D),Y=s.add(Y,Y),J=s.mul(x,Y),Z=s.mul(U,W),Z=s.add(J,Z),J=s.sub(oe,Z),Z=s.add(oe,Z),Z=s.mul(J,Z),J=s.mul(K,J),Y=s.mul(U,Y),W=s.mul(x,W),K=s.sub(X,W),K=s.mul(x,K),K=s.add(K,Y),Y=s.add(X,X),X=s.add(Y,X),X=s.add(X,W),X=s.mul(X,K),Z=s.add(Z,X),W=s.mul(z,D),W=s.add(W,W),X=s.mul(W,K),J=s.sub(J,X),Y=s.mul(W,oe),Y=s.add(Y,Y),Y=s.add(Y,Y),new h(J,Z,Y)}add(x){H(x);const{px:N,py:U,pz:L}=this,{px:z,py:D,pz:J}=x;let Z=s.ZERO,Y=s.ZERO,X=s.ZERO;const oe=j.a,W=s.mul(j.b,f);let K=s.mul(N,z),$=s.mul(U,D),re=s.mul(L,J),te=s.add(N,U),ne=s.add(z,D);te=s.mul(te,ne),ne=s.add(K,$),te=s.sub(te,ne),ne=s.add(N,L);let se=s.add(z,J);return ne=s.mul(ne,se),se=s.add(K,re),ne=s.sub(ne,se),se=s.add(U,L),Z=s.add(D,J),se=s.mul(se,Z),Z=s.add($,re),se=s.sub(se,Z),X=s.mul(oe,ne),Z=s.mul(W,re),X=s.add(Z,X),Z=s.sub($,X),X=s.add($,X),Y=s.mul(Z,X),$=s.add(K,K),$=s.add($,K),re=s.mul(oe,re),ne=s.mul(W,ne),$=s.add($,re),re=s.sub(K,re),re=s.mul(oe,re),ne=s.add(ne,re),K=s.mul($,ne),Y=s.add(Y,K),K=s.mul(se,ne),Z=s.mul(te,Z),Z=s.sub(Z,K),K=s.mul(te,$),X=s.mul(se,X),X=s.add(X,K),new h(Z,Y,X)}subtract(x){return this.add(x.negate())}is0(){return this.equals(h.ZERO)}wNAF(x){return P.wNAFCached(this,x,h.normalizeZ)}multiplyUnsafe(x){const{endo:N,n:U}=j;(0,r.aInRange)("scalar",x,u,U);const L=h.ZERO;if(x===u)return L;if(this.is0()||x===d)return this;if(!N||P.hasPrecomputes(this))return P.wNAFCachedUnsafe(this,x,h.normalizeZ);let{k1neg:z,k1:D,k2neg:J,k2:Z}=N.splitScalar(x),Y=L,X=L,oe=this;for(;D>u||Z>u;)D&d&&(Y=Y.add(oe)),Z&d&&(X=X.add(oe)),oe=oe.double(),D>>=d,Z>>=d;return z&&(Y=Y.negate()),J&&(X=X.negate()),X=new h(s.mul(X.px,N.beta),X.py,X.pz),Y.add(X)}multiply(x){const{endo:N,n:U}=j;(0,r.aInRange)("scalar",x,d,U);let L,z;if(N){const{k1neg:D,k1:J,k2neg:Z,k2:Y}=N.splitScalar(x);let{p:X,f:oe}=this.wNAF(J),{p:W,f:K}=this.wNAF(Y);X=P.constTimeNegate(D,X),W=P.constTimeNegate(Z,W),W=new h(s.mul(W.px,N.beta),W.py,W.pz),L=X.add(W),z=oe.add(K)}else{const{p:D,f:J}=this.wNAF(x);L=D,z=J}return h.normalizeZ([L,z])[0]}multiplyAndAddUnsafe(x,N,U){const L=h.BASE,z=(J,Z)=>Z===u||Z===d||!J.equals(L)?J.multiplyUnsafe(Z):J.multiply(Z),D=z(this,N).add(z(x,U));return D.is0()?void 0:D}toAffine(x){return F(this,x)}isTorsionFree(){const{h:x,isTorsionFree:N}=j;if(x===d)return!0;if(N)return N(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:x,clearCofactor:N}=j;return x===d?this:N?N(h,this):this.multiplyUnsafe(j.h)}toRawBytes(x=!0){return(0,r.abool)("isCompressed",x),this.assertValidity(),g(h,this,x)}toHex(x=!0){return(0,r.abool)("isCompressed",x),(0,r.bytesToHex)(this.toRawBytes(x))}}h.BASE=new h(j.Gx,j.Gy,s.ONE),h.ZERO=new h(s.ZERO,s.ONE,s.ZERO);const{endo:M,nBitLength:A}=j,P=(0,t.wNAF)(h,M?Math.ceil(A/2):A);return{CURVE:j,ProjectivePoint:h,normPrivateKeyToScalar:R,weierstrassEquation:B,isWithinCurveOrder:q}}function w(m){const j=(0,t.validateBasic)(m);return(0,r.validateObject)(j,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...j})}function p(m){const j=w(m),{Fp:s,n:y,nByteLength:g,nBitLength:E}=j,B=s.BYTES+1,_=2*s.BYTES+1;function v(W){return(0,n.mod)(W,y)}function C(W){return(0,n.invert)(W,y)}const{ProjectivePoint:q,normPrivateKeyToScalar:R,weierstrassEquation:H,isWithinCurveOrder:F}=T({...j,toBytes(W,K,$){const re=K.toAffine(),te=s.toBytes(re.x),ne=r.concatBytes;return(0,r.abool)("isCompressed",$),$?ne(Uint8Array.from([K.hasEvenY()?2:3]),te):ne(Uint8Array.from([4]),te,s.toBytes(re.y))},fromBytes(W){const K=W.length,$=W[0],re=W.subarray(1);if(K===B&&($===2||$===3)){const te=(0,r.bytesToNumberBE)(re);if(!(0,r.inRange)(te,d,s.ORDER))throw new Error("Point is not on curve");const ne=H(te);let se;try{se=s.sqrt(ne)}catch(be){const me=be instanceof Error?": "+be.message:"";throw new Error("Point is not on curve"+me)}const ee=(se&d)===d;return($&1)===1!==ee&&(se=s.neg(se)),{x:te,y:se}}else if(K===_&&$===4){const te=s.fromBytes(re.subarray(0,s.BYTES)),ne=s.fromBytes(re.subarray(s.BYTES,2*s.BYTES));return{x:te,y:ne}}else{const te=B,ne=_;throw new Error("invalid Point, expected length of "+te+", or uncompressed "+ne+", got "+K)}}});function k(W){const K=y>>d;return W>K}function h(W){return k(W)?v(-W):W}const M=(W,K,$)=>(0,r.bytesToNumberBE)(W.slice(K,$));class A{constructor(K,$,re){(0,r.aInRange)("r",K,d,y),(0,r.aInRange)("s",$,d,y),this.r=K,this.s=$,re!=null&&(this.recovery=re),Object.freeze(this)}static fromCompact(K){const $=g;return K=(0,r.ensureBytes)("compactSignature",K,$*2),new A(M(K,0,$),M(K,$,2*$))}static fromDER(K){const{r:$,s:re}=e.DER.toSig((0,r.ensureBytes)("DER",K));return new A($,re)}assertValidity(){}addRecoveryBit(K){return new A(this.r,this.s,K)}recoverPublicKey(K){const{r:$,s:re,recovery:te}=this,ne=L((0,r.ensureBytes)("msgHash",K));if(te==null||![0,1,2,3].includes(te))throw new Error("recovery id invalid");const se=te===2||te===3?$+j.n:$;if(se>=s.ORDER)throw new Error("recovery id 2 or 3 invalid");const ee=(te&1)===0?"02":"03",Q=q.fromHex(ee+c(se,s.BYTES)),be=C(se),me=v(-ne*be),Ue=v(re*be),Ae=q.BASE.multiplyAndAddUnsafe(Q,me,Ue);if(!Ae)throw new Error("point at infinify");return Ae.assertValidity(),Ae}hasHighS(){return k(this.s)}normalizeS(){return this.hasHighS()?new A(this.r,v(-this.s),this.recovery):this}toDERRawBytes(){return(0,r.hexToBytes)(this.toDERHex())}toDERHex(){return e.DER.hexFromSig(this)}toCompactRawBytes(){return(0,r.hexToBytes)(this.toCompactHex())}toCompactHex(){const K=g;return c(this.r,K)+c(this.s,K)}}const P={isValidPrivateKey(W){try{return R(W),!0}catch{return!1}},normPrivateKeyToScalar:R,randomPrivateKey:()=>{const W=(0,n.getMinHashLength)(j.n);return(0,n.mapHashToField)(j.randomBytes(W),j.n)},precompute(W=8,K=q.BASE){return K._setWindowSize(W),K.multiply(BigInt(3)),K}};function I(W,K=!0){return q.fromPrivateKey(W).toRawBytes(K)}function x(W){if(typeof W=="bigint")return!1;if(W instanceof q)return!0;const $=(0,r.ensureBytes)("key",W).length,re=s.BYTES,te=re+1,ne=2*re+1;if(!(j.allowedPrivateKeyLengths||g===te))return $===te||$===ne}function N(W,K,$=!0){if(x(W)===!0)throw new Error("first arg must be private key");if(x(K)===!1)throw new Error("second arg must be public key");return q.fromHex(K).multiply(R(W)).toRawBytes($)}const U=j.bits2int||function(W){if(W.length>8192)throw new Error("input is too large");const K=(0,r.bytesToNumberBE)(W),$=W.length*8-E;return $>0?K>>BigInt($):K},L=j.bits2int_modN||function(W){return v(U(W))},z=(0,r.bitMask)(E);function D(W){return(0,r.aInRange)("num < 2^"+E,W,u,z),(0,r.numberToBytesBE)(W,g)}function J(W,K,$=Z){if(["recovered","canonical"].some(Me=>Me in $))throw new Error("sign() legacy options not supported");const{hash:re,randomBytes:te}=j;let{lowS:ne,prehash:se,extraEntropy:ee}=$;ne==null&&(ne=!0),W=(0,r.ensureBytes)("msgHash",W),i($),se&&(W=(0,r.ensureBytes)("prehashed msgHash",re(W)));const Q=L(W),be=R(K),me=[D(be),D(Q)];if(ee!=null&&ee!==!1){const Me=ee===!0?te(s.BYTES):ee;me.push((0,r.ensureBytes)("extraEntropy",Me))}const Ue=(0,r.concatBytes)(...me),Ae=Q;function Xe(Me){const Te=U(Me);if(!F(Te))return;const pt=C(Te),Ke=q.BASE.multiply(Te).toAffine(),Le=v(Ke.x);if(Le===u)return;const Ze=v(pt*v(Ae+Le*be));if(Ze===u)return;let ze=(Ke.x===Le?0:2)|Number(Ke.y&d),xt=Ze;return ne&&k(Ze)&&(xt=h(Ze),ze^=1),new A(Le,xt,ze)}return{seed:Ue,k2sig:Xe}}const Z={lowS:j.lowS,prehash:!1},Y={lowS:j.lowS,prehash:!1};function X(W,K,$=Z){const{seed:re,k2sig:te}=J(W,K,$),ne=j;return(0,r.createHmacDrbg)(ne.hash.outputLen,ne.nByteLength,ne.hmac)(re,te)}q.BASE._setWindowSize(8);function oe(W,K,$,re=Y){const te=W;K=(0,r.ensureBytes)("msgHash",K),$=(0,r.ensureBytes)("publicKey",$);const{lowS:ne,prehash:se,format:ee}=re;if(i(re),"strict"in re)throw new Error("options.strict was renamed to lowS");if(ee!==void 0&&ee!=="compact"&&ee!=="der")throw new Error("format must be compact or der");const Q=typeof te=="string"||(0,r.isBytes)(te),be=!Q&&!ee&&typeof te=="object"&&te!==null&&typeof te.r=="bigint"&&typeof te.s=="bigint";if(!Q&&!be)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let me,Ue;try{if(be&&(me=new A(te.r,te.s)),Q){try{ee!=="compact"&&(me=A.fromDER(te))}catch(ze){if(!(ze instanceof e.DER.Err))throw ze}!me&&ee!=="der"&&(me=A.fromCompact(te))}Ue=q.fromHex($)}catch{return!1}if(!me||ne&&me.hasHighS())return!1;se&&(K=j.hash(K));const{r:Ae,s:Xe}=me,Me=L(K),Te=C(Xe),pt=v(Me*Te),Ke=v(Ae*Te),Le=q.BASE.multiplyAndAddUnsafe(Ue,pt,Ke)?.toAffine();return Le?v(Le.x)===Ae:!1}return{CURVE:j,getPublicKey:I,getSharedSecret:N,sign:X,verify:oe,ProjectivePoint:q,Signature:A,utils:P}}function O(m,j){const s=m.ORDER;let y=u;for(let k=s-d;k%l===u;k/=l)y+=d;const g=y,E=l<{let M=R,A=m.pow(h,C),P=m.sqr(A);P=m.mul(P,h);let I=m.mul(k,P);I=m.pow(I,v),I=m.mul(I,A),A=m.mul(I,h),P=m.mul(I,k);let x=m.mul(P,A);I=m.pow(x,q);let N=m.eql(I,m.ONE);A=m.mul(P,H),I=m.mul(x,M),P=m.cmov(A,P,N),x=m.cmov(I,x,N);for(let U=g;U>d;U--){let L=U-l;L=l<{let P=m.sqr(A);const I=m.mul(M,A);P=m.mul(P,I);let x=m.pow(P,k);x=m.mul(x,I);const N=m.mul(x,h),U=m.mul(m.sqr(x),A),L=m.eql(U,M);let z=m.cmov(N,x,L);return{isValid:L,value:z}}}return F}function S(m,j){if((0,n.validateField)(m),!m.isValid(j.A)||!m.isValid(j.B)||!m.isValid(j.Z))throw new Error("mapToCurveSimpleSWU: invalid opts");const s=O(m,j.Z);if(!m.isOdd)throw new Error("Fp.isOdd is not implemented!");return y=>{let g,E,B,_,v,C,q,R;g=m.sqr(y),g=m.mul(g,j.Z),E=m.sqr(g),E=m.add(E,g),B=m.add(E,m.ONE),B=m.mul(B,j.B),_=m.cmov(j.Z,m.neg(E),!m.eql(E,m.ZERO)),_=m.mul(_,j.A),E=m.sqr(B),C=m.sqr(_),v=m.mul(C,j.A),E=m.add(E,v),E=m.mul(E,B),C=m.mul(C,_),v=m.mul(C,j.B),E=m.add(E,v),q=m.mul(g,B);const{isValid:H,value:F}=s(E,C);R=m.mul(g,y),R=m.mul(R,F),q=m.cmov(q,B,H),R=m.cmov(R,F,H);const k=m.isOdd(y)===m.isOdd(R);R=m.cmov(m.neg(R),R,k);const h=(0,n.FpInvertBatch)(m,[_],!0)[0];return q=m.mul(q,h),{x:q,y:R}}}})(lf)),lf}var K1;function l6(){if(K1)return No;K1=1,Object.defineProperty(No,"__esModule",{value:!0}),No.getHash=r,No.createCurve=i;const e=d6(),t=Ar(),n=M_();function r(a){return{hash:a,hmac:(o,...c)=>(0,e.hmac)(a,o,(0,t.concatBytes)(...c)),randomBytes:t.randomBytes}}function i(a,o){const c=u=>(0,n.weierstrass)({...a,...r(u)});return{...c(o),create:c}}return No}var dr={},Z1;function b6(){if(Z1)return dr;Z1=1,Object.defineProperty(dr,"__esModule",{value:!0}),dr.expand_message_xmd=o,dr.expand_message_xof=c,dr.hash_to_field=u,dr.isogenyMap=d,dr.createHasher=l;const e=fd(),t=rn(),n=t.bytesToNumberBE;function r(f,b){if(a(f),a(b),f<0||f>=1<<8*b)throw new Error("invalid I2OSP input: "+f);const T=Array.from({length:b}).fill(0);for(let w=b-1;w>=0;w--)T[w]=f&255,f>>>=8;return new Uint8Array(T)}function i(f,b){const T=new Uint8Array(f.length);for(let w=0;w255&&(b=w((0,t.concatBytes)((0,t.utf8ToBytes)("H2C-OVERSIZE-DST-"),b)));const{outputLen:p,blockLen:O}=w,S=Math.ceil(T/p);if(T>65535||S>255)throw new Error("expand_message_xmd: invalid lenInBytes");const m=(0,t.concatBytes)(b,r(b.length,1)),j=r(0,O),s=r(T,2),y=new Array(S),g=w((0,t.concatBytes)(j,f,s,r(0,1),m));y[0]=w((0,t.concatBytes)(g,r(1,1),m));for(let B=1;B<=S;B++){const _=[i(g,y[B-1]),r(B+1,1),m];y[B]=w((0,t.concatBytes)(..._))}return(0,t.concatBytes)(...y).slice(0,T)}function c(f,b,T,w,p){if((0,t.abytes)(f),(0,t.abytes)(b),a(T),b.length>255){const O=Math.ceil(2*w/8);b=p.create({dkLen:O}).update((0,t.utf8ToBytes)("H2C-OVERSIZE-DST-")).update(b).digest()}if(T>65535||b.length>255)throw new Error("expand_message_xof: invalid lenInBytes");return p.create({dkLen:T}).update(f).update(r(T,2)).update(b).update(r(b.length,1)).digest()}function u(f,b,T){(0,t.validateObject)(T,{DST:"stringOrUint8Array",p:"bigint",m:"isSafeInteger",k:"isSafeInteger",hash:"hash"});const{p:w,k:p,m:O,hash:S,expand:m,DST:j}=T;(0,t.abytes)(f),a(b);const s=typeof j=="string"?(0,t.utf8ToBytes)(j):j,y=w.toString(2).length,g=Math.ceil((y+p)/8),E=b*O*g;let B;if(m==="xmd")B=o(f,s,E,S);else if(m==="xof")B=c(f,s,E,p,S);else if(m==="_internal_pass")B=f;else throw new Error('expand must be "xmd" or "xof"');const _=new Array(b);for(let v=0;vArray.from(w).reverse());return(w,p)=>{const[O,S,m,j]=T.map(g=>g.reduce((E,B)=>f.add(f.mul(E,w),B))),[s,y]=(0,e.FpInvertBatch)(f,[S,j],!0);return w=f.mul(O,s),p=f.mul(p,f.mul(m,y)),{x:w,y:p}}}function l(f,b,T){if(typeof b!="function")throw new Error("mapToCurve() must be defined");function w(O){return f.fromAffine(b(O))}function p(O){const S=O.clearCofactor();return S.equals(f.ZERO)?f.ZERO:(S.assertValidity(),S)}return{defaults:T,hashToCurve(O,S){const m=u(O,2,{...T,DST:T.DST,...S}),j=w(m[0]),s=w(m[1]);return p(j.add(s))},encodeToCurve(O,S){const m=u(O,1,{...T,DST:T.encodeDST,...S});return p(w(m[0]))},mapToCurve(O){if(!Array.isArray(O))throw new Error("expected array of bigints");for(const S of O)if(typeof S!="bigint")throw new Error("expected array of bigints");return p(w(O))}}}return dr}var Y1;function k_(){return Y1||(Y1=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.encodeToCurve=e.hashToCurve=e.secp256k1_hasher=e.schnorr=e.secp256k1=void 0;const t=x_(),n=Ar(),r=l6(),i=b6(),a=fd(),o=rn(),c=M_(),u=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),d=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),l=BigInt(0),f=BigInt(1),b=BigInt(2),T=(h,M)=>(h+M/b)/M;function w(h){const M=u,A=BigInt(3),P=BigInt(6),I=BigInt(11),x=BigInt(22),N=BigInt(23),U=BigInt(44),L=BigInt(88),z=h*h*h%M,D=z*z*h%M,J=(0,a.pow2)(D,A,M)*D%M,Z=(0,a.pow2)(J,A,M)*D%M,Y=(0,a.pow2)(Z,b,M)*z%M,X=(0,a.pow2)(Y,I,M)*Y%M,oe=(0,a.pow2)(X,x,M)*X%M,W=(0,a.pow2)(oe,U,M)*oe%M,K=(0,a.pow2)(W,L,M)*W%M,$=(0,a.pow2)(K,U,M)*oe%M,re=(0,a.pow2)($,A,M)*D%M,te=(0,a.pow2)(re,N,M)*X%M,ne=(0,a.pow2)(te,P,M)*z%M,se=(0,a.pow2)(ne,b,M);if(!p.eql(p.sqr(se),h))throw new Error("Cannot find square root");return se}const p=(0,a.Field)(u,void 0,void 0,{sqrt:w});e.secp256k1=(0,r.createCurve)({a:l,b:BigInt(7),Fp:p,n:d,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:h=>{const M=d,A=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),P=-f*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),I=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),x=A,N=BigInt("0x100000000000000000000000000000000"),U=T(x*h,M),L=T(-P*h,M);let z=(0,a.mod)(h-U*A-L*I,M),D=(0,a.mod)(-U*P-L*x,M);const J=z>N,Z=D>N;if(J&&(z=M-z),Z&&(D=M-D),z>N||D>N)throw new Error("splitScalar: Endomorphism failed, k="+h);return{k1neg:J,k1:z,k2neg:Z,k2:D}}}},t.sha256);const O={};function S(h,...M){let A=O[h];if(A===void 0){const P=(0,t.sha256)(Uint8Array.from(h,I=>I.charCodeAt(0)));A=(0,o.concatBytes)(P,P),O[h]=A}return(0,t.sha256)((0,o.concatBytes)(A,...M))}const m=h=>h.toRawBytes(!0).slice(1),j=h=>(0,o.numberToBytesBE)(h,32),s=h=>(0,a.mod)(h,u),y=h=>(0,a.mod)(h,d),g=e.secp256k1.ProjectivePoint,E=(h,M,A)=>g.BASE.multiplyAndAddUnsafe(h,M,A);function B(h){let M=e.secp256k1.utils.normPrivateKeyToScalar(h),A=g.fromPrivateKey(M);return{scalar:A.hasEvenY()?M:y(-M),bytes:m(A)}}function _(h){(0,o.aInRange)("x",h,f,u);const M=s(h*h),A=s(M*h+BigInt(7));let P=w(A);P%b!==l&&(P=s(-P));const I=new g(h,P,f);return I.assertValidity(),I}const v=o.bytesToNumberBE;function C(...h){return y(v(S("BIP0340/challenge",...h)))}function q(h){return B(h).bytes}function R(h,M,A=(0,n.randomBytes)(32)){const P=(0,o.ensureBytes)("message",h),{bytes:I,scalar:x}=B(M),N=(0,o.ensureBytes)("auxRand",A,32),U=j(x^v(S("BIP0340/aux",N))),L=S("BIP0340/nonce",U,I,P),z=y(v(L));if(z===l)throw new Error("sign failed: k is zero");const{bytes:D,scalar:J}=B(z),Z=C(D,I,P),Y=new Uint8Array(64);if(Y.set(D,0),Y.set(j(y(J+Z*x)),32),!H(Y,P,I))throw new Error("sign: Invalid signature produced");return Y}function H(h,M,A){const P=(0,o.ensureBytes)("signature",h,64),I=(0,o.ensureBytes)("message",M),x=(0,o.ensureBytes)("publicKey",A,32);try{const N=_(v(x)),U=v(P.subarray(0,32));if(!(0,o.inRange)(U,f,u))return!1;const L=v(P.subarray(32,64));if(!(0,o.inRange)(L,f,d))return!1;const z=C(j(U),m(N),I),D=E(N,L,y(-z));return!(!D||!D.hasEvenY()||D.toAffine().x!==U)}catch{return!1}}e.schnorr={getPublicKey:q,sign:R,verify:H,utils:{randomPrivateKey:e.secp256k1.utils.randomPrivateKey,lift_x:_,pointToBytes:m,numberToBytesBE:o.numberToBytesBE,bytesToNumberBE:o.bytesToNumberBE,taggedHash:S,mod:a.mod}};const F=(0,i.isogenyMap)(p,[["0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7","0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581","0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262","0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c"],["0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b","0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14","0x0000000000000000000000000000000000000000000000000000000000000001"],["0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c","0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3","0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931","0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84"],["0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b","0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573","0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f","0x0000000000000000000000000000000000000000000000000000000000000001"]].map(h=>h.map(M=>BigInt(M)))),k=(0,c.mapToCurveSimpleSWU)(p,{A:BigInt("0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533"),B:BigInt("1771"),Z:p.create(BigInt("-11"))});e.secp256k1_hasher=(0,i.createHasher)(e.secp256k1.ProjectivePoint,h=>{const{x:M,y:A}=k(p.create(h[0]));return F(M,A)},{DST:"secp256k1_XMD:SHA-256_SSWU_RO_",encodeDST:"secp256k1_XMD:SHA-256_SSWU_NU_",p:p.ORDER,m:1,k:128,expand:"xmd",hash:t.sha256}),e.hashToCurve=e.secp256k1_hasher.hashToCurve,e.encodeToCurve=e.secp256k1_hasher.encodeToCurve})(df)),df}var J1;function N_(){if(J1)return ye;J1=1,Object.defineProperty(ye,"__esModule",{value:!0}),ye.InvalidVError=ye.InvalidYParityError=ye.InvalidSError=ye.InvalidRError=ye.MissingPropertiesError=ye.InvalidSerializedSizeError=void 0,ye.assert=o,ye.fromBytes=c,ye.fromHex=u,ye.extract=d,ye.from=l,ye.fromDerBytes=f,ye.fromDerHex=b,ye.fromLegacy=T,ye.fromRpc=w,ye.fromTuple=p,ye.toBytes=O,ye.toHex=S,ye.toDerBytes=m,ye.toDerHex=j,ye.toLegacy=s,ye.toRpc=y,ye.toTuple=g,ye.validate=E,ye.vToYParity=B,ye.yParityToV=_;const e=k_(),t=Mt(),n=gt(),r=We(),i=ed(),a=a0();function o(k,h={}){const{recovered:M}=h;if(typeof k.r>"u")throw new C({signature:k});if(typeof k.s>"u")throw new C({signature:k});if(M&&typeof k.yParity>"u")throw new C({signature:k});if(k.r<0n||k.r>a.maxUint256)throw new q({value:k.r});if(k.s<0n||k.s>a.maxUint256)throw new R({value:k.s});if(typeof k.yParity=="number"&&k.yParity!==0&&k.yParity!==1)throw new H({value:k.yParity})}function c(k){return u(r.fromBytes(k))}function u(k){if(k.length!==130&&k.length!==132)throw new v({signature:k});const h=BigInt(r.slice(k,0,32)),M=BigInt(r.slice(k,32,64)),A=(()=>{const P=+`0x${k.slice(130)}`;if(!Number.isNaN(P))try{return B(P)}catch{throw new H({value:P})}})();return typeof A>"u"?{r:h,s:M}:{r:h,s:M,yParity:A}}function d(k){if(!(typeof k.r>"u")&&!(typeof k.s>"u"))return l(k)}function l(k){const h=typeof k=="string"?u(k):k instanceof Uint8Array?c(k):typeof k.r=="string"?w(k):k.v?T(k):{r:k.r,s:k.s,...typeof k.yParity<"u"?{yParity:k.yParity}:{}};return o(h),h}function f(k){return b(r.fromBytes(k))}function b(k){const{r:h,s:M}=e.secp256k1.Signature.fromDER(r.from(k).slice(2));return{r:h,s:M}}function T(k){return{r:k.r,s:k.s,yParity:B(k.v)}}function w(k){const h=(()=>{const M=k.v?Number(k.v):void 0;let A=k.yParity?Number(k.yParity):void 0;if(typeof M=="number"&&typeof A!="number"&&(A=B(M)),typeof A!="number")throw new H({value:k.yParity});return A})();return{r:BigInt(k.r),s:BigInt(k.s),yParity:h}}function p(k){const[h,M,A]=k;return l({r:M==="0x"?0n:BigInt(M),s:A==="0x"?0n:BigInt(A),yParity:h==="0x"?0:Number(h)})}function O(k){return t.fromHex(S(k))}function S(k){o(k);const h=k.r,M=k.s;return r.concat(r.fromNumber(h,{size:32}),r.fromNumber(M,{size:32}),typeof k.yParity=="number"?r.fromNumber(_(k.yParity),{size:1}):"0x")}function m(k){return new e.secp256k1.Signature(k.r,k.s).toDERRawBytes()}function j(k){return`0x${new e.secp256k1.Signature(k.r,k.s).toDERHex()}`}function s(k){return{r:k.r,s:k.s,v:_(k.yParity)}}function y(k){const{r:h,s:M,yParity:A}=k;return{r:r.fromNumber(h,{size:32}),s:r.fromNumber(M,{size:32}),yParity:A===0?"0x0":"0x1"}}function g(k){const{r:h,s:M,yParity:A}=k;return[A?"0x01":"0x",h===0n?"0x":r.trimLeft(r.fromNumber(h)),M===0n?"0x":r.trimLeft(r.fromNumber(M))]}function E(k,h={}){try{return o(k,h),!0}catch{return!1}}function B(k){if(k===0||k===27)return 0;if(k===1||k===28)return 1;if(k>=35)return k%2===0?1:0;throw new F({value:k})}function _(k){if(k===0)return 27;if(k===1)return 28;throw new H({value:k})}class v extends n.BaseError{constructor({signature:h}){super(`Value \`${h}\` is an invalid signature size.`,{metaMessages:["Expected: 64 bytes or 65 bytes.",`Received ${r.size(r.from(h))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSerializedSizeError"})}}ye.InvalidSerializedSizeError=v;class C extends n.BaseError{constructor({signature:h}){super(`Signature \`${i.stringify(h)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.MissingPropertiesError"})}}ye.MissingPropertiesError=C;class q extends n.BaseError{constructor({value:h}){super(`Value \`${h}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidRError"})}}ye.InvalidRError=q;class R extends n.BaseError{constructor({value:h}){super(`Value \`${h}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSError"})}}ye.InvalidSError=R;class H extends n.BaseError{constructor({value:h}){super(`Value \`${h}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidYParityError"})}}ye.InvalidYParityError=H;class F extends n.BaseError{constructor({value:h}){super(`Value \`${h}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidVError"})}}return ye.InvalidVError=F,ye}var X1;function m6(){if(X1)return it;X1=1,Object.defineProperty(it,"__esModule",{value:!0}),it.from=i,it.fromRpc=a,it.fromRpcList=o,it.fromTuple=c,it.fromTupleList=u,it.getSignPayload=d,it.hash=l,it.toRpc=f,it.toRpcList=b,it.toTuple=T,it.toTupleList=w;const e=s0(),t=We(),n=u6(),r=N_();function i(p,O={}){return typeof p.chainId=="string"?a(p):{...p,...O.signature}}function a(p){const{address:O,chainId:S,nonce:m}=p,j=r.extract(p);return{address:O,chainId:Number(S),nonce:BigInt(m),...j}}function o(p){return p.map(a)}function c(p){const[O,S,m,j,s,y]=p;let g={address:S,chainId:O==="0x"?0:Number(O),nonce:m==="0x"?0n:BigInt(m)};return j&&s&&y&&(g={...g,...r.fromTuple([j,s,y])}),i(g)}function u(p){const O=[];for(const S of p)O.push(c(S));return O}function d(p){return l(p,{presign:!0})}function l(p,O={}){const{presign:S}=O;return e.keccak256(t.concat("0x05",n.fromHex(T(S?{address:p.address,chainId:p.chainId,nonce:p.nonce}:p))))}function f(p){const{address:O,chainId:S,nonce:m,...j}=p;return{address:O,chainId:t.fromNumber(S),nonce:t.fromNumber(m),...r.toRpc(j)}}function b(p){return p.map(f)}function T(p){const{address:O,chainId:S,nonce:m}=p,j=r.extract(p);return[S?t.fromNumber(S):"0x",O,m?t.fromNumber(m):"0x",...j?r.toTuple(j):[]]}function w(p){if(!p||p.length===0)return[];const O=[];for(const S of p)O.push(T(S));return O}return it}var ht={},Vr={},Q1;function h6(){if(Q1)return Vr;Q1=1,Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.extraEntropy=void 0,Vr.setExtraEntropy=e,Vr.extraEntropy=!1;function e(t){Vr.extraEntropy=t}return Vr}var $1;function y6(){if($1)return ht;$1=1,Object.defineProperty(ht,"__esModule",{value:!0}),ht.noble=void 0,ht.createKeyPair=o,ht.getPublicKey=c,ht.getSharedSecret=u,ht.randomPrivateKey=d,ht.recoverAddress=l,ht.recoverPublicKey=f,ht.sign=b,ht.verify=T;const e=k_(),t=dd(),n=Mt(),r=We(),i=h6(),a=q_();ht.noble=e.secp256k1;function o(w={}){const{as:p="Hex"}=w,O=d({as:p}),S=c({privateKey:O});return{privateKey:O,publicKey:S}}function c(w){const{privateKey:p}=w,O=e.secp256k1.ProjectivePoint.fromPrivateKey(r.from(p).slice(2));return a.from(O)}function u(w){const{as:p="Hex",privateKey:O,publicKey:S}=w,s=e.secp256k1.ProjectivePoint.fromHex(a.toHex(S).slice(2)).multiply(e.secp256k1.utils.normPrivateKeyToScalar(r.from(O).slice(2))).toRawBytes(!0);return p==="Hex"?r.fromBytes(s):s}function d(w={}){const{as:p="Hex"}=w,O=e.secp256k1.utils.randomPrivateKey();return p==="Hex"?r.fromBytes(O):O}function l(w){return t.fromPublicKey(f(w))}function f(w){const{payload:p,signature:O}=w,{r:S,s:m,yParity:j}=O,y=new e.secp256k1.Signature(BigInt(S),BigInt(m)).addRecoveryBit(j).recoverPublicKey(r.from(p).substring(2));return a.from(y)}function b(w){const{extraEntropy:p=i.extraEntropy,hash:O,payload:S,privateKey:m}=w,{r:j,s,recovery:y}=e.secp256k1.sign(n.from(S),n.from(m),{extraEntropy:typeof p=="boolean"?p:r.from(p).slice(2),lowS:!0,...O?{prehash:!0}:{}});return{r:j,s,yParity:y}}function T(w){const{address:p,hash:O,payload:S,publicKey:m,signature:j}=w;return p?t.isEqual(p,l({payload:S,signature:j})):e.secp256k1.verify(j,n.from(S),a.toBytes(m),...O?[{prehash:!0,lowS:!0}]:[])}return ht}var ey;function g6(){return ey||(ey=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InvalidWrappedSignatureError=e.suffixParameters=e.magicBytes=void 0,e.assert=c,e.from=u,e.unwrap=d,e.wrap=l,e.validate=f;const t=mi(),n=m6(),r=gt(),i=We(),a=y6(),o=N_();e.magicBytes="0x8010801080108010801080108010801080108010801080108010801080108010",e.suffixParameters=t.from("(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data");function c(T){if(typeof T=="string"){if(i.slice(T,-32)!==e.magicBytes)throw new b(T)}else o.assert(T.authorization)}function u(T){return typeof T=="string"?d(T):T}function d(T){c(T);const w=i.toNumber(i.slice(T,-64,-32)),p=i.slice(T,-w-64,-64),O=i.slice(T,0,-w-64),[S,m,j]=t.decode(e.suffixParameters,p);return{authorization:n.from({address:S.delegation,chainId:Number(S.chainId),nonce:S.nonce,yParity:S.yParity,r:S.r,s:S.s}),signature:O,...j&&j!=="0x"?{data:j,to:m}:{}}}function l(T){const{data:w,signature:p}=T;c(T);const O=a.recoverAddress({payload:n.getSignPayload(T.authorization),signature:o.from(T.authorization)}),S=t.encode(e.suffixParameters,[{...T.authorization,delegation:T.authorization.address,chainId:BigInt(T.authorization.chainId)},T.to??O,w??"0x"]),m=i.fromNumber(i.size(S),{size:32});return i.concat(p,S,m,e.magicBytes)}function f(T){try{return c(T),!0}catch{return!1}}class b extends r.BaseError{constructor(w){super(`Value \`${w}\` is an invalid ERC-8010 wrapped signature.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SignatureErc8010.InvalidWrappedSignatureError"})}}e.InvalidWrappedSignatureError=b})(cf)),cf}var ty;function ld(){return ty||(ty=1,Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.SignatureErc8010=void 0,Ho.SignatureErc8010=g6()),Ho}var ry;function c0(){if(ry)return Ga;ry=1,Object.defineProperty(Ga,"__esModule",{value:!0}),Ga.isErc8010Signature=t;const e=ld();function t(n){return e.SignatureErc8010.validate(n)}return Ga}var Va={},ny;function F_(){if(ny)return Va;ny=1,Object.defineProperty(Va,"__esModule",{value:!0}),Va.parseErc6492Signature=n;const e=hr(),t=i0();function n(r){if(!(0,t.isErc6492Signature)(r))return{signature:r};const[i,a,o]=(0,e.decodeAbiParameters)([{type:"address"},{type:"bytes"},{type:"bytes"}],r);return{address:i,data:a,signature:o}}return Va}var Wa={},oy;function L_(){if(oy)return Wa;oy=1,Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.parseErc8010Signature=r;const e=ld(),t=ie(),n=c0();function r(i){if(!(0,n.isErc8010Signature)(i))return{signature:i};const{authorization:a,to:o,...c}=e.SignatureErc8010.unwrap(i);return{authorization:{address:a.address,chainId:a.chainId,nonce:Number(a.nonce),r:(0,t.numberToHex)(a.r,{size:32}),s:(0,t.numberToHex)(a.s,{size:32}),yParity:a.yParity},...o?{address:o}:{},...c}}return Wa}var Ka={},iy;function u0(){if(iy)return Ka;iy=1,Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.recoverMessageAddress=n;const e=li(),t=_r();async function n({message:r,signature:i}){return(0,t.recoverAddress)({hash:(0,e.hashMessage)(r),signature:i})}return Ka}var Za={},sy;function d0(){if(sy)return Za;sy=1,Object.defineProperty(Za,"__esModule",{value:!0}),Za.recoverTypedDataAddress=n;const e=bi(),t=_r();async function n(r){const{domain:i,message:a,primaryType:o,signature:c,types:u}=r;return(0,t.recoverAddress)({hash:(0,e.hashTypedData)({domain:i,message:a,primaryType:o,types:u}),signature:c})}return Za}var Ya={},ay;function U_(){if(ay)return Ya;ay=1,Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.serializeErc6492Signature=i;const e=o0(),t=It(),n=De(),r=Pe();function i(a){const{address:o,data:c,signature:u,to:d="hex"}=a,l=(0,n.concatHex)([(0,t.encodeAbiParameters)([{type:"address"},{type:"bytes"},{type:"bytes"}],[o,c,u]),e.erc6492MagicBytes]);return d==="hex"?l:(0,r.hexToBytes)(l)}return Ya}var Ja={},cy;function z_(){if(cy)return Ja;cy=1,Object.defineProperty(Ja,"__esModule",{value:!0}),Ja.serializeErc8010Signature=n;const e=ld(),t=Pe();function n(r){const{address:i,data:a,signature:o,to:c="hex"}=r,u=e.SignatureErc8010.wrap({authorization:{address:r.authorization.address,chainId:r.authorization.chainId,nonce:BigInt(r.authorization.nonce),r:BigInt(r.authorization.r),s:BigInt(r.authorization.s),yParity:r.authorization.yParity},data:a,signature:o,to:i});return c==="hex"?u:(0,t.hexToBytes)(u)}return Ja}var Xa={},uy;function D_(){if(uy)return Xa;uy=1,Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.verifyHash=r;const e=yt(),t=Ct(),n=_r();async function r({address:i,hash:a,signature:o}){return(0,t.isAddressEqual)((0,e.getAddress)(i),await(0,n.recoverAddress)({hash:a,signature:o}))}return Xa}var Qa={},dy;function G_(){if(dy)return Qa;dy=1,Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.verifyMessage=r;const e=yt(),t=Ct(),n=u0();async function r({address:i,message:a,signature:o}){return(0,t.isAddressEqual)((0,e.getAddress)(i),await(0,n.recoverMessageAddress)({message:a,signature:o}))}return Qa}var $a={},fy;function V_(){if(fy)return $a;fy=1,Object.defineProperty($a,"__esModule",{value:!0}),$a.verifyTypedData=r;const e=yt(),t=Ct(),n=d0();async function r(i){const{address:a,domain:o,message:c,primaryType:u,signature:d,types:l}=i;return(0,t.isAddressEqual)((0,e.getAddress)(a),await(0,n.recoverTypedDataAddress)({domain:o,message:c,primaryType:u,signature:d,types:l}))}return $a}var ec={},ly;function f0(){if(ly)return ec;ly=1,Object.defineProperty(ec,"__esModule",{value:!0}),ec.getSerializedTransactionType=r;const e=dt(),t=vt(),n=Ne();function r(i){const a=(0,t.sliceHex)(i,0,1);if(a==="0x04")return"eip7702";if(a==="0x03")return"eip4844";if(a==="0x02")return"eip1559";if(a==="0x01")return"eip2930";if(a!=="0x"&&(0,n.hexToNumber)(a)>=192)return"legacy";throw new e.InvalidSerializedTransactionTypeError({serializedType:a})}return ec}var wn={},by;function l0(){if(by)return wn;by=1,Object.defineProperty(wn,"__esModule",{value:!0}),wn.parseTransaction=b,wn.toTransactionArray=m,wn.parseAccessList=j;const e=St(),t=dt(),n=ct(),r=Qu(),i=nt(),a=br(),o=$t(),c=Ne(),u=$f(),d=e0(),l=ad(),f=f0();function b(g){const E=(0,f.getSerializedTransactionType)(g);return E==="eip1559"?p(g):E==="eip2930"?O(g):E==="eip4844"?w(g):E==="eip7702"?T(g):S(g)}function T(g){const E=m(g),[B,_,v,C,q,R,H,F,k,h,M,A,P]=E;if(E.length!==10&&E.length!==13)throw new t.InvalidSerializedTransactionError({attributes:{chainId:B,nonce:_,maxPriorityFeePerGas:v,maxFeePerGas:C,gas:q,to:R,value:H,data:F,accessList:k,authorizationList:h,...E.length>9?{v:M,r:A,s:P}:{}},serializedTransaction:g,type:"eip7702"});const I={chainId:(0,c.hexToNumber)(B),type:"eip7702"};return(0,i.isHex)(R)&&R!=="0x"&&(I.to=R),(0,i.isHex)(q)&&q!=="0x"&&(I.gas=(0,c.hexToBigInt)(q)),(0,i.isHex)(F)&&F!=="0x"&&(I.data=F),(0,i.isHex)(_)&&(I.nonce=_==="0x"?0:(0,c.hexToNumber)(_)),(0,i.isHex)(H)&&H!=="0x"&&(I.value=(0,c.hexToBigInt)(H)),(0,i.isHex)(C)&&C!=="0x"&&(I.maxFeePerGas=(0,c.hexToBigInt)(C)),(0,i.isHex)(v)&&v!=="0x"&&(I.maxPriorityFeePerGas=(0,c.hexToBigInt)(v)),k.length!==0&&k!=="0x"&&(I.accessList=j(k)),h.length!==0&&h!=="0x"&&(I.authorizationList=s(h)),(0,l.assertTransactionEIP7702)(I),{...E.length===13?y(E):void 0,...I}}function w(g){const E=m(g),B=E.length===4,_=B?E[0]:E,v=B?E.slice(1):[],[C,q,R,H,F,k,h,M,A,P,I,x,N,U]=_,[L,z,D]=v;if(!(_.length===11||_.length===14))throw new t.InvalidSerializedTransactionError({attributes:{chainId:C,nonce:q,maxPriorityFeePerGas:R,maxFeePerGas:H,gas:F,to:k,value:h,data:M,accessList:A,..._.length>9?{v:x,r:N,s:U}:{}},serializedTransaction:g,type:"eip4844"});const J={blobVersionedHashes:I,chainId:(0,c.hexToNumber)(C),to:k,type:"eip4844"};return(0,i.isHex)(F)&&F!=="0x"&&(J.gas=(0,c.hexToBigInt)(F)),(0,i.isHex)(M)&&M!=="0x"&&(J.data=M),(0,i.isHex)(q)&&(J.nonce=q==="0x"?0:(0,c.hexToNumber)(q)),(0,i.isHex)(h)&&h!=="0x"&&(J.value=(0,c.hexToBigInt)(h)),(0,i.isHex)(P)&&P!=="0x"&&(J.maxFeePerBlobGas=(0,c.hexToBigInt)(P)),(0,i.isHex)(H)&&H!=="0x"&&(J.maxFeePerGas=(0,c.hexToBigInt)(H)),(0,i.isHex)(R)&&R!=="0x"&&(J.maxPriorityFeePerGas=(0,c.hexToBigInt)(R)),A.length!==0&&A!=="0x"&&(J.accessList=j(A)),L&&z&&D&&(J.sidecars=(0,r.toBlobSidecars)({blobs:L,commitments:z,proofs:D})),(0,l.assertTransactionEIP4844)(J),{..._.length===14?y(_):void 0,...J}}function p(g){const E=m(g),[B,_,v,C,q,R,H,F,k,h,M,A]=E;if(!(E.length===9||E.length===12))throw new t.InvalidSerializedTransactionError({attributes:{chainId:B,nonce:_,maxPriorityFeePerGas:v,maxFeePerGas:C,gas:q,to:R,value:H,data:F,accessList:k,...E.length>9?{v:h,r:M,s:A}:{}},serializedTransaction:g,type:"eip1559"});const P={chainId:(0,c.hexToNumber)(B),type:"eip1559"};return(0,i.isHex)(R)&&R!=="0x"&&(P.to=R),(0,i.isHex)(q)&&q!=="0x"&&(P.gas=(0,c.hexToBigInt)(q)),(0,i.isHex)(F)&&F!=="0x"&&(P.data=F),(0,i.isHex)(_)&&(P.nonce=_==="0x"?0:(0,c.hexToNumber)(_)),(0,i.isHex)(H)&&H!=="0x"&&(P.value=(0,c.hexToBigInt)(H)),(0,i.isHex)(C)&&C!=="0x"&&(P.maxFeePerGas=(0,c.hexToBigInt)(C)),(0,i.isHex)(v)&&v!=="0x"&&(P.maxPriorityFeePerGas=(0,c.hexToBigInt)(v)),k.length!==0&&k!=="0x"&&(P.accessList=j(k)),(0,l.assertTransactionEIP1559)(P),{...E.length===12?y(E):void 0,...P}}function O(g){const E=m(g),[B,_,v,C,q,R,H,F,k,h,M]=E;if(!(E.length===8||E.length===11))throw new t.InvalidSerializedTransactionError({attributes:{chainId:B,nonce:_,gasPrice:v,gas:C,to:q,value:R,data:H,accessList:F,...E.length>8?{v:k,r:h,s:M}:{}},serializedTransaction:g,type:"eip2930"});const A={chainId:(0,c.hexToNumber)(B),type:"eip2930"};return(0,i.isHex)(q)&&q!=="0x"&&(A.to=q),(0,i.isHex)(C)&&C!=="0x"&&(A.gas=(0,c.hexToBigInt)(C)),(0,i.isHex)(H)&&H!=="0x"&&(A.data=H),(0,i.isHex)(_)&&(A.nonce=_==="0x"?0:(0,c.hexToNumber)(_)),(0,i.isHex)(R)&&R!=="0x"&&(A.value=(0,c.hexToBigInt)(R)),(0,i.isHex)(v)&&v!=="0x"&&(A.gasPrice=(0,c.hexToBigInt)(v)),F.length!==0&&F!=="0x"&&(A.accessList=j(F)),(0,l.assertTransactionEIP2930)(A),{...E.length===11?y(E):void 0,...A}}function S(g){const E=(0,u.fromRlp)(g,"hex"),[B,_,v,C,q,R,H,F,k]=E;if(!(E.length===6||E.length===9))throw new t.InvalidSerializedTransactionError({attributes:{nonce:B,gasPrice:_,gas:v,to:C,value:q,data:R,...E.length>6?{v:H,r:F,s:k}:{}},serializedTransaction:g,type:"legacy"});const h={type:"legacy"};if((0,i.isHex)(C)&&C!=="0x"&&(h.to=C),(0,i.isHex)(v)&&v!=="0x"&&(h.gas=(0,c.hexToBigInt)(v)),(0,i.isHex)(R)&&R!=="0x"&&(h.data=R),(0,i.isHex)(B)&&(h.nonce=B==="0x"?0:(0,c.hexToNumber)(B)),(0,i.isHex)(q)&&q!=="0x"&&(h.value=(0,c.hexToBigInt)(q)),(0,i.isHex)(_)&&_!=="0x"&&(h.gasPrice=(0,c.hexToBigInt)(_)),(0,l.assertTransactionLegacy)(h),E.length===6)return h;const M=(0,i.isHex)(H)&&H!=="0x"?(0,c.hexToBigInt)(H):0n;if(k==="0x"&&F==="0x")return M>0&&(h.chainId=Number(M)),h;const A=M,P=Number((A-35n)/2n);if(P>0)h.chainId=P;else if(A!==27n&&A!==28n)throw new t.InvalidLegacyVError({v:A});return h.v=A,h.s=k,h.r=F,h.yParity=A%2n===0n?1:0,h}function m(g){return(0,u.fromRlp)(`0x${g.slice(4)}`,"hex")}function j(g){const E=[];for(let B=0;B(0,d.isHash)(C)?C:(0,o.trim)(C))})}return E}function s(g){const E=[];for(let B=0;Br){const[c,u,d]=[a.slice(0,r-1),a.slice(r-1,r),a.slice(r)],l=Math.round(+`${u}.${d}`);l>9?a=`${BigInt(c)+BigInt(1)}0`.padStart(c.length+1,"0"):a=`${c}${l}`,a.length>r&&(a=a.slice(1),i=`${BigInt(i)+1n}`),a=a.slice(0,r)}else a=a.padEnd(r,"0");return BigInt(`${o?"-":""}${i}${a}`)}return rc}var yy;function K_(){if(yy)return tc;yy=1,Object.defineProperty(tc,"__esModule",{value:!0}),tc.parseEther=n;const e=Wo(),t=bd();function n(r,i="wei"){return(0,t.parseUnits)(r,e.etherUnits[i])}return tc}var nc={},gy;function Z_(){if(gy)return nc;gy=1,Object.defineProperty(nc,"__esModule",{value:!0}),nc.parseGwei=n;const e=Wo(),t=bd();function n(r,i="wei"){return(0,t.parseUnits)(r,e.gweiUnits[i])}return nc}var py;function b0(){return py||(py=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.padBytes=e.pad=e.isHex=e.isBytes=e.concatHex=e.concatBytes=e.concat=e.getChainContractAddress=e.extractChain=e.defineChain=e.assertCurrentChain=e.offchainLookupSignature=e.offchainLookupAbiItem=e.offchainLookup=e.ccipFetch=e.ccipRequest=e.buildRequest=e.verifyAuthorization=e.serializeAuthorizationList=e.recoverAuthorizationAddress=e.hashAuthorization=e.isAddressEqual=e.isAddress=e.getCreateAddress=e.getCreate2Address=e.getContractAddress=e.getAddress=e.parseEventLogs=e.getAbiItem=e.formatAbiItemWithArgs=e.formatAbiParams=e.formatAbiItem=e.encodePacked=e.encodeFunctionResult=e.encodeFunctionData=e.encodeEventTopics=e.encodeErrorResult=e.encodeDeployData=e.encodeAbiParameters=e.decodeFunctionResult=e.decodeFunctionData=e.decodeEventLog=e.decodeErrorResult=e.decodeAbiParameters=e.publicKeyToAddress=e.parseAccount=e.parseAbiParameters=e.parseAbiParameter=e.parseAbiItem=e.parseAbi=void 0,e.ripemd160=e.keccak256=e.isHash=e.getAction=e.formatTransactionRequest=e.defineTransactionRequest=e.defineTransactionReceipt=e.transactionType=e.formatTransaction=e.defineTransaction=e.formatLog=e.defineFormatter=e.extract=e.formatBlock=e.defineBlock=e.getTransactionError=e.getNodeError=e.containsNodeError=e.getEstimateGasError=e.getContractError=e.getCallError=e.toRlp=e.toHex=e.stringToHex=e.numberToHex=e.bytesToHex=e.boolToHex=e.toBytes=e.stringToBytes=e.numberToBytes=e.hexToBytes=e.boolToBytes=e.fromRlp=e.hexToString=e.hexToNumber=e.hexToBool=e.hexToBigInt=e.fromHex=e.fromBytes=e.bytesToString=e.bytesToNumber=e.bytesToBool=e.bytesToBigint=e.bytesToBigInt=e.trim=e.sliceHex=e.sliceBytes=e.slice=e.size=e.padHex=void 0,e.validateTypedData=e.serializeTypedData=e.serializeTransaction=e.serializeAccessList=e.parseTransaction=e.getTransactionType=e.getSerializedTransactionType=e.assertTransactionLegacy=e.assertTransactionEIP2930=e.assertTransactionEIP1559=e.assertRequest=e.stringify=e.verifyTypedData=e.verifyMessage=e.verifyHash=e.serializeErc8010Signature=e.serializeErc6492Signature=e.recoverTypedDataAddress=e.recoverPublicKey=e.recoverMessageAddress=e.recoverAddress=e.parseErc8010Signature=e.parseErc6492Signature=e.isErc8010Signature=e.isErc6492Signature=e.hashTypedData=e.hashStruct=e.hashMessage=e.getWebSocketRpcClient=e.socketClientCache=e.getSocketRpcClient=e.getHttpRpcClient=e.rpc=e.getSocket=e.integerRegex=e.bytesRegex=e.arrayRegex=e.nonceManager=e.createNonceManager=e.getFunctionSignature=e.toFunctionSignature=e.getFunctionSelector=e.toFunctionSelector=e.toFunctionHash=e.getEventSignature=e.toEventSignature=e.getEventSelector=e.toEventSelector=e.toEventHash=e.sha256=void 0,e.parseUnits=e.parseGwei=e.parseEther=e.formatUnits=e.formatGwei=e.formatEther=void 0;var t=lr();Object.defineProperty(e,"parseAbi",{enumerable:!0,get:function(){return t.parseAbi}}),Object.defineProperty(e,"parseAbiItem",{enumerable:!0,get:function(){return t.parseAbiItem}}),Object.defineProperty(e,"parseAbiParameter",{enumerable:!0,get:function(){return t.parseAbiParameter}}),Object.defineProperty(e,"parseAbiParameters",{enumerable:!0,get:function(){return t.parseAbiParameters}});var n=He();Object.defineProperty(e,"parseAccount",{enumerable:!0,get:function(){return n.parseAccount}});var r=kp();Object.defineProperty(e,"publicKeyToAddress",{enumerable:!0,get:function(){return r.publicKeyToAddress}});var i=hr();Object.defineProperty(e,"decodeAbiParameters",{enumerable:!0,get:function(){return i.decodeAbiParameters}});var a=Vu();Object.defineProperty(e,"decodeErrorResult",{enumerable:!0,get:function(){return a.decodeErrorResult}});var o=ni();Object.defineProperty(e,"decodeEventLog",{enumerable:!0,get:function(){return o.decodeEventLog}});var c=Nf();Object.defineProperty(e,"decodeFunctionData",{enumerable:!0,get:function(){return c.decodeFunctionData}});var u=nr();Object.defineProperty(e,"decodeFunctionResult",{enumerable:!0,get:function(){return u.decodeFunctionResult}});var d=It();Object.defineProperty(e,"encodeAbiParameters",{enumerable:!0,get:function(){return d.encodeAbiParameters}});var l=ai();Object.defineProperty(e,"encodeDeployData",{enumerable:!0,get:function(){return l.encodeDeployData}});var f=Ff();Object.defineProperty(e,"encodeErrorResult",{enumerable:!0,get:function(){return f.encodeErrorResult}});var b=$r();Object.defineProperty(e,"encodeEventTopics",{enumerable:!0,get:function(){return b.encodeEventTopics}});var T=ut();Object.defineProperty(e,"encodeFunctionData",{enumerable:!0,get:function(){return T.encodeFunctionData}});var w=Lf();Object.defineProperty(e,"encodeFunctionResult",{enumerable:!0,get:function(){return w.encodeFunctionResult}});var p=l_();Object.defineProperty(e,"encodePacked",{enumerable:!0,get:function(){return p.encodePacked}});var O=Qt();Object.defineProperty(e,"formatAbiItem",{enumerable:!0,get:function(){return O.formatAbiItem}}),Object.defineProperty(e,"formatAbiParams",{enumerable:!0,get:function(){return O.formatAbiParams}});var S=Mp();Object.defineProperty(e,"formatAbiItemWithArgs",{enumerable:!0,get:function(){return S.formatAbiItemWithArgs}});var m=er();Object.defineProperty(e,"getAbiItem",{enumerable:!0,get:function(){return m.getAbiItem}});var j=oi();Object.defineProperty(e,"parseEventLogs",{enumerable:!0,get:function(){return j.parseEventLogs}});var s=yt();Object.defineProperty(e,"getAddress",{enumerable:!0,get:function(){return s.getAddress}});var y=b_();Object.defineProperty(e,"getContractAddress",{enumerable:!0,get:function(){return y.getContractAddress}}),Object.defineProperty(e,"getCreate2Address",{enumerable:!0,get:function(){return y.getCreate2Address}}),Object.defineProperty(e,"getCreateAddress",{enumerable:!0,get:function(){return y.getCreateAddress}});var g=ct();Object.defineProperty(e,"isAddress",{enumerable:!0,get:function(){return g.isAddress}});var E=Ct();Object.defineProperty(e,"isAddressEqual",{enumerable:!0,get:function(){return E.isAddressEqual}});var B=Up();Object.defineProperty(e,"hashAuthorization",{enumerable:!0,get:function(){return B.hashAuthorization}});var _=Xo();Object.defineProperty(e,"recoverAuthorizationAddress",{enumerable:!0,get:function(){return _.recoverAuthorizationAddress}});var v=m_();Object.defineProperty(e,"serializeAuthorizationList",{enumerable:!0,get:function(){return v.serializeAuthorizationList}});var C=h_();Object.defineProperty(e,"verifyAuthorization",{enumerable:!0,get:function(){return C.verifyAuthorization}});var q=y_();Object.defineProperty(e,"buildRequest",{enumerable:!0,get:function(){return q.buildRequest}});var R=Uf();Object.defineProperty(e,"ccipRequest",{enumerable:!0,get:function(){return R.ccipRequest}}),Object.defineProperty(e,"ccipFetch",{enumerable:!0,get:function(){return R.ccipRequest}}),Object.defineProperty(e,"offchainLookup",{enumerable:!0,get:function(){return R.offchainLookup}}),Object.defineProperty(e,"offchainLookupAbiItem",{enumerable:!0,get:function(){return R.offchainLookupAbiItem}}),Object.defineProperty(e,"offchainLookupSignature",{enumerable:!0,get:function(){return R.offchainLookupSignature}});var H=di();Object.defineProperty(e,"assertCurrentChain",{enumerable:!0,get:function(){return H.assertCurrentChain}});var F=g_();Object.defineProperty(e,"defineChain",{enumerable:!0,get:function(){return F.defineChain}});var k=p_();Object.defineProperty(e,"extractChain",{enumerable:!0,get:function(){return k.extractChain}});var h=jr();Object.defineProperty(e,"getChainContractAddress",{enumerable:!0,get:function(){return h.getChainContractAddress}});var M=De();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return M.concat}}),Object.defineProperty(e,"concatBytes",{enumerable:!0,get:function(){return M.concatBytes}}),Object.defineProperty(e,"concatHex",{enumerable:!0,get:function(){return M.concatHex}});var A=Xf();Object.defineProperty(e,"isBytes",{enumerable:!0,get:function(){return A.isBytes}});var P=nt();Object.defineProperty(e,"isHex",{enumerable:!0,get:function(){return P.isHex}});var I=br();Object.defineProperty(e,"pad",{enumerable:!0,get:function(){return I.pad}}),Object.defineProperty(e,"padBytes",{enumerable:!0,get:function(){return I.padBytes}}),Object.defineProperty(e,"padHex",{enumerable:!0,get:function(){return I.padHex}});var x=st();Object.defineProperty(e,"size",{enumerable:!0,get:function(){return x.size}});var N=vt();Object.defineProperty(e,"slice",{enumerable:!0,get:function(){return N.slice}}),Object.defineProperty(e,"sliceBytes",{enumerable:!0,get:function(){return N.sliceBytes}}),Object.defineProperty(e,"sliceHex",{enumerable:!0,get:function(){return N.sliceHex}});var U=$t();Object.defineProperty(e,"trim",{enumerable:!0,get:function(){return U.trim}});var L=vf();Object.defineProperty(e,"bytesToBigInt",{enumerable:!0,get:function(){return L.bytesToBigInt}}),Object.defineProperty(e,"bytesToBigint",{enumerable:!0,get:function(){return L.bytesToBigInt}}),Object.defineProperty(e,"bytesToBool",{enumerable:!0,get:function(){return L.bytesToBool}}),Object.defineProperty(e,"bytesToNumber",{enumerable:!0,get:function(){return L.bytesToNumber}}),Object.defineProperty(e,"bytesToString",{enumerable:!0,get:function(){return L.bytesToString}}),Object.defineProperty(e,"fromBytes",{enumerable:!0,get:function(){return L.fromBytes}});var z=Ne();Object.defineProperty(e,"fromHex",{enumerable:!0,get:function(){return z.fromHex}}),Object.defineProperty(e,"hexToBigInt",{enumerable:!0,get:function(){return z.hexToBigInt}}),Object.defineProperty(e,"hexToBool",{enumerable:!0,get:function(){return z.hexToBool}}),Object.defineProperty(e,"hexToNumber",{enumerable:!0,get:function(){return z.hexToNumber}}),Object.defineProperty(e,"hexToString",{enumerable:!0,get:function(){return z.hexToString}});var D=$f();Object.defineProperty(e,"fromRlp",{enumerable:!0,get:function(){return D.fromRlp}});var J=Pe();Object.defineProperty(e,"boolToBytes",{enumerable:!0,get:function(){return J.boolToBytes}}),Object.defineProperty(e,"hexToBytes",{enumerable:!0,get:function(){return J.hexToBytes}}),Object.defineProperty(e,"numberToBytes",{enumerable:!0,get:function(){return J.numberToBytes}}),Object.defineProperty(e,"stringToBytes",{enumerable:!0,get:function(){return J.stringToBytes}}),Object.defineProperty(e,"toBytes",{enumerable:!0,get:function(){return J.toBytes}});var Z=ie();Object.defineProperty(e,"boolToHex",{enumerable:!0,get:function(){return Z.boolToHex}}),Object.defineProperty(e,"bytesToHex",{enumerable:!0,get:function(){return Z.bytesToHex}}),Object.defineProperty(e,"numberToHex",{enumerable:!0,get:function(){return Z.numberToHex}}),Object.defineProperty(e,"stringToHex",{enumerable:!0,get:function(){return Z.stringToHex}}),Object.defineProperty(e,"toHex",{enumerable:!0,get:function(){return Z.toHex}});var Y=Jo();Object.defineProperty(e,"toRlp",{enumerable:!0,get:function(){return Y.toRlp}});var X=Hf();Object.defineProperty(e,"getCallError",{enumerable:!0,get:function(){return X.getCallError}});var oe=pr();Object.defineProperty(e,"getContractError",{enumerable:!0,get:function(){return oe.getContractError}});var W=Dp();Object.defineProperty(e,"getEstimateGasError",{enumerable:!0,get:function(){return W.getEstimateGasError}});var K=Qo();Object.defineProperty(e,"containsNodeError",{enumerable:!0,get:function(){return K.containsNodeError}}),Object.defineProperty(e,"getNodeError",{enumerable:!0,get:function(){return K.getNodeError}});var $=ti();Object.defineProperty(e,"getTransactionError",{enumerable:!0,get:function(){return $.getTransactionError}});var re=Zu();Object.defineProperty(e,"defineBlock",{enumerable:!0,get:function(){return re.defineBlock}}),Object.defineProperty(e,"formatBlock",{enumerable:!0,get:function(){return re.formatBlock}});var te=vr();Object.defineProperty(e,"extract",{enumerable:!0,get:function(){return te.extract}});var ne=$o();Object.defineProperty(e,"defineFormatter",{enumerable:!0,get:function(){return ne.defineFormatter}});var se=rr();Object.defineProperty(e,"formatLog",{enumerable:!0,get:function(){return se.formatLog}});var ee=On();Object.defineProperty(e,"defineTransaction",{enumerable:!0,get:function(){return ee.defineTransaction}}),Object.defineProperty(e,"formatTransaction",{enumerable:!0,get:function(){return ee.formatTransaction}}),Object.defineProperty(e,"transactionType",{enumerable:!0,get:function(){return ee.transactionType}});var Q=fi();Object.defineProperty(e,"defineTransactionReceipt",{enumerable:!0,get:function(){return Q.defineTransactionReceipt}});var be=Rt();Object.defineProperty(e,"defineTransactionRequest",{enumerable:!0,get:function(){return be.defineTransactionRequest}}),Object.defineProperty(e,"formatTransactionRequest",{enumerable:!0,get:function(){return be.formatTransactionRequest}});var me=ge();Object.defineProperty(e,"getAction",{enumerable:!0,get:function(){return me.getAction}});var Ue=e0();Object.defineProperty(e,"isHash",{enumerable:!0,get:function(){return Ue.isHash}});var Ae=at();Object.defineProperty(e,"keccak256",{enumerable:!0,get:function(){return Ae.keccak256}});var Xe=__();Object.defineProperty(e,"ripemd160",{enumerable:!0,get:function(){return Xe.ripemd160}});var Me=If();Object.defineProperty(e,"sha256",{enumerable:!0,get:function(){return Me.sha256}});var Te=v_();Object.defineProperty(e,"toEventHash",{enumerable:!0,get:function(){return Te.toEventHash}});var pt=Rn();Object.defineProperty(e,"toEventSelector",{enumerable:!0,get:function(){return pt.toEventSelector}}),Object.defineProperty(e,"getEventSelector",{enumerable:!0,get:function(){return pt.toEventSelector}});var Ke=E_();Object.defineProperty(e,"toEventSignature",{enumerable:!0,get:function(){return Ke.toEventSignature}}),Object.defineProperty(e,"getEventSignature",{enumerable:!0,get:function(){return Ke.toEventSignature}});var Le=w_();Object.defineProperty(e,"toFunctionHash",{enumerable:!0,get:function(){return Le.toFunctionHash}});var Ze=Qr();Object.defineProperty(e,"toFunctionSelector",{enumerable:!0,get:function(){return Ze.toFunctionSelector}}),Object.defineProperty(e,"getFunctionSelector",{enumerable:!0,get:function(){return Ze.toFunctionSelector}});var ze=j_();Object.defineProperty(e,"toFunctionSignature",{enumerable:!0,get:function(){return ze.toFunctionSignature}}),Object.defineProperty(e,"getFunctionSignature",{enumerable:!0,get:function(){return ze.toFunctionSignature}});var xt=P_();Object.defineProperty(e,"createNonceManager",{enumerable:!0,get:function(){return xt.createNonceManager}}),Object.defineProperty(e,"nonceManager",{enumerable:!0,get:function(){return xt.nonceManager}});var xn=Du();Object.defineProperty(e,"arrayRegex",{enumerable:!0,get:function(){return xn.arrayRegex}}),Object.defineProperty(e,"bytesRegex",{enumerable:!0,get:function(){return xn.bytesRegex}}),Object.defineProperty(e,"integerRegex",{enumerable:!0,get:function(){return xn.integerRegex}});var yi=S_();Object.defineProperty(e,"getSocket",{enumerable:!0,get:function(){return yi.getSocket}}),Object.defineProperty(e,"rpc",{enumerable:!0,get:function(){return yi.rpc}});var Tr=r0();Object.defineProperty(e,"getHttpRpcClient",{enumerable:!0,get:function(){return Tr.getHttpRpcClient}});var gi=T_();Object.defineProperty(e,"getSocketRpcClient",{enumerable:!0,get:function(){return gi.getSocketRpcClient}}),Object.defineProperty(e,"socketClientCache",{enumerable:!0,get:function(){return gi.socketClientCache}});var pi=n0();Object.defineProperty(e,"getWebSocketRpcClient",{enumerable:!0,get:function(){return pi.getWebSocketRpcClient}});var hd=li();Object.defineProperty(e,"hashMessage",{enumerable:!0,get:function(){return hd.hashMessage}});var _i=bi();Object.defineProperty(e,"hashStruct",{enumerable:!0,get:function(){return _i.hashStruct}}),Object.defineProperty(e,"hashTypedData",{enumerable:!0,get:function(){return _i.hashTypedData}});var qn=i0();Object.defineProperty(e,"isErc6492Signature",{enumerable:!0,get:function(){return qn.isErc6492Signature}});var yd=c0();Object.defineProperty(e,"isErc8010Signature",{enumerable:!0,get:function(){return yd.isErc8010Signature}});var gd=F_();Object.defineProperty(e,"parseErc6492Signature",{enumerable:!0,get:function(){return gd.parseErc6492Signature}});var Hn=L_();Object.defineProperty(e,"parseErc8010Signature",{enumerable:!0,get:function(){return Hn.parseErc8010Signature}});var pd=_r();Object.defineProperty(e,"recoverAddress",{enumerable:!0,get:function(){return pd.recoverAddress}});var Mn=u0();Object.defineProperty(e,"recoverMessageAddress",{enumerable:!0,get:function(){return Mn.recoverMessageAddress}});var _d=jf();Object.defineProperty(e,"recoverPublicKey",{enumerable:!0,get:function(){return _d.recoverPublicKey}});var Sr=d0();Object.defineProperty(e,"recoverTypedDataAddress",{enumerable:!0,get:function(){return Sr.recoverTypedDataAddress}});var Ir=U_();Object.defineProperty(e,"serializeErc6492Signature",{enumerable:!0,get:function(){return Ir.serializeErc6492Signature}});var vd=z_();Object.defineProperty(e,"serializeErc8010Signature",{enumerable:!0,get:function(){return vd.serializeErc8010Signature}});var Br=D_();Object.defineProperty(e,"verifyHash",{enumerable:!0,get:function(){return Br.verifyHash}});var Rr=G_();Object.defineProperty(e,"verifyMessage",{enumerable:!0,get:function(){return Rr.verifyMessage}});var kn=V_();Object.defineProperty(e,"verifyTypedData",{enumerable:!0,get:function(){return kn.verifyTypedData}});var Ed=Ve();Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return Ed.stringify}});var wd=Ot();Object.defineProperty(e,"assertRequest",{enumerable:!0,get:function(){return wd.assertRequest}});var Nn=ad();Object.defineProperty(e,"assertTransactionEIP1559",{enumerable:!0,get:function(){return Nn.assertTransactionEIP1559}}),Object.defineProperty(e,"assertTransactionEIP2930",{enumerable:!0,get:function(){return Nn.assertTransactionEIP2930}}),Object.defineProperty(e,"assertTransactionLegacy",{enumerable:!0,get:function(){return Nn.assertTransactionLegacy}});var jd=f0();Object.defineProperty(e,"getSerializedTransactionType",{enumerable:!0,get:function(){return jd.getSerializedTransactionType}});var vi=$u();Object.defineProperty(e,"getTransactionType",{enumerable:!0,get:function(){return vi.getTransactionType}});var Pd=l0();Object.defineProperty(e,"parseTransaction",{enumerable:!0,get:function(){return Pd.parseTransaction}});var Fn=Qf();Object.defineProperty(e,"serializeAccessList",{enumerable:!0,get:function(){return Fn.serializeAccessList}});var Ei=cd();Object.defineProperty(e,"serializeTransaction",{enumerable:!0,get:function(){return Ei.serializeTransaction}});var on=ud();Object.defineProperty(e,"serializeTypedData",{enumerable:!0,get:function(){return on.serializeTypedData}}),Object.defineProperty(e,"validateTypedData",{enumerable:!0,get:function(){return on.validateTypedData}});var Ad=Ko();Object.defineProperty(e,"formatEther",{enumerable:!0,get:function(){return Ad.formatEther}});var Td=en();Object.defineProperty(e,"formatGwei",{enumerable:!0,get:function(){return Td.formatGwei}});var Sd=Wu();Object.defineProperty(e,"formatUnits",{enumerable:!0,get:function(){return Sd.formatUnits}});var Id=K_();Object.defineProperty(e,"parseEther",{enumerable:!0,get:function(){return Id.parseEther}});var Bd=Z_();Object.defineProperty(e,"parseGwei",{enumerable:!0,get:function(){return Bd.parseGwei}});var wi=bd();Object.defineProperty(e,"parseUnits",{enumerable:!0,get:function(){return wi.parseUnits}})})(ef)),ef}var _y;function p6(){if(_y)return Ia;_y=1,Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.formatProof=n;const e=b0();function t(r){return r.map(i=>({...i,value:BigInt(i.value)}))}function n(r){return{...r,balance:r.balance?BigInt(r.balance):void 0,nonce:r.nonce?(0,e.hexToNumber)(r.nonce):void 0,storageProof:r.storageProof?t(r.storageProof):void 0}}return Ia}var vy;function _6(){if(vy)return Sa;vy=1,Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.getProof=n;const e=ie(),t=p6();async function n(r,{address:i,blockNumber:a,blockTag:o,storageKeys:c}){const u=o??"latest",d=a!==void 0?(0,e.numberToHex)(a):void 0,l=await r.request({method:"eth_getProof",params:[i,c,d||u]});return(0,t.formatProof)(l)}return Sa}var oc={},Ey;function v6(){if(Ey)return oc;Ey=1,Object.defineProperty(oc,"__esModule",{value:!0}),oc.getStorageAt=t;const e=ie();async function t(n,{address:r,blockNumber:i,blockTag:a="latest",slot:o}){const c=i!==void 0?(0,e.numberToHex)(i):void 0;return await n.request({method:"eth_getStorageAt",params:[r,o,c||a]})}return oc}var ic={},wy;function m0(){if(wy)return ic;wy=1,Object.defineProperty(ic,"__esModule",{value:!0}),ic.getTransaction=r;const e=dt(),t=ie(),n=On();async function r(i,{blockHash:a,blockNumber:o,blockTag:c,hash:u,index:d,sender:l,nonce:f}){const b=c||"latest",T=o!==void 0?(0,t.numberToHex)(o):void 0;let w=null;if(u?w=await i.request({method:"eth_getTransactionByHash",params:[u]},{dedupe:!0}):a?w=await i.request({method:"eth_getTransactionByBlockHashAndIndex",params:[a,(0,t.numberToHex)(d)]},{dedupe:!0}):typeof d=="number"?w=await i.request({method:"eth_getTransactionByBlockNumberAndIndex",params:[T||b,(0,t.numberToHex)(d)]},{dedupe:!!T}):l&&typeof f=="number"&&(w=await i.request({method:"eth_getTransactionBySenderAndNonce",params:[l,(0,t.numberToHex)(f)]},{dedupe:!0})),!w)throw new e.TransactionNotFoundError({blockHash:a,blockNumber:o,blockTag:b,hash:u,index:d});return(i.chain?.formatters?.transaction?.format||n.formatTransaction)(w,"getTransaction")}return ic}var sc={},jy;function E6(){if(jy)return sc;jy=1,Object.defineProperty(sc,"__esModule",{value:!0}),sc.getTransactionConfirmations=r;const e=ge(),t=ui(),n=m0();async function r(i,{hash:a,transactionReceipt:o}){const[c,u]=await Promise.all([(0,e.getAction)(i,t.getBlockNumber,"getBlockNumber")({}),a?(0,e.getAction)(i,n.getTransaction,"getTransaction")({hash:a}):void 0]),d=o?.blockNumber||u?.blockNumber;return d?c-d+1n:0n}return sc}var ac={},Py;function Y_(){if(Py)return ac;Py=1,Object.defineProperty(ac,"__esModule",{value:!0}),ac.getTransactionReceipt=n;const e=dt(),t=fi();async function n(r,{hash:i}){const a=await r.request({method:"eth_getTransactionReceipt",params:[i]},{dedupe:!0});if(!a)throw new e.TransactionReceiptNotFoundError({hash:i});return(r.chain?.formatters?.transactionReceipt?.format||t.formatTransactionReceipt)(a,"getTransactionReceipt")}return ac}var cc={},Ay;function w6(){if(Ay)return cc;Ay=1,Object.defineProperty(cc,"__esModule",{value:!0}),cc.multicall=f;const e=wr(),t=ii(),n=qe(),r=fe(),i=yr(),a=nr(),o=ut(),c=jr(),u=pr(),d=ge(),l=kt();async function f(b,T){const{account:w,authorizationList:p,allowFailure:O=!0,blockNumber:S,blockOverrides:m,blockTag:j,stateOverride:s}=T,y=T.contracts,{batchSize:g=T.batchSize??1024,deployless:E=T.deployless??!1}=typeof b.batch?.multicall=="object"?b.batch.multicall:{},B=(()=>{if(T.multicallAddress)return T.multicallAddress;if(E)return null;if(b.chain)return(0,c.getChainContractAddress)({blockNumber:S,chain:b.chain,contract:"multicall3"});throw new Error("client chain not configured. multicallAddress is required.")})(),_=[[]];let v=0,C=0;for(let H=0;H0&&C>g&&_[v].length>0&&(v++,C=(A.length-2)/2,_[v]=[]),_[v]=[..._[v],{allowFailure:!0,callData:A,target:k}]}catch(A){const P=(0,u.getContractError)(A,{abi:F,address:k,args:h,docsPath:"/docs/contract/multicall",functionName:M,sender:w});if(!O)throw P;_[v]=[..._[v],{allowFailure:!0,callData:"0x",target:k}]}}const q=await Promise.allSettled(_.map(H=>(0,d.getAction)(b,l.readContract,"readContract")({...B===null?{code:t.multicall3Bytecode}:{address:B},abi:e.multicall3Abi,account:w,args:[H],authorizationList:p,blockNumber:S,blockOverrides:m,blockTag:j,functionName:"aggregate3",stateOverride:s}))),R=[];for(let H=0;H{const M=h,A=M.account?(0,t.parseAccount)(M.account):void 0,P=M.abi?(0,o.encodeFunctionData)(M):M.data,I={...M,account:A,data:M.dataSuffix?(0,c.concat)([P||"0x",M.dataSuffix]):P,from:M.from??A?.address};return(0,p.assertRequest)(I),(0,T.formatTransactionRequest)(I)}),k=R.stateOverrides?(0,w.serializeStateOverride)(R.stateOverrides):void 0;_.push({blockOverrides:H,calls:F,stateOverrides:k})}const C=(typeof j=="bigint"?(0,u.numberToHex)(j):void 0)||s;return(await S.request({method:"eth_simulateV1",params:[{blockStateCalls:_,returnFullTransactions:g,traceTransfers:E,validation:B},C]})).map((R,H)=>({...(0,f.formatBlock)(R),calls:R.calls.map((F,k)=>{const{abi:h,args:M,functionName:A,to:P}=y[H].calls[k],I=F.error?.data??F.returnData,x=BigInt(F.gasUsed),N=F.logs?.map(D=>(0,b.formatLog)(D)),U=F.status==="0x1"?"success":"failure",L=h&&U==="success"&&I!=="0x"?(0,a.decodeFunctionResult)({abi:h,data:I,functionName:A}):null,z=(()=>{if(U==="success")return;let D;if(F.error?.data==="0x"?D=new n.AbiDecodingZeroDataError:F.error&&(D=new r.RawContractError(F.error)),!!D)return(0,d.getContractError)(D,{abi:h??[],address:P??"0x",args:M,functionName:A??""})})();return{data:I,gasUsed:x,logs:N,status:U,...U==="success"?{result:L}:{error:z}}})}))}catch(_){const v=_,C=(0,l.getNodeError)(v,{});throw C instanceof i.UnknownNodeError?v:C}}return uc}var dc={},fr={},rt={},jn={},Sy;function j6(){if(Sy)return jn;Sy=1,Object.defineProperty(jn,"__esModule",{value:!0}),jn.normalizeSignature=n,jn.isArgOfType=r,jn.getAmbiguousTypes=i;const e=dd(),t=gt();function n(a){let o=!0,c="",u=0,d="",l=!1;for(let f=0;fr(Object.values(a)[l],d)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(u)?c==="number"||c==="bigint":/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(u)?c==="string"||a instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(u)?Array.isArray(a)&&a.every(d=>r(d,{...o,type:u.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function i(a,o,c){for(const u in a){const d=a[u],l=o[u];if(d.type==="tuple"&&l.type==="tuple"&&"components"in d&&"components"in l)return i(d.components,l.components,c[u]);const f=[d.type,l.type];if(f.includes("address")&&f.includes("bytes20")?!0:f.includes("address")&&f.includes("string")?e.validate(c[u],{strict:!1}):f.includes("address")&&f.includes("bytes")?e.validate(c[u],{strict:!1}):!1)return f}}return jn}var Iy;function X_(){if(Iy)return rt;Iy=1,Object.defineProperty(rt,"__esModule",{value:!0}),rt.InvalidSelectorSizeError=rt.NotFoundError=rt.AmbiguityError=void 0,rt.format=a,rt.from=o,rt.fromAbi=c,rt.getSelector=u,rt.getSignature=d,rt.getSignatureHash=l;const e=lr(),t=gt(),n=s0(),r=We(),i=j6();function a(w){return e.formatAbiItem(w)}function o(w,p={}){const{prepare:O=!0}=p,S=Array.isArray(w)||typeof w=="string"?e.parseAbiItem(w):w;return{...S,...O?{hash:l(S)}:{}}}function c(w,p,O){const{args:S=[],prepare:m=!0}=O??{},j=r.validate(p,{strict:!1}),s=w.filter(E=>j?E.type==="function"||E.type==="error"?u(E)===r.slice(p,0,4):E.type==="event"?l(E)===p:!1:"name"in E&&E.name===p);if(s.length===0)throw new b({name:p});if(s.length===1)return{...s[0],...m?{hash:l(s[0])}:{}};let y;for(const E of s){if(!("inputs"in E))continue;if(!S||S.length===0){if(!E.inputs||E.inputs.length===0)return{...E,...m?{hash:l(E)}:{}};continue}if(!E.inputs||E.inputs.length===0||E.inputs.length!==S.length)continue;if(S.every((_,v)=>{const C="inputs"in E&&E.inputs[v];return C?i.isArgOfType(_,C):!1})){if(y&&"inputs"in y&&y.inputs){const _=i.getAmbiguousTypes(E.inputs,y.inputs,S);if(_)throw new f({abiItem:E,type:_[0]},{abiItem:y,type:_[1]})}y=E}}const g=(()=>{if(y)return y;const[E,...B]=s;return{...E,overloads:B}})();if(!g)throw new b({name:p});return{...g,...m?{hash:l(g)}:{}}}function u(...w){const p=(()=>{if(Array.isArray(w[0])){const[O,S]=w;return c(O,S)}return w[0]})();return r.slice(l(p),0,4)}function d(...w){const p=(()=>{if(Array.isArray(w[0])){const[S,m]=w;return c(S,m)}return w[0]})(),O=typeof p=="string"?p:e.formatAbiItem(p);return i.normalizeSignature(O)}function l(...w){const p=(()=>{if(Array.isArray(w[0])){const[O,S]=w;return c(O,S)}return w[0]})();return typeof p!="string"&&"hash"in p&&p.hash?p.hash:n.keccak256(r.fromString(d(p)))}class f extends t.BaseError{constructor(p,O){super("Found ambiguous types in overloaded ABI Items.",{metaMessages:[`\`${p.type}\` in \`${i.normalizeSignature(e.formatAbiItem(p.abiItem))}\`, and`,`\`${O.type}\` in \`${i.normalizeSignature(e.formatAbiItem(O.abiItem))}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItem.AmbiguityError"})}}rt.AmbiguityError=f;class b extends t.BaseError{constructor({name:p,data:O,type:S="item"}){const m=p?` with name "${p}"`:O?` with data "${O}"`:"";super(`ABI ${S}${m} not found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItem.NotFoundError"})}}rt.NotFoundError=b;class T extends t.BaseError{constructor({data:p}){super(`Selector size is invalid. Expected 4 bytes. Received ${r.size(p)} bytes ("${p}").`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItem.InvalidSelectorSizeError"})}}return rt.InvalidSelectorSizeError=T,rt}var By;function P6(){if(By)return fr;By=1,Object.defineProperty(fr,"__esModule",{value:!0}),fr.decode=i,fr.encode=a,fr.format=o,fr.from=c,fr.fromAbi=u;const e=lr(),t=X_(),n=mi(),r=We();function i(...d){const[l,f]=(()=>{if(Array.isArray(d[0])){const[w,p]=d;return[u(w),p]}return d})(),{bytecode:b}=f;if(l.inputs?.length===0)return;const T=f.data.replace(b,"0x");return n.decode(l.inputs,T)}function a(...d){const[l,f]=(()=>{if(Array.isArray(d[0])){const[w,p]=d;return[u(w),p]}return d})(),{bytecode:b,args:T}=f;return r.concat(b,l.inputs?.length&&T?.length?n.encode(l.inputs,T):"0x")}function o(d){return e.formatAbiItem(d)}function c(d){return t.from(d)}function u(d){const l=d.find(f=>f.type==="constructor");if(!l)throw new t.NotFoundError({name:"constructor"});return l}return fr}var Tt={},Ry;function A6(){if(Ry)return Tt;Ry=1,Object.defineProperty(Tt,"__esModule",{value:!0}),Tt.decodeData=i,Tt.decodeResult=a,Tt.encodeData=o,Tt.encodeResult=c,Tt.format=u,Tt.from=d,Tt.fromAbi=l,Tt.getSelector=f;const e=lr(),t=X_(),n=mi(),r=We();function i(...b){const[T,w]=(()=>{if(Array.isArray(b[0])){const[S,m,j]=b;return[l(S,m),j]}return b})(),{overloads:p}=T;if(r.size(w)<4)throw new t.InvalidSelectorSizeError({data:w});if(T.inputs?.length===0)return;const O=p?l([T,...p],w):T;if(!(r.size(w)<=4))return n.decode(O.inputs,r.slice(w,4))}function a(...b){const[T,w,p={}]=(()=>{if(Array.isArray(b[0])){const[S,m,j,s]=b;return[l(S,m),j,s]}return b})(),O=n.decode(T.outputs,w,p);if(!(O&&Object.keys(O).length===0))return O&&Object.keys(O).length===1?Array.isArray(O)?O[0]:Object.values(O)[0]:O}function o(...b){const[T,w=[]]=(()=>{if(Array.isArray(b[0])){const[y,g,E]=b;return[l(y,g,{args:E}),E]}const[j,s]=b;return[j,s]})(),{overloads:p}=T,O=p?l([T,...p],T.name,{args:w}):T,S=f(O),m=w.length>0?n.encode(O.inputs,w):void 0;return m?r.concat(S,m):S}function c(...b){const[T,w,p={}]=(()=>{if(Array.isArray(b[0])){const[m,j,s,y]=b;return[l(m,j),s,y]}return b})(),{as:O="Array"}=p,S=T.outputs.length===1?[w]:Array.isArray(w)?w:O==="Object"?Object.values(w):[w];return n.encode(T.outputs,S)}function u(b){return e.formatAbiItem(b)}function d(b,T={}){return t.from(b,T)}function l(b,T,w){const p=t.fromAbi(b,T,w);if(p.type!=="function")throw new t.NotFoundError({name:T,type:"function"});return p}function f(b){return t.getSelector(b)}return Tt}var Wr={},Oy;function Q_(){return Oy||(Oy=1,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.zeroAddress=Wr.ethAddress=void 0,Wr.ethAddress="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",Wr.zeroAddress="0x0000000000000000000000000000000000000000"),Wr}var Cy;function T6(){if(Cy)return dc;Cy=1,Object.defineProperty(dc,"__esModule",{value:!0}),dc.simulateCalls=f;const e=P6(),t=A6(),n=He(),r=Q_(),i=ii(),a=fe(),o=ut(),c=b0(),u=c_(),d=J_(),l="0x6080604052348015600e575f80fd5b5061016d8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8b2cb4f1461002d575b5f80fd5b610047600480360381019061004291906100db565b61005d565b604051610054919061011e565b60405180910390f35b5f8173ffffffffffffffffffffffffffffffffffffffff16319050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100aa82610081565b9050919050565b6100ba816100a0565b81146100c4575f80fd5b50565b5f813590506100d5816100b1565b92915050565b5f602082840312156100f0576100ef61007d565b5b5f6100fd848285016100c7565b91505092915050565b5f819050919050565b61011881610106565b82525050565b5f6020820190506101315f83018461010f565b9291505056fea26469706673582212203b9fe929fe995c7cf9887f0bdba8a36dd78e8b73f149b17d2d9ad7cd09d2dc6264736f6c634300081a0033";async function f(b,T){const{blockNumber:w,blockTag:p,calls:O,stateOverrides:S,traceAssetChanges:m,traceTransfers:j,validation:s}=T,y=T.account?(0,n.parseAccount)(T.account):void 0;if(m&&!y)throw new a.BaseError("`account` is required when `traceAssetChanges` is true");const g=y?e.encode(e.from("constructor(bytes, bytes)"),{bytecode:i.deploylessCallViaBytecodeBytecode,args:[l,t.encodeData(t.from("function getBalance(address)"),[y.address])]}):void 0,E=m?await Promise.all(T.calls.map(async Y=>{if(!Y.data&&!Y.abi)return;const{accessList:X}=await(0,u.createAccessList)(b,{account:y.address,...Y,data:Y.abi?(0,o.encodeFunctionData)(Y):Y.data});return X.map(({address:oe,storageKeys:W})=>W.length>0?oe:null)})).then(Y=>Y.flat().filter(Boolean)):[],B=await(0,d.simulateBlocks)(b,{blockNumber:w,blockTag:p,blocks:[...m?[{calls:[{data:g}],stateOverrides:S},{calls:E.map((Y,X)=>({abi:[t.from("function balanceOf(address) returns (uint256)")],functionName:"balanceOf",args:[y.address],to:Y,from:r.zeroAddress,nonce:X})),stateOverrides:[{address:r.zeroAddress,nonce:0}]}]:[],{calls:[...O,{}].map(Y=>({...Y,from:y?.address})),stateOverrides:S},...m?[{calls:[{data:g}]},{calls:E.map((Y,X)=>({abi:[t.from("function balanceOf(address) returns (uint256)")],functionName:"balanceOf",args:[y.address],to:Y,from:r.zeroAddress,nonce:X})),stateOverrides:[{address:r.zeroAddress,nonce:0}]},{calls:E.map((Y,X)=>({to:Y,abi:[t.from("function decimals() returns (uint256)")],functionName:"decimals",from:r.zeroAddress,nonce:X})),stateOverrides:[{address:r.zeroAddress,nonce:0}]},{calls:E.map((Y,X)=>({to:Y,abi:[t.from("function tokenURI(uint256) returns (string)")],functionName:"tokenURI",args:[0n],from:r.zeroAddress,nonce:X})),stateOverrides:[{address:r.zeroAddress,nonce:0}]},{calls:E.map((Y,X)=>({to:Y,abi:[t.from("function symbol() returns (string)")],functionName:"symbol",from:r.zeroAddress,nonce:X})),stateOverrides:[{address:r.zeroAddress,nonce:0}]}]:[]],traceTransfers:j,validation:s}),_=m?B[2]:B[0],[v,C,,q,R,H,F,k]=m?B:[],{calls:h,...M}=_,A=h.slice(0,-1)??[],P=v?.calls??[],I=C?.calls??[],x=[...P,...I].map(Y=>Y.status==="success"?(0,c.hexToBigInt)(Y.data):null),N=q?.calls??[],U=R?.calls??[],L=[...N,...U].map(Y=>Y.status==="success"?(0,c.hexToBigInt)(Y.data):null),z=(H?.calls??[]).map(Y=>Y.status==="success"?Y.result:null),D=(k?.calls??[]).map(Y=>Y.status==="success"?Y.result:null),J=(F?.calls??[]).map(Y=>Y.status==="success"?Y.result:null),Z=[];for(const[Y,X]of L.entries()){const oe=x[Y];if(typeof X!="bigint"||typeof oe!="bigint")continue;const W=z[Y-1],K=D[Y-1],$=J[Y-1],re=Y===0?{address:r.ethAddress,decimals:18,symbol:"ETH"}:{address:E[Y-1],decimals:$||W?Number(W??1):void 0,symbol:K??void 0};Z.some(te=>te.token.address===re.address)||Z.push({token:re,value:{pre:oe,post:X,diff:X-oe}})}return{assetChanges:Z,block:M,results:A}}return dc}var Pn={},Lo={},bf={},xy;function S6(){return xy||(xy=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InvalidWrappedSignatureError=e.universalSignatureValidatorAbi=e.universalSignatureValidatorBytecode=e.magicBytes=void 0,e.assert=i,e.from=a,e.unwrap=o,e.wrap=c,e.validate=u;const t=mi(),n=gt(),r=We();e.magicBytes="0x6492649264926492649264926492649264926492649264926492649264926492",e.universalSignatureValidatorBytecode="0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572",e.universalSignatureValidatorAbi=[{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function",name:"isValidSig"}];function i(l){if(r.slice(l,-32)!==e.magicBytes)throw new d(l)}function a(l){return typeof l=="string"?o(l):l}function o(l){i(l);const[f,b,T]=t.decode(t.from("address, bytes, bytes"),l);return{data:b,signature:T,to:f}}function c(l){const{data:f,signature:b,to:T}=l;return r.concat(t.encode(t.from("address, bytes, bytes"),[T,f,b]),e.magicBytes)}function u(l){try{return i(l),!0}catch{return!1}}class d extends n.BaseError{constructor(f){super(`Value \`${f}\` is an invalid ERC-6492 wrapped signature.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SignatureErc6492.InvalidWrappedSignatureError"})}}e.InvalidWrappedSignatureError=d})(bf)),bf}var qy;function I6(){return qy||(qy=1,Object.defineProperty(Lo,"__esModule",{value:!0}),Lo.SignatureErc6492=void 0,Lo.SignatureErc6492=S6()),Lo}var fc={},Hy;function $_(){if(Hy)return fc;Hy=1,Object.defineProperty(fc,"__esModule",{value:!0}),fc.serializeSignature=r;const e=Yo(),t=Ne(),n=Pe();function r({r:i,s:a,to:o="hex",v:c,yParity:u}){const d=(()=>{if(u===0||u===1)return u;if(c&&(c===27n||c===28n||c>=35n))return c%2n===0n?1:0;throw new Error("Invalid `v` or `yParity` value")})(),l=`0x${new e.secp256k1.Signature((0,t.hexToBigInt)(i),(0,t.hexToBigInt)(a)).toCompactHex()}${d===0?"1b":"1c"}`;return o==="hex"?l:(0,n.hexToBytes)(l)}return fc}var My;function md(){if(My)return Pn;My=1,Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.verifyHash=s,Pn.verifyErc8010=y,Pn.verifyErc1271=E;const e=I6(),t=ld(),n=wr(),r=ii(),i=yr(),a=ai(),o=ut(),c=yt(),u=Ct(),d=h_(),l=De(),f=nt(),b=Ne(),T=ie(),w=ge(),p=_r(),O=$_(),S=ci(),m=f_(),j=kt();async function s(_,v){const{address:C,chain:q=_.chain,hash:R,erc6492VerifierAddress:H=v.universalSignatureVerifierAddress??q?.contracts?.erc6492Verifier?.address,multicallAddress:F=v.multicallAddress??q?.contracts?.multicall3?.address}=v;if(q?.verifyHash)return await q.verifyHash(_,v);const k=(()=>{const h=v.signature;return(0,f.isHex)(h)?h:typeof h=="object"&&"r"in h&&"s"in h?(0,O.serializeSignature)(h):(0,T.bytesToHex)(h)})();try{return t.SignatureErc8010.validate(k)?await y(_,{...v,multicallAddress:F,signature:k}):await g(_,{...v,verifierAddress:H,signature:k})}catch(h){try{if((0,u.isAddressEqual)((0,c.getAddress)(C),await(0,p.recoverAddress)({hash:R,signature:k})))return!0}catch{}if(h instanceof B)return!1;throw h}}async function y(_,v){const{address:C,blockNumber:q,blockTag:R,hash:H,multicallAddress:F}=v,{authorization:k,data:h,signature:M,to:A}=t.SignatureErc8010.unwrap(v.signature);if(await(0,m.getCode)(_,{address:C,blockNumber:q,blockTag:R})===(0,l.concatHex)(["0xef0100",k.address]))return await E(_,{address:C,blockNumber:q,blockTag:R,hash:H,signature:M});const I={address:k.address,chainId:Number(k.chainId),nonce:Number(k.nonce),r:(0,T.numberToHex)(k.r,{size:32}),s:(0,T.numberToHex)(k.s,{size:32}),yParity:k.yParity};if(!await(0,d.verifyAuthorization)({address:C,authorization:I}))throw new B;const N=await(0,w.getAction)(_,j.readContract,"readContract")({...F?{address:F}:{code:r.multicall3Bytecode},authorizationList:[I],abi:n.multicall3Abi,blockNumber:q,blockTag:"pending",functionName:"aggregate3",args:[[...h?[{allowFailure:!0,target:A??C,callData:h}]:[],{allowFailure:!0,target:C,callData:(0,o.encodeFunctionData)({abi:n.erc1271Abi,functionName:"isValidSignature",args:[H,M]})}]]});if(N[N.length-1]?.returnData?.startsWith("0x1626ba7e"))return!0;throw new B}async function g(_,v){const{address:C,factory:q,factoryData:R,hash:H,signature:F,verifierAddress:k,...h}=v,M=await(async()=>!q&&!R||e.SignatureErc6492.validate(F)?F:e.SignatureErc6492.wrap({data:R,signature:F,to:q}))(),A=k?{to:k,data:(0,o.encodeFunctionData)({abi:n.erc6492SignatureValidatorAbi,functionName:"isValidSig",args:[C,H,M]}),...h}:{data:(0,a.encodeDeployData)({abi:n.erc6492SignatureValidatorAbi,args:[C,H,M],bytecode:r.erc6492SignatureValidatorByteCode}),...h},{data:P}=await(0,w.getAction)(_,S.call,"call")(A).catch(I=>{throw I instanceof i.CallExecutionError?new B:I});if((0,b.hexToBool)(P??"0x0"))return!0;throw new B}async function E(_,v){const{address:C,blockNumber:q,blockTag:R,hash:H,signature:F}=v;if((await(0,w.getAction)(_,j.readContract,"readContract")({address:C,abi:n.erc1271Abi,args:[H,F],blockNumber:q,blockTag:R,functionName:"isValidSignature"}).catch(h=>{throw h instanceof i.ContractFunctionExecutionError?new B:h})).startsWith("0x1626ba7e"))return!0;throw new B}class B extends Error{}return Pn}var lc={},ky;function B6(){if(ky)return lc;ky=1,Object.defineProperty(lc,"__esModule",{value:!0}),lc.verifyMessage=r;const e=ge(),t=li(),n=md();async function r(i,{address:a,message:o,factory:c,factoryData:u,signature:d,...l}){const f=(0,t.hashMessage)(o);return(0,e.getAction)(i,n.verifyHash,"verifyHash")({address:a,factory:c,factoryData:u,hash:f,signature:d,...l})}return lc}var bc={},Ny;function R6(){if(Ny)return bc;Ny=1,Object.defineProperty(bc,"__esModule",{value:!0}),bc.verifyTypedData=r;const e=ge(),t=bi(),n=md();async function r(i,a){const{address:o,factory:c,factoryData:u,signature:d,message:l,primaryType:f,types:b,domain:T,...w}=a,p=(0,t.hashTypedData)({message:l,primaryType:f,types:b,domain:T});return(0,e.getAction)(i,n.verifyHash,"verifyHash")({address:o,factory:c,factoryData:u,hash:p,signature:d,...w})}return bc}var mc={},hc={},Fy;function e2(){if(Fy)return hc;Fy=1,Object.defineProperty(hc,"__esModule",{value:!0}),hc.watchBlockNumber=o;const e=Ne(),t=ge(),n=nn(),r=Cn(),i=Ve(),a=ui();function o(c,{emitOnBegin:u=!1,emitMissed:d=!1,onBlockNumber:l,onError:f,poll:b,pollingInterval:T=c.pollingInterval}){const w=typeof b<"u"?b:!(c.transport.type==="webSocket"||c.transport.type==="ipc"||c.transport.type==="fallback"&&(c.transport.transports[0].config.type==="webSocket"||c.transport.transports[0].config.type==="ipc"));let p;return w?(()=>{const m=(0,i.stringify)(["watchBlockNumber",c.uid,u,d,T]);return(0,n.observe)(m,{onBlockNumber:l,onError:f},j=>(0,r.poll)(async()=>{try{const s=await(0,t.getAction)(c,a.getBlockNumber,"getBlockNumber")({cacheTime:0});if(p!==void 0){if(s===p)return;if(s-p>1&&d)for(let y=p+1n;yp)&&(j.onBlockNumber(s,p),p=s)}catch(s){j.onError?.(s)}},{emitOnBegin:u,interval:T}))})():(()=>{const m=(0,i.stringify)(["watchBlockNumber",c.uid,u,d]);return(0,n.observe)(m,{onBlockNumber:l,onError:f},j=>{let s=!0,y=()=>s=!1;return(async()=>{try{const g=(()=>{if(c.transport.type==="fallback"){const B=c.transport.transports.find(_=>_.config.type==="webSocket"||_.config.type==="ipc");return B?B.value:c.transport}return c.transport})(),{unsubscribe:E}=await g.subscribe({params:["newHeads"],onData(B){if(!s)return;const _=(0,e.hexToBigInt)(B.result?.number);j.onBlockNumber(_,p),p=_},onError(B){j.onError?.(B)}});y=E,s||y()}catch(g){f?.(g)}})(),()=>y()})})()}return hc}var Ly;function t2(){if(Ly)return mc;Ly=1,Object.defineProperty(mc,"__esModule",{value:!0}),mc.waitForTransactionReceipt=f;const e=Tf(),t=dt(),n=ge(),r=nn(),i=Mf(),a=id(),o=Ve(),c=tn(),u=m0(),d=Y_(),l=e2();async function f(b,T){const{checkReplacement:w=!0,confirmations:p=1,hash:O,onReplaced:S,retryCount:m=6,retryDelay:j=({count:h})=>~~(1<{q?.(),C?.(),F(new t.WaitForTransactionReceiptTimeoutError({hash:O}))},s):void 0;return C=(0,r.observe)(y,{onReplaced:S,resolve:H,reject:F},async h=>{if(_=await(0,n.getAction)(b,d.getTransactionReceipt,"getTransactionReceipt")({hash:O}).catch(()=>{}),_&&p<=1){clearTimeout(k),h.resolve(_),C?.();return}q=(0,n.getAction)(b,l.watchBlockNumber,"watchBlockNumber")({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:g,async onBlockNumber(M){const A=I=>{clearTimeout(k),q?.(),I(),C?.()};let P=M;if(!v)try{if(_){if(p>1&&(!_.blockNumber||P-_.blockNumber+1nh.resolve(_));return}if(w&&!E&&(v=!0,await(0,a.withRetry)(async()=>{E=await(0,n.getAction)(b,u.getTransaction,"getTransaction")({hash:O}),E.blockNumber&&(P=E.blockNumber)},{delay:j,retryCount:m}),v=!1),_=await(0,n.getAction)(b,d.getTransactionReceipt,"getTransactionReceipt")({hash:O}),p>1&&(!_.blockNumber||P-_.blockNumber+1nh.resolve(_))}catch(I){if(I instanceof t.TransactionNotFoundError||I instanceof t.TransactionReceiptNotFoundError){if(!E){v=!1;return}try{B=E,v=!0;const x=await(0,a.withRetry)(()=>(0,n.getAction)(b,c.getBlock,"getBlock")({blockNumber:P,includeTransactions:!0}),{delay:j,retryCount:m,shouldRetry:({error:L})=>L instanceof e.BlockNotFoundError});v=!1;const N=x.transactions.find(({from:L,nonce:z})=>L===B.from&&z===B.nonce);if(!N||(_=await(0,n.getAction)(b,d.getTransactionReceipt,"getTransactionReceipt")({hash:N.hash}),p>1&&(!_.blockNumber||P-_.blockNumber+1n{h.onReplaced?.({reason:U,replacedTransaction:B,transaction:N,transactionReceipt:_}),h.resolve(_)})}catch(x){A(()=>h.reject(x))}}else A(()=>h.reject(I))}}})}),R}return mc}var yc={},Uy;function O6(){if(Uy)return yc;Uy=1,Object.defineProperty(yc,"__esModule",{value:!0}),yc.watchBlocks=a;const e=ge(),t=nn(),n=Cn(),r=Ve(),i=tn();function a(o,{blockTag:c=o.experimental_blockTag??"latest",emitMissed:u=!1,emitOnBegin:d=!1,onBlock:l,onError:f,includeTransactions:b,poll:T,pollingInterval:w=o.pollingInterval}){const p=typeof T<"u"?T:!(o.transport.type==="webSocket"||o.transport.type==="ipc"||o.transport.type==="fallback"&&(o.transport.transports[0].config.type==="webSocket"||o.transport.transports[0].config.type==="ipc")),O=b??!1;let S;return p?(()=>{const s=(0,r.stringify)(["watchBlocks",o.uid,c,u,d,O,w]);return(0,t.observe)(s,{onBlock:l,onError:f},y=>(0,n.poll)(async()=>{try{const g=await(0,e.getAction)(o,i.getBlock,"getBlock")({blockTag:c,includeTransactions:O});if(g.number!==null&&S?.number!=null){if(g.number===S.number)return;if(g.number-S.number>1&&u)for(let E=S?.number+1n;ES.number)&&(y.onBlock(g,S),S=g)}catch(g){y.onError?.(g)}},{emitOnBegin:d,interval:w}))})():(()=>{let s=!0,y=!0,g=()=>s=!1;return(async()=>{try{d&&(0,e.getAction)(o,i.getBlock,"getBlock")({blockTag:c,includeTransactions:O}).then(_=>{s&&y&&(l(_,void 0),y=!1)}).catch(f);const E=(()=>{if(o.transport.type==="fallback"){const _=o.transport.transports.find(v=>v.config.type==="webSocket"||v.config.type==="ipc");return _?_.value:o.transport}return o.transport})(),{unsubscribe:B}=await E.subscribe({params:["newHeads"],async onData(_){if(!s)return;const v=await(0,e.getAction)(o,i.getBlock,"getBlock")({blockNumber:_.result?.number,includeTransactions:O}).catch(()=>{});s&&(l(v,S),y=!1,S=v)},onError(_){f?.(_)}});g=B,s||g()}catch(E){f?.(E)}})(),()=>g()})()}return yc}var gc={},zy;function C6(){if(zy)return gc;zy=1,Object.defineProperty(gc,"__esModule",{value:!0}),gc.watchEvent=w;const e=qe(),t=gr(),n=ni(),r=$r(),i=rr(),a=ge(),o=nn(),c=Cn(),u=Ve(),d=u_(),l=ui(),f=rd(),b=xf(),T=nd();function w(p,{address:O,args:S,batch:m=!0,event:j,events:s,fromBlock:y,onError:g,onLogs:E,poll:B,pollingInterval:_=p.pollingInterval,strict:v}){const C=typeof B<"u"?B:typeof y=="bigint"?!0:!(p.transport.type==="webSocket"||p.transport.type==="ipc"||p.transport.type==="fallback"&&(p.transport.transports[0].config.type==="webSocket"||p.transport.transports[0].config.type==="ipc")),q=v??!1;return C?(()=>{const F=(0,u.stringify)(["watchEvent",O,S,m,p.uid,j,_,y]);return(0,o.observe)(F,{onLogs:E,onError:g},k=>{let h;y!==void 0&&(h=y-1n);let M,A=!1;const P=(0,c.poll)(async()=>{if(!A){try{M=await(0,a.getAction)(p,d.createEventFilter,"createEventFilter")({address:O,args:S,event:j,events:s,strict:q,fromBlock:y})}catch{}A=!0;return}try{let I;if(M)I=await(0,a.getAction)(p,f.getFilterChanges,"getFilterChanges")({filter:M});else{const x=await(0,a.getAction)(p,l.getBlockNumber,"getBlockNumber")({});h&&h!==x?I=await(0,a.getAction)(p,b.getLogs,"getLogs")({address:O,args:S,event:j,events:s,fromBlock:h+1n,toBlock:x}):I=[],h=x}if(I.length===0)return;if(m)k.onLogs(I);else for(const x of I)k.onLogs([x])}catch(I){M&&I instanceof t.InvalidInputRpcError&&(A=!1),k.onError?.(I)}},{emitOnBegin:!0,interval:_});return async()=>{M&&await(0,a.getAction)(p,T.uninstallFilter,"uninstallFilter")({filter:M}),P()}})})():(()=>{let F=!0,k=()=>F=!1;return(async()=>{try{const h=(()=>{if(p.transport.type==="fallback"){const I=p.transport.transports.find(x=>x.config.type==="webSocket"||x.config.type==="ipc");return I?I.value:p.transport}return p.transport})(),M=s??(j?[j]:void 0);let A=[];M&&(A=[M.flatMap(x=>(0,r.encodeEventTopics)({abi:[x],eventName:x.name,args:S}))],j&&(A=A[0]));const{unsubscribe:P}=await h.subscribe({params:["logs",{address:O,topics:A}],onData(I){if(!F)return;const x=I.result;try{const{eventName:N,args:U}=(0,n.decodeEventLog)({abi:M??[],data:x.data,topics:x.topics,strict:q}),L=(0,i.formatLog)(x,{args:U,eventName:N});E([L])}catch(N){let U,L;if(N instanceof e.DecodeLogDataMismatch||N instanceof e.DecodeLogTopicsMismatch){if(v)return;U=N.abiItem.name,L=N.abiItem.inputs?.some(D=>!("name"in D&&D.name))}const z=(0,i.formatLog)(x,{args:L?[]:{},eventName:U});E([z])}},onError(I){g?.(I)}});k=P,F||k()}catch(h){g?.(h)}})(),()=>k()})()}return gc}var pc={},Dy;function x6(){if(Dy)return pc;Dy=1,Object.defineProperty(pc,"__esModule",{value:!0}),pc.watchPendingTransactions=c;const e=ge(),t=nn(),n=Cn(),r=Ve(),i=d_(),a=rd(),o=nd();function c(u,{batch:d=!0,onError:l,onTransactions:f,poll:b,pollingInterval:T=u.pollingInterval}){return(typeof b<"u"?b:u.transport.type!=="webSocket"&&u.transport.type!=="ipc")?(()=>{const S=(0,r.stringify)(["watchPendingTransactions",u.uid,d,T]);return(0,t.observe)(S,{onTransactions:f,onError:l},m=>{let j;const s=(0,n.poll)(async()=>{try{if(!j)try{j=await(0,e.getAction)(u,i.createPendingTransactionFilter,"createPendingTransactionFilter")({});return}catch(g){throw s(),g}const y=await(0,e.getAction)(u,a.getFilterChanges,"getFilterChanges")({filter:j});if(y.length===0)return;if(d)m.onTransactions(y);else for(const g of y)m.onTransactions([g])}catch(y){m.onError?.(y)}},{emitOnBegin:!0,interval:T});return async()=>{j&&await(0,e.getAction)(u,o.uninstallFilter,"uninstallFilter")({filter:j}),s()}})})():(()=>{let S=!0,m=()=>S=!1;return(async()=>{try{const{unsubscribe:j}=await u.transport.subscribe({params:["newPendingTransactions"],onData(s){if(!S)return;const y=s.result;f([y])},onError(s){l?.(s)}});m=j,S||m()}catch(j){l?.(j)}})(),()=>m()})()}return pc}var _c={},vc={},Gy;function q6(){if(Gy)return vc;Gy=1,Object.defineProperty(vc,"__esModule",{value:!0}),vc.parseSiweMessage=e;function e(r){const{scheme:i,statement:a,...o}=r.match(t)?.groups??{},{chainId:c,expirationTime:u,issuedAt:d,notBefore:l,requestId:f,...b}=r.match(n)?.groups??{},T=r.split("Resources:")[1]?.split(` +- `).slice(1);return{...o,...b,...c?{chainId:Number(c)}:{},...u?{expirationTime:new Date(u)}:{},...d?{issuedAt:new Date(d)}:{},...l?{notBefore:new Date(l)}:{},...f?{requestId:f}:{},...T?{resources:T}:{},...i?{scheme:i}:{},...a?{statement:a}:{}}}const t=/^(?:(?[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?
0x[a-fA-F0-9]{40})\n\n(?:(?.*)\n\n)?/,n=/(?:URI: (?.+))\n(?:Version: (?.+))\n(?:Chain ID: (?\d+))\n(?:Nonce: (?[a-zA-Z0-9]+))\n(?:Issued At: (?.+))(?:\nExpiration Time: (?.+))?(?:\nNot Before: (?.+))?(?:\nRequest ID: (?.+))?/;return vc}var Ec={},Vy;function H6(){if(Vy)return Ec;Vy=1,Object.defineProperty(Ec,"__esModule",{value:!0}),Ec.validateSiweMessage=n;const e=ct(),t=Ct();function n(r){const{address:i,domain:a,message:o,nonce:c,scheme:u,time:d=new Date}=r;if(a&&o.domain!==a||c&&o.nonce!==c||u&&o.scheme!==u||o.expirationTime&&d>=o.expirationTime||o.notBefore&&d(0,a.call)(ee,Q),createAccessList:Q=>(0,o.createAccessList)(ee,Q),createBlockFilter:()=>(0,c.createBlockFilter)(ee),createContractEventFilter:Q=>(0,u.createContractEventFilter)(ee,Q),createEventFilter:Q=>(0,d.createEventFilter)(ee,Q),createPendingTransactionFilter:()=>(0,l.createPendingTransactionFilter)(ee),estimateContractGas:Q=>(0,f.estimateContractGas)(ee,Q),estimateGas:Q=>(0,T.estimateGas)(ee,Q),getBalance:Q=>(0,O.getBalance)(ee,Q),getBlobBaseFee:()=>(0,S.getBlobBaseFee)(ee),getBlock:Q=>(0,m.getBlock)(ee,Q),getBlockNumber:Q=>(0,j.getBlockNumber)(ee,Q),getBlockTransactionCount:Q=>(0,s.getBlockTransactionCount)(ee,Q),getBytecode:Q=>(0,g.getCode)(ee,Q),getChainId:()=>(0,y.getChainId)(ee),getCode:Q=>(0,g.getCode)(ee,Q),getContractEvents:Q=>(0,E.getContractEvents)(ee,Q),getEip712Domain:Q=>(0,B.getEip712Domain)(ee,Q),getEnsAddress:Q=>(0,e.getEnsAddress)(ee,Q),getEnsAvatar:Q=>(0,t.getEnsAvatar)(ee,Q),getEnsName:Q=>(0,n.getEnsName)(ee,Q),getEnsResolver:Q=>(0,r.getEnsResolver)(ee,Q),getEnsText:Q=>(0,i.getEnsText)(ee,Q),getFeeHistory:Q=>(0,_.getFeeHistory)(ee,Q),estimateFeesPerGas:Q=>(0,b.estimateFeesPerGas)(ee,Q),getFilterChanges:Q=>(0,v.getFilterChanges)(ee,Q),getFilterLogs:Q=>(0,C.getFilterLogs)(ee,Q),getGasPrice:()=>(0,q.getGasPrice)(ee),getLogs:Q=>(0,R.getLogs)(ee,Q),getProof:Q=>(0,H.getProof)(ee,Q),estimateMaxPriorityFeePerGas:Q=>(0,w.estimateMaxPriorityFeePerGas)(ee,Q),fillTransaction:Q=>(0,p.fillTransaction)(ee,Q),getStorageAt:Q=>(0,F.getStorageAt)(ee,Q),getTransaction:Q=>(0,k.getTransaction)(ee,Q),getTransactionConfirmations:Q=>(0,h.getTransactionConfirmations)(ee,Q),getTransactionCount:Q=>(0,M.getTransactionCount)(ee,Q),getTransactionReceipt:Q=>(0,A.getTransactionReceipt)(ee,Q),multicall:Q=>(0,P.multicall)(ee,Q),prepareTransactionRequest:Q=>(0,re.prepareTransactionRequest)(ee,Q),readContract:Q=>(0,I.readContract)(ee,Q),sendRawTransaction:Q=>(0,te.sendRawTransaction)(ee,Q),sendRawTransactionSync:Q=>(0,ne.sendRawTransactionSync)(ee,Q),simulate:Q=>(0,x.simulateBlocks)(ee,Q),simulateBlocks:Q=>(0,x.simulateBlocks)(ee,Q),simulateCalls:Q=>(0,N.simulateCalls)(ee,Q),simulateContract:Q=>(0,U.simulateContract)(ee,Q),verifyHash:Q=>(0,z.verifyHash)(ee,Q),verifyMessage:Q=>(0,D.verifyMessage)(ee,Q),verifySiweMessage:Q=>(0,$.verifySiweMessage)(ee,Q),verifyTypedData:Q=>(0,J.verifyTypedData)(ee,Q),uninstallFilter:Q=>(0,L.uninstallFilter)(ee,Q),waitForTransactionReceipt:Q=>(0,Z.waitForTransactionReceipt)(ee,Q),watchBlocks:Q=>(0,X.watchBlocks)(ee,Q),watchBlockNumber:Q=>(0,Y.watchBlockNumber)(ee,Q),watchContractEvent:Q=>(0,oe.watchContractEvent)(ee,Q),watchEvent:Q=>(0,W.watchEvent)(ee,Q),watchPendingTransactions:Q=>(0,K.watchPendingTransactions)(ee,Q)}}return ra}var Yy;function k6(){if(Yy)return ta;Yy=1,Object.defineProperty(ta,"__esModule",{value:!0}),ta.createPublicClient=n;const e=sd(),t=r2();function n(r){const{key:i="public",name:a="Public Client"}=r;return(0,e.createClient)({...r,key:i,name:a,type:"publicClient"}).extend(t.publicActions)}return ta}var jc={},Pc={},Ac={},Jy;function N6(){if(Jy)return Ac;Jy=1,Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.dropTransaction=e;async function e(t,{hash:n}){await t.request({method:`${t.mode}_dropTransaction`,params:[n]})}return Ac}var Tc={},Xy;function F6(){if(Xy)return Tc;Xy=1,Object.defineProperty(Tc,"__esModule",{value:!0}),Tc.dumpState=e;async function e(t){return t.request({method:`${t.mode}_dumpState`})}return Tc}var Sc={},Qy;function L6(){if(Qy)return Sc;Qy=1,Object.defineProperty(Sc,"__esModule",{value:!0}),Sc.getAutomine=e;async function e(t){return t.mode==="ganache"?await t.request({method:"eth_mining"}):await t.request({method:`${t.mode}_getAutomine`})}return Sc}var Ic={},$y;function U6(){if($y)return Ic;$y=1,Object.defineProperty(Ic,"__esModule",{value:!0}),Ic.getTxpoolContent=e;async function e(t){return await t.request({method:"txpool_content"})}return Ic}var Bc={},eg;function z6(){if(eg)return Bc;eg=1,Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.getTxpoolStatus=t;const e=Ne();async function t(n){const{pending:r,queued:i}=await n.request({method:"txpool_status"});return{pending:(0,e.hexToNumber)(r),queued:(0,e.hexToNumber)(i)}}return Bc}var Rc={},tg;function D6(){if(tg)return Rc;tg=1,Object.defineProperty(Rc,"__esModule",{value:!0}),Rc.impersonateAccount=e;async function e(t,{address:n}){await t.request({method:`${t.mode}_impersonateAccount`,params:[n]})}return Rc}var Oc={},rg;function G6(){if(rg)return Oc;rg=1,Object.defineProperty(Oc,"__esModule",{value:!0}),Oc.increaseTime=t;const e=ie();async function t(n,{seconds:r}){return await n.request({method:"evm_increaseTime",params:[(0,e.numberToHex)(r)]})}return Oc}var Cc={},ng;function V6(){if(ng)return Cc;ng=1,Object.defineProperty(Cc,"__esModule",{value:!0}),Cc.inspectTxpool=e;async function e(t){return await t.request({method:"txpool_inspect"})}return Cc}var xc={},og;function W6(){if(og)return xc;og=1,Object.defineProperty(xc,"__esModule",{value:!0}),xc.loadState=e;async function e(t,{state:n}){await t.request({method:`${t.mode}_loadState`,params:[n]})}return xc}var qc={},ig;function K6(){if(ig)return qc;ig=1,Object.defineProperty(qc,"__esModule",{value:!0}),qc.mine=t;const e=ie();async function t(n,{blocks:r,interval:i}){n.mode==="ganache"?await n.request({method:"evm_mine",params:[{blocks:(0,e.numberToHex)(r)}]}):await n.request({method:`${n.mode}_mine`,params:[(0,e.numberToHex)(r),(0,e.numberToHex)(i||0)]})}return qc}var Hc={},sg;function Z6(){if(sg)return Hc;sg=1,Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.removeBlockTimestampInterval=e;async function e(t){await t.request({method:`${t.mode}_removeBlockTimestampInterval`})}return Hc}var Mc={},ag;function Y6(){if(ag)return Mc;ag=1,Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.reset=e;async function e(t,{blockNumber:n,jsonRpcUrl:r}={}){await t.request({method:`${t.mode}_reset`,params:[{forking:{blockNumber:Number(n),jsonRpcUrl:r}}]})}return Mc}var kc={},cg;function J6(){if(cg)return kc;cg=1,Object.defineProperty(kc,"__esModule",{value:!0}),kc.revert=e;async function e(t,{id:n}){await t.request({method:"evm_revert",params:[n]})}return kc}var Nc={},ug;function X6(){if(ug)return Nc;ug=1,Object.defineProperty(Nc,"__esModule",{value:!0}),Nc.sendUnsignedTransaction=n;const e=vr(),t=Rt();async function n(r,i){const{accessList:a,data:o,from:c,gas:u,gasPrice:d,maxFeePerGas:l,maxPriorityFeePerGas:f,nonce:b,to:T,value:w,...p}=i,O=r.chain?.formatters?.transactionRequest?.format,m=(O||t.formatTransactionRequest)({...(0,e.extract)(p,{format:O}),accessList:a,data:o,from:c,gas:u,gasPrice:d,maxFeePerGas:l,maxPriorityFeePerGas:f,nonce:b,to:T,value:w},"sendUnsignedTransaction");return await r.request({method:"eth_sendUnsignedTransaction",params:[m]})}return Nc}var Fc={},dg;function Q6(){if(dg)return Fc;dg=1,Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.setAutomine=e;async function e(t,n){t.mode==="ganache"?n?await t.request({method:"miner_start"}):await t.request({method:"miner_stop"}):await t.request({method:"evm_setAutomine",params:[n]})}return Fc}var Lc={},fg;function $6(){if(fg)return Lc;fg=1,Object.defineProperty(Lc,"__esModule",{value:!0}),Lc.setBalance=t;const e=ie();async function t(n,{address:r,value:i}){n.mode==="ganache"?await n.request({method:"evm_setAccountBalance",params:[r,(0,e.numberToHex)(i)]}):await n.request({method:`${n.mode}_setBalance`,params:[r,(0,e.numberToHex)(i)]})}return Lc}var Uc={},lg;function e5(){if(lg)return Uc;lg=1,Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.setBlockGasLimit=t;const e=ie();async function t(n,{gasLimit:r}){await n.request({method:"evm_setBlockGasLimit",params:[(0,e.numberToHex)(r)]})}return Uc}var zc={},bg;function t5(){if(bg)return zc;bg=1,Object.defineProperty(zc,"__esModule",{value:!0}),zc.setBlockTimestampInterval=e;async function e(t,{interval:n}){const r=t.mode==="hardhat"?n*1e3:n;await t.request({method:`${t.mode}_setBlockTimestampInterval`,params:[r]})}return zc}var Dc={},mg;function r5(){if(mg)return Dc;mg=1,Object.defineProperty(Dc,"__esModule",{value:!0}),Dc.setCode=e;async function e(t,{address:n,bytecode:r}){t.mode==="ganache"?await t.request({method:"evm_setAccountCode",params:[n,r]}):await t.request({method:`${t.mode}_setCode`,params:[n,r]})}return Dc}var Gc={},hg;function n5(){if(hg)return Gc;hg=1,Object.defineProperty(Gc,"__esModule",{value:!0}),Gc.setCoinbase=e;async function e(t,{address:n}){await t.request({method:`${t.mode}_setCoinbase`,params:[n]})}return Gc}var Vc={},yg;function o5(){if(yg)return Vc;yg=1,Object.defineProperty(Vc,"__esModule",{value:!0}),Vc.setIntervalMining=e;async function e(t,{interval:n}){const r=t.mode==="hardhat"?n*1e3:n;await t.request({method:"evm_setIntervalMining",params:[r]})}return Vc}var Wc={},gg;function i5(){if(gg)return Wc;gg=1,Object.defineProperty(Wc,"__esModule",{value:!0}),Wc.setLoggingEnabled=e;async function e(t,n){await t.request({method:`${t.mode}_setLoggingEnabled`,params:[n]})}return Wc}var Kc={},pg;function s5(){if(pg)return Kc;pg=1,Object.defineProperty(Kc,"__esModule",{value:!0}),Kc.setMinGasPrice=t;const e=ie();async function t(n,{gasPrice:r}){await n.request({method:`${n.mode}_setMinGasPrice`,params:[(0,e.numberToHex)(r)]})}return Kc}var Zc={},_g;function a5(){if(_g)return Zc;_g=1,Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.setNextBlockBaseFeePerGas=t;const e=ie();async function t(n,{baseFeePerGas:r}){await n.request({method:`${n.mode}_setNextBlockBaseFeePerGas`,params:[(0,e.numberToHex)(r)]})}return Zc}var Yc={},vg;function c5(){if(vg)return Yc;vg=1,Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.setNextBlockTimestamp=t;const e=ie();async function t(n,{timestamp:r}){await n.request({method:"evm_setNextBlockTimestamp",params:[(0,e.numberToHex)(r)]})}return Yc}var Jc={},Eg;function u5(){if(Eg)return Jc;Eg=1,Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.setNonce=t;const e=ie();async function t(n,{address:r,nonce:i}){await n.request({method:`${n.mode}_setNonce`,params:[r,(0,e.numberToHex)(i)]})}return Jc}var Xc={},wg;function d5(){if(wg)return Xc;wg=1,Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.setRpcUrl=e;async function e(t,n){await t.request({method:`${t.mode}_setRpcUrl`,params:[n]})}return Xc}var Qc={},jg;function f5(){if(jg)return Qc;jg=1,Object.defineProperty(Qc,"__esModule",{value:!0}),Qc.setStorageAt=t;const e=ie();async function t(n,{address:r,index:i,value:a}){await n.request({method:`${n.mode}_setStorageAt`,params:[r,typeof i=="number"?(0,e.numberToHex)(i):i,a]})}return Qc}var $c={},Pg;function l5(){if(Pg)return $c;Pg=1,Object.defineProperty($c,"__esModule",{value:!0}),$c.snapshot=e;async function e(t){return await t.request({method:"evm_snapshot"})}return $c}var eu={},Ag;function b5(){if(Ag)return eu;Ag=1,Object.defineProperty(eu,"__esModule",{value:!0}),eu.stopImpersonatingAccount=e;async function e(t,{address:n}){await t.request({method:`${t.mode}_stopImpersonatingAccount`,params:[n]})}return eu}var Tg;function n2(){if(Tg)return Pc;Tg=1,Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.testActions=H;const e=N6(),t=F6(),n=L6(),r=U6(),i=z6(),a=D6(),o=G6(),c=V6(),u=W6(),d=K6(),l=Z6(),f=Y6(),b=J6(),T=X6(),w=Q6(),p=$6(),O=e5(),S=t5(),m=r5(),j=n5(),s=o5(),y=i5(),g=s5(),E=a5(),B=c5(),_=u5(),v=d5(),C=f5(),q=l5(),R=b5();function H({mode:F}){return k=>{const h=k.extend(()=>({mode:F}));return{dropTransaction:M=>(0,e.dropTransaction)(h,M),dumpState:()=>(0,t.dumpState)(h),getAutomine:()=>(0,n.getAutomine)(h),getTxpoolContent:()=>(0,r.getTxpoolContent)(h),getTxpoolStatus:()=>(0,i.getTxpoolStatus)(h),impersonateAccount:M=>(0,a.impersonateAccount)(h,M),increaseTime:M=>(0,o.increaseTime)(h,M),inspectTxpool:()=>(0,c.inspectTxpool)(h),loadState:M=>(0,u.loadState)(h,M),mine:M=>(0,d.mine)(h,M),removeBlockTimestampInterval:()=>(0,l.removeBlockTimestampInterval)(h),reset:M=>(0,f.reset)(h,M),revert:M=>(0,b.revert)(h,M),sendUnsignedTransaction:M=>(0,T.sendUnsignedTransaction)(h,M),setAutomine:M=>(0,w.setAutomine)(h,M),setBalance:M=>(0,p.setBalance)(h,M),setBlockGasLimit:M=>(0,O.setBlockGasLimit)(h,M),setBlockTimestampInterval:M=>(0,S.setBlockTimestampInterval)(h,M),setCode:M=>(0,m.setCode)(h,M),setCoinbase:M=>(0,j.setCoinbase)(h,M),setIntervalMining:M=>(0,s.setIntervalMining)(h,M),setLoggingEnabled:M=>(0,y.setLoggingEnabled)(h,M),setMinGasPrice:M=>(0,g.setMinGasPrice)(h,M),setNextBlockBaseFeePerGas:M=>(0,E.setNextBlockBaseFeePerGas)(h,M),setNextBlockTimestamp:M=>(0,B.setNextBlockTimestamp)(h,M),setNonce:M=>(0,_.setNonce)(h,M),setRpcUrl:M=>(0,v.setRpcUrl)(h,M),setStorageAt:M=>(0,C.setStorageAt)(h,M),snapshot:()=>(0,q.snapshot)(h),stopImpersonatingAccount:M=>(0,R.stopImpersonatingAccount)(h,M)}}}return Pc}var Sg;function m5(){if(Sg)return jc;Sg=1,Object.defineProperty(jc,"__esModule",{value:!0}),jc.createTestClient=n;const e=sd(),t=n2();function n(r){const{key:i="test",name:a="Test Client",mode:o}=r;return(0,e.createClient)({...r,key:i,name:a,type:"testClient"}).extend(u=>({mode:o,...(0,t.testActions)({mode:o})(u)}))}return jc}var tu={},ru={},nu={},Ig;function h5(){if(Ig)return nu;Ig=1,Object.defineProperty(nu,"__esModule",{value:!0}),nu.addChain=t;const e=ie();async function t(n,{chain:r}){const{id:i,name:a,nativeCurrency:o,rpcUrls:c,blockExplorers:u}=r;await n.request({method:"wallet_addEthereumChain",params:[{chainId:(0,e.numberToHex)(i),chainName:a,nativeCurrency:o,rpcUrls:c.default.http,blockExplorerUrls:u?Object.values(u).map(({url:d})=>d):void 0}]},{dedupe:!0,retryCount:0})}return nu}var ou={},Bg;function y5(){if(Bg)return ou;Bg=1,Object.defineProperty(ou,"__esModule",{value:!0}),ou.deployContract=n;const e=ai(),t=od();function n(r,i){const{abi:a,args:o,bytecode:c,...u}=i,d=(0,e.encodeDeployData)({abi:a,args:o,bytecode:c});return(0,t.sendTransaction)(r,{...u,...u.authorizationList?{to:null}:{},data:d})}return ou}var iu={},Rg;function g5(){if(Rg)return iu;Rg=1,Object.defineProperty(iu,"__esModule",{value:!0}),iu.getAddresses=t;const e=yt();async function t(n){return n.account?.type==="local"?[n.account.address]:(await n.request({method:"eth_accounts"},{dedupe:!0})).map(i=>(0,e.checksumAddress)(i))}return iu}var su={},Og;function p5(){if(Og)return su;Og=1,Object.defineProperty(su,"__esModule",{value:!0}),su.getCapabilities=n;const e=He(),t=ie();async function n(r,i={}){const{account:a=r.account,chainId:o}=i,c=a?(0,e.parseAccount)(a):void 0,u=o?[c?.address,[(0,t.numberToHex)(o)]]:[c?.address],d=await r.request({method:"wallet_getCapabilities",params:u}),l={};for(const[f,b]of Object.entries(d)){l[Number(f)]={};for(let[T,w]of Object.entries(b))T==="addSubAccount"&&(T="unstable_addSubAccount"),l[Number(f)][T]=w}return typeof o=="number"?l[o]:l}return su}var au={},Cg;function _5(){if(Cg)return au;Cg=1,Object.defineProperty(au,"__esModule",{value:!0}),au.getPermissions=e;async function e(t){return await t.request({method:"wallet_getPermissions"},{dedupe:!0})}return au}var cu={},xg;function o2(){if(xg)return cu;xg=1,Object.defineProperty(cu,"__esModule",{value:!0}),cu.prepareAuthorization=o;const e=He(),t=Pr(),n=Ct(),r=ge(),i=Er(),a=Yu();async function o(c,u){const{account:d=c.account,chainId:l,nonce:f}=u;if(!d)throw new t.AccountNotFoundError({docsPath:"/docs/eip7702/prepareAuthorization"});const b=(0,e.parseAccount)(d),T=(()=>{if(u.executor)return u.executor==="self"?u.executor:(0,e.parseAccount)(u.executor)})(),w={address:u.contractAddress??u.address,chainId:l,nonce:f};return typeof w.chainId>"u"&&(w.chainId=c.chain?.id??await(0,r.getAction)(c,i.getChainId,"getChainId")({})),typeof w.nonce>"u"&&(w.nonce=await(0,r.getAction)(c,a.getTransactionCount,"getTransactionCount")({address:b.address,blockTag:"pending"}),(T==="self"||T?.address&&(0,n.isAddressEqual)(T.address,b.address))&&(w.nonce+=1)),w}return cu}var uu={},qg;function v5(){if(qg)return uu;qg=1,Object.defineProperty(uu,"__esModule",{value:!0}),uu.requestAddresses=t;const e=yt();async function t(n){return(await n.request({method:"eth_requestAccounts"},{dedupe:!0,retryCount:0})).map(i=>(0,e.getAddress)(i))}return uu}var du={},Hg;function E5(){if(Hg)return du;Hg=1,Object.defineProperty(du,"__esModule",{value:!0}),du.requestPermissions=e;async function e(t,n){return t.request({method:"wallet_requestPermissions",params:[n]},{retryCount:0})}return du}var fu={},Mg;function w5(){if(Mg)return fu;Mg=1,Object.defineProperty(fu,"__esModule",{value:!0}),fu.sendCallsSync=n;const e=Vf(),t=Wf();async function n(r,i){const{chain:a=r.chain}=i,o=i.timeout??Math.max((a?.blockTime??0)*3,5e3),c=await(0,e.sendCalls)(r,i);return await(0,t.waitForCallsStatus)(r,{...i,id:c.id,timeout:o})}return fu}var lu={},kg;function i2(){if(kg)return lu;kg=1,Object.defineProperty(lu,"__esModule",{value:!0}),lu.sendTransactionSync=S;const e=He(),t=Pr(),n=fe(),r=dt(),i=Xo(),a=di(),o=ti(),c=vr(),u=Rt(),d=ge(),l=Xr(),f=Ot(),b=Er(),T=t2(),w=ri(),p=h0(),O=new l.LruMap(128);async function S(m,j){const{account:s=m.account,chain:y=m.chain,accessList:g,authorizationList:E,blobs:B,data:_,gas:v,gasPrice:C,maxFeePerBlobGas:q,maxFeePerGas:R,maxPriorityFeePerGas:H,nonce:F,pollingInterval:k,throwOnReceiptRevert:h,type:M,value:A,...P}=j,I=j.timeout??Math.max((y?.blockTime??0)*3,5e3);if(typeof s>"u")throw new t.AccountNotFoundError({docsPath:"/docs/actions/wallet/sendTransactionSync"});const x=s?(0,e.parseAccount)(s):null;try{(0,f.assertRequest)(j);const N=await(async()=>{if(j.to)return j.to;if(j.to!==null&&E&&E.length>0)return await(0,i.recoverAuthorizationAddress)({authorization:E[0]}).catch(()=>{throw new n.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if(x?.type==="json-rpc"||x===null){let U;y!==null&&(U=await(0,d.getAction)(m,b.getChainId,"getChainId")({}),(0,a.assertCurrentChain)({currentChainId:U,chain:y}));const L=m.chain?.formatters?.transactionRequest?.format,D=(L||u.formatTransactionRequest)({...(0,c.extract)(P,{format:L}),accessList:g,account:x,authorizationList:E,blobs:B,chainId:U,data:_,gas:v,gasPrice:C,maxFeePerBlobGas:q,maxFeePerGas:R,maxPriorityFeePerGas:H,nonce:F,to:N,type:M,value:A},"sendTransaction"),J=O.get(m.uid),Z=J?"wallet_sendTransaction":"eth_sendTransaction",Y=await(async()=>{try{return await m.request({method:Z,params:[D]},{retryCount:0})}catch(oe){if(J===!1)throw oe;const W=oe;if(W.name==="InvalidInputRpcError"||W.name==="InvalidParamsRpcError"||W.name==="MethodNotFoundRpcError"||W.name==="MethodNotSupportedRpcError")return await m.request({method:"wallet_sendTransaction",params:[D]},{retryCount:0}).then(K=>(O.set(m.uid,!0),K)).catch(K=>{const $=K;throw $.name==="MethodNotFoundRpcError"||$.name==="MethodNotSupportedRpcError"?(O.set(m.uid,!1),W):$});throw W}})(),X=await(0,d.getAction)(m,T.waitForTransactionReceipt,"waitForTransactionReceipt")({checkReplacement:!1,hash:Y,pollingInterval:k,timeout:I});if(h&&X.status==="reverted")throw new r.TransactionReceiptRevertedError({receipt:X});return X}if(x?.type==="local"){const U=await(0,d.getAction)(m,w.prepareTransactionRequest,"prepareTransactionRequest")({account:x,accessList:g,authorizationList:E,blobs:B,chain:y,data:_,gas:v,gasPrice:C,maxFeePerBlobGas:q,maxFeePerGas:R,maxPriorityFeePerGas:H,nonce:F,nonceManager:x.nonceManager,parameters:[...w.defaultParameters,"sidecars"],type:M,value:A,...P,to:N}),L=y?.serializers?.transaction,z=await x.signTransaction(U,{serializer:L});return await(0,d.getAction)(m,p.sendRawTransactionSync,"sendRawTransactionSync")({serializedTransaction:z,throwOnReceiptRevert:h,timeout:j.timeout})}throw x?.type==="smart"?new t.AccountTypeNotSupportedError({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new t.AccountTypeNotSupportedError({docsPath:"/docs/actions/wallet/sendTransactionSync",type:x?.type})}catch(N){throw N instanceof t.AccountTypeNotSupportedError?N:(0,o.getTransactionError)(N,{...j,account:x,chain:j.chain||void 0})}}return lu}var bu={},Ng;function j5(){if(Ng)return bu;Ng=1,Object.defineProperty(bu,"__esModule",{value:!0}),bu.showCallsStatus=e;async function e(t,n){const{id:r}=n;await t.request({method:"wallet_showCallsStatus",params:[r]})}return bu}var mu={},Fg;function P5(){if(Fg)return mu;Fg=1,Object.defineProperty(mu,"__esModule",{value:!0}),mu.signAuthorization=r;const e=He(),t=Pr(),n=o2();async function r(i,a){const{account:o=i.account}=a;if(!o)throw new t.AccountNotFoundError({docsPath:"/docs/eip7702/signAuthorization"});const c=(0,e.parseAccount)(o);if(!c.signAuthorization)throw new t.AccountTypeNotSupportedError({docsPath:"/docs/eip7702/signAuthorization",metaMessages:["The `signAuthorization` Action does not support JSON-RPC Accounts."],type:c.type});const u=await(0,n.prepareAuthorization)(i,a);return c.signAuthorization(u)}return mu}var hu={},Lg;function A5(){if(Lg)return hu;Lg=1,Object.defineProperty(hu,"__esModule",{value:!0}),hu.signMessage=r;const e=He(),t=Pr(),n=ie();async function r(i,{account:a=i.account,message:o}){if(!a)throw new t.AccountNotFoundError({docsPath:"/docs/actions/wallet/signMessage"});const c=(0,e.parseAccount)(a);if(c.signMessage)return c.signMessage({message:o});const u=typeof o=="string"?(0,n.stringToHex)(o):o.raw instanceof Uint8Array?(0,n.toHex)(o.raw):o.raw;return i.request({method:"personal_sign",params:[u,c.address]},{retryCount:0})}return hu}var yu={},Ug;function T5(){if(Ug)return yu;Ug=1,Object.defineProperty(yu,"__esModule",{value:!0}),yu.signTransaction=u;const e=He(),t=Pr(),n=di(),r=ie(),i=Rt(),a=ge(),o=Ot(),c=Er();async function u(d,l){const{account:f=d.account,chain:b=d.chain,...T}=l;if(!f)throw new t.AccountNotFoundError({docsPath:"/docs/actions/wallet/signTransaction"});const w=(0,e.parseAccount)(f);(0,o.assertRequest)({account:w,...l});const p=await(0,a.getAction)(d,c.getChainId,"getChainId")({});b!==null&&(0,n.assertCurrentChain)({currentChainId:p,chain:b});const S=(b?.formatters||d.chain?.formatters)?.transactionRequest?.format||i.formatTransactionRequest;return w.signTransaction?w.signTransaction({...T,chainId:p},{serializer:d.chain?.serializers?.transaction}):await d.request({method:"eth_signTransaction",params:[{...S({...T,account:w},"signTransaction"),chainId:(0,r.numberToHex)(p),from:w.address}]},{retryCount:0})}return yu}var gu={},zg;function S5(){if(zg)return gu;zg=1,Object.defineProperty(gu,"__esModule",{value:!0}),gu.signTypedData=r;const e=He(),t=Pr(),n=ud();async function r(i,a){const{account:o=i.account,domain:c,message:u,primaryType:d}=a;if(!o)throw new t.AccountNotFoundError({docsPath:"/docs/actions/wallet/signTypedData"});const l=(0,e.parseAccount)(o),f={EIP712Domain:(0,n.getTypesForEIP712Domain)({domain:c}),...a.types};if((0,n.validateTypedData)({domain:c,message:u,primaryType:d,types:f}),l.signTypedData)return l.signTypedData({domain:c,message:u,primaryType:d,types:f});const b=(0,n.serializeTypedData)({domain:c,message:u,primaryType:d,types:f});return i.request({method:"eth_signTypedData_v4",params:[l.address,b]},{retryCount:0})}return gu}var pu={},Dg;function I5(){if(Dg)return pu;Dg=1,Object.defineProperty(pu,"__esModule",{value:!0}),pu.switchChain=t;const e=ie();async function t(n,{id:r}){await n.request({method:"wallet_switchEthereumChain",params:[{chainId:(0,e.numberToHex)(r)}]},{retryCount:0})}return pu}var _u={},Gg;function B5(){if(Gg)return _u;Gg=1,Object.defineProperty(_u,"__esModule",{value:!0}),_u.watchAsset=e;async function e(t,n){return await t.request({method:"wallet_watchAsset",params:n},{retryCount:0})}return _u}var vu={},Vg;function R5(){if(Vg)return vu;Vg=1,Object.defineProperty(vu,"__esModule",{value:!0}),vu.writeContractSync=n;const e=i2(),t=Gf();async function n(r,i){return t.writeContract.internal(r,e.sendTransactionSync,"sendTransactionSync",i)}return vu}var Wg;function s2(){if(Wg)return ru;Wg=1,Object.defineProperty(ru,"__esModule",{value:!0}),ru.walletActions=q;const e=Of(),t=Er(),n=h5(),r=y5(),i=g5(),a=n_(),o=p5(),c=_5(),u=o2(),d=ri(),l=v5(),f=E5(),b=Vf(),T=w5(),w=Df(),p=h0(),O=od(),S=i2(),m=j5(),j=P5(),s=A5(),y=T5(),g=S5(),E=I5(),B=Wf(),_=B5(),v=Gf(),C=R5();function q(R){return{addChain:H=>(0,n.addChain)(R,H),deployContract:H=>(0,r.deployContract)(R,H),fillTransaction:H=>(0,e.fillTransaction)(R,H),getAddresses:()=>(0,i.getAddresses)(R),getCallsStatus:H=>(0,a.getCallsStatus)(R,H),getCapabilities:H=>(0,o.getCapabilities)(R,H),getChainId:()=>(0,t.getChainId)(R),getPermissions:()=>(0,c.getPermissions)(R),prepareAuthorization:H=>(0,u.prepareAuthorization)(R,H),prepareTransactionRequest:H=>(0,d.prepareTransactionRequest)(R,H),requestAddresses:()=>(0,l.requestAddresses)(R),requestPermissions:H=>(0,f.requestPermissions)(R,H),sendCalls:H=>(0,b.sendCalls)(R,H),sendCallsSync:H=>(0,T.sendCallsSync)(R,H),sendRawTransaction:H=>(0,w.sendRawTransaction)(R,H),sendRawTransactionSync:H=>(0,p.sendRawTransactionSync)(R,H),sendTransaction:H=>(0,O.sendTransaction)(R,H),sendTransactionSync:H=>(0,S.sendTransactionSync)(R,H),showCallsStatus:H=>(0,m.showCallsStatus)(R,H),signAuthorization:H=>(0,j.signAuthorization)(R,H),signMessage:H=>(0,s.signMessage)(R,H),signTransaction:H=>(0,y.signTransaction)(R,H),signTypedData:H=>(0,g.signTypedData)(R,H),switchChain:H=>(0,E.switchChain)(R,H),waitForCallsStatus:H=>(0,B.waitForCallsStatus)(R,H),watchAsset:H=>(0,_.watchAsset)(R,H),writeContract:H=>(0,v.writeContract)(R,H),writeContractSync:H=>(0,C.writeContractSync)(R,H)}}return ru}var Kg;function O5(){if(Kg)return tu;Kg=1,Object.defineProperty(tu,"__esModule",{value:!0}),tu.createWalletClient=n;const e=sd(),t=s2();function n(r){const{key:i="wallet",name:a="Wallet Client",transport:o}=r;return(0,e.createClient)({...r,key:i,name:a,transport:o,type:"walletClient"}).extend(t.walletActions)}return tu}var Eu={},Zg;function hi(){if(Zg)return Eu;Zg=1,Object.defineProperty(Eu,"__esModule",{value:!0}),Eu.createTransport=n;const e=y_(),t=o_();function n({key:r,methods:i,name:a,request:o,retryCount:c=3,retryDelay:u=150,timeout:d,type:l},f){const b=(0,t.uid)();return{config:{key:r,methods:i,name:a,request:o,retryCount:c,retryDelay:u,timeout:d,type:l},request:(0,e.buildRequest)(o,{methods:i,retryCount:c,retryDelay:u,uid:b}),value:f}}return Eu}var wu={},Yg;function C5(){if(Yg)return wu;Yg=1,Object.defineProperty(wu,"__esModule",{value:!0}),wu.custom=t;const e=hi();function t(n,r={}){const{key:i="custom",methods:a,name:o="Custom Provider",retryDelay:c}=r;return({retryCount:u})=>(0,e.createTransport)({key:i,methods:a,name:o,request:n.request.bind(n),retryCount:r.retryCount??u,retryDelay:c,type:"custom"})}return wu}var An={},Jg;function x5(){if(Jg)return An;Jg=1,Object.defineProperty(An,"__esModule",{value:!0}),An.fallback=i,An.shouldThrow=a,An.rankTransports=o;const e=tr(),t=gr(),n=zf(),r=hi();function i(c,u={}){const{key:d="fallback",name:l="Fallback",rank:f=!1,shouldThrow:b=a,retryCount:T,retryDelay:w}=u;return(({chain:p,pollingInterval:O=4e3,timeout:S,...m})=>{let j=c,s=()=>{};const y=(0,r.createTransport)({key:d,name:l,async request({method:g,params:E}){let B;const _=async(v=0)=>{const C=j[v]({...m,chain:p,retryCount:0,timeout:S});try{const q=await C.request({method:g,params:E});return s({method:g,params:E,response:q,transport:C,status:"success"}),q}catch(q){if(s({error:q,method:g,params:E,transport:C,status:"error"}),b(q)||v===j.length-1||(B??=j.slice(v+1).some(R=>{const{include:H,exclude:F}=R({chain:p}).config.methods||{};return H?H.includes(g):F?!F.includes(g):!0}),!B))throw q;return _(v+1)}};return _()},retryCount:T,retryDelay:w,type:"fallback"},{onResponse:g=>s=g,transports:j.map(g=>g({chain:p,retryCount:0}))});if(f){const g=typeof f=="object"?f:{};o({chain:p,interval:g.interval??O,onTransports:E=>j=E,ping:g.ping,sampleCount:g.sampleCount,timeout:g.timeout,transports:j,weights:g.weights})}return y})}function a(c){return!!("code"in c&&typeof c.code=="number"&&(c.code===t.TransactionRejectedRpcError.code||c.code===t.UserRejectedRequestError.code||e.ExecutionRevertedError.nodeMessage.test(c.message)||c.code===5e3))}function o({chain:c,interval:u=4e3,onTransports:d,ping:l,sampleCount:f=10,timeout:b=1e3,transports:T,weights:w={}}){const{stability:p=.7,latency:O=.3}=w,S=[],m=async()=>{const j=await Promise.all(T.map(async g=>{const E=g({chain:c,retryCount:0,timeout:b}),B=Date.now();let _,v;try{await(l?l({transport:E}):E.request({method:"net_listening"})),v=1}catch{v=0}finally{_=Date.now()}return{latency:_-B,success:v}}));S.push(j),S.length>f&&S.shift();const s=Math.max(...S.map(g=>Math.max(...g.map(({latency:E})=>E)))),y=T.map((g,E)=>{const B=S.map(R=>R[E].latency),v=1-B.reduce((R,H)=>R+H,0)/B.length/s,C=S.map(R=>R[E].success),q=C.reduce((R,H)=>R+H,0)/C.length;return q===0?[0,E]:[O*v+p*q,E]}).sort((g,E)=>E[0]-g[0]);d(y.map(([,g])=>T[g])),await(0,n.wait)(u),m()};m()}return An}var ju={},Uo={},Xg;function y0(){if(Xg)return Uo;Xg=1,Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.UrlRequiredError=void 0;const e=fe();class t extends e.BaseError{constructor(){super("No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",{docsPath:"/docs/clients/intro",name:"UrlRequiredError"})}}return Uo.UrlRequiredError=t,Uo}var Qg;function q5(){if(Qg)return ju;Qg=1,Object.defineProperty(ju,"__esModule",{value:!0}),ju.http=a;const e=Bt(),t=y0(),n=kf(),r=r0(),i=hi();function a(o,c={}){const{batch:u,fetchFn:d,fetchOptions:l,key:f="http",methods:b,name:T="HTTP JSON-RPC",onFetchRequest:w,onFetchResponse:p,retryDelay:O,raw:S}=c;return({chain:m,retryCount:j,timeout:s})=>{const{batchSize:y=1e3,wait:g=0}=typeof u=="object"?u:{},E=c.retryCount??j,B=s??c.timeout??1e4,_=o||m?.rpcUrls.default.http[0];if(!_)throw new t.UrlRequiredError;const v=(0,r.getHttpRpcClient)(_,{fetchFn:d,fetchOptions:l,onRequest:w,onResponse:p,timeout:B});return(0,i.createTransport)({key:f,methods:b,name:T,async request({method:C,params:q}){const R={method:C,params:q},{schedule:H}=(0,n.createBatchScheduler)({id:_,wait:g,shouldSplitBatch(M){return M.length>y},fn:M=>v.request({body:M}),sort:(M,A)=>M.id-A.id}),F=async M=>u?H(M):[await v.request({body:M})],[{error:k,result:h}]=await F(R);if(S)return{error:k,result:h};if(k)throw new e.RpcRequestError({body:R,error:k,url:_});return h},retryCount:E,retryDelay:O,timeout:B,type:"http"},{fetchOptions:l,url:_})}}return ju}var Pu={},$g;function H5(){if($g)return Pu;$g=1,Object.defineProperty(Pu,"__esModule",{value:!0}),Pu.webSocket=a;const e=Bt(),t=y0(),n=S_(),r=n0(),i=hi();function a(o,c={}){const{keepAlive:u,key:d="webSocket",methods:l,name:f="WebSocket JSON-RPC",reconnect:b,retryDelay:T}=c;return({chain:w,retryCount:p,timeout:O})=>{const S=c.retryCount??p,m=O??c.timeout??1e4,j=o||w?.rpcUrls.default.webSocket?.[0],s={keepAlive:u,reconnect:b};if(!j)throw new t.UrlRequiredError;return(0,i.createTransport)({key:d,methods:l,name:f,async request({method:y,params:g}){const E={method:y,params:g},B=await(0,r.getWebSocketRpcClient)(j,s),{error:_,result:v}=await B.requestAsync({body:E,timeout:m});if(_)throw new e.RpcRequestError({body:E,error:_,url:j});return v},retryCount:S,retryDelay:T,timeout:m,type:"webSocket"},{getSocket(){return(0,n.getSocket)(j)},getRpcClient(){return(0,r.getWebSocketRpcClient)(j,s)},async subscribe({params:y,onData:g,onError:E}){const B=await(0,r.getWebSocketRpcClient)(j,s),{result:_}=await new Promise((v,C)=>B.request({body:{method:"eth_subscribe",params:y},onError(q){C(q),E?.(q)},onResponse(q){if(q.error){C(q.error),E?.(q.error);return}if(typeof q.id=="number"){v(q);return}q.method==="eth_subscription"&&g(q.params)}}));return{subscriptionId:_,async unsubscribe(){return new Promise(v=>B.request({body:{method:"eth_unsubscribe",params:[_]},onResponse:v}))}}}})}}return Pu}var zo={},ep;function M5(){if(ep)return zo;ep=1,Object.defineProperty(zo,"__esModule",{value:!0}),zo.ProviderRpcError=void 0;class e extends Error{constructor(n,r){super(r),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=n,this.details=r}}return zo.ProviderRpcError=e,zo}var Au={},tp;function k5(){if(tp)return Au;tp=1,Object.defineProperty(Au,"__esModule",{value:!0}),Au.decodeDeployData=r;const e=qe(),t=hr(),n="/docs/contract/decodeDeployData";function r(i){const{abi:a,bytecode:o,data:c}=i;if(c===o)return{bytecode:o};const u=a.find(l=>"type"in l&&l.type==="constructor");if(!u)throw new e.AbiConstructorNotFoundError({docsPath:n});if(!("inputs"in u))throw new e.AbiConstructorParamsNotFoundError({docsPath:n});if(!u.inputs||u.inputs.length===0)throw new e.AbiConstructorParamsNotFoundError({docsPath:n});return{args:(0,t.decodeAbiParameters)(u.inputs,`0x${c.replace(o,"")}`),bytecode:o}}return Au}var Tu={},rp;function N5(){if(rp)return Tu;rp=1,Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.fromBlobs=r;const e=Vo(),t=Pe(),n=ie();function r(i){const a=i.to??(typeof i.blobs[0]=="string"?"hex":"bytes"),o=typeof i.blobs[0]=="string"?i.blobs.map(f=>(0,t.hexToBytes)(f)):i.blobs,c=o.reduce((f,b)=>f+b.length,0),u=(0,e.createCursor)(new Uint8Array(c));let d=!0;for(const f of o){const b=(0,e.createCursor)(f);for(;d&&b.position=t||r<0)throw new e.EnsInvalidChainIdError({chainId:r});return BigInt((2147483648|r)>>>0)}return Iu}var Bu={},ip;function a2(){if(ip)return Bu;ip=1,Object.defineProperty(Bu,"__esModule",{value:!0}),Bu.defineKzg=e;function e({blobToKzgCommitment:t,computeBlobKzgProof:n}){return{blobToKzgCommitment:t,computeBlobKzgProof:n}}return Bu}var Ru={},sp;function U5(){if(sp)return Ru;sp=1,Object.defineProperty(Ru,"__esModule",{value:!0}),Ru.setupKzg=t;const e=a2();function t(n,r){try{n.loadTrustedSetup(r)}catch(i){const a=i;if(!a.message.includes("trusted setup is already loaded"))throw a}return(0,e.defineKzg)(n)}return Ru}var Ou={},ap;function z5(){if(ap)return Ou;ap=1,Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.compactSignatureToSignature=n;const e=Pe(),t=ie();function n({r,yParityAndS:i}){const a=(0,e.hexToBytes)(i),o=a[0]&128?1:0,c=a;return o===1&&(c[0]&=127),{r,s:(0,t.bytesToHex)(c),yParity:o}}return Ou}var Cu={},cp;function D5(){if(cp)return Cu;cp=1,Object.defineProperty(Cu,"__esModule",{value:!0}),Cu.parseCompactSignature=n;const e=Yo(),t=ie();function n(r){const{r:i,s:a}=e.secp256k1.Signature.fromCompact(r.slice(2,130));return{r:(0,t.numberToHex)(i,{size:32}),yParityAndS:(0,t.numberToHex)(a,{size:32})}}return Cu}var xu={},up;function G5(){if(up)return xu;up=1,Object.defineProperty(xu,"__esModule",{value:!0}),xu.parseSignature=n;const e=Yo(),t=ie();function n(r){const{r:i,s:a}=e.secp256k1.Signature.fromCompact(r.slice(2,130)),o=+`0x${r.slice(130)}`,[c,u]=(()=>{if(o===0||o===1)return[void 0,o];if(o===27)return[BigInt(o),0];if(o===28)return[BigInt(o),1];throw new Error("Invalid yParityOrV value")})();return typeof c<"u"?{r:(0,t.numberToHex)(i,{size:32}),s:(0,t.numberToHex)(a,{size:32}),v:c,yParity:u}:{r:(0,t.numberToHex)(i,{size:32}),s:(0,t.numberToHex)(a,{size:32}),yParity:u}}return xu}var qu={},dp;function V5(){if(dp)return qu;dp=1,Object.defineProperty(qu,"__esModule",{value:!0}),qu.recoverTransactionAddress=i;const e=at(),t=l0(),n=cd(),r=_r();async function i(a){const{serializedTransaction:o,signature:c}=a,u=(0,t.parseTransaction)(o),d=c??{r:u.r,s:u.s,v:u.v,yParity:u.yParity},l=(0,n.serializeTransaction)({...u,r:void 0,s:void 0,v:void 0,yParity:void 0,sidecars:void 0});return await(0,r.recoverAddress)({hash:(0,e.keccak256)(l),signature:d})}return qu}var Hu={},fp;function W5(){if(fp)return Hu;fp=1,Object.defineProperty(Hu,"__esModule",{value:!0}),Hu.serializeCompactSignature=n;const e=Yo(),t=Ne();function n({r,yParityAndS:i}){return`0x${new e.secp256k1.Signature((0,t.hexToBigInt)(r),(0,t.hexToBigInt)(i)).toCompactHex()}`}return Hu}var Mu={},lp;function K5(){if(lp)return Mu;lp=1,Object.defineProperty(Mu,"__esModule",{value:!0}),Mu.signatureToCompactSignature=n;const e=Pe(),t=ie();function n(r){const{r:i,s:a,v:o,yParity:c}=r,u=Number(c??o-27n);let d=a;if(u===1){const l=(0,e.hexToBytes)(a);l[0]|=128,d=(0,t.bytesToHex)(l)}return{r:i,yParityAndS:d}}return Mu}var bp;function Z5(){return bp||(bp=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.maxInt8=e.universalSignatureValidatorByteCode=e.erc6492SignatureValidatorByteCode=e.deploylessCallViaFactoryBytecode=e.deploylessCallViaBytecodeBytecode=e.zeroHash=e.zeroAddress=e.ethAddress=e.multicall3Abi=e.universalSignatureValidatorAbi=e.erc6492SignatureValidatorAbi=e.erc4626Abi=e.erc1155Abi=e.erc721Abi=e.erc20Abi_bytes32=e.erc20Abi=e.webSocket=e.http=e.shouldThrow=e.fallback=e.custom=e.createTransport=e.walletActions=e.testActions=e.publicActions=e.createWalletClient=e.createTestClient=e.createPublicClient=e.rpcSchema=e.createClient=e.WaitForCallsStatusTimeoutError=e.getContract=e.UnknownTypeError=e.UnknownSignatureError=e.SolidityProtectedKeywordError=e.parseAbiParameters=e.parseAbiParameter=e.parseAbiItem=e.parseAbi=e.InvalidStructSignatureError=e.InvalidSignatureError=e.InvalidParenthesisError=e.InvalidParameterError=e.InvalidModifierError=e.InvalidFunctionModifierError=e.InvalidAbiTypeParameterError=e.InvalidAbiParametersError=e.InvalidAbiParameterError=e.InvalidAbiItemError=e.CircularReferenceError=void 0,e.maxUint152=e.maxUint144=e.maxUint136=e.maxUint128=e.maxUint120=e.maxUint112=e.maxUint104=e.maxUint96=e.maxUint88=e.maxUint80=e.maxUint72=e.maxUint64=e.maxUint56=e.maxUint48=e.maxUint40=e.maxUint32=e.maxUint24=e.maxUint16=e.maxUint8=e.maxInt256=e.maxInt248=e.maxInt240=e.maxInt232=e.maxInt224=e.maxInt216=e.maxInt208=e.maxInt200=e.maxInt192=e.maxInt184=e.maxInt176=e.maxInt168=e.maxInt160=e.maxInt152=e.maxInt144=e.maxInt136=e.maxInt128=e.maxInt120=e.maxInt112=e.maxInt104=e.maxInt96=e.maxInt88=e.maxInt80=e.maxInt72=e.maxInt64=e.maxInt56=e.maxInt48=e.maxInt40=e.maxInt32=e.maxInt24=e.maxInt16=void 0,e.AbiConstructorNotFoundError=e.weiUnits=e.gweiUnits=e.etherUnits=e.presignMessagePrefix=e.minInt256=e.minInt248=e.minInt240=e.minInt232=e.minInt224=e.minInt216=e.minInt208=e.minInt200=e.minInt192=e.minInt184=e.minInt176=e.minInt168=e.minInt160=e.minInt152=e.minInt144=e.minInt136=e.minInt128=e.minInt120=e.minInt112=e.minInt104=e.minInt96=e.minInt88=e.minInt80=e.minInt72=e.minInt64=e.minInt56=e.minInt48=e.minInt40=e.minInt32=e.minInt24=e.minInt16=e.minInt8=e.maxUint256=e.maxUint248=e.maxUint240=e.maxUint232=e.maxUint224=e.maxUint216=e.maxUint208=e.maxUint200=e.maxUint192=e.maxUint184=e.maxUint176=e.maxUint168=e.maxUint160=void 0,e.EnsAvatarUriResolutionError=e.EnsAvatarUnsupportedNamespaceError=e.EnsAvatarInvalidNftUriError=e.SizeOverflowError=e.InvalidHexValueError=e.InvalidHexBooleanError=e.InvalidBytesBooleanError=e.IntegerOutOfRangeError=e.SliceOffsetOutOfBoundsError=e.SizeExceedsPaddingSizeError=e.RawContractError=e.CounterfactualDeploymentFailedError=e.ContractFunctionZeroDataError=e.ContractFunctionRevertedError=e.ContractFunctionExecutionError=e.CallExecutionError=e.InvalidChainIdError=e.ClientChainNotConfiguredError=e.ChainNotFoundError=e.ChainMismatchError=e.ChainDoesNotSupportContract=e.BundleFailedError=e.BlockNotFoundError=e.setErrorConfig=e.BaseError=e.InvalidAddressError=e.UnsupportedPackedAbiType=e.InvalidDefinitionTypeError=e.InvalidArrayError=e.InvalidAbiEncodingTypeError=e.InvalidAbiDecodingTypeError=e.DecodeLogTopicsMismatch=e.DecodeLogDataMismatch=e.BytesSizeMismatchError=e.AbiFunctionSignatureNotFoundError=e.AbiFunctionOutputsNotFoundError=e.AbiFunctionNotFoundError=e.AbiEventSignatureNotFoundError=e.AbiEventSignatureEmptyTopicsError=e.AbiEventNotFoundError=e.AbiErrorSignatureNotFoundError=e.AbiErrorNotFoundError=e.AbiErrorInputsNotFoundError=e.AbiEncodingLengthMismatchError=e.AbiEncodingBytesSizeMismatchError=e.AbiEncodingArrayLengthMismatchError=e.AbiDecodingZeroDataError=e.AbiDecodingDataSizeTooSmallError=e.AbiDecodingDataSizeInvalidError=e.AbiConstructorParamsNotFoundError=void 0,e.UnsupportedProviderMethodError=e.UnsupportedNonOptionalCapabilityError=e.UnsupportedChainIdError=e.UnknownRpcError=e.UnknownBundleIdError=e.UnauthorizedProviderError=e.TransactionRejectedRpcError=e.SwitchChainError=e.RpcError=e.ResourceUnavailableRpcError=e.ResourceNotFoundRpcError=e.ProviderRpcError=e.ProviderDisconnectedError=e.ParseRpcError=e.MethodNotSupportedRpcError=e.MethodNotFoundRpcError=e.LimitExceededRpcError=e.JsonRpcVersionUnsupportedError=e.InvalidRequestRpcError=e.InvalidParamsRpcError=e.InvalidInputRpcError=e.InternalRpcError=e.DuplicateIdError=e.ChainDisconnectedError=e.BundleTooLargeError=e.AtomicReadyWalletRejectedUpgradeError=e.AtomicityNotSupportedError=e.WebSocketRequestError=e.TimeoutError=e.SocketClosedError=e.RpcRequestError=e.HttpRequestError=e.UnknownNodeError=e.TransactionTypeNotSupportedError=e.TipAboveFeeCapError=e.NonceTooLowError=e.NonceTooHighError=e.NonceMaxValueError=e.IntrinsicGasTooLowError=e.IntrinsicGasTooHighError=e.InsufficientFundsError=e.FeeCapTooLowError=e.FeeCapTooHighError=e.ExecutionRevertedError=e.FilterTypeNotSupportedError=e.MaxFeePerGasTooLowError=e.Eip1559FeesNotSupportedError=e.BaseFeeScalarError=e.EstimateGasExecutionError=e.EnsInvalidChainIdError=void 0,e.toBlobs=e.toBlobSidecars=e.sidecarsToVersionedHashes=e.fromBlobs=e.commitmentToVersionedHash=e.commitmentsToVersionedHashes=e.blobsToProofs=e.blobsToCommitments=e.isAddressEqual=e.isAddress=e.getCreateAddress=e.getCreate2Address=e.getContractAddress=e.getAddress=e.checksumAddress=e.prepareEncodeFunctionData=e.parseEventLogs=e.getAbiItem=e.encodePacked=e.encodeFunctionResult=e.encodeFunctionData=e.encodeEventTopics=e.encodeErrorResult=e.encodeDeployData=e.encodeAbiParameters=e.decodeFunctionResult=e.decodeFunctionData=e.decodeEventLog=e.decodeErrorResult=e.decodeDeployData=e.decodeAbiParameters=e.EIP1193ProviderRpcError=e.InvalidDecimalNumberError=e.InvalidStructTypeError=e.InvalidPrimaryTypeError=e.InvalidDomainError=e.UrlRequiredError=e.WaitForTransactionReceiptTimeoutError=e.TransactionReceiptNotFoundError=e.TransactionNotFoundError=e.TransactionExecutionError=e.InvalidStorageKeySizeError=e.InvalidSerializedTransactionTypeError=e.InvalidSerializedTransactionError=e.InvalidSerializableTransactionError=e.InvalidLegacyVError=e.FeeConflictError=e.StateAssignmentConflictError=e.AccountStateConflictError=e.UserRejectedRequestError=void 0,e.toCoinType=e.namehash=e.labelhash=e.toRlp=e.hexToRlp=e.bytesToRlp=e.toHex=e.stringToHex=e.numberToHex=e.bytesToHex=e.boolToHex=e.toBytes=e.stringToBytes=e.numberToBytes=e.hexToBytes=e.boolToBytes=e.fromRlp=e.hexToString=e.hexToNumber=e.hexToBool=e.hexToBigInt=e.fromHex=e.fromBytes=e.bytesToString=e.bytesToNumber=e.bytesToBool=e.bytesToBigInt=e.trim=e.sliceHex=e.sliceBytes=e.slice=e.size=e.padHex=e.padBytes=e.pad=e.isHex=e.isBytes=e.concatHex=e.concatBytes=e.concat=e.getChainContractAddress=e.extractChain=e.extendSchema=e.defineChain=e.assertCurrentChain=e.offchainLookupSignature=e.offchainLookupAbiItem=e.offchainLookup=e.ccipFetch=e.ccipRequest=void 0,e.recoverTransactionAddress=e.recoverPublicKey=e.recoverMessageAddress=e.recoverAddress=e.parseSignature=e.hexToSignature=e.parseErc8010Signature=e.parseErc6492Signature=e.parseCompactSignature=e.hexToCompactSignature=e.isErc8010Signature=e.isErc6492Signature=e.hashTypedData=e.hashStruct=e.hashDomain=e.hashMessage=e.compactSignatureToSignature=e.withTimeout=e.withRetry=e.withCache=e.nonceManager=e.createNonceManager=e.setupKzg=e.defineKzg=e.getFunctionSignature=e.toFunctionSignature=e.getFunctionSelector=e.toFunctionSelector=e.toFunctionHash=e.getEventSignature=e.toEventSignature=e.getEventSelector=e.toEventSelector=e.toEventHash=e.sha256=e.ripemd160=e.keccak256=e.isHash=e.rpcTransactionType=e.formatTransactionRequest=e.defineTransactionRequest=e.formatTransactionReceipt=e.defineTransactionReceipt=e.transactionType=e.formatTransaction=e.defineTransaction=e.formatLog=e.formatBlock=e.defineBlock=e.getContractError=void 0,e.parseUnits=e.parseGwei=e.parseEther=e.formatUnits=e.formatGwei=e.formatEther=e.validateTypedData=e.serializeTypedData=e.getTypesForEIP712Domain=e.domainSeparator=e.serializeTransaction=e.serializeAccessList=e.parseTransaction=e.getTransactionType=e.getSerializedTransactionType=e.assertTransactionLegacy=e.assertTransactionEIP2930=e.assertTransactionEIP1559=e.assertRequest=e.stringify=e.verifyTypedData=e.verifyMessage=e.verifyHash=e.toPrefixedMessage=e.signatureToCompactSignature=e.serializeSignature=e.signatureToHex=e.serializeErc8010Signature=e.serializeErc6492Signature=e.serializeCompactSignature=e.compactSignatureToHex=e.recoverTypedDataAddress=void 0;var t=lr();Object.defineProperty(e,"CircularReferenceError",{enumerable:!0,get:function(){return t.CircularReferenceError}}),Object.defineProperty(e,"InvalidAbiItemError",{enumerable:!0,get:function(){return t.InvalidAbiItemError}}),Object.defineProperty(e,"InvalidAbiParameterError",{enumerable:!0,get:function(){return t.InvalidAbiParameterError}}),Object.defineProperty(e,"InvalidAbiParametersError",{enumerable:!0,get:function(){return t.InvalidAbiParametersError}}),Object.defineProperty(e,"InvalidAbiTypeParameterError",{enumerable:!0,get:function(){return t.InvalidAbiTypeParameterError}}),Object.defineProperty(e,"InvalidFunctionModifierError",{enumerable:!0,get:function(){return t.InvalidFunctionModifierError}}),Object.defineProperty(e,"InvalidModifierError",{enumerable:!0,get:function(){return t.InvalidModifierError}}),Object.defineProperty(e,"InvalidParameterError",{enumerable:!0,get:function(){return t.InvalidParameterError}}),Object.defineProperty(e,"InvalidParenthesisError",{enumerable:!0,get:function(){return t.InvalidParenthesisError}}),Object.defineProperty(e,"InvalidSignatureError",{enumerable:!0,get:function(){return t.InvalidSignatureError}}),Object.defineProperty(e,"InvalidStructSignatureError",{enumerable:!0,get:function(){return t.InvalidStructSignatureError}}),Object.defineProperty(e,"parseAbi",{enumerable:!0,get:function(){return t.parseAbi}}),Object.defineProperty(e,"parseAbiItem",{enumerable:!0,get:function(){return t.parseAbiItem}}),Object.defineProperty(e,"parseAbiParameter",{enumerable:!0,get:function(){return t.parseAbiParameter}}),Object.defineProperty(e,"parseAbiParameters",{enumerable:!0,get:function(){return t.parseAbiParameters}}),Object.defineProperty(e,"SolidityProtectedKeywordError",{enumerable:!0,get:function(){return t.SolidityProtectedKeywordError}}),Object.defineProperty(e,"UnknownSignatureError",{enumerable:!0,get:function(){return t.UnknownSignatureError}}),Object.defineProperty(e,"UnknownTypeError",{enumerable:!0,get:function(){return t.UnknownTypeError}});var n=qv();Object.defineProperty(e,"getContract",{enumerable:!0,get:function(){return n.getContract}});var r=Wf();Object.defineProperty(e,"WaitForCallsStatusTimeoutError",{enumerable:!0,get:function(){return r.WaitForCallsStatusTimeoutError}});var i=sd();Object.defineProperty(e,"createClient",{enumerable:!0,get:function(){return i.createClient}}),Object.defineProperty(e,"rpcSchema",{enumerable:!0,get:function(){return i.rpcSchema}});var a=k6();Object.defineProperty(e,"createPublicClient",{enumerable:!0,get:function(){return a.createPublicClient}});var o=m5();Object.defineProperty(e,"createTestClient",{enumerable:!0,get:function(){return o.createTestClient}});var c=O5();Object.defineProperty(e,"createWalletClient",{enumerable:!0,get:function(){return c.createWalletClient}});var u=r2();Object.defineProperty(e,"publicActions",{enumerable:!0,get:function(){return u.publicActions}});var d=n2();Object.defineProperty(e,"testActions",{enumerable:!0,get:function(){return d.testActions}});var l=s2();Object.defineProperty(e,"walletActions",{enumerable:!0,get:function(){return l.walletActions}});var f=hi();Object.defineProperty(e,"createTransport",{enumerable:!0,get:function(){return f.createTransport}});var b=C5();Object.defineProperty(e,"custom",{enumerable:!0,get:function(){return b.custom}});var T=x5();Object.defineProperty(e,"fallback",{enumerable:!0,get:function(){return T.fallback}}),Object.defineProperty(e,"shouldThrow",{enumerable:!0,get:function(){return T.shouldThrow}});var w=q5();Object.defineProperty(e,"http",{enumerable:!0,get:function(){return w.http}});var p=H5();Object.defineProperty(e,"webSocket",{enumerable:!0,get:function(){return p.webSocket}});var O=wr();Object.defineProperty(e,"erc20Abi",{enumerable:!0,get:function(){return O.erc20Abi}}),Object.defineProperty(e,"erc20Abi_bytes32",{enumerable:!0,get:function(){return O.erc20Abi_bytes32}}),Object.defineProperty(e,"erc721Abi",{enumerable:!0,get:function(){return O.erc721Abi}}),Object.defineProperty(e,"erc1155Abi",{enumerable:!0,get:function(){return O.erc1155Abi}}),Object.defineProperty(e,"erc4626Abi",{enumerable:!0,get:function(){return O.erc4626Abi}}),Object.defineProperty(e,"erc6492SignatureValidatorAbi",{enumerable:!0,get:function(){return O.erc6492SignatureValidatorAbi}}),Object.defineProperty(e,"universalSignatureValidatorAbi",{enumerable:!0,get:function(){return O.erc6492SignatureValidatorAbi}}),Object.defineProperty(e,"multicall3Abi",{enumerable:!0,get:function(){return O.multicall3Abi}});var S=Q_();Object.defineProperty(e,"ethAddress",{enumerable:!0,get:function(){return S.ethAddress}}),Object.defineProperty(e,"zeroAddress",{enumerable:!0,get:function(){return S.zeroAddress}});var m=o0();Object.defineProperty(e,"zeroHash",{enumerable:!0,get:function(){return m.zeroHash}});var j=ii();Object.defineProperty(e,"deploylessCallViaBytecodeBytecode",{enumerable:!0,get:function(){return j.deploylessCallViaBytecodeBytecode}}),Object.defineProperty(e,"deploylessCallViaFactoryBytecode",{enumerable:!0,get:function(){return j.deploylessCallViaFactoryBytecode}}),Object.defineProperty(e,"erc6492SignatureValidatorByteCode",{enumerable:!0,get:function(){return j.erc6492SignatureValidatorByteCode}}),Object.defineProperty(e,"universalSignatureValidatorByteCode",{enumerable:!0,get:function(){return j.erc6492SignatureValidatorByteCode}});var s=Af();Object.defineProperty(e,"maxInt8",{enumerable:!0,get:function(){return s.maxInt8}}),Object.defineProperty(e,"maxInt16",{enumerable:!0,get:function(){return s.maxInt16}}),Object.defineProperty(e,"maxInt24",{enumerable:!0,get:function(){return s.maxInt24}}),Object.defineProperty(e,"maxInt32",{enumerable:!0,get:function(){return s.maxInt32}}),Object.defineProperty(e,"maxInt40",{enumerable:!0,get:function(){return s.maxInt40}}),Object.defineProperty(e,"maxInt48",{enumerable:!0,get:function(){return s.maxInt48}}),Object.defineProperty(e,"maxInt56",{enumerable:!0,get:function(){return s.maxInt56}}),Object.defineProperty(e,"maxInt64",{enumerable:!0,get:function(){return s.maxInt64}}),Object.defineProperty(e,"maxInt72",{enumerable:!0,get:function(){return s.maxInt72}}),Object.defineProperty(e,"maxInt80",{enumerable:!0,get:function(){return s.maxInt80}}),Object.defineProperty(e,"maxInt88",{enumerable:!0,get:function(){return s.maxInt88}}),Object.defineProperty(e,"maxInt96",{enumerable:!0,get:function(){return s.maxInt96}}),Object.defineProperty(e,"maxInt104",{enumerable:!0,get:function(){return s.maxInt104}}),Object.defineProperty(e,"maxInt112",{enumerable:!0,get:function(){return s.maxInt112}}),Object.defineProperty(e,"maxInt120",{enumerable:!0,get:function(){return s.maxInt120}}),Object.defineProperty(e,"maxInt128",{enumerable:!0,get:function(){return s.maxInt128}}),Object.defineProperty(e,"maxInt136",{enumerable:!0,get:function(){return s.maxInt136}}),Object.defineProperty(e,"maxInt144",{enumerable:!0,get:function(){return s.maxInt144}}),Object.defineProperty(e,"maxInt152",{enumerable:!0,get:function(){return s.maxInt152}}),Object.defineProperty(e,"maxInt160",{enumerable:!0,get:function(){return s.maxInt160}}),Object.defineProperty(e,"maxInt168",{enumerable:!0,get:function(){return s.maxInt168}}),Object.defineProperty(e,"maxInt176",{enumerable:!0,get:function(){return s.maxInt176}}),Object.defineProperty(e,"maxInt184",{enumerable:!0,get:function(){return s.maxInt184}}),Object.defineProperty(e,"maxInt192",{enumerable:!0,get:function(){return s.maxInt192}}),Object.defineProperty(e,"maxInt200",{enumerable:!0,get:function(){return s.maxInt200}}),Object.defineProperty(e,"maxInt208",{enumerable:!0,get:function(){return s.maxInt208}}),Object.defineProperty(e,"maxInt216",{enumerable:!0,get:function(){return s.maxInt216}}),Object.defineProperty(e,"maxInt224",{enumerable:!0,get:function(){return s.maxInt224}}),Object.defineProperty(e,"maxInt232",{enumerable:!0,get:function(){return s.maxInt232}}),Object.defineProperty(e,"maxInt240",{enumerable:!0,get:function(){return s.maxInt240}}),Object.defineProperty(e,"maxInt248",{enumerable:!0,get:function(){return s.maxInt248}}),Object.defineProperty(e,"maxInt256",{enumerable:!0,get:function(){return s.maxInt256}}),Object.defineProperty(e,"maxUint8",{enumerable:!0,get:function(){return s.maxUint8}}),Object.defineProperty(e,"maxUint16",{enumerable:!0,get:function(){return s.maxUint16}}),Object.defineProperty(e,"maxUint24",{enumerable:!0,get:function(){return s.maxUint24}}),Object.defineProperty(e,"maxUint32",{enumerable:!0,get:function(){return s.maxUint32}}),Object.defineProperty(e,"maxUint40",{enumerable:!0,get:function(){return s.maxUint40}}),Object.defineProperty(e,"maxUint48",{enumerable:!0,get:function(){return s.maxUint48}}),Object.defineProperty(e,"maxUint56",{enumerable:!0,get:function(){return s.maxUint56}}),Object.defineProperty(e,"maxUint64",{enumerable:!0,get:function(){return s.maxUint64}}),Object.defineProperty(e,"maxUint72",{enumerable:!0,get:function(){return s.maxUint72}}),Object.defineProperty(e,"maxUint80",{enumerable:!0,get:function(){return s.maxUint80}}),Object.defineProperty(e,"maxUint88",{enumerable:!0,get:function(){return s.maxUint88}}),Object.defineProperty(e,"maxUint96",{enumerable:!0,get:function(){return s.maxUint96}}),Object.defineProperty(e,"maxUint104",{enumerable:!0,get:function(){return s.maxUint104}}),Object.defineProperty(e,"maxUint112",{enumerable:!0,get:function(){return s.maxUint112}}),Object.defineProperty(e,"maxUint120",{enumerable:!0,get:function(){return s.maxUint120}}),Object.defineProperty(e,"maxUint128",{enumerable:!0,get:function(){return s.maxUint128}}),Object.defineProperty(e,"maxUint136",{enumerable:!0,get:function(){return s.maxUint136}}),Object.defineProperty(e,"maxUint144",{enumerable:!0,get:function(){return s.maxUint144}}),Object.defineProperty(e,"maxUint152",{enumerable:!0,get:function(){return s.maxUint152}}),Object.defineProperty(e,"maxUint160",{enumerable:!0,get:function(){return s.maxUint160}}),Object.defineProperty(e,"maxUint168",{enumerable:!0,get:function(){return s.maxUint168}}),Object.defineProperty(e,"maxUint176",{enumerable:!0,get:function(){return s.maxUint176}}),Object.defineProperty(e,"maxUint184",{enumerable:!0,get:function(){return s.maxUint184}}),Object.defineProperty(e,"maxUint192",{enumerable:!0,get:function(){return s.maxUint192}}),Object.defineProperty(e,"maxUint200",{enumerable:!0,get:function(){return s.maxUint200}}),Object.defineProperty(e,"maxUint208",{enumerable:!0,get:function(){return s.maxUint208}}),Object.defineProperty(e,"maxUint216",{enumerable:!0,get:function(){return s.maxUint216}}),Object.defineProperty(e,"maxUint224",{enumerable:!0,get:function(){return s.maxUint224}}),Object.defineProperty(e,"maxUint232",{enumerable:!0,get:function(){return s.maxUint232}}),Object.defineProperty(e,"maxUint240",{enumerable:!0,get:function(){return s.maxUint240}}),Object.defineProperty(e,"maxUint248",{enumerable:!0,get:function(){return s.maxUint248}}),Object.defineProperty(e,"maxUint256",{enumerable:!0,get:function(){return s.maxUint256}}),Object.defineProperty(e,"minInt8",{enumerable:!0,get:function(){return s.minInt8}}),Object.defineProperty(e,"minInt16",{enumerable:!0,get:function(){return s.minInt16}}),Object.defineProperty(e,"minInt24",{enumerable:!0,get:function(){return s.minInt24}}),Object.defineProperty(e,"minInt32",{enumerable:!0,get:function(){return s.minInt32}}),Object.defineProperty(e,"minInt40",{enumerable:!0,get:function(){return s.minInt40}}),Object.defineProperty(e,"minInt48",{enumerable:!0,get:function(){return s.minInt48}}),Object.defineProperty(e,"minInt56",{enumerable:!0,get:function(){return s.minInt56}}),Object.defineProperty(e,"minInt64",{enumerable:!0,get:function(){return s.minInt64}}),Object.defineProperty(e,"minInt72",{enumerable:!0,get:function(){return s.minInt72}}),Object.defineProperty(e,"minInt80",{enumerable:!0,get:function(){return s.minInt80}}),Object.defineProperty(e,"minInt88",{enumerable:!0,get:function(){return s.minInt88}}),Object.defineProperty(e,"minInt96",{enumerable:!0,get:function(){return s.minInt96}}),Object.defineProperty(e,"minInt104",{enumerable:!0,get:function(){return s.minInt104}}),Object.defineProperty(e,"minInt112",{enumerable:!0,get:function(){return s.minInt112}}),Object.defineProperty(e,"minInt120",{enumerable:!0,get:function(){return s.minInt120}}),Object.defineProperty(e,"minInt128",{enumerable:!0,get:function(){return s.minInt128}}),Object.defineProperty(e,"minInt136",{enumerable:!0,get:function(){return s.minInt136}}),Object.defineProperty(e,"minInt144",{enumerable:!0,get:function(){return s.minInt144}}),Object.defineProperty(e,"minInt152",{enumerable:!0,get:function(){return s.minInt152}}),Object.defineProperty(e,"minInt160",{enumerable:!0,get:function(){return s.minInt160}}),Object.defineProperty(e,"minInt168",{enumerable:!0,get:function(){return s.minInt168}}),Object.defineProperty(e,"minInt176",{enumerable:!0,get:function(){return s.minInt176}}),Object.defineProperty(e,"minInt184",{enumerable:!0,get:function(){return s.minInt184}}),Object.defineProperty(e,"minInt192",{enumerable:!0,get:function(){return s.minInt192}}),Object.defineProperty(e,"minInt200",{enumerable:!0,get:function(){return s.minInt200}}),Object.defineProperty(e,"minInt208",{enumerable:!0,get:function(){return s.minInt208}}),Object.defineProperty(e,"minInt216",{enumerable:!0,get:function(){return s.minInt216}}),Object.defineProperty(e,"minInt224",{enumerable:!0,get:function(){return s.minInt224}}),Object.defineProperty(e,"minInt232",{enumerable:!0,get:function(){return s.minInt232}}),Object.defineProperty(e,"minInt240",{enumerable:!0,get:function(){return s.minInt240}}),Object.defineProperty(e,"minInt248",{enumerable:!0,get:function(){return s.minInt248}}),Object.defineProperty(e,"minInt256",{enumerable:!0,get:function(){return s.minInt256}});var y=I_();Object.defineProperty(e,"presignMessagePrefix",{enumerable:!0,get:function(){return y.presignMessagePrefix}});var g=Wo();Object.defineProperty(e,"etherUnits",{enumerable:!0,get:function(){return g.etherUnits}}),Object.defineProperty(e,"gweiUnits",{enumerable:!0,get:function(){return g.gweiUnits}}),Object.defineProperty(e,"weiUnits",{enumerable:!0,get:function(){return g.weiUnits}});var E=qe();Object.defineProperty(e,"AbiConstructorNotFoundError",{enumerable:!0,get:function(){return E.AbiConstructorNotFoundError}}),Object.defineProperty(e,"AbiConstructorParamsNotFoundError",{enumerable:!0,get:function(){return E.AbiConstructorParamsNotFoundError}}),Object.defineProperty(e,"AbiDecodingDataSizeInvalidError",{enumerable:!0,get:function(){return E.AbiDecodingDataSizeInvalidError}}),Object.defineProperty(e,"AbiDecodingDataSizeTooSmallError",{enumerable:!0,get:function(){return E.AbiDecodingDataSizeTooSmallError}}),Object.defineProperty(e,"AbiDecodingZeroDataError",{enumerable:!0,get:function(){return E.AbiDecodingZeroDataError}}),Object.defineProperty(e,"AbiEncodingArrayLengthMismatchError",{enumerable:!0,get:function(){return E.AbiEncodingArrayLengthMismatchError}}),Object.defineProperty(e,"AbiEncodingBytesSizeMismatchError",{enumerable:!0,get:function(){return E.AbiEncodingBytesSizeMismatchError}}),Object.defineProperty(e,"AbiEncodingLengthMismatchError",{enumerable:!0,get:function(){return E.AbiEncodingLengthMismatchError}}),Object.defineProperty(e,"AbiErrorInputsNotFoundError",{enumerable:!0,get:function(){return E.AbiErrorInputsNotFoundError}}),Object.defineProperty(e,"AbiErrorNotFoundError",{enumerable:!0,get:function(){return E.AbiErrorNotFoundError}}),Object.defineProperty(e,"AbiErrorSignatureNotFoundError",{enumerable:!0,get:function(){return E.AbiErrorSignatureNotFoundError}}),Object.defineProperty(e,"AbiEventNotFoundError",{enumerable:!0,get:function(){return E.AbiEventNotFoundError}}),Object.defineProperty(e,"AbiEventSignatureEmptyTopicsError",{enumerable:!0,get:function(){return E.AbiEventSignatureEmptyTopicsError}}),Object.defineProperty(e,"AbiEventSignatureNotFoundError",{enumerable:!0,get:function(){return E.AbiEventSignatureNotFoundError}}),Object.defineProperty(e,"AbiFunctionNotFoundError",{enumerable:!0,get:function(){return E.AbiFunctionNotFoundError}}),Object.defineProperty(e,"AbiFunctionOutputsNotFoundError",{enumerable:!0,get:function(){return E.AbiFunctionOutputsNotFoundError}}),Object.defineProperty(e,"AbiFunctionSignatureNotFoundError",{enumerable:!0,get:function(){return E.AbiFunctionSignatureNotFoundError}}),Object.defineProperty(e,"BytesSizeMismatchError",{enumerable:!0,get:function(){return E.BytesSizeMismatchError}}),Object.defineProperty(e,"DecodeLogDataMismatch",{enumerable:!0,get:function(){return E.DecodeLogDataMismatch}}),Object.defineProperty(e,"DecodeLogTopicsMismatch",{enumerable:!0,get:function(){return E.DecodeLogTopicsMismatch}}),Object.defineProperty(e,"InvalidAbiDecodingTypeError",{enumerable:!0,get:function(){return E.InvalidAbiDecodingTypeError}}),Object.defineProperty(e,"InvalidAbiEncodingTypeError",{enumerable:!0,get:function(){return E.InvalidAbiEncodingTypeError}}),Object.defineProperty(e,"InvalidArrayError",{enumerable:!0,get:function(){return E.InvalidArrayError}}),Object.defineProperty(e,"InvalidDefinitionTypeError",{enumerable:!0,get:function(){return E.InvalidDefinitionTypeError}}),Object.defineProperty(e,"UnsupportedPackedAbiType",{enumerable:!0,get:function(){return E.UnsupportedPackedAbiType}});var B=St();Object.defineProperty(e,"InvalidAddressError",{enumerable:!0,get:function(){return B.InvalidAddressError}});var _=fe();Object.defineProperty(e,"BaseError",{enumerable:!0,get:function(){return _.BaseError}}),Object.defineProperty(e,"setErrorConfig",{enumerable:!0,get:function(){return _.setErrorConfig}});var v=Tf();Object.defineProperty(e,"BlockNotFoundError",{enumerable:!0,get:function(){return v.BlockNotFoundError}});var C=r_();Object.defineProperty(e,"BundleFailedError",{enumerable:!0,get:function(){return C.BundleFailedError}});var q=si();Object.defineProperty(e,"ChainDoesNotSupportContract",{enumerable:!0,get:function(){return q.ChainDoesNotSupportContract}}),Object.defineProperty(e,"ChainMismatchError",{enumerable:!0,get:function(){return q.ChainMismatchError}}),Object.defineProperty(e,"ChainNotFoundError",{enumerable:!0,get:function(){return q.ChainNotFoundError}}),Object.defineProperty(e,"ClientChainNotConfiguredError",{enumerable:!0,get:function(){return q.ClientChainNotConfiguredError}}),Object.defineProperty(e,"InvalidChainIdError",{enumerable:!0,get:function(){return q.InvalidChainIdError}});var R=yr();Object.defineProperty(e,"CallExecutionError",{enumerable:!0,get:function(){return R.CallExecutionError}}),Object.defineProperty(e,"ContractFunctionExecutionError",{enumerable:!0,get:function(){return R.ContractFunctionExecutionError}}),Object.defineProperty(e,"ContractFunctionRevertedError",{enumerable:!0,get:function(){return R.ContractFunctionRevertedError}}),Object.defineProperty(e,"ContractFunctionZeroDataError",{enumerable:!0,get:function(){return R.ContractFunctionZeroDataError}}),Object.defineProperty(e,"CounterfactualDeploymentFailedError",{enumerable:!0,get:function(){return R.CounterfactualDeploymentFailedError}}),Object.defineProperty(e,"RawContractError",{enumerable:!0,get:function(){return R.RawContractError}});var H=Uu();Object.defineProperty(e,"SizeExceedsPaddingSizeError",{enumerable:!0,get:function(){return H.SizeExceedsPaddingSizeError}}),Object.defineProperty(e,"SliceOffsetOutOfBoundsError",{enumerable:!0,get:function(){return H.SliceOffsetOutOfBoundsError}});var F=Bn();Object.defineProperty(e,"IntegerOutOfRangeError",{enumerable:!0,get:function(){return F.IntegerOutOfRangeError}}),Object.defineProperty(e,"InvalidBytesBooleanError",{enumerable:!0,get:function(){return F.InvalidBytesBooleanError}}),Object.defineProperty(e,"InvalidHexBooleanError",{enumerable:!0,get:function(){return F.InvalidHexBooleanError}}),Object.defineProperty(e,"InvalidHexValueError",{enumerable:!0,get:function(){return F.InvalidHexValueError}}),Object.defineProperty(e,"SizeOverflowError",{enumerable:!0,get:function(){return F.SizeOverflowError}});var k=Jf();Object.defineProperty(e,"EnsAvatarInvalidNftUriError",{enumerable:!0,get:function(){return k.EnsAvatarInvalidNftUriError}}),Object.defineProperty(e,"EnsAvatarUnsupportedNamespaceError",{enumerable:!0,get:function(){return k.EnsAvatarUnsupportedNamespaceError}}),Object.defineProperty(e,"EnsAvatarUriResolutionError",{enumerable:!0,get:function(){return k.EnsAvatarUriResolutionError}}),Object.defineProperty(e,"EnsInvalidChainIdError",{enumerable:!0,get:function(){return k.EnsInvalidChainIdError}});var h=zp();Object.defineProperty(e,"EstimateGasExecutionError",{enumerable:!0,get:function(){return h.EstimateGasExecutionError}});var M=ei();Object.defineProperty(e,"BaseFeeScalarError",{enumerable:!0,get:function(){return M.BaseFeeScalarError}}),Object.defineProperty(e,"Eip1559FeesNotSupportedError",{enumerable:!0,get:function(){return M.Eip1559FeesNotSupportedError}}),Object.defineProperty(e,"MaxFeePerGasTooLowError",{enumerable:!0,get:function(){return M.MaxFeePerGasTooLowError}});var A=Cp();Object.defineProperty(e,"FilterTypeNotSupportedError",{enumerable:!0,get:function(){return A.FilterTypeNotSupportedError}});var P=tr();Object.defineProperty(e,"ExecutionRevertedError",{enumerable:!0,get:function(){return P.ExecutionRevertedError}}),Object.defineProperty(e,"FeeCapTooHighError",{enumerable:!0,get:function(){return P.FeeCapTooHighError}}),Object.defineProperty(e,"FeeCapTooLowError",{enumerable:!0,get:function(){return P.FeeCapTooLowError}}),Object.defineProperty(e,"InsufficientFundsError",{enumerable:!0,get:function(){return P.InsufficientFundsError}}),Object.defineProperty(e,"IntrinsicGasTooHighError",{enumerable:!0,get:function(){return P.IntrinsicGasTooHighError}}),Object.defineProperty(e,"IntrinsicGasTooLowError",{enumerable:!0,get:function(){return P.IntrinsicGasTooLowError}}),Object.defineProperty(e,"NonceMaxValueError",{enumerable:!0,get:function(){return P.NonceMaxValueError}}),Object.defineProperty(e,"NonceTooHighError",{enumerable:!0,get:function(){return P.NonceTooHighError}}),Object.defineProperty(e,"NonceTooLowError",{enumerable:!0,get:function(){return P.NonceTooLowError}}),Object.defineProperty(e,"TipAboveFeeCapError",{enumerable:!0,get:function(){return P.TipAboveFeeCapError}}),Object.defineProperty(e,"TransactionTypeNotSupportedError",{enumerable:!0,get:function(){return P.TransactionTypeNotSupportedError}}),Object.defineProperty(e,"UnknownNodeError",{enumerable:!0,get:function(){return P.UnknownNodeError}});var I=Bt();Object.defineProperty(e,"HttpRequestError",{enumerable:!0,get:function(){return I.HttpRequestError}}),Object.defineProperty(e,"RpcRequestError",{enumerable:!0,get:function(){return I.RpcRequestError}}),Object.defineProperty(e,"SocketClosedError",{enumerable:!0,get:function(){return I.SocketClosedError}}),Object.defineProperty(e,"TimeoutError",{enumerable:!0,get:function(){return I.TimeoutError}}),Object.defineProperty(e,"WebSocketRequestError",{enumerable:!0,get:function(){return I.WebSocketRequestError}});var x=gr();Object.defineProperty(e,"AtomicityNotSupportedError",{enumerable:!0,get:function(){return x.AtomicityNotSupportedError}}),Object.defineProperty(e,"AtomicReadyWalletRejectedUpgradeError",{enumerable:!0,get:function(){return x.AtomicReadyWalletRejectedUpgradeError}}),Object.defineProperty(e,"BundleTooLargeError",{enumerable:!0,get:function(){return x.BundleTooLargeError}}),Object.defineProperty(e,"ChainDisconnectedError",{enumerable:!0,get:function(){return x.ChainDisconnectedError}}),Object.defineProperty(e,"DuplicateIdError",{enumerable:!0,get:function(){return x.DuplicateIdError}}),Object.defineProperty(e,"InternalRpcError",{enumerable:!0,get:function(){return x.InternalRpcError}}),Object.defineProperty(e,"InvalidInputRpcError",{enumerable:!0,get:function(){return x.InvalidInputRpcError}}),Object.defineProperty(e,"InvalidParamsRpcError",{enumerable:!0,get:function(){return x.InvalidParamsRpcError}}),Object.defineProperty(e,"InvalidRequestRpcError",{enumerable:!0,get:function(){return x.InvalidRequestRpcError}}),Object.defineProperty(e,"JsonRpcVersionUnsupportedError",{enumerable:!0,get:function(){return x.JsonRpcVersionUnsupportedError}}),Object.defineProperty(e,"LimitExceededRpcError",{enumerable:!0,get:function(){return x.LimitExceededRpcError}}),Object.defineProperty(e,"MethodNotFoundRpcError",{enumerable:!0,get:function(){return x.MethodNotFoundRpcError}}),Object.defineProperty(e,"MethodNotSupportedRpcError",{enumerable:!0,get:function(){return x.MethodNotSupportedRpcError}}),Object.defineProperty(e,"ParseRpcError",{enumerable:!0,get:function(){return x.ParseRpcError}}),Object.defineProperty(e,"ProviderDisconnectedError",{enumerable:!0,get:function(){return x.ProviderDisconnectedError}}),Object.defineProperty(e,"ProviderRpcError",{enumerable:!0,get:function(){return x.ProviderRpcError}}),Object.defineProperty(e,"ResourceNotFoundRpcError",{enumerable:!0,get:function(){return x.ResourceNotFoundRpcError}}),Object.defineProperty(e,"ResourceUnavailableRpcError",{enumerable:!0,get:function(){return x.ResourceUnavailableRpcError}}),Object.defineProperty(e,"RpcError",{enumerable:!0,get:function(){return x.RpcError}}),Object.defineProperty(e,"SwitchChainError",{enumerable:!0,get:function(){return x.SwitchChainError}}),Object.defineProperty(e,"TransactionRejectedRpcError",{enumerable:!0,get:function(){return x.TransactionRejectedRpcError}}),Object.defineProperty(e,"UnauthorizedProviderError",{enumerable:!0,get:function(){return x.UnauthorizedProviderError}}),Object.defineProperty(e,"UnknownBundleIdError",{enumerable:!0,get:function(){return x.UnknownBundleIdError}}),Object.defineProperty(e,"UnknownRpcError",{enumerable:!0,get:function(){return x.UnknownRpcError}}),Object.defineProperty(e,"UnsupportedChainIdError",{enumerable:!0,get:function(){return x.UnsupportedChainIdError}}),Object.defineProperty(e,"UnsupportedNonOptionalCapabilityError",{enumerable:!0,get:function(){return x.UnsupportedNonOptionalCapabilityError}}),Object.defineProperty(e,"UnsupportedProviderMethodError",{enumerable:!0,get:function(){return x.UnsupportedProviderMethodError}}),Object.defineProperty(e,"UserRejectedRequestError",{enumerable:!0,get:function(){return x.UserRejectedRequestError}});var N=Ef();Object.defineProperty(e,"AccountStateConflictError",{enumerable:!0,get:function(){return N.AccountStateConflictError}}),Object.defineProperty(e,"StateAssignmentConflictError",{enumerable:!0,get:function(){return N.StateAssignmentConflictError}});var U=dt();Object.defineProperty(e,"FeeConflictError",{enumerable:!0,get:function(){return U.FeeConflictError}}),Object.defineProperty(e,"InvalidLegacyVError",{enumerable:!0,get:function(){return U.InvalidLegacyVError}}),Object.defineProperty(e,"InvalidSerializableTransactionError",{enumerable:!0,get:function(){return U.InvalidSerializableTransactionError}}),Object.defineProperty(e,"InvalidSerializedTransactionError",{enumerable:!0,get:function(){return U.InvalidSerializedTransactionError}}),Object.defineProperty(e,"InvalidSerializedTransactionTypeError",{enumerable:!0,get:function(){return U.InvalidSerializedTransactionTypeError}}),Object.defineProperty(e,"InvalidStorageKeySizeError",{enumerable:!0,get:function(){return U.InvalidStorageKeySizeError}}),Object.defineProperty(e,"TransactionExecutionError",{enumerable:!0,get:function(){return U.TransactionExecutionError}}),Object.defineProperty(e,"TransactionNotFoundError",{enumerable:!0,get:function(){return U.TransactionNotFoundError}}),Object.defineProperty(e,"TransactionReceiptNotFoundError",{enumerable:!0,get:function(){return U.TransactionReceiptNotFoundError}}),Object.defineProperty(e,"WaitForTransactionReceiptTimeoutError",{enumerable:!0,get:function(){return U.WaitForTransactionReceiptTimeoutError}});var L=y0();Object.defineProperty(e,"UrlRequiredError",{enumerable:!0,get:function(){return L.UrlRequiredError}});var z=R_();Object.defineProperty(e,"InvalidDomainError",{enumerable:!0,get:function(){return z.InvalidDomainError}}),Object.defineProperty(e,"InvalidPrimaryTypeError",{enumerable:!0,get:function(){return z.InvalidPrimaryTypeError}}),Object.defineProperty(e,"InvalidStructTypeError",{enumerable:!0,get:function(){return z.InvalidStructTypeError}});var D=W_();Object.defineProperty(e,"InvalidDecimalNumberError",{enumerable:!0,get:function(){return D.InvalidDecimalNumberError}});var J=M5();Object.defineProperty(e,"EIP1193ProviderRpcError",{enumerable:!0,get:function(){return J.ProviderRpcError}});var Z=hr();Object.defineProperty(e,"decodeAbiParameters",{enumerable:!0,get:function(){return Z.decodeAbiParameters}});var Y=k5();Object.defineProperty(e,"decodeDeployData",{enumerable:!0,get:function(){return Y.decodeDeployData}});var X=Vu();Object.defineProperty(e,"decodeErrorResult",{enumerable:!0,get:function(){return X.decodeErrorResult}});var oe=ni();Object.defineProperty(e,"decodeEventLog",{enumerable:!0,get:function(){return oe.decodeEventLog}});var W=Nf();Object.defineProperty(e,"decodeFunctionData",{enumerable:!0,get:function(){return W.decodeFunctionData}});var K=nr();Object.defineProperty(e,"decodeFunctionResult",{enumerable:!0,get:function(){return K.decodeFunctionResult}});var $=It();Object.defineProperty(e,"encodeAbiParameters",{enumerable:!0,get:function(){return $.encodeAbiParameters}});var re=ai();Object.defineProperty(e,"encodeDeployData",{enumerable:!0,get:function(){return re.encodeDeployData}});var te=Ff();Object.defineProperty(e,"encodeErrorResult",{enumerable:!0,get:function(){return te.encodeErrorResult}});var ne=$r();Object.defineProperty(e,"encodeEventTopics",{enumerable:!0,get:function(){return ne.encodeEventTopics}});var se=ut();Object.defineProperty(e,"encodeFunctionData",{enumerable:!0,get:function(){return se.encodeFunctionData}});var ee=Lf();Object.defineProperty(e,"encodeFunctionResult",{enumerable:!0,get:function(){return ee.encodeFunctionResult}});var Q=l_();Object.defineProperty(e,"encodePacked",{enumerable:!0,get:function(){return Q.encodePacked}});var be=er();Object.defineProperty(e,"getAbiItem",{enumerable:!0,get:function(){return be.getAbiItem}});var me=oi();Object.defineProperty(e,"parseEventLogs",{enumerable:!0,get:function(){return me.parseEventLogs}});var Ue=qp();Object.defineProperty(e,"prepareEncodeFunctionData",{enumerable:!0,get:function(){return Ue.prepareEncodeFunctionData}});var Ae=yt();Object.defineProperty(e,"checksumAddress",{enumerable:!0,get:function(){return Ae.checksumAddress}}),Object.defineProperty(e,"getAddress",{enumerable:!0,get:function(){return Ae.getAddress}});var Xe=b_();Object.defineProperty(e,"getContractAddress",{enumerable:!0,get:function(){return Xe.getContractAddress}}),Object.defineProperty(e,"getCreate2Address",{enumerable:!0,get:function(){return Xe.getCreate2Address}}),Object.defineProperty(e,"getCreateAddress",{enumerable:!0,get:function(){return Xe.getCreateAddress}});var Me=ct();Object.defineProperty(e,"isAddress",{enumerable:!0,get:function(){return Me.isAddress}});var Te=Ct();Object.defineProperty(e,"isAddressEqual",{enumerable:!0,get:function(){return Te.isAddressEqual}});var pt=Ju();Object.defineProperty(e,"blobsToCommitments",{enumerable:!0,get:function(){return pt.blobsToCommitments}});var Ke=Xu();Object.defineProperty(e,"blobsToProofs",{enumerable:!0,get:function(){return Ke.blobsToProofs}});var Le=Rf();Object.defineProperty(e,"commitmentsToVersionedHashes",{enumerable:!0,get:function(){return Le.commitmentsToVersionedHashes}});var Ze=Bf();Object.defineProperty(e,"commitmentToVersionedHash",{enumerable:!0,get:function(){return Ze.commitmentToVersionedHash}});var ze=N5();Object.defineProperty(e,"fromBlobs",{enumerable:!0,get:function(){return ze.fromBlobs}});var xt=F5();Object.defineProperty(e,"sidecarsToVersionedHashes",{enumerable:!0,get:function(){return xt.sidecarsToVersionedHashes}});var xn=Qu();Object.defineProperty(e,"toBlobSidecars",{enumerable:!0,get:function(){return xn.toBlobSidecars}});var yi=Zp();Object.defineProperty(e,"toBlobs",{enumerable:!0,get:function(){return yi.toBlobs}});var Tr=Uf();Object.defineProperty(e,"ccipRequest",{enumerable:!0,get:function(){return Tr.ccipRequest}}),Object.defineProperty(e,"ccipFetch",{enumerable:!0,get:function(){return Tr.ccipRequest}}),Object.defineProperty(e,"offchainLookup",{enumerable:!0,get:function(){return Tr.offchainLookup}}),Object.defineProperty(e,"offchainLookupAbiItem",{enumerable:!0,get:function(){return Tr.offchainLookupAbiItem}}),Object.defineProperty(e,"offchainLookupSignature",{enumerable:!0,get:function(){return Tr.offchainLookupSignature}});var gi=di();Object.defineProperty(e,"assertCurrentChain",{enumerable:!0,get:function(){return gi.assertCurrentChain}});var pi=g_();Object.defineProperty(e,"defineChain",{enumerable:!0,get:function(){return pi.defineChain}}),Object.defineProperty(e,"extendSchema",{enumerable:!0,get:function(){return pi.extendSchema}});var hd=p_();Object.defineProperty(e,"extractChain",{enumerable:!0,get:function(){return hd.extractChain}});var _i=jr();Object.defineProperty(e,"getChainContractAddress",{enumerable:!0,get:function(){return _i.getChainContractAddress}});var qn=De();Object.defineProperty(e,"concat",{enumerable:!0,get:function(){return qn.concat}}),Object.defineProperty(e,"concatBytes",{enumerable:!0,get:function(){return qn.concatBytes}}),Object.defineProperty(e,"concatHex",{enumerable:!0,get:function(){return qn.concatHex}});var yd=Xf();Object.defineProperty(e,"isBytes",{enumerable:!0,get:function(){return yd.isBytes}});var gd=nt();Object.defineProperty(e,"isHex",{enumerable:!0,get:function(){return gd.isHex}});var Hn=br();Object.defineProperty(e,"pad",{enumerable:!0,get:function(){return Hn.pad}}),Object.defineProperty(e,"padBytes",{enumerable:!0,get:function(){return Hn.padBytes}}),Object.defineProperty(e,"padHex",{enumerable:!0,get:function(){return Hn.padHex}});var pd=st();Object.defineProperty(e,"size",{enumerable:!0,get:function(){return pd.size}});var Mn=vt();Object.defineProperty(e,"slice",{enumerable:!0,get:function(){return Mn.slice}}),Object.defineProperty(e,"sliceBytes",{enumerable:!0,get:function(){return Mn.sliceBytes}}),Object.defineProperty(e,"sliceHex",{enumerable:!0,get:function(){return Mn.sliceHex}});var _d=$t();Object.defineProperty(e,"trim",{enumerable:!0,get:function(){return _d.trim}});var Sr=vf();Object.defineProperty(e,"bytesToBigInt",{enumerable:!0,get:function(){return Sr.bytesToBigInt}}),Object.defineProperty(e,"bytesToBool",{enumerable:!0,get:function(){return Sr.bytesToBool}}),Object.defineProperty(e,"bytesToNumber",{enumerable:!0,get:function(){return Sr.bytesToNumber}}),Object.defineProperty(e,"bytesToString",{enumerable:!0,get:function(){return Sr.bytesToString}}),Object.defineProperty(e,"fromBytes",{enumerable:!0,get:function(){return Sr.fromBytes}});var Ir=Ne();Object.defineProperty(e,"fromHex",{enumerable:!0,get:function(){return Ir.fromHex}}),Object.defineProperty(e,"hexToBigInt",{enumerable:!0,get:function(){return Ir.hexToBigInt}}),Object.defineProperty(e,"hexToBool",{enumerable:!0,get:function(){return Ir.hexToBool}}),Object.defineProperty(e,"hexToNumber",{enumerable:!0,get:function(){return Ir.hexToNumber}}),Object.defineProperty(e,"hexToString",{enumerable:!0,get:function(){return Ir.hexToString}});var vd=$f();Object.defineProperty(e,"fromRlp",{enumerable:!0,get:function(){return vd.fromRlp}});var Br=Pe();Object.defineProperty(e,"boolToBytes",{enumerable:!0,get:function(){return Br.boolToBytes}}),Object.defineProperty(e,"hexToBytes",{enumerable:!0,get:function(){return Br.hexToBytes}}),Object.defineProperty(e,"numberToBytes",{enumerable:!0,get:function(){return Br.numberToBytes}}),Object.defineProperty(e,"stringToBytes",{enumerable:!0,get:function(){return Br.stringToBytes}}),Object.defineProperty(e,"toBytes",{enumerable:!0,get:function(){return Br.toBytes}});var Rr=ie();Object.defineProperty(e,"boolToHex",{enumerable:!0,get:function(){return Rr.boolToHex}}),Object.defineProperty(e,"bytesToHex",{enumerable:!0,get:function(){return Rr.bytesToHex}}),Object.defineProperty(e,"numberToHex",{enumerable:!0,get:function(){return Rr.numberToHex}}),Object.defineProperty(e,"stringToHex",{enumerable:!0,get:function(){return Rr.stringToHex}}),Object.defineProperty(e,"toHex",{enumerable:!0,get:function(){return Rr.toHex}});var kn=Jo();Object.defineProperty(e,"bytesToRlp",{enumerable:!0,get:function(){return kn.bytesToRlp}}),Object.defineProperty(e,"hexToRlp",{enumerable:!0,get:function(){return kn.hexToRlp}}),Object.defineProperty(e,"toRlp",{enumerable:!0,get:function(){return kn.toRlp}});var Ed=s_();Object.defineProperty(e,"labelhash",{enumerable:!0,get:function(){return Ed.labelhash}});var wd=Zf();Object.defineProperty(e,"namehash",{enumerable:!0,get:function(){return wd.namehash}});var Nn=L5();Object.defineProperty(e,"toCoinType",{enumerable:!0,get:function(){return Nn.toCoinType}});var jd=pr();Object.defineProperty(e,"getContractError",{enumerable:!0,get:function(){return jd.getContractError}});var vi=Zu();Object.defineProperty(e,"defineBlock",{enumerable:!0,get:function(){return vi.defineBlock}}),Object.defineProperty(e,"formatBlock",{enumerable:!0,get:function(){return vi.formatBlock}});var Pd=rr();Object.defineProperty(e,"formatLog",{enumerable:!0,get:function(){return Pd.formatLog}});var Fn=On();Object.defineProperty(e,"defineTransaction",{enumerable:!0,get:function(){return Fn.defineTransaction}}),Object.defineProperty(e,"formatTransaction",{enumerable:!0,get:function(){return Fn.formatTransaction}}),Object.defineProperty(e,"transactionType",{enumerable:!0,get:function(){return Fn.transactionType}});var Ei=fi();Object.defineProperty(e,"defineTransactionReceipt",{enumerable:!0,get:function(){return Ei.defineTransactionReceipt}}),Object.defineProperty(e,"formatTransactionReceipt",{enumerable:!0,get:function(){return Ei.formatTransactionReceipt}});var on=Rt();Object.defineProperty(e,"defineTransactionRequest",{enumerable:!0,get:function(){return on.defineTransactionRequest}}),Object.defineProperty(e,"formatTransactionRequest",{enumerable:!0,get:function(){return on.formatTransactionRequest}}),Object.defineProperty(e,"rpcTransactionType",{enumerable:!0,get:function(){return on.rpcTransactionType}});var Ad=e0();Object.defineProperty(e,"isHash",{enumerable:!0,get:function(){return Ad.isHash}});var Td=at();Object.defineProperty(e,"keccak256",{enumerable:!0,get:function(){return Td.keccak256}});var Sd=__();Object.defineProperty(e,"ripemd160",{enumerable:!0,get:function(){return Sd.ripemd160}});var Id=If();Object.defineProperty(e,"sha256",{enumerable:!0,get:function(){return Id.sha256}});var Bd=v_();Object.defineProperty(e,"toEventHash",{enumerable:!0,get:function(){return Bd.toEventHash}});var wi=Rn();Object.defineProperty(e,"toEventSelector",{enumerable:!0,get:function(){return wi.toEventSelector}}),Object.defineProperty(e,"getEventSelector",{enumerable:!0,get:function(){return wi.toEventSelector}});var g0=E_();Object.defineProperty(e,"toEventSignature",{enumerable:!0,get:function(){return g0.toEventSignature}}),Object.defineProperty(e,"getEventSignature",{enumerable:!0,get:function(){return g0.toEventSignature}});var f2=w_();Object.defineProperty(e,"toFunctionHash",{enumerable:!0,get:function(){return f2.toFunctionHash}});var p0=Qr();Object.defineProperty(e,"toFunctionSelector",{enumerable:!0,get:function(){return p0.toFunctionSelector}}),Object.defineProperty(e,"getFunctionSelector",{enumerable:!0,get:function(){return p0.toFunctionSelector}});var _0=j_();Object.defineProperty(e,"toFunctionSignature",{enumerable:!0,get:function(){return _0.toFunctionSignature}}),Object.defineProperty(e,"getFunctionSignature",{enumerable:!0,get:function(){return _0.toFunctionSignature}});var l2=a2();Object.defineProperty(e,"defineKzg",{enumerable:!0,get:function(){return l2.defineKzg}});var b2=U5();Object.defineProperty(e,"setupKzg",{enumerable:!0,get:function(){return b2.setupKzg}});var v0=P_();Object.defineProperty(e,"createNonceManager",{enumerable:!0,get:function(){return v0.createNonceManager}}),Object.defineProperty(e,"nonceManager",{enumerable:!0,get:function(){return v0.nonceManager}});var m2=e_();Object.defineProperty(e,"withCache",{enumerable:!0,get:function(){return m2.withCache}});var h2=id();Object.defineProperty(e,"withRetry",{enumerable:!0,get:function(){return h2.withRetry}});var y2=t0();Object.defineProperty(e,"withTimeout",{enumerable:!0,get:function(){return y2.withTimeout}});var g2=z5();Object.defineProperty(e,"compactSignatureToSignature",{enumerable:!0,get:function(){return g2.compactSignatureToSignature}});var p2=li();Object.defineProperty(e,"hashMessage",{enumerable:!0,get:function(){return p2.hashMessage}});var Rd=bi();Object.defineProperty(e,"hashDomain",{enumerable:!0,get:function(){return Rd.hashDomain}}),Object.defineProperty(e,"hashStruct",{enumerable:!0,get:function(){return Rd.hashStruct}}),Object.defineProperty(e,"hashTypedData",{enumerable:!0,get:function(){return Rd.hashTypedData}});var _2=i0();Object.defineProperty(e,"isErc6492Signature",{enumerable:!0,get:function(){return _2.isErc6492Signature}});var v2=c0();Object.defineProperty(e,"isErc8010Signature",{enumerable:!0,get:function(){return v2.isErc8010Signature}});var E0=D5();Object.defineProperty(e,"hexToCompactSignature",{enumerable:!0,get:function(){return E0.parseCompactSignature}}),Object.defineProperty(e,"parseCompactSignature",{enumerable:!0,get:function(){return E0.parseCompactSignature}});var E2=F_();Object.defineProperty(e,"parseErc6492Signature",{enumerable:!0,get:function(){return E2.parseErc6492Signature}});var w2=L_();Object.defineProperty(e,"parseErc8010Signature",{enumerable:!0,get:function(){return w2.parseErc8010Signature}});var w0=G5();Object.defineProperty(e,"hexToSignature",{enumerable:!0,get:function(){return w0.parseSignature}}),Object.defineProperty(e,"parseSignature",{enumerable:!0,get:function(){return w0.parseSignature}});var j2=_r();Object.defineProperty(e,"recoverAddress",{enumerable:!0,get:function(){return j2.recoverAddress}});var P2=u0();Object.defineProperty(e,"recoverMessageAddress",{enumerable:!0,get:function(){return P2.recoverMessageAddress}});var A2=jf();Object.defineProperty(e,"recoverPublicKey",{enumerable:!0,get:function(){return A2.recoverPublicKey}});var T2=V5();Object.defineProperty(e,"recoverTransactionAddress",{enumerable:!0,get:function(){return T2.recoverTransactionAddress}});var S2=d0();Object.defineProperty(e,"recoverTypedDataAddress",{enumerable:!0,get:function(){return S2.recoverTypedDataAddress}});var j0=W5();Object.defineProperty(e,"compactSignatureToHex",{enumerable:!0,get:function(){return j0.serializeCompactSignature}}),Object.defineProperty(e,"serializeCompactSignature",{enumerable:!0,get:function(){return j0.serializeCompactSignature}});var I2=U_();Object.defineProperty(e,"serializeErc6492Signature",{enumerable:!0,get:function(){return I2.serializeErc6492Signature}});var B2=z_();Object.defineProperty(e,"serializeErc8010Signature",{enumerable:!0,get:function(){return B2.serializeErc8010Signature}});var P0=$_();Object.defineProperty(e,"signatureToHex",{enumerable:!0,get:function(){return P0.serializeSignature}}),Object.defineProperty(e,"serializeSignature",{enumerable:!0,get:function(){return P0.serializeSignature}});var R2=K5();Object.defineProperty(e,"signatureToCompactSignature",{enumerable:!0,get:function(){return R2.signatureToCompactSignature}});var O2=B_();Object.defineProperty(e,"toPrefixedMessage",{enumerable:!0,get:function(){return O2.toPrefixedMessage}});var C2=D_();Object.defineProperty(e,"verifyHash",{enumerable:!0,get:function(){return C2.verifyHash}});var x2=G_();Object.defineProperty(e,"verifyMessage",{enumerable:!0,get:function(){return x2.verifyMessage}});var q2=V_();Object.defineProperty(e,"verifyTypedData",{enumerable:!0,get:function(){return q2.verifyTypedData}});var H2=Ve();Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return H2.stringify}});var M2=Ot();Object.defineProperty(e,"assertRequest",{enumerable:!0,get:function(){return M2.assertRequest}});var Od=ad();Object.defineProperty(e,"assertTransactionEIP1559",{enumerable:!0,get:function(){return Od.assertTransactionEIP1559}}),Object.defineProperty(e,"assertTransactionEIP2930",{enumerable:!0,get:function(){return Od.assertTransactionEIP2930}}),Object.defineProperty(e,"assertTransactionLegacy",{enumerable:!0,get:function(){return Od.assertTransactionLegacy}});var k2=f0();Object.defineProperty(e,"getSerializedTransactionType",{enumerable:!0,get:function(){return k2.getSerializedTransactionType}});var N2=$u();Object.defineProperty(e,"getTransactionType",{enumerable:!0,get:function(){return N2.getTransactionType}});var F2=l0();Object.defineProperty(e,"parseTransaction",{enumerable:!0,get:function(){return F2.parseTransaction}});var L2=Qf();Object.defineProperty(e,"serializeAccessList",{enumerable:!0,get:function(){return L2.serializeAccessList}});var U2=cd();Object.defineProperty(e,"serializeTransaction",{enumerable:!0,get:function(){return U2.serializeTransaction}});var ji=ud();Object.defineProperty(e,"domainSeparator",{enumerable:!0,get:function(){return ji.domainSeparator}}),Object.defineProperty(e,"getTypesForEIP712Domain",{enumerable:!0,get:function(){return ji.getTypesForEIP712Domain}}),Object.defineProperty(e,"serializeTypedData",{enumerable:!0,get:function(){return ji.serializeTypedData}}),Object.defineProperty(e,"validateTypedData",{enumerable:!0,get:function(){return ji.validateTypedData}});var z2=Ko();Object.defineProperty(e,"formatEther",{enumerable:!0,get:function(){return z2.formatEther}});var D2=en();Object.defineProperty(e,"formatGwei",{enumerable:!0,get:function(){return D2.formatGwei}});var G2=Wu();Object.defineProperty(e,"formatUnits",{enumerable:!0,get:function(){return G2.formatUnits}});var V2=K_();Object.defineProperty(e,"parseEther",{enumerable:!0,get:function(){return V2.parseEther}});var W2=Z_();Object.defineProperty(e,"parseGwei",{enumerable:!0,get:function(){return W2.parseGwei}});var K2=bd();Object.defineProperty(e,"parseUnits",{enumerable:!0,get:function(){return K2.parseUnits}})})(Md)),Md}var Kr={},mp;function Y5(){if(mp)return Kr;mp=1,Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.MAGIC_VALUE_BYTES=Kr.MAGIC_VALUE=void 0;const e="0x1626ba7e";Kr.MAGIC_VALUE=e;const t="0x20c13b0b";return Kr.MAGIC_VALUE_BYTES=t,Kr}var ku={},Do={},Zr={},hp;function c2(){if(hp)return Zr;hp=1,Object.defineProperty(Zr,"__esModule",{value:!0}),Zr.PermissionsError=Zr.PERMISSIONS_REQUEST_REJECTED=void 0,Zr.PERMISSIONS_REQUEST_REJECTED=4001;class e extends Error{constructor(n,r,i){super(n),this.code=r,this.data=i,Object.setPrototypeOf(this,e.prototype)}}return Zr.PermissionsError=e,Zr}var yp;function u2(){if(yp)return Do;yp=1,Object.defineProperty(Do,"__esModule",{value:!0}),Do.Wallet=void 0;const e=Jr(),t=c2();class n{constructor(i){this.communicator=i}async getPermissions(){return(await this.communicator.send(e.Methods.wallet_getPermissions,void 0)).data}async requestPermissions(i){if(!this.isPermissionRequestValid(i))throw new t.PermissionsError("Permissions request is invalid",t.PERMISSIONS_REQUEST_REJECTED);try{return(await this.communicator.send(e.Methods.wallet_requestPermissions,i)).data}catch{throw new t.PermissionsError("Permissions rejected",t.PERMISSIONS_REQUEST_REJECTED)}}isPermissionRequestValid(i){return i.every(a=>typeof a=="object"?Object.keys(a).every(o=>!!Object.values(e.RestrictedMethods).includes(o)):!1)}}return Do.Wallet=n,Do}var gp;function J5(){if(gp)return ku;gp=1,Object.defineProperty(ku,"__esModule",{value:!0});const e=u2(),t=c2(),n=(i,a)=>a.some(o=>o.parentCapability===i),r=()=>(i,a,o)=>{const c=o.value;return o.value=async function(){const u=new e.Wallet(this.communicator);let d=await u.getPermissions();if(n(a,d)||(d=await u.requestPermissions([{[a]:{}}])),!n(a,d))throw new t.PermissionsError("Permissions rejected",t.PERMISSIONS_REQUEST_REJECTED);return c.apply(this)},o};return ku.default=r,ku}var pp;function X5(){if(pp)return Ft;pp=1;var e=Ft&&Ft.__decorate||function(d,l,f,b){var T=arguments.length,w=T<3?l:b===null?b=Object.getOwnPropertyDescriptor(l,f):b,p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")w=Reflect.decorate(d,l,f,b);else for(var O=d.length-1;O>=0;O--)(p=d[O])&&(w=(T<3?p(w):T>3?p(l,f,w):p(l,f))||w);return T>3&&w&&Object.defineProperty(l,f,w),w},t=Ft&&Ft.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(Ft,"__esModule",{value:!0}),Ft.Safe=void 0;const n=Z5(),r=Y5(),i=Jr(),a=hf(),o=mf(),c=t(J5());class u{constructor(l){this.communicator=l}async getChainInfo(){return(await this.communicator.send(i.Methods.getChainInfo,void 0)).data}async getInfo(){return(await this.communicator.send(i.Methods.getSafeInfo,void 0)).data}async experimental_getBalances({currency:l="usd"}={}){return(await this.communicator.send(i.Methods.getSafeBalances,{currency:l})).data}async check1271Signature(l,f="0x"){const b=await this.getInfo(),T=(0,n.encodeFunctionData)({abi:[{constant:!1,inputs:[{name:"_dataHash",type:"bytes32"},{name:"_signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"",type:"bytes4"}],payable:!1,stateMutability:"nonpayable",type:"function"}],functionName:"isValidSignature",args:[l,f]}),w={call:a.RPC_CALLS.eth_call,params:[{to:b.safeAddress,data:T},"latest"]};try{return(await this.communicator.send(i.Methods.rpcCall,w)).data.slice(0,10).toLowerCase()===r.MAGIC_VALUE}catch{return!1}}async check1271SignatureBytes(l,f="0x"){const b=await this.getInfo(),T=(0,n.encodeFunctionData)({abi:[{constant:!1,inputs:[{name:"_data",type:"bytes"},{name:"_signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"",type:"bytes4"}],payable:!1,stateMutability:"nonpayable",type:"function"}],functionName:"isValidSignature",args:[l,f]}),w={call:a.RPC_CALLS.eth_call,params:[{to:b.safeAddress,data:T},"latest"]};try{return(await this.communicator.send(i.Methods.rpcCall,w)).data.slice(0,10).toLowerCase()===r.MAGIC_VALUE_BYTES}catch{return!1}}calculateMessageHash(l){return(0,n.hashMessage)(l)}calculateTypedMessageHash(l){const f=typeof l.domain.chainId=="object"?l.domain.chainId.toNumber():Number(l.domain.chainId);let b=l.primaryType;if(!b){const T=Object.values(l.types),w=Object.keys(l.types).filter(p=>T.every(O=>O.every(({type:S})=>S.replace("[","").replace("]","")!==p)));if(w.length===0||w.length>1)throw new Error("Please specify primaryType");b=w[0]}return(0,n.hashTypedData)({message:l.message,domain:{...l.domain,chainId:f,verifyingContract:l.domain.verifyingContract,salt:l.domain.salt},types:l.types,primaryType:b})}async getOffChainSignature(l){return(await this.communicator.send(i.Methods.getOffChainSignature,l)).data}async isMessageSigned(l,f="0x"){let b;if(typeof l=="string"&&(b=async()=>{const T=this.calculateMessageHash(l);return await this.isMessageHashSigned(T,f)}),(0,o.isObjectEIP712TypedData)(l)&&(b=async()=>{const T=this.calculateTypedMessageHash(l);return await this.isMessageHashSigned(T,f)}),b)return await b();throw new Error("Invalid message type")}async isMessageHashSigned(l,f="0x"){const b=[this.check1271Signature.bind(this),this.check1271SignatureBytes.bind(this)];for(const T of b)if(await T(l,f))return!0;return!1}async getEnvironmentInfo(){return(await this.communicator.send(i.Methods.getEnvironmentInfo,void 0)).data}async requestAddressBook(){return(await this.communicator.send(i.Methods.requestAddressBook,void 0)).data}}return Ft.Safe=u,e([(0,c.default)()],u.prototype,"requestAddressBook",null),Ft}var _p;function vp(){if(_p)return sn;_p=1;var e=sn&&sn.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(sn,"__esModule",{value:!0});const t=e(nv()),n=cv(),r=uv(),i=X5(),a=u2();class o{constructor(u={}){const{allowedDomains:d=null,debug:l=!1}=u;this.communicator=new t.default(d,l),this.eth=new r.Eth(this.communicator),this.txs=new n.TXs(this.communicator),this.safe=new i.Safe(this.communicator),this.wallet=new a.Wallet(this.communicator)}}return sn.default=o,sn}var Ep;function Q5(){return Ep||(Ep=1,(function(e){var t=Nt&&Nt.__createBinding||(Object.create?(function(o,c,u,d){d===void 0&&(d=u);var l=Object.getOwnPropertyDescriptor(c,u);(!l||("get"in l?!c.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return c[u]}}),Object.defineProperty(o,d,l)}):(function(o,c,u,d){d===void 0&&(d=u),o[d]=c[u]})),n=Nt&&Nt.__exportStar||function(o,c){for(var u in o)u!=="default"&&!Object.prototype.hasOwnProperty.call(c,u)&&t(c,o,u)},r=Nt&&Nt.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(e,"__esModule",{value:!0}),e.getSDKVersion=void 0;const i=r(vp());e.default=i.default,n(vp(),e),n(mf(),e),n(Jr(),e),n(Tp(),e);var a=Ap();Object.defineProperty(e,"getSDKVersion",{enumerable:!0,get:function(){return a.getSDKVersion}}),n(hf(),e)})(Nt)),Nt}var Yr={},wp;function $5(){if(wp)return Yr;wp=1,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.numberToHex=Yr.getLowerCase=void 0;function e(n){return n&&n.toLowerCase()}Yr.getLowerCase=e;function t(n){return`0x${n.toString(16)}`}return Yr.numberToHex=t,Yr}var jp;function eE(){if(jp)return Ln;jp=1,Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.SafeAppProvider=void 0;const e=Q5(),t=X2(),n=$5();class r extends t.EventEmitter{constructor(a,o){super(),this.submittedTxs=new Map,this.safe=a,this.sdk=o}async connect(){this.emit("connect",{chainId:this.chainId})}async disconnect(){}get chainId(){return this.safe.chainId}async request(a){const{method:o,params:c=[]}=a;switch(o){case"eth_accounts":return[this.safe.safeAddress];case"net_version":case"eth_chainId":return(0,n.numberToHex)(this.chainId);case"personal_sign":{const[b,T]=c;if(this.safe.safeAddress.toLowerCase()!==T.toLowerCase())throw new Error("The address or message hash is invalid");const w=await this.sdk.txs.signMessage(b);return("signature"in w?w.signature:void 0)||"0x"}case"eth_sign":{const[b,T]=c;if(this.safe.safeAddress.toLowerCase()!==b.toLowerCase()||!T.startsWith("0x"))throw new Error("The address or message hash is invalid");const w=await this.sdk.txs.signMessage(T);return("signature"in w?w.signature:void 0)||"0x"}case"eth_signTypedData":case"eth_signTypedData_v4":{const[b,T]=c,w=typeof T=="string"?JSON.parse(T):T;if(this.safe.safeAddress.toLowerCase()!==b.toLowerCase())throw new Error("The address is invalid");const p=await this.sdk.txs.signTypedMessage(w);return("signature"in p?p.signature:void 0)||"0x"}case"eth_sendTransaction":const u={...c[0],value:c[0].value||"0",data:c[0].data||"0x"};typeof u.gas=="string"&&u.gas.startsWith("0x")&&(u.gas=parseInt(u.gas,16));const d=await this.sdk.txs.send({txs:[u],params:{safeTxGas:u.gas}});return this.submittedTxs.set(d.safeTxHash,{from:this.safe.safeAddress,hash:d.safeTxHash,gas:0,gasPrice:"0x00",nonce:0,input:u.data,value:u.value,to:u.to,blockHash:null,blockNumber:null,transactionIndex:null}),d.safeTxHash;case"eth_blockNumber":return(await this.sdk.eth.getBlockByNumber(["latest"])).number;case"eth_getBalance":return this.sdk.eth.getBalance([(0,n.getLowerCase)(c[0]),c[1]]);case"eth_getCode":return this.sdk.eth.getCode([(0,n.getLowerCase)(c[0]),c[1]]);case"eth_getTransactionCount":return this.sdk.eth.getTransactionCount([(0,n.getLowerCase)(c[0]),c[1]]);case"eth_getStorageAt":return this.sdk.eth.getStorageAt([(0,n.getLowerCase)(c[0]),c[1],c[2]]);case"eth_getBlockByNumber":return this.sdk.eth.getBlockByNumber([c[0],c[1]]);case"eth_getBlockByHash":return this.sdk.eth.getBlockByHash([c[0],c[1]]);case"eth_getTransactionByHash":let f=c[0];try{f=(await this.sdk.txs.getBySafeTxHash(f)).txHash||f}catch{}return this.submittedTxs.has(f)?this.submittedTxs.get(f):this.sdk.eth.getTransactionByHash([f]).then(b=>(b&&(b.hash=c[0]),b));case"eth_getTransactionReceipt":{let b=c[0];try{b=(await this.sdk.txs.getBySafeTxHash(b)).txHash||b}catch{}return this.sdk.eth.getTransactionReceipt([b]).then(T=>(T&&(T.transactionHash=c[0]),T))}case"eth_estimateGas":return this.sdk.eth.getEstimateGas(c[0]);case"eth_call":return this.sdk.eth.call([c[0],c[1]]);case"eth_getLogs":return this.sdk.eth.getPastLogs([c[0]]);case"eth_gasPrice":return this.sdk.eth.getGasPrice();case"wallet_getPermissions":return this.sdk.wallet.getPermissions();case"wallet_requestPermissions":return this.sdk.wallet.requestPermissions(c[0]);case"safe_setSettings":return this.sdk.eth.setSafeSettings([c[0]]);case"wallet_sendCalls":{const{from:b,calls:T,chainId:w}=c[0];if(w!==(0,n.numberToHex)(this.chainId))throw new Error(`Safe is not on chain ${w}`);if(b!==this.safe.safeAddress)throw Error("Invalid from address");const p=T.map((m,j)=>{if(!m.to)throw new Error(`Invalid call #${j}: missing "to" field`);return{to:m.to,data:m.data??"0x",value:m.value??(0,n.numberToHex)(0)}}),{safeTxHash:O}=await this.sdk.txs.send({txs:p});return{id:O}}case"wallet_getCallsStatus":{const b=c[0],T={[e.TransactionStatus.AWAITING_CONFIRMATIONS]:100,[e.TransactionStatus.AWAITING_EXECUTION]:100,[e.TransactionStatus.SUCCESS]:200,[e.TransactionStatus.CANCELLED]:400,[e.TransactionStatus.FAILED]:500},w=await this.sdk.txs.getBySafeTxHash(b),p={version:"1.0",id:b,chainId:(0,n.numberToHex)(this.chainId),status:T[w.txStatus]};if(!w.txHash)return p;const O=await this.sdk.eth.getTransactionReceipt([w.txHash]);if(!O)return p;const S=w.txData?.dataDecoded?.method!=="multiSend"?1:w.txData.dataDecoded.parameters?.[0].valueDecoded?.length??1,m=Number(O.blockNumber),j=Number(O.gasUsed);return p.receipts=Array(S).fill({logs:O.logs,status:(0,n.numberToHex)(w.txStatus===e.TransactionStatus.SUCCESS?1:0),blockHash:O.blockHash,blockNumber:(0,n.numberToHex)(m),gasUsed:(0,n.numberToHex)(j),transactionHash:w.txHash}),p}case"wallet_showCallsStatus":throw new Error(`"${a.method}" not supported`);case"wallet_getCapabilities":return{[(0,n.numberToHex)(this.chainId)]:{atomicBatch:{supported:!0}}};default:throw Error(`"${a.method}" not implemented`)}}send(a,o){a||o("Undefined request"),this.request(a).then(c=>o(null,{jsonrpc:"2.0",id:a.id,result:c})).catch(c=>o(c,null))}}return Ln.SafeAppProvider=r,Ln}var Pp;function tE(){return Pp||(Pp=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SafeAppProvider=void 0;var t=eE();Object.defineProperty(e,"SafeAppProvider",{enumerable:!0,get:function(){return t.SafeAppProvider}})})(Cd)),Cd}var d2=tE();const rE=Y2(d2),sE=Q2({__proto__:null,default:rE},[d2]);export{sE as i}; diff --git a/dist/assets/index-B6jcTw9C.js b/dist/assets/index-B6jcTw9C.js new file mode 100644 index 0000000..5e8a790 --- /dev/null +++ b/dist/assets/index-B6jcTw9C.js @@ -0,0 +1,16 @@ +import{A as ro,u as Ir,v as Pt,I as ao,x as fe,y as ai,z as io,C as so,D as N,F as oo,G as co,J as uo,K as lo,L as fo,e as ot,M as Qt,N as it,O as po,P as Ye,Q as Mn,R as ra,S as hn,V as Ct,W as ye,X as Or,Y as mo,i as ii,B,s as si,Z as ho,$ as oi,a0 as ci,a1 as yo,a2 as ui,a3 as go,a4 as bo,a5 as Oe,a6 as Fe,a7 as wo,b as ct,a8 as di,k as yn,a9 as ke,aa as li,ab as Ln,ac as vo,ad as xo,ae as aa,d as Eo,af as Ao,ag as So,ah as ko,h as He,ai as Po,aj as Co,ak as Io,al as Oo,am as To,an as _o,ao as Bo,ap as Uo,aq as Ro,q as ia,f as rt,j as fi,ar as No,t as ut,as as sa,at as pi,au as oa,av as mi}from"./index-BJmn9h7A.js";import{c as jo,s as Do,d as Mo,g as Lo}from"./index-nibyPLVP.js";function Fo(e,t){if(e.length!==t.length)throw new ro({expectedLength:e.length,givenLength:t.length});const n=[];for(let r=0;r`${s}.${o}`;return{async consume({address:s,chainId:o,client:c}){const u=i({address:s,chainId:o}),p=this.get({address:s,chainId:o,client:c});this.increment({address:s,chainId:o});const d=await p;return await t.set({address:s,chainId:o},d),r.set(u,d),d},async increment({address:s,chainId:o}){const c=i({address:s,chainId:o}),u=n.get(c)??0;n.set(c,u+1)},async get({address:s,chainId:o,client:c}){const u=i({address:s,chainId:o});let p=a.get(u);return p||(p=(async()=>{try{const f=await t.get({address:s,chainId:o,client:c}),l=r.get(u)??0;return l>0&&f<=l?l+1:(r.delete(u),f)}finally{this.reset({address:s,chainId:o})}})(),a.set(u,p)),(n.get(u)??0)+await p},reset({address:s,chainId:o}){const c=i({address:s,chainId:o});n.delete(c),a.delete(c)}}}const Go="0x6492649264926492649264926492649264926492649264926492649264926492";function kn(e){const{address:t,data:n,signature:r,to:a="hex"}=e,i=Ir([ot([{type:"address"},{type:"bytes"},{type:"bytes"}],[t,n,r]),Go]);return a==="hex"?i:Qt(i)}const Ko="0x5792579257925792579257925792579257925792579257925792579257925792",zo=N(0,{size:32});async function Vo(e,t){async function n(p){if(p.endsWith(Ko.slice(2))){const f=Mn(ra(p,-64,-32)),l=ra(p,0,-64).slice(2).match(/.{1,64}/g),h=await Promise.all(l.map(g=>zo.slice(2)!==g?e.request({method:"eth_getTransactionReceipt",params:[`0x${g}`]},{dedupe:!0}):void 0)),m=h.some(g=>g===null)?100:h.every(g=>g?.status==="0x1")?200:h.every(g=>g?.status==="0x0")?500:600;return{atomic:!1,chainId:it(f),receipts:h.filter(Boolean),status:m,version:"2.0.0"}}return e.request({method:"wallet_getCallsStatus",params:[p]})}const{atomic:r=!1,chainId:a,receipts:i,version:s="2.0.0",...o}=await n(t.id),[c,u]=(()=>{const p=o.status;return p>=100&&p<200?["pending",p]:p>=200&&p<300?["success",p]:p>=300&&p<700?["failure",p]:p==="CONFIRMED"?["success",200]:p==="PENDING"?["pending",100]:[void 0,p]})();return{...o,atomic:r,chainId:a?it(a):void 0,receipts:i?.map(p=>({...p,blockNumber:Ye(p.blockNumber),gasUsed:Ye(p.gasUsed),status:po[p.status]}))??[],statusCode:u,status:c,version:s}}async function qo(e,t){const{account:n=e.account,chainId:r,nonce:a}=t;if(!n)throw new hn({docsPath:"/docs/eip7702/prepareAuthorization"});const i=Ct(n),s=(()=>{if(t.executor)return t.executor==="self"?t.executor:Ct(t.executor)})(),o={address:t.contractAddress??t.address,chainId:r,nonce:a};return typeof o.chainId>"u"&&(o.chainId=e.chain?.id??await ye(e,Or,"getChainId")({})),typeof o.nonce>"u"&&(o.nonce=await ye(e,mo,"getTransactionCount")({address:i.address,blockTag:"pending"}),(s==="self"||s?.address&&ii(s.address,i.address))&&(o.nonce+=1)),o}class Zo extends B{constructor(t){super(`Call bundle failed with status: ${t.statusCode}`,{name:"BundleFailedError"}),Object.defineProperty(this,"result",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=t}}async function yi(e,t){const{id:n,pollingInterval:r=e.pollingInterval,status:a=({statusCode:m})=>m===200||m>=300,retryCount:i=4,retryDelay:s=({count:m})=>~~(1<{const g=ci(async()=>{const v=S=>{clearTimeout(l),g(),S(),h()};try{const S=await yo(async()=>{const x=await ye(e,Vo,"getCallsStatus")({id:n});if(c&&x.status==="failure")throw new Zo(x);return x},{retryCount:i,delay:s});if(!a(S))return;v(()=>m.resolve(S))}catch(S){v(()=>m.reject(S))}},{interval:r,emitOnBegin:!0});return g});return l=o?setTimeout(()=>{h(),clearTimeout(l),f(new Wo({id:n}))},o):void 0,await p}class Wo extends B{constructor({id:t}){super(`Timed out while waiting for call bundle with id "${t}" to be confirmed.`,{name:"WaitForCallsStatusTimeoutError"})}}function Jo(e){const{key:t="public",name:n="Public Client"}=e;return ui({...e,key:t,name:n,type:"publicClient"}).extend(go)}function Yo(e){const{r:t,s:n}=bo.Signature.fromCompact(e.slice(2,130)),r=+`0x${e.slice(130)}`,[a,i]=(()=>{if(r===0||r===1)return[void 0,r];if(r===27)return[BigInt(r),0];if(r===28)return[BigInt(r),1];throw new Error("Invalid yParityOrV value")})();return typeof a<"u"?{r:N(t,{size:32}),s:N(n,{size:32}),v:a,yParity:i}:{r:N(t,{size:32}),s:N(n,{size:32}),yParity:i}}const Xo=Oe({id:43114,name:"Avalanche",blockTime:1700,nativeCurrency:{decimals:18,name:"Avalanche",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowTrace",url:"https://snowtrace.io",apiUrl:"https://api.snowtrace.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}}}),vt=1,gi=Oe({...Fe,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...Fe.contracts,disputeGameFactory:{[vt]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[vt]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[vt]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[vt]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:vt});({...gi});const xt=11155111,bi=Oe({...Fe,id:84532,network:"base-sepolia",name:"Base Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://sepolia.basescan.org",apiUrl:"https://api-sepolia.basescan.org/api"}},contracts:{...Fe.contracts,disputeGameFactory:{[xt]:{address:"0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"}},l2OutputOracle:{[xt]:{address:"0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"}},portal:{[xt]:{address:"0x49f53e41452c74589e85ca1677426ba426459e85",blockCreated:4446677}},l1StandardBridge:{[xt]:{address:"0xfd0Bf71F60660E2f608ed56e1659C450eB113120",blockCreated:4446677}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1059647}},testnet:!0,sourceId:xt});({...bi});const Qo=Oe({id:56,name:"BNB Smart Chain",blockTime:750,nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://56.rpc.thirdweb.com"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com",apiUrl:"https://api.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15921452}}}),Et=11155111,$o=Oe({...Fe,id:11155420,name:"OP Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.optimism.io"]}},blockExplorers:{default:{name:"Blockscout",url:"https://optimism-sepolia.blockscout.com",apiUrl:"https://optimism-sepolia.blockscout.com/api"}},contracts:{...Fe.contracts,disputeGameFactory:{[Et]:{address:"0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1"}},l2OutputOracle:{[Et]:{address:"0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1620204},portal:{[Et]:{address:"0x16Fc5058F25648194471939df75CF27A2fdC48BC"}},l1StandardBridge:{[Et]:{address:"0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1"}}},testnet:!0,sourceId:Et}),Ut=1,ec=Oe({...Fe,id:7777777,name:"Zora",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://rpc.zora.energy"],webSocket:["wss://rpc.zora.energy"]}},blockExplorers:{default:{name:"Explorer",url:"https://explorer.zora.energy",apiUrl:"https://explorer.zora.energy/api"}},contracts:{...Fe.contracts,l2OutputOracle:{[Ut]:{address:"0x9E6204F750cD866b299594e2aC9eA824E2e5f95c"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:5882},portal:{[Ut]:{address:"0x1a0ad011913A150f69f6A19DF447A0CfD9551054"}},l1StandardBridge:{[Ut]:{address:"0x3e2Ea9B92B7E48A52296fD261dc26fd995284631"}}},sourceId:Ut}),tc="@base-org/account",nc="2.4.0",wi={name:tc,version:nc},rc="https://keys.coinbase.com/connect",Fn="https://rpc.wallet.coinbase.com",gn=wi.name,wt=wi.version;function vi(e,t){let n;try{n=e()}catch{return}return{getItem:a=>{var i;const s=c=>c===null?null:JSON.parse(c,void 0),o=(i=n.getItem(a))!=null?i:null;return o instanceof Promise?o.then(s):s(o)},setItem:(a,i)=>n.setItem(a,JSON.stringify(i,void 0)),removeItem:a=>n.removeItem(a)}}const Hn=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then(r){return Hn(r)(n)},catch(r){return this}}}catch(n){return{then(r){return this},catch(r){return Hn(r)(n)}}}},ac=(e,t)=>(n,r,a)=>{let i={storage:vi(()=>localStorage),partialize:m=>m,version:0,merge:(m,g)=>({...g,...m}),...t},s=!1;const o=new Set,c=new Set;let u=i.storage;if(!u)return e((...m)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...m)},r,a);const p=()=>{const m=i.partialize({...r()});return u.setItem(i.name,{state:m,version:i.version})},d=a.setState;a.setState=(m,g)=>{d(m,g),p()};const f=e((...m)=>{n(...m),p()},r,a);a.getInitialState=()=>f;let l;const h=()=>{var m,g;if(!u)return;s=!1,o.forEach(S=>{var x;return S((x=r())!=null?x:f)});const v=((g=i.onRehydrateStorage)==null?void 0:g.call(i,(m=r())!=null?m:f))||void 0;return Hn(u.getItem.bind(u))(i.name).then(S=>{if(S)if(typeof S.version=="number"&&S.version!==i.version){if(i.migrate){const x=i.migrate(S.state,S.version);return x instanceof Promise?x.then(D=>[!0,D]):[!0,x]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,S.state];return[!1,void 0]}).then(S=>{var x;const[D,z]=S;if(l=i.merge(z,(x=r())!=null?x:f),n(l,!0),D)return p()}).then(()=>{v?.(l,void 0),l=r(),s=!0,c.forEach(S=>S(l))}).catch(S=>{v?.(void 0,S)})};return a.persist={setOptions:m=>{i={...i,...m},m.storage&&(u=m.storage)},clearStorage:()=>{u?.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>h(),hasHydrated:()=>s,onHydrate:m=>(o.add(m),()=>{o.delete(m)}),onFinishHydration:m=>(c.add(m),()=>{c.delete(m)})},i.skipHydration||h(),l||f},ic=ac,ca=e=>{let t;const n=new Set,r=(u,p)=>{const d=typeof u=="function"?u(t):u;if(!Object.is(d,t)){const f=t;t=p??(typeof d!="object"||d===null)?d:Object.assign({},t,d),n.forEach(l=>l(t,f))}},a=()=>t,o={setState:r,getState:a,getInitialState:()=>c,subscribe:u=>(n.add(u),()=>n.delete(u))},c=t=e(r,a,o);return o},Tr=e=>e?ca(e):ca,sc=()=>({chains:[]}),oc=()=>({keys:{}}),cc=()=>({account:{}}),uc=()=>({subAccount:void 0}),dc=()=>({subAccountConfig:{}}),lc=()=>({spendPermissions:[]}),fc=()=>({config:{version:wt}}),ee=Tr(ic((...e)=>({...sc(...e),...oc(...e),...cc(...e),...uc(...e),...lc(...e),...fc(...e),...dc(...e)}),{name:"base-acc-sdk.store",storage:vi(()=>localStorage),partialize:e=>({chains:e.chains,keys:e.keys,account:e.account,subAccount:e.subAccount,spendPermissions:e.spendPermissions,config:e.config})})),pc={get:()=>ee.getState().subAccountConfig,set:e=>{ee.setState(t=>({subAccountConfig:{...t.subAccountConfig,...e}}))},clear:()=>{ee.setState({subAccountConfig:{}})}},mc={get:()=>ee.getState().subAccount,set:e=>{ee.setState(t=>({subAccount:t.subAccount?{...t.subAccount,...e}:{address:e.address,...e}}))},clear:()=>{ee.setState({subAccount:void 0})}},_r={get:()=>ee.getState().spendPermissions,set:e=>{ee.setState({spendPermissions:e})},clear:()=>{ee.setState({spendPermissions:[]})}},hc={get:()=>ee.getState().account,set:e=>{ee.setState(t=>({account:{...t.account,...e}}))},clear:()=>{ee.setState({account:{}})}},yc={get:()=>ee.getState().chains,set:e=>{ee.setState({chains:e})},clear:()=>{ee.setState({chains:[]})}},gc={get:e=>ee.getState().keys[e],set:(e,t)=>{ee.setState(n=>({keys:{...n.keys,[e]:t}}))},clear:()=>{ee.setState({keys:{}})}},xi={get:()=>ee.getState().config,set:e=>{ee.setState(t=>({config:{...t.config,...e}}))}},bc={subAccounts:mc,subAccountsConfig:pc,spendPermissions:_r,account:hc,chains:yc,keys:gc,config:xi},E={...ee,...bc},wc='!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ClientAnalytics=t():e.ClientAnalytics=t()}(this,(function(){return(()=>{var e={792:e=>{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\\/]/gi,"");for(var n=[],r=0,i=0;r>>6-2*i);return n}},e.exports=n},335:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},762:(e,t,n)=>{var r,i,a,o,s;r=n(562),i=n(792).utf8,a=n(335),o=n(792).bin,(s=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?o.stringToBytes(e):i.stringToBytes(e):a(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var n=r.bytesToWords(e),c=8*e.length,u=1732584193,l=-271733879,d=-1732584194,p=271733878,m=0;m>>24)|4278255360&(n[m]<<24|n[m]>>>8);n[c>>>5]|=128<>>9<<4)]=c;var f=s._ff,v=s._gg,g=s._hh,b=s._ii;for(m=0;m>>0,l=l+w>>>0,d=d+y>>>0,p=p+T>>>0}return r.endian([u,l,d,p])})._ff=function(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+(i>>>0)+o;return(s<>>32-a)+t},s._gg=function(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+(i>>>0)+o;return(s<>>32-a)+t},s._hh=function(e,t,n,r,i,a,o){var s=e+(t^n^r)+(i>>>0)+o;return(s<>>32-a)+t},s._ii=function(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+(i>>>0)+o;return(s<>>32-a)+t},s._blocksize=16,s._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var n=r.wordsToBytes(s(e,t));return t&&t.asBytes?n:t&&t.asString?o.bytesToString(n):r.bytesToHex(n)}},2:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Perfume:()=>ze,incrementUjNavigation:()=>Le,markStep:()=>Re,markStepOnce:()=>qe});var r,i,a={isResourceTiming:!1,isElementTiming:!1,maxTime:3e4,reportOptions:{},enableNavigationTracking:!0},o=window,s=o.console,c=o.navigator,u=o.performance,l=function(){return c.deviceMemory},d=function(){return c.hardwareConcurrency},p="mark.",m=function(){return u&&!!u.getEntriesByType&&!!u.now&&!!u.mark},f="4g",v=!1,g={},b={value:0},h={value:{beacon:0,css:0,fetch:0,img:0,other:0,script:0,total:0,xmlhttprequest:0}},w={value:0},y={value:0},T={},k={isHidden:!1,didChange:!1},_=function(){k.isHidden=!1,document.hidden&&(k.isHidden=document.hidden,k.didChange=!0)},S=function(e,t){try{var n=new PerformanceObserver((function(e){t(e.getEntries())}));return n.observe({type:e,buffered:!0}),n}catch(e){s.warn("Perfume.js:",e)}return null},E=function(){return!!(d()&&d()<=4)||!!(l()&&l()<=4)},x=function(e,t){switch(e){case"slow-2g":case"2g":case"3g":return!0;default:return E()||t}},O=function(e){return parseFloat(e.toFixed(4))},j=function(e){return"number"!=typeof e?null:O(e/Math.pow(1024,2))},N=function(e,t,n,r,i){var s,u=function(){a.analyticsTracker&&(k.isHidden&&!["CLS","INP"].includes(e)||a.analyticsTracker({attribution:r,metricName:e,data:t,navigatorInformation:c?{deviceMemory:l()||0,hardwareConcurrency:d()||0,serviceWorkerStatus:"serviceWorker"in c?c.serviceWorker.controller?"controlled":"supported":"unsupported",isLowEndDevice:E(),isLowEndExperience:x(f,v)}:{},rating:n,navigationType:i}))};["CLS","INP"].includes(e)?u():(s=u,"requestIdleCallback"in o?o.requestIdleCallback(s,{timeout:3e3}):s())},I=function(e){e.forEach((function(e){if(!("self"!==e.name||e.startTime0&&(w.value+=t,y.value+=t)}}))};!function(e){e.instant="instant",e.quick="quick",e.moderate="moderate",e.slow="slow",e.unavoidable="unavoidable"}(r||(r={}));var P,M,B,C,D,A=((i={})[r.instant]={vitalsThresholds:[100,200],maxOutlierThreshold:1e4},i[r.quick]={vitalsThresholds:[200,500],maxOutlierThreshold:1e4},i[r.moderate]={vitalsThresholds:[500,1e3],maxOutlierThreshold:1e4},i[r.slow]={vitalsThresholds:[1e3,2e3],maxOutlierThreshold:1e4},i[r.unavoidable]={vitalsThresholds:[2e3,5e3],maxOutlierThreshold:2e4},i),L={RT:[100,200],TBT:[200,600],NTBT:[200,600]},U=function(e,t){return L[e]?t<=L[e][0]?"good":t<=L[e][1]?"needsImprovement":"poor":null},R=function(e,t,n){Object.keys(t).forEach((function(e){"number"==typeof t[e]&&(t[e]=O(t[e]))})),N(e,t,null,n||{})},q=function(e){var t=e.attribution,n=e.name,r=e.rating,i=e.value,o=e.navigationType;"FCP"===n&&(b.value=i),["FCP","LCP"].includes(n)&&!T[0]&&(T[0]=S("longtask",I)),"FID"===n&&setTimeout((function(){k.didChange||(q({attribution:t,name:"TBT",rating:U("TBT",w.value),value:w.value,navigationType:o}),R("dataConsumption",h.value))}),1e4);var s=O(i);s<=a.maxTime&&s>=0&&N(n,s,r,t,o)},F=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]},z=function(e){if("loading"===document.readyState)return"loading";var t=F();if(t){if(e(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},Q=-1,W=function(){return Q},H=function(e){addEventListener("pageshow",(function(t){t.persisted&&(Q=t.timeStamp,e(t))}),!0)},V=function(){var e=F();return e&&e.activationStart||0},J=function(e,t){var n=F(),r="navigate";return W()>=0?r="back-forward-cache":n&&(r=document.prerendering||V()>0?"prerender":document.wasDiscarded?"restore":n.type.replace(/_/g,"-")),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v3-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},X=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},G=function(e,t){var n=function n(r){"pagehide"!==r.type&&"hidden"!==document.visibilityState||(e(r),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},Z=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},Y=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},ee=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},te=-1,ne=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},re=function(e){"hidden"===document.visibilityState&&te>-1&&(te="visibilitychange"===e.type?e.timeStamp:0,ae())},ie=function(){addEventListener("visibilitychange",re,!0),addEventListener("prerenderingchange",re,!0)},ae=function(){removeEventListener("visibilitychange",re,!0),removeEventListener("prerenderingchange",re,!0)},oe=function(){return te<0&&(te=ne(),ie(),H((function(){setTimeout((function(){te=ne(),ie()}),0)}))),{get firstHiddenTime(){return te}}},se=function(e,t){t=t||{},ee((function(){var n,r=[1800,3e3],i=oe(),a=J("FCP"),o=X("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(o.disconnect(),e.startTime=0&&M1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){le(e,t),i()},r=function(){i()},i=function(){removeEventListener("pointerup",n,ce),removeEventListener("pointercancel",r,ce)};addEventListener("pointerup",n,ce),addEventListener("pointercancel",r,ce)}(t,e):le(t,e)}},me=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,pe,ce)}))},fe=0,ve=1/0,ge=0,be=function(e){e.forEach((function(e){e.interactionId&&(ve=Math.min(ve,e.interactionId),ge=Math.max(ge,e.interactionId),fe=ge?(ge-ve)/7+1:0)}))},he=function(){return D?fe:performance.interactionCount||0},we=0,ye=function(){return he()-we},Te=[],ke={},_e=function(e){var t=Te[Te.length-1],n=ke[e.interactionId];if(n||Te.length<10||e.duration>t.latency){if(n)n.entries.push(e),n.latency=Math.max(n.latency,e.duration);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};ke[r.id]=r,Te.push(r)}Te.sort((function(e,t){return t.latency-e.latency})),Te.splice(10).forEach((function(e){delete ke[e.id]}))}},Se={},Ee=function e(t){document.prerendering?ee((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},xe=function(e,t){t=t||{};var n=[800,1800],r=J("TTFB"),i=Z(e,r,n,t.reportAllChanges);Ee((function(){var a=F();if(a){var o=a.responseStart;if(o<=0||o>performance.now())return;r.value=Math.max(o-V(),0),r.entries=[a],i(!0),H((function(){r=J("TTFB",0),(i=Z(e,r,n,t.reportAllChanges))(!0)}))}}))},Oe=function(e){e.forEach((function(e){e.identifier&&q({attribution:{identifier:e.identifier},name:"ET",rating:null,value:e.startTime})}))},je=function(e){e.forEach((function(e){if(a.isResourceTiming&&R("resourceTiming",e),e.decodedBodySize&&e.initiatorType){var t=e.decodedBodySize/1e3;h.value[e.initiatorType]+=t,h.value.total+=t}}))},Ne=function(){!function(e,t){xe((function(e){!function(e){if(e.entries.length){var t=e.entries[0],n=t.activationStart||0,r=Math.max(t.domainLookupStart-n,0),i=Math.max(t.connectStart-n,0),a=Math.max(t.requestStart-n,0);e.attribution={waitingTime:r,dnsTime:i-r,connectionTime:a-i,requestTime:e.value-a,navigationEntry:t}}else e.attribution={waitingTime:0,dnsTime:0,connectionTime:0,requestTime:0}}(e),function(e){e.value>0&&q(e)}(e)}),t)}(0,a.reportOptions.ttfb),function(e,t){!function(e,t){t=t||{},ee((function(){var e,n=[.1,.25],r=J("CLS"),i=-1,a=0,o=[],s=function(e){i>-1&&function(e){!function(e){if(e.entries.length){var t=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(t&&t.sources&&t.sources.length){var n=(r=t.sources).find((function(e){return e.node&&1===e.node.nodeType}))||r[0];if(n)return void(e.attribution={largestShiftTarget:$(n.node),largestShiftTime:t.startTime,largestShiftValue:t.value,largestShiftSource:n,largestShiftEntry:t,loadState:z(t.startTime)})}}var r;e.attribution={}}(e),function(e){q(e)}(e)}(e)},c=function(t){t.forEach((function(t){if(!t.hadRecentInput){var n=o[0],i=o[o.length-1];a&&t.startTime-i.startTime<1e3&&t.startTime-n.startTime<5e3?(a+=t.value,o.push(t)):(a=t.value,o=[t]),a>r.value&&(r.value=a,r.entries=o,e())}}))},u=X("layout-shift",c);u&&(e=Z(s,r,n,t.reportAllChanges),se((function(t){i=t.value,r.value<0&&(r.value=0,e())})),G((function(){c(u.takeRecords()),e(!0)})),H((function(){a=0,i=-1,r=J("CLS",0),e=Z(s,r,n,t.reportAllChanges),Y((function(){return e()}))})))}))}(0,t)}(0,a.reportOptions.cls),function(e,t){se((function(e){!function(e){if(e.entries.length){var t=F(),n=e.entries[e.entries.length-1];if(t){var r=t.activationStart||0,i=Math.max(0,t.responseStart-r);return void(e.attribution={timeToFirstByte:i,firstByteToFCP:e.value-i,loadState:z(e.entries[0].startTime),navigationEntry:t,fcpEntry:n})}}e.attribution={timeToFirstByte:0,firstByteToFCP:e.value,loadState:z(W())}}(e),function(e){q(e)}(e)}),t)}(0,a.reportOptions.fcp),function(e,t){!function(e,t){t=t||{},ee((function(){var n,r=[100,300],i=oe(),a=J("FID"),o=function(e){e.startTime0&&(i.value=0,i.entries=[]),r(!0)})),H((function(){Te=[],we=he(),i=J("INP"),r=Z(e,i,n,t.reportAllChanges)})))}))}((function(t){!function(e){if(e.entries.length){var t=e.entries.sort((function(e,t){return t.duration-e.duration||t.processingEnd-t.processingStart-(e.processingEnd-e.processingStart)}))[0];e.attribution={eventTarget:$(t.target),eventType:t.name,eventTime:t.startTime,eventEntry:t,loadState:z(t.startTime)}}else e.attribution={}}(t),e(t)}),t)}((function(e){return q(e)}),a.reportOptions.inp),a.isResourceTiming&&S("resource",je),a.isElementTiming&&S("element",Oe)},Ie=function(e){var t="usageDetails"in e?e.usageDetails:{};R("storageEstimate",{quota:j(e.quota),usage:j(e.usage),caches:j(t.caches),indexedDB:j(t.indexedDB),serviceWorker:j(t.serviceWorkerRegistrations)})},Pe={finalMarkToStepsMap:{},startMarkToStepsMap:{},active:{},navigationSteps:{}},Me=function(e){delete Pe.active[e]},Be=function(){return Pe.navigationSteps},Ce=function(e){var t;return null!==(t=Be()[e])&&void 0!==t?t:{}},De=function(e,t,n){var r="step."+e,i=u.getEntriesByName(p+t).length>0;if(u.getEntriesByName(p+n).length>0&&a.steps){var o=A[a.steps[e].threshold],s=o.maxOutlierThreshold,c=o.vitalsThresholds;if(i){var l=u.measure(r,p+t,p+n),d=l.duration;if(d<=s){var m=function(e,t){return e<=t[0]?"good":e<=t[1]?"needsImprovement":"poor"}(d,c);d>=0&&(N("userJourneyStep",d,m,{stepName:e},void 0),u.measure("step.".concat(e,"_vitals_").concat(m),{start:l.startTime+l.duration,end:l.startTime+l.duration,detail:{type:"stepVital",duration:d}}))}}}},Ae=function(){var e=Be(),t=Pe.startMarkToStepsMap,n=Object.keys(e).length;if(0===n)return{};var r={},i=n-1,a=Ce(i);if(Object.keys(a).forEach((function(e){var n,i=null!==(n=t[e])&&void 0!==n?n:[];Object.keys(i).forEach((function(e){r[e]=!0}))})),n>1){var o=Ce(i-1);Object.keys(o).forEach((function(e){var n,i=null!==(n=t[e])&&void 0!==n?n:[];Object.keys(i).forEach((function(e){r[e]=!0}))}))}return r},Le=function(){var e,t=Object.keys(Pe.navigationSteps).length;Pe.navigationSteps[t]={};var n=Ae();null===(e=a.onMarkStep)||void 0===e||e.call(a,"",Object.keys(n))},Ue=function(e){var t,n,r,i,o,s,c;if(Pe.finalMarkToStepsMap[e]){!function(e){var t=Pe.navigationSteps,n=Pe.finalMarkToStepsMap,r=Object.keys(t).length;if(0!==r){var i=r-1,a=Ce(i);if(a&&n[e]){var o=n[e];o&&Object.keys(o).forEach((function(e){if(a[e]){var n=Ce(i)||{};n[e]=!1,t[i]=n}if(r>1){var o=i-1,s=Ce(o);s[e]&&(s[e]=!1,t[o]=s)}}))}}}(e);var u=Pe.finalMarkToStepsMap[e];Object.keys(u).forEach((function(t){var n=u[t];n.forEach(Me),Promise.all(n.map((function(n){return function(e,t,n,r){return new(n||(n=Promise))((function(e,t){function i(e){try{o(r.next(e))}catch(e){t(e)}}function a(e){try{o(r.throw(e))}catch(e){t(e)}}function o(t){var r;t.done?e(t.value):(r=t.value,r instanceof n?r:new n((function(e){e(r)}))).then(i,a)}o((r=r.apply(undefined,[])).next())}))}(0,0,void 0,(function(){return function(e,t){var n,r,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]0?o:1)-1)||[])[r]=!0,i[s]=c,function(e){var t,n=null!==(t=Pe.startMarkToStepsMap[e])&&void 0!==t?t:[];Object.keys(n).forEach((function(e){Pe.active[e]||(Pe.active[e]=!0)}))}(e);if(a.enableNavigationTracking){var l=Ae();null===(t=a.onMarkStep)||void 0===t||t.call(a,e,Object.keys(l))}else null===(n=a.onMarkStep)||void 0===n||n.call(a,e,Object.keys(Pe.active))},Re=function(e){u.mark(p+e),Ue(e)},qe=function(e){0===u.getEntriesByName(p+e).length&&(u.mark(p+e),Ue(e))},Fe=0,ze=function(){function e(e){if(void 0===e&&(e={}),this.v="9.0.0-rc.3",a.analyticsTracker=e.analyticsTracker,a.isResourceTiming=!!e.resourceTiming,a.isElementTiming=!!e.elementTiming,a.maxTime=e.maxMeasureTime||a.maxTime,a.reportOptions=e.reportOptions||a.reportOptions,a.steps=e.steps,a.onMarkStep=e.onMarkStep,a.enableNavigationTracking=e.enableNavigationTracking,m()){"PerformanceObserver"in o&&Ne(),void 0!==document.hidden&&document.addEventListener("visibilitychange",_);var t=function(){if(!m())return{};var e=u.getEntriesByType("navigation")[0];if(!e)return{};var t=e.responseStart,n=e.responseEnd;return{fetchTime:n-e.fetchStart,workerTime:e.workerStart>0?n-e.workerStart:0,totalTime:n-e.requestStart,downloadTime:n-t,timeToFirstByte:t-e.requestStart,headerSize:e.transferSize-e.encodedBodySize||0,dnsLookupTime:e.domainLookupEnd-e.domainLookupStart,redirectTime:e.redirectEnd-e.redirectStart}}();R("navigationTiming",t),t.redirectTime&&q({attribution:{},name:"RT",rating:U("RT",t.redirectTime),value:t.redirectTime}),R("networkInformation",function(){if("connection"in c){var e=c.connection;return"object"!=typeof e?{}:(f=e.effectiveType,v=!!e.saveData,{downlink:e.downlink,effectiveType:e.effectiveType,rtt:e.rtt,saveData:!!e.saveData})}return{}}()),c&&c.storage&&"function"==typeof c.storage.estimate&&c.storage.estimate().then(Ie),a.steps&&a.steps&&(Pe.startMarkToStepsMap={},Pe.finalMarkToStepsMap={},Pe.active={},Pe.navigationSteps={},Object.entries(a.steps).forEach((function(e){var t,n,r=e[0],i=e[1].marks,a=i[0],o=i[1],s=null!==(n=Pe.startMarkToStepsMap[a])&&void 0!==n?n:{};if(s[r]=!0,Pe.startMarkToStepsMap[a]=s,Pe.finalMarkToStepsMap[o]){var c=Pe.finalMarkToStepsMap[o][a]||[];c.push(r),Pe.finalMarkToStepsMap[o][a]=c}else Pe.finalMarkToStepsMap[o]=((t={})[a]=[r],t)})))}}return e.prototype.start=function(e){m()&&!g[e]&&(g[e]=!0,u.mark("mark_".concat(e,"_start")))},e.prototype.end=function(e,t,n){if(void 0===t&&(t={}),void 0===n&&(n=!0),m()&&g[e]){u.mark("mark_".concat(e,"_end")),delete g[e];var r=function(e){u.measure(e,"mark_".concat(e,"_start"),"mark_".concat(e,"_end"));var t=u.getEntriesByName(e).pop();return t&&"measure"===t.entryType?t.duration:-1}(e);n&&R(e,O(r),t)}},e.prototype.endPaint=function(e,t){var n=this;setTimeout((function(){n.end(e,t)}))},e.prototype.clear=function(e){delete g[e],u.clearMarks&&(u.clearMarks("mark_".concat(e,"_start")),u.clearMarks("mark_".concat(e,"_end")))},e.prototype.markNTBT=function(){var e=this;this.start("ntbt"),y.value=0,clearTimeout(Fe),Fe=setTimeout((function(){e.end("ntbt",{},!1),q({attribution:{},name:"NTBT",rating:U("NTBT",y.value),value:y.value}),y.value=0}),2e3)},e}()},426:(e,t)=>{"use strict";Symbol.for("react.element"),Symbol.for("react.portal"),Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.iterator;var n={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},r=Object.assign,i={};function a(e,t,r){this.props=e,this.context=t,this.refs=i,this.updater=r||n}function o(){}function s(e,t,r){this.props=e,this.context=t,this.refs=i,this.updater=r||n}a.prototype.isReactComponent={},a.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)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")},a.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},o.prototype=a.prototype;var c=s.prototype=new o;c.constructor=s,r(c,a.prototype),c.isPureReactComponent=!0;Array.isArray,Object.prototype.hasOwnProperty;var u={current:null};t.useCallback=function(e,t){return u.current.useCallback(e,t)},t.useEffect=function(e,t){return u.current.useEffect(e,t)},t.useRef=function(e){return u.current.useRef(e)}},784:(e,t,n)=>{"use strict";e.exports=n(426)},353:function(e,t,n){var r;!function(i,a){"use strict";var o="function",s="undefined",c="object",u="string",l="major",d="model",p="name",m="type",f="vendor",v="version",g="architecture",b="console",h="mobile",w="tablet",y="smarttv",T="wearable",k="embedded",_="Amazon",S="Apple",E="ASUS",x="BlackBerry",O="Browser",j="Chrome",N="Firefox",I="Google",P="Huawei",M="LG",B="Microsoft",C="Motorola",D="Opera",A="Samsung",L="Sharp",U="Sony",R="Xiaomi",q="Zebra",F="Facebook",z="Chromium OS",K="Mac OS",$=function(e){for(var t={},n=0;n0?2===s.length?typeof s[1]==o?this[s[0]]=s[1].call(this,l):this[s[0]]=s[1]:3===s.length?typeof s[1]!==o||s[1].exec&&s[1].test?this[s[0]]=l?l.replace(s[1],s[2]):a:this[s[0]]=l?s[1].call(this,l,s[2]):a:4===s.length&&(this[s[0]]=l?s[3].call(this,l.replace(s[1],s[2])):a):this[s]=l||a;d+=2}},J=function(e,t){for(var n in t)if(typeof t[n]===c&&t[n].length>0){for(var r=0;r2&&(e[d]="iPad",e[m]=w),e},this.getEngine=function(){var e={};return e[p]=a,e[v]=a,V.call(e,r,y.engine),e},this.getOS=function(){var e={};return e[p]=a,e[v]=a,V.call(e,r,y.os),T&&!e[p]&&b&&"Unknown"!=b.platform&&(e[p]=b.platform.replace(/chrome os/i,z).replace(/macos/i,K)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(e){return r=typeof e===u&&e.length>350?H(e,350):e,this},this.setUA(r),this};Z.VERSION="1.0.35",Z.BROWSER=$([p,v,l]),Z.CPU=$([g]),Z.DEVICE=$([d,f,m,b,h,y,w,T,k]),Z.ENGINE=Z.OS=$([p,v]),typeof t!==s?(e.exports&&(t=e.exports=Z),t.UAParser=Z):n.amdO?(r=function(){return Z}.call(t,n,t,e))===a||(e.exports=r):typeof i!==s&&(i.UAParser=Z);var Y=typeof i!==s&&(i.jQuery||i.Zepto);if(Y&&!Y.ua){var ee=new Z;Y.ua=ee.getResult(),Y.ua.get=function(){return ee.getUA()},Y.ua.set=function(e){ee.setUA(e);var t=ee.getResult();for(var n in t)Y.ua[n]=t[n]}}}("object"==typeof window?window:this)}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.amdO={},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{ActionType:()=>f,AmplitudePlatformName:()=>g,AnalyticsEventImportance:()=>l,AnalyticsQueries:()=>e,AuthStatus:()=>b,ComponentType:()=>m,IThresholdTier:()=>Jt,MetricType:()=>d,PlatformName:()=>v,SessionActions:()=>h,SessionAutomatedEvents:()=>w,SessionRank:()=>y,SubjectType:()=>p,UserTypeCommerce:()=>c,UserTypeInsto:()=>i,UserTypeRetail:()=>t,UserTypeRetailBusinessBanking:()=>s,UserTypeRetailEmployeeInternal:()=>a,UserTypeRetailEmployeePersonal:()=>o,UserTypeWallet:()=>u,automatedEvents:()=>xn,automatedMappingConfig:()=>In,clearMarkEntry:()=>Vn,clearPerformanceMarkEntries:()=>Xn,config:()=>A,createEventConfig:()=>On,createNewSpan:()=>Ln,createNewTrace:()=>Un,device:()=>W,endPerfMark:()=>Jn,exposeExperiment:()=>wn,flushQueue:()=>or,generateUUID:()=>V,getAnalyticsHeaders:()=>sr,getReferrerData:()=>le,getTracingHeaders:()=>An,getTracingId:()=>Dn,getUrlHostname:()=>pe,getUrlParams:()=>me,getUrlPathname:()=>fe,getUserContext:()=>ar,identify:()=>Tn,identifyFlow:()=>xe,identity:()=>H,identityFlow:()=>Se,incrementUjNavigation:()=>an,init:()=>yn,initNextJsTrackPageview:()=>_n,initTrackPageview:()=>kn,isEventKeyFormatValid:()=>we,isSessionEnded:()=>pt,location:()=>re,logEvent:()=>$t,logMetric:()=>Ht,logPageView:()=>on,logTrace:()=>Rn,markNTBT:()=>tn,markStep:()=>nn,markStepOnce:()=>rn,onVisibilityChange:()=>ln,optIn:()=>En,optOut:()=>Sn,perfMark:()=>Wn,persistentData:()=>oe,postMessage:()=>K,recordSessionDuration:()=>pn,removeFromIdentifyFlow:()=>Ee,savePersistentData:()=>st,sendScheduledEvents:()=>Bt,setBreadcrumbs:()=>ie,setConfig:()=>U,setLocation:()=>ae,setPagePath:()=>ve,setPageview:()=>Kt,setPersistentData:()=>se,setSessionStart:()=>dt,setTime:()=>Ue,startPerfMark:()=>Hn,timeStone:()=>Le,useEventLogger:()=>Yn,useLogEventOnMount:()=>tr,usePerformanceMarks:()=>rr});let e=function(e){return e.fbclid="fbclid",e.gclid="gclid",e.msclkid="msclkid",e.ptclid="ptclid",e.ttclid="ttclid",e.utm_source="utm_source",e.utm_medium="utm_medium",e.utm_campaign="utm_campaign",e.utm_term="utm_term",e.utm_content="utm_content",e}({});const t=0,i=1,a=2,o=3,s=4,c=5,u=6;let l=function(e){return e.low="low",e.high="high",e}({}),d=function(e){return e.count="count",e.rate="rate",e.gauge="gauge",e.distribution="distribution",e.histogram="histogram",e}({}),p=function(e){return e.commerce_merchant="commerce_merchant",e.device="device",e.edp_fingerprint_id="edp_fingerprint_id",e.nft_user="nft_user",e.user="user",e.wallet_user="wallet_user",e.uuid="user_uuid",e}({}),m=function(e){return e.unknown="unknown",e.banner="banner",e.button="button",e.card="card",e.chart="chart",e.content_script="content_script",e.dropdown="dropdown",e.link="link",e.page="page",e.modal="modal",e.table="table",e.search_bar="search_bar",e.service_worker="service_worker",e.text="text",e.text_input="text_input",e.tray="tray",e.checkbox="checkbox",e.icon="icon",e}({}),f=function(e){return e.unknown="unknown",e.blur="blur",e.click="click",e.change="change",e.dismiss="dismiss",e.focus="focus",e.hover="hover",e.select="select",e.measurement="measurement",e.move="move",e.process="process",e.render="render",e.scroll="scroll",e.view="view",e.search="search",e.keyPress="keyPress",e}({}),v=function(e){return e.unknown="unknown",e.web="web",e.android="android",e.ios="ios",e.mobile_web="mobile_web",e.tablet_web="tablet_web",e.server="server",e.windows="windows",e.macos="macos",e.extension="extension",e}({}),g=function(e){return e.web="Web",e.ios="iOS",e.android="Android",e}({}),b=function(e){return e[e.notLoggedIn=0]="notLoggedIn",e[e.loggedIn=1]="loggedIn",e}({}),h=function(e){return e.ac="ac",e.af="af",e.ah="ah",e.al="al",e.am="am",e.ar="ar",e.as="as",e}({}),w=function(e){return e.pv="pv",e}({}),y=function(e){return e.xs="xs",e.s="s",e.m="m",e.l="l",e.xl="xl",e.xxl="xxl",e}({});const T="https://analytics-service-dev.cbhq.net",k=3e5,_=5e3,S="analytics-db",E="experiment-exposure-db",x="Analytics SDK:",O=Object.values(e),j="pageview",N="session_duration",I={navigationTiming:{eventName:"perf_navigation_timing"},redirectTime:{eventName:"perf_redirect_time"},RT:{eventName:"perf_redirect_time"},TTFB:{eventName:"perf_time_to_first_byte"},networkInformation:{eventName:"perf_network_information"},storageEstimate:{eventName:"perf_storage_estimate"},FCP:{eventName:"perf_first_contentful_paint"},FID:{eventName:"perf_first_input_delay"},LCP:{eventName:"perf_largest_contentful_paint"},CLS:{eventName:"perf_cumulative_layout_shift"},TBT:{eventName:"perf_total_blocking_time"},NTBT:{eventName:"perf_navigation_total_blocking_time"},INP:{eventName:"perf_interact_to_next_paint"},ET:{eventName:"perf_element_timing"},userJourneyStep:{eventName:"perf_user_journey_step"}},P="1",M="web";function B(){return B=Object.assign?Object.assign.bind():function(e){for(var t=1;t{console.error(x,e,t)},platform:v.unknown,projectName:"",ricTimeoutScheduleEvent:1e3,ricTimeoutSetDevice:500,showDebugLogging:!1,trackUserId:!1,version:null,apiEndpoint:T},D(T),{steps:{}}),L=[].reduce(((e,t)=>n=>e(t(n))),(e=>{if(!e.isProd)return e.isInternalApplication?(e.apiEndpoint="https://analytics-service-internal-dev.cbhq.net",B({},e,D(e.apiEndpoint))):e;const t=(e=>e.apiEndpoint?C.test(e.apiEndpoint)?e.apiEndpoint:`https://${e.apiEndpoint}`:e.isInternalApplication?"https://analytics-service-internal.cbhq.net":"https://as.coinbase.com")(e);return B({},e,{apiEndpoint:t},D(t))})),U=e=>{const{batchEventsThreshold:t,batchMetricsThreshold:n,batchTracesThreshold:r}=e,i=[t,n,r];for(const e of i)if((e||0)>30){console.warn("You are setting the threshhold for the batch limit to be greater than 30. This may cause request overload.");break}Object.assign(A,L(e))},R=[v.web,v.mobile_web,v.tablet_web];function q(){return"android"===A.platform}function F(){return"ios"===A.platform}function z(){return R.includes(A.platform)}function K(e){if(z()&&navigator&&"serviceWorker"in navigator&&navigator.serviceWorker.controller)try{navigator.serviceWorker.controller.postMessage(e)}catch(e){e instanceof Error&&A.onError(e)}}var $=n(353),Q=n.n($);const W={amplitudeOSName:null,amplitudeOSVersion:null,amplitudeDeviceModel:null,amplitudePlatform:null,browserName:null,browserMajor:null,osName:null,userAgent:null,width:null,height:null},H={countryCode:null,deviceId:null,device_os:null,isOptOut:!1,languageCode:null,locale:null,jwt:null,session_lcc_id:null,userAgent:null,userId:null},V=e=>e?(e^16*Math.random()>>e/4).toString(16):"10000000-1000-4000-8000-100000000000".replace(/[018]/g,V),J=()=>A.isAlwaysAuthed||!!H.userId,X=()=>{const e={};return H.countryCode&&(e.country_code=H.countryCode),e},G=()=>{const{platform:e}=A;if(e===v.web)switch(!0){case window.matchMedia("(max-width: 560px)").matches:return v.mobile_web;case window.matchMedia("(max-width: 1024px, min-width: 561px)").matches:return v.tablet_web}return e},Z=()=>{var e,t,n,r,i;z()?("requestIdleCallback"in window?window.requestIdleCallback(ne,{timeout:A.ricTimeoutSetDevice}):ne(),W.amplitudePlatform=g.web,W.userAgent=(null==(e=window)||null==(e=e.navigator)?void 0:e.userAgent)||null,ee({height:null!=(t=null==(n=window)?void 0:n.innerHeight)?t:null,width:null!=(r=null==(i=window)?void 0:i.innerWidth)?r:null})):F()?(W.amplitudePlatform=g.ios,W.userAgent=H.userAgent,W.userAgent&&ne()):q()&&(W.userAgent=H.userAgent,W.amplitudePlatform=g.android,W.userAgent&&ne())},Y=e=>{Object.assign(H,e),z()&&K({identity:{isAuthed:!!H.userId,locale:H.locale||null}})},ee=e=>{W.height=e.height,W.width=e.width},te=()=>{U({platform:G()}),z()&&K({config:{platform:A.platform}})},ne=()=>{var e;performance.mark&&performance.mark("ua_parser_start");const t=new(Q())(null!=(e=W.userAgent)?e:"").getResult();W.browserName=t.browser.name||null,W.browserMajor=t.browser.major||null,W.osName=t.os.name||null,W.amplitudeOSName=W.browserName,W.amplitudeOSVersion=W.browserMajor,W.amplitudeDeviceModel=W.osName,K({device:{browserName:W.browserName,osName:W.osName}}),performance.mark&&(performance.mark("ua_parser_end"),performance.measure("ua_parser","ua_parser_start","ua_parser_end"))},re={breadcrumbs:[],initialUAAData:{},pageKey:"",pageKeyRegex:{},pagePath:"",prevPageKey:"",prevPagePath:""};function ie(e){Object.assign(re,{breadcrumbs:e})}function ae(e){Object.assign(re,e)}const oe={eventId:0,sequenceNumber:0,sessionId:0,lastEventTime:0,sessionStart:0,sessionUUID:null,userId:null,ac:0,af:0,ah:0,al:0,am:0,ar:0,as:0,pv:0};function se(e){Object.assign(oe,e)}function ce(){var e,t;return null!=(e=null==(t=document)?void 0:t.referrer)?e:""}function ue(){return ue=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const e=ce();if(!e)return{};const t=new URL(e);return t.hostname===pe()?{}:{referrer:e,referring_domain:t.hostname}},de=()=>{const e=new URLSearchParams(me()),t={};return O.forEach((n=>{e.has(n)&&(t[n]=(e.get(n)||"").toLowerCase())})),t},pe=()=>{var e;return(null==(e=window)||null==(e=e.location)?void 0:e.hostname)||""},me=()=>{var e;return(null==(e=window)||null==(e=e.location)?void 0:e.search)||""},fe=()=>{var e;return(null==(e=window)||null==(e=e.location)?void 0:e.pathname)||""},ve=()=>{const e=A.overrideWindowLocation?re.pagePath:fe()+me();e&&e!==re.pagePath&&(e!==re.pagePath&&ge(),re.pagePath=e,re.pageKeyRegex&&Object.keys(re.pageKeyRegex).some((e=>{if(re.pageKeyRegex[e].test(re.pagePath))return re.pageKey=e,!0})))},ge=()=>{if(z()){const e=ce();if(!re.prevPagePath&&e){const t=new URL(e);if(t.hostname===pe())return void(re.prevPagePath=t.pathname)}}re.prevPagePath=re.pagePath,re.prevPageKey=re.pageKey},be=e=>{z()&&Object.assign(e,z()?(Object.keys(re.initialUAAData).length>0||(new URLSearchParams(me()),re.initialUAAData=ue({},(()=>{const e={};return O.forEach((t=>{oe[t]&&(e[t]=oe[t])})),e})(),de(),le())),re.initialUAAData):re.initialUAAData)},he=/^[a-zd]+(_[a-zd]+)*$/;function we(e){return he.test(e)}function ye(){return ye=Object.assign?Object.assign.bind():function(e){for(var t=1;t{ke.includes(e)&&delete Se[e]}))}function xe(e){var t;const n=Object.entries(e).reduce(((e,t)=>{const[n,r]=t;return!Te.includes(n)&&ke.includes(n)?we(n)?ye({},e,{[n]:r}):(A.onError(new Error("IdentityFlow property names must have snake case format"),{[n]:r}),e):e}),{});null!=(t=n.ujs)&&t.length&&(n.ujs=n.ujs.map((e=>`${_e}${e}`))),Object.assign(Se,n)}function Oe(){return A.platform!==v.unknown||(A.onError(new Error("SDK platform not initialized")),!1)}const je={eventsQueue:[],eventsScheduled:!1,metricsQueue:[],metricsScheduled:!1,tracesQueue:[],tracesScheduled:!1};function Ne(e){Object.assign(je,e)}const Ie={ac:0,af:0,ah:0,al:0,am:0,ar:0,as:0,pv:0,sqs:0},Pe={ac:20,af:5,ah:1,al:1,am:0,ar:10,as:20},Me={pv:25},Be={xs:0,s:1,m:1,l:2,xl:2,xxl:2},Ce=e=>e<15?y.xs:e<60?y.s:e<240?y.m:e<960?y.l:e<3840?y.xl:y.xxl,De=e=>{Object.assign(Ie,e)};function Ae(){return(new Date).getTime()}const Le={timeStart:Ae(),timeOnPagePath:0,timeOnPageKey:0,prevTimeOnPagePath:0,prevTimeOnPageKey:0,sessionDuration:0,sessionEnd:0,sessionStart:0,prevSessionDuration:0};function Ue(e){Object.assign(Le,e)}const Re=(e,t)=>t.some((t=>e instanceof t));let qe,Fe;const ze=new WeakMap,Ke=new WeakMap,$e=new WeakMap,Qe=new WeakMap,We=new WeakMap;let He={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return Ke.get(e);if("objectStoreNames"===t)return e.objectStoreNames||$e.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Je(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function Ve(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(Fe||(Fe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(Xe(this),e),Je(ze.get(this))}:function(...e){return Je(t.apply(Xe(this),e))}:function(e,...n){const r=t.call(Xe(this),e,...n);return $e.set(r,e.sort?e.sort():[e]),Je(r)}:(e instanceof IDBTransaction&&function(e){if(Ke.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",a),e.removeEventListener("abort",a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",a),e.addEventListener("abort",a)}));Ke.set(e,t)}(e),Re(e,qe||(qe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,He):e);var t}function Je(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",a)},i=()=>{t(Je(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",a)}));return t.then((t=>{t instanceof IDBCursor&&ze.set(t,e)})).catch((()=>{})),We.set(t,e),t}(e);if(Qe.has(e))return Qe.get(e);const t=Ve(e);return t!==e&&(Qe.set(e,t),We.set(t,e)),t}const Xe=e=>We.get(e),Ge=["get","getKey","getAll","getAllKeys","count"],Ze=["put","add","delete","clear"],Ye=new Map;function et(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(Ye.get(t))return Ye.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=Ze.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!Ge.includes(n))return;const a=async function(e,...t){const a=this.transaction(e,i?"readwrite":"readonly");let o=a.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return Ye.set(t,a),a}var tt;tt=He,He={...tt,get:(e,t,n)=>et(e,t)||tt.get(e,t,n),has:(e,t)=>!!et(e,t)||tt.has(e,t)};const nt={isReady:!1,idbKeyval:null};function rt(e){Object.assign(nt,e)}const it={},at=async e=>{if(!nt.idbKeyval)return Promise.resolve(null);try{return await nt.idbKeyval.get(e)}catch(e){return A.onError(new Error("IndexedDB:Get:InternalError")),Promise.resolve(null)}},ot=async(e,t)=>{if(nt.idbKeyval)try{await nt.idbKeyval.set(e,t)}catch(e){A.onError(new Error("IndexedDB:Set:InternalError"))}},st=()=>{"server"!==A.platform&&(se({sessionStart:Le.sessionStart,ac:Ie.ac,af:Ie.af,ah:Ie.ah,al:Ie.al,am:Ie.am,ar:Ie.ar,as:Ie.as,pv:Ie.pv}),H.userId&&se({userId:H.userId}),ot(S,oe))},ct="rgb(5,177,105)",ut=e=>{const{metricName:t,data:n}=e,r=e.importance||l.low;if(!A.showDebugLogging||!console)return;const i=`%c ${x}`,a=`color:${ct};font-size:11px;`,o=`Importance: ${r}`;console.group(i,a,t,o),n.forEach((e=>{e.event_type?console.log(e.event_type,e):console.log(e)})),console.groupEnd()},lt=e=>{const{metricName:t,data:n}=e,r=e.importance||l.low;if(!A.showDebugLogging||!console)return;const i=`color:${ct};font-size:11px;`,a=`%c ${x}`,o=`Importance: ${r}`;console.log(a,i,t,n,o)},dt=()=>{const e=Ae();oe.sessionId&&oe.lastEventTime&&oe.sessionUUID&&!pt(e)||(oe.sessionId=e,oe.sessionUUID=V(),Ue({sessionStart:e}),lt({metricName:"Started new session:",data:{persistentData:oe,timeStone:Le}})),oe.lastEventTime=e},pt=e=>e-oe.lastEventTime>18e5;function mt(){return mt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t;(e=>{switch(e.action){case f.click:Ie.ac+=1;break;case f.focus:Ie.af+=1;break;case f.hover:Ie.ah+=1;break;case f.move:Ie.am+=1;break;case f.scroll:Ie.al+=1;break;case f.search:Ie.ar+=1;break;case f.select:Ie.as+=1}})(t=e),t.event_type!==j?t.event_type===N&&((e=>{if(!e.session_rank)return;const t=e.session_rank;Object.values(h).forEach((e=>{Ie.sqs+=Ie[e]*Pe[e]})),Object.values(w).forEach((e=>{Ie.sqs+=Ie[e]*Me[e]})),Ie.sqs*=Be[t]})(t),Object.assign(t,Ie),De({ac:0,af:0,ah:0,al:0,am:0,ar:0,as:0,pv:0,sqs:0})):Ie.pv+=1;const n=e.event_type;delete e.event_type;const r=e.deviceId?e.deviceId:null,i=e.timestamp;return delete e.timestamp,se({eventId:oe.eventId+1}),se({sequenceNumber:oe.sequenceNumber+1}),dt(),st(),{device_id:H.deviceId||r||null,user_id:H.userId,timestamp:i,event_id:oe.eventId,session_id:oe.sessionId||-1,event_type:n,version_name:A.version||null,platform:W.amplitudePlatform,os_name:W.amplitudeOSName,os_version:W.amplitudeOSVersion,device_model:W.amplitudeDeviceModel,language:H.languageCode,event_properties:mt({},e,{session_uuid:oe.sessionUUID,height:W.height,width:W.width}),user_properties:X(),uuid:V(),library:{name:"@cbhq/client-analytics",version:"10.6.0"},sequence_number:oe.sequenceNumber,user_agent:W.userAgent||H.userAgent}},vt=e=>e.map((e=>ft(e)));function gt(){return gt=Object.assign?Object.assign.bind():function(e){for(var t=1;te.map((e=>(e=>{const t=e.tags||{},n=gt({authed:J()?"true":"false",platform:A.platform},t,{project_name:A.projectName,version_name:A.version||null});return{metric_name:e.metricName,page_path:e.pagePath||null,value:e.value,tags:n,type:e.metricType}})(e))),ht=e=>0!==je.metricsQueue.length&&(je.metricsQueue.length>=A.batchMetricsThreshold||(je.metricsScheduled||(je.metricsScheduled=!0,setTimeout((()=>{je.metricsScheduled=!1,e(bt(je.metricsQueue)),je.metricsQueue=[]}),A.batchMetricsPeriod)),!1)),wt=e=>0!==je.tracesQueue.length&&(je.tracesQueue.length>=A.batchTracesThreshold||(je.tracesScheduled||(je.tracesScheduled=!0,setTimeout((()=>{je.tracesScheduled=!1,e(je.tracesQueue),je.tracesQueue=[]}),A.batchTracesPeriod)),!1)),yt=e=>{var t;z()&&null!=(t=window)&&t.requestIdleCallback?window.requestIdleCallback(e,{timeout:A.ricTimeoutScheduleEvent}):(q()||F())&&A.interactionManager?A.interactionManager.runAfterInteractions(e):e()};function Tt(){return Tt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const{data:t,importance:n,isJSON:r,onError:i,url:a}=e,o=r?"application/json":kt,s=n||l.low,c=r?JSON.stringify(t):new URLSearchParams(t).toString();function u(){const e=new XMLHttpRequest;e.open("POST",a,!0),Object.keys(A.headers||{}).forEach((t=>{e.setRequestHeader(t,A.headers[t])})),e.setRequestHeader("Content-Type",kt),H.jwt&&e.setRequestHeader("authorization",`Bearer ${H.jwt}`),e.send(c)}if(!z()||r||!("sendBeacon"in navigator)||s!==l.low||A.headers&&0!==Object.keys(A.headers).length)if(z()&&!r)u();else{const e=Tt({},A.headers,{"Content-Type":o});H.jwt&&(e.Authorization=`Bearer ${H.jwt}`),fetch(a,{method:"POST",mode:"no-cors",headers:e,body:c}).catch((e=>{i(e,{context:"AnalyticsSDKApiError"})}))}else{const e=new Blob([c],{type:kt});try{navigator.sendBeacon.bind(navigator)(a,e)||u()}catch(e){console.error(e),u()}}};var St=n(762),Et=n.n(St);const xt=(e,t,n)=>{const r=e||"";return Et()("2"+r+t+n)};function Ot(){return Ot=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n;e&&je.eventsQueue.push(e),nt.isReady&&(!A.trackUserId||H.userId?(t===l.high||(n=Mt,0!==je.eventsQueue.length&&(je.eventsQueue.length>=A.batchEventsThreshold||(je.eventsScheduled||(je.eventsScheduled=!0,setTimeout((()=>{je.eventsScheduled=!1,n(vt(je.eventsQueue)),je.eventsQueue=[]}),A.batchEventsPeriod)),0))))&&Bt():je.eventsQueue.length>10&&(A.trackUserId=!1,A.onError(new Error("userId not set in Logged-in"))))},Mt=(e,t=l.low)=>{if(H.isOptOut||0===e.length)return;let n;try{n=JSON.stringify(e)}catch(t){const r=e.map((e=>e.event_type)).join(", "),[i,a]=(e=>{try{const n=[];for(const r of e){const e=Ot({},r);r.event_properties&&(e.event_properties=Ot({},e.event_properties,{currentTarget:null,target:null,relatedTarget:null,_dispatchInstances:null,_targetInst:null,view:(t=r.event_properties.view,["string","number","boolean"].includes(typeof t)?r.event_properties.view:null)})),n.push(e)}return[!0,JSON.stringify(n)]}catch(e){return[!1,""]}var t})(e);if(!i)return void A.onError(new jt(t instanceof Error?t.message:"unknown"),{listEventType:r});n=a,A.onError(new Nt("Found DOM element reference"),{listEventType:r,stringifiedEventData:n})}const r=Ae().toString(),i=It({},{e:n,v:"2",upload_time:r},{client:A.amplitudeApiKey,checksum:xt(A.amplitudeApiKey,n,r)});_t({url:A.eventsEndpoint,data:i,importance:t,onError:A.onError}),ut({metricName:"Batch Events",data:e,importance:t})},Bt=()=>{Mt(vt(je.eventsQueue)),Ne({eventsQueue:[]})};function Ct(){return Ct=Object.assign?Object.assign.bind():function(e){for(var t=1;tDt.includes(e)?e:f.unknown,Ut=e=>At.includes(e)?e:m.unknown,Rt=(e,t,n)=>{const r={auth:J()?b.loggedIn:b.notLoggedIn,action:Lt(e),component_type:Ut(t),logging_id:n,platform:A.platform,project_name:A.projectName};return"number"==typeof H.userTypeEnum&&(r.user_type_enum=H.userTypeEnum),r},qt=e=>{const t=Ae();if(!e)return A.onError(new Error("missing logData")),Ct({},Rt(f.unknown,m.unknown),{locale:H.locale,session_lcc_id:H.session_lcc_id,timestamp:t,time_start:Le.timeStart});const n=Ct({},e,Rt(e.action,e.componentType,e.loggingId),{locale:H.locale,session_lcc_id:H.session_lcc_id,timestamp:t,time_start:Le.timeStart});return delete n.componentType,delete n.loggingId,n},Ft={blacklistRegex:[],isEnabled:!1};function zt(){return{page_key:re.pageKey,page_path:re.pagePath,prev_page_key:re.prevPageKey,prev_page_path:re.prevPagePath}}function Kt(e){Object.assign(Ft,e)}function $t(e,t,n=l.low){if(H.isOptOut)return;if(!Oe())return;const r=qt(t);!function(e){Ft.isEnabled&&(ve(),Object.assign(e,zt()))}(r),be(r),function(e){Object.keys(Se).length>0&&Object.assign(e,Se)}(r),r.has_double_fired=!1,r.event_type=e,n===l.high?Pt(r,n):yt((()=>{Pt(r)}))}function Qt(e,t=!1){t?_t({url:A.metricsEndPoint,data:{metrics:e},isJSON:!0,onError:A.onError}):yt((()=>{_t({url:A.metricsEndPoint,data:{metrics:e},isJSON:!0,onError:A.onError})})),ut({metricName:"Batch Metrics",data:e})}function Wt(){return Wt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{null!=A&&A.onMarkStep&&A.onMarkStep(e,t),xe({ujs:t})};let Yt;const en={Perfume:()=>{},markStep:e=>{},markStepOnce:e=>{},incrementUjNavigation:()=>{}},tn=()=>{z()&&Yt&&Yt.markNTBT&&Yt.markNTBT()},nn=e=>{z()&&Yt&&en.markStep&&en.markStep(e)},rn=e=>{z()&&Yt&&en.markStepOnce&&en.markStepOnce(e)},an=()=>{z()&&Yt&&en.incrementUjNavigation&&en.incrementUjNavigation()};function on(e={callMarkNTBT:!0}){"unknown"!==A.platform&&(Ft.blacklistRegex.some((e=>e.test(fe())))||($t(j,{action:f.render,componentType:m.page}),e.callMarkNTBT&&tn()))}let sn=!1,cn=!1;const un=e=>{sn=!e.persisted},ln=(e,t="hidden",n=!1)=>{cn||(addEventListener("pagehide",un),addEventListener("beforeunload",(()=>{})),cn=!0),addEventListener("visibilitychange",(({timeStamp:n})=>{document.visibilityState===t&&e({timeStamp:n,isUnloading:sn})}),{capture:!0,once:n})},dn=36e3;function pn(){const e=pt(Ae());if(e&&(O.forEach((e=>{oe[e]&&delete oe[e]})),st()),!oe.lastEventTime||!Le.sessionStart||!e)return;const t=Math.round((oe.lastEventTime-Le.sessionStart)/1e3);if(t<1||t>dn)return;const n=Ce(t);$t(N,{action:f.measurement,componentType:m.page,session_duration:t,session_end:oe.lastEventTime,session_start:Le.sessionStart,session_rank:n})}function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const e=fn.shift();e&&e()},bn=()=>{const e=vn.shift();e&&e()};let hn={};function wn(e){const t=function(e){return{test_name:e.testName,group_name:e.group,subject_id:e.subjectId,exposed_at:Ae(),subject_type:e.subjectType,platform:A.platform}}(e);hn[e.testName]=hn[e.testName]||0,hn[e.testName]+k>Ae()?lt({metricName:`Event: exposeExperiment ${e.testName} not sent`,data:t}):(hn[e.testName]=Ae(),ot(E,hn),lt({metricName:`Event: exposeExperiment ${e.testName} sent`,data:t}),_t({url:A.exposureEndpoint,data:[t],onError:(t,n)=>{hn[e.testName]=0,ot(E,hn),A.onError(t,n)},isJSON:!0,importance:l.high}))}const yn=e=>{var t,r,i;U(e),z()&&(H.languageCode=(null==(t=navigator)?void 0:t.languages[0])||(null==(r=navigator)?void 0:r.language)||""),te(),(()=>{var e;if(z()&&null!=(e=window)&&e.indexedDB){const e=function(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const o=indexedDB.open(e,t),s=Je(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(Je(o.result),e.oldVersion,e.newVersion,Je(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),s.then((e=>{a&&e.addEventListener("close",(()=>a())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),s}("keyval-store",1,{upgrade(e){e.createObjectStore("keyval")}});rt({idbKeyval:{get:async t=>(await e).get("keyval",t),set:async(t,n)=>(await e).put("keyval",n,t),delete:async t=>(await e).delete("keyval",t),keys:async()=>(await e).getAllKeys("keyval")}})}else rt({idbKeyval:{get:async e=>new Promise((t=>{t(it[e])})),set:async(e,t)=>new Promise((n=>{it[e]=t,n(e)})),delete:async e=>new Promise((()=>{delete it[e]})),keys:async()=>new Promise((e=>{e(Object.keys(it))}))}})})(),lt({metricName:"Initialized Analytics:",data:{deviceId:H.deviceId}}),fn.push((()=>{Pt()})),(async()=>{const e=await at(S);rt({isReady:!0}),gn(),e&&(bn(),se({eventId:e.eventId||oe.eventId,sequenceNumber:e.sequenceNumber||oe.sequenceNumber,sessionId:e.sessionId||oe.sessionId,lastEventTime:e.lastEventTime||oe.lastEventTime,sessionUUID:e.sessionUUID||oe.sessionUUID}),function(e){se(mn({},function(e){const t={};return O.forEach((n=>{e[n]&&(t[n]=e[n])})),t}(e),de()))}(e),Ue({sessionStart:e.sessionStart||oe.sessionStart}),De({ac:e.ac||Ie.ac,af:e.af||Ie.af,ah:e.ah||Ie.ah,al:e.al||Ie.al,am:e.am||Ie.am,ar:e.ar||Ie.ar,as:e.as||Ie.as,pv:e.pv||Ie.pv}),A.trackUserId&&Y({userId:e.userId||H.userId}),pn(),lt({metricName:"Initialized Analytics IndexedDB:",data:e}))})(),async function(){at(E).then((e=>{hn=null!=e?e:{}})).catch((e=>{e instanceof Error&&A.onError(e)}))}(),Z(),z()&&(ln((()=>{se({lastEventTime:Ae()}),st(),Bt()}),"hidden"),ln((()=>{pn()}),"visible")),z()&&(i=()=>{var e,t,n,r;te(),ee({width:null!=(e=null==(t=window)?void 0:t.innerWidth)?e:null,height:null!=(n=null==(r=window)?void 0:r.innerHeight)?n:null})},addEventListener("resize",(()=>{requestAnimationFrame((()=>{i()}))}))),(()=>{if(z())try{const e=n(2);en.markStep=e.markStep,en.markStepOnce=e.markStepOnce,en.incrementUjNavigation=e.incrementUjNavigation,Yt=new e.Perfume({analyticsTracker:e=>{const{data:t,attribution:n,metricName:r,navigatorInformation:i,rating:a}=e,o=I[r],s=(null==n?void 0:n.category)||null;if(!o&&!s)return;const c=(null==i?void 0:i.deviceMemory)||0,u=(null==i?void 0:i.hardwareConcurrency)||0,l=(null==i?void 0:i.isLowEndDevice)||!1,p=(null==i?void 0:i.isLowEndExperience)||!1,v=(null==i?void 0:i.serviceWorkerStatus)||"unsupported",g=Vt({deviceMemory:c,hardwareConcurrency:u,isLowEndDevice:l,isLowEndExperience:p,serviceWorkerStatus:v},Gt),b={is_low_end_device:l,is_low_end_experience:p,page_key:re.pageKey||"",save_data:t.saveData||!1,service_worker:v,is_perf_metric:!0};if("navigationTiming"===r)t&&"number"==typeof t.redirectTime&&Ht({metricName:I.redirectTime.eventName,metricType:d.histogram,tags:b,value:t.redirectTime||0});else if("TTFB"===r)$t(o.eventName,Vt({action:f.measurement,componentType:m.page,duration:t||null,vitalsScore:a||null},g)),Ht({metricName:I.TTFB.eventName,metricType:d.histogram,tags:Vt({},b),value:t}),a&&Ht({metricName:`perf_web_vitals_ttfb_${a}`,metricType:d.count,tags:b,value:1});else if("networkInformation"===r)null!=t&&t.effectiveType&&(Gt=t,$t(o.eventName,{action:f.measurement,componentType:m.page,networkInformationDownlink:t.downlink,networkInformationEffectiveType:t.effectiveType,networkInformationRtt:t.rtt,networkInformationSaveData:t.saveData,navigatorDeviceMemory:c,navigatorHardwareConcurrency:u}));else if("storageEstimate"===r)$t(o.eventName,Vt({action:f.measurement,componentType:m.page},t,g)),Ht({metricName:"perf_storage_estimate_caches",metricType:d.histogram,tags:b,value:t.caches}),Ht({metricName:"perf_storage_estimate_indexed_db",metricType:d.histogram,tags:b,value:t.indexedDB});else if("CLS"===r)$t(o.eventName,Vt({action:f.measurement,componentType:m.page,score:100*t||null,vitalsScore:a||null},g)),a&&Ht({metricName:`perf_web_vitals_cls_${a}`,metricType:d.count,tags:b,value:1});else if("FID"===r){const e=(null==n?void 0:n.performanceEntry)||null,r=parseInt((null==e?void 0:e.processingStart)||"");$t(o.eventName,Vt({action:f.measurement,componentType:m.page,duration:t||null,processingStart:null!=e&&e.processingStart?r:null,startTime:null!=e&&e.startTime?parseInt(e.startTime):null,vitalsScore:a||null},g)),a&&Ht({metricName:`perf_web_vitals_fidVitals_${a}`,metricType:d.count,tags:b,value:1})}else"userJourneyStep"===r?($t("perf_user_journey_step",Vt({action:f.measurement,componentType:m.page,duration:t||null,rating:null!=a?a:null,step_name:(null==n?void 0:n.stepName)||""},g)),Ht({metricName:`user_journey_step.${A.projectName}.${A.platform}.${(null==n?void 0:n.stepName)||""}_vitals_${a}`,metricType:d.count,tags:b,value:1}),Ht({metricName:`user_journey_step.${A.projectName}.${A.platform}.${(null==n?void 0:n.stepName)||""}`,metricType:d.distribution,tags:b,value:t||null})):I[r]&&t&&($t(o.eventName,Vt({action:f.measurement,componentType:m.page,duration:t||null,vitalsScore:a||null},g)),a&&(Ht({metricName:`perf_web_vitals_${Xt(r)}_${a}`,metricType:d.count,tags:b,value:1}),"LCP"===r&&Ht({metricName:`perf_web_vitals_${Xt(r)}`,metricType:d.distribution,tags:b,value:t})))},maxMeasureTime:3e4,steps:A.steps,onMarkStep:Zt})}catch(e){e instanceof Error&&A.onError(e)}})()},Tn=e=>{Y(e),e.userAgent&&Z(),lt({metricName:"Identify:",data:{countryCode:H.countryCode,deviceId:H.deviceId,userId:H.userId}})},kn=({blacklistRegex:e,pageKeyRegex:t,browserHistory:n})=>{Kt({blacklistRegex:e||[],isEnabled:!0}),ae({pageKeyRegex:t}),on({callMarkNTBT:!1}),n.listen((()=>{on()}))},_n=({blacklistRegex:e,pageKeyRegex:t,nextJsRouter:n})=>{Kt({blacklistRegex:e||[],isEnabled:!0}),ae({pageKeyRegex:t}),on({callMarkNTBT:!1}),n.events.on("routeChangeComplete",(()=>{on()}))},Sn=()=>{Y({isOptOut:!0}),ot(S,{})},En=()=>{Y({isOptOut:!1})},xn={Button:{label:"cb_button",uuid:"e921a074-40e6-4371-8700-134d5cd633e6",componentType:m.button}};function On(e,t,n){return{componentName:e,actions:t,data:n}}function jn(){return jn=Object.assign?Object.assign.bind():function(e){for(var t=1;tNn(xn.Button,f.click,e),[f.hover]:e=>Nn(xn.Button,f.hover,e)}}};function Pn(e,t=!1){t?_t({url:A.tracesEndpoint,data:{traces:e},isJSON:!0,onError:A.onError}):yt((()=>{_t({url:A.tracesEndpoint,data:{traces:e},isJSON:!0,onError:A.onError})})),ut({metricName:"Batch Traces",data:e})}function Mn(){return Mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t0}(e)&&(t&&function(e,t){e.forEach((e=>function(e,t){const n=Mn({},e.meta,t.meta),r={start:t.start?Cn(t.start):e.start,duration:t.duration?Cn(t.duration):e.duration};Object.assign(e,t,Mn({meta:n},r))}(e,t)))}(e,t),je.tracesQueue.push(e),wt(Pn)&&(Pn(je.tracesQueue),je.tracesQueue=[]))}function qn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}function Fn(){return Fn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(Qn,[n].map(qn));Qn=r}function Jn(e,t){if(!zn())return;const n=$n(e,"start",t);Qn[n]&&(Wn(e,"end",t),Vn(e,t))}function Xn(){zn()&&(performance.clearMarks(),Qn={})}var Gn=n(784);function Zn(){return Zn=Object.assign?Object.assign.bind():function(e){for(var t=1;t{r.current=t}),[t]),(0,Gn.useCallback)((t=>{$t(e,Zn({},r.current,t),n)}),[e,n])}function er(){return er=Object.assign?Object.assign.bind():function(e){for(var t=1;t{const r=er({},t,{action:f.render});$t(e,r,n)}),[])}function nr(){return nr=Object.assign?Object.assign.bind():function(e){for(var t=1;tHn(e,t)),[e,t]),markEndPerf:(0,Gn.useCallback)((n=>Jn(e,nr({},t,n))),[e,t])}};function ir(){return ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t{return null!=(n=t[1])&&""!==n?ir({},e,{[t[0]]:t[1]}):e;var n}),{})}async function or(){return new Promise((e=>{Mt(vt(je.eventsQueue)),Qt(bt(je.metricsQueue),!0),Pn(je.tracesQueue,!0),Ne({eventsQueue:[],metricsQueue:[],tracesQueue:[]}),e()}))}function sr(){return{"X-CB-Device-ID":H.deviceId||"unknown","X-CB-Is-Logged-In":H.userId?"true":"false","X-CB-Pagekey":re.pageKey||"unknown","X-CB-UJS":(e=Se.ujs,void 0===e||0===e.length?"":e.join(",")),"X-CB-Platform":A.platform||"unknown","X-CB-Project-Name":A.projectName||"unknown","X-CB-Session-UUID":oe.sessionUUID||"unknown","X-CB-Version-Name":A.version?String(A.version):"unknown"};var e}})(),r})()}));',vc=()=>new Promise((e,t)=>{if(typeof window>"u"){t(new Error("Telemetry is not supported in non-browser environments"));return}if(window.ClientAnalytics)return e();try{const n=document.createElement("script");n.textContent=wc,n.type="text/javascript",document.head.appendChild(n),xc(),document.head.removeChild(n),e()}catch{console.error("Failed to execute inlined telemetry script"),t()}}),xc=()=>{if(typeof window<"u"){const e=E.config.get().deviceId??crypto?.randomUUID()??"";if(window.ClientAnalytics){const{init:t,identify:n,PlatformName:r}=window.ClientAnalytics;t({isProd:!0,amplitudeApiKey:"c66737ad47ec354ced777935b0af822e",platform:r.web,projectName:"base_account_sdk",showDebugLogging:!1,version:"1.0.0",apiEndpoint:"https://cca-lite.coinbase.com"}),n({deviceId:e}),E.config.set({deviceId:e})}}},Ec="0xba5ed110efdba3d005bfc882d75358acbbb85842",we=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"owner",type:"bytes"}],name:"AlreadyOwner",type:"error"},{inputs:[],name:"Initialized",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidEthereumAddressOwner",type:"error"},{inputs:[{name:"key",type:"uint256"}],name:"InvalidNonceKey",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidOwnerBytesLength",type:"error"},{inputs:[],name:"LastOwner",type:"error"},{inputs:[{name:"index",type:"uint256"}],name:"NoOwnerAtIndex",type:"error"},{inputs:[{name:"ownersRemaining",type:"uint256"}],name:"NotLastOwner",type:"error"},{inputs:[{name:"selector",type:"bytes4"}],name:"SelectorNotAllowed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"UnauthorizedCallContext",type:"error"},{inputs:[],name:"UpgradeFailed",type:"error"},{inputs:[{name:"index",type:"uint256"},{name:"expectedOwner",type:"bytes"},{name:"actualOwner",type:"bytes"}],name:"WrongOwnerAtIndex",type:"error"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"AddOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"RemoveOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"REPLAYABLE_NONCE_KEY",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"addOwnerAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"addOwnerPublicKey",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"functionSelector",type:"bytes4"}],name:"canSkipChainIdValidation",outputs:[{name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"entryPoint",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"execute",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"executeBatch",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"calls",type:"bytes[]"}],name:"executeWithoutChainIdValidation",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"getUserOpHashWithoutChainId",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"$",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"owners",type:"bytes[]"}],name:"initialize",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"account",type:"address"}],name:"isOwnerAddress",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"bytes"}],name:"isOwnerBytes",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"isOwnerPublicKey",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"result",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextOwnerIndex",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"}],name:"ownerAtIndex",outputs:[{name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeLastOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeOwnerAtIndex",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"removedOwnersCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"}],name:"replaySafeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"newImplementation",type:"address"},{name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"},{name:"userOpHash",type:"bytes32"},{name:"missingAccountFunds",type:"uint256"}],name:"validateUserOp",outputs:[{name:"validationData",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],Ei=[{inputs:[{name:"implementation_",type:"address"}],stateMutability:"payable",type:"constructor"},{inputs:[],name:"OwnerRequired",type:"error"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"createAccount",outputs:[{name:"account",type:"address"}],stateMutability:"payable",type:"function"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"getAddress",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"initCodeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"}],Q={rpc:{invalidInput:-32e3,resourceNotFound:-32001,resourceUnavailable:-32002,transactionRejected:-32003,methodNotSupported:-32004,limitExceeded:-32005,parse:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internal:-32603},provider:{userRejectedRequest:4001,unauthorized:4100,unsupportedMethod:4200,disconnected:4900,chainDisconnected:4901,unsupportedChain:4902}},Gn={"-32700":{standard:"JSON RPC 2.0",message:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."},"-32600":{standard:"JSON RPC 2.0",message:"The JSON sent is not a valid Request object."},"-32601":{standard:"JSON RPC 2.0",message:"The method does not exist / is not available."},"-32602":{standard:"JSON RPC 2.0",message:"Invalid method parameter(s)."},"-32603":{standard:"JSON RPC 2.0",message:"Internal JSON-RPC error."},"-32000":{standard:"EIP-1474",message:"Invalid input."},"-32001":{standard:"EIP-1474",message:"Resource not found."},"-32002":{standard:"EIP-1474",message:"Resource unavailable."},"-32003":{standard:"EIP-1474",message:"Transaction rejected."},"-32004":{standard:"EIP-1474",message:"Method not supported."},"-32005":{standard:"EIP-1474",message:"Request limit exceeded."},4001:{standard:"EIP-1193",message:"User rejected the request."},4100:{standard:"EIP-1193",message:"The requested account and/or method has not been authorized by the user."},4200:{standard:"EIP-1193",message:"The requested method is not supported by this Ethereum provider."},4900:{standard:"EIP-1193",message:"The provider is disconnected from all chains."},4901:{standard:"EIP-1193",message:"The provider is disconnected from the specified chain."},4902:{standard:"EIP-3085",message:"Unrecognized chain ID."}},Ai="Unspecified error message.",Ac="Unspecified server error.";function Br(e,t=Ai){if(e&&Number.isInteger(e)){const n=e.toString();if(Kn(Gn,n))return Gn[n].message;if(Si(e))return Ac}return t}function Sc(e){if(!Number.isInteger(e))return!1;const t=e.toString();return!!(Gn[t]||Si(e))}function kc(e,{shouldIncludeStack:t=!1}={}){const n={};if(e&&typeof e=="object"&&!Array.isArray(e)&&Kn(e,"code")&&Sc(e.code)){const r=e;n.code=r.code,r.message&&typeof r.message=="string"?(n.message=r.message,Kn(r,"data")&&(n.data=r.data)):(n.message=Br(n.code),n.data={originalError:ua(e)})}else n.code=Q.rpc.internal,n.message=da(e,"message")?e.message:Ai,n.data={originalError:ua(e)};return t&&(n.stack=da(e,"stack")?e.stack:void 0),n}function Si(e){return e>=-32099&&e<=-32e3}function ua(e){return e&&typeof e=="object"&&!Array.isArray(e)?Object.assign({},e):e}function Kn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function da(e,t){return typeof e=="object"&&e!==null&&t in e&&typeof e[t]=="string"}const A={rpc:{parse:e=>me(Q.rpc.parse,e),invalidRequest:e=>me(Q.rpc.invalidRequest,e),invalidParams:e=>me(Q.rpc.invalidParams,e),methodNotFound:e=>me(Q.rpc.methodNotFound,e),internal:e=>me(Q.rpc.internal,e),server:e=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Ethereum RPC Server errors must provide single object argument.");const{code:t}=e;if(!Number.isInteger(t)||t>-32005||t<-32099)throw new Error('"code" must be an integer such that: -32099 <= code <= -32005');return me(t,e)},invalidInput:e=>me(Q.rpc.invalidInput,e),resourceNotFound:e=>me(Q.rpc.resourceNotFound,e),resourceUnavailable:e=>me(Q.rpc.resourceUnavailable,e),transactionRejected:e=>me(Q.rpc.transactionRejected,e),methodNotSupported:e=>me(Q.rpc.methodNotSupported,e),limitExceeded:e=>me(Q.rpc.limitExceeded,e)},provider:{userRejectedRequest:e=>$e(Q.provider.userRejectedRequest,e),unauthorized:e=>$e(Q.provider.unauthorized,e),unsupportedMethod:e=>$e(Q.provider.unsupportedMethod,e),disconnected:e=>$e(Q.provider.disconnected,e),chainDisconnected:e=>$e(Q.provider.chainDisconnected,e),unsupportedChain:e=>$e(Q.provider.unsupportedChain,e),custom:e=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Ethereum Provider custom errors must provide single object argument.");const{code:t,message:n,data:r}=e;if(!n||typeof n!="string")throw new Error('"message" must be a nonempty string');return new Pi(t,n,r)}}};function me(e,t){const[n,r]=ki(t);return new Ur(e,n||Br(e),r)}function $e(e,t){const[n,r]=ki(t);return new Pi(e,n||Br(e),r)}function ki(e){if(e){if(typeof e=="string")return[e];if(typeof e=="object"&&!Array.isArray(e)){const{message:t,data:n}=e;if(t&&typeof t!="string")throw new Error("Must specify string message.");return[t||void 0,n]}}return[]}class Ur extends Error{code;data;constructor(t,n,r){if(!Number.isInteger(t))throw new Error('"code" must be an integer.');if(!n||typeof n!="string")throw new Error('"message" must be a nonempty string.');super(n),this.code=t,r!==void 0&&(this.data=r)}}class Pi extends Ur{constructor(t,n,r){if(!Pc(t))throw new Error('"code" must be an integer such that: 1000 <= code <= 4999');super(t,n,r)}}function Pc(e){return Number.isInteger(e)&&e>=1e3&&e<=4999}function la(e){return typeof e=="object"&&e!==null&&"code"in e&&"data"in e&&e.code===-32090&&typeof e.data=="object"&&e.data!==null&&"type"in e.data&&e.data.type==="INSUFFICIENT_FUNDS"}function Ci(e){return typeof e=="object"&&e!==null&&"details"in e}function Cc(e){try{const t=JSON.parse(e.details);return new Ur(t.code,t.message,t.data)}catch{return null}}function ge(e,t,n){if(e==null)throw t??A.rpc.invalidParams({message:"value must be present",data:e})}function je(e,t){if(!Array.isArray(e))throw A.rpc.invalidParams({message:t??"value must be an array",data:e})}const Ic=`Base Account SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Base Account app. + +Please see https://docs.base.org/smart-wallet/quickstart#cross-origin-opener-policy for more information.`,Oc=()=>{let e;return{getCrossOriginOpenerPolicy:()=>e===void 0?"undefined":e,checkCrossOriginOpenerPolicy:async()=>{if(typeof window>"u"){e="non-browser-env";return}try{const t=`${window.location.origin}${window.location.pathname}`,n=await fetch(t,{method:"HEAD"});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);e=n.headers.get("Cross-Origin-Opener-Policy")??"null",e==="same-origin"&&console.error(Ic)}catch(t){console.error("Error checking Cross-Origin-Opener-Policy:",t.message),e="error"}}}},{checkCrossOriginOpenerPolicy:Tc,getCrossOriginOpenerPolicy:_c}=Oc();function Bc(e){if(e){if(e.attribution&&e.attribution.auto!==void 0&&e.attribution.dataSuffix!==void 0)throw new Error("Attribution cannot contain both auto and dataSuffix properties");if(e.telemetry&&typeof e.telemetry!="boolean")throw new Error("Telemetry must be a boolean")}}function fa(e){if(typeof e!="function")throw new Error("toAccount is not a function")}var H;(function(e){e.unknown="unknown",e.banner="banner",e.button="button",e.card="card",e.chart="chart",e.content_script="content_script",e.dropdown="dropdown",e.link="link",e.page="page",e.modal="modal",e.table="table",e.search_bar="search_bar",e.service_worker="service_worker",e.text="text",e.text_input="text_input",e.tray="tray",e.checkbox="checkbox",e.icon="icon"})(H||(H={}));var G;(function(e){e.unknown="unknown",e.blur="blur",e.click="click",e.change="change",e.dismiss="dismiss",e.focus="focus",e.hover="hover",e.select="select",e.measurement="measurement",e.move="move",e.process="process",e.render="render",e.scroll="scroll",e.view="view",e.search="search",e.keyPress="keyPress",e.error="error"})(G||(G={}));var K;(function(e){e.low="low",e.high="high"})(K||(K={}));function Z(e,t,n){typeof window<"u"&&window.ClientAnalytics&&window.ClientAnalytics?.logEvent(e,{...t,sdkVersion:wt,sdkName:gn,appName:E.config.get().metadata?.appName??"",appOrigin:window.location.origin},n)}const Uc=()=>{Z("communicator.popup_setup.started",{action:G.unknown,componentType:H.unknown},K.high)},Rc=()=>{Z("communicator.popup_setup.completed",{action:G.unknown,componentType:H.unknown},K.high)},Nc=()=>{Z("communicator.popup_unload.received",{action:G.unknown,componentType:H.unknown},K.high)},Rr=({dialogContext:e})=>{Z(`dialog.${e}.shown`,{action:G.render,componentType:H.modal,dialogContext:e},K.high)},Ii=({dialogContext:e})=>{Z(`dialog.${e}.dismissed`,{action:G.dismiss,componentType:H.modal,dialogContext:e},K.high)},We=({dialogContext:e,dialogAction:t})=>{Z(`dialog.${e}.action_clicked`,{action:G.click,componentType:H.button,dialogContext:e,dialogAction:t},K.high)},jc=` +@font-face { + font-family: "BaseSans-Regular"; + src: url("data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAJigAA8AAAACCywAAJg8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGoIuG4L7BhzCdAZgAJIGEQgKg+k0gv4NC4p0AAE2AiQDlWQEIAWGfgeublsIz5EGVeP2TiXfSAJ0G0LBr7Zlqf6pcAA3dwBbquuITJr6o7y2YrpNHoSyAwBKe/rZ//////+/IlmMMf8PuQcEUUitMtva1oSQhGamQkxJxpSLWVScqgQ1RW16VovNJTZ2uagkVSeuNje11QubnvZpYVB7yUGi4thNqJYBdoegR2V9jiA4dEhCOgf3Va7muEqhcRKz0dDNOVV47+hxPO9qkzFCUg5glpCZxKbOGFxehX5nYwGEBZOQwyRFIY5oljSrLwkSIj35dugPRJKk8G3GwUgw06hpknM0qqcUdO/UkzLvviWielabhCp59zPCaOnnqLtK3qXfP4Jz+vAum7Q0/NuZGXK9lUJKTpCEJ7ENfKrSzrLJy8uqLLgUD5sssqscpk8OS7HhGv36H+Ct59wJukpOmwpgFOqL6vCNd0ISNjq/nA5E/OXNVV0dR7EKTAKiB1ZvW+tSlyr7EWdJ3qxDtA8codE8WQY4xkT9EJF26FGP+iQKnwv66klyovCkLwlr8Lxu3nv/5/MNMUKMiAhhDtdkGsM0RAwRI8QYaRhCUNgOUAO4Bi0u3DhL0aZoKaLFsXHublwTFwWef9oP2rlv3sxftRCxRCOKSDVvItZINGlFPFkmbqay38SW9hmQLI2pME5qCPQ47vfu8GC3f2SvxM2MUAmZO8ThjH049p2ZcUbGnTPWOHudo8vMLNEQRUvt3y9qA6U5Uu9ZONvHHhBR/BdN1Kcsoz6KD7j59iAmJA4eESNxvpq3Y6fp1ru163hU2GRzm8rmg0BhMJKgMIaf9nO3qg2ztI6m8ncflWgaGnQInYUqlufvbIecf9zg3KdoiqIpiqLnHzctBAhpSGNI+CSBCoxSmdVel2WMzJgqpdvlRLu9sTnXnnhOLGfKTLCJOTM9UWa8ezmfeyz//739L9vet2xVfdv8v/dtfXvfXldd46q+pW+rqhpVVXVV1biGGqPGGGOMMSIiRkSEOCIiIiIiIiKOIyJEHBHHETH/+Nz8/5kozOTkkPZ9M9uZRYC0pVwIQS5XK0nOJvA8lOVX3YrZypBnvvvmw25iURRFUTRNURRFURRFURRFURRF0TRNUzRN0TRN0/zRttoUsFC40OU9euRGFjGNjc8DAIWhNhWIqEFFnL7nFu2CjlFaJxxJRqf6Ung+Jvp73GVuoRtcHv8zeSKBU33dLOlWLJ0kBS4NEvIIaJvcM3ZuaDO0PkAHB26nUXSKoiiKorCiM7PySCWqIBxaeL2g/EBoVNGFPYv0QhLD6BUFa7FVDM8hh4gg8ggWk0GkW3K9iQBYnQnPTdjg3A60rt4SpU4u7oiFDsrYvgxqdHDejpIzYZgbzk8QuuLh/8fU3Bf+KRCpqkoCWRYOgAZ6Z5rQmDGR2/bhWlmYKohLc8ntExu5JXwnk4LxI3Dc4OHi4/9eZ9m+b3l93mMfUbzJKYRFQ1QlXco0TebrSbL0JXsjyd5bw4HXPtI6YPvIcDe3DiFVQLb3iLxBgC4dNk2KLk2ZpkxREncp6io8fL/sm+2zzdT+IY9D0m6/Y4Tb+s6iqZrfMxvuf9tUfXJvk9JjSEMeYnYhCoOwOIYhfWJUUa2kkNlJpML5EP/eVKu0P5sQZjyxnCmOds/xprjWpqAZcY3TaO585D3x+jeeuj+aGBIYUWAPxDGOwjgjW4Pf//+GJyFLEJQZZ5xG63XOmMhaQ53VznlFa3y22daGl256F+cXhBeFxoYXXhZfePD8O32lcfRutrIm2gQ7oUjxl7L8lWnl5GWsjrVZocNaAAtYi4twUQmBxeWB71Q+jf0X4QkWtlmSCs9F9QVYKjgMPC1YEQfHiQ1IA75IGACGQSXDpvfmW2GhW4TDy9KXWhTKEVQViiAk0uAR7iVCIrxEwlP9Tf+zRMPFdQxv5oIEg///pmZK8yodlcqgE4BywtDq/vc9azWnlY7kGdlbOg4NZKEs8O+WPP07CTSbOoxcSiiOX6QEN+t/J+H/fye5TqG9dlWtqrVWRESMyIsRI0bEWhVH3///6xjuE3wV5isP2bQlhMJa/PCAB7e9XrJlnx4vRqoCxJEeHtsI0x9/s5owdGxp17TXIikE8RSCxh6y+31+b1Pbj1sa9nZsapXA6RS3w2leokH/w4wAP/6mRgHw09uiJICffvQeEZQY/BH8E+WJYYuQkGD11BMhJcNy5oJw5Yrlxg3hzh3LQxgiXDhWhAjEGGOw5BSISJFYUWIQsWKx4oxHJEjAmiARoaHBmqgMMc8ClDkxSGKjw2RK5iCZm1JsyrIcyYqswGZl9iDZmxNoTuYrkm/pRNNFvZHyqUC0gupnpCx1EFOHqhHBggLBgJnAPGAJFElsNCDYJGVStElG0cRmItSr1aA7AqYxnAnd7KY4NcTHPZpvggwLTE5jQFCdzRz7ZK4J0n+yOBxfPLubEYQhClMafQx9v+JB6UbImj03AQYbTS6OWrJUJhSP0p/2es1yt0Omr7Egj5366fr4ua6v3dbt9Ruc/3R947/ZvnkHjg3y7lUgoL2UBP/MNpUuiyQu8YoquufZv6iCKqyOV+sY2sKGZqwbj8bn9uvFkxPI5wJN4YqTdR3cr39S/T4cB2JUjhcpltUvgRzIldzOJ3mQJ8XXdymUZumXYxErv47qa0tRnWmroa07s59NsWk3Q2f+HEC/bJfPh/PLFdHXxHmv5nfeueJkzg3Zs+zvMTCTf967JdTaNjTKjk5xsRvd5QGPed4r3vZnH/nrwvoTeZY4lfsvixW3mtfjU+A83xeuevacM9d5qon6fOTg/79PrhPLMWMcwa3bv3J36RZlxnBgAJ2KMoyFYTREKn+ZKsvGlEcUkroTk15wKDTCoMoIwHgRFQNDXIa8HgfEacoFAzxuOQ7CC3jkglmPV3om8ky0iIPACWPlXBxA16FBIDBeeJaRPVKUYhqoHSvO1VEgVUajSwqlmlIalK25HF6e7le5QsHuVNO9EEUGvScieDTMCFZkT4wSprN3PWQynglxJhmiQBMhZVkvQGCuhy3sGznDAIAvIckysxSNLSamjH8rL/iQ6kCmCWULlOP5La5Cs7pTIL3W4dKITAHf4EO4q5DGYsYTJxAmKicRJgvAnGZ4X3BH3jdqsaKPhrAlcd9II/pGQ57oVzQUSmFQLm+lopVwjzel0YxGq1ZiNdKcpfuGqsZq1tfw2zUtj7I82jLYr2C4PWYaWZ7sU0shbvISKvr5PPYncRCxIBcTsIcjEmiZi+j6+xZjUG3QSJJkOZ0oBjriBHZXeDFRTOILE8ls/Z1QmBmC1XFrmI7FjqdMACayJ1Eg7HQJdDV0dWgN4VgRHHE5ABPlwkwJvi3SNGU/lasiDqPyamkvpWzzBjsBryYXJNXRm2tksf66FHEGdBmprXMO/1yFsdTx4ATRRPEkkcqIE5HnoBB2PKcIq8ZzlSN8HCKVJBHWJzP1NxSViSkoDNOJZpubo9BJtAXOIPRT0X9kVclq8tUZa+iMJY1nT2BPZE5i7yWMRBxEHkXREryFuA1pTeFkz16JKs2eU2cambRkOYZ51DBJkZdkdOBO1AQu0xoxEcLlwSSBqtBzWJOQp2j/YPUah4IrAyPcIIRHuRyjYm79IrehQq6t9gjOo6A5WAlDn6G/Slwapo9gn6z1M9KX/NyrefcT219m/6T9N1+VuBqwus3JnHV46zL3MhVy1okYqZS3Xcm8i7xvbUEzwFWV2XeQ5F6iBJcLUUfaS0gcx2wRFtPjKKVzUzgM0nCXr5JMDXgZL8jbNiPYm2wRUCU4+QQoQ91iwHod68TgjVRIY/cPoxKynq70EPJKDlY+WP8/iJENKyo2DdZO0RFCRWl8qYaUyVu2HuXo8nyFlO7UrXuhigi9UUMhCoNpZKOmo7sejsnhitMeFwkw4jbF6eKNCUQeE6I3hF/ZyCJFXdBcy2HclbkniyIr5XDCacLlCrDJrYNzhmcQdHmIRFtGVnnvci45/f5axEx9ZsTly7CRjYpavpZsBLBW4871xpXwuoQwsnGRf67JdGbERWSYIk+XT4QhBZrEundut/S4Oy7OUn2eBVcfMACKZwtZ7vfPkikU8liT8fgJ5pPMqQKnI5sNt3bV9WYXwYCRCmnsJx3RJ0l+6/QvNvRMxawtzC4Ve/pNF9wma6m7xmLp3uXhEaPZS1FUrC1TzWgWUWglgRYfAJF3xGHMqRcDDrmxOBMSnoPnyRB33z8pwsi4oobUmtOoPmfI6dsqlqf6FaTnHQrVMCiFey0ybwY8BcJphGVwiQEUb5+AImiIJCpVoEz+stnFThmZ5E4N86YgEtlZrpMAyaHS6KGQgEAbv7A3kKrhuJCjbuekZkO95mq0dxThTHgj4YjVXu1K1PWIIag9EYMgwH0ZijiLLKJU4NcXx1Mn0CaKJlGNAIcDCHic5Z4StDNOHDZbv7+bRDOSrhiJiqUFgdtxi51Q7pTJTgfRP3jnYS57EIs1CW8ysRQSOk7m7p9jnJzgFFd83PHxxGcIp4ThMwUXE6dU7Um6wBbQywdbvtjyw5Y/tgKwFYjFERNm1a5XNt/KwddMfBXgEfF6P19vBIZYb/EKsmGvtlsHs+XFXT+ugvmLV07hpJyoQKWFFlnspNPOvvt2rlm7l9m0J0S8iAXrI96AQ2JiYmJiYmLiEdmal3VYUVKSJGl/JWzgCM7bBzojlGUlYKF0vU265E+2EO5klB3PUFBWMSOTWolpoaFoor5MkPQ+o6HQ6Cn1jcK8p1zf/YRhp1TgHVfurATSOreWKNSiPbLa8byeBD23wXWgdW5KdhHedfE2EVhUMJNDKaHcdLor9Imh3DvtcFL4Y17E00B5ZStaY9uaXDZpgKZvEZQWWXJKPeq0IL6r24RivS9KJYVHJYSovb2ndPFvOUyxNC5yeXqLW8iJswKBh0zx3z52tby6PyMqltMpj0zteLz4NqK7DmHRrSN3WD3G46yxswltmY2NwFA2nSDKgZ0E5DEBoia2rObDAAy4OTgcRC0G2k3EcdVx6veK9H6BhqHA7y3odv5qPTAUKppb7vWymulmK8NNz9UZ5jiQJkwI7CAgGWfJEzgo9yDmmkgT4PNBHqF2vDigI4wa1Xv17/28Vbquyn7/PLcDQ2HYy7B08iq8MdA4eUgQlpf5zvZaqBf15lCE0M6cNvZpEiAZ2F45nOBqF+dUbKHUUI6ne4MAYbiTVO3lqVfKb1ayIi5FXpcDlGlyjhzkw/MZmPmoh5QQiZDYcpOgDpXi/1NnChbIDPU5wLQ8scKEcyYn50pPz42BgbtUaTxkyOAjWzZfOXL4yZXLX74iAWabrb8yZQYwMxtoo40GOeywwYlIhCGZk0WGZllWGJNV+Z4i1dkqNtuzgyY7s0tSbuYmbe7mgcmlLKUppSoVfU2oCabWxNIxlKGMMiujZsip3MpVVPmVr7gKa5aSKq1SpTW/Fiir8qowv6qqihnd6DqwsPbVo8IQKQ1qjbIrwYlZoLkRJG+6WZugMZshWKeMxCutGYpJve3Mw28xpYiLzi/bdEFwn1ZxmiUMnnpvH8aVtrQW0e6ZDVGIx3ato8cXg9yY3yVwTMWfoZlZasK15xoRJu19atJdVE3aaQooW7py90yx2b0cRnPzQLBQ9HYIGRn2cTuDUU7mqC7QMta7GWFHwDrFdMaTcOwsxz9wFp3hDa95kR4xMURdxCne5kuXVot3fK/AUBFTYyTNwCHho0m3WELrjocfdeK8R76XC8sKb0xtLZNbrPCKR+W4yRFYr8cdWSVxbPijn5fJ7dmOHZjFHoTyqEnGo/iRX/s9m7fejl9nco980fKEe9ZO25rQGIkA8mLmLDUilOb3hTSBN5ZhC0Ppw8fWDJvl6bLWs0om0vNerrzWNo7vz22ZHyX5BJRxLb61CbxsxLC/f5mvCpm9CxpgTGm0mMU2ZFnhZmZoe6P4i3wiNZ1xall2cbaXQ86Jfv1ui0W+Kk5xF7+1CfzDjUdlRyiYgjb1nopTbRc0MOZlydBSGxnHwAhJUwDznPM7XDt5mXHPiztGft91q4ufPGYV8ntnHuOxMKEus9qnCt4NAkC+2EOcjJKkrO8V9zTVQBEfQC4jeS/RQnV12bAEfNhtdUrQOHvFgfxCMpQbaavfRzKKxDFTDhQebuPIyrNyoFCxIqVGLXIygcMhw8uTcy82JZhpiA9XPjuXa+2v0tRpHrJVh8XK5SMI2G7k5DKT7ct2NPJACAlHBetq03f4yQjYWor/KH89NyFNy6aAZfcCPXd/KIF6JBZmc5T156XLzGXJ6MrrokXOWYTZ8OxwfvkjfV6609pkows0w3++aaoWq81hGOyO+h91VBj9Q4+GbwdWiL4yGuSCYyG/BJvVEvDPNPPUi95/VtmyVu0ZmtjUTqqtrR1eiucax2SM5Dze5puIrOflYNPzPKDLhEOv3R+QCE6s+kYtThtQN9QWNv4pwg7GeX2ZlZuQjUN0+tJo0EhUQYT74ymt1oWww35CO+AP+pL6ZgkTZ3Wao8595eNLZjMLXf7QO+Lga81u4TXJUfseAUH/HUsQlPWkQjsn53QV0IokfPU5gcVDN5ey+5t/vund2zM6bridM6h2XdYc2rWHOxatInPllyuGRjh9IZYZl58tA2aPqPK1Vr4jdOa288nZZpQ7JVr4H9lus4hh34OJSGzsgMM+54OzceTY8RNo+nDGutrGPteGPgeE/1zbksih71QDck2qru1lzrsO3fCRj3u9a7IvUWQeivblx00HrgguaQaOhFNG90eTaTPiE1hZsmZF3DoqkHkvm96X74dPYlNQzL1amVzbtptuuJlbeG4gNT2/YNDl+QW7XZ5fkHRZPkP5+kcReN5h0kWyvX/e6p5gc8+NRL07spHCH+2Qx+WzOq7LbDniVvfiXkpoeJQHO8Z8SBxht2BXAhj2Jzm3n1Im7V6xn69XYgk4QIRv5rxFPj8O0co68Vyf//bCf8Fdw3aZ8cS8HAX5tR4zee2G0yXLKziJFiw3a1ETRLImUkmXNb/o1KSR2LTx660Fb7pEx70N2SQQlMaVbODmgGOQwr/lRE1Naqc4ZRbi6VjvlJin37FoOqdevRtc19fpT1/qnqn9a7tHFY9UqzpDo4lLkicwxZgdbr9cQCcL1RYpOzfhViLum2j+Hnr7rNbUcezQpcv7btFZt8+vKrMfwG8XH9DENOGzsdKbtETTVWkl6BjpCUxSzIwsRFY+FBM7HQcNJx2XKLdBHj1eA2j9GG2sFk4fnkLQJKZdoRCW0eXQY6bw6Be3zWpH2S6bfVUHeKfKLuRdIdxWSx49aXgT8KHhi8rvIQzms9Wgl3JkmrVAPwXDALqp6NfGsA66abA76rEfTJLcIyD2OFRj6qpzORp7s0x9OhT37VXoWOfVutBNcpUfkaoEq8FVJ1bjYKkZTRvzQ4rFHwcVj707OBPwdhdXInSbuJNg2oJsG3U7kO2ibo9sh5H7jLb0UDpluIKgmT4x+uSJAOBQmWiNQQRgp2FnNM+socVkyhyrmnpmqXIthgZ8WW3FNxaLAtcGHLOJ0KEdPfjPSVqMTgKwC5BtUnQpWD2btmzZtGnRIsWirkXLJP2yfHL8AkYsiAL6FAAAACwAgAmAGgBkAAAQFAQAwAwgCOAAAJDmvbEQSgEE221AWyelstEKZQgqgS17Ej9CG6DoT/ltRouXPH2bsuOGbsfK9G09wEGh4y1CwT5bvHuo4CIDCMJTw/imZd1CkGbc0X+fJB8VfwstEHU8nbbw/prowT8+QDElmOTENPMhPIH9OQwAY8EO+eTC1Th7grqzUhB/I1P+/I3cdwFOBijV1cHNzpc6XwlnuwudrXY2QLDwulnjduhXzAMbOs1tlEOFU1xSlYtN8eoOA+w8CNgeIvGjEgKjpnY+hnqUGC5KXJEuF23bJdl3IFBvylAZLiNltIyViTJZpsq0zCt1ZKeNV9uDOlFOm+lumh2D4PCme846TPbB1MXXp3yFqIH4JP8RF11Bj434iCvhEOiRndy7bVvxImrlRTeGPuoGbPiNuBXvhXvfwIzyVM/q0ZzssNlH5Vcqb+SwNJ2pDLqSJ5+Hc/lXeG4XoQ7qsBXatFHt2dGdHRtzHAKuLkEVuXdjU/sV4SF9YE4eRKDEp+LMDkVJ4f1PoJ05MGcPtuP3oN9kGHGc2FGjN9Wg2Mhtt2HbxjUPPOE2DFtBYFdh27IrOa97qTg45+w4N67GmJ2NPCR+O0x/mXMr0ZNELM3b1MpG1Fl31zhRqA4lMITwfGI9ewFaNvwzZrtnHbH8exZX+Lvw9NW3LWYvzO2H9S5cCgamDlK9FTIzok2VzzHx/kQbCYZI0Mr3sN4rIdGlYuJTlb8ScvMb59MEnj7zfC6chza9q1d/Hvky/H30h3/umz/OpVwXd+FEPVKVRRliMamNSkN9LpaDbA2WRweqpS6Yy9p0D8ORZ/l/4NsJ40YQ8nSWzTI8aDIqSy659mEfsseNVcQrJJwGjBxsL0R3XUw1ejDUQYu83qwQRIIkDC4y0IGUaE8HhEIkhYM8EQRFTlPBbx+BWhn+tSyXCpUNlx+gquaWmKKCHh7suwwjoEiFYNYLUCDaN7J7C6vmUgFUnIqg4gvR349ExWJcCTbVyzSJJCiVWFoiU3CsDfPyxG/ho23WoejWZMFlH14J+MbuKdOgjMrPh+CrCtNwxfZkUXRnqkyp2wzVszCYMSfzZIud10vRzY1qXpiOvBgHn3NT64jZwVZ5kySmxqOgbzXvdVjvs+9D9aFHrHYun+nXgMm0OvpteB/2jJaVtkzUmKTw870LUPiqSwL0d1/xEAke1Q06jlw3zEYA61w2Ir3G7KQ4JYNugXpEpR2YwArLWQ/wYz8s5CkFI0leRyjairkhOrLH821NEizyjCVWLXXTMg2rPGqNh631pFTjSgMyiWUb0jqr1vurjf5sk4bNHrbHjn2ec8CaY5ac8miK4nxWFz3setysXvs7f/SrxQBdieVDKnqGnjwUOgNpC8+faj7452LYUnbKOQkPjtCu12aD/tW0ZkvOIz0TYz3ObsDK3HBpPoS7iNmi/ri4taWB5TyzXussUmqZYFm1Qqg7anpwGCzUZj0dZcruDQ4JVsGlAEy51TgJQcmj4Ofqr1kE3xzWDpkbLmGoIy7VNk0myZJqQmmhTFRBGL95ptCU7lRXEUePHfRUmJs4Q80q8dJEPGFZc3viyQyl2U7JUVJVoLS4YbPfiAMDeQiEnz1VkZEpI47g7AB5bFN4xoH3Q6JY7VTT5eIiCW0dUXXC1EAa6HOapEqqIaXVsgXLEW0lMNgEhg7WZSLepw1qXp+/G112mm4fEqbzM6q7qtPVtLfH5YrWMLdA8wJ1VJ/Gl8RJNaM0VbbIuCxTbilV1KKHEOizScXw5VxEECO1Ahq9DlxEjwwnI9hKFQQNMSa7l1xGKMryIZn1IsSRazKku35uq48KArOpuFsizFNpYXXzQpJ19VSjyiQUzYTwZk4j6VWW9YnPGhl9QjBXj12TgQ/C0i5j2iqz6Ni9YiLUoFvGVPHmZc8ygVeJvpRtBDhCQdSjgp0H5cMgPI2v5kSIhBUek11XqFDo4mFsOUigHZHDdfWsbj1mjHds0eTdhqHqvA90JAyFA2h4IdOtFuXCdGjBnBzrhytcHpxG7EPsDGq6ajZKOMgLPwvseVivwsGprWFci0EgWSNXm2D4KZPRGsxfO/qiYWLnUrWQj+1EeAb9l9Yh3vF7Jaoo60gWWsO8XVO1ZWWLqxyKmimiCkSUjt0qKmsk6MeTa+M6LvPikN21Tbur9GYGjxhqRfZ4dPHzoNRF22K37yMi2L5ybdg8LCFAgy9qGrCVgV/d+RouxrozXm+C/kTDSfpKEDRy8rpYeEC1Dnr1KgPZeDLVrjsQ+f3TtIJ0wszCrDYpJu2atbhuyr/+88fyAGJhnCK8tnBpMIkmAxw8tCQ6QWZBlEUhfygkuxi3Nj0NMv5uf8my9FrKiujULNoLEkkpuACFOsdLy0VHmPmwVjJKVMg0hWxXy60qzvgT93/zDASBgCVgtcBgG1jZnHjySL/3ZzfjYxEpJJKwKZn9XSrqMalXd3QKM0aady60NbvEV2VaqBXKCmUFs55Fe0yGh78QlMvhliIGqsuC7PVcFiqeN5opodCSHG31djSKAfni6uKLWywMFItABqchMUzVGFio2Ad6cAjHfTh5OFu4nGSv05+FeRAtSJKBLFOW0opy+kOt2rTr0Kmr6j79rh69+vTn0dO7jWE8JjCJipbnT3+3cBKLackdy7FKrLu7NmNrrataPMh4ZHZiF0/tox256Ts/+Om6v2XyN1yIm5lHWMXOVXkgyicgFJE1YkhIycjN5y0qqCqmEhyR59AWsBQrFavW5hmoA7BDyAHQmX8EzQTjmWFhZWPn4OTiHvYhpgXhhYRFRMXEJSSlpKuMfFk5eQVFJThCj97hJjQKHB1bFDunKhGNT/69RdwlJKiy7icdSERzFqFwoQizItXka1Jy8xoU1fCoRsQ0MqZRUY2OSilRvDqypmQ1bJnSkpGtdkf1i9+6QjcFS9xD0R/06q+o/i3+7w+pS3cvudth65kq91eN1shK0tQs2jPnQajzio9fYFhs3ikFDxTqI4XytRoCkEFMCCzwMwg13CKih/oycDtOgcMxcEzqwb7JaAND0R2sT1PQwgq6gtxl+/IrNLbI8cknFDopKXsILgtvOG+kcfl6LTk2Ja54rWjUqFGpRuUse0rggAr1ehnLRfDMVn0jzkfeD1Th1KJBU9fyyPD1QR8rt+xqJWtzNmh0+iOv4xqK+DDjI/nYJz6tG6f45iR2VWOPV4dxjjruZOTNDbd878dJk1Va2Q25vMYvWOUXKcLTZBWdXWnaWTMZq6t6bLhmsAS339Wo7Z2130MJPb/l3W2TtpN2bwrIHst6ab2cp0kYBRuLZbmBiIjKYDfEMONMyJPUpmBqKLVuhjALsagei2WJpZZZbkW1UmWV1dZYa70NNtpks6222W6HndU+xAGH4giOOeGUM84676LLrsZ13PSdH/w0IclskQdW+RAQqhLqUjJyVa+qfoOGjaZxHlSr1XWda8sYbnSg6FBYRYzWGooyIKVmtInOiCOGHwlngtXMLKxs7BycXNzLRflkKSPitEqURLUIzygCOj1XQragBIvj9frEeBDeD1rDdH4QxAJlV0ENCCP2lpf7BdQf3yys/2ZT8q6dcGL1B8J9l/kA8jK0xzG+YrPE61KZS74wXRyoAtQCGgBNgJZgA70hommwpiGahgKGaRqBGIkYY8tYW8ZpGm/LBE0TbZlkx2SKKXZEfaVVS8xNbfZN1fAQoJ1lhoNGPz/jyItzvCQve8WrXjvjdaBkAQAAgAZ0CNo3LDZLuqXe7RLE8hErrFqpaZXV1lj77lJFStNk6lG2UOtsWb+LDdhok822Vtvs2G6HndUu+/bM73VgnzfsTwccdGj4MOCIpqOOOe6Ek07FGWouibMW581Fl111PW5U3Ixb5jvf+8GPfrpdh8KMRVL3EEUb/uD6es39batbEeYRVrFzzbshyAObeZ2PX0BQKCLfy2P6JeyUslemwzHYL58LlIqmNOl4mLY79XsMmmGjxvOkVtMneU6jBeUle614rNr8GiXSRnViwzUzoxlXzQe+6hDyMPB4HUsdLX7koMeOgv8HQ1SZYHNmFlY2dg5OLu5hH8Jd0MZCwjmiu2hGDHEJSanhNGYZzWXl5BUUleAIPXqrPmD9BgwaMlw1HYxCn7Gly93bunW1PtWkTPOBSYdeyGO+4Js/Y8Vcgdc3g0zMAxp/aaFuK8bjtm8J2Yl8vBZKtUgmS/XXpuSHmc4Sh3Qy6tLThb8JIzBnwLC0yxn7xJ1qvy89S0echGytnerg/JiPTcSUpqGwbuNxRkzdcGygjsGu7nFMfL/DENmeLkHp1fynBiH0ynteEoxFXT9I+Vr+B5anb3EBJlGoBIZn0nV3zUtD9IatheS/H5dgdFZWEGyiMvAXCjawqQm1N73m4sVrqbPOevVinyb2eZsb09bZkZlzoutt361x6dOnz4rCezI8zIQNHxzY3u1t6nh48qaDvxdMIP8vJ6J3rUFd4aW3U6uSiOXsZFZ4Nhuac7DT6hMtx/L9LnxCcKmZgcSuLeU8q+JBSq0l8u8kfro7GwBYuk05Y6HhN7TPOsF5nAFRc2sLiWIfOTpRNJsQdqYmwRmnG4HUEUvkLmgnjF2NdbtsygZEX2AmglWeVUQBR+CSuS0PvJUeVIJa90Ku8pkJmHzUUMrG4M17auJ2czdRWGMLxcCLBJIICx5dcMChQ8N7rXTnRvwVj4dewe7Esnx+gWtUFdQfLuxjoT6r5keqifKmEJrFY0N16Aomg6XLMaD9PBy1IhGP8cmxxE6kFKMT8U90oFSHPoXPrMhaI2684f4UD6/jqfNWgiZS6lSfUdS2t0dnH7XBDTWVci2LmYQIIqiABtkywWquj6Hu0VlRv6Yu44ghDjR8Fu841TSWaBg5fmUC3iDEQoxUUoe49WfKcYxkChEYhz5xhw6zwoL7GTHSKVRV3zZtMOUq79yxmfNhOAszMrOsFo/7XR/rNa+thcgfPexJnnnquozk2OZKmdas5POZW/UdvA6oMoaNlrXMad0vW/LWcl2vkC9Sb8ZfCsYRd/mxLUp4qQICWjPJSqkk9Whi3pADZ5Rad3S7OWSTUZuLM39Tzg3dVOBBZDGHPkhuoVdQOZyi5vRKO+a1gFK7X0RQTFbxqiQ7onb0A86RzqgPVUhwrcvyk4wBISNOfIK2bKn4KC9475hNcCxRU4tRxSp+5fzwiBlEtjuxqDn8nN9hP+9MdHtV0zKBn2v7YbL5JvaafwUtKcnIitUrwtoFbrXZE2KnN9Itxs8W9/Uc07Z2/MDjfutJH5kve9dCZYXLXoyegoRZ5nZtVnIpZ7tZwhjjbnE3V2wwPQhyDhwIgTtmBEXlxRnTnDR0yB56ft1jdaYtg34ykR4qjo4FqCNMmjkUJbFiL1Q1dK+PZJSKFpSDx7p4WkhYjLq5S0uKU4ncgXZcEgLETSTAcVEzVXU3hjAolG6dNu0Ol0+65WKwinN7trbxHLdxNEnQeCDpK6eycMoLpT1QTb1patlVYlyRP+WKnbli9nOuuvYcRWIvulGSsZaT1BWPhGYYvgw+myFRcv1KfKSBAhmLk8llXmKeR4d9YIGo2jaIxkw18YrAD0GzvcbK5CHpSCYlqlhmUL7l2VySneUSBHI9PCuTospHSSLtKXer+hiKJOohWaacxc1TfwkksrENmoHAzS1mt+u4ICa+hwJW3XRVXp4h0zKcagHxR10Z38irUa6Br8uZhCdMvqZUGcu9vyEw7n30XQ3DWT73UJsRLMrClf06BSU6xDWYdFOhH8MA3d41bQziQ5Ep04pQtpehdhAd8Y6BTP85SNLDv6Y6/IwjJ15jK4XQ1ODsGRucRNsLmeXdUBQPVC3Hr2MpVXgNiobDPpOkitgn3lwaLkAx0zke6ofyp5INMlU8IGpKfOHtQmhkaruTMC7gcWfpQQwgdGOmSI2rSYAMkdmcDPzCojyQUkhxZH8QXuzxXk/FrUEvtC7PMqahRBKXZIAjPLGiC1K+srkjJY/9SwXdbiw8EccNzYR3ZM64ccyP9WVy6JTCVXycajLWzzMdODwSC3tk/LhBmzWqjZnnsQ1bQvyPvKfZ0ON5UqvDZpjJuW12mUSf61q5CnkspBdpWypdrJYEjKwK3X7ZanYjAaIo4L1UmEgqLv5P8k3GKDkjQ0Fe0jbGbDcvGqs1EEKTB9eTvkT/ZsnpiZ4Izp5YEfh8sjSXotXrE6d2GBF7tbp+e8Vp9wmXzJ4fIy9qk5Cc2NrNM3n7dIGLOrZYs1pnoK6rDLquD6NltTMrqR00iRjsVR6xZ0zyhB6wEYboNuNfXOhESlibm02RZQ+wyyY641qIpyaBMCwMBgIQyKoljZFogNeXyoAcOFIVtbu77mZyjK7kqltvHlx4FpBZ3ikDm60Cphpu6EMf26Ps+N/SYVfpy2DkmEwJx9vttsCQXqk0kk31RX+AC0vY9soc8Dsgp05VC9MzAQfa4SyCeyEeQIDOkCHyL2ZOYQCiQq0kP5iB6xDabQ9c/ZjAW+raaBa06pTAvKyPcU6iEZ+jR2ol+fmQatsfh7BmjO0xXCxYX6CD5F4yH9Dye8RFsEsCPWgvBS92iUd7Q84vm1sSGH1okwRxlPC4pUNJD2bZwEwzwd4dkbhMJaYYIbD9W2EyMxnp8BTZGMq1z7Pbi9bgYF2XaEJjvyYhFKWBxRHZuXSEmZxemyKm2f4sAyStAyKQr67qXutE11TfDvZJq+OzTk3UrQ8rWcLqWQCcIhU21QWXEtazl18N5p7IzkQZNQdSgL2BQELveSwRlOVBvxsHI0bmKPlioCYAiDDxA0jNiKxR43ZYLBEI51wqIiXK5JnevaxKOc5DtEaWbWeWkd7tRX3iSGzMinwUCUZX9+NvfnHgzotYrvykZQjMkbvFEKaiDorBLBhPa429dkDk8sqGTas9e+2IfCgJYe1gjko47PQXI6kmT13UNTv+9cFXiyEC6Y/k9fGZ8y++YYigsbSDkkVtyraImbyL2f0C9tdg71A/jOA/5K6/Z7XVw1bNlKIdcyLKaFZLtnsScr2jm6r8Epa4VgSOvK/tBsCUex7TFGXzDXazqFWbduPoHZM8xvMm/rjllPiRtMYzv1M4mbRyr1Vdk87EjrGkCmq571UZ50RWA+a3RZU0HrXaZSNLsQm5BDF3b9WKVerXfWKRXx7HswZfuIqYDWJ5qw0vLEkPrsthb5DxajQuXeOL2NPEmqQKpfyQSyTDgHcXUw4zvkW+3D6T4CCpPRJIZCOStZ3ze8lrfW+Hb5E8mRbD3FHEfPExn9GNHW1PXlj3/qSvpOk5iL/hgdMbpBYK1hE4VNzUm/qZ3wJw1xqMEVJxxGc4XtIhIfWOX8QQlfBWK7uKXyh7L7nPKxVbzpXsGn1DYW9neWF3Dk4d3aGeowbag+tWTOxtdK9qLY9dCZzjKbIgmNpUhJGRgZRv345AUnFQ03xBWkhD47i+Iu2LbmbhYeVFsTmvm8bi8EQSRoCvt/rxAt9qhrAYYVExcXlJBSlpf7areSI2HKJCUEFAY5P4EdoAA8tbTXHLodtEHDHgs7OA0AaExFMpbLQA9PQELkQS3mSeiji9GrOjRqC9L6BN6fhJ6/FABJu3RmC4DhmEAEK4RmGY3iTaYhabsUWcfjxnpWixSUcdx8rnL+AE9OAfH8yJFoJtNNNmtu7i+vBQipl3S0ZQj3SeYJI/eGyWYqatKtJVpaGCQy6r3MumX1COw1ktFr33B9TELSqLiigpmhIzZ07PnzdJtoIAfuhi1Q3XBqRJquJ0u7R8FOJJZOiIOsMoeksZGIc1cpNhMmpRRvTfnZzcPKq8xtHaAEAEuAAyQQkm7RQ21rLpYOlVc9I8Qb4MrINSAEGiDSCoU1orrVAHQSowYofxI7QBFE+KNhwtMt30BGrHFfqOqekJRsBBoeMRUod9Nnr3UMFRBhCEp4bxJKduUXHPWM1znxpeWnRLQzvqeDqNsPlrogf/+GBLSYFgkhOtWIfY2LWewyEL/EE1M9GicHnubCKIl6k5FcoyQNCZPjjcebPzsXDDRgLfc2VGwCABYoUboD/UkyLfch+z2e3mXjNZUx8l2T7Cal6k9vkVMtO6miH95X9GXFgZ/9oECBUZpHFmJCMbD56jQsqIPk5tpPZdtT8SZayFKCax0UL2SzKb+qUa2OqJUCLUCC1CjzAishC5iGJEKaIcsQSxClEN7gOPgKfAC4gGRBOSdw0kRVD/9qsAUfg94hBiCAsl7SW9N+mcToMKPiutrqb7xgsqqCH/OmYwHm1CZ5hDlO7sUOjr9YiOamWroe/T+jZ2VudCP6tLoV/WS3pVV3dNb4f+FPQXuqGbuqVPd2tfg/5N6N+H/lPov4b+x27vjkkFPDBmAMZswwHGQsNrBIyBY/gIgbHZjJmqqZnJ0wDjqGma+XMWjItgXAHjOhi3wLgLxgMwHoPxDIyXYLwB4715fJ6F8RUYX4XxbRg/hPFzGL+F8WcY/5ydi20E9+4DAAgIMBCgMMEMDDgIkKBAgwELDvyFi5AgQ4EKDRZYYbv9OhxwwoALbnjuve8E8RVwQinokIVH+EX/GBqjIyKiKKlp6RllyVWsVLlshcrVatahzwgqukVr7nscj+KfeBZvoj06hDMyjmyeL6vPiKlRyZrt0dgRo6NUY6A21ldi6LF+pIxd48A4NtLGWQk5Fa3ZPBgPx49OUhfNbuje/sDg0PDI6FduTgobn5icmp6ZnZtfWFxaXlld27IVbWhHHR3oRANdu/dMaz5/J+ffAuaMVqYXD504d+XmylErV69dv/Gsc3PxpZeffeHl1+btd+T6R6bmlhdfy9d+/LP8z+//ktvvEGD3TGxdP4lPsEl6UpiUJvVJdzKeLEIbU5dL7aeMmIpzWdVN2/XTnWlj2p6eTAfT4fRx+jr9nJrRH9rrB4KhcCTa1ByLJ5KpdCabyxeKpXKlWmtpbWuvd3Q2urp7evu6kozh3Ye/LGaIz1vOilb9atDvNLe10XY1xv4OdaTjnGyis13octe62a4We5CqmhVIc9XrnLnbMFatCzmxF3eI00YfVulA4nCWyxB/tyeWvbPabsuretVtnpu6Xxu8GZIKlFFQBf26zV0yMxMc3EHylA49G6K93h5o9vRwFhZIvYiyWYMDmDcM2zxcCUuT9kuqzk2Hw34HhwvOKf0K7Q1SNv0mh0u7eq9qEz5ZzRFh1SV66tkJxamGU489rswd2Jv49DfWCzDRAKyZRW8W6MBu27KbkH/7qaezYDMbBYK3AUttq/OwdWmYGoIaE3hgnIHoMAPGm+m1AFiRZqHweA8SHqFzjNdUlQhWSKmIwZ6ZB5YMr0c6dNspeEgQMdsNsFU1VHcDZTGHHJUx/5A+2TeAQXokjRHS0ezFzJnHAiZ69Q1f9o16MJvFz9h3Q2qi9bYivfmSA5oicO8C9w2oRHd2HpyNMsp2mzCh01OepYCrSul1am2HRpbnHhMF7oWXhafrBv1vXV1EXUgYdzyVz1C3NEBtt108GDTzgH5uqLA4Ka0l37TY2DrNNqPTz+mcvmFow+L32Dl6EYPJplvnqy7KT1XtOoy3CUtr2LJU33oH6eAZ2uRCVmClFwztmy/22GLQF+u39Zu9wcWJfFNp6KaCCDMojpVb291NCEOxTNt87m3P1P1p33gqgG0WD08jYnGChImoo7PrJBaDHDV5pPjWI/LvR6AfK66OZrCs8dQBqLzJfDXbx90Izo3GVMKgAJdgL1a1YqtqLEk36gAobM0X9wyrYmbbME1VaVV/Gt/bBGDmgTX60BP0BJKgBETtly34FrsFVW5x7HmGYKl/30YEGIA1yGBCQ40kMtpotkKEklBQkIoSo5c449hTGc/BBIkcTZTMmc4Unspt4K3GNiFq/ULuoCZqzY7ROuENvXc+WKE93bA61kRiZ6QJ91P0yXA/02PybzFUhKclpt7et82LAAAAAAAAAIIgCEB8NsTlJ51/HEK8INJLgIGGCyEXQ0UjmUE6k3yzzFNpmTXW2awWSVkD6YZwd1Mjva+Ne1GDU2aWfuvHSKPhjM94s+JtPxPoZYBo4yWa5Lqbvunwv05dDCAhlLjGPZ4JiyHTELQsdRAF04CZEJl+yHXoZzDT9eqJiDhw4ZWC/UirmNXZbs9N8hLZ8Hvqz4WIRBsnEfEH6qnnmVpi2oPalC2CJAUBUyBh2KmReMTsUf38xVCjRYiipKalZ5QlV7FS5ZZYpVqN7fao16BJi9NaETUNrV+cJtWvh12MdOH7/dbrvYmE3Qk03AcCTHjSDWysiTW4klQfVuVU3nqkJzDRzOBUSiGWmkM5YtIblVLiZ576vR6c8Tp0BqTINN8BnVmC/6Bst4YSaQ+IpLvmjkf+8cwb7TpCdxPkeFh8REhRoEabfgawEHGYUB4BgUmKZliOh4BDwSIgo2GC0ow+UZ9fIBSJJVInZ5lcoVSpNVqd3mA0mS1Wm4urm7vdw9Ph5e3j6+fl2wwwUzAiRtLsm6x5NL/Wvw1to5EhBen1IFkK0raCtDaQJgYk2SD1FWwVnuBJDI9HlkIwMezSti6IH49kPx71NTmkIP1O9npQAX6DURbPVoHlUmZMwZjWV8WjG6XUpJ9PynqVLnbV/i+yzG5QNzXSDIVZMRZQmqOdHCvlFuMtU0Vsk63s1NrLQZ1fuDiihY+TzglwywMDPfLYCC98NCpeGWBspifL+EqeCRxCSmvydL1gR3byuSPYWhqzzfPEL4Y/YE+VaC4t8MbFauyiFUp/2WYiYjIe/PRn8DuSd0yfgmf92688ROH3iENIaliQdLOJO510Qkfmwy+b9ytlefRL59XjYINDDW2jnbQHin8atR84BBwFTgCngXPAReAKcB24RaTwYuTCYRqvauAX2AfDAlL8nno8/dJzwc9RbUn0JD3UXSez6bVqF8jvjI9zQf598eMeP93BsuNeI8lfu9ZtAbsQ9/YOjQYZvlrL/UaO8gOlvr64cFCNDQ0KAG1YfBgO9Py/EegDQ/9Z2Bs8DA3zDQV7MO8L/A1cJHgbFllIgc/h/6wDHEUF4f3B76goAtt/AIGFBhIuNIiIQoOJZPwQYv+/GXALItNm9HmcdnCzxA8EUHHBCkxeRz2CoCSETzuBmWI50/t+F95POAQ4IsPZDvrbVZDdBNidnz342BPoQ9+hbLj8GYD896WANCAdA6TKUmyBZb5Xo1adQ/7zSrvOcERM7CKLV4IyNCFRRBlNdDHGlMKUpjKrsi5bsycH0piWnM2V3MkfeZZ3+VqUCqmkHDAgOYpjg0757IAIMAWoqdymisKBmlp7cB4KMnUNAjK1BQcy9UksyNRvcKCm+XzYCwdmP6w9/OJI6VG2+5JjrLj02Ivj2uPNJ2Q2+bbzY7XV2WtO3iuUbCBJdSzBgsxyFQ5k1nMWHpNv29nm4xj5lJ19GbnPzjFPcE1zrgPyXTvXNUPvIPyWv8p/7dxzlQvBg5p7qT5xm3iEkk/ZefbhMvnz1LwHgY133LK/t/A78x1HhumHEDb6EkSG+BbwEZ/ic3xJfv0X558BpB/3a/JTnDlZkMosyYqsSXVqsicNaUlr7uSfvElH8VRa9uVYLuVVfqLryeEVUhGV/JmHogId6h6Y0MAIDY2OuLiTEhmRHVoc5aH10RxZl44FNXQ2FkM34n7ceRIH8Sr0Y3wJ/RwdoSJDL4RCJYCFyqIQByqoxz8GfYwxxwoUaJxxBwOWQEIJJwYCyaSRQTb5FFNONfU000YXfYwwAQ0689xhjXts85g9DnjFWz7yhQ98pkOQlDp0SUhikhBM5yUrBSlKRerSlr6MZS4roYSWs9wPUWeChVf0lNKUoaWqjObV1CjKVPVo4H9HnhCt7xCYyCq0sSM5QgMXFRFULN+1PEdWK59mHE6ur6IXLocz61V2RzFc2Kyqe1fCFWrV083Dje1qZliEO7vVzrQMD/arm2UVntCrn20dXhzWMMemqI+aqCskISif0xm9FHKFh7GQJyJ2Fp11BnQHYiCJnuklHMIpfYYpZkdO1MbUWFhYgYlFsTLmxLwojB0xP7ZFWVlpAvlGURhiffCABRwQAStgDewLG1jhFrJwCdfoBgRACGyiB5BG77CLXtEn+oZjFpyFZKFZWHiHRziHV7iHZ/wSDXEwbCMzpkdq/BDFUVJYio4lsSyWR2UsiH3xY9TFT7EutkdNbI0thWpmjAl5jA1FREZUREdMxEZEDI8RMTJGxegIjpAIjbAIj/rYHwfi59RMLdRKbdROHdRJXdRNPUiP/CgIc1ab9uiAytm2Ylvp2fZsR9F+RelQ7GHtqY7dpM+i/+vTALtHg9TPHrD7dMvu0gVt04Io2Zt+y1cuVam6muo01Fqn/YRva7ce/e6g4TN1/xNx1px5C7alEGmcBBOoTaSVQm8qg2m+Y5QmXYZM2XLMkKvALLOVMduo1k677LbHXgcddsRRv2txyhnnPPV8oKIKSsoqmr284PNH48l0Nr9+/Ub5UNaycvMam5pbKK2LOEGqpmU7rucHYRQnaZYXXT+M07ys236cV8dD3AKIMKGMexEpSpIMHJ5AJJEpVBqXxxcIRWKJVCZXKFVqjbZsGRA1SG1SBnFJK/8ZIRLG9quuuq6sgCRi2VRkvVQs0i8bOZ1NGn4WHst23C4pef99+U9YWzt7B0cnZxc0BovDE4gkMoVKozOYLDaHy+MLhGKJVCZXKP1hCBQGRyBRaAwWhycQSWQKlUZn8NWR737645+hT1ZeUVKlRp3D5aFZXvQFQpFYIpXJFUqVqtxodbYrtcZtinZQs9Nb0jF50MasQB0EtEgTduekMlQs5fNDMh5B00WBIsYmOCEJTRiCpfFCCB4hziyZzTjGIAOoDsFy4IVCCJZ9/3eyItXfSOtsd88LDJ4NuzRjSLiHRSGH2ZhQ9rH1B4qQHRc++hsujEKcBEk5iiVxmHMUs2ybuaRUawLjEdKCCp80Cs+tM7epNCcSpCH04ymOOGKyTmcivzvaY5ZtM5eUsiM+9CMNR4zYC0S4RRuXsOKmua7CjSl5IzvEAYIzjztZPkOkoCxcK4NXpqFkNpY944MMtiYkT2DpvX7vNNZ8DDSagopWKlNjcAjhBjpMOilfGIQxUJYbpo0PjSvkRcx/DJdTSmKQpdA8hAvc+JSU4YJjY0GwYd14CDJchDgaepnyEaN5nbyxl5SFntxBGd9s39pQYWKo6aQ356ZxssVYwjHcZAy0Pisu/AwWIkqCZN4pwC33sRR1CDF5vNdyZEyx1gh79DzmIvZ+c+1xSMCxeGsIO5T+Yyuw85UbL2mWQ0HBGtH4hSFP6u6nY5ph38vKkwRVCxWXuChbMyoRxhE23sU+HRs7GQtRXS5/hdDfvZ6xIuWiUo1mZz1CsPkNkxXspcuDR1FJos+PkY+MnV7ZZ+PK0rA0O2Vvs2MszX1T3+xgXnOf1DXbm9/aO42oTXUy++2S+clsiqu0fQ76dQ74aVxgYHR+3lJn55CV/gvra9R/JU4pqhcpmK8X52Ro4QqpOSpjngXwPRjHZbI3v2EpxGipCewZ+TIMBce0HYZhZO/qXobssdyrflf3WONAULlU7v57h7Rz0kDBf24D1ZGxEmjK99wHHe+CryRr0WjG3X8E9dx0q89rJdece+7R1PdwxCYJo7X80qt77pFNNKIiW59rXntzV0c58ZiqxuO56Z0fd3XE3g194WErkbM2vralVHMt0690nqvBiWUxgG1NYfMtvNfffNQhbWUv3Llf4YyZs2bPsV+acAgfZiLDiK69R9GIZfP4CVs4Jlwz3P27yS1qz4Hyti3vr91h+w73VN3O+uy/gd/eBvXHR8Wu2+24sG1BKsoK0lzGp5VUa2sKsHuvjWXz9EN+KZJo1JbqGU2l6Km5ErHTNszylW7lV8ZNwx3Mcuv6lkMLtjuSgxduEWf1CrkOIc3FdyGG8pSlHBVRK2pNu1EBFUKp5c4l7VZ+akeTOiulYiph4yZwqeBRphyFpFIsJweAwwvw8eqikh+dOnuo8BP/2QkV9EC53qfzQMCMBkjqR35kkiAYVMJBI909PL2Y3j6+fnSGTu8G39ipSsNmzdt36sqT/wnL+6bxp11QV6IeQb3qaovGNdWPMROmzJi7xoIlQ+pa9CLqTdJHSF8GRbFHe8sqyO/TzhphQPBYQi6Gisr/hMZTi6M2iU6iGO7pIBRJIUmMBAoTqbinE288tSgqWonc8w0viYbWrMUY5UhcP2rCTCHBuYhH6qVsmdggAUY10sD+3QYKFmCtjqtUObgFwqkbDj+OZ7ebdrYP/k6mnC622X82fuAn2hc2PqFsJXiC9Us5cuNTfhixxpfvMqwsf/QiAT1ryAd1CQJM4rY4wVYgatLeTVFC1PuEI7eEeA7Jn9iPhDV54RKz32EvB4T0xD4qHFlnRWlqYiXVpNLW5EqulNLVFBQhJQOL90fpK67GlbLiS1XjK6EmlLoSUZRmAcRId3MfJqUPAON4YMMU1Nh+L6sIYKzaL0JWXe4EbRo0VjLUtBxDp8+s7Fb4w3Wo9k2wFLDx9S4uaIHJqZX/E8CUj5QRBOgEl4OFdAcDNLAc6FB/RIAp/otB9poZwptj6yR4yjyc//fe9Erjn5AkprT61rA6XGfq4YHpq5Kezb35tGGtJfzLpCBqEBKkHjIN+QbjhNnChGDiMAgMAZOGKcKUYZowY1g4LB6WBaPAemBU2DTsFlwUjoBLwy/BveBZ8Cp4F3wYPg6fgi/CjxGMCA7RAyFBiCMgCHmEOQKD8EMsnA88//78abhJalXqrkyyDFmmWJ7/gOkP7ew6/ecUAOXNwUAjwyViwJDEaH9xF+njM3dE2ENImrnaeh6iCklZHw3yFQZgfDBBmBhMAga7NCvBNGYUDUshqEcshHfCB+BjcCoRhNsSrI4JNUqt3FqMTIpMljzPAflDLv9nUsyp7rV5s+hmTv2nxm/hSdIJ7sTyxOLk2onxydUT5ROZf5dqZpdeu+9frL3o335hhRRcQP755ZNLztlnETQ+p38de3twePD6IF8HsMeFomocJzsGisj+vf2N/bX9+f25fdr+5H7vftE+YT92X+xp8t6/vXd71/bge5AncU88Abj1Dv6bpZOh1NYCEFPLDDCB/PxAqp9IbdunC999z9He6R+6hVxgnIeuLBsOg6zQG4A/Qja2u9jLBfccUHPNvMP61rSmjb3rXZv4jM/a1Dd9rzeHBlq3rSlMZSfTmM6uZjGrPSxqUXtZwlL2tro17bcfQeRAgE12fqSAoUqNjxQkWPXqBaOZFuKrb40DwAUAuHAKw4dfAkFCkogRd5MEiDQwCCTSpGVSpCiLEmXZNGjKZcxYvnDhCkSLVyhFlnIUFI169GhCRdVs2rSWvQVJKAC4ioIHrRAQ2kiT1u6SSzqgeOmUJcukQlWoOnWZN2DYojHjVlBNWbNo0cYeQ5K7AG6M4ME9zFhs4sVrCz8B28SJewgC4hF58h4zZ24HBsYTWH52dwGC3fI9WOyReQbfd9FFv7Db+5ew+Lew+Hd+5We/+M3+AZHfwZKv/O8A+T3e86nv+9znfu6L/cr8LXvM+iSQf8AP0w3kP/CfnCJ6WybA/++vAkz+3UcVyJ8OsyMYv1i4EgIEmr+vFtTj34WEeY6wLP4qFtNpZy6Ceo178DxExvMDKbmxziKH6LgxYj++AVkDd5JgqYNonl6SSbQmS5ZCZ8opA4Zj6A/+Usv9YIOtdqq1yx677fWjn9Spt9/P38HxhfGgXx3SqMlvjjridzcEPVLR+RdQCHKEWkSG01ZcoZ6UrbZH3bBrr6Di3bNti5fH4UsOYB+adH6Fexggwv3CuikzbERkVQkICsMNSZPuppSm+tBcqvlg2nZW4b3bRUGuMDvzU57FKq1QYaVlB+ls1SG6C3ccoP8yYJP3GZNoeRkbRSLNSUyiIgeZdEWBehsYp8BYGba6DDj2ewB7AZqwmt/mDAEGyacLoSEGja50GmAEKkC7SqiJ94eg5FgKOAKUsEIAHWIxYElnwgZpHrPw5mJkN59cddZcybgSRqRBCWbOEh8OWQsAE+iVymLsFldeV0L5WDC4AJmcB9S4J+UqoBduVfMuTlOc3GUmWd/jGFY0564i8uOG5hlftgDwCnNA8BZBsYhOswIQwhWF6dt8OALaYSwedKH7ODOW3cHE8IN+0E6nfF5xJfRNCE86capKMYhKsFEI3cRbBu1TKtGVrpDcceKfMJ4EBDz5VqvSlNEcgZU0Q/md2J4sBIi/OSuuRUiEeZqejHxEAabquj14d3ZCXWknVh0SBfQc/xJD0hMm2uUpMNfQBydaWoaaHrVoDJbLlPFWXvjkc7Wd1IPvAEfG1c6s2uRxV7mVjbzAxfU9vsjzwRrwV4A4Ot6873uQJcEILvfYBkDN+l7hnSLW07szHQYINAavQA2BE1DXZWI4ZMDEyGwTRAMEqQrbklKBrgoKYWB6uoCLINAYvGpq/iE+YwdBIFJdkjXpKXfNDBgEKQMZU1XrTI2YfBygIN8IzbjIvsebn2DGicziVGOSaoi8GrtJMe+yyMZ2o7DL+KUcvIXcM19CRxAT7YoNTQcEp9IrYLaD4pIR67lELxDHGlifUAER6tFtYs+phQwZ31TKbsO5SUUKVNEzySPu8Ch337aiQvNaYi1NJyDZUuPrgfjlZQjCJmOGA5ExiFi2XaniIpKhFn0eKA2ZKaOQRsVESFodpNZvmaIjP/01266JYZx/nxRjtcNKScAA8dhU8O5sdV1oa0JED/fhukPe+8t2nE5TYphEQy/WtFe19cAymvH7FXcWTt1nD4Z3Wkg3/QyoF8rSfWKmnXm6mtilee+apxT3tJYb5vn83NP23KeE6wEDbClbr6+rQuFl1AYWuPd6V8az0Mp4iEZVF0oTI9j3yijllD6kLBDKAqGMhDK2QpVBylR27vdVnLQ9KnCWe7y6msGEF3g02EWCoUYLa7RoIYFWK6ro0bZylTBCssCuwzRv6jurXd3gCvVe7NVR5nZ/Lyw0nKGxxH14F2exhmiFrkkHVRkWdh+ADs4Ca9yiUWBouV+pjZyFceDFlLRVkhcXqoXrtf9rfW998zlFsA1DST4M+snX29OUFjnYtcjD+7ZPz+31tioL3AUhPioWfFFUVXg558jr6/5aQbUejIEJO1A+d9wt5eWFVG4e+mE0QDA/P4gLzprIoA54jwWvFztN6hKJLtzs4jtsnFBLFzc05DUJ9Jf/y4xFyBBQaR/VXvanlgkl+FCUeekryLdbnJ0uIK1GOJO8EFDycBF9v1AFUJJ9xVku500rusFrT9AyZqyT6iyTbJFviRInXD2LxoOVeLDOtjj2/xFPHjKvv+AVh1IE6kHjulPayttxNgonYXwu6ra52QsOW367pzsodNYEOForJl1ozRglsFtLoDj7L+O2a+V2SW6d8z8tpbrkDVUcylydDrHHOWPa6liftrZ3glbgH4KEaWUWx89jCRG6JWyxCNbMn1jqLiphMZB2RZg0rISoOFQeuE3essXR3IKgEEl4sdzicHQ/A+vah1u6PFbooidTGW6QsoTy6qC9gyqKHJ1FQllTDPE1zN3KT3syUUa0AmD5UBI0LFbCmWJjIB1/tnyFqtAVXILLnW4FnBvhVbyCuZZW5xG967u1PyxX+LevfHthAe0/Na+0zUHAdL8epNilHrYtEHGSk72IkY2yc5y8Diut3tucMg5WY1xG5NR2mx1xQLNfzrlxr8YBmnLS0UzxMpycfF36/ZzGHJRrkIh45UpqeiAmv0eCBEL1GisPGiXB1TzU4QaMwe92I1EHZfmKrNiQJudkugYXzp+GFwU1rHOtBCIFfCqOjp0TQtGahAmIk5i0TplTUC1MX2o59XUkzhWensTqnvuWe9IKZx2KI55yDuQYhRDp6wyKeF/QByer1ebuEMoMw3iRLKV+dqKkctIejQctap+V1FC6Q4NheBhbZnapibToTUHwCCxSybqDu5za9CzoNlu7RnBnMXei4JwVZ0QTFKfWkYwnYzHiCQ9HzpiGQi9Yzs40RoWNHQWgtt4aQJkJ02oDVO5gmLBTmSPCLMjfUYUi6B6VMduod9gIywWtXAL6RIoyf3sgBvqTNj1eFtDC43sf/hoZc3KjhdNGtDQ6eVcwlSgfRyvgzcQGhSqBawnm6Mm5tKAxV8geHMvqNtuEXC3MAlbzKQMwkNVCuRiijnWqJNap45HQx5LUrq+HKQIGmWJZMLjOtQIZmtjI+wiDQrEKFqfcH9GANAl3TRNwb0vL70oz+w61y+M/mp+7qWlqieSrGTNIVdCCRI2zdTVw3OPyaJR7A3N8LUQZvtE0aPuk+0m+qaQ3EvmXCm7ogk1C1lljIKOsMMM0HmSjUdHdf3CsstIBtziejYltarbw8ajuS6Jik6xWxHj6XLYegYSkRn32bAuOtEV5SCvhzfDrNSrIMLQU52qGhABmgGGRwwp6+G34m68OvUhV9L2v/0HTb1Zu5BR9ZEoj3/O6708zMs0flqpMclIxEE7xB0f5ZUq1ZWyPmKCQMZhBxgpTLYeE/PinUCa/JnHXrqYYCHBelC0hCqPNtR5eYEAvj1XUGuHqXTPuGXpNuMBJ0EEes8ZJx5OZjtYx2chAuzwrSqH/Rs9LXElbfXf+2opglvwHzE1P/wJh6qd9fTYyuAbef20xw61zfs99S3u7Fb8U6pa56FXLLumMBZOqUBztxx0eq8cwJZDRuGwXk6pByv3EvctSeiNee/TA6W7aN+8gR4S6J84LAgo/kyaIxEs4+4ophRL+Pwwk7uPQp5wcPVcCh6Mr7MEAX5hi+yBg8otaHjsFBIgn9YnlBtjFqEj4LbV9dWtVK14vgbWp6cJvhWWRk6I81oWWxNxUJvkYsfVvhkiWnMJi0jgdcNLnu0DMQh9/Bpx56OCEDQaCgdCpWb//xFlsKuluyldPj1r9t3+r/NuRk4ym7Mi9f3jNu7ZbXPc+R41mW8+ctfQWJ6UUnUvMLQp/F1f0nRuqEG36cfnvWPMixWtYkeWVV/JR/f8fnNl4CYsWtzarHpSEGKldP443V0NjOM2JMAkanKIfczMQOGURiuDt1iPhX0j1fxx737DP8PIAD8hpwYEG8/fUlAvt7wMgsbU4Bg46jcskoIEZmKSZJZkIqdeT4Hnpn4/Dv6hBP0wHUZIG/SSvsE/RBthg7vZwoYkcDhdf4mw9LovKTCagCBOeqGH6E0iLkcTeo1bA4jN4VRMg7JqWFn/QupgY/AAW2TOmcw2A3wlhDANfkEGZCakZ0vSQzneKuNO8TlGCT+f0OGL7uleP8ia+10EUFQK1kHZcURuaBZfEu8FBDEEa9DE/1RD4pUksRnek0V/xHvZxcjKAkA55QDFICoSdkXjSg4j/9ybe4MMw2oTR+h29wF/f+jcNCzstcBouomHJOv6nkP6n8fTa9M9JRDp6wJ+Pfp8OrUV1Yi5+h9JRhf3e4vuR/ro9kyYCTC4SNaAEEkpiR3EgOoADIRpRiL1gEpMk6F1Ny+GV0tlNqtkwtcrgHVvZuYyQP121Bp7CKyU8fbY8lodukc+RSIl8BWBt7wL8rEC01uAsl2Qje96JRAWfDIsgp6PQoMKL204CU5ISXjVkuIAGlXJ2mwNfZvNESeLshKPE5NNTS/3ZIh9IcLwQ7sLaqgdUk+ERxiyPBNOUlnBklrJZC/63WcRcPBGFuc66xM0MQ2PrQUqW3xDB9cQuN7ivwdUY89bf9mMq1mcwPQDfKU6vCNN6xGpZIXM1+ZADMClVZfIT54NkbgerD3r1keGXYYVVy1Q/IqYR8dWdKWKf4UjNhJ3iYxJ0fyFCduRmBp4DbIlu3UkLcEAMALiU0wF/KlVPgXu/BDI8sMTeRRJiD9tY2gZr/RuyubYhYUIpl87wUhBkCk0HXiTP+HBHieZ5Yk4IP/BZxtj+RPMHRdGPLXXWaDYSUxJ4MD7Ej0ST+d6zyRS5WQBRA3ObPkYmGz041CS8OXEEvpGqgDohwIBKjgr7JsK0nsemHRQj6VOskHPEy8iLFuLLJomavW8JdHmKo0x5xGtZGWqJy7IlhDqRNBU+Xi+F4nyjagJXFoddRj16yNj9Oy/L7rGG+ecPjA0ZGETn+SKgshQ7V0246IgZetQ7PGb2zBLCgMQcdAElMSX5lbeGTnzJSQKbT3JNK+8Tpv/9wpCA+HICNr9KHEUfTiZt9CsAaEl4fBtJQzKlF+OGQjMTQqeD4MQ2ygYd2eCGAasoPpexzoKgXIpJpG4ClCAKNQI23hMLOPgmkaB3SivgF5AFKqJ6LRBEjTfhUJENX/2S+wFT0Y14VrNn9t3cxFJVmDMx33knNwIqM97hvhiC/nN5fHjLk6ZHBk9RuvU47LPloMGLP9ikja5/04UKEWXi3PkxVZM1R4/DHdMI8h4AAi5BPoRdBxvx4IcUcIk6CIjc4cVsRY62PkroGG5KuwNAxXTIJpCLqTPUEgdcORx1ew4W8vrQVo8fvAr5NN2/Y5FNuOsBB63WBotLqKShinMJbJGmp8jqJ6Rc+RLSoo7M3JCymzXFXux9gSm6FapRfcbY0wdeKMX5aYhMWYjnJVIezYlVVtMC8YZ3A4QsQ77Tz8QbUFADDQBArPXNvFJI9o0cS4xGd6BbV6UM1rr6bzw3Ptspzdh8sCSrxRwpfIeUSNntozq8ZxBmPdkRVZ6cI1KcTfC9pBz2pKGTj5vOiz827EhwfP4iPzeiZDX+2Cdmks5X7fM2JLd8nbgShuoujeX9Rv8l8Waodi4GM2+fTTMr7HREX+KkRCklv41dTpIWpyUHKtmSAdHDNEmKJadKknxpl8iZga1Oki770+LMVK3uM+6geBWZYMLn2PvfD+ZV8KR9xFqw7e342fQ4jy9992OonFNxh5djiymPhXCfOms9OISUtpCpPe1R7iFGQiNhitQwksIOgDmaZYrzAvNShO8Y31KEBE7PS1zzrCLxdEDRCeYdn5q8zx02yKQ9OiDD9U0oYT9GgXMHthQMQfnv7+JWGtUimMiz5eRiz8kdp6MFq3sKT88HTr3oyPLjLkciLxuehPm7nGlN9iDtXWNL46FkTPU9uuHtGIjqe4mUCWq9cngqdw1JfXhEQg2fljC9GmwleeiCbKq3bpVcBOdXMHzEfjIEH/NNTFhsqmfP99g6O83G/5RmI4U+0xe4gg1vMzQk/slp0AdpUz88PfYHZHU8HETHR2GKDV7SpMHRSZTwRS+Nu9cTO5LL1xrrt7Aa02OhTmifbM8FOI7CUzyP3qIOqWM+YKuRKZ6o4AguQmPjPe4N0sAHmagmQtXIdC4EKozQbfNCDMARQ+J+8sSzHQj8G5KWIPsd6zPu7Ci23OuGUNr3EnNtleF0AI6C/kACzEZTFgmyf5VcF73JQhJaYSdheeaLFGJqkSkhBCW0fo+jdi3z30UaFBMGStvMW4HTT5OQsWtHMBKjO9lNSvquTX6YJhIlKwsrbrPFXYlQPuOuPC699mSUljyqwrlQNLnAZzqOuFMce95rhSwoUYQKKCfl5i2cjHFXw2gIng56kgNCsT/8S/Qqei2cKPo8fkHY+lxGGn02PfOtVxyFlCkfLZl9q8gPpFRDNVRANxCcqUOiKm56mBtFhIJrbEwajuL4AlwfgPq+Og9TrRHvYbyIFzDXMvSk8r468F86rbl8dbiwWsLOfb18Wtwb3S+q3soLQTPKUcizoPjSVE+uF/NW9o79QWk8KN8u2VLz1KhciCZ7U48QYWjqY2Pl4PwYhagGk7z/rIX1Ao7t88el3Xrad3PfmdJaXo71n9HMqOjj3bBV560dHppOD6VuQk3SdmbiXYRESIR8mYYYT8RoGPJkTLkmiF5w4fRqvsC2vIjORQR8qdei27yoWOSqUmvF2Oo0KkqxWSdF5PykQLFv9Ro3R3lWb3Mc02WUZpdwgALXuD5k757oK9ZhSFGl7FnG+xJWmaaa0kSfVlpwka9cnOLR0+4K8goTOEqAENi55IAAv1gurQ9/YT99BpRpvkBPBBks58t8sHw4ON6cBVUHmoh1JhGjLpK0iX3ioZ6ySJt7d1nbae2SoOVtC3XYCYssL9ZDSJlcD1+NrHKnJxUnEDqJnWXUvPJ4KHFWwUD+lcI7ECApRbUnStANoSbvEZWmIzPOC4HgUcWzrCrX1tRPAPdmoQLQqmKwIWLQIvu8wJIjc3aeOGaeel5Lt5BbfDxF7J2cqgxgF5SSBpS+0KBSTfF7kwsrRGWOfEgVElWQZuEw2x/twehokNrhb4wxnmNiIuwZt6Jo60bbIsiSfGldKCu0K7iPyoWOtArE/pxz9CyOCkTiQjtTqC223x8lXNZHKUbIsorGibLFmfCmYXFyZcrDsz0qItomoK+yLXdo15hzhEauTMjybjuf20dvopwMJObw+pPTapzTxwsCiuusVXoZwSjs19WuCXhWNDdN72FTFw+eg8kR+O+Y08kHgd52cpY3li+W901elrebiiXCVbe8/ZiWt52flsivuiU97OcrUN07Vqasu2zFyvrwqZJlA/CucFk8tcpX8adOCbL+kSpk3f2lEBUy6tRSTle453C5l8dlOyJd0V8xUUaVdLmdI9Dl5jqZwhzBLq+VHCnnSlfSQNxp7Nf6J6EAvaKUf6+u9grsTMt0Wlw4agFipWqlVm1HF/JYWCsPy3B746Xgs1GCEG+8gu5S/PhNZmXdtZWK6yqdYAlwdPkvKAR7FZne3H9v7s9W+JV23bn1g/nxErr89MLnZeryBzsYHZnLLaPxuwC16INVBghGoUTMZAcza3OtgiIgcwDR+OgIPwhADvRwgh+/5/1jeygkVoPVldogNTUdwdbH5sYCQ0uE8uvtEAvZD42qxMUFmjY73HinqqI5q7FcIKMsbH2Gpn6QWy1nJlpnmTdRRpZ76NuJFZU+5E7J9yeU8NqhkhXediXcbHsD02DRQMVS7tSN7QQ1sqFsVm2hr/ra3RGe7sSxlPxMXT0oFmsaknOVL3zHIkLTa7YAX5OFy0u324kSc9O3dc3lyCXLk7BaWdyiLey5ggx7yL25o99XtqZR7XUeChfD1gFR1du1PucsU7Ep4I92Rj7+d1lH3iWUBjLBL5mE83gfqwoOfuEGHiL5SnRTj+hmH5yMhZO9eK6UniRSH7q0W51UdGMIm3spyBoO8Xqoh11UPiizgCKtTazeG1wtbfBTeJD7VORDsAevVQYoKypulqKogKQiHiZ4IahuBEGHrab+HM5gCScGuhtv0F+hGBg4T8MuMsr/QiE/GAhE1JqqDK/QrsOtprsxi+6XAMxnHS06XUGWCZgRP+INmgCW9xvaDBUHhvuOABapBjhRdFozTUw+kRkTY4tMw8yyg/kmRsG/fzK8//tJ08nfTrBFxXNbXxZzHszXdrk7J0B8NLoczTqayW0Hk5EKy3mEbaJoADQ96B/F4vEyj64VQxuqoMG/yQa60PuHQk3rwu4pQe68NzMineXqnj8c52smUfr5NxYkapevdDVKzqwY8GbJBhiaouXirnX+d7DAWSdsvGLvjQ2F1GO4snHCRov+nLOjHV2D/OIQoOWwfZpx7SKNoaNtEmysTTK2Vri4thcUuba5uLu1FRXKgj4my5tEjMpLRaiEC7XTGNic7dvE0Fr+EgQ2kKIXmHRaMpDOhhqZmmfalj9Y6B6Ym88KJzYWm0pKnJcJmlxl41b3QhD8Gdmdnaeb6T4EAjHoij/R1a8pK/heyMXAUGMLVzdLC2/Pa6q62DG719BiYhJ1ho4N3+2YqV5+/6n6Tgcd8PpRjCOZGHnYbkRq6VUtROWnqqpnzHXujZHPeG1ddUaNEoW8Zvi9TZI1h+1dnwlW4mfOg7cVOeQhctZ0FmmIlAPCRVJEElgoN08EBMzT7eggiYVykOiWZkHNcv8hAaUUqN0xLd6IEm94PGV3NBVnSIkzUmdQ3Sjxo0n/XR45sKZO8vg7nKOQrBXrJtM0wOwPgh9Qk/MJ0T3egWlJ2JDym1x5+4ILIv8tz/95e0sPFqXm7RXs62qhLfAa0nwbuEG2IPfObbwRi6wPioquTArBZ0fFpfeEhBOCvX1T4/ywxcFCfgcSVP5Hc3d+bvZu3bdB3BDN6SDfzJx65g6+a1EOpc6YSBEeDD7QGvtw2AKfTwG+kHWWbZfB52JO+Th8YjUl+WZJcyo+K0r0+kNWxioN09lSwRaYvFmLU/jcR46Nm+f4QBwkfNgyLtV2FLkWbS+X85t2SD/XtiNoEeXuWXKbnfGj+wXsAC6KuJ6E205bFxV6OBNT00ZIqm6Mja9pTCLUtYG7SJV0+NZs1yP4dgEIgHwRftafUkiJRyJ9YQmVEU0nT/fwozoxgfrZ1yMIlVgYMhZe2JbSL/zs8wypKTUA20wipjeSsIENKekxNwoSaYXJ0VH5ybT8RHD+NSl82CIuFdUvyO32+jbn4XTjNlYhJvhwOqbWXdPkrm6C2oybLJQjXz4WiHdjbMr5FzvT8EuldpEPE/y9X//B7P7pDCJfDC8Oa3unDi0OgbSKjeMz7h+ZL46O8GFCON3frtBRC9vzkiBqIu+bFhvgXxbO77d/dkLoYGnh98G46floY4fv3cZWKhrutjt8DSe/O6H+ZWvgYtjuauKlseE0jaePLyZ2VLPYTueTbhnsxcYYzOISsgyv2flacsrhcKMca9eejd9ThMCN0Vi8faLRBMyHEuZobhM/1pDh8LKx8zemNvc4qH8cC0rudF6Ub7i9W+djFE2NOyceQq4j3MioCQxJqYkl3KwBAhASSU9ylPQy0s/1ht8wZP9xixQYAswkzOqnid43e5ZwdjXp6K/lZc7p8PQbgVhSJL5x1C8Knx62SAzDRQElPuiS8RTV9n4dToA2yxJWdjrzrNK7Q7n8z73Nj7guP6uMPXqal9/wvvEy+a3GQTCP2tvCSOHwHxz3OqlcazEymtmRph/z9H3zHyfbZ8qS2vk8K5zdRe8aQ869fqwfzZ5kl8+Wx4IrX6BlLLgpeih/Q32oAG2WDV/5y41t2F9vLpEf19Y+5r38rDLuaD+vYO54h7NnfKI86fbohat14vaO413HXWfsLu4u7p0AiwDC8z+VZhQD92jeYTjvqkW4Sym4sSwZbr93VtVLCvMxNPuqF/nxIkx9SBFsH47aS30yIkQAY72vIRICn/fZKrn5wfCjPqk+oBQOrWQPm74dKlC3RUWZ0lYr2PHTdJxAfR3RE3p6HZCL4vsF8Uflh3zKPfzKh+XxRyqefqkLP3YJv17MdVgBI64NYemR2KD0uLBqoDbo7oz1cSFzndeUIurxAtN0dnx5GRv+Fh0vUA+1LWGXHmdlWd3jcOZ6T9VX5YTj/Tyx/byE4/IyCu4XKP0nd3P+Db336IUlPFTE5wZjGnfLffYKRizWPaDWFRgJkSLSov380yPDSSAZ8p/8c+jUU0QUNTQlrTnOE5PmXwBtl7bkS9IIddHOchwUfD/EfM9rclf37vuUkmgX53jPLGirrD5PpkyggZm9PMGCKvEJsMw9nx2a/TgHHkJYLw7i8dm1Hul50t3VuztsvevD4zcIvJQgkT6IqszKiJbOvpR4QAKBAsyklzzRszK8lFlrPuysFA96dk/AgeTFx9R1nhfbBbj+XToYZXHhh3vw/3zW++Mha5giMk4RfD9yTi/66dWLdOt9B7UvOgLWX5WiRpDctJOvA42GkMozjrjK9a6/gLn8bxdItNc956VFjgGXolRONKoJeH80/hCsMqu6s6rCYZuURQLi50m/TvnaT6HDkOrVjgJ73dhoU5KUM1s/FzWXmIAQ30RHAetlgbIPU9OL+7MjR5F1TGsSNFLOgmLx28gK7+RMamrDO36QSOFOuQ5WIP4dDgpOiIJNwEzalEQouPS7B22zKTz7JKTxm5rdt1xd1b+SRR5Y1ExWDtwg+5cUXj0G+1Psax79dyFuhb5BGUO3GlsG6eTgkkCI5yZigGsLcpAt1otPaxL/PsvPCmx3vugME1M8XRHsskO/iwpV0cuYnN2zrNK7DFwgnyQUjj7DL72qepV/46gGeZm5ZHCIvKpf+EC+kHHkfaYrd1F9YVxsZy54iaE2Uh85eHqieWr7pJVka382fseAb8QeNV0jLXmkgtegZ8gjdvg/hxKKO9gmJwUXZMl8dVRcbAzPyEXDtxWHb2Xm9s2WVYgFaofySLAhAm2qbL0aaMu9HfcCw3CZ4fjMIv9AUAs2AbfKrv0H+8Ce2Eaxsi7aXHfyxjgx7JKPS2KL0EEUjP989Ok//pOmacQMEgAv7st0hIJ1pZ03tsJB1kYqqHWzc2G9v3kThw8ihoVkZ2JiNwPxIVlhwRn5PmG0u2cAad6Qw4vKD0fv4evLKtsre0XLHl5U9Wbn9S+on2ngIho6wSqS9qxZ/hGsBRs0pDSGGkrgfcxcXtbX3vQZcEN+/9krUnZX2DrbyssjydpI30/HlydfsE6sMzs9/3nvSPdBFbRw+XLGoCveMsbxqi9vnpAlZ54cxkQJZ17+YRhksqKcXO2p9MZ5oSWhv42/E6T5ZAfagBFk/cO7TewmJiomPwIfnR+F2cTef/MWRAgbg6d8SDSc7wz6kTARAE+eeWxxItVIzm9qPWBIuso1XhUYcp6geNkAoZjTkNP//gHwzwGv/H8QWN92hSP/hQMDYkefZq8bzE2MIrrHh2RE2JQw7sjO7yA8oq+HAutH1zzgql3IB9e8oN49gGhi7uJuibQwc6Q7mplLWTm5WVxpmzA1XTHQcafD6DpuRstV/kQbGCQCVo77aCxEWin0xNxlPmDSxHTV4bYyd6M7piaTT5RaUQ8qWs24g1+yCnbNxgfNJ0IRlGjtm8i1u6F+NbPHRPaymQ3GXlCwTUyktXcChHowMn9/Yvgbfv+JEZ9smBc7DVFPffNiDaS6Vr7DO7DGu+LWERhbzmY77gLfs7ab0Kb3dzv46iKnstPGgsVHgs6mjwIsVRCXGRKkxHJ2wrMBygnED5WaOrvsdeP2ySOhuR3B4LRIbwW0xDV1BV99Q2FzEZOEAWMbfv2rBCd9eDkVPGkICMjN9E1G+SbnZgYEZufedGtozsAUFgUGlhS6JjY3uSaWFAUGFBYSvSgNN90gLkmdgyedg0mJHYMnHYPgo7wKSSVHJfNtXPOnK7YwDdunic3vMpVzlEnK8mDwgLJL4R7xt16VQIk4ftQr0bSk2LTuFe9qaepjnyQTLV3sKu2mrW0mhdXx9i5yFYcbSlkQ3UpezI72v2qXbKJfqplzD3exMvFGJ8rGSDc7S7traZpJBejO0w2gJbYTZe9mozauR7tY24Y7pV4g7cCvxzra2kc6pF1wYIcURbeZOZQFyl+gtYIR83MR/CpszM9ON7/2Lpo+Z1s7Z4emJ+BdJSkt0L50zJvW1kNMaq9kSzPUHW+ZLcjg16/NU0df95c+pkCzetSKu4Pzqj/n1QS36eZ3QEiPKEB3zTsV5zH2S5guAFU01NJWM7vSXcPpW5OYlFqaFKNjlcy2yVRUzWV5W27/ipWbh558OrcFW6Q8UDwIhPfBm1/JNsv2ZT/dAqBmK9DFPbXkB0Ln6bZ0IMuw1J3z1GkujrMQPn2Ka85Pqdl6UFd/f7sWPXz1dfcf8BesPTe20NWysxARMOKk4WcWBTIUyGv6DrEFiX84K/pBPAjwoGcoVhQAK9H5OzKafHNk+C/P92ay0jl9N1c9fVdXAz0XV300HxA7tDikL4YmDZFQNJTwKkQDppfCDtbHyZYoP00dMzMNbXtzlvBhPvJkFTm9vfqmG64o2rOKIFJaDMqOjW9AMfq6eJboSfG0PEO0qbaWtYGpy01zAzMdvLmRuoatXu2YYNp4YQa5lYzLTFcSMeOd6I9OnskDfERS+yn94xRsJNqrt3hgWFAmLoRU7Be4KSoHk9dqi7F3NGWLRiha1rq5xRup1QOxtZMn3J8PT3N9vP8csNhlAeZHlwHzIyQ/Y2Hk4EYcFG+zFQfc34RHRNoxtfcTq24AvRXZpYXyisVFucXFivJOhVovnIOTZ1i9Z5iTA7APkOuTa36JaEQMzD1lgl9/mkXbvcp+xatv+P6RN4kYkZeKgM51tcZyXQ/MJGXODZsJpov+CWXZ588Jc6OvbcMQX+aqREuLQPthvYHO+ifW57w+u1Vk4shpSqLgd/Jb+TyH/SFxPJlEnhs5tBbdKEBbK5wHnf440dRZ5/UA466wP0fY4TrPfAjKPQg7CcZw7H4jf5wKKX+NMRvZ7pEPdxgeFVdFVbFuPW3+kQrpyBgUDVEyuySPCspiNZSOCrS6fslMUsnikhwqkMxqKBUVYCXx8qVQP9TRMVtmMBGHMRfpAwMTfj4UG9YVGzEUE9F1DKy+SEn/b8Xg5cm+bWD8di/y8muSxeyjbDwdP/ZmjhbxcSFcVjarWiqaSHZMW2MeKUMSOTZlXlVJqbbR8kJ7KI9N0kkVVUVX1c86u/gpMWZIcrZJxnc29xJoNKKjnGtje0I+jjtIM2v6GTLkEPNvZPAZ10xvdma8HzbYorZW6cVy4DYHjpICnf06AbpAT0yxgjCW+fI77rhO88/f/3XK33bK5/LeuHbmfqMahtp7U+S36J7QkZWR0OQ2kexvc87Nf5ulW9Hg67K1RdmmpKDuevpUcoo1XR9Q+gJ9PZbsEfRp4UXnxrlo7AbY8GUfRpLdgj4vbptWJetA9vdaZYt5BwUJx2WDrgVygkzxTtbioy7ZckjGRKfK3P08wnFidA0J+1/4dcrffkpyRR0vjLkUqpHKkJlWKYo0p7/FWXqnT9Vct/Rkzo5UR0w6JFN2+OPnmyfBP+a6pJSKzPibGSkxhc0BiTF4TwwhJpSc093YvDKRZEEnRnVoYJc+3q3DReW5SiDj4eTxXH+L+nTfXqXAZMo9U07Zd/Vcgpi4ymc1LnM+5dONsYgRqhGkNNvZtcs+p5P2pZAjv/aSBQR+7fKFPb52Id+cu0iz5C+YtrXLZZ+q6KmwsrOHYsK6YsKHYsO7vlt87f+6nHO31T4Ta5C2e+2FRhcCTIwDL+PPGrMECTtHBwRjEj4dlb+jTiV3OUqjkKrWI87hJU/y8Uc1SB7mHzoH0qk6hQ9kCv6OduRsxV4MQCoFrsdoG2Zxx1QURUQ15QomdBtb4Z0c0xracY5vJRJb8iOJdg67EZX42OXDUnblQFI8TlaidwXQFD0doQxUAyM2792VMy0mkmbBLmjzwKFWaaTXLmcpacjGq5240aS2xh8150rTuzE+DDBEh+q/OhoAqf2en/GjMj/h215Rhi1ZFQt3JlamCbpJx93SddKylN5RuX6pi9lBOpqm21y2dOP2qZTum4lc6nJ13eRKXv70am319HLSvUpiKkmbfAebwEyVxHyfM1ttPy2CCo3L8K1tt6ugA7nsX+/qsQrbWuXf2u/5HO5tfpy/aSIRQ4tDbb3RKJSmBsom2tpGQ8u6/c0dg6zOYXzR/AcF5cORDJ9r11f1a+EKFz5c1EbXbXo9rTVn+E5NiJz1wqGV6mNf9xpafGWhHpQzdCfmTwow2VIpUlLwyD5KoWoEk82TopjFJmRfFDIDB7Dt4miLPm6CleOSE1LBZdA9KOey7ychjftHKcdACl2F5fRmTrQ+rU9eXlwIbnmFpguztstbLFvgWKlA1F8jd9X4jp5SLCnIqCqT5hlafweB9FW6t5IhuS3BxtzEzM7MncKQjFQJ7a4+R3mupLpSyOed36gFvC8kMzwwJcUz3I139npz86O2YZf2r8j8yOlWjlr/16dmy3RUnC+pykPAWvpIBJ+y5Cwt5X7H/kL364TdfxfaT6nvp+Y5KZnfiv52Ue3RHgj50VK1K5P59fmszpvT5s+fPv9hzTH668dYW/ZWvIfYza+Mq3z0mGGLnmjEV5LF1FiPNXv0Uch8Hbh8ButAnM8gznNEZL808HCt5ErYTKguqE4g7jVL678ifT8r9Y3Hk9x+SrGiuNj3i14EMsKkr9J9DYygdFslcrWM6Fx83W65omuIp6QyLmyz4nDhAuaeP3veovH0RTfa7AvNDPI2QGGrkHBicDc23b0i+42QAJ70hmYFeevouS1CX4NzsntBaxf1/vU8EndOKUTLYS6jfbUV6bd88bHki/HEN+THxHZmCybF1ZVmYSt/PVYpwfnbNSuvc8SSC7ldNWyxwfqudKjh8l3vx3MRgzqM5fwVq7X4noz6/FvjrDsX8ekXKGcrvscgxfDyVaVchPnluMrboGn/g90Dv+lwv7gZz1x+7DcTFTzjty+P7WeoFr5od0mxvKxoiXNjfJU73eLKGcpZ2lm6u7S7lDeUx0Xma8flu0/vglr/ysLKgs0CnkKedy/Ik5nFGCNMKdOGgwAD4rmMpUmXLAd6HcqyC54OPB8ZcJ3gUcS+G7dYtfhJiL0S+d6oeG8oORRLzMYA5qTcD0Q6/7ht2MUDRSm1nG7wpzc0C+ebWeb+cxOMda1wT45jP4QWOSW4Y1oNCA4vkw+Z5dfaLsFnqdFmcOa7P6/qruVV8BTi3k7Etg5WbU3DVPNJ57BQJZ4cY6UCzV+kmssEsWZOB9AIvCucsEdlelJrjGOGkrwkt+PQD13jOkHg0dqJ0igR43iyr4ADcSGD+Ggz/4fMH3R0ocl+a7y3rB0xWOnWgz96OQc+Xmx32hom3TvX7uyUruSvJfmkhR6yExaXTU1yFvsdOLXcI5LHOLHwxMdq3jaGK/v+2mH9YN5l2MurjMPZYG61VUiL//7dff8W8IdI/an2XDlQntgjFd68zohvNCnaOmDZ324YPgB4E7uK5VTkv91YuBnkeX3DxcvTWaCWYkrkugwqM6EUOwV2TfwmXB+6TWXQShO3pb+82xr7nqV5vr/ffortXX12tUrWrqxlfN+0n1o9aiiw4G+MBeNpqt3m/Sk7k6mlwkOshRuyueO9+n/bkNaeH/1SFzU6DucBeamg/HD84eR16v1gHS+Ehtfd4JSX3FdeIi8zFw8OZ6zrFz6QKzwzMkDeClXxQGh4boXcTMiXscJVN57ipoKY+E5wiMvBCQfpVdhjLRGh1NplEKrAUSJVzV5Zu1ck41uAs0rThxR/E3YYdFNcUZYL929ulexJwRHOzmRIUo2UqcxwJbcxq4a/mr9MhsQlX/mJyHKarFcUk35D4q224lVZlSHDBHNrVAupDGIRxOQEqTMlYBWJg0QXxKzhUeUpVgZ/nezzJgfSQgYJnMN63Pao/1hqoQ/17rfdsaAOdz6BucY5tttbF/CN/Gn8xfZp648taVBFipufZo2BK0ME4xNEMiKaFWQSEjdLRZlCPPS92aWI9kOjeSVyyV26I//USYrIMs684oBIkUxzPIT6safgBNFSZF1WdALuWxE+FBPedSyX3WOUX2g/xTY2LpftPhVKgSn7V8/Azb6QzGCMuj76O+Irp3QAY5CLPLwl2as0YI0f/bndIHMu98Wgbuj4HTYocOc1PejFGjMfJF/otgue+alB56qZ/Md0auCeGtYbZpmot2qo+hyLbFlBADfAXBmmKJAB8F256qmzl5RR7XC8dIaScHT/IsBlIqNjL6tPhZIgsHrLO5+6j3cYvMdH+ppN4vFDv8vbkezpu3fgP32cJf923IhsJv5snCxzGnA4HZDyw/wbAKJlpBThBFZqZU8I2LHp1dkvzlQAgTz3wgiu0RW0NtAE91GxuvLb7o3GU+UzCOJ6+YuHtf0XEKM4pTmgGyga8/tlZ1vjeIQqGhYCMFFHhY+pOjkTfCOdDg6kJJUh73jxRTTI+6piitsUNIOdhwVrFdriv7+xOX4LsLx2sHUAVuYFqB0jUTw/nIuMN5IbAQv2e0FsAfDb3oKJbwGNAzY7J1f7ClOdTR3K3OW5Fncpfhnr5pk0Ow1HegZt57ri9Mm+eoYndg8ptSOGBgThV2IgSTZ1qakRS7Ifzv3UUJIl9d5XQwPCi4J/peMcAeO2FuiHX01WmmFKASEqIv9GqnBXXCiSww4dtjPhFYzz9Pxgbwm/6lZ7JdbLqNon+FpzGrZHOUB4WOEiOENNmEhlv0I+A6IBPgHemjc7TXL8p5+iwJKTHJXVR5eymF8xWT7ozsTqxMX5wcAEECExhjGsUYFLIZqjRX41X15wDv5Ns/a5AI8eiAa1zeDPDY08xnUE+QdSPjQf0g7Jl+YrBbYPSD4zPi8uaCQ0mKkBGBV7paXNpKV6eaakzqSkAVI51gkRVSPA36ZFSWO0Giucl6cyrLdSwU0tfBJwRTMD5rmSOM6Lqzl/GMOxdpdVnCAgADxYAmQLgq2wvVcjQOcxMHqmQAesc4zewiKXVlfSOot2ABHkmNvXFsepR9YwbCaQLvInoOI4qz9fILpn315X19zR3czc3uOaro3BXgubeA+ZqkbOT/bTfsoGyWXd6Tmj/aD12DXLzC5ZtsFrd+lP282qNH5cx4qh0lV0VCkjWXQpRNs4vaErhTQ5+KA4083D2NzFzdjUzd3MGLApC53WhGklwSXXn4OK44aR/AiUU5CFiMh3C2/T4I7ckoLuvCBzK+8jEUtRxyCbiOH82mwL5+s6Wi7W1yzcbDR13a1YK9NszENRFvoGqGtqqiD5OKUqVQDf1YWGO0aVgEyoTxCpQ7lx7JV0obFc+ZyZq7uZsYuHqZFkG5s7uoFOs5xSqkmpUsWYrg08U6KJtHvBCi/vulIH6+MUSxssPJIP6pmL1tzU045ycr6uC/XbusxM6thgmF+DpqRv0Ew+OFCa7WqL47oeRCaRZ4dNBYgVM8WsA53XYhW3kSkNfmzIbTTTG0PJ1el1z3kGmXcbelCimxG33dOU+N6FaKXBpdcPgmaaKMGQPC3/MEuMvpAoasjRNTu11szC0wi5vVYgucP5b7QsqiCOHBIkfO4qWfBi1msyVdjBKDV19o6ec1jqTWsLmueTfeWy1MlnRQUOWtmnGS069AgvqfVuKWNAREFcZ4i0rPMGJ/n/b6OAyqtd+bwPvU3NXwdVKkIVic46YqI6MkqkRyplX4eaG9/UXyI9VXuCZYOyxYZl3sjKvx4udB0RnpEPrex3c/PCyY+2/3CwFy4zFPp+He3lwlDAyUl1V3lB+UD5zS8LP3enaT/3F+BZoV2hJ59FIlIi/ILT4sJEwBBg9me6aF7PZFmv2M2VbBgghYRVBiOQN8VyWtJKbs3XiD8gr+euk9Zh0+HpEf7exOAwFAWNDCOGeGNIwXgkUIEI3/vmVkPd5oMzH/cvDBys9E3dzS2DB9jw4n+U/ojjweKHqv/jxAVjxd9XJYgLEc4uJZ8VEFeS2E+yTtqXABE0CclsVD5X1zLNyHK0Er+ynzFa7ixgz0VLQmkJd4fPH0Dn9s5d6BO/sDe/LzF6fhNchUEr+aJm5yP5Kqsi+ebmeCMV+SLn5yL5qoREmjucHN54ptf9jXMINdXyIcAzZez582ucnT/6koiHHk4OerR5A3RX6odTrVK4UBMnkbqI3hDPa4sKFhFx1ZyEpOJlTXqFjASZtURsrkqhkHvxVf80dow+78U0MzDXVVU7aCIxDQi63+sPE1nECoXV0DE3V4cMI5pXEYI2sDU3rq/UgyVF/WE1jcpfba9IHIgND7kuHH+jSLslTLimnM3qD3Jyz0d7sm3dmpCz99HA9bHPNNYqR9rYyHgnVWuyHQIHhEilvSI5pZvA0ZiX6u8gRXrm6/CenU7y1Z9WNhRIzqBdYFp4zrWoV5pyY9LFxTukQhfqekrd6SEDwTtMDD4MOF/qoOwwc6AgWi13P4FDeYeoSKF5D4iRsEcmrhIJTyoKMf9tAy1JO+lpsNKsGgKn1mVbuBBX4trgpqGILbHJdalCMjQ+fbgjiwbL1WxWrn3KSY6OKF8eELcO3W+34Y/TmtB0aUjp9QOGwm2nX2DZvwqRFBpg/dOOYckNgdbDYY3kcLXXoRUTrueAIyK5N2LMw/n+8vrCKGYm5WlGQrYVg4cGQ6pktzmPpFHMw/L0Jjy4MZUZl8eZoRLm61v6Yfh4sFXMdah5pkoUU4GvYnr8DzChc7oHqjqTVc4N5HNKavi2QJ3LuCnmibXLuKeM4g3t6IKRsArL00dJWz9XwgDYTU5DTVdqUz05xNPUDO7YFuXTaBDHlqHKyepe8PanZiRNd0bU/tnV+9thII/EPyuYmoKyPWtVT1Z68Q/yqai7v7s3OW58GHqZUFXxsaqSsLA4t83HdeccH/t2IGR8EBinSCYmjg9CLm/zsJ87y8t1/cTiHKG68mN1BeEydHw4Ma63F+QgJ6Djg8mJAamEOA8o6Q3ArrwhQScGEwm9fbg/MRHp0CmgPiqwfqJK/ggnx3XTPPuTE8aHJCaAiIkAYhIyMbSU/HITNVi0oG6WtBASKijJD6D9o4Tk3hwjMTnWBt15wMZ57So71w31OsCtordZua5eDxl3Jc+FPLW7bz82eWhU4kFyOSUhvpQCCHhY6GoDg6r00boL2c6EuiCDsJ20DQGh1WVewcsvajKRZxANrn497xgkW6bP0vtUrw4AFX3oLUenh5kucYt27j1DD9Z1iAHhWk1+eZdb8MIKn9BGGm4n0IBQl+1cd2GUPqiqNgCYZdeUFhclJjbUiLPc5iS3VD47yLx11edY6MamKsynqAz40yQGhwmE/t7uXittWJKm/EVypsfp/aPitHWapHtWERKBGWSbW+xuRsjjzdSchOEgWQxSiMlzjDxwg1Cpd5K6/CgicSyhqTsnt6knIa6uJzenrhuowKCHw4m5DcTwwpbueYl1qoXJxOKbi5WTIgua2hfO3ixL48mFxdxnWfGfS/pdsmu+xdtacza4ZdYcx9pXH90z2YT/gAXkKgkFuUHSC7/9VESI7zyQIwIW0+V5B30wvwJYTJ8A4Xk4QDjx02HVYdknPpoU8r+W/9qRUjTgixhaGgL/iN+Om7tQrz7IQE0dV5BqHODen4qVfUMuWzEfPaWPtIubpJWvrSluXrlfqYuutzXM2gBb6OjUjrNNVHVRdUKl4a1DkkcS/+dvhjVut6xqThou1xOBPbGxUUZIFjCHObp7oJm2LDgpcJsBqAvU2karKS9L5Lwd5/raR6s5UFzrkZX/2OM8wZ2g/B+vhyzjNuaH5fO/j4zhN8PXKbw4dPEoDxjd+67tfUEM0leOdhBHD+dQeREkHq8fP0Qc76xoRyRbkdAimYfT/1o2KG11FCraGqWuTecKdDFQxbEkiZgnf1VlJN/8fJtAP7ytXXp4BGXhrf3E994dHT6fycOrbESb38K0WOvKL6jYiwg0xy2s4jp+5mbqa9/2KuJVpgaNo6He+rp41k5QLxi9gS04mvqmyGNmpNaZNpLGRSHjMlPQYMqbFGC/V0XYvLcwz1eWjO1VQS24dzCzL18ouu+enY6emaOHqdnoKmFjONUqIFjh+3rOj3akEib2spxqO5jPak2pShPEDfo3XLWpsHiAHzAe8O9VITYhFqYfYLMXEbD6Bzt0h+25iOgLW/gINIgVCXugLS1dW1yt2DW70boadXXl4Bypa1FNS3/KNJcWE2f3HIWYdhy05jk9Q+3U0+M/72AX946CQrc2Vzf3tsKC+ZhgCqLIFzVPtGl+jq+JN3Kuge/UzM5b1t96J4METW191UZVLX3NAk2tn5r2yQGO18Jr8wZKqChbK6s4Ktue/N7B76rZqtuMPdVXUCXDMrI8st1l/LhTqZIKlbcB1yE2pYK14glDrEiFwNgM1LMbFaLL2BxiKSreV1ZzPdtQS1VOWIPaGzZ/FayxptQ3cRXyY5NX34zfL8wLkgtUaP9wXGJ3b39vYmLvMOS7J0AvuX+TPJidmDygZ3fHJce9oFRg+cpddD8yAv0aZObETwKJDi/nHZb85g7UdHQyxj6SrmXr/jEbMHNmGjyC2bsrtegU4OwmD4DvjHTposMBop8+wwHlAeiCY5lULAACEmCUCrJptHTbAHLvP/FrMb4uKu/Lzqrsf1/aLV7abap4WLnWnW+vFRdmnibtwBYg0zAOtPVwDjaV/C5Q8f/04vJ7+tiSgd/yj92VztsSi+hxBZUBygfiwZzTjA113U0twm/PngwLV/y1ide3sQ7QU1NxveTBO52/6VxnIbHs3QB16GUdtPC7TFD5dU8txcsW8s7c0/mtuYoVfMyV8eaN/41HfIJe+PG/t/ybd9xX317kYptdU4zvUg1n8V7DPmFRwuObH+0TUBbJ71c0Y6IPsqYFztAoyK5ZYiRFCqflc+24WyvOUvwlBrO6X8uRrMEmhmGsSku8lYuTJfFbEFT5bFoKDVgyfarLbt+4aL2i8s2rRNr7c0o2gda+NhG4c9pV1/SueHTPDH+Q9vp3Q33BrS04iX8313D4voMr+OcrzUvhUjj6d3KZWz5I4vyzBlm3PaTZg3rwPljxvhml7jleSgX6zgIaj9WKWUVMzGc/KxH3sWJWrOSlbJOqot+bJDE7J1eHRgcnV7vwYVl+aTZpW9n2Svsv2j+UkxsadY9JBjJ5Vvrehf6WEJPXIRc6smwF+ALsvigHR1c7SgzuFLXJJG0rE2+1aRUvyy/NdM/hoe2d3G0u2Di7268GkZVfTfZS0VuQ9BVXgQrIuVdLt2Epcsd4om6x3Gk1PYWSSuB4bsSuYnkV+QIfWWQOlXTx9nQuHDd75KyT53nS2lhL2tNuCeEryPJc/YMBe+cgNad5UfeYpG1ljWUZXpS3eTXpR8xFKbel+4Q2fDm86v70la9yGHtMb72j5VyT1sSmK2UlHhEhYDv1t52WyGH0/TV9mkHnS8u4iIY2vlnIF662yo8dfC+H7ilKywWzbL1bI5XDHQhIpAUp8IygA7Gj/iD2SRlEb3IyK5gIjBc9dSpvbb/0TVqBTUw8ZhVzE6MtpHPhB0FnoZ/KXScncCko0JFiUNjUM5CFAfmQ9k/j0YaPd6INPo52tEuPf8Z2rvEu/jlTXnzuZ7P22wyyX0XJuR8/MRd8prmOb+f5KMbT010mNDBG0hvLiHBnf8ML+95WkIasUHB4QiDtTd2XmOJ72MSn1XbjSBMk4dHgI63RD29aEF9azRTWUFhiFSl+fdnRolYaPNCsiXdrS9BRm2/MbywIEvQbU+OrsFBS0E6INJFGEh0seJLKlIlnpfuqYkWswSKCySzx6IpHRgbNeOTs3FCrFLvWOYtl3G2ImAvnhGKfdRRGROaCBD0tUGJi7qV5xjlg4bVdksTeauW3ReZ+mgOoXkSIVGjjErFfslRkzkcqPbU+EBGXoKNEYGnIPKNKZnlsDuK8Mo5E5njEuUsuYrL15YgisBUSvAsblMUeq6Eo+JsClQMYgp85pEdl3NUXFDykTmUya0fa9zetKpOeQDbqkHKVb1pTUum/6Vg9nWNi9Juqld80MaRx9dSNdctvileOZO2cV/5N/xV2gjby9nW3iljvbtdwrX0mPVUuiBBxyHm+PxuvVVexIIQAUXcI5qfrbTUKdhKIknKtVsEaJUFAnYrcGVDwTwuw/IOwEhmkHypVihiVeqbpwYEBlI1pdIiVAij8T/cfkkPBe2U0XnT45T8B+Lok93LB367IUcu3+zhY1FhBCKPxar9uP8OAhXK4fuCVmjaTqjF7JJitNAtqbr9jO/lnwzxL2aWRNeDeVKT3bbvbIMZvcnXy6y35wcAkaBk0iTpDNtGfcmcLf7UCFpMsJYiDO7I+4DUzx9uOZmbNE6YmDL6JKzHZB4i0qXkKISzMp5g/5qQJbN2aGRwELO/2ZCZl4+DSan9yiXLXTczd3C0Bc7Wls8u50jVmbg6YWdKisS4gckwxd72+HitnNwulrnEz02y8hHPQVQVmXVgju35Xc1WJCNHcFZ+fg/fCW17Jtsj2Zv+cO7ARl+uVa3mJaEL0zz0cNwgQdz0FUP8Ssa/7sJ1Lie3rf+q02ggbJ/5thFylhdRUh2/pJj0ThX5Pa7xJPakm1Xm1YHAWsHLehyQ4kbVbv5KAXAAbV9U20ADMoMULRRVNB6oz2hrVbfn5IWl2wgZwhEmutXN0b4zzPGHqFXOHbaLRBNKnSSM/XlP3msVzZeUQZeUiFWU7PtCgOAtCsusIMZnVQXvJf9MBD8ih5Mf7ZZOrZNGW63bmZOey/r5qcmljCyli2dHIxFrP0dTc0lhByv6hULdDXr1sSN8KG1tCj4SsYFqm1fUDl661lOaikkksIaXUWyCcCC6t/eXIjIzF5eMibwR/2GFUg/dT+1LQd6WpRV65onOlZ8rWDVI+3zjw/9fmqa9f95c9pkCyelSK+zaMTaGjLc4ZPd+n4JMsRAj+AMoAfa5r8MRAV9uJezH3Ta7F3FFnRW6Kns3Erz03ttTVsrMUETDe0NURBD7OwHggoP933QbKebjVF4MK/4sJ+6Iq8ekKAzCHwnfab5SNnfe15LmK2EulSJlr9NQTbvhK++kTSOW19Q4CPhduk6cZsqbIkwxBjDNMRpLDKVpeU5+2BGd3+AJjwtyVHSDmBtIxDCqGxAJy3pmsLDKZxxLpBoX/pgI31YEpphXiTUeSwlsdT/q6KTtOeuZQ6UAhYyn2Yn5Rlak8tj5BwOfMfjAHnd3YZJLTCQo2LkQUAVy2XIaTjTwB+6HYs6h7jggSpIq5wwGebZpsFBXNay8udCFQWlwIxYcnoAjt72t/LYXr25TvXIYhH5Q7Q0z3M7i5I7rvyeIcem3UVvk5oX6Nqk+KxF1YM3SpzqtZC/XNqb2cGgfNVAFcJqh6qwUU1pe2Mg0hyzyyT381sti+2elEQxiEQdhGhHU6l/Xfwq+9uF9mT1wXziV60omCgv2sF3hBXpmknKOc+Sau+bOiLVx9Q+q692NBApWHVnvSyTQPlTyhUB35WLezOxFEu6lndtuHgoaUDBQwcL+d3sHHv3q9SoihO0MeDn9/dnz6ZJaBG4wpLD4xqi4qSYQNhMX9hLgKts//hhESouqjCCkET1F7bELY9WKbGhO0SY3NWcs9Y7TxnqV5xF+b7ljfbhux0Tr3CnT+7AIMUw6hKcU/Et13PPouqt8rCX3U8v8xWj3E5pBA8V/b6J1wKE13t1NiK38VEbNBktvY571aNpvRERsB9uXHeSHofjG8NKwdkUpGP9VEAivHwspGC76/HbaGJSjY5/i/S5loiqnUTvUCXKn178zu7WfQq5MUM/3y/YwqdeWQFsbDuX1kCXRJfoOdsp3TR0xNSbfKYVPXtmd5/NADmnCBLq6pRT+gdmVrea37r0q4Au0I9QcRPTCvdl5COrWqOm0yITF9srpqrpSQi126g/W+s8TpHctRSR9PTEgbV7kr3sucX12eXwbctRU6+y8PeSpBleV6rXJxtpdHu7ig0uPXkQta3t7FGaWZcsVf/qlCwBWeS0UKT+ViL50XvOGl5768v6mokTrkqAjUh3alBGQioOODiYm9/b29iTqS2lP1SJbaKvBfU1PHVNuFTgwmE7p7u/uToZLJCBkG6ddLoYZ2drPd1ZmkF4s4jQJfVSm4TARkYigxgZxr4l1YARevCji4O6EEZOKfQo8Mn4zwIkAvCUnzyXYpxg0B1FvdQTlOLwh/6XsK4mEYOthDQQmoyWfskuWTFloCXNubxCzAL5SeTwcsWC6LCx0MrbR017h8b/r53i69DTZq8pPHu3oyROSRF+/oj2zWPP4fRuWdYP797K3HmnoRXnbIsaL8++62AjDXNR/uL4tjgphWWW/3/yx61zNC+d7jV742tH14KZk3jGqz4O2G0LlTUlqU1Hq6Wq9v2wvt5Qx5bebwkJ5v5g4dp/7GWP8KbDN1H6DsfyV0vZw+zdhi9OsrDH2aoYALS4iytjB2nby2MLeM58YjaQaSzCSWJaGd11imEJY+yrJ8aGcbSwWz1GuS/sTSi1m2QSzzIcsaRzvdFtDdK32bvNv0nXttn1J9N4uo6UXUj+6LPktZJ1nwCkRCO7qWO4RmPLans1jHBO7rpZSVduq1VHWUb38b6dvUFI8NSnTVtQ9Q3NsI3Ev0SUoX98R9OGRqxv9Cq41rV1jaYjitfCPakbQpJKONsl5TVGgcqRHTS0naO7KIqt5E06elTqm83sHb/JpoLV0P0LZKJY1+kjuSok9KH4GyO566W/077CV1g6IhxIjhZsi4HZ69raYtBuR/Zd2c5KJwHUlUHUm95hu1WozadKLaxoiU79Yjua3ewzxwQgVu85kKnni29Oz3mGI6xOUgqn7rObKXXlQexgD4bQaztEVNypPq4BaIIgdjapZLXU3eWzdssPd/dyuligP0uvOSbx7aCrA8VzROQkUX4iZ0J2X0vDOHKvY7wE5UXeVaDZWhUweVV3ptR7ft3FwUD7EVPB4V31VNr97z+CDvQ+B6lrImhbeF2FAWj4vt2lMa0NMe5WJzvW7Jqobm3eetEqqOPGekLapzNeve5JA0RpeDB/UHt/uUG5R3VZSUHvTvpChLKw1Xv02JfgNYlRLkZSqKkqasAGBQ2pRXdImGJUXw16NuVa0jp8b7M93qceR+qlQU7Bb+BE9BpgLckXr1M/BpP7jlLyC3gh9t/d8Rthv+ImQ/yOWmwZyWI9TYbjIit0peGmti2NVl/GxQRxclvqkBUwHlrqdJrSJ7wJhvQf+BAHsA8DM+VtZbZG5ey5D79DmvKB8VjBlyhmHUjzn6J95elryqYFgs5h4eIDQPJY8xNrC2Udwydc7uJvEUY5hhw1HcGEBRBziPfuSmyfeRYxQO2j02j2A/p11baPpPqf239P7G0un0a4RBa7WZa6O89daoddeIgz5GrEYjth/ErdOZv5NyWy9ia/iC+6vYdohZD1n9ynaOVb42ql+KuWUR8y3djCef76XOCRTbJ8lzMf0ErlfDAdNHdsOeFSmhYWa/pg9sWOx1y04BK2xfBgUpvbx1tK7kG5fZ7Fkv5iti6D/PIiulzu0rV7KcMZZ6DjGfdyJNirT9mFsHXFxb5LRfsJ6zrMfq+yP9luw+gFsgb9pLniKok8SlR833vp6Wxn1qwn1BY2X9A9/eUQRM/SVDOGuPwmq6RU3vBdbaufc0m5vq3gGBKlCgRz1vTN/ucWj4wnc9hMc+rOYMxeOoYgWvbGWWaZfVDlk8y08KjYQFdnG9L5RGm2Yew6xRNuwgZgwirD7po8xaZ8vIS4yFtV72yOVq7zPnYjEf/v8IM0xeNyraQhXJrn3qLYVcAOkS8dbQaravN3jZu8dQ0KqqjRS2Sk5FUcuHWi3d5qif9bR9XBSl9h2Hzc2Uiz5J7+eSp6MTqFZksYXymFVYKdXsKxeUxd2u/zrGtoP2UBttv9hmHzTNulen0Wb1zZ6tvKYa1BVJJ5d4f2rs13Sl6K3px/rWBlq3gC/LdYS79U9g3oN/gUC9bR0eUCAI2AgAc8ULAbCYmDcfVAFfiDl8E+ge39GI+aF7AodPwSYpawjMUNF80Lt68gVxbpBWt7t6B595GKR3A+KSgSdYOTxFFfMMrVKexYbnBRxiO5zjklFrIMB85c8TBOVvnsIxhwhTt7h2FjYxSWTyojIpZxjnIXIhhW3oCbt9B1LefcM/DAU5BWWDLj4dFS/KXAwWGoThHdLC6GQxUN7mCZHxRWRAWk46KBErrVTOIStnGcHjUx+lADnYnOeJFbOfJTkqIZBnmbmgKq0iLZsGzmypFOaONJQyOV+daXLDHlpZs02FeGuhmq6khWsrlL54JGIFz4wZ8qLgrwB47wtfyeS4EYIp6w0zNVEfLuvMTA4GbCdHGhTmKzHDd6AiW1Tcmw3samYlXGNbmYmOymaQww8mXWXO3G4YTXk8T8l5ObKcjehz4ZZBgJWlZ9mZKcsdFeR9aEi5pLd7sveY9uTWDEIXk8EkTVaNLP8Fs0ronlOBX1iDH7zMVKD8fNMmYRZK1tufwr9DhxIGDJbcz75hsYNu7kMeUe2JSiv+/rzJXrURYIl7zKrCESssD49FTniUbthsn48+aLfdT845o57BNKukuuA7Z513WauLLnnK6LorrtovzRur3XLDTemee2mxTBmmy5bFZKscM82QK0+BfIWKPFNslhKzzTVHo23KlJpnvhdeafoIDWMd1+tfnYKdg7MfQ+XmQfhoDBaHJxBJfPwCHX1xKSQsIiomLiEpJS0jK9fVbaigqKSsoqpGVtfQ1CrK/lhEj6JPP2GgvQ0bET56xozHlnaZNGXajFlz5u/T98dfr7zOgSMnWvKOG8G1z3xeMLz58IXlx1+AQEGCmypEKBx8h94UJlyESFGie+y5XXueOrBjvxtixIoTjyBBIimizE0pUqkRrZ+IJANZZjVlyZazGZevgAzfN4lyFSpVqVajVp16DYSPDYJHZOxz77wRoxakmUXWbbE27c24hVaHTl269ejVp9+AQUOGjRg1ZtyESVRTaKbNlNstdLfNmjNvgRbd9w0rVq1Zt+Guezbdt2XbAw898phucl+VwvfMd1Wr8p9WxWq1K1CqrPc++OgTHeVkk5uPQbfH6zM5AFGSFVXTjfCmmJb99R8YhPRu3sXNw4vGYCnohQTiEX38AoISCX/JRsXEJSSlpGn5CQneLcONCp6QNpyQcNx6PABEmGRT1GYeFTugbZeKJS+WEaoDSnZurSFod3O9wWgyW+jupdKkv0qT6DiDcWkWK1GqjJozJcYXJc2Ha900DlHE+3Njxk2YRDWFZtqMW+g+f7qfc/yci0+Wxt4RBFjS2yQYvVHba6TtmT0MT2CGWmu3B7h0NxsJz34tgTeuVhfa2bGiBWe1qnCerixYGhQz8mJLLC9hSVheaf1fDjm+gYbx2iDhhmoVXko7ufdBBCEHX1lJ/+vVtUB5J7dudxqtPkEi61uevxXMuU8WbhBVwVXehdvSCy0Cb5PYreziuXWQS7yf5m4/cp5fvasw5/sGE5t15IuAI7+gAZi/EfAAIjUE4TLExzTWuhvfYhNW8JQtHyfRxZqRN0y8Vn1QMPDn4uuJS3keO3mSxJ5Fj/IlkGcjz+vPbnrv/v0ijUJMTV16Knhr1CgH34hRFbyHlPp/vfp+BJbUycg65iY/8HOWR4tdwz/qrUcSyDFBPJZWAnM8bgZXRrvm8b+rIpB80XGyg5cqHr+b89HXp06+lcsrq905U9So/fZaojghbITFohKSPezfZ5ZnpNAzJGS0KVdYmI3oNc42pt3+IhDFwnAKQUpnke7xghOjpMHPSoxUEgQlViMkGb5xPJBAtEADR978daOC3UPz+0iZ3Y/lb/Zo5uXsl3c7X6Sqw5PNxfESfnOX/w9FRMGlYliAEIygGE6hEpIWocKGAcQmqMHQIzkAQTE8NICnAgAhGEExnPJ0vQo9hQWlT/tAygC9GYcR/YxsqppEj6QAEIIRFMMp1HsxlTEpNHHPrSkN0TsLump727KmLMWwCkWClG+VOoVcyR3XhyU7HKVJZb2h0vqYQg2IflGwiBjLaSorzh+reFQqdTMsCZsAQjCGE5KxSzoadcLA4pEms9omODzkxLDR2MCJGFggBCMohkvpGeJ4HMsMOB5t5D5wQwMbXTrxd83uiEZ/M+J45t4iSDp6M/QmyGgRWjHyjyAcDr+24qsVHF8uAS/f2sLld2UOfYA7DNjChs1d32q+6yvoGzwbPYBQL05R3KXh23B5Bv2+p6bHFC43+P84NW4xncptt3AzzpuvXgxmSltF/7O4mo+wKtKeRhWj6TUUZ+z10CDBLZrIfpmZ5dV85JSjJ8XtrbLKjfAsXYA2P6dpVSlbwGbajXkuWjhyuFo4TrNKxVsiv7q0LbsIV/68zaUw71X59WXD5jnGZ9/PIGNaHjWNLEsDQC4XjFFIFgwCJB3T3t527K03IHYWlrvsV6U3c3HwLqfxS3JoOBFCM1GUp0bjZnGUIfGARIkqkS8OkzYRZrInSqUjcSzadAtfvW5T8KozAYu2LVH+0IXgc/FDcZc8IAgdAkHeUIKLGlBOpeSbmRiW+qc9coGyIpCZZVkSOyCCstC0wWqVbY0pFfUYVD3f7wTQHgAHpsBBAEBZBODgEQhlQ9M02rp3srA5pxUvYzSOoIlKTVvxlCFQdXmtrIU6M23TVHXnxpybFR2q0n0oGtxUtrZLDQrx9VX8xWL2MQ1TqQ/dLnEbObO+tMox40BUNWblCpOi7bKmbV0AFHbZirNFCzOtBwGZTd32dTB53RcxFFjyCLV2PEsIu915+ZmaNkSyxlHXLzOkKfTNxHHI38JVhtawdFurteI9E7eSVO9nK4gSUgx3msEz1qCOpAhB0ZjbF6w5z7RVvThX0nYhtKQon2eZu1hmrcOB8RrPzrLotXhZc9RU2dTMaVVWSycJnKNhUUqOPNeC2PX6ployg2P53yvWtdRW18JNkgT08wtzVXM2OBXqyg9VnhwPGOw07JshDKrapPfl/JZ9U1UQv8muyogzfjq3zcXfBk5dUaandemo1Lpu+gfxRS0quGhm0MTixgxyGUTXdZZIb8fSeJ5iIbyL6xxlDU1z1Ondoq5WK/TiBmGFViZDOT9TXHjq9J/1n/df9F/2X2XX2eLqMYT6Bda7m7tPU7tesjePu86yzG/3v77fxWK6k+sviyhq2vJhA9bGk3/X5eN/AAAA") + format("woff2"); + font-weight: normal; + font-style: normal; + font-display: swap; +} +`,pa="BaseSans-Regular";function Dc(){if(document.head.querySelector(`style[base-sdk-font="${pa}"]`))return;const t=document.createElement("style");t.setAttribute("base-sdk-font",pa),t.textContent=jc,document.head.appendChild(t)}var bn,F,Oi,Ke,ma,Ti,zn,Nr,Vn,qn,It={},_i=[],Mc=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,jr=Array.isArray;function Me(e,t){for(var n in t)e[n]=t[n];return e}function Bi(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Ui(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?bn.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return Jt(e,s,r,a,null)}function Jt(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:a??++Oi,__i:-1,__u:0};return a==null&&F.vnode!=null&&F.vnode(i),i}function wn(e){return e.children}function Yt(e,t){this.props=e,this.context=t}function ft(e,t){if(t==null)return e.__?ft(e.__,e.__i+1):null;for(var n;tt&&Ke.sort(zn));$t.__r=0}function Ni(e,t,n,r,a,i,s,o,c,u,p){var d,f,l,h,m,g=r&&r.__k||_i,v=t.length;for(n.__d=c,Lc(n,t,g),c=n.__d,d=0;d0?Jt(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=e,a.__b=e.__b+1,i=null,(o=a.__i=Fc(a,n,s,p))!==-1&&(p--,(i=n[o])&&(i.__u|=131072)),i==null||i.__v===null?(o==-1&&d--,typeof a.type!="function"&&(a.__u|=65536)):o!==s&&(o==s-1?d--:o==s+1?d++:(o>s?d--:d++,a.__u|=65536))):a=e.__k[r]=null;if(p)for(r=0;r(c!=null&&(131072&c.__u)==0?1:0))for(;s>=0||o=0){if((c=t[s])&&(131072&c.__u)==0&&a==c.key&&i===c.type)return s;s--}if(oX("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:X("path",{d:"M0 2.014C0 1.58105 0 1.36457 0.0815779 1.19805C0.159686 1.03861 0.288611 0.909686 0.448049 0.831578C0.61457 0.75 0.831047 0.75 1.264 0.75H14.736C15.169 0.75 15.3854 0.75 15.552 0.831578C15.7114 0.909686 15.8403 1.03861 15.9184 1.19805C16 1.36457 16 1.58105 16 2.014V15.486C16 15.919 16 16.1354 15.9184 16.302C15.8403 16.4614 15.7114 16.5903 15.552 16.6684C15.3854 16.75 15.169 16.75 14.736 16.75H1.264C0.831047 16.75 0.61457 16.75 0.448049 16.6684C0.288611 16.5903 0.159686 16.4614 0.0815779 16.302C0 16.1354 0 15.919 0 15.486V2.014Z",fill:e==="blue"?Zc:qc})});var Ot,$,Pn,wa,Wn=0,Fi=[],ne=F,va=ne.__b,xa=ne.__r,Ea=ne.diffed,Aa=ne.__c,Sa=ne.unmount,ka=ne.__;function Lr(e,t){ne.__h&&ne.__h($,e,Wn||t),Wn=0;var n=$.__H||($.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Je(e){return Wn=1,Jc(Gi,e)}function Jc(e,t,n){var r=Lr(Ot++,2);if(r.t=e,!r.__c&&(r.__=[Gi(void 0,t),function(o){var c=r.__N?r.__N[0]:r.__[0],u=r.t(c,o);c!==u&&(r.__N=[u,r.__[1]],r.__c.setState({}))}],r.__c=$,!$.u)){var a=function(o,c,u){if(!r.__c.__H)return!0;var p=r.__c.__H.__.filter(function(f){return!!f.__c});if(p.every(function(f){return!f.__N}))return!i||i.call(this,o,c,u);var d=!1;return p.forEach(function(f){if(f.__N){var l=f.__[0];f.__=f.__N,f.__N=void 0,l!==f.__[0]&&(d=!0)}}),!(!d&&r.__c.props===o)&&(!i||i.call(this,o,c,u))};$.u=!0;var i=$.shouldComponentUpdate,s=$.componentWillUpdate;$.componentWillUpdate=function(o,c,u){if(this.__e){var p=i;i=void 0,a(o,c,u),i=p}s&&s.call(this,o,c,u)},$.shouldComponentUpdate=a}return r.__N||r.__}function Jn(e,t){var n=Lr(Ot++,3);!ne.__s&&Hi(n.__H,t)&&(n.__=e,n.i=t,$.__H.__h.push(n))}function Yc(e,t){var n=Lr(Ot++,7);return Hi(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Xc(){for(var e;e=Fi.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Xt),e.__H.__h.forEach(Yn),e.__H.__h=[]}catch(t){e.__H.__h=[],ne.__e(t,e.__v)}}ne.__b=function(e){$=null,va&&va(e)},ne.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ka&&ka(e,t)},ne.__r=function(e){xa&&xa(e),Ot=0;var t=($=e.__c).__H;t&&(Pn===$?(t.__h=[],$.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(t.__h.forEach(Xt),t.__h.forEach(Yn),t.__h=[],Ot=0)),Pn=$},ne.diffed=function(e){Ea&&Ea(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Fi.push(t)!==1&&wa===ne.requestAnimationFrame||((wa=ne.requestAnimationFrame)||Qc)(Xc)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),Pn=$=null},ne.__c=function(e,t){t.some(function(n){try{n.__h.forEach(Xt),n.__h=n.__h.filter(function(r){return!r.__||Yn(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],ne.__e(r,n.__v)}}),Aa&&Aa(e,t)},ne.unmount=function(e){Sa&&Sa(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(r){try{Xt(r)}catch(a){t=a}}),n.__H=void 0,t&&ne.__e(t,n.__v))};var Pa=typeof requestAnimationFrame=="function";function Qc(e){var t,n=function(){clearTimeout(r),Pa&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);Pa&&(t=requestAnimationFrame(n))}function Xt(e){var t=$,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),$=t}function Yn(e){var t=$;e.__c=e.__(),$=t}function Hi(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Gi(e,t){return typeof t=="function"?t(e):t}const $c='.-base-acc-sdk-css-reset{-webkit-font-smoothing:antialiased;pointer-events:auto !important}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2147483647}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-container *{user-select:none;box-sizing:border-box}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:20px}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-backdrop{align-items:flex-end;justify-content:stretch;padding:0}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog{position:relative;z-index:2147483648}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog{width:100%}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance{background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);width:380px;max-height:90vh;overflow:hidden;transform:scale(0.95);opacity:0;transition:all .2s ease-in-out}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance{touch-action:pan-y;user-select:none}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-hidden{transform:scale(0.9);opacity:0}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-hidden{transform:translateY(100%)}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance:not(.-base-acc-sdk-dialog-instance-hidden){transform:scale(1);opacity:1}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance:not(.-base-acc-sdk-dialog-instance-hidden){transform:translateY(0)}}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance{width:100%;max-width:100%;border-radius:20px 20px 0 0;box-shadow:0 -10px 25px rgba(0,0,0,.15);max-height:80vh;transform:translateY(0)}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-hidden{transform:translateY(100%);opacity:1}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance:not(.-base-acc-sdk-dialog-instance-hidden){transform:translateY(0);opacity:1}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 0 20px}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header{padding:16px 20px 12px 20px}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-icon-and-title{display:flex;align-items:center;gap:8px}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-icon-and-title-title{font-family:"BaseSans-Regular",sans-serif;font-size:14px;font-weight:400;color:#5b616e}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-cblogo{width:32px;height:32px}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer;border-radius:6px;transition:background-color .2s}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-close:hover{background-color:#f5f7f8}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-close-icon{width:14px;height:14px}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-header-close-icon{display:none}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-content{padding:20px 20px 16px 20px;font-family:"BaseSans-Regular",sans-serif}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-content{padding:8px 20px 12px 20px}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-content-title{font-size:20px;font-weight:600;line-height:28px;color:#0a0b0d;margin-bottom:10px}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-content-message{font-size:16px;font-weight:400;line-height:24px;color:#5b616e;margin-bottom:0}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-actions{display:flex;padding:16px 20px 20px 20px;flex-direction:column}@media(max-width: 600px)and (orientation: portrait){.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-actions{padding:16px 20px calc(20px + env(safe-area-inset-bottom)) 20px;gap:6px}}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button{font-family:"BaseSans-Regular",sans-serif;font-size:16px;font-weight:500;line-height:24px;border:none;border-radius:12px;padding:16px 24px;cursor:pointer;transition:all .2s ease-in-out;width:100%;margin:4px 0}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button:disabled{opacity:.5;cursor:not-allowed}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-primary{background-color:#0a0b0d;color:#fff}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-primary:hover:not(:disabled){background-color:#1c1e20}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-primary:active:not(:disabled){background-color:#2a2d31}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-secondary{background-color:#eef0f3;color:#0a0b0d}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-secondary:hover:not(:disabled){background-color:#e1e4e8}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-instance-button-secondary:active:not(:disabled){background-color:#d4d8dd}.-base-acc-sdk-css-reset .-base-acc-sdk-dialog-handle-bar{position:absolute;top:-16px;left:50%;transform:translateX(-50%);width:64px;height:4px;background-color:#d1d5db;border-radius:2px;opacity:0;animation:handleBarFadeIn .2s ease-in-out .2s forwards}@keyframes handleBarFadeIn{from{opacity:0}to{opacity:1}}',eu="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzIDFMMSAxM20wLTEyTDEzIDEzIiBzdHJva2U9IiM5Q0EzQUYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+";function Ki(){return window.innerWidth<=600&&window.innerHeight>window.innerWidth}const tu=()=>{const[e,t]=Je(!1);return Jn(()=>{const n=()=>{t(Ki())};return n(),window.addEventListener("resize",n),window.addEventListener("orientationchange",n),()=>{window.removeEventListener("resize",n),window.removeEventListener("orientationchange",n)}},[]),e?X("div",{class:"-base-acc-sdk-dialog-handle-bar"}):null};class nu{items=new Map;nextItemKey=0;root=null;constructor(){}attach(t){this.root=document.createElement("div"),this.root.className="-base-acc-sdk-dialog-root",t.appendChild(this.root),this.render()}presentItem(t){const n=this.nextItemKey++;this.items.set(n,t),this.render()}clear(){this.items.clear(),this.root&&ba(null,this.root)}render(){this.root&&ba(X("div",{children:X(ru,{children:Array.from(this.items.entries()).map(([t,n])=>Ui(au,{...n,key:t,handleClose:()=>{this.clear(),n.onClose?.()}}))})}),this.root)}}const ru=e=>{const[t,n]=Je(0),[r,a]=Je(!1),[i,s]=Je(0),o=p=>{if(!Ki())return;const d=p.touches[0];s(d.clientY),a(!0)},c=p=>{if(!r)return;const f=p.touches[0].clientY-i;f>0&&(n(f),p.preventDefault())},u=()=>{if(r)if(a(!1),t>100){const p=document.querySelector(".-base-acc-sdk-dialog-instance-header-close");p&&p.click()}else n(0)};return X("div",{class:Zn("-base-acc-sdk-dialog-container"),children:[X("style",{children:$c}),X("div",{class:"-base-acc-sdk-dialog-backdrop",onTouchStart:o,onTouchMove:c,onTouchEnd:u,children:X("div",{class:"-base-acc-sdk-dialog",style:{transform:`translateY(${t}px)`,transition:r?"none":"transform 0.2s ease-out"},children:[X(tu,{}),e.children]})})]})},au=({title:e,message:t,actionItems:n,handleClose:r})=>{const[a,i]=Je(!0),[s,o]=Je(!0),[c,u]=Je(null);Jn(()=>{const f=window.setTimeout(()=>{i(!1)},1);return()=>{window.clearTimeout(f)}},[]),Jn(()=>{(async()=>{const l=E.account.get().accounts?.[0];if(l){const h=await zc(l);u(h)}o(!1)})()},[]);const p=Yc(()=>c?`Signed in as ${c}`:"Base Account",[c]),d=!s;return X("div",{class:Zn("-base-acc-sdk-dialog-instance",a&&"-base-acc-sdk-dialog-instance-hidden"),children:[X("div",{class:"-base-acc-sdk-dialog-instance-header",children:[X("div",{class:"-base-acc-sdk-dialog-instance-header-icon-and-title",children:[X(Wc,{fill:"blue"}),d&&X("div",{class:"-base-acc-sdk-dialog-instance-header-icon-and-title-title",children:p})]}),X("div",{class:"-base-acc-sdk-dialog-instance-header-close",onClick:r,children:X("img",{src:eu,class:"-base-acc-sdk-dialog-instance-header-close-icon"})})]}),X("div",{class:"-base-acc-sdk-dialog-instance-content",children:[X("div",{class:"-base-acc-sdk-dialog-instance-content-title",children:e}),X("div",{class:"-base-acc-sdk-dialog-instance-content-message",children:t})]}),n&&n.length>0&&X("div",{class:"-base-acc-sdk-dialog-instance-actions",children:n.map((f,l)=>X("button",{class:Zn("-base-acc-sdk-dialog-instance-button",f.variant==="primary"&&"-base-acc-sdk-dialog-instance-button-primary",f.variant==="secondary"&&"-base-acc-sdk-dialog-instance-button-secondary"),onClick:f.onClick,children:f.text},l))})]})};let Nt=null;function Fr(){if(!Nt){const e=document.createElement("div");e.className="-base-acc-sdk-css-reset",document.body.appendChild(e),Nt=new nu,Nt.attach(e)}return Dc(),Nt}const Ca=420,Ia=700,iu="{app} wants to continue in Base Account",su="This action requires your permission to open a new window.";function ou(e){const t=(window.innerWidth-Ca)/2+window.screenX,n=(window.innerHeight-Ia)/2+window.screenY;uu(e);function r(){const i=`wallet_${crypto.randomUUID()}`,s=window.open(e,i,`width=${Ca}, height=${Ia}, left=${t}, top=${n}`);return s?.focus(),s||null}const a=r();return a?Promise.resolve(a):du(r)}function cu(e){e&&!e.closed&&e.close()}function uu(e){const t={sdkName:gn,sdkVersion:wt,origin:window.location.origin,coop:_c()};for(const[n,r]of Object.entries(t))e.searchParams.has(n)||e.searchParams.append(n,r.toString())}function du(e){const t=E.config.get().metadata?.appName??"App",n=Fr();return new Promise((r,a)=>{Rr({dialogContext:"popup_blocked"}),n.presentItem({title:iu.replace("{app}",t),message:su,onClose:()=>{We({dialogContext:"popup_blocked",dialogAction:"cancel"}),a(A.rpc.internal("Popup window was blocked"))},actionItems:[{text:"Try again",variant:"primary",onClick:()=>{We({dialogContext:"popup_blocked",dialogAction:"confirm"});const i=e();i?r(i):a(A.rpc.internal("Popup window was blocked")),n.clear()}},{text:"Cancel",variant:"secondary",onClick:()=>{We({dialogContext:"popup_blocked",dialogAction:"cancel"}),a(A.rpc.internal("Popup window was blocked")),n.clear()}}]})})}class lu{metadata;preference;url;popup=null;listeners=new Map;constructor({url:t=rc,metadata:n,preference:r}){this.url=new URL(t),this.metadata=n,this.preference=r}postMessage=async t=>{(await this.waitForPopupLoaded()).postMessage(t,this.url.origin)};postRequestAndWaitForResponse=async t=>{const n=this.onMessage(({requestId:r})=>r===t.id);return this.postMessage(t),await n};onMessage=async t=>new Promise((n,r)=>{const a=i=>{if(i.origin!==this.url.origin)return;const s=i.data;t(s)&&(n(s),window.removeEventListener("message",a),this.listeners.delete(a))};window.addEventListener("message",a),this.listeners.set(a,{reject:r})});disconnect=()=>{cu(this.popup),this.popup=null,this.listeners.forEach(({reject:t},n)=>{t(A.provider.userRejectedRequest("Request rejected")),window.removeEventListener("message",n)}),this.listeners.clear()};waitForPopupLoaded=async()=>this.popup&&!this.popup.closed?(this.popup.focus(),this.popup):(Uc(),this.popup=await ou(this.url),this.onMessage(({event:t})=>t==="PopupUnload").then(()=>{this.disconnect(),Nc()}).catch(()=>{}),this.onMessage(({event:t})=>t==="PopupLoaded").then(t=>{this.postMessage({requestId:t.id,data:{version:wt,sdkName:gn,metadata:this.metadata,preference:this.preference,location:window.location.toString()}})}).then(()=>{if(!this.popup)throw A.rpc.internal();return Rc(),this.popup}))}function fu(e){const t=kc(mu(e),{shouldIncludeStack:!0}),n=new URL("https://docs.cloud.coinbase.com/wallet-sdk/docs/errors");return n.searchParams.set("version",wt),n.searchParams.set("code",t.code.toString()),n.searchParams.set("message",t.message),{...t,docUrl:n.href}}function pu(e){return e.errorMessage!==void 0}function mu(e){if(typeof e=="string")return{message:e,code:Q.rpc.internal};if(pu(e)){const t=e.errorMessage,n=e.errorCode??(t.match(/(denied|rejected)/i)?Q.provider.userRejectedRequest:void 0);return{...e,message:t,code:n,data:{method:e.method}}}return e}class hu extends wo{}const yu=({method:e,correlationId:t})=>{Z("provider.request.started",{action:G.unknown,componentType:H.unknown,method:e,signerType:"base-account",correlationId:t},K.high)},gu=({method:e,correlationId:t,errorMessage:n})=>{Z("provider.request.error",{action:G.error,componentType:H.unknown,method:e,signerType:"base-account",correlationId:t,errorMessage:n},K.high)},bu=({method:e,correlationId:t})=>{Z("provider.request.responded",{action:G.unknown,componentType:H.unknown,method:e,signerType:"base-account",correlationId:t},K.high)},at=e=>"message"in e&&typeof e.message=="string"?e.message:"";function wu(){return e=>e}const en=wu();function Cn(e){return Math.floor(e)}const vu=/^[0-9]*$/,zi=/^[a-f0-9]*$/;function xu(e){return[...e].map(t=>t.toString(16).padStart(2,"0")).join("")}function Eu(e){return new Uint8Array(e.match(/.{1,2}/g).map(t=>Number.parseInt(t,16)))}function Vi(e){return en(`0x${BigInt(e).toString(16)}`)}function Au(e){return e.startsWith("0x")||e.startsWith("0X")}function qi(e){return Au(e)?e.slice(2):e}function Su(e){if(typeof e!="string")return!1;const t=qi(e).toLowerCase();return zi.test(t)}function Xn(e,t=!1){if(typeof e=="string"){const n=qi(e).toLowerCase();if(zi.test(n))return en(t?`0x${n}`:n)}throw A.rpc.invalidParams(`"${String(e)}" is not a hexadecimal string`)}function ku(e,t=!1){let n=Xn(e,!1);return n.length%2===1&&(n=en(`0${n}`)),t?en(`0x${n}`):n}function Pu(e){if(typeof e=="number"&&Number.isInteger(e))return Cn(e);if(typeof e=="string"){if(vu.test(e))return Cn(Number(e));if(Su(e))return Cn(Number(BigInt(ku(e,!0))))}throw A.rpc.invalidParams(`Not an integer: ${String(e)}`)}const Cu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_signer.handshake.started",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Iu=({method:e,correlationId:t,errorMessage:n})=>{const r=E.subAccountsConfig.get();Z("scw_signer.handshake.error",{action:G.error,componentType:H.unknown,method:e,correlationId:t,errorMessage:n,subAccountCreation:r?.creation,subAccountDefaultAccount:r?.defaultAccount,subAccountFunding:r?.funding},K.high)},Ou=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_signer.handshake.completed",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Tu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_signer.request.started",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},_u=({method:e,correlationId:t,errorMessage:n})=>{const r=E.subAccountsConfig.get();Z("scw_signer.request.error",{action:G.error,componentType:H.unknown,method:e,correlationId:t,errorMessage:n,subAccountCreation:r?.creation,subAccountDefaultAccount:r?.defaultAccount,subAccountFunding:r?.funding},K.high)},Bu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_signer.request.completed",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Uu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.request.started",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Ru=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.request.completed",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Nu=({method:e,correlationId:t,errorMessage:n})=>{const r=E.subAccountsConfig.get();Z("scw_sub_account.request.error",{action:G.error,componentType:H.unknown,method:e,correlationId:t,errorMessage:n,subAccountCreation:r?.creation,subAccountDefaultAccount:r?.defaultAccount,subAccountFunding:r?.funding},K.high)},ju=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.add_owner.started",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Du=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.add_owner.completed",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Mu=({method:e,correlationId:t,errorMessage:n})=>{const r=E.subAccountsConfig.get();Z("scw_sub_account.add_owner.error",{action:G.error,componentType:H.unknown,method:e,correlationId:t,errorMessage:n,subAccountCreation:r?.creation,subAccountDefaultAccount:r?.defaultAccount,subAccountFunding:r?.funding},K.high)},Lu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.insufficient_balance.error_handling.started",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Fu=({method:e,correlationId:t})=>{const n=E.subAccountsConfig.get();Z("scw_sub_account.insufficient_balance.error_handling.completed",{action:G.unknown,componentType:H.unknown,method:e,correlationId:t,subAccountCreation:n?.creation,subAccountDefaultAccount:n?.defaultAccount,subAccountFunding:n?.funding},K.high)},Hu=({method:e,correlationId:t,errorMessage:n})=>{const r=E.subAccountsConfig.get();Z("scw_sub_account.insufficient_balance.error_handling.error",{action:G.error,componentType:H.unknown,method:e,correlationId:t,errorMessage:n,subAccountCreation:r?.creation,subAccountDefaultAccount:r?.defaultAccount,subAccountFunding:r?.funding},K.high)},Gu=[{inputs:[{name:"preOpGas",type:"uint256"},{name:"paid",type:"uint256"},{name:"validAfter",type:"uint48"},{name:"validUntil",type:"uint48"},{name:"targetSuccess",type:"bool"},{name:"targetResult",type:"bytes"}],name:"ExecutionResult",type:"error"},{inputs:[{name:"opIndex",type:"uint256"},{name:"reason",type:"string"}],name:"FailedOp",type:"error"},{inputs:[{name:"sender",type:"address"}],name:"SenderAddressResult",type:"error"},{inputs:[{name:"aggregator",type:"address"}],name:"SignatureValidationFailed",type:"error"},{inputs:[{components:[{name:"preOpGas",type:"uint256"},{name:"prefund",type:"uint256"},{name:"sigFailed",type:"bool"},{name:"validAfter",type:"uint48"},{name:"validUntil",type:"uint48"},{name:"paymasterContext",type:"bytes"}],name:"returnInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"senderInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"factoryInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"paymasterInfo",type:"tuple"}],name:"ValidationResult",type:"error"},{inputs:[{components:[{name:"preOpGas",type:"uint256"},{name:"prefund",type:"uint256"},{name:"sigFailed",type:"bool"},{name:"validAfter",type:"uint48"},{name:"validUntil",type:"uint48"},{name:"paymasterContext",type:"bytes"}],name:"returnInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"senderInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"factoryInfo",type:"tuple"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"paymasterInfo",type:"tuple"},{components:[{name:"aggregator",type:"address"},{components:[{name:"stake",type:"uint256"},{name:"unstakeDelaySec",type:"uint256"}],name:"stakeInfo",type:"tuple"}],name:"aggregatorInfo",type:"tuple"}],name:"ValidationResultWithAggregation",type:"error"},{anonymous:!1,inputs:[{indexed:!0,name:"userOpHash",type:"bytes32"},{indexed:!0,name:"sender",type:"address"},{indexed:!1,name:"factory",type:"address"},{indexed:!1,name:"paymaster",type:"address"}],name:"AccountDeployed",type:"event"},{anonymous:!1,inputs:[],name:"BeforeExecution",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"totalDeposit",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"aggregator",type:"address"}],name:"SignatureAggregatorChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"totalStaked",type:"uint256"},{indexed:!1,name:"unstakeDelaySec",type:"uint256"}],name:"StakeLocked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"withdrawTime",type:"uint256"}],name:"StakeUnlocked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"withdrawAddress",type:"address"},{indexed:!1,name:"amount",type:"uint256"}],name:"StakeWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"userOpHash",type:"bytes32"},{indexed:!0,name:"sender",type:"address"},{indexed:!0,name:"paymaster",type:"address"},{indexed:!1,name:"nonce",type:"uint256"},{indexed:!1,name:"success",type:"bool"},{indexed:!1,name:"actualGasCost",type:"uint256"},{indexed:!1,name:"actualGasUsed",type:"uint256"}],name:"UserOperationEvent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"userOpHash",type:"bytes32"},{indexed:!0,name:"sender",type:"address"},{indexed:!1,name:"nonce",type:"uint256"},{indexed:!1,name:"revertReason",type:"bytes"}],name:"UserOperationRevertReason",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"account",type:"address"},{indexed:!1,name:"withdrawAddress",type:"address"},{indexed:!1,name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"SIG_VALIDATION_FAILED",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"initCode",type:"bytes"},{name:"sender",type:"address"},{name:"paymasterAndData",type:"bytes"}],name:"_validateSenderAndPaymaster",outputs:[],stateMutability:"view",type:"function"},{inputs:[{name:"unstakeDelaySec",type:"uint32"}],name:"addStake",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"account",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"address"}],name:"depositTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"",type:"address"}],name:"deposits",outputs:[{name:"deposit",type:"uint112"},{name:"staked",type:"bool"},{name:"stake",type:"uint112"},{name:"unstakeDelaySec",type:"uint32"},{name:"withdrawTime",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"address"}],name:"getDepositInfo",outputs:[{components:[{name:"deposit",type:"uint112"},{name:"staked",type:"bool"},{name:"stake",type:"uint112"},{name:"unstakeDelaySec",type:"uint32"},{name:"withdrawTime",type:"uint48"}],name:"info",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{name:"sender",type:"address"},{name:"key",type:"uint192"}],name:"getNonce",outputs:[{name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"initCode",type:"bytes"}],name:"getSenderAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"getUserOpHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOps",type:"tuple[]"},{name:"aggregator",type:"address"},{name:"signature",type:"bytes"}],name:"opsPerAggregator",type:"tuple[]"},{name:"beneficiary",type:"address"}],name:"handleAggregatedOps",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"ops",type:"tuple[]"},{name:"beneficiary",type:"address"}],name:"handleOps",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"key",type:"uint192"}],name:"incrementNonce",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"callData",type:"bytes"},{components:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"paymaster",type:"address"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"}],name:"mUserOp",type:"tuple"},{name:"userOpHash",type:"bytes32"},{name:"prefund",type:"uint256"},{name:"contextOffset",type:"uint256"},{name:"preOpGas",type:"uint256"}],name:"opInfo",type:"tuple"},{name:"context",type:"bytes"}],name:"innerHandleOp",outputs:[{name:"actualGasCost",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"",type:"address"},{name:"",type:"uint192"}],name:"nonceSequenceNumber",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"op",type:"tuple"},{name:"target",type:"address"},{name:"targetCallData",type:"bytes"}],name:"simulateHandleOp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"simulateValidation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unlockStake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"withdrawAddress",type:"address"}],name:"withdrawStake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"withdrawAddress",type:"address"},{name:"withdrawAmount",type:"uint256"}],name:"withdrawTo",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],Ku="0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789";function Zi(e,t={}){const{forHash:n}=t,{authorization:r,factory:a,factoryData:i}=e;return n&&(a==="0x7702"||a==="0x7702000000000000000000000000000000000000")?r?ct([r.address,i??"0x"]):"0x7702000000000000000000000000000000000000":a?ct([a,i??"0x"]):"0x"}const Oa="0x22e325a297439656";function Wi(e,t={}){const{callGasLimit:n,callData:r,maxPriorityFeePerGas:a,maxFeePerGas:i,paymaster:s,paymasterData:o,paymasterPostOpGasLimit:c,paymasterSignature:u,paymasterVerificationGasLimit:p,sender:d,signature:f="0x",verificationGasLimit:l}=e,h=ct([fe(N(l||0n),{size:16}),fe(N(n||0n),{size:16})]),m=Zi(e,t),g=ct([fe(N(a||0n),{size:16}),fe(N(i||0n),{size:16})]),v=e.nonce??0n,S=s?ct([s,fe(N(p||0n),{size:16}),fe(N(c||0n),{size:16}),o||"0x",...u?t.forHash?[Oa]:[u,fe(N(di(u)),{size:2}),Oa]:[]]):"0x",x=e.preVerificationGas??0n;return{accountGasLimits:h,callData:r,initCode:m,gasFees:g,nonce:v,paymasterAndData:S,preVerificationGas:x,sender:d,signature:f}}const zu={PackedUserOperation:[{type:"address",name:"sender"},{type:"uint256",name:"nonce"},{type:"bytes",name:"initCode"},{type:"bytes",name:"callData"},{type:"bytes32",name:"accountGasLimits"},{type:"uint256",name:"preVerificationGas"},{type:"bytes32",name:"gasFees"},{type:"bytes",name:"paymasterAndData"}]};function Vu(e){const{chainId:t,entryPointAddress:n,userOperation:r}=e,a=Wi(r,{forHash:!0});return{types:zu,primaryType:"PackedUserOperation",domain:{name:"ERC4337",version:"1",chainId:t,verifyingContract:n},message:a}}function qu(e){const{chainId:t,entryPointAddress:n,entryPointVersion:r}=e,a=e.userOperation,{authorization:i,callData:s="0x",callGasLimit:o,maxFeePerGas:c,maxPriorityFeePerGas:u,nonce:p,paymasterAndData:d="0x",preVerificationGas:f,sender:l,verificationGasLimit:h}=a;if(r==="0.8"||r==="0.9")return yn(Vu({chainId:t,entryPointAddress:n,userOperation:a}));const m=(()=>{if(r==="0.6"){const g=a.initCode?.slice(0,42),v=a.initCode?.slice(42),S=Zi({authorization:i,factory:g,factoryData:v},{forHash:!0});return ot([{type:"address"},{type:"uint256"},{type:"bytes32"},{type:"bytes32"},{type:"uint256"},{type:"uint256"},{type:"uint256"},{type:"uint256"},{type:"uint256"},{type:"bytes32"}],[l,p,ke(S),ke(s),o,h,f,c,u,ke(d)])}if(r==="0.7"){const g=Wi(a,{forHash:!0});return ot([{type:"address"},{type:"uint256"},{type:"bytes32"},{type:"bytes32"},{type:"bytes32"},{type:"uint256"},{type:"bytes32"},{type:"bytes32"}],[g.sender,g.nonce,ke(g.initCode),ke(g.callData),g.accountGasLimits,g.preVerificationGas,g.gasFees,ke(g.paymasterAndData)])}throw new Error(`entryPointVersion "${r}" not supported.`)})();return ke(ot([{type:"bytes32"},{type:"address"},{type:"uint256"}],[ke(m),n,BigInt(t)]))}async function Zu(e){const{extend:t,nonceKeyManager:n=Ho({source:{get(){return Date.now()},set(){}}}),...r}=e;let a=!1;const i=await e.getAddress();return{...t,...r,address:i,async getFactoryArgs(){return"isDeployed"in this&&await this.isDeployed()?{factory:void 0,factoryData:void 0}:e.getFactoryArgs()},async getNonce(s){const o=s?.key??BigInt(await n.consume({address:i,chainId:e.client.chain.id,client:e.client}));return e.getNonce?await e.getNonce({...s,key:o}):await Ln(e.client,{abi:vo(["function getNonce(address, uint192) pure returns (uint256)"]),address:e.entryPoint.address,functionName:"getNonce",args:[i,o]})},async isDeployed(){return a?!0:(a=!!await ye(e.client,li,"getCode")({address:i}),a)},...e.sign?{async sign(s){const[{factory:o,factoryData:c},u]=await Promise.all([this.getFactoryArgs(),e.sign(s)]);return o&&c?kn({address:o,data:c,signature:u}):u}}:{},async signMessage(s){const[{factory:o,factoryData:c},u]=await Promise.all([this.getFactoryArgs(),e.signMessage(s)]);return o&&c&&o!=="0x7702"?kn({address:o,data:c,signature:u}):u},async signTypedData(s){const[{factory:o,factoryData:c},u]=await Promise.all([this.getFactoryArgs(),e.signTypedData(s)]);return o&&c&&o!=="0x7702"?kn({address:o,data:c,signature:u}):u},type:"smart"}}class Qn extends B{constructor({cause:t}){super("Smart Account is not deployed.",{cause:t,metaMessages:["This could arise when:","- No `factory`/`factoryData` or `initCode` properties are provided for Smart Account deployment.","- An incorrect `sender` address is provided."],name:"AccountNotDeployedError"})}}Object.defineProperty(Qn,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa20/});class pt extends B{constructor({cause:t,data:n,message:r}={}){const a=r?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${a?`with reason: ${a}`:"for an unknown reason"}.`,{cause:t,name:"ExecutionRevertedError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=n}}Object.defineProperty(pt,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32521});Object.defineProperty(pt,"message",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});class $n extends B{constructor({cause:t}){super("Failed to send funds to beneficiary.",{cause:t,name:"FailedToSendToBeneficiaryError"})}}Object.defineProperty($n,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa91/});class er extends B{constructor({cause:t}){super("Gas value overflowed.",{cause:t,metaMessages:["This could arise when:","- one of the gas values exceeded 2**120 (uint120)"].filter(Boolean),name:"GasValuesOverflowError"})}}Object.defineProperty(er,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa94/});class tr extends B{constructor({cause:t}){super("The `handleOps` function was called by the Bundler with a gas limit too low.",{cause:t,name:"HandleOpsOutOfGasError"})}}Object.defineProperty(tr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa95/});class nr extends B{constructor({cause:t,factory:n,factoryData:r,initCode:a}){super("Failed to simulate deployment for Smart Account.",{cause:t,metaMessages:["This could arise when:","- Invalid `factory`/`factoryData` or `initCode` properties are present","- Smart Account deployment execution ran out of gas (low `verificationGasLimit` value)",`- Smart Account deployment execution reverted with an error +`,n&&`factory: ${n}`,r&&`factoryData: ${r}`,a&&`initCode: ${a}`].filter(Boolean),name:"InitCodeFailedError"})}}Object.defineProperty(nr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa13/});class rr extends B{constructor({cause:t,factory:n,factoryData:r,initCode:a}){super("Smart Account initialization implementation did not create an account.",{cause:t,metaMessages:["This could arise when:","- `factory`/`factoryData` or `initCode` properties are invalid",`- Smart Account initialization implementation is incorrect +`,n&&`factory: ${n}`,r&&`factoryData: ${r}`,a&&`initCode: ${a}`].filter(Boolean),name:"InitCodeMustCreateSenderError"})}}Object.defineProperty(rr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa15/});class ar extends B{constructor({cause:t,factory:n,factoryData:r,initCode:a,sender:i}){super("Smart Account initialization implementation does not return the expected sender.",{cause:t,metaMessages:["This could arise when:",`Smart Account initialization implementation does not return a sender address +`,n&&`factory: ${n}`,r&&`factoryData: ${r}`,a&&`initCode: ${a}`,i&&`sender: ${i}`].filter(Boolean),name:"InitCodeMustReturnSenderError"})}}Object.defineProperty(ar,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa14/});class ir extends B{constructor({cause:t}){super("Smart Account does not have sufficient funds to execute the User Operation.",{cause:t,metaMessages:["This could arise when:","- the Smart Account does not have sufficient funds to cover the required prefund, or","- a Paymaster was not provided"].filter(Boolean),name:"InsufficientPrefundError"})}}Object.defineProperty(ir,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa21/});class sr extends B{constructor({cause:t}){super("Bundler attempted to call an invalid function on the EntryPoint.",{cause:t,name:"InternalCallOnlyError"})}}Object.defineProperty(sr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa92/});class or extends B{constructor({cause:t}){super("Bundler used an invalid aggregator for handling aggregated User Operations.",{cause:t,name:"InvalidAggregatorError"})}}Object.defineProperty(or,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa96/});class cr extends B{constructor({cause:t,nonce:n}){super("Invalid Smart Account nonce used for User Operation.",{cause:t,metaMessages:[n&&`nonce: ${n}`].filter(Boolean),name:"InvalidAccountNonceError"})}}Object.defineProperty(cr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa25/});class ur extends B{constructor({cause:t}){super("Bundler has not set a beneficiary address.",{cause:t,name:"InvalidBeneficiaryError"})}}Object.defineProperty(ur,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa90/});class tn extends B{constructor({cause:t}){super("Invalid fields set on User Operation.",{cause:t,name:"InvalidFieldsError"})}}Object.defineProperty(tn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});class dr extends B{constructor({cause:t,paymasterAndData:n}){super("Paymaster properties provided are invalid.",{cause:t,metaMessages:["This could arise when:","- the `paymasterAndData` property is of an incorrect length\n",n&&`paymasterAndData: ${n}`].filter(Boolean),name:"InvalidPaymasterAndDataError"})}}Object.defineProperty(dr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa93/});class ze extends B{constructor({cause:t}){super("Paymaster deposit for the User Operation is too low.",{cause:t,metaMessages:["This could arise when:","- the Paymaster has deposited less than the expected amount via the `deposit` function"].filter(Boolean),name:"PaymasterDepositTooLowError"})}}Object.defineProperty(ze,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32508});Object.defineProperty(ze,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa31/});class lr extends B{constructor({cause:t}){super("The `validatePaymasterUserOp` function on the Paymaster reverted.",{cause:t,name:"PaymasterFunctionRevertedError"})}}Object.defineProperty(lr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa33/});class fr extends B{constructor({cause:t}){super("The Paymaster contract has not been deployed.",{cause:t,name:"PaymasterNotDeployedError"})}}Object.defineProperty(fr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa30/});class nn extends B{constructor({cause:t}){super("UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.",{cause:t,name:"PaymasterRateLimitError"})}}Object.defineProperty(nn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32504});class rn extends B{constructor({cause:t}){super("UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.",{cause:t,name:"PaymasterStakeTooLowError"})}}Object.defineProperty(rn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32505});class pr extends B{constructor({cause:t}){super("Paymaster `postOp` function reverted.",{cause:t,name:"PaymasterPostOpFunctionRevertedError"})}}Object.defineProperty(pr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa50/});class mr extends B{constructor({cause:t,factory:n,factoryData:r,initCode:a}){super("Smart Account has already been deployed.",{cause:t,metaMessages:["Remove the following properties and try again:",n&&"`factory`",r&&"`factoryData`",a&&"`initCode`"].filter(Boolean),name:"SenderAlreadyConstructedError"})}}Object.defineProperty(mr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa10/});class an extends B{constructor({cause:t}){super("UserOperation rejected because account signature check failed (or paymaster signature, if the paymaster uses its data as signature).",{cause:t,name:"SignatureCheckFailedError"})}}Object.defineProperty(an,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32507});class hr extends B{constructor({cause:t}){super("The `validateUserOp` function on the Smart Account reverted.",{cause:t,name:"SmartAccountFunctionRevertedError"})}}Object.defineProperty(hr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa23/});class sn extends B{constructor({cause:t}){super("UserOperation rejected because account specified unsupported signature aggregator.",{cause:t,name:"UnsupportedSignatureAggregatorError"})}}Object.defineProperty(sn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32506});class yr extends B{constructor({cause:t}){super("User Operation expired.",{cause:t,metaMessages:["This could arise when:","- the `validAfter` or `validUntil` values returned from `validateUserOp` on the Smart Account are not satisfied"].filter(Boolean),name:"UserOperationExpiredError"})}}Object.defineProperty(yr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa22/});class gr extends B{constructor({cause:t}){super("Paymaster for User Operation expired.",{cause:t,metaMessages:["This could arise when:","- the `validAfter` or `validUntil` values returned from `validatePaymasterUserOp` on the Paymaster are not satisfied"].filter(Boolean),name:"UserOperationPaymasterExpiredError"})}}Object.defineProperty(gr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa32/});class br extends B{constructor({cause:t}){super("Signature provided for the User Operation is invalid.",{cause:t,metaMessages:["This could arise when:","- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Smart Account"].filter(Boolean),name:"UserOperationSignatureError"})}}Object.defineProperty(br,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa24/});class wr extends B{constructor({cause:t}){super("Signature provided for the User Operation is invalid.",{cause:t,metaMessages:["This could arise when:","- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Paymaster"].filter(Boolean),name:"UserOperationPaymasterSignatureError"})}}Object.defineProperty(wr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa34/});class on extends B{constructor({cause:t}){super("User Operation rejected by EntryPoint's `simulateValidation` during account creation or validation.",{cause:t,name:"UserOperationRejectedByEntryPointError"})}}Object.defineProperty(on,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32500});class cn extends B{constructor({cause:t}){super("User Operation rejected by Paymaster's `validatePaymasterUserOp`.",{cause:t,name:"UserOperationRejectedByPaymasterError"})}}Object.defineProperty(cn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32501});class un extends B{constructor({cause:t}){super("User Operation rejected with op code validation error.",{cause:t,name:"UserOperationRejectedByOpCodeError"})}}Object.defineProperty(un,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32502});class dn extends B{constructor({cause:t}){super("UserOperation out of time-range: either wallet or paymaster returned a time-range, and it is already expired (or will expire soon).",{cause:t,name:"UserOperationOutOfTimeRangeError"})}}Object.defineProperty(dn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32503});class Wu extends B{constructor({cause:t}){super(`An error occurred while executing user operation: ${t?.shortMessage}`,{cause:t,name:"UnknownBundlerError"})}}class vr extends B{constructor({cause:t}){super("User Operation verification gas limit exceeded.",{cause:t,metaMessages:["This could arise when:","- the gas used for verification exceeded the `verificationGasLimit`"].filter(Boolean),name:"VerificationGasLimitExceededError"})}}Object.defineProperty(vr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa40/});class xr extends B{constructor({cause:t}){super("User Operation verification gas limit is too low.",{cause:t,metaMessages:["This could arise when:","- the `verificationGasLimit` is too low to verify the User Operation"].filter(Boolean),name:"VerificationGasLimitTooLowError"})}}Object.defineProperty(xr,"message",{enumerable:!0,configurable:!0,writable:!0,value:/aa41/});class Ju extends B{constructor(t,{callData:n,callGasLimit:r,docsPath:a,factory:i,factoryData:s,initCode:o,maxFeePerGas:c,maxPriorityFeePerGas:u,nonce:p,paymaster:d,paymasterAndData:f,paymasterData:l,paymasterPostOpGasLimit:h,paymasterVerificationGasLimit:m,preVerificationGas:g,sender:v,signature:S,verificationGasLimit:x}){const D=xo({callData:n,callGasLimit:r,factory:i,factoryData:s,initCode:o,maxFeePerGas:typeof c<"u"&&`${aa(c)} gwei`,maxPriorityFeePerGas:typeof u<"u"&&`${aa(u)} gwei`,nonce:p,paymaster:d,paymasterAndData:f,paymasterData:l,paymasterPostOpGasLimit:h,paymasterVerificationGasLimit:m,preVerificationGas:g,sender:v,signature:S,verificationGasLimit:x});super(t.shortMessage,{cause:t,docsPath:a,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Request Arguments:",D].filter(Boolean),name:"UserOperationExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}}class Yu extends B{constructor({hash:t}){super(`User Operation receipt with hash "${t}" could not be found. The User Operation may not have been processed yet.`,{name:"UserOperationReceiptNotFoundError"})}}class Xu extends B{constructor({hash:t}){super(`User Operation with hash "${t}" could not be found.`,{name:"UserOperationNotFoundError"})}}class Ta extends B{constructor({hash:t}){super(`Timed out while waiting for User Operation with hash "${t}" to be confirmed.`,{name:"WaitForUserOperationReceiptTimeoutError"})}}const Qu=[pt,tn,ze,nn,rn,an,sn,dn,on,cn,un];function $u(e,t){const n=(e.details||"").toLowerCase();if(Qn.message.test(n))return new Qn({cause:e});if($n.message.test(n))return new $n({cause:e});if(er.message.test(n))return new er({cause:e});if(tr.message.test(n))return new tr({cause:e});if(nr.message.test(n))return new nr({cause:e,factory:t.factory,factoryData:t.factoryData,initCode:t.initCode});if(rr.message.test(n))return new rr({cause:e,factory:t.factory,factoryData:t.factoryData,initCode:t.initCode});if(ar.message.test(n))return new ar({cause:e,factory:t.factory,factoryData:t.factoryData,initCode:t.initCode,sender:t.sender});if(ir.message.test(n))return new ir({cause:e});if(sr.message.test(n))return new sr({cause:e});if(cr.message.test(n))return new cr({cause:e,nonce:t.nonce});if(or.message.test(n))return new or({cause:e});if(ur.message.test(n))return new ur({cause:e});if(dr.message.test(n))return new dr({cause:e});if(ze.message.test(n))return new ze({cause:e});if(lr.message.test(n))return new lr({cause:e});if(fr.message.test(n))return new fr({cause:e});if(pr.message.test(n))return new pr({cause:e});if(hr.message.test(n))return new hr({cause:e});if(mr.message.test(n))return new mr({cause:e,factory:t.factory,factoryData:t.factoryData,initCode:t.initCode});if(yr.message.test(n))return new yr({cause:e});if(gr.message.test(n))return new gr({cause:e});if(wr.message.test(n))return new wr({cause:e});if(br.message.test(n))return new br({cause:e});if(vr.message.test(n))return new vr({cause:e});if(xr.message.test(n))return new xr({cause:e});const r=e.walk(a=>Qu.some(i=>i.code===a.code));if(r){if(r.code===pt.code)return new pt({cause:e,data:r.data,message:r.details});if(r.code===tn.code)return new tn({cause:e});if(r.code===ze.code)return new ze({cause:e});if(r.code===nn.code)return new nn({cause:e});if(r.code===rn.code)return new rn({cause:e});if(r.code===an.code)return new an({cause:e});if(r.code===sn.code)return new sn({cause:e});if(r.code===dn.code)return new dn({cause:e});if(r.code===on.code)return new on({cause:e});if(r.code===cn.code)return new cn({cause:e});if(r.code===un.code)return new un({cause:e})}return new Wu({cause:e})}function Ji(e,{calls:t,docsPath:n,...r}){const a=(()=>{const i=$u(e,r);if(t&&i instanceof pt){const s=ed(i),o=t?.filter(c=>c.abi);if(s&&o.length>0)return td({calls:o,revertData:s})}return i})();return new Ju(a,{docsPath:n,...r})}function ed(e){let t;return e.walk(n=>{const r=n;if(typeof r.data=="string"||typeof r.data?.revertData=="string"||!(r instanceof B)&&typeof r.message=="string"){const a=(r.data?.revertData||r.data||r.message).match?.(/(0x[A-Za-z0-9]*)/);if(a)return t=a[1],!0}return!1}),t}function td(e){const{calls:t,revertData:n}=e,{abi:r,functionName:a,args:i,to:s}=(()=>{const c=t?.filter(p=>!!p.abi);if(c.length===1)return c[0];const u=c.filter(p=>{try{return!!Eo({abi:p.abi,data:n})}catch{return!1}});return u.length===1?u[0]:{abi:[],functionName:c.reduce((p,d)=>`${p?`${p} | `:""}${d.functionName}`,""),args:void 0,to:void 0}})(),o=n==="0x"?new Ao({functionName:a}):new So({abi:r,data:n,functionName:a});return new ko(o,{abi:r,args:i,contractAddress:s,functionName:a})}function nd(e){const t={};return e.callGasLimit&&(t.callGasLimit=BigInt(e.callGasLimit)),e.preVerificationGas&&(t.preVerificationGas=BigInt(e.preVerificationGas)),e.verificationGasLimit&&(t.verificationGasLimit=BigInt(e.verificationGasLimit)),e.paymasterPostOpGasLimit&&(t.paymasterPostOpGasLimit=BigInt(e.paymasterPostOpGasLimit)),e.paymasterVerificationGasLimit&&(t.paymasterVerificationGasLimit=BigInt(e.paymasterVerificationGasLimit)),t}function vn(e){const t={};return typeof e.callData<"u"&&(t.callData=e.callData),typeof e.callGasLimit<"u"&&(t.callGasLimit=N(e.callGasLimit)),typeof e.factory<"u"&&(t.factory=e.factory),typeof e.factoryData<"u"&&(t.factoryData=e.factoryData),typeof e.initCode<"u"&&(t.initCode=e.initCode),typeof e.maxFeePerGas<"u"&&(t.maxFeePerGas=N(e.maxFeePerGas)),typeof e.maxPriorityFeePerGas<"u"&&(t.maxPriorityFeePerGas=N(e.maxPriorityFeePerGas)),typeof e.nonce<"u"&&(t.nonce=N(e.nonce)),typeof e.paymaster<"u"&&(t.paymaster=e.paymaster),typeof e.paymasterAndData<"u"&&(t.paymasterAndData=e.paymasterAndData||"0x"),typeof e.paymasterData<"u"&&(t.paymasterData=e.paymasterData),typeof e.paymasterPostOpGasLimit<"u"&&(t.paymasterPostOpGasLimit=N(e.paymasterPostOpGasLimit)),typeof e.paymasterSignature<"u"&&(t.paymasterSignature=e.paymasterSignature),typeof e.paymasterVerificationGasLimit<"u"&&(t.paymasterVerificationGasLimit=N(e.paymasterVerificationGasLimit)),typeof e.preVerificationGas<"u"&&(t.preVerificationGas=N(e.preVerificationGas)),typeof e.sender<"u"&&(t.sender=e.sender),typeof e.signature<"u"&&(t.signature=e.signature),typeof e.verificationGasLimit<"u"&&(t.verificationGasLimit=N(e.verificationGasLimit)),typeof e.authorization<"u"&&(t.eip7702Auth=rd(e.authorization)),t}function rd(e){return{address:e.address,chainId:N(e.chainId),nonce:N(e.nonce),r:e.r?N(BigInt(e.r),{size:32}):fe("0x",{size:32}),s:e.s?N(BigInt(e.s),{size:32}):fe("0x",{size:32}),yParity:e.yParity?N(e.yParity,{size:1}):fe("0x",{size:32})}}async function ad(e,t){const{chainId:n,entryPointAddress:r,context:a,...i}=t,s=vn(i),{paymasterPostOpGasLimit:o,paymasterVerificationGasLimit:c,...u}=await e.request({method:"pm_getPaymasterData",params:[{...s,callGasLimit:s.callGasLimit??"0x0",verificationGasLimit:s.verificationGasLimit??"0x0",preVerificationGas:s.preVerificationGas??"0x0"},r,N(n),a]});return{...u,...o&&{paymasterPostOpGasLimit:Ye(o)},...c&&{paymasterVerificationGasLimit:Ye(c)}}}async function id(e,t){const{chainId:n,entryPointAddress:r,context:a,...i}=t,s=vn(i),{paymasterPostOpGasLimit:o,paymasterVerificationGasLimit:c,...u}=await e.request({method:"pm_getPaymasterStubData",params:[{...s,callGasLimit:s.callGasLimit??"0x0",verificationGasLimit:s.verificationGasLimit??"0x0",preVerificationGas:s.preVerificationGas??"0x0"},r,N(n),a]});return{...u,...o&&{paymasterPostOpGasLimit:Ye(o)},...c&&{paymasterVerificationGasLimit:Ye(c)}}}const sd=["factory","fees","gas","paymaster","nonce","signature","authorization"];async function Hr(e,t){const n=t,{account:r=e.account,parameters:a=sd,stateOverride:i}=n;if(!r)throw new hn;const s=Ct(r),o=e,c=n.paymaster??o?.paymaster,u=typeof c=="string"?c:void 0,{getPaymasterStubData:p,getPaymasterData:d}=(()=>{if(c===!0)return{getPaymasterStubData:T=>ye(o,id,"getPaymasterStubData")(T),getPaymasterData:T=>ye(o,ad,"getPaymasterData")(T)};if(typeof c=="object"){const{getPaymasterStubData:T,getPaymasterData:L}=c;return{getPaymasterStubData:L&&T?T:L,getPaymasterData:L&&T?L:void 0}}return{getPaymasterStubData:void 0,getPaymasterData:void 0}})(),f=n.paymasterContext?n.paymasterContext:o?.paymasterContext;let l={...n,paymaster:u,sender:s.address};const[h,m,g,v,S]=await Promise.all([(async()=>n.calls?s.encodeCalls(n.calls.map(T=>{const L=T;return L.abi?{data:He(L),to:L.to,value:L.value}:L})):n.callData)(),(async()=>{if(!a.includes("factory"))return;if(n.initCode)return{initCode:n.initCode};if(n.factory&&n.factoryData)return{factory:n.factory,factoryData:n.factoryData};const{factory:T,factoryData:L}=await s.getFactoryArgs();return s.entryPoint.version==="0.6"?{initCode:T&&L?ct([T,L]):void 0}:{factory:T,factoryData:L}})(),(async()=>{if(a.includes("fees")){if(typeof n.maxFeePerGas=="bigint"&&typeof n.maxPriorityFeePerGas=="bigint")return l;if(o?.userOperation?.estimateFeesPerGas){const T=await o.userOperation.estimateFeesPerGas({account:s,bundlerClient:o,userOperation:l});return{...l,...T}}try{const T=o.client??e,L=await ye(T,Po,"estimateFeesPerGas")({chain:T.chain,type:"eip1559"});return{maxFeePerGas:typeof n.maxFeePerGas=="bigint"?n.maxFeePerGas:BigInt(2n*L.maxFeePerGas),maxPriorityFeePerGas:typeof n.maxPriorityFeePerGas=="bigint"?n.maxPriorityFeePerGas:BigInt(2n*L.maxPriorityFeePerGas)}}catch{return}}})(),(async()=>{if(a.includes("nonce"))return typeof n.nonce=="bigint"?n.nonce:s.getNonce()})(),(async()=>{if(a.includes("authorization")){if(typeof n.authorization=="object")return n.authorization;if(s.authorization&&!await s.isDeployed())return{...await qo(s.client,s.authorization),r:"0xfffffffffffffffffffffffffffffff000000000000000000000000000000000",s:"0x7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",yParity:1}}})()]);typeof h<"u"&&(l.callData=h),typeof m<"u"&&(l={...l,...m}),typeof g<"u"&&(l={...l,...g}),typeof v<"u"&&(l.nonce=v),typeof S<"u"&&(l.authorization=S),a.includes("signature")&&(typeof n.signature<"u"?l.signature=n.signature:l.signature=await s.getStubSignature(l)),s.entryPoint.version==="0.6"&&!l.initCode&&(l.initCode="0x");let x;async function D(){return x||(e.chain?e.chain.id:(x=await ye(e,Or,"getChainId")({}),x))}let z=!1;if(a.includes("paymaster")&&p&&!u&&!n.paymasterAndData){const{isFinal:T=!1,sponsor:L,...W}=await p({chainId:await D(),entryPointAddress:s.entryPoint.address,context:f,...l});z=T,l={...l,...W}}if(s.entryPoint.version==="0.6"&&!l.paymasterAndData&&(l.paymasterAndData="0x"),a.includes("gas")){if(s.userOperation?.estimateGas){const T=await s.userOperation.estimateGas(l);l={...l,...T}}if(typeof l.callGasLimit>"u"||typeof l.preVerificationGas>"u"||typeof l.verificationGasLimit>"u"||l.paymaster&&typeof l.paymasterPostOpGasLimit>"u"||l.paymaster&&typeof l.paymasterVerificationGasLimit>"u"){const T=await ye(o,Yi,"estimateUserOperationGas")({account:s,callGasLimit:0n,preVerificationGas:0n,verificationGasLimit:0n,stateOverride:i,...l.paymaster?{paymasterPostOpGasLimit:0n,paymasterVerificationGasLimit:0n}:{},...l});l={...l,callGasLimit:l.callGasLimit??T.callGasLimit,preVerificationGas:l.preVerificationGas??T.preVerificationGas,verificationGasLimit:l.verificationGasLimit??T.verificationGasLimit,paymasterPostOpGasLimit:l.paymasterPostOpGasLimit??T.paymasterPostOpGasLimit,paymasterVerificationGasLimit:l.paymasterVerificationGasLimit??T.paymasterVerificationGasLimit}}}if(a.includes("paymaster")&&d&&!u&&!n.paymasterAndData&&!z){const T=await d({chainId:await D(),entryPointAddress:s.entryPoint.address,context:f,...l});l={...l,...T}}return delete l.calls,delete l.parameters,delete l.paymasterContext,typeof l.paymaster!="string"&&delete l.paymaster,l}async function Yi(e,t){const{account:n=e.account,entryPointAddress:r,stateOverride:a}=t;if(!n&&!t.sender)throw new hn;const i=n?Ct(n):void 0,s=Co(a),o=i?await ye(e,Hr,"prepareUserOperation")({...t,parameters:["authorization","factory","nonce","paymaster","signature"]}):t;try{const c=[vn(o),r??i?.entryPoint?.address],u=await e.request({method:"eth_estimateUserOperationGas",params:s?[...c,s]:[...c]});return nd(u)}catch(c){const u=t.calls;throw Ji(c,{...o,...u?{calls:u}:{}})}}function od(e){return e.request({method:"eth_supportedEntryPoints"})}function cd(e){const t={...e};return e.callGasLimit&&(t.callGasLimit=BigInt(e.callGasLimit)),e.maxFeePerGas&&(t.maxFeePerGas=BigInt(e.maxFeePerGas)),e.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=BigInt(e.maxPriorityFeePerGas)),e.nonce&&(t.nonce=BigInt(e.nonce)),e.paymasterPostOpGasLimit&&(t.paymasterPostOpGasLimit=BigInt(e.paymasterPostOpGasLimit)),e.paymasterVerificationGasLimit&&(t.paymasterVerificationGasLimit=BigInt(e.paymasterVerificationGasLimit)),e.preVerificationGas&&(t.preVerificationGas=BigInt(e.preVerificationGas)),e.verificationGasLimit&&(t.verificationGasLimit=BigInt(e.verificationGasLimit)),t}async function ud(e,{hash:t}){const n=await e.request({method:"eth_getUserOperationByHash",params:[t]},{dedupe:!0});if(!n)throw new Xu({hash:t});const{blockHash:r,blockNumber:a,entryPoint:i,transactionHash:s,userOperation:o}=n;return{blockHash:r,blockNumber:BigInt(a),entryPoint:i,transactionHash:s,userOperation:cd(o)}}function dd(e){const t={...e};return e.actualGasCost&&(t.actualGasCost=BigInt(e.actualGasCost)),e.actualGasUsed&&(t.actualGasUsed=BigInt(e.actualGasUsed)),e.logs&&(t.logs=e.logs.map(n=>Io(n))),e.receipt&&(t.receipt=Oo(t.receipt)),t}async function Xi(e,{hash:t}){const n=await e.request({method:"eth_getUserOperationReceipt",params:[t]},{dedupe:!0});if(!n)throw new Yu({hash:t});return dd(n)}async function ld(e,t){const{account:n=e.account,entryPointAddress:r}=t;if(!n&&!t.sender)throw new hn;const a=n?Ct(n):void 0,i=a?await ye(e,Hr,"prepareUserOperation")(t):t,s=t.signature||await a?.signUserOperation?.(i),o=vn({...i,signature:s});try{return await e.request({method:"eth_sendUserOperation",params:[o,r??a?.entryPoint?.address]},{retryCount:0})}catch(c){const u=t.calls;throw Ji(c,{...i,...u?{calls:u}:{},signature:s})}}function fd(e,t){const{hash:n,pollingInterval:r=e.pollingInterval,retryCount:a,timeout:i=12e4}=t;let s=0;const o=si(["waitForUserOperationReceipt",e.uid,n]);return new Promise((c,u)=>{const p=oi(o,{resolve:c,reject:u},d=>{const f=m=>{h(),m(),p()},l=i?setTimeout(()=>f(()=>d.reject(new Ta({hash:n}))),i):void 0,h=ci(async()=>{a&&s>=a&&(clearTimeout(l),f(()=>d.reject(new Ta({hash:n}))));try{const m=await ye(e,Xi,"getUserOperationReceipt")({hash:n});clearTimeout(l),f(()=>d.resolve(m))}catch(m){const g=m;g.name!=="UserOperationReceiptNotFoundError"&&(clearTimeout(l),f(()=>d.reject(g)))}s++},{emitOnBegin:!0,interval:r});return h})})}function pd(e){return{estimateUserOperationGas:t=>Yi(e,t),getChainId:()=>Or(e),getSupportedEntryPoints:()=>od(e),getUserOperation:t=>ud(e,t),getUserOperationReceipt:t=>Xi(e,t),prepareUserOperation:t=>Hr(e,t),sendUserOperation:t=>ld(e,t),waitForUserOperationReceipt:t=>fd(e,t)}}function md(e){const{client:t,key:n="bundler",name:r="Bundler Client",paymaster:a,paymasterContext:i,transport:s,userOperation:o}=e;return Object.assign(ui({...e,chain:e.chain??t?.chain,key:n,name:r,transport:s,type:"bundlerClient"}),{client:t,paymaster:a,paymasterContext:i,userOperation:o}).extend(pd)}const Qi=Tr(()=>({})),hd=[gi,Xo,To,_o,Bo,Qo,ec,Uo],yd=[bi,Ro,$o],gd=[...hd,...yd].reduce((e,t)=>(e.set(t.id,t),e),new Map);function Gr(e){return gd.get(e)}function $i(e){const t=Gr(e);if(t?.rpcUrls?.default?.http?.[0])return t.rpcUrls.default.http[0]}function bd(e,t,n){const r=n?.viemChain,a=n?.nativeCurrency,i=a?.name??r?.name??"",s=a?.symbol??r?.nativeCurrency?.symbol??"",o=a?.decimal??r?.nativeCurrency?.decimals??18;return Oe({id:e,name:i,nativeCurrency:{name:i,symbol:s,decimals:o},rpcUrls:{default:{http:[t]}}})}function _a(e){e.forEach(t=>{let n=t.rpcUrl;if(n||(n=$i(t.id)),!n)return;const r=Gr(t.id),a=es({chainId:t.id,rpcUrl:n,nativeCurrency:t.nativeCurrency,viemChain:r});ts(t.id,a)})}function es(e){const{chainId:t,rpcUrl:n,nativeCurrency:r,viemChain:a}=e,i=bd(t,n,{viemChain:a,nativeCurrency:r}),s=Jo({chain:i,transport:ia(n)}),o=md({client:s,transport:ia(n)});return{client:s,bundlerClient:o}}function wd(e){const t=$i(e),n=Gr(e);if(t)return es({chainId:e,rpcUrl:t,viemChain:n})}function ts(e,t){Qi.setState(n=>({...n,[e]:{client:t.client,bundlerClient:t.bundlerClient}}))}function ns(e){const t=Qi.getState()[e]?.client;if(t)return t;const n=wd(e);if(n)return ts(e,n),n.client}const jt=Tr(()=>({correlationIds:new Map})),Pe={get:e=>jt.getState().correlationIds.get(e),set:(e,t)=>{jt.setState(n=>{const r=new Map(n.correlationIds);return r.set(e,t),{correlationIds:r}})},delete:e=>{jt.setState(t=>{const n=new Map(t.correlationIds);return n.delete(e),{correlationIds:n}})},clear:()=>{jt.setState({correlationIds:new Map})}};function Dt(e){if(typeof e!="object"||e===null)throw A.rpc.internal("sub account info is not an object");if(!("address"in e))throw A.rpc.internal("sub account is invalid");if("address"in e&&typeof e.address=="string"&&!Pt(e.address))throw A.rpc.internal("sub account address is invalid");if("factory"in e&&typeof e.factory=="string"&&!Pt(e.factory))throw A.rpc.internal("sub account factory address is invalid");if("factoryData"in e&&typeof e.factoryData=="string"&&!rt(e.factoryData))throw A.rpc.internal("sub account factory data is invalid")}async function vd(){return crypto.subtle.generateKey({name:"ECDH",namedCurve:"P-256"},!0,["deriveKey"])}async function xd(e,t){return crypto.subtle.deriveKey({name:"ECDH",public:t},e,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function Ed(e,t){const n=crypto.getRandomValues(new Uint8Array(12)),r=await crypto.subtle.encrypt({name:"AES-GCM",iv:n},e,new TextEncoder().encode(t));return{iv:n,cipherText:r}}async function Ad(e,{iv:t,cipherText:n}){const r=await crypto.subtle.decrypt({name:"AES-GCM",iv:t},e,n);return new TextDecoder().decode(r)}function rs(e){switch(e){case"public":return"spki";case"private":return"pkcs8"}}async function as(e,t){const n=rs(e),r=await crypto.subtle.exportKey(n,t);return xu(new Uint8Array(r))}async function is(e,t){const n=rs(e),r=Eu(t).buffer;return await crypto.subtle.importKey(n,new Uint8Array(r),{name:"ECDH",namedCurve:"P-256"},!0,e==="private"?["deriveKey"]:[])}async function Sd(e,t){const n=JSON.stringify(e,(r,a)=>{if(!(a instanceof Error))return a;const i=a;return{...i.code?{code:i.code}:{},message:i.message}});return Ed(t,n)}async function kd(e,t){return JSON.parse(await Ad(t,e))}async function St(e,t){const n={...e,jsonrpc:"2.0",id:crypto.randomUUID()},r=await fetch(t,{method:"POST",body:JSON.stringify(n),mode:"cors",headers:{"Content-Type":"application/json","X-Cbw-Sdk-Version":wt,"X-Cbw-Sdk-Platform":gn}}),{result:a,error:i}=await r.json();if(i)throw i;return a}function Pd(e){if(!e||typeof e!="object"||Array.isArray(e))throw A.rpc.invalidParams({message:"Expected a single, non-array, object argument.",data:e});const{method:t,params:n}=e;if(typeof t!="string"||t.length===0)throw A.rpc.invalidParams({message:"'args.method' must be a non-empty string.",data:e});if(n!==void 0&&!Array.isArray(n)&&(typeof n!="object"||n===null))throw A.rpc.invalidParams({message:"'args.params' must be an object or array if provided.",data:e});switch(t){case"eth_sign":case"eth_signTypedData_v2":case"eth_subscribe":case"eth_unsubscribe":throw A.provider.unsupportedMethod()}}const Cd="0.1.1";function Id(){return Cd}class q extends Error{constructor(t,n={}){const r=(()=>{if(n.cause instanceof q){if(n.cause.details)return n.cause.details;if(n.cause.shortMessage)return n.cause.shortMessage}return n.cause?.message?n.cause.message:n.details})(),a=n.cause instanceof q&&n.cause.docsPath||n.docsPath,s=`https://oxlib.sh${a??""}`,o=[t||"An error occurred.",...n.metaMessages?["",...n.metaMessages]:[],...r||a?["",r?`Details: ${r}`:void 0,a?`See: ${s}`:void 0]:[]].filter(c=>typeof c=="string").join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:`ox@${Id()}`}),this.cause=n.cause,this.details=r,this.docs=s,this.docsPath=a,this.shortMessage=t}walk(t){return ss(this,t)}}function ss(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause?ss(e.cause,t):t?null:e}function Od(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Kr(e,...t){if(!Od(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function Ba(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Td(e,t){Kr(e);const n=t.outputLen;if(e.length>>t}function _d(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function os(e){return typeof e=="string"&&(e=_d(e)),Kr(e),e}let Bd=class{};function Ud(e){const t=r=>e().update(os(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function Rd(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const a=BigInt(32),i=BigInt(4294967295),s=Number(n>>a&i),o=Number(n&i),c=r?4:0,u=r?0:4;e.setUint32(t+c,s,r),e.setUint32(t+u,o,r)}function Nd(e,t,n){return e&t^~e&n}function jd(e,t,n){return e&t^e&n^t&n}let Dd=class extends Bd{constructor(t,n,r,a){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=a,this.buffer=new Uint8Array(t),this.view=In(this.buffer)}update(t){Ba(this),t=os(t),Kr(t);const{view:n,buffer:r,blockLen:a}=this,i=t.length;for(let s=0;sa-s&&(this.process(r,0),s=0);for(let d=s;dp.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d>>3,m=ve(l,17)^ve(l,19)^l>>>10;_e[d]=m+_e[d-7]+h+_e[d-16]|0}let{A:r,B:a,C:i,D:s,E:o,F:c,G:u,H:p}=this;for(let d=0;d<64;d++){const f=ve(o,6)^ve(o,11)^ve(o,25),l=p+f+Nd(o,c,u)+Md[d]+_e[d]|0,m=(ve(r,2)^ve(r,13)^ve(r,22))+jd(r,a,i)|0;p=u,u=c,c=o,o=s+l|0,s=i,i=a,a=r,r=l+m|0}r=r+this.A|0,a=a+this.B|0,i=i+this.C|0,s=s+this.D|0,o=o+this.E|0,c=c+this.F|0,u=u+this.G|0,p=p+this.H|0,this.set(r,a,i,s,o,c,u,p)}roundClean(){Er(_e)}destroy(){this.set(0,0,0,0,0,0,0,0),Er(this.buffer)}};const Fd=Ud(()=>new Ld),Hd=Fd,et=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function xn(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Ar(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function Xe(e,...t){if(!xn(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function cs(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Ar(e.outputLen),Ar(e.blockLen)}function ln(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Gd(e,t){Xe(e);const n=t.outputLen;if(e.length>>t}const us=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Kd=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function dt(e){if(Xe(e),us)return e.toHex();let t="";for(let n=0;n=Ee._0&&e<=Ee._9)return e-Ee._0;if(e>=Ee.A&&e<=Ee.F)return e-(Ee.A-10);if(e>=Ee.a&&e<=Ee.f)return e-(Ee.a-10)}function fn(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(us)return Uint8Array.fromHex(e);const t=e.length,n=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let a=0,i=0;ae().update(zr(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function ls(e=32){if(et&&typeof et.getRandomValues=="function")return et.getRandomValues(new Uint8Array(e));if(et&&typeof et.randomBytes=="function")return Uint8Array.from(et.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")}const qr=BigInt(0),Sr=BigInt(1);function pn(e,t=""){if(typeof e!="boolean"){const n=t&&`"${t}"`;throw new Error(n+"expected boolean, got type="+typeof e)}return e}function Ve(e,t,n=""){const r=xn(e),a=e?.length,i=t!==void 0;if(!r||i&&a!==t){const s=n&&`"${n}" `,o=i?` of length ${t}`:"",c=r?`length=${a}`:`type=${typeof e}`;throw new Error(s+"expected Uint8Array"+o+", got "+c)}return e}function Mt(e){const t=e.toString(16);return t.length&1?"0"+t:t}function fs(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);return e===""?qr:BigInt("0x"+e)}function En(e){return fs(dt(e))}function ps(e){return Xe(e),fs(dt(Uint8Array.from(e).reverse()))}function Zr(e,t){return fn(e.toString(16).padStart(t*2,"0"))}function ms(e,t){return Zr(e,t).reverse()}function le(e,t,n){let r;if(typeof t=="string")try{r=fn(t)}catch(a){throw new Error(e+" must be hex string or Uint8Array, cause: "+a)}else if(xn(t))r=Uint8Array.from(t);else throw new Error(e+" must be hex string or Uint8Array");return r.length,r}const Tn=e=>typeof e=="bigint"&&qr<=e;function Vd(e,t,n){return Tn(e)&&Tn(t)&&Tn(n)&&t<=e&&eqr;e>>=Sr,t+=1);return t}const _t=e=>(Sr<new Uint8Array(l),a=l=>Uint8Array.of(l);let i=r(e),s=r(e),o=0;const c=()=>{i.fill(1),s.fill(0),o=0},u=(...l)=>n(s,i,...l),p=(l=r(0))=>{s=u(a(0),l),i=u(),l.length!==0&&(s=u(a(1),l),i=u())},d=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let l=0;const h=[];for(;l{c(),p(l);let m;for(;!(m=h(d()));)p();return c(),m}}function Wr(e,t,n={}){if(!e||typeof e!="object")throw new Error("expected valid options object");function r(a,i,s){const o=e[a];if(s&&o===void 0)return;const c=typeof o;if(c!==i||o===null)throw new Error(`param "${a}" is invalid: expected ${i}, got ${c}`)}Object.entries(t).forEach(([a,i])=>r(a,i,!1)),Object.entries(n).forEach(([a,i])=>r(a,i,!0))}function Ra(e){const t=new WeakMap;return(n,...r)=>{const a=t.get(n);if(a!==void 0)return a;const i=e(n,...r);return t.set(n,i),i}}const Wd="#__bigint";function An(e,t,n){return JSON.stringify(e,(r,a)=>typeof a=="bigint"?a.toString()+Wd:a,n)}function Jd(e,t){if(yt(e)>t)throw new ll({givenSize:yt(e),maxSize:t})}function Yd(e,t){if(typeof t=="number"&&t>0&&t>yt(e)-1)throw new Ss({offset:t,position:"start",size:yt(e)})}function Xd(e,t,n){if(typeof t=="number"&&typeof n=="number"&&yt(e)!==n-t)throw new Ss({offset:n,position:"end",size:yt(e)})}const Ae={zero:48,nine:57,A:65,F:70,a:97,f:102};function Na(e){if(e>=Ae.zero&&e<=Ae.nine)return e-Ae.zero;if(e>=Ae.A&&e<=Ae.F)return e-(Ae.A-10);if(e>=Ae.a&&e<=Ae.f)return e-(Ae.a-10)}function Jr(e,t){if(Ge(e)>t)throw new ol({givenSize:Ge(e),maxSize:t})}function Qd(e,t){if(typeof t=="number"&&t>0&&t>Ge(e)-1)throw new vs({offset:t,position:"start",size:Ge(e)})}function $d(e,t,n){if(typeof t=="number"&&typeof n=="number"&&Ge(e)!==n-t)throw new vs({offset:n,position:"end",size:Ge(e)})}function ys(e,t={}){const{dir:n,size:r=32}=t;if(r===0)return e;const a=e.replace("0x","");if(a.length>r*2)throw new cl({size:Math.ceil(a.length/2),targetSize:r,type:"Hex"});return`0x${a[n==="right"?"padEnd":"padStart"](r*2,"0")}`}const el=new TextEncoder,tl=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function nl(e,t={}){const{strict:n=!1}=t;if(!e)throw new ja(e);if(typeof e!="string")throw new ja(e);if(n&&!/^0x[0-9a-fA-F]*$/.test(e))throw new Da(e);if(!e.startsWith("0x"))throw new Da(e)}function Sn(...e){return`0x${e.reduce((t,n)=>t+n.replace("0x",""),"")}`}function gs(e){return e instanceof Uint8Array?ht(e):Array.isArray(e)?ht(new Uint8Array(e)):e}function ht(e,t={}){let n="";for(let a=0;ai||a>1n;return r<=s?r:r-i-1n}function il(e,t={}){const{strict:n=!1}=t;try{return nl(e,{strict:n}),!0}catch{return!1}}class sl extends q{constructor({max:t,min:n,signed:r,size:a,value:i}){super(`Number \`${i}\` is not in safe${a?` ${a*8}-bit`:""}${r?" signed":" unsigned"} integer range ${t?`(\`${n}\` to \`${t}\`)`:`(above \`${n}\`)`}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.IntegerOutOfRangeError"})}}class ja extends q{constructor(t){super(`Value \`${typeof t=="object"?An(t):t}\` of type \`${typeof t}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexTypeError"})}}class Da extends q{constructor(t){super(`Value \`${t}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexValueError"})}}let ol=class extends q{constructor({givenSize:t,maxSize:n}){super(`Size cannot exceed \`${n}\` bytes. Given size: \`${t}\` bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeOverflowError"})}},vs=class extends q{constructor({offset:t,position:n,size:r}){super(`Slice ${n==="start"?"starting":"ending"} at offset \`${t}\` is out-of-bounds (size: \`${r}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SliceOffsetOutOfBoundsError"})}};class cl extends q{constructor({size:t,targetSize:n,type:r}){super(`${r.charAt(0).toUpperCase()}${r.slice(1).toLowerCase()} size (\`${t}\`) exceeds padding size (\`${n}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeExceedsPaddingSizeError"})}}function ul(e){if(!(e instanceof Uint8Array)){if(!e)throw new Lt(e);if(typeof e!="object")throw new Lt(e);if(!("BYTES_PER_ELEMENT"in e))throw new Lt(e);if(e.BYTES_PER_ELEMENT!==1||e.constructor.name!=="Uint8Array")throw new Lt(e)}}function xs(e){return e instanceof Uint8Array?e:typeof e=="string"?As(e):Es(e)}function Es(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function As(e,t={}){const{size:n}=t;let r=e;n&&(Jr(e,n),r=ws(e,n));let a=r.slice(2);a.length%2&&(a=`0${a}`);const i=a.length/2,s=new Uint8Array(i);for(let o=0,c=0;o"u"){if(r!==3&&r!==2)throw new Fa({prefix:r,cause:new hl});return}throw new ml({publicKey:e})}function fl(e){const t=(()=>{if(il(e))return Cs(e);if(dl(e))return pl(e);const{prefix:n,x:r,y:a}=e;return typeof r=="bigint"&&typeof a=="bigint"?{prefix:n??4,x:r,y:a}:{prefix:n,x:r}})();return Ps(t),t}function pl(e){return Cs(ht(e))}function Cs(e){if(e.length!==132&&e.length!==130&&e.length!==68)throw new gl({publicKey:e});if(e.length===130){const r=BigInt(he(e,0,32)),a=BigInt(he(e,32,64));return{prefix:4,x:r,y:a}}if(e.length===132){const r=Number(he(e,0,1)),a=BigInt(he(e,1,33)),i=BigInt(he(e,33,65));return{prefix:r,x:a,y:i}}const t=Number(he(e,0,1)),n=BigInt(he(e,1,33));return{prefix:t,x:n}}function Yr(e,t={}){Ps(e);const{prefix:n,x:r,y:a}=e,{includePrefix:i=!0}=t;return Sn(i?Le(n,{size:1}):"0x",Le(r,{size:32}),typeof a=="bigint"?Le(a,{size:32}):"0x")}class ml extends q{constructor({publicKey:t}){super(`Value \`${An(t)}\` is not a valid public key.`,{metaMessages:["Public key must contain:","- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidError"})}}class Fa extends q{constructor({prefix:t,cause:n}){super(`Prefix "${t}" is invalid.`,{cause:n}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidPrefixError"})}}class hl extends q{constructor(){super("Prefix must be 2 or 3 for compressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidCompressedPrefixError"})}}class yl extends q{constructor(){super("Prefix must be 4 for uncompressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidUncompressedPrefixError"})}}let gl=class extends q{constructor({publicKey:t}){super(`Value \`${t}\` is an invalid public key size.`,{metaMessages:["Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).",`Received ${Ge(gs(t))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidSerializedSizeError"})}};const Ha=2n**256n-1n;function bl(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const a=BigInt(32),i=BigInt(4294967295),s=Number(n>>a&i),o=Number(n&i),c=r?4:0,u=r?0:4;e.setUint32(t+c,s,r),e.setUint32(t+u,o,r)}function wl(e,t,n){return e&t^~e&n}function vl(e,t,n){return e&t^e&n^t&n}class Is extends ds{constructor(t,n,r,a){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=a,this.buffer=new Uint8Array(t),this.view=On(this.buffer)}update(t){ln(this),t=zr(t),Xe(t);const{view:n,buffer:r,blockLen:a}=this,i=t.length;for(let s=0;sa-s&&(this.process(r,0),s=0);for(let d=s;dp.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d>Ga&Ft)}:{h:Number(e>>Ga&Ft)|0,l:Number(e&Ft)|0}}function El(e,t=!1){const n=e.length;let r=new Uint32Array(n),a=new Uint32Array(n);for(let i=0;ie>>>n,za=(e,t,n)=>e<<32-n|t>>>n,tt=(e,t,n)=>e>>>n|t<<32-n,nt=(e,t,n)=>e<<32-n|t>>>n,Ht=(e,t,n)=>e<<64-n|t>>>n-32,Gt=(e,t,n)=>e>>>n-32|t<<64-n;function Se(e,t,n,r){const a=(t>>>0)+(r>>>0);return{h:e+n+(a/2**32|0)|0,l:a|0}}const Al=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),Sl=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,kl=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),Pl=(e,t,n,r,a)=>t+n+r+a+(e/2**32|0)|0,Cl=(e,t,n,r,a)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(a>>>0),Il=(e,t,n,r,a,i)=>t+n+r+a+i+(e/2**32|0)|0,Ol=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ue=new Uint32Array(64);class Tl extends Is{constructor(t=32){super(64,t,8,!1),this.A=Be[0]|0,this.B=Be[1]|0,this.C=Be[2]|0,this.D=Be[3]|0,this.E=Be[4]|0,this.F=Be[5]|0,this.G=Be[6]|0,this.H=Be[7]|0}get(){const{A:t,B:n,C:r,D:a,E:i,F:s,G:o,H:c}=this;return[t,n,r,a,i,s,o,c]}set(t,n,r,a,i,s,o,c){this.A=t|0,this.B=n|0,this.C=r|0,this.D=a|0,this.E=i|0,this.F=s|0,this.G=o|0,this.H=c|0}process(t,n){for(let d=0;d<16;d++,n+=4)Ue[d]=t.getUint32(n,!1);for(let d=16;d<64;d++){const f=Ue[d-15],l=Ue[d-2],h=xe(f,7)^xe(f,18)^f>>>3,m=xe(l,17)^xe(l,19)^l>>>10;Ue[d]=m+Ue[d-7]+h+Ue[d-16]|0}let{A:r,B:a,C:i,D:s,E:o,F:c,G:u,H:p}=this;for(let d=0;d<64;d++){const f=xe(o,6)^xe(o,11)^xe(o,25),l=p+f+wl(o,c,u)+Ol[d]+Ue[d]|0,m=(xe(r,2)^xe(r,13)^xe(r,22))+vl(r,a,i)|0;p=u,u=c,c=o,o=s+l|0,s=i,i=a,a=r,r=l+m|0}r=r+this.A|0,a=a+this.B|0,i=i+this.C|0,s=s+this.D|0,o=o+this.E|0,c=c+this.F|0,u=u+this.G|0,p=p+this.H|0,this.set(r,a,i,s,o,c,u,p)}roundClean(){mt(Ue)}destroy(){this.set(0,0,0,0,0,0,0,0),mt(this.buffer)}}const Os=El(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),_l=Os[0],Bl=Os[1],Re=new Uint32Array(80),Ne=new Uint32Array(80);class Ts extends Is{constructor(t=64){super(128,t,16,!1),this.Ah=ce[0]|0,this.Al=ce[1]|0,this.Bh=ce[2]|0,this.Bl=ce[3]|0,this.Ch=ce[4]|0,this.Cl=ce[5]|0,this.Dh=ce[6]|0,this.Dl=ce[7]|0,this.Eh=ce[8]|0,this.El=ce[9]|0,this.Fh=ce[10]|0,this.Fl=ce[11]|0,this.Gh=ce[12]|0,this.Gl=ce[13]|0,this.Hh=ce[14]|0,this.Hl=ce[15]|0}get(){const{Ah:t,Al:n,Bh:r,Bl:a,Ch:i,Cl:s,Dh:o,Dl:c,Eh:u,El:p,Fh:d,Fl:f,Gh:l,Gl:h,Hh:m,Hl:g}=this;return[t,n,r,a,i,s,o,c,u,p,d,f,l,h,m,g]}set(t,n,r,a,i,s,o,c,u,p,d,f,l,h,m,g){this.Ah=t|0,this.Al=n|0,this.Bh=r|0,this.Bl=a|0,this.Ch=i|0,this.Cl=s|0,this.Dh=o|0,this.Dl=c|0,this.Eh=u|0,this.El=p|0,this.Fh=d|0,this.Fl=f|0,this.Gh=l|0,this.Gl=h|0,this.Hh=m|0,this.Hl=g|0}process(t,n){for(let x=0;x<16;x++,n+=4)Re[x]=t.getUint32(n),Ne[x]=t.getUint32(n+=4);for(let x=16;x<80;x++){const D=Re[x-15]|0,z=Ne[x-15]|0,T=tt(D,z,1)^tt(D,z,8)^Ka(D,z,7),L=nt(D,z,1)^nt(D,z,8)^za(D,z,7),W=Re[x-2]|0,O=Ne[x-2]|0,te=tt(W,O,19)^Ht(W,O,61)^Ka(W,O,6),ie=nt(W,O,19)^Gt(W,O,61)^za(W,O,6),j=kl(L,ie,Ne[x-7],Ne[x-16]),w=Pl(j,T,te,Re[x-7],Re[x-16]);Re[x]=w|0,Ne[x]=j|0}let{Ah:r,Al:a,Bh:i,Bl:s,Ch:o,Cl:c,Dh:u,Dl:p,Eh:d,El:f,Fh:l,Fl:h,Gh:m,Gl:g,Hh:v,Hl:S}=this;for(let x=0;x<80;x++){const D=tt(d,f,14)^tt(d,f,18)^Ht(d,f,41),z=nt(d,f,14)^nt(d,f,18)^Gt(d,f,41),T=d&l^~d&m,L=f&h^~f&g,W=Cl(S,z,L,Bl[x],Ne[x]),O=Il(W,v,D,T,_l[x],Re[x]),te=W|0,ie=tt(r,a,28)^Ht(r,a,34)^Ht(r,a,39),j=nt(r,a,28)^Gt(r,a,34)^Gt(r,a,39),w=r&i^r&o^i&o,b=a&s^a&c^s&c;v=m|0,S=g|0,m=l|0,g=h|0,l=d|0,h=f|0,{h:d,l:f}=Se(u|0,p|0,O|0,te|0),u=o|0,p=c|0,o=i|0,c=s|0,i=r|0,s=a|0;const y=Al(te,j,b);r=Sl(y,O,ie,w),a=y|0}({h:r,l:a}=Se(this.Ah|0,this.Al|0,r|0,a|0)),{h:i,l:s}=Se(this.Bh|0,this.Bl|0,i|0,s|0),{h:o,l:c}=Se(this.Ch|0,this.Cl|0,o|0,c|0),{h:u,l:p}=Se(this.Dh|0,this.Dl|0,u|0,p|0),{h:d,l:f}=Se(this.Eh|0,this.El|0,d|0,f|0),{h:l,l:h}=Se(this.Fh|0,this.Fl|0,l|0,h|0),{h:m,l:g}=Se(this.Gh|0,this.Gl|0,m|0,g|0),{h:v,l:S}=Se(this.Hh|0,this.Hl|0,v|0,S|0),this.set(r,a,i,s,o,c,u,p,d,f,l,h,m,g,v,S)}roundClean(){mt(Re,Ne)}destroy(){mt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Ul extends Ts{constructor(){super(48),this.Ah=oe[0]|0,this.Al=oe[1]|0,this.Bh=oe[2]|0,this.Bl=oe[3]|0,this.Ch=oe[4]|0,this.Cl=oe[5]|0,this.Dh=oe[6]|0,this.Dl=oe[7]|0,this.Eh=oe[8]|0,this.El=oe[9]|0,this.Fh=oe[10]|0,this.Fl=oe[11]|0,this.Gh=oe[12]|0,this.Gl=oe[13]|0,this.Hh=oe[14]|0,this.Hl=oe[15]|0}}const Rl=Vr(()=>new Tl),Nl=Vr(()=>new Ts),jl=Vr(()=>new Ul);class _s extends ds{constructor(t,n){super(),this.finished=!1,this.destroyed=!1,cs(t);const r=zr(n);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const a=this.blockLen,i=new Uint8Array(a);i.set(r.length>a?t.create().update(r).digest():r);for(let s=0;snew _s(e,t).update(n).digest();Bs.create=(e,t)=>new _s(e,t);const pe=BigInt(0),ue=BigInt(1),qe=BigInt(2),Us=BigInt(3),Rs=BigInt(4),Ns=BigInt(5),Dl=BigInt(7),js=BigInt(8),Ml=BigInt(9),Ds=BigInt(16);function be(e,t){const n=e%t;return n>=pe?n:t+n}function Va(e,t){if(e===pe)throw new Error("invert: expected non-zero number");if(t<=pe)throw new Error("invert: expected positive modulus, got "+t);let n=be(e,t),r=t,a=pe,i=ue;for(;n!==pe;){const o=r/n,c=r%n,u=a-i*o;r=n,n=c,a=i,i=u}if(r!==ue)throw new Error("invert: does not exist");return be(a,t)}function Xr(e,t,n){if(!e.eql(e.sqr(t),n))throw new Error("Cannot find square root")}function Ms(e,t){const n=(e.ORDER+ue)/Rs,r=e.pow(t,n);return Xr(e,r,t),r}function Ll(e,t){const n=(e.ORDER-Ns)/js,r=e.mul(t,qe),a=e.pow(r,n),i=e.mul(t,a),s=e.mul(e.mul(i,qe),a),o=e.mul(i,e.sub(s,e.ONE));return Xr(e,o,t),o}function Fl(e){const t=Qe(e),n=Ls(e),r=n(t,t.neg(t.ONE)),a=n(t,r),i=n(t,t.neg(r)),s=(e+Dl)/Ds;return(o,c)=>{let u=o.pow(c,s),p=o.mul(u,r);const d=o.mul(u,a),f=o.mul(u,i),l=o.eql(o.sqr(p),c),h=o.eql(o.sqr(d),c);u=o.cmov(u,p,l),p=o.cmov(f,d,h);const m=o.eql(o.sqr(p),c),g=o.cmov(u,p,m);return Xr(o,g,c),g}}function Ls(e){if(e1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Ms;let i=a.pow(r,t);const s=(t+ue)/qe;return function(c,u){if(c.is0(u))return u;if(qa(c,u)!==1)throw new Error("Cannot find square root");let p=n,d=c.mul(c.ONE,i),f=c.pow(u,t),l=c.pow(u,s);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let h=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(h++,m=c.sqr(m),h===p)throw new Error("Cannot find square root");const g=ue<(r[a]="function",r),t);return Wr(e,n),e}function zl(e,t,n){if(npe;)n&ue&&(r=e.mul(r,a)),a=e.sqr(a),n>>=ue;return r}function Fs(e,t,n=!1){const r=new Array(t.length).fill(n?e.ZERO:void 0),a=t.reduce((s,o,c)=>e.is0(o)?s:(r[c]=s,e.mul(s,o)),e.ONE),i=e.inv(a);return t.reduceRight((s,o,c)=>e.is0(o)?s:(r[c]=e.mul(s,r[c]),e.mul(s,o)),i),r}function qa(e,t){const n=(e.ORDER-ue)/qe,r=e.pow(t,n),a=e.eql(r,e.ONE),i=e.eql(r,e.ZERO),s=e.eql(r,e.neg(e.ONE));if(!a&&!i&&!s)throw new Error("invalid Legendre symbol result");return a?1:i?0:-1}function Hs(e,t){t!==void 0&&Ar(t);const n=t!==void 0?t:e.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function Qe(e,t,n=!1,r={}){if(e<=pe)throw new Error("invalid field: expected ORDER > 0, got "+e);let a,i,s=!1,o;if(typeof t=="object"&&t!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const f=t;f.BITS&&(a=f.BITS),f.sqrt&&(i=f.sqrt),typeof f.isLE=="boolean"&&(n=f.isLE),typeof f.modFromBytes=="boolean"&&(s=f.modFromBytes),o=f.allowedLengths}else typeof t=="number"&&(a=t),r.sqrt&&(i=r.sqrt);const{nBitLength:c,nByteLength:u}=Hs(e,a);if(u>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let p;const d=Object.freeze({ORDER:e,isLE:n,BITS:c,BYTES:u,MASK:_t(c),ZERO:pe,ONE:ue,allowedLengths:o,create:f=>be(f,e),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return pe<=f&&ff===pe,isValidNot0:f=>!d.is0(f)&&d.isValid(f),isOdd:f=>(f&ue)===ue,neg:f=>be(-f,e),eql:(f,l)=>f===l,sqr:f=>be(f*f,e),add:(f,l)=>be(f+l,e),sub:(f,l)=>be(f-l,e),mul:(f,l)=>be(f*l,e),pow:(f,l)=>zl(d,f,l),div:(f,l)=>be(f*Va(l,e),e),sqrN:f=>f*f,addN:(f,l)=>f+l,subN:(f,l)=>f-l,mulN:(f,l)=>f*l,inv:f=>Va(f,e),sqrt:i||(f=>(p||(p=Hl(e)),p(d,f))),toBytes:f=>n?ms(f,u):Zr(f,u),fromBytes:(f,l=!0)=>{if(o){if(!o.includes(f.length)||f.length>u)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+f.length);const m=new Uint8Array(u);m.set(f,n?0:m.length-f.length),f=m}if(f.length!==u)throw new Error("Field.fromBytes: expected "+u+" bytes, got "+f.length);let h=n?ps(f):En(f);if(s&&(h=be(h,e)),!l&&!d.isValid(h))throw new Error("invalid field element: outside of range 0..ORDER");return h},invertBatch:f=>Fs(d,f),cmov:(f,l,h)=>h?l:f});return Object.freeze(d)}function Gs(e){if(typeof e!="bigint")throw new Error("field order must be bigint");const t=e.toString(2).length;return Math.ceil(t/8)}function Ks(e){const t=Gs(e);return t+Math.ceil(t/2)}function Vl(e,t,n=!1){const r=e.length,a=Gs(t),i=Ks(t);if(r<16||r1024)throw new Error("expected "+i+"-1024 bytes of input, got "+r);const s=n?ps(e):En(e),o=be(s,t-ue)+ue;return n?ms(o,a):Zr(o,a)}const gt=BigInt(0),Ze=BigInt(1);function mn(e,t){const n=t.negate();return e?n:t}function _n(e,t){const n=Fs(e.Fp,t.map(r=>r.Z));return t.map((r,a)=>e.fromAffine(r.toAffine(n[a])))}function zs(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function Bn(e,t){zs(e,t);const n=Math.ceil(t/e)+1,r=2**(e-1),a=2**e,i=_t(e),s=BigInt(e);return{windows:n,windowSize:r,mask:i,maxNumber:a,shiftBy:s}}function Za(e,t,n){const{windowSize:r,mask:a,maxNumber:i,shiftBy:s}=n;let o=Number(e&a),c=e>>s;o>r&&(o-=i,c+=Ze);const u=t*r,p=u+Math.abs(o)-1,d=o===0,f=o<0,l=t%2!==0;return{nextN:c,offset:p,isZero:d,isNeg:f,isNegF:l,offsetF:u}}function ql(e,t){if(!Array.isArray(e))throw new Error("array expected");e.forEach((n,r)=>{if(!(n instanceof t))throw new Error("invalid point at index "+r)})}function Zl(e,t){if(!Array.isArray(e))throw new Error("array of scalars expected");e.forEach((n,r)=>{if(!t.isValid(n))throw new Error("invalid scalar at index "+r)})}const Un=new WeakMap,Vs=new WeakMap;function Rn(e){return Vs.get(e)||1}function Wa(e){if(e!==gt)throw new Error("invalid wNAF")}class Wl{constructor(t,n){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=n}_unsafeLadder(t,n,r=this.ZERO){let a=t;for(;n>gt;)n&Ze&&(r=r.add(a)),a=a.double(),n>>=Ze;return r}precomputeWindow(t,n){const{windows:r,windowSize:a}=Bn(n,this.bits),i=[];let s=t,o=s;for(let c=0;cgt||r>gt;)n&Ze&&(i=i.add(a)),r&Ze&&(s=s.add(a)),a=a.double(),n>>=Ze,r>>=Ze;return{p1:i,p2:s}}function Yl(e,t,n,r){ql(n,e),Zl(r,t);const a=n.length,i=r.length;if(a!==i)throw new Error("arrays of points and scalars must have equal length");const s=e.ZERO,o=hs(BigInt(a));let c=1;o>12?c=o-3:o>4?c=o-2:o>0&&(c=2);const u=_t(c),p=new Array(Number(u)+1).fill(s),d=Math.floor((t.BITS-1)/c)*c;let f=s;for(let l=d;l>=0;l-=c){p.fill(s);for(let m=0;m>BigInt(l)&u);p[v]=p[v].add(n[m])}let h=s;for(let m=p.length-1,g=s;m>0;m--)g=g.add(p[m]),h=h.add(g);if(f=f.add(h),l!==0)for(let m=0;mgt))throw new Error(`CURVE.${c} must be positive bigint`)}const a=Ja(t.p,n.Fp,r),i=Ja(t.n,n.Fn,r),o=["Gx","Gy","a","b"];for(const c of o)if(!a.isValid(t[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:a,Fn:i}}const Ya=(e,t)=>(e+(e>=0?t:-t)/qs)/t;function Ql(e,t,n){const[[r,a],[i,s]]=t,o=Ya(s*e,n),c=Ya(-a*e,n);let u=e-o*r-c*i,p=-o*a-c*s;const d=u=l||p=l)throw new Error("splitScalar (endomorphism): failed, k="+e);return{k1neg:d,k1:u,k2neg:f,k2:p}}function kr(e){if(!["compact","recovered","der"].includes(e))throw new Error('Signature format must be "compact", "recovered", or "der"');return e}function Nn(e,t){const n={};for(let r of Object.keys(t))n[r]=e[r]===void 0?t[r]:e[r];return pn(n.lowS,"lowS"),pn(n.prehash,"prehash"),n.format!==void 0&&kr(n.format),n}class $l extends Error{constructor(t=""){super(t)}}const Ce={Err:$l,_tlv:{encode:(e,t)=>{const{Err:n}=Ce;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(t.length&1)throw new n("tlv.encode: unpadded data");const r=t.length/2,a=Mt(r);if(a.length/2&128)throw new n("tlv.encode: long form length too big");const i=r>127?Mt(a.length/2|128):"";return Mt(e)+i+a+t},decode(e,t){const{Err:n}=Ce;let r=0;if(e<0||e>256)throw new n("tlv.encode: wrong tag");if(t.length<2||t[r++]!==e)throw new n("tlv.decode: wrong tlv");const a=t[r++],i=!!(a&128);let s=0;if(!i)s=a;else{const c=a&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const u=t.subarray(r,r+c);if(u.length!==c)throw new n("tlv.decode: length bytes not complete");if(u[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const p of u)s=s<<8|p;if(r+=c,s<128)throw new n("tlv.decode(long): not minimal encoding")}const o=t.subarray(r,r+s);if(o.length!==s)throw new n("tlv.decode: wrong value length");return{v:o,l:t.subarray(r+s)}}},_int:{encode(e){const{Err:t}=Ce;if(e{const{X:b,Y:y,Z:k}=j;if(r.eql(k,r.ONE))return{x:b,y};const P=j.is0();w==null&&(w=P?r.ONE:r.inv(k));const _=r.mul(b,w),I=r.mul(y,w),C=r.mul(k,w);if(P)return{x:r.ZERO,y:r.ZERO};if(!r.eql(C,r.ONE))throw new Error("invZ was invalid");return{x:_,y:I}}),L=Ra(j=>{if(j.is0()){if(t.allowInfinityPoint&&!r.is0(j.Y))return;throw new Error("bad point: ZERO")}const{x:w,y:b}=j.toAffine();if(!r.isValid(w)||!r.isValid(b))throw new Error("bad point: x or y not field elements");if(!g(w,b))throw new Error("bad point: equation left != right");if(!j.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function W(j,w,b,y,k){return b=new O(r.mul(b.X,j),b.Y,b.Z),w=mn(y,w),b=mn(k,b),w.add(b)}class O{constructor(w,b,y){this.X=x("x",w),this.Y=x("y",b,!0),this.Z=x("z",y),Object.freeze(this)}static CURVE(){return i}static fromAffine(w){const{x:b,y}=w||{};if(!w||!r.isValid(b)||!r.isValid(y))throw new Error("invalid affine point");if(w instanceof O)throw new Error("projective point not allowed");return r.is0(b)&&r.is0(y)?O.ZERO:new O(b,y,r.ONE)}static fromBytes(w){const b=O.fromAffine(h(Ve(w,void 0,"point")));return b.assertValidity(),b}static fromHex(w){return O.fromBytes(le("pointHex",w))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,b=!0){return ie.createCache(this,w),b||this.multiply(Kt),this}assertValidity(){L(this)}hasEvenY(){const{y:w}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(w)}equals(w){D(w);const{X:b,Y:y,Z:k}=this,{X:P,Y:_,Z:I}=w,C=r.eql(r.mul(b,I),r.mul(P,k)),U=r.eql(r.mul(y,I),r.mul(_,k));return C&&U}negate(){return new O(this.X,r.neg(this.Y),this.Z)}double(){const{a:w,b}=i,y=r.mul(b,Kt),{X:k,Y:P,Z:_}=this;let I=r.ZERO,C=r.ZERO,U=r.ZERO,R=r.mul(k,k),re=r.mul(P,P),V=r.mul(_,_),M=r.mul(k,P);return M=r.add(M,M),U=r.mul(k,_),U=r.add(U,U),I=r.mul(w,U),C=r.mul(y,V),C=r.add(I,C),I=r.sub(re,C),C=r.add(re,C),C=r.mul(I,C),I=r.mul(M,I),U=r.mul(y,U),V=r.mul(w,V),M=r.sub(R,V),M=r.mul(w,M),M=r.add(M,U),U=r.add(R,R),R=r.add(U,R),R=r.add(R,V),R=r.mul(R,M),C=r.add(C,R),V=r.mul(P,_),V=r.add(V,V),R=r.mul(V,M),I=r.sub(I,R),U=r.mul(V,re),U=r.add(U,U),U=r.add(U,U),new O(I,C,U)}add(w){D(w);const{X:b,Y:y,Z:k}=this,{X:P,Y:_,Z:I}=w;let C=r.ZERO,U=r.ZERO,R=r.ZERO;const re=i.a,V=r.mul(i.b,Kt);let M=r.mul(b,P),J=r.mul(y,_),ae=r.mul(k,I),de=r.add(b,y),Y=r.add(P,_);de=r.mul(de,Y),Y=r.add(M,J),de=r.sub(de,Y),Y=r.add(b,k);let se=r.add(P,I);return Y=r.mul(Y,se),se=r.add(M,ae),Y=r.sub(Y,se),se=r.add(y,k),C=r.add(_,I),se=r.mul(se,C),C=r.add(J,ae),se=r.sub(se,C),R=r.mul(re,Y),C=r.mul(V,ae),R=r.add(C,R),C=r.sub(J,R),R=r.add(J,R),U=r.mul(C,R),J=r.add(M,M),J=r.add(J,M),ae=r.mul(re,ae),Y=r.mul(V,Y),J=r.add(J,ae),ae=r.sub(M,ae),ae=r.mul(re,ae),Y=r.add(Y,ae),M=r.mul(J,Y),U=r.add(U,M),M=r.mul(se,Y),C=r.mul(de,C),C=r.sub(C,M),M=r.mul(de,J),R=r.mul(se,R),R=r.add(R,M),new O(C,U,R)}subtract(w){return this.add(w.negate())}is0(){return this.equals(O.ZERO)}multiply(w){const{endo:b}=t;if(!a.isValidNot0(w))throw new Error("invalid scalar: out of range");let y,k;const P=_=>ie.cached(this,_,I=>_n(O,I));if(b){const{k1neg:_,k1:I,k2neg:C,k2:U}=z(w),{p:R,f:re}=P(I),{p:V,f:M}=P(U);k=re.add(M),y=W(b.beta,R,V,_,C)}else{const{p:_,f:I}=P(w);y=_,k=I}return _n(O,[y,k])[0]}multiplyUnsafe(w){const{endo:b}=t,y=this;if(!a.isValid(w))throw new Error("invalid scalar: out of range");if(w===Ie||y.is0())return O.ZERO;if(w===lt)return y;if(ie.hasCache(this))return this.multiply(w);if(b){const{k1neg:k,k1:P,k2neg:_,k2:I}=z(w),{p1:C,p2:U}=Jl(O,y,P,I);return W(b.beta,C,U,k,_)}else return ie.unsafe(y,w)}multiplyAndAddUnsafe(w,b,y){const k=this.multiplyUnsafe(b).add(w.multiplyUnsafe(y));return k.is0()?void 0:k}toAffine(w){return T(this,w)}isTorsionFree(){const{isTorsionFree:w}=t;return s===lt?!0:w?w(O,this):ie.unsafe(this,o).is0()}clearCofactor(){const{clearCofactor:w}=t;return s===lt?this:w?w(O,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(w=!0){return pn(w,"isCompressed"),this.assertValidity(),l(O,this,w)}toHex(w=!0){return dt(this.toBytes(w))}toString(){return``}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(w=!0){return this.toBytes(w)}_setWindowSize(w){this.precompute(w)}static normalizeZ(w){return _n(O,w)}static msm(w,b){return Yl(O,a,w,b)}static fromPrivateKey(w){return O.BASE.multiply(st(a,w))}}O.BASE=new O(i.Gx,i.Gy,r.ONE),O.ZERO=new O(r.ZERO,r.ONE,r.ZERO),O.Fp=r,O.Fn=a;const te=a.BITS,ie=new Wl(O,t.endo?Math.ceil(te/2):te);return O.BASE.precompute(8),O}function Zs(e){return Uint8Array.of(e?2:3)}function Ws(e,t){return{secretKey:t.BYTES,publicKey:1+e.BYTES,publicKeyUncompressed:1+2*e.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function nf(e,t={}){const{Fn:n}=e,r=t.randomBytes||ls,a=Object.assign(Ws(e.Fp,n),{seed:Ks(n.ORDER)});function i(l){try{return!!st(n,l)}catch{return!1}}function s(l,h){const{publicKey:m,publicKeyUncompressed:g}=a;try{const v=l.length;return h===!0&&v!==m||h===!1&&v!==g?!1:!!e.fromBytes(l)}catch{return!1}}function o(l=r(a.seed)){return Vl(Ve(l,a.seed,"seed"),n.ORDER)}function c(l,h=!0){return e.BASE.multiply(st(n,l)).toBytes(h)}function u(l){const h=o(l);return{secretKey:h,publicKey:c(h)}}function p(l){if(typeof l=="bigint")return!1;if(l instanceof e)return!0;const{secretKey:h,publicKey:m,publicKeyUncompressed:g}=a;if(n.allowedLengths||h===m)return;const v=le("key",l).length;return v===m||v===g}function d(l,h,m=!0){if(p(l)===!0)throw new Error("first arg must be private key");if(p(h)===!1)throw new Error("second arg must be public key");const g=st(n,l);return e.fromHex(h).multiply(g).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:d,keygen:u,Point:e,utils:{isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:o,isValidPrivateKey:i,randomPrivateKey:o,normPrivateKeyToScalar:l=>st(n,l),precompute(l=8,h=e.BASE){return h.precompute(l,!1)}},lengths:a})}function rf(e,t,n={}){cs(t),Wr(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=n.randomBytes||ls,a=n.hmac||((b,...y)=>Bs(t,b,De(...y))),{Fp:i,Fn:s}=e,{ORDER:o,BITS:c}=s,{keygen:u,getPublicKey:p,getSharedSecret:d,utils:f,lengths:l}=nf(e,n),h={prehash:!1,lowS:typeof n.lowS=="boolean"?n.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function g(b){const y=o>>lt;return b>y}function v(b,y){if(!s.isValidNot0(y))throw new Error(`invalid signature ${b}: out of range 1..Point.Fn.ORDER`);return y}function S(b,y){kr(y);const k=l.signature,P=y==="compact"?k:y==="recovered"?k+1:void 0;return Ve(b,P,`${y} signature`)}class x{constructor(y,k,P){this.r=v("r",y),this.s=v("s",k),P!=null&&(this.recovery=P),Object.freeze(this)}static fromBytes(y,k=m){S(y,k);let P;if(k==="der"){const{r:U,s:R}=Ce.toSig(Ve(y));return new x(U,R)}k==="recovered"&&(P=y[0],k="compact",y=y.subarray(1));const _=s.BYTES,I=y.subarray(0,_),C=y.subarray(_,_*2);return new x(s.fromBytes(I),s.fromBytes(C),P)}static fromHex(y,k){return this.fromBytes(fn(y),k)}addRecoveryBit(y){return new x(this.r,this.s,y)}recoverPublicKey(y){const k=i.ORDER,{r:P,s:_,recovery:I}=this;if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");if(o*qs1)throw new Error("recovery id is ambiguous for h>1 curve");const U=I===2||I===3?P+o:P;if(!i.isValid(U))throw new Error("recovery id 2 or 3 invalid");const R=i.toBytes(U),re=e.fromBytes(De(Zs((I&1)===0),R)),V=s.inv(U),M=z(le("msgHash",y)),J=s.create(-M*V),ae=s.create(_*V),de=e.BASE.multiplyUnsafe(J).add(re.multiplyUnsafe(ae));if(de.is0())throw new Error("point at infinify");return de.assertValidity(),de}hasHighS(){return g(this.s)}toBytes(y=m){if(kr(y),y==="der")return fn(Ce.hexFromSig(this));const k=s.toBytes(this.r),P=s.toBytes(this.s);if(y==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return De(Uint8Array.of(this.recovery),k,P)}return De(k,P)}toHex(y){return dt(this.toBytes(y))}assertValidity(){}static fromCompact(y){return x.fromBytes(le("sig",y),"compact")}static fromDER(y){return x.fromBytes(le("sig",y),"der")}normalizeS(){return this.hasHighS()?new x(this.r,s.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return dt(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return dt(this.toBytes("compact"))}}const D=n.bits2int||function(y){if(y.length>8192)throw new Error("input is too large");const k=En(y),P=y.length*8-c;return P>0?k>>BigInt(P):k},z=n.bits2int_modN||function(y){return s.create(D(y))},T=_t(c);function L(b){return qd("num < 2^"+c,b,Ie,T),s.toBytes(b)}function W(b,y){return Ve(b,void 0,"message"),y?Ve(t(b),void 0,"prehashed message"):b}function O(b,y,k){if(["recovered","canonical"].some(J=>J in k))throw new Error("sign() legacy options not supported");const{lowS:P,prehash:_,extraEntropy:I}=Nn(k,h);b=W(b,_);const C=z(b),U=st(s,y),R=[L(U),L(C)];if(I!=null&&I!==!1){const J=I===!0?r(l.secretKey):I;R.push(le("extraEntropy",J))}const re=De(...R),V=C;function M(J){const ae=D(J);if(!s.isValidNot0(ae))return;const de=s.inv(ae),Y=e.BASE.multiply(ae).toAffine(),se=s.create(Y.x);if(se===Ie)return;const Bt=s.create(de*s.create(V+se*U));if(Bt===Ie)return;let ta=(Y.x===se?0:2)|Number(Y.y<),na=Bt;return P&&g(Bt)&&(na=s.neg(Bt),ta^=1),new x(se,na,ta)}return{seed:re,k2sig:M}}function te(b,y,k={}){b=le("message",b);const{seed:P,k2sig:_}=O(b,y,k);return Zd(t.outputLen,s.BYTES,a)(P,_)}function ie(b){let y;const k=typeof b=="string"||xn(b),P=!k&&b!==null&&typeof b=="object"&&typeof b.r=="bigint"&&typeof b.s=="bigint";if(!k&&!P)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(P)y=new x(b.r,b.s);else if(k){try{y=x.fromBytes(le("sig",b),"der")}catch(_){if(!(_ instanceof Ce.Err))throw _}if(!y)try{y=x.fromBytes(le("sig",b),"compact")}catch{return!1}}return y||!1}function j(b,y,k,P={}){const{lowS:_,prehash:I,format:C}=Nn(P,h);if(k=le("publicKey",k),y=W(le("message",y),I),"strict"in P)throw new Error("options.strict was renamed to lowS");const U=C===void 0?ie(b):x.fromBytes(le("sig",b),C);if(U===!1)return!1;try{const R=e.fromBytes(k);if(_&&U.hasHighS())return!1;const{r:re,s:V}=U,M=z(y),J=s.inv(V),ae=s.create(M*J),de=s.create(re*J),Y=e.BASE.multiplyUnsafe(ae).add(R.multiplyUnsafe(de));return Y.is0()?!1:s.create(Y.x)===re}catch{return!1}}function w(b,y,k={}){const{prehash:P}=Nn(k,h);return y=W(y,P),x.fromBytes(b,"recovered").recoverPublicKey(y).toBytes()}return Object.freeze({keygen:u,getPublicKey:p,getSharedSecret:d,utils:f,lengths:l,Point:e,sign:te,verify:j,recoverPublicKey:w,Signature:x,hash:t})}function af(e){const t={a:e.a,b:e.b,p:e.Fp.ORDER,n:e.n,h:e.h,Gx:e.Gx,Gy:e.Gy},n=e.Fp;let r=e.allowedPrivateKeyLengths?Array.from(new Set(e.allowedPrivateKeyLengths.map(s=>Math.ceil(s/2)))):void 0;const a=Qe(t.n,{BITS:e.nBitLength,allowedLengths:r,modFromBytes:e.wrapPrivateKey}),i={Fp:n,Fn:a,allowInfinityPoint:e.allowInfinityPoint,endo:e.endo,isTorsionFree:e.isTorsionFree,clearCofactor:e.clearCofactor,fromBytes:e.fromBytes,toBytes:e.toBytes};return{CURVE:t,curveOpts:i}}function sf(e){const{CURVE:t,curveOpts:n}=af(e),r={hmac:e.hmac,randomBytes:e.randomBytes,lowS:e.lowS,bits2int:e.bits2int,bits2int_modN:e.bits2int_modN};return{CURVE:t,curveOpts:n,hash:e.hash,ecdsaOpts:r}}function of(e,t){const n=t.Point;return Object.assign({},t,{ProjectivePoint:n,CURVE:Object.assign({},e,Hs(n.Fn.ORDER,n.Fn.BITS))})}function cf(e){const{CURVE:t,curveOpts:n,hash:r,ecdsaOpts:a}=sf(e),i=tf(t,n),s=rf(i,r,a);return of(e,s)}function Qr(e,t){const n=r=>cf({...e,hash:r});return{...n(t),create:n}}function uf(e,t={}){const{recovered:n}=t;if(typeof e.r>"u")throw new jn({signature:e});if(typeof e.s>"u")throw new jn({signature:e});if(n&&typeof e.yParity>"u")throw new jn({signature:e});if(e.r<0n||e.r>Ha)throw new mf({value:e.r});if(e.s<0n||e.s>Ha)throw new hf({value:e.s});if(typeof e.yParity=="number"&&e.yParity!==0&&e.yParity!==1)throw new $r({value:e.yParity})}function Js(e){if(e.length!==130&&e.length!==132)throw new pf({signature:e});const t=BigInt(he(e,0,32)),n=BigInt(he(e,32,64)),r=(()=>{const a=+`0x${e.slice(130)}`;if(!Number.isNaN(a))try{return lf(a)}catch{throw new $r({value:a})}})();return typeof r>"u"?{r:t,s:n}:{r:t,s:n,yParity:r}}function df(e){uf(e);const t=e.r,n=e.s;return Sn(Le(t,{size:32}),Le(n,{size:32}),typeof e.yParity=="number"?Le(ff(e.yParity),{size:1}):"0x")}function lf(e){if(e===0||e===27)return 0;if(e===1||e===28)return 1;if(e>=35)return e%2===0?1:0;throw new yf({value:e})}function ff(e){if(e===0)return 27;if(e===1)return 28;throw new $r({value:e})}class pf extends q{constructor({signature:t}){super(`Value \`${t}\` is an invalid signature size.`,{metaMessages:["Expected: 64 bytes or 65 bytes.",`Received ${Ge(gs(t))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSerializedSizeError"})}}class jn extends q{constructor({signature:t}){super(`Signature \`${An(t)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.MissingPropertiesError"})}}class mf extends q{constructor({value:t}){super(`Value \`${t}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidRError"})}}class hf extends q{constructor({value:t}){super(`Value \`${t}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSError"})}}class $r extends q{constructor({value:t}){super(`Value \`${t}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidYParityError"})}}class yf extends q{constructor({value:t}){super(`Value \`${t}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidVError"})}}const gf=new TextDecoder,zt=Object.fromEntries(Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").map((e,t)=>[t,e.charCodeAt(0)]));({...Object.fromEntries(Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").map((e,t)=>[e.charCodeAt(0),t]))});function bf(e,t={}){const{pad:n=!0,url:r=!1}=t,a=new Uint8Array(Math.ceil(e.length/3)*4);for(let c=0,u=0;u>18],a[c+1]=zt[p>>12&63],a[c+2]=zt[p>>6&63],a[c+3]=zt[p&63]}const i=e.length%3,s=Math.floor(e.length/3)*4+(i&&i+1);let o=gf.decode(new Uint8Array(a.buffer,0,s));return n&&i===1&&(o+="=="),n&&i===2&&(o+="="),r&&(o=o.replaceAll("+","-").replaceAll("/","_")),o}function wf(e,t={}){return bf(As(e),t)}const Ys={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},Xs={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},Qs={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},vf=Qe(Ys.p),xf=Qe(Xs.p),Ef=Qe(Qs.p),Af=Qr({...Ys,Fp:vf,lowS:!1},Rl);Qr({...Xs,Fp:xf,lowS:!1},jl);Qr({...Qs,Fp:Ef,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},Nl);const Xa=Af;Uint8Array.from([105,171,180,181,160,222,75,198,42,42,32,31,141,37,186,233]);function Sf(e={}){const{flag:t=5,rpId:n=window.location.hostname,signCount:r=0}=e,a=ks(bs(n)),i=Le(t,{size:1}),s=Le(r,{size:4});return Sn(a,i,s)}function kf(e){const{challenge:t,crossOrigin:n=!1,extraClientData:r,origin:a=window.location.origin}=e;return JSON.stringify({type:"webauthn.get",challenge:wf(t,{url:!0,pad:!1}),origin:a,crossOrigin:n,...r})}function Pf(e){const{challenge:t,crossOrigin:n,extraClientData:r,flag:a,origin:i,rpId:s,signCount:o,userVerification:c="required"}=e,u=Sf({flag:a,rpId:s,signCount:o}),p=kf({challenge:t,crossOrigin:n,extraClientData:r,origin:i}),d=ks(bs(p)),f=p.indexOf('"challenge"'),l=p.indexOf('"type"'),h={authenticatorData:u,clientDataJSON:p,challengeIndex:f,typeIndex:l,userVerificationRequired:c==="required"},m=Sn(u,d);return{metadata:h,payload:m}}async function Cf(e={}){const{extractable:t=!1}=e,n=await globalThis.crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},t,["sign","verify"]),r=await globalThis.crypto.subtle.exportKey("raw",n.publicKey),a=fl(new Uint8Array(r));return{privateKey:n.privateKey,publicKey:a}}async function If(e){const{payload:t,privateKey:n}=e,r=await globalThis.crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},n,xs(t)),a=Es(new Uint8Array(r)),i=La(Ma(a,0,32));let s=La(Ma(a,32,64));return s>Xa.CURVE.n/2n&&(s=Xa.CURVE.n-s),{r:i,s}}function Of(e,t){const n=typeof indexedDB<"u"?jo(e,t):void 0;return{getItem:async r=>{const a=await Lo(r,n);return a||null},removeItem:async r=>Mo(r,n),setItem:async(r,a)=>Do(r,a,n)}}const Tf="base-acc-sdk",_f="keys",ea="activeId",bt=Of(Tf,_f);async function Bf(){const e=await Cf({extractable:!1}),t=he(Yr(e.publicKey),1);return await bt.setItem(t,e),await bt.setItem(ea,t),e}async function Uf(){const e=await bt.getItem(ea);if(!e)return null;const t=await bt.getItem(e);return t||null}async function Rf(){const e=await Uf();if(!e){const t=await Bf(),n=he(Yr(t.publicKey),1);return await bt.setItem(n,t),await bt.setItem(ea,n),t}return e}async function Nf(){const e=await Rf(),t=he(Yr(e.publicKey),1),n=async r=>{const{payload:a,metadata:i}=Pf({challenge:r,origin:"https://keys.coinbase.com",userVerification:"preferred"}),s=await If({payload:a,privateKey:e.privateKey});return{signature:df(s),raw:{},webauthn:i}};return{id:t,publicKey:t,async sign({hash:r}){return n(r)},async signMessage({message:r}){return n(fi(r))},async signTypedData(r){return n(yn(r))},type:"webAuthn"}}async function Pr(){return{account:await Nf()}}const Qa={storageKey:"ownPrivateKey",keyType:"private"},$a={storageKey:"ownPublicKey",keyType:"public"},ei={storageKey:"peerPublicKey",keyType:"public"};class jf{ownPrivateKey=null;ownPublicKey=null;peerPublicKey=null;sharedSecret=null;async getOwnPublicKey(){return await this.loadKeysIfNeeded(),this.ownPublicKey}async getSharedSecret(){return await this.loadKeysIfNeeded(),this.sharedSecret}async setPeerPublicKey(t){this.sharedSecret=null,this.peerPublicKey=t,await this.storeKey(ei,t),await this.loadKeysIfNeeded()}async clear(){this.ownPrivateKey=null,this.ownPublicKey=null,this.peerPublicKey=null,this.sharedSecret=null,E.keys.clear()}async generateKeyPair(){const t=await vd();this.ownPrivateKey=t.privateKey,this.ownPublicKey=t.publicKey,await this.storeKey(Qa,t.privateKey),await this.storeKey($a,t.publicKey)}async loadKeysIfNeeded(){if(this.ownPrivateKey===null&&(this.ownPrivateKey=await this.loadKey(Qa)),this.ownPublicKey===null&&(this.ownPublicKey=await this.loadKey($a)),(this.ownPrivateKey===null||this.ownPublicKey===null)&&await this.generateKeyPair(),this.peerPublicKey===null&&(this.peerPublicKey=await this.loadKey(ei)),this.sharedSecret===null){if(this.ownPrivateKey===null||this.peerPublicKey===null)return;this.sharedSecret=await xd(this.ownPrivateKey,this.peerPublicKey)}}async loadKey(t){const n=E.keys.get(t.storageKey);return n?is(t.keyType,n):null}async storeKey(t,n){const r=await as(t.keyType,n);E.keys.set(t.storageKey,r)}}function kt(e,t){if(!(typeof e!="object"||e===null))return t.split(/[.[\]]+/).filter(Boolean).reduce((n,r)=>{if(typeof n=="object"&&n!==null)return n[r]},e)}function ti(e){if(!Array.isArray(e.params))return null;switch(e.method){case"personal_sign":return e.params[1];case"eth_signTypedData_v4":return e.params[0];case"eth_signTransaction":case"eth_sendTransaction":case"wallet_sendCalls":return e.params[0]?.from;default:return null}}function Df(e,t){if(!Array.isArray(e.params))throw A.rpc.invalidParams();const n=[...e.params];switch(e.method){case"eth_signTransaction":case"eth_sendTransaction":case"wallet_sendCalls":n[0].from=t;break;case"eth_signTypedData_v4":n[0]=t;break;case"personal_sign":n[1]=t;break}return{...e,params:n}}function ni(e){if(!e||!Array.isArray(e)||!e[0]?.chainId||typeof e[0].chainId!="string"&&typeof e[0].chainId!="number")throw A.rpc.invalidParams()}function Mf(e){if(!e||!Array.isArray(e)||e.length!==1&&e.length!==2||typeof e[0]!="string"||!Pt(e[0]))throw A.rpc.invalidParams();if(e.length===2){if(!Array.isArray(e[1]))throw A.rpc.invalidParams();for(const t of e[1])if(typeof t!="string"||!t.startsWith("0x"))throw A.rpc.invalidParams()}}function Tt(e,t){const n={...e};if(t&&e.method.startsWith("wallet_")){let r=kt(n,"params.0.capabilities");if(typeof r>"u"&&(r={}),typeof r!="object")throw A.rpc.invalidParams();r={...t,...r},n.params&&Array.isArray(n.params)&&(n.params[0]={...n.params[0],capabilities:r})}return n}async function Cr(){const e=E.subAccountsConfig.get()??{},t={};if(e.creation==="on-connect"){const{account:n}=e.toOwnerAccount?await e.toOwnerAccount():await Pr();if(!n)throw A.provider.unauthorized("No owner account found");t.addSubAccount={account:{type:"create",keys:[{type:n.address?"address":"webauthn-p256",publicKey:n.address||n.publicKey}]}}}E.subAccountsConfig.set({...e,capabilities:t})}function Lf(e){if(!(e.method==="coinbase_fetchPermissions"&&e.params===void 0)){if(e.method==="coinbase_fetchPermissions"&&Array.isArray(e.params)&&e.params.length===1&&typeof e.params[0]=="object"){if(typeof e.params[0].account!="string"||!e.params[0].chainId.startsWith("0x"))throw A.rpc.invalidParams("FetchPermissions - Invalid params: params[0].account must be a hex string");if(typeof e.params[0].chainId!="string"||!e.params[0].chainId.startsWith("0x"))throw A.rpc.invalidParams("FetchPermissions - Invalid params: params[0].chainId must be a hex string");if(typeof e.params[0].spender!="string"||!e.params[0].spender.startsWith("0x"))throw A.rpc.invalidParams("FetchPermissions - Invalid params: params[0].spender must be a hex string");return}throw A.rpc.invalidParams()}}function Ff(e){if(e.params!==void 0)return e;const t=E.getState().account.accounts?.[0],n=E.getState().account.chain?.id,r=E.getState().subAccount?.address;if(!t||!r||!n)throw A.rpc.invalidParams("FetchPermissions - one or more of account, sub account, or chain id is missing, connect to sub account via wallet_connect first");return{method:"coinbase_fetchPermissions",params:[{account:t,chainId:N(n),spender:r}]}}async function $s({client:e,id:t}){const n=await yi(e,{id:t});if(n.status==="success")return n.receipts?.[0].transactionHash;throw A.rpc.internal("failed to send transaction")}function eo({calls:e,from:t,chainId:n,capabilities:r}){const a=xi.get().paymasterUrls;let i={method:"wallet_sendCalls",params:[{version:"1.0",calls:e,chainId:N(n),from:t,atomicRequired:!0,capabilities:r}]};return a?.[n]&&(i=Tt(i,{paymasterService:{url:a?.[n]}})),i}async function Hf(){const e=Fr();return await new Promise((n,r)=>{Rr({dialogContext:"sub_account_insufficient_balance"}),e.presentItem({title:"Insufficient spend permission",message:"Your spend permission's remaining balance cannot cover this transaction. Please use your primary account to complete this transaction.",onClose:()=>{Ii({dialogContext:"sub_account_insufficient_balance"}),e.clear(),r(new Error("User cancelled funding"))},actionItems:[{text:"Use primary account",variant:"primary",onClick:()=>{We({dialogContext:"sub_account_insufficient_balance",dialogAction:"continue_in_popup"}),e.clear(),n("continue_popup")}},{text:"Cancel",variant:"secondary",onClick:()=>{We({dialogContext:"sub_account_insufficient_balance",dialogAction:"cancel"}),e.clear(),r(new Error("User cancelled funding"))}}]})})}function Gf(e){return typeof e=="object"&&e!==null&&Array.isArray(e)&&e.length>0&&typeof e[0]=="object"&&e[0]!==null&&"calls"in e[0]}function Kf(e){return Array.isArray(e)&&e.length===1&&typeof e[0]=="object"&&e[0]!==null&&"to"in e[0]}function zf(e){return No(ke(ut(e)),0,16)}function Vf({attribution:e,dappOrigin:t}){if(e){if("auto"in e&&e.auto&&t)return zf(t);if("dataSuffix"in e)return e.dataSuffix}}function Vt(e,t){const n=e.filter(r=>r!==t);return[t,...n]}function qt(e,t){return[...e.filter(r=>r!==t),t]}function qf(e){return e.replaceAll("+","-").replaceAll("/","_").replace(/=+$/,"")}function Zt(e){const t=btoa(String.fromCharCode(...new Uint8Array(e)));return qf(t)}function Zf({webauthn:e,signature:t,id:n}){const r=Js(t);return{id:n,rawId:Zt(sa(n)),response:{authenticatorData:Zt(Qt(e.authenticatorData)),clientDataJSON:Zt(sa(e.clientDataJSON)),signature:Zt(Wf(r.r,r.s))},type:JSON.parse(e.clientDataJSON).type}}function Wf(e,t){const n=Qt(Mn(N(e))),r=Qt(Mn(N(t))),a=n.length,i=r.length,s=a+i+4,o=new Uint8Array(s+2);return o[0]=48,o[1]=s,o[2]=2,o[3]=a,o.set(n,4),o[a+4]=2,o[a+5]=i,o.set(r,a+6),o}async function Jf(e){const{owner:t,ownerIndex:n,address:r,client:a,factoryData:i}=e,s={abi:Gu,address:Ku,version:"0.6"},o={abi:Ei,address:Ec};return Zu({client:a,entryPoint:s,extend:{abi:we,factory:o},async decodeCalls(c){const u=pi({abi:we,data:c});if(u.functionName==="execute")return[{to:u.args[0],value:u.args[1],data:u.args[2]}];if(u.functionName==="executeBatch")return u.args[0].map(p=>({to:p.target,value:p.value,data:p.data}));throw new B(`unable to decode calls for "${u.functionName}"`)},async encodeCalls(c){return c.length===1?He({abi:we,functionName:"execute",args:[c[0].to,c[0].value??BigInt(0),c[0].data??"0x"]}):He({abi:we,functionName:"executeBatch",args:[c.map(u=>({data:u.data??"0x",target:u.to,value:u.value??BigInt(0)}))]})},async getAddress(){return r},async getFactoryArgs(){return i?{factory:o.address,factoryData:i}:{factory:o.address,factoryData:i}},async getStubSignature(){return t.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":At({ownerIndex:n,signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c"})},async sign(c){const u=await this.getAddress(),p=Dn({address:u,chainId:a.chain.id,hash:c.hash}),d=await Wt({hash:p,owner:t});return At({ownerIndex:n,signature:d})},async signMessage(c){const{message:u}=c,p=await this.getAddress(),d=Dn({address:p,chainId:a.chain.id,hash:fi(u)}),f=await Wt({hash:d,owner:t});return At({ownerIndex:n,signature:f})},async signTypedData(c){const{domain:u,types:p,primaryType:d,message:f}=c,l=await this.getAddress(),h=Dn({address:l,chainId:a.chain.id,hash:yn({domain:u,message:f,primaryType:d,types:p})}),m=await Wt({hash:h,owner:t});return At({ownerIndex:n,signature:m})},async signUserOperation(c){const{chainId:u=a.chain.id,...p}=c,d=await this.getAddress(),f=qu({chainId:u,entryPointAddress:s.address,entryPointVersion:s.version,userOperation:{...p,sender:d}}),l=await Wt({hash:f,owner:t});return At({ownerIndex:n,signature:l})},userOperation:{async estimateGas(c){if(t.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(c.verificationGasLimit??BigInt(0)),8e5))}}}})}async function Wt({hash:e,owner:t}){if(t.type==="webAuthn"){const{signature:n,webauthn:r}=await t.sign({hash:e});return Yf({signature:n,webauthn:r})}if(t.sign)return t.sign({hash:e});throw new B("`owner` does not support raw sign.")}function Dn({address:e,chainId:t,hash:n}){return yn({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:n}})}function Yf({webauthn:e,signature:t}){const{r:n,s:r}=Js(t);return ot([{components:[{name:"authenticatorData",type:"bytes"},{name:"clientDataJSON",type:"bytes"},{name:"challengeIndex",type:"uint256"},{name:"typeIndex",type:"uint256"},{name:"r",type:"uint256"},{name:"s",type:"uint256"}],type:"tuple"}],[{authenticatorData:e.authenticatorData,clientDataJSON:ai(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r:n,s:r}])}function At(e){const{ownerIndex:t=0}=e,n=(()=>{if(di(e.signature)!==65)return e.signature;const r=Yo(e.signature);return Fo(["bytes32","bytes32","uint8"],[r.r,r.s,r.yParity===0?27:28])})();return ot([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:n}])}async function Xf({address:e,client:t,factory:n,factoryData:r,owner:a,ownerIndex:i,parentAddress:s,attribution:o}){const c={address:e,factory:n,factoryData:r},u=t.chain?.id;if(!u)throw A.rpc.internal("chainId not found");const p=await Jf({owner:a,ownerIndex:i??1,address:e,client:t,factoryData:r}),d=async f=>{try{switch(f.method){case"wallet_addSubAccount":return c;case"eth_accounts":return[c.address];case"eth_coinbase":return c.address;case"net_version":return u.toString();case"eth_chainId":return N(u);case"eth_sendTransaction":{je(f.params);const l=f.params[0];ge(l.to,A.rpc.invalidParams("to is required"));const h={to:l.to,data:Xn(l.data??"0x",!0),value:Xn(l.value??"0x",!0),from:l.from??c.address},m=eo({calls:[h],chainId:u,from:h.from}),g=await d(m);return $s({client:t,id:g})}case"wallet_sendCalls":{je(f.params);const l=kt(f.params[0],"chainId");if(!l)throw A.rpc.invalidParams("chainId is required");if(!rt(l))throw A.rpc.invalidParams("chainId must be a hex encoded integer");if(!f.params[0])throw A.rpc.invalidParams("params are required");if(!("calls"in f.params[0]))throw A.rpc.invalidParams("calls are required");let h={method:"wallet_prepareCalls",params:[{version:"1.0",calls:f.params[0].calls,chainId:l,from:c.address,capabilities:"capabilities"in f.params[0]?f.params[0].capabilities:{}}]};s&&(h=Tt(h,{funding:[{type:"spendPermission",data:{autoApply:!0,sources:[s],preference:"PREFER_DIRECT_BALANCE"}}]}));let m=await d(h);const g=await a.sign?.({hash:oa(m.signatureRequest.hash)});let v;if(!g)throw A.rpc.internal("signature not found");return rt(g)?v={type:"secp256k1",data:{address:a.address,signature:g}}:v={type:"webauthn",data:{signature:JSON.stringify(Zf({id:a.id??"1",...g})),publicKey:a.publicKey}},(await d({method:"wallet_sendPreparedCalls",params:[{version:"1.0",type:m.type,data:m.userOp,chainId:m.chainId,signature:v}]}))[0]}case"wallet_sendPreparedCalls":{je(f.params);const l=kt(f.params[0],"chainId");if(!l)throw A.rpc.invalidParams("chainId is required");if(!rt(l))throw A.rpc.invalidParams("chainId must be a hex encoded integer");return await t.request({method:"wallet_sendPreparedCalls",params:f.params})}case"wallet_prepareCalls":{je(f.params);const l=kt(f.params[0],"chainId");if(!l)throw A.rpc.invalidParams("chainId is required");if(!rt(l))throw A.rpc.invalidParams("chainId must be a hex encoded integer");if(!f.params[0])throw A.rpc.invalidParams("params are required");if(!kt(f.params[0],"calls"))throw A.rpc.invalidParams("calls are required");const h=f.params[0];return o&&h.capabilities&&!("attribution"in h.capabilities)&&(h.capabilities.attribution=o),await t.request({method:"wallet_prepareCalls",params:[{...f.params[0],chainId:l}]})}case"personal_sign":{if(je(f.params),!rt(f.params[0]))throw A.rpc.invalidParams("message must be a hex encoded string");const l=oa(f.params[0]);return p.signMessage({message:l})}case"eth_signTypedData_v4":{je(f.params);const l=typeof f.params[1]=="string"?JSON.parse(f.params[1]):f.params[1];return p.signTypedData(l)}default:throw A.rpc.methodNotSupported()}}catch(l){if(Ci(l)){const h=Cc(l);if(h)throw h}throw l}};return{request:d}}async function to({address:e,client:t,publicKey:n,factory:r,factoryData:a}){if(!await li(t,{address:e})&&r&&a){const o=pi({abi:Ei,data:a});if(o.functionName!=="createAccount")throw A.rpc.internal("unknown factory function");const[c]=o.args;return c.findIndex(u=>u.toLowerCase()===ri(n).toLowerCase())}const s=await Ln(t,{address:e,abi:we,functionName:"ownerCount"});for(let o=Number(s)-1;o>=0;o--){const c=await Ln(t,{address:e,abi:we,functionName:"ownerAtIndex",args:[BigInt(o)]}),u=ri(n);if(c.toLowerCase()===u.toLowerCase())return o}return-1}function ri(e){return Pt(e)?fe(e):e}async function Qf(){const e=E.config.get().metadata?.appName??"App",t=Fr();return new Promise(n=>{Rr({dialogContext:"sub_account_add_owner"}),t.presentItem({title:`Re-authorize ${e}`,message:`${e} has lost access to your account. Please sign at the next step to re-authorize ${e}`,onClose:()=>{Ii({dialogContext:"sub_account_add_owner"}),n("cancel")},actionItems:[{text:"Continue",variant:"primary",onClick:()=>{We({dialogContext:"sub_account_add_owner",dialogAction:"confirm"}),t.clear(),n("authenticate")}},{text:"Not now",variant:"secondary",onClick:()=>{We({dialogContext:"sub_account_add_owner",dialogAction:"cancel"}),t.clear(),n("cancel")}}]})})}async function $f({ownerAccount:e,globalAccountRequest:t,chainId:n}){const r=E.account.get(),a=E.subAccounts.get(),i=r.accounts?.find(l=>l.toLowerCase()!==a?.address.toLowerCase());ge(i,A.provider.unauthorized("no global account")),ge(r.chain?.id,A.provider.unauthorized("no chain id")),ge(a?.address,A.provider.unauthorized("no sub account"));const s=[];if(e.type==="local"&&e.address&&s.push({to:a.address,data:He({abi:we,functionName:"addOwnerAddress",args:[e.address]}),value:ut(0)}),e.publicKey){const[l,h]=mi([{type:"bytes32"},{type:"bytes32"}],e.publicKey);s.push({to:a.address,data:He({abi:we,functionName:"addOwnerPublicKey",args:[l,h]}),value:ut(0)})}const o={method:"wallet_sendCalls",params:[{version:"1",calls:s,chainId:N(n),from:i}]};if(await Qf()==="cancel")throw A.provider.unauthorized("user cancelled");const u=await t(o),p=ns(r.chain.id);if(ge(p,A.rpc.internal(`client not found for chainId ${r.chain.id}`)),(await yi(p,{id:u})).status!=="success")throw A.rpc.internal("add owner call failed");const f=await to({address:a.address,publicKey:e.type==="local"&&e.address?e.address:e.publicKey,client:p});if(f===-1)throw A.rpc.internal("failed to find owner index");return f}async function no({request:e,globalAccountAddress:t,subAccountAddress:n,client:r,globalAccountRequest:a,chainId:i,prependCalls:s}){let o;if(e.method==="wallet_sendCalls"&&Gf(e.params))o=e.params[0];else if(e.method==="eth_sendTransaction"&&Kf(e.params))o=eo({calls:[e.params[0]],chainId:i,from:e.params[0].from}).params[0];else throw new Error(`Could not get original call from ${e.method} request`);const c=He({abi:we,functionName:"executeBatch",args:[o.calls.map(l=>({target:l.to,value:Ye(l.value??"0x0"),data:l.data??"0x"}))]}),u=[...s??[],{data:c,to:n,value:"0x0"}],p=Tt({method:"wallet_sendCalls",params:[{...o,calls:u,from:t,version:"2.0.0",atomicRequired:!0}]},{spendPermissions:{request:{spender:n}}}),d=await a(p);let f=d.id;return d.capabilities?.spendPermissions&&_r.set(d.capabilities.spendPermissions.permissions),e.method==="eth_sendTransaction"?$s({client:r,id:f}):d}async function ep({globalAccountAddress:e,subAccountAddress:t,client:n,request:r,globalAccountRequest:a}){const i=n.chain?.id;ge(i,A.rpc.internal("invalid chainId"));try{await Hf()}catch{throw A.provider.userRejectedRequest({message:"User cancelled funding"})}return await no({request:r,globalAccountAddress:e,subAccountAddress:t,client:n,globalAccountRequest:a,chainId:i})}class tp{communicator;keyManager;callback;accounts;chain;constructor(t){this.communicator=t.communicator,this.callback=t.callback,this.keyManager=new jf;const{account:n,chains:r}=E.getState();this.accounts=n.accounts??[],this.chain=n.chain??{id:t.metadata.appChainIds?.[0]??1},r&&_a(r)}get isConnected(){return this.accounts.length>0}async handshake(t){const n=Pe.get(t);Cu({method:t.method,correlationId:n});try{await this.communicator.waitForPopupLoaded?.();const r=await this.createRequestMessage({handshake:{method:t.method,params:t.params??[]}},n),a=await this.communicator.postRequestAndWaitForResponse(r);if("failure"in a.content)throw a.content.failure;const i=await is("public",a.sender);await this.keyManager.setPeerPublicKey(i);const s=await this.decryptResponseMessage(a);this.handleResponse(t,s),Ou({method:t.method,correlationId:n})}catch(r){throw Iu({method:t.method,correlationId:n,errorMessage:at(r)}),r}}async request(t){const n=Pe.get(t);Tu({method:t.method,correlationId:n});try{const r=await this._request(t);return Bu({method:t.method,correlationId:n}),r}catch(r){throw _u({method:t.method,correlationId:n,errorMessage:at(r)}),r}}async _request(t){if(this.accounts.length===0)switch(t.method){case"wallet_switchEthereumChain":{ni(t.params),this.chain.id=Number(t.params[0].chainId);return}case"wallet_connect":{await this.communicator.waitForPopupLoaded?.(),await Cr();const n=E.subAccountsConfig.get(),r=Tt(t,n?.capabilities??{});return this.sendRequestToPopup(r)}case"wallet_sendCalls":case"wallet_sign":return this.sendRequestToPopup(t);default:throw A.provider.unauthorized()}if(this.shouldRequestUseSubAccountSigner(t)){const n=Pe.get(t);Uu({method:t.method,correlationId:n});try{const r=await this.sendRequestToSubAccountSigner(t);return Ru({method:t.method,correlationId:n}),r}catch(r){throw Nu({method:t.method,correlationId:n,errorMessage:at(r)}),r}}switch(t.method){case"eth_requestAccounts":case"eth_accounts":{const n=E.subAccounts.get(),r=E.subAccountsConfig.get();return n?.address&&(this.accounts=r?.defaultAccount==="sub"?Vt(this.accounts,n.address):qt(this.accounts,n.address)),this.callback?.("connect",{chainId:N(this.chain.id)}),this.accounts}case"eth_coinbase":return this.accounts[0];case"net_version":return this.chain.id;case"eth_chainId":return N(this.chain.id);case"wallet_getCapabilities":return this.handleGetCapabilitiesRequest(t);case"wallet_switchEthereumChain":return this.handleSwitchChainRequest(t);case"eth_ecRecover":case"personal_sign":case"wallet_sign":case"personal_ecRecover":case"eth_signTransaction":case"eth_sendTransaction":case"eth_signTypedData_v1":case"eth_signTypedData_v3":case"eth_signTypedData_v4":case"eth_signTypedData":case"wallet_addEthereumChain":case"wallet_watchAsset":case"wallet_sendCalls":case"wallet_showCallsStatus":case"wallet_grantPermissions":return this.sendRequestToPopup(t);case"wallet_connect":{await this.communicator.waitForPopupLoaded?.(),await Cr();const n=E.subAccountsConfig.get(),r=Tt(t,n?.capabilities??{}),a=await this.sendRequestToPopup(r);return this.callback?.("connect",{chainId:N(this.chain.id)}),a}case"wallet_getSubAccounts":{const n=E.subAccounts.get();if(n?.address)return{subAccounts:[n]};if(!this.chain.rpcUrl)throw A.rpc.internal("No RPC URL set for chain");const r=await St(t,this.chain.rpcUrl);if(je(r.subAccounts,"subAccounts"),r.subAccounts.length>0){Dt(r.subAccounts[0]);const a=r.subAccounts[0];E.subAccounts.set({address:a.address,factory:a.factory,factoryData:a.factoryData})}return r}case"wallet_addSubAccount":return this.addSubAccount(t);case"coinbase_fetchPermissions":{Lf(t);const n=Ff(t),r=await St(n,Fn),a=it(n.params?.[0].chainId);return E.spendPermissions.set(r.permissions.map(i=>({...i,chainId:a}))),r}case"coinbase_fetchPermission":{const r=await St(t,Fn);return r.permission&&r.permission.chainId&&E.spendPermissions.set([r.permission]),r}default:if(!this.chain.rpcUrl)throw A.rpc.internal("No RPC URL set for chain");return St(t,this.chain.rpcUrl)}}async sendRequestToPopup(t){await this.communicator.waitForPopupLoaded?.();const n=await this.sendEncryptedRequest(t),r=await this.decryptResponseMessage(n);return this.handleResponse(t,r)}async handleResponse(t,n){const r=n.result;if("error"in r)throw r.error;switch(t.method){case"eth_requestAccounts":{const a=r.value;this.accounts=a,E.account.set({accounts:a,chain:this.chain}),this.callback?.("accountsChanged",a);break}case"wallet_connect":{const a=r.value,i=a.accounts.map(d=>d.address);this.accounts=i,E.account.set({accounts:i});const o=a.accounts.at(0)?.capabilities;if(o?.subAccounts){const d=o?.subAccounts;je(d,"subAccounts"),Dt(d[0]),E.subAccounts.set({address:d[0].address,factory:d[0].factory,factoryData:d[0].factoryData})}const c=E.subAccounts.get(),u=E.subAccountsConfig.get();c?.address&&(this.accounts=u?.defaultAccount==="sub"?Vt(this.accounts,c.address):qt(this.accounts,c.address));const p=a?.accounts?.[0].capabilities?.spendPermissions;p&&"permissions"in p&&E.spendPermissions.set(p?.permissions),this.callback?.("accountsChanged",this.accounts);break}case"wallet_addSubAccount":{Dt(r.value);const a=r.value;E.subAccounts.set(a);const i=E.subAccountsConfig.get();this.accounts=i?.defaultAccount==="sub"?Vt(this.accounts,a.address):qt(this.accounts,a.address),this.callback?.("accountsChanged",this.accounts);break}}return r.value}async cleanup(){const t=E.config.get().metadata;await this.keyManager.clear(),E.account.clear(),E.subAccounts.clear(),E.spendPermissions.clear(),E.chains.clear(),this.accounts=[],this.chain={id:t?.appChainIds?.[0]??1}}async handleSwitchChainRequest(t){ni(t.params);const n=Pu(t.params[0].chainId);if(this.updateChain(n))return null;const a=await this.sendRequestToPopup(t);return a===null&&this.updateChain(n),a}async handleGetCapabilitiesRequest(t){Mf(t.params);const n=t.params[0],r=t.params[1];if(!this.accounts.some(o=>ii(o,n)))throw A.provider.unauthorized("no active account found when getting capabilities");const a=E.getState().account.capabilities;if(!a)return{};if(!r||r.length===0)return a;const i=new Set(r.map(o=>it(o)));return Object.fromEntries(Object.entries(a).filter(([o])=>{try{const c=it(o);return i.has(c)}catch{return!1}}))}async sendEncryptedRequest(t){const n=await this.keyManager.getSharedSecret();if(!n)throw A.provider.unauthorized("No shared secret found when encrypting request");const r=await Sd({action:t,chainId:this.chain.id},n),a=Pe.get(t),i=await this.createRequestMessage({encrypted:r},a);return this.communicator.postRequestAndWaitForResponse(i)}async createRequestMessage(t,n){const r=await as("public",await this.keyManager.getOwnPublicKey());return{id:crypto.randomUUID(),correlationId:n,sender:r,content:t,timestamp:new Date}}async decryptResponseMessage(t){const n=t.content;if("failure"in n)throw n.failure;const r=await this.keyManager.getSharedSecret();if(!r)throw A.provider.unauthorized("Invalid session: no shared secret found when decrypting response");const a=await kd(n.encrypted,r),i=a.data?.chains;if(i){const o=a.data?.nativeCurrencies,c=Object.entries(i).map(([u,p])=>{const d=o?.[Number(u)];return{id:Number(u),rpcUrl:p,...d?{nativeCurrency:d}:{}}});E.chains.set(c),this.updateChain(this.chain.id,c),_a(c)}const s=a.data?.capabilities;return s&&E.account.set({capabilities:s}),a}updateChain(t,n){const r=E.getState(),i=(n??r.chains)?.find(s=>s.id===t);return i?(i!==this.chain&&(this.chain=i,E.account.set({chain:i}),this.callback?.("chainChanged",Vi(i.id))),!0):!1}async addSubAccount(t){const r=E.getState().subAccount,a=E.subAccountsConfig.get();if(r?.address)return this.accounts=a?.defaultAccount==="sub"?Vt(this.accounts,r.address):qt(this.accounts,r.address),this.callback?.("accountsChanged",this.accounts),r;if(await this.communicator.waitForPopupLoaded?.(),Array.isArray(t.params)&&t.params.length>0&&t.params[0].account&&t.params[0].account.type==="create"){let s;if(t.params[0].account.keys&&t.params[0].account.keys.length>0)s=t.params[0].account.keys;else{const o=E.subAccountsConfig.get()??{},{account:c}=o.toOwnerAccount?await o.toOwnerAccount():await Pr();if(!c)throw A.provider.unauthorized("could not get subaccount owner account when adding sub account");s=[{type:c.address?"address":"webauthn-p256",publicKey:c.address||c.publicKey}]}t.params[0].account.keys=s}const i=await this.sendRequestToPopup(t);return Dt(i),i}shouldRequestUseSubAccountSigner(t){const n=ti(t),r=E.subAccounts.get();return n?n.toLowerCase()===r?.address.toLowerCase():!1}async sendRequestToSubAccountSigner(t){const n=E.subAccounts.get(),r=E.subAccountsConfig.get(),a=E.config.get();ge(n?.address,A.provider.unauthorized("no active sub account when sending request to sub account signer"));const i=r?.toOwnerAccount?await r.toOwnerAccount():await Pr();ge(i?.account,A.provider.unauthorized("no active sub account owner when sending request to sub account signer")),ti(t)===void 0&&(t=Df(t,n.address));const o=this.accounts.find(m=>m.toLowerCase()!==n.address.toLowerCase());ge(o,A.provider.unauthorized("no global account found when sending request to sub account signer"));const c=Vf({attribution:a.preference?.attribution,dappOrigin:window.location.origin}),u=t.method==="wallet_sendCalls"&&t.params?.[0]?.chainId,p=u?it(u):this.chain.id,d=ns(p);if(ge(d,A.rpc.internal(`client not found for chainId ${p} when sending request to sub account signer`)),["eth_sendTransaction","wallet_sendCalls"].includes(t.method)&&E.subAccountsConfig.get()?.funding==="spend-permissions"&&_r.get().length===0)return await no({request:t,globalAccountAddress:o,subAccountAddress:n.address,client:d,globalAccountRequest:this.sendRequestToPopup.bind(this),chainId:p});const f=i.account.type==="local"?i.account.address:i.account.publicKey;let l=await to({address:n.address,factory:n.factory,factoryData:n.factoryData,publicKey:f,client:d});if(l===-1){const m=Pe.get(t);ju({method:t.method,correlationId:m});try{l=await $f({ownerAccount:i.account,globalAccountRequest:this.sendRequestToPopup.bind(this),chainId:p}),Du({method:t.method,correlationId:m})}catch(g){return Mu({method:t.method,correlationId:m,errorMessage:at(g)}),A.provider.unauthorized("failed to add sub account owner when sending request to sub account signer")}}const{request:h}=await Xf({address:n.address,owner:i.account,client:d,factory:n.factory,factoryData:n.factoryData,parentAddress:o,attribution:c?{suffix:c}:void 0,ownerIndex:l});try{return await h(t)}catch(m){if(E.subAccountsConfig.get()?.funding==="manual")throw m;let v;if(Ci(m))v=JSON.parse(m.details);else if(la(m))v=m;else throw m;if(!(la(v)&&v.data)||!v.data)throw m;const S=Pe.get(t);Lu({method:t.method,correlationId:S});try{const x=await ep({errorData:v.data,globalAccountAddress:o,subAccountAddress:n.address,client:d,request:t,globalAccountRequest:this.request.bind(this)});return Fu({method:t.method,correlationId:S}),x}catch(x){throw console.error(x),Hu({method:t.method,correlationId:S,errorMessage:at(x)}),m}}}}class np extends hu{communicator;signer;constructor({metadata:t,preference:{walletUrl:n,...r}}){super(),this.communicator=new lu({url:n,metadata:t,preference:r}),this.signer=new tp({metadata:t,communicator:this.communicator,callback:this.emit.bind(this)})}async request(t){const n=crypto.randomUUID();Pe.set(t,n),yu({method:t.method,correlationId:n});try{const r=await this._request(t);return bu({method:t.method,correlationId:n}),r}catch(r){throw gu({method:t.method,correlationId:n,errorMessage:at(r)}),r}finally{Pe.delete(t)}}async _request(t){try{if(Pd(t),!this.signer.isConnected)switch(t.method){case"eth_requestAccounts":{await this.signer.handshake({method:"handshake"}),await Cr(),await this.signer.request({method:"wallet_connect",params:[{version:"1",capabilities:{...E.subAccountsConfig.get()?.capabilities??{}}}]});break}case"wallet_connect":return await this.signer.handshake({method:"handshake"}),await this.signer.request(t);case"wallet_switchEthereumChain":return await this.signer.request(t);case"wallet_sendCalls":case"wallet_sign":try{return await this.signer.handshake({method:"handshake"}),await this.signer.request(t)}finally{await this.signer.cleanup()}case"wallet_getCallsStatus":return await St(t,Fn);case"eth_accounts":return[];case"net_version":return 1;case"eth_chainId":return Vi(1);default:throw A.provider.unauthorized("Must call 'eth_requestAccounts' before other methods")}return await this.signer.request(t)}catch(n){const{code:r}=n;return r===Q.provider.unauthorized&&await this.disconnect(),Promise.reject(fu(n))}}async disconnect(){await this.signer.cleanup(),Pe.clear(),this.emit("disconnect",A.provider.disconnected("User initiated disconnection"))}isBaseAccount=!0}const rp="isCoinbaseBrowser";function ap(){const e=window.top?.ethereum??window.ethereum;return e?.[rp]?e:null}function pp(e){const t={metadata:{appName:e.appName||"App",appLogoUrl:e.appLogoUrl||"",appChainIds:e.appChainIds||[]},preference:e.preference??{},paymasterUrls:e.paymasterUrls};e.subAccounts?.toOwnerAccount&&fa(e.subAccounts.toOwnerAccount),E.subAccountsConfig.set({toOwnerAccount:e.subAccounts?.toOwnerAccount,creation:e.subAccounts?.creation??"manual",defaultAccount:e.subAccounts?.defaultAccount??"universal",funding:e.subAccounts?.funding??"spend-permissions"}),E.config.set(t),E.persist.rehydrate(),Tc(),Bc(t.preference),t.preference.telemetry!==!1&&vc();let n=null;const r={getProvider:()=>(n||(n=ap()??new np(t)),n),subAccount:{async create(a){return await r.getProvider()?.request({method:"wallet_addSubAccount",params:[{version:"1",account:a}]})},async get(){const a=E.subAccounts.get();if(a?.address)return a;const s=(await r.getProvider()?.request({method:"wallet_connect",params:[{version:"1",capabilities:{}}]})).accounts[0].capabilities?.subAccounts;return Array.isArray(s)?s[0]:null},addOwner:async({address:a,publicKey:i,chainId:s})=>{const o=E.subAccounts.get(),c=E.account.get();ge(c,new Error("account does not exist")),ge(o?.address,new Error("subaccount does not exist"));const u=[];if(i){const[p,d]=mi([{type:"bytes32"},{type:"bytes32"}],i);u.push({to:o.address,data:He({abi:we,functionName:"addOwnerPublicKey",args:[p,d]}),value:ut(0)})}return a&&u.push({to:o.address,data:He({abi:we,functionName:"addOwnerAddress",args:[a]}),value:ut(0)}),await r.getProvider()?.request({method:"wallet_sendCalls",params:[{calls:u,chainId:ut(s),from:c.accounts?.[0],version:"1"}]})},setToOwnerAccount(a){fa(a),E.subAccountsConfig.set({toOwnerAccount:a})}}};return r}export{wt as VERSION,pp as createBaseAccountSDK,Pr as getCryptoKeyAccount}; diff --git a/dist/assets/index-BJmn9h7A.js b/dist/assets/index-BJmn9h7A.js new file mode 100644 index 0000000..9b07b75 --- /dev/null +++ b/dist/assets/index-BJmn9h7A.js @@ -0,0 +1,3039 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-B6jcTw9C.js","assets/index-nibyPLVP.js","assets/index-CgHl7Ecz.js","assets/index-My90LZL7.js","assets/index-B0eu9Tuz.js","assets/events-DQ172AOg.js","assets/index.es-DwcFMDuM.js"])))=>i.map(i=>d[i]); +function dIe(t,e){for(var r=0;rn[a]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();var vT=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function gd(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function nbr(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var r=function n(){var a=!1;try{a=this instanceof n}catch{}return a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var a=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,a.get?a:{enumerable:!0,get:function(){return t[n]}})}),r}var HB={exports:{}},lC={};var sue;function LZe(){if(sue)return lC;sue=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function r(n,a,i){var o=null;if(i!==void 0&&(o=""+i),a.key!==void 0&&(o=""+a.key),"key"in a){i={};for(var s in a)s!=="key"&&(i[s]=a[s])}else i=a;return a=i.ref,{$$typeof:t,type:n,key:o,ref:a!==void 0?a:null,props:i}}return lC.Fragment=e,lC.jsx=r,lC.jsxs=r,lC}var lue;function BZe(){return lue||(lue=1,HB.exports=LZe()),HB.exports}var g=BZe(),GB={exports:{}},li={},cue;function FZe(){if(cue)return li;cue=1;var t={};var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),s=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),d=Symbol.for("react.activity"),h=Symbol.iterator;function p(W){return W===null||typeof W!="object"?null:(W=h&&W[h]||W["@@iterator"],typeof W=="function"?W:null)}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,y={};function w(W,re,L){this.props=W,this.context=re,this.refs=y,this.updater=L||m}w.prototype.isReactComponent={},w.prototype.setState=function(W,re){if(typeof W!="object"&&typeof W!="function"&&W!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,W,re,"setState")},w.prototype.forceUpdate=function(W){this.updater.enqueueForceUpdate(this,W,"forceUpdate")};function S(){}S.prototype=w.prototype;function A(W,re,L){this.props=W,this.context=re,this.refs=y,this.updater=L||m}var E=A.prototype=new S;E.constructor=A,v(E,w.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function C(){}var k={H:null,A:null,T:null,S:null},P=Object.prototype.hasOwnProperty;function I(W,re,L){var q=L.ref;return{$$typeof:e,type:W,key:re,ref:q!==void 0?q:null,props:L}}function O(W,re){return I(W.type,re,W.props)}function j(W){return typeof W=="object"&&W!==null&&W.$$typeof===e}function B(W){var re={"=":"=0",":":"=2"};return"$"+W.replace(/[=:]/g,function(L){return re[L]})}var V=/\/+/g;function F(W,re){return typeof W=="object"&&W!==null&&W.key!=null?B(""+W.key):re.toString(36)}function z(W){switch(W.status){case"fulfilled":return W.value;case"rejected":throw W.reason;default:switch(typeof W.status=="string"?W.then(C,C):(W.status="pending",W.then(function(re){W.status==="pending"&&(W.status="fulfilled",W.value=re)},function(re){W.status==="pending"&&(W.status="rejected",W.reason=re)})),W.status){case"fulfilled":return W.value;case"rejected":throw W.reason}}throw W}function H(W,re,L,q,Z){var se=typeof W;(se==="undefined"||se==="boolean")&&(W=null);var xe=!1;if(W===null)xe=!0;else switch(se){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(W.$$typeof){case e:case r:xe=!0;break;case f:return xe=W._init,H(xe(W._payload),re,L,q,Z)}}if(xe)return Z=Z(W),xe=q===""?"."+F(W,0):q,T(Z)?(L="",xe!=null&&(L=xe.replace(V,"$&/")+"/"),H(Z,re,L,"",function(ae){return ae})):Z!=null&&(j(Z)&&(Z=O(Z,L+(Z.key==null||W&&W.key===Z.key?"":(""+Z.key).replace(V,"$&/")+"/")+xe)),re.push(Z)),1;xe=0;var J=q===""?".":q+":";if(T(W))for(var ye=0;ye>>1,ue=z[Q];if(0>>1;Qa(re,$))La(q,re)?(z[Q]=q,z[L]=$,Q=L):(z[Q]=re,z[W]=$,Q=W);else if(La(q,$))z[Q]=q,z[L]=$,Q=L;else break e}}return H}function a(z,H){var $=z.sortIndex-H.sortIndex;return $!==0?$:z.id-H.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var o=Date,s=o.now();t.unstable_now=function(){return o.now()-s}}var l=[],c=[],u=1,f=null,d=3,h=!1,p=!1,m=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,S=typeof setImmediate<"u"?setImmediate:null;function A(z){for(var H=r(c);H!==null;){if(H.callback===null)n(c);else if(H.startTime<=z)n(c),H.sortIndex=H.expirationTime,e(l,H);else break;H=r(c)}}function E(z){if(m=!1,A(z),!p)if(r(l)!==null)p=!0,T||(T=!0,j());else{var H=r(c);H!==null&&F(E,H.startTime-z)}}var T=!1,C=-1,k=5,P=-1;function I(){return v?!0:!(t.unstable_now()-Pz&&I());){var Q=f.callback;if(typeof Q=="function"){f.callback=null,d=f.priorityLevel;var ue=Q(f.expirationTime<=z);if(z=t.unstable_now(),typeof ue=="function"){f.callback=ue,A(z),H=!0;break t}f===r(l)&&n(l),A(z)}else n(l);f=r(l)}if(f!==null)H=!0;else{var fe=r(c);fe!==null&&F(E,fe.startTime-z),H=!1}}break e}finally{f=null,d=$,h=!1}H=void 0}}finally{H?j():T=!1}}}var j;if(typeof S=="function")j=function(){S(O)};else if(typeof MessageChannel<"u"){var B=new MessageChannel,V=B.port2;B.port1.onmessage=O,j=function(){V.postMessage(null)}}else j=function(){y(O,0)};function F(z,H){C=y(function(){z(t.unstable_now())},H)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(z){z.callback=null},t.unstable_forceFrameRate=function(z){0>z||125Q?(z.sortIndex=$,e(c,z),r(l)===null&&z===r(c)&&(m?(w(C),C=-1):m=!0,F(E,$-Q))):(z.sortIndex=ue,e(l,z),p||h||(p=!0,T||(T=!0,j()))),z},t.unstable_shouldYield=I,t.unstable_wrapCallback=function(z){var H=d;return function(){var $=d;d=H;try{return z.apply(this,arguments)}finally{d=$}}}})(KB)),KB}var due;function zZe(){return due||(due=1,WB.exports=UZe()),WB.exports}var YB={exports:{}},tu={};var hue;function VZe(){if(hue)return tu;hue=1;var t=bb();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),YB.exports=VZe(),YB.exports}var mue;function $Ze(){if(mue)return cC;mue=1;var t={};var e=zZe(),r=bb(),n=hIe();function a(b){var _="https://react.dev/errors/"+b;if(1fe||(b.current=ue[fe],ue[fe]=null,fe--)}function L(b,_){fe++,ue[fe]=b.current,b.current=_}var q=W(null),Z=W(null),se=W(null),xe=W(null);function J(b,_){switch(L(se,_),L(Z,b),L(q,null),_.nodeType){case 9:case 11:b=(b=_.documentElement)&&(b=b.namespaceURI)?Pce(b):0;break;default:if(b=_.tagName,_=_.namespaceURI)_=Pce(_),b=Ice(_,b);else switch(b){case"svg":b=1;break;case"math":b=2;break;default:b=0}}re(q),L(q,b)}function ye(){re(q),re(Z),re(se)}function ae(b){b.memoizedState!==null&&L(xe,b);var _=q.current,N=Ice(_,b.type);_!==N&&(L(Z,b),L(q,N))}function oe(b){Z.current===b&&(re(q),re(Z)),xe.current===b&&(re(xe),aC._currentValue=Q)}var pe,be;function Se(b){if(pe===void 0)try{throw Error()}catch(N){var _=N.stack.trim().match(/\n( *(at )?)/);pe=_&&_[1]||"",be=-1)":-1K||Ot[M]!==pr[K]){var Lr=` +`+Ot[M].replace(" at new "," at ");return b.displayName&&Lr.includes("")&&(Lr=Lr.replace("",b.displayName)),Lr}while(1<=M&&0<=K);break}}}finally{_e=!1,Error.prepareStackTrace=N}return(N=b?b.displayName||b.name:"")?Se(N):""}function ze(b,_){switch(b.tag){case 26:case 27:case 5:return Se(b.type);case 16:return Se("Lazy");case 13:return b.child!==_&&_!==null?Se("Suspense Fallback"):Se("Suspense");case 19:return Se("SuspenseList");case 0:case 15:return Le(b.type,!1);case 11:return Le(b.type.render,!1);case 1:return Le(b.type,!0);case 31:return Se("Activity");default:return""}}function we(b){try{var _="",N=null;do _+=ze(b,N),N=b,b=b.return;while(b);return _}catch(M){return` +Error generating stack: `+M.message+` +`+M.stack}}var He=Object.prototype.hasOwnProperty,Ye=e.unstable_scheduleCallback,Re=e.unstable_cancelCallback,je=e.unstable_shouldYield,Ve=e.unstable_requestPaint,Y=e.unstable_now,le=e.unstable_getCurrentPriorityLevel,me=e.unstable_ImmediatePriority,Fe=e.unstable_UserBlockingPriority,De=e.unstable_NormalPriority,it=e.unstable_LowPriority,ee=e.unstable_IdlePriority,ve=e.log,Ae=e.unstable_setDisableYieldValue,Je=null,ct=null;function lt(b){if(typeof ve=="function"&&Ae(b),ct&&typeof ct.setStrictMode=="function")try{ct.setStrictMode(Je,b)}catch{}}var It=Math.clz32?Math.clz32:Oe,ne=Math.log,de=Math.LN2;function Oe(b){return b>>>=0,b===0?32:31-(ne(b)/de|0)|0}var Ge=256,$e=262144,he=4194304;function ge(b){var _=b&42;if(_!==0)return _;switch(b&-b){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return b&261888;case 262144:case 524288:case 1048576:case 2097152:return b&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return b&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return b}}function Pe(b,_,N){var M=b.pendingLanes;if(M===0)return 0;var K=0,te=b.suspendedLanes,Ie=b.pingedLanes;b=b.warmLanes;var et=M&134217727;return et!==0?(M=et&~te,M!==0?K=ge(M):(Ie&=et,Ie!==0?K=ge(Ie):N||(N=et&~b,N!==0&&(K=ge(N))))):(et=M&~te,et!==0?K=ge(et):Ie!==0?K=ge(Ie):N||(N=M&~b,N!==0&&(K=ge(N)))),K===0?0:_!==0&&_!==K&&(_&te)===0&&(te=K&-K,N=_&-_,te>=N||te===32&&(N&4194048)!==0)?_:K}function qe(b,_){return(b.pendingLanes&~(b.suspendedLanes&~b.pingedLanes)&_)===0}function yt(b,_){switch(b){case 1:case 2:case 4:case 8:case 64:return _+250;case 16:case 32: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 _+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wt(){var b=he;return he<<=1,(he&62914560)===0&&(he=4194304),b}function zt(b){for(var _=[],N=0;31>N;N++)_.push(b);return _}function Ar(b,_){b.pendingLanes|=_,_!==268435456&&(b.suspendedLanes=0,b.pingedLanes=0,b.warmLanes=0)}function ir(b,_,N,M,K,te){var Ie=b.pendingLanes;b.pendingLanes=N,b.suspendedLanes=0,b.pingedLanes=0,b.warmLanes=0,b.expiredLanes&=N,b.entangledLanes&=N,b.errorRecoveryDisabledLanes&=N,b.shellSuspendCounter=0;var et=b.entanglements,Ot=b.expirationTimes,pr=b.hiddenUpdates;for(N=Ie&~N;0"u")return null;try{return b.activeElement||b.body}catch{return b.body}}var ut=/[\n"\\]/g;function Dt(b){return b.replace(ut,function(_){return"\\"+_.charCodeAt(0).toString(16)+" "})}function lr(b,_,N,M,K,te,Ie,et){b.name="",Ie!=null&&typeof Ie!="function"&&typeof Ie!="symbol"&&typeof Ie!="boolean"?b.type=Ie:b.removeAttribute("type"),_!=null?Ie==="number"?(_===0&&b.value===""||b.value!=_)&&(b.value=""+_i(_)):b.value!==""+_i(_)&&(b.value=""+_i(_)):Ie!=="submit"&&Ie!=="reset"||b.removeAttribute("value"),_!=null?Lt(b,Ie,_i(_)):N!=null?Lt(b,Ie,_i(N)):M!=null&&b.removeAttribute("value"),K==null&&te!=null&&(b.defaultChecked=!!te),K!=null&&(b.checked=K&&typeof K!="function"&&typeof K!="symbol"),et!=null&&typeof et!="function"&&typeof et!="symbol"&&typeof et!="boolean"?b.name=""+_i(et):b.removeAttribute("name")}function mr(b,_,N,M,K,te,Ie,et){if(te!=null&&typeof te!="function"&&typeof te!="symbol"&&typeof te!="boolean"&&(b.type=te),_!=null||N!=null){if(!(te!=="submit"&&te!=="reset"||_!=null)){Be(b);return}N=N!=null?""+_i(N):"",_=_!=null?""+_i(_):N,et||_===b.value||(b.value=_),b.defaultValue=_}M=M??K,M=typeof M!="function"&&typeof M!="symbol"&&!!M,b.checked=et?b.checked:!!M,b.defaultChecked=!!M,Ie!=null&&typeof Ie!="function"&&typeof Ie!="symbol"&&typeof Ie!="boolean"&&(b.name=Ie),Be(b)}function Lt(b,_,N){_==="number"&&kt(b.ownerDocument)===b||b.defaultValue===""+N||(b.defaultValue=""+N)}function Ft(b,_,N,M){if(b=b.options,_){_={};for(var K=0;K"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),qr=!1;if(Br)try{var Ur={};Object.defineProperty(Ur,"passive",{get:function(){qr=!0}}),window.addEventListener("test",Ur,Ur),window.removeEventListener("test",Ur,Ur)}catch{qr=!1}var _n=null,gn=null,Zr=null;function ra(){if(Zr)return Zr;var b,_=gn,N=_.length,M,K="value"in _n?_n.value:_n.textContent,te=K.length;for(b=0;b=Rn),qi=" ",wl=!1;function Os(b,_){switch(b){case"keyup":return Ji.indexOf(_.keyCode)!==-1;case"keydown":return _.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ac(b){return b=b.detail,typeof b=="object"&&"data"in b?b.data:null}var vu=!1;function Sd(b,_){switch(b){case"compositionend":return Ac(_);case"keypress":return _.which!==32?null:(wl=!0,qi);case"textInput":return b=_.data,b===qi&&wl?null:b;default:return null}}function Ih(b,_){if(vu)return b==="compositionend"||!ui&&Os(b,_)?(b=ra(),Zr=gn=_n=null,vu=!1,b):null;switch(b){case"paste":return null;case"keypress":if(!(_.ctrlKey||_.altKey||_.metaKey)||_.ctrlKey&&_.altKey){if(_.char&&1<_.char.length)return _.char;if(_.which)return String.fromCharCode(_.which)}return null;case"compositionend":return ko&&_.locale!=="ko"?null:_.data;default:return null}}var jf={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Oh(b){var _=b&&b.nodeName&&b.nodeName.toLowerCase();return _==="input"?!!jf[b.type]:_==="textarea"}function jh(b,_,N,M){Nt?Jt?Jt.push(M):Jt=[M]:Nt=M,_=kI(_,"onChange"),0<_.length&&(N=new yl("onChange","change",null,N,M),b.push({event:N,listeners:_}))}var Rh=null,Zu=null;function oS(b){_ce(b,0)}function A0(b){var _=Ai(b);if(pt(_))return b}function ke(b,_){if(b==="change")return _}var ce=!1;if(Br){var ie;if(Br){var Ee="oninput"in document;if(!Ee){var We=document.createElement("div");We.setAttribute("oninput","return;"),Ee=typeof We.oninput=="function"}ie=Ee}else ie=!1;ce=ie&&(!document.documentMode||9=_)return{node:N,offset:_-b};b=M}e:{for(;N;){if(N.nextSibling){N=N.nextSibling;break e}N=N.parentNode}N=void 0}N=vo(N)}}function io(b,_){return b&&_?b===_?!0:b&&b.nodeType===3?!1:_&&_.nodeType===3?io(b,_.parentNode):"contains"in b?b.contains(_):b.compareDocumentPosition?!!(b.compareDocumentPosition(_)&16):!1:!1}function ys(b){b=b!=null&&b.ownerDocument!=null&&b.ownerDocument.defaultView!=null?b.ownerDocument.defaultView:window;for(var _=kt(b.document);_ instanceof b.HTMLIFrameElement;){try{var N=typeof _.contentWindow.location.href=="string"}catch{N=!1}if(N)b=_.contentWindow;else break;_=kt(b.document)}return _}function bs(b){var _=b&&b.nodeName&&b.nodeName.toLowerCase();return _&&(_==="input"&&(b.type==="text"||b.type==="search"||b.type==="tel"||b.type==="url"||b.type==="password")||_==="textarea"||b.contentEditable==="true")}var Go=Br&&"documentMode"in document&&11>=document.documentMode,xs=null,js=null,mi=null,Fa=!1;function fi(b,_,N){var M=N.window===N?N.document:N.nodeType===9?N:N.ownerDocument;Fa||xs==null||xs!==kt(M)||(M=xs,"selectionStart"in M&&bs(M)?M={start:M.selectionStart,end:M.selectionEnd}:(M=(M.ownerDocument&&M.ownerDocument.defaultView||window).getSelection(),M={anchorNode:M.anchorNode,anchorOffset:M.anchorOffset,focusNode:M.focusNode,focusOffset:M.focusOffset}),mi&&Ci(mi,M)||(mi=M,M=kI(js,"onSelect"),0>=Ie,K-=Ie,Ad=1<<32-It(_)+K|N<xi?(Gi=ha,ha=null):Gi=ha.sibling;var so=yr(rr,ha,hr[xi],$r);if(so===null){ha===null&&(ha=Gi);break}b&&ha&&so.alternate===null&&_(rr,ha),Vt=te(so,Vt,xi),oo===null?Oa=so:oo.sibling=so,oo=so,ha=Gi}if(xi===hr.length)return N(rr,ha),Oi&&Ed(rr,xi),Oa;if(ha===null){for(;xixi?(Gi=ha,ha=null):Gi=ha.sibling;var Z0=yr(rr,ha,so.value,$r);if(Z0===null){ha===null&&(ha=Gi);break}b&&ha&&Z0.alternate===null&&_(rr,ha),Vt=te(Z0,Vt,xi),oo===null?Oa=Z0:oo.sibling=Z0,oo=Z0,ha=Gi}if(so.done)return N(rr,ha),Oi&&Ed(rr,xi),Oa;if(ha===null){for(;!so.done;xi++,so=hr.next())so=Hr(rr,so.value,$r),so!==null&&(Vt=te(so,Vt,xi),oo===null?Oa=so:oo.sibling=so,oo=so);return Oi&&Ed(rr,xi),Oa}for(ha=M(ha);!so.done;xi++,so=hr.next())so=Tr(ha,rr,xi,so.value,$r),so!==null&&(b&&so.alternate!==null&&ha.delete(so.key===null?xi:so.key),Vt=te(so,Vt,xi),oo===null?Oa=so:oo.sibling=so,oo=so);return b&&ha.forEach(function(MZe){return _(rr,MZe)}),Oi&&Ed(rr,xi),Oa}function Bo(rr,Vt,hr,$r){if(typeof hr=="object"&&hr!==null&&hr.type===v&&hr.key===null&&(hr=hr.props.children),typeof hr=="object"&&hr!==null){switch(hr.$$typeof){case p:e:{for(var Oa=hr.key;Vt!==null;){if(Vt.key===Oa){if(Oa=hr.type,Oa===v){if(Vt.tag===7){N(rr,Vt.sibling),$r=K(Vt,hr.props.children),$r.return=rr,rr=$r;break e}}else if(Vt.elementType===Oa||typeof Oa=="object"&&Oa!==null&&Oa.$$typeof===P&&Mf(Oa)===Vt.type){N(rr,Vt.sibling),$r=K(Vt,hr.props),j0($r,hr),$r.return=rr,rr=$r;break e}N(rr,Vt);break}else _(rr,Vt);Vt=Vt.sibling}hr.type===v?($r=rs(hr.props.children,rr.mode,$r,hr.key),$r.return=rr,rr=$r):($r=Qu(hr.type,hr.key,hr.props,null,rr.mode,$r),j0($r,hr),$r.return=rr,rr=$r)}return Ie(rr);case m:e:{for(Oa=hr.key;Vt!==null;){if(Vt.key===Oa)if(Vt.tag===4&&Vt.stateNode.containerInfo===hr.containerInfo&&Vt.stateNode.implementation===hr.implementation){N(rr,Vt.sibling),$r=K(Vt,hr.children||[]),$r.return=rr,rr=$r;break e}else{N(rr,Vt);break}else _(rr,Vt);Vt=Vt.sibling}$r=Lb(hr,rr.mode,$r),$r.return=rr,rr=$r}return Ie(rr);case P:return hr=Mf(hr),Bo(rr,Vt,hr,$r)}if(z(hr))return oa(rr,Vt,hr,$r);if(B(hr)){if(Oa=B(hr),typeof Oa!="function")throw Error(a(150));return hr=Oa.call(hr),za(rr,Vt,hr,$r)}if(typeof hr.then=="function")return Bo(rr,Vt,pS(hr),$r);if(hr.$$typeof===A)return Bo(rr,Vt,N0(rr,hr),$r);Tg(rr,hr)}return typeof hr=="string"&&hr!==""||typeof hr=="number"||typeof hr=="bigint"?(hr=""+hr,Vt!==null&&Vt.tag===6?(N(rr,Vt.sibling),$r=K(Vt,hr),$r.return=rr,rr=$r):(N(rr,Vt),$r=rl(hr,rr.mode,$r),$r.return=rr,rr=$r),Ie(rr)):N(rr,Vt)}return function(rr,Vt,hr,$r){try{Cg=0;var Oa=Bo(rr,Vt,hr,$r);return xu=null,Oa}catch(ha){if(ha===O0||ha===$b)throw ha;var oo=Al(29,ha,null,rr.mode);return oo.lanes=$r,oo.return=rr,oo}}}var Qp=mS(!0),LE=mS(!1),Uh=!1;function R0(b){b.updateQueue={baseState:b.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function gS(b,_){b=b.updateQueue,_.updateQueue===b&&(_.updateQueue={baseState:b.baseState,firstBaseUpdate:b.firstBaseUpdate,lastBaseUpdate:b.lastBaseUpdate,shared:b.shared,callbacks:null})}function zh(b){return{lane:b,tag:0,payload:null,callback:null,next:null}}function Jp(b,_,N){var M=b.updateQueue;if(M===null)return null;if(M=M.shared,(bo&2)!==0){var K=M.pending;return K===null?_.next=_:(_.next=K.next,K.next=_),M.pending=_,_=oi(b),ws(b,null,N),_}return Ca(b,M,_,N),oi(b)}function ef(b,_,N){if(_=_.updateQueue,_!==null&&(_=_.shared,(N&4194048)!==0)){var M=_.lanes;M&=b.pendingLanes,N|=M,_.lanes=N,rt(b,N)}}function kd(b,_){var N=b.updateQueue,M=b.alternate;if(M!==null&&(M=M.updateQueue,N===M)){var K=null,te=null;if(N=N.firstBaseUpdate,N!==null){do{var Ie={lane:N.lane,tag:N.tag,payload:N.payload,callback:null,next:null};te===null?K=te=Ie:te=te.next=Ie,N=N.next}while(N!==null);te===null?K=te=_:te=te.next=_}else K=te=_;N={baseState:M.baseState,firstBaseUpdate:K,lastBaseUpdate:te,shared:M.shared,callbacks:M.callbacks},b.updateQueue=N;return}b=N.lastBaseUpdate,b===null?N.firstBaseUpdate=_:b.next=_,N.lastBaseUpdate=_}var tf=!1;function Vh(){if(tf){var b=I0;if(b!==null)throw b}}function D0(b,_,N,M){tf=!1;var K=b.updateQueue;Uh=!1;var te=K.firstBaseUpdate,Ie=K.lastBaseUpdate,et=K.shared.pending;if(et!==null){K.shared.pending=null;var Ot=et,pr=Ot.next;Ot.next=null,Ie===null?te=pr:Ie.next=pr,Ie=Ot;var Lr=b.alternate;Lr!==null&&(Lr=Lr.updateQueue,et=Lr.lastBaseUpdate,et!==Ie&&(et===null?Lr.firstBaseUpdate=pr:et.next=pr,Lr.lastBaseUpdate=Ot))}if(te!==null){var Hr=K.baseState;Ie=0,Lr=pr=Ot=null,et=te;do{var yr=et.lane&-536870913,Tr=yr!==et.lane;if(Tr?(Hi&yr)===yr:(M&yr)===yr){yr!==0&&yr===Df&&(tf=!0),Lr!==null&&(Lr=Lr.next={lane:0,tag:et.tag,payload:et.payload,callback:null,next:null});e:{var oa=b,za=et;yr=_;var Bo=N;switch(za.tag){case 1:if(oa=za.payload,typeof oa=="function"){Hr=oa.call(Bo,Hr,yr);break e}Hr=oa;break e;case 3:oa.flags=oa.flags&-65537|128;case 0:if(oa=za.payload,yr=typeof oa=="function"?oa.call(Bo,Hr,yr):oa,yr==null)break e;Hr=d({},Hr,yr);break e;case 2:Uh=!0}}yr=et.callback,yr!==null&&(b.flags|=64,Tr&&(b.flags|=8192),Tr=K.callbacks,Tr===null?K.callbacks=[yr]:Tr.push(yr))}else Tr={lane:yr,tag:et.tag,payload:et.payload,callback:et.callback,next:null},Lr===null?(pr=Lr=Tr,Ot=Hr):Lr=Lr.next=Tr,Ie|=yr;if(et=et.next,et===null){if(et=K.shared.pending,et===null)break;Tr=et,et=Tr.next,Tr.next=null,K.lastBaseUpdate=Tr,K.shared.pending=null}}while(!0);Lr===null&&(Ot=Hr),K.baseState=Ot,K.firstBaseUpdate=pr,K.lastBaseUpdate=Lr,te===null&&(K.shared.lanes=0),z0|=Ie,b.lanes=Ie,b.memoizedState=Hr}}function BE(b,_){if(typeof b!="function")throw Error(a(191,b));b.call(_)}function lI(b,_){var N=b.callbacks;if(N!==null)for(b.callbacks=null,b=0;bte?te:8;var Ie=H.T,et={};H.T=et,V4(b,!1,_,N);try{var Ot=K(),pr=H.S;if(pr!==null&&pr(et,Ot),Ot!==null&&typeof Ot=="object"&&typeof Ot.then=="function"){var Lr=oI(Ot,M);zE(b,_,Lr,Uf(b))}else zE(b,_,M,Uf(b))}catch(Hr){zE(b,_,{then:function(){},status:"rejected",reason:Hr},Uf())}finally{$.p=te,Ie!==null&&et.types!==null&&(Ie.types=et.types),H.T=Ie}}function IXe(){}function U4(b,_,N,M){if(b.tag!==5)throw Error(a(476));var K=rle(b).queue;tle(b,K,_,Q,N===null?IXe:function(){return nle(b),N(M)})}function rle(b){var _=b.memoizedState;if(_!==null)return _;_={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jr,lastRenderedState:Q},next:null};var N={};return _.next={memoizedState:N,baseState:N,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jr,lastRenderedState:N},next:null},b.memoizedState=_,b=b.alternate,b!==null&&(b.memoizedState=_),_}function nle(b){var _=rle(b);_.next===null&&(_=b.alternate.memoizedState),zE(b,_.next.queue,{},Uf())}function z4(){return Hs(aC)}function ale(){return tn().memoizedState}function ile(){return tn().memoizedState}function OXe(b){for(var _=b.return;_!==null;){switch(_.tag){case 24:case 3:var N=Uf();b=zh(N);var M=Jp(_,b,N);M!==null&&(sf(M,_,N),ef(M,_,N)),_={cache:fS()},b.payload=_;return}_=_.return}}function jXe(b,_,N){var M=Uf();N={lane:M,revertLane:0,gesture:null,action:N,hasEagerState:!1,eagerState:null,next:null},cI(b)?sle(_,N):(N=Ti(b,_,N,M),N!==null&&(sf(N,b,M),lle(N,_,M)))}function ole(b,_,N){var M=Uf();zE(b,_,N,M)}function zE(b,_,N,M){var K={lane:M,revertLane:0,gesture:null,action:N,hasEagerState:!1,eagerState:null,next:null};if(cI(b))sle(_,K);else{var te=b.alternate;if(b.lanes===0&&(te===null||te.lanes===0)&&(te=_.lastRenderedReducer,te!==null))try{var Ie=_.lastRenderedState,et=te(Ie,N);if(K.hasEagerState=!0,K.eagerState=et,hn(et,Ie))return Ca(b,_,K,0),Xo===null&&Sa(),!1}catch{}if(N=Ti(b,_,K,M),N!==null)return sf(N,b,M),lle(N,_,M),!0}return!1}function V4(b,_,N,M){if(M={lane:2,revertLane:xB(),gesture:null,action:M,hasEagerState:!1,eagerState:null,next:null},cI(b)){if(_)throw Error(a(479))}else _=Ti(b,N,M,2),_!==null&&sf(_,b,2)}function cI(b){var _=b.alternate;return b===si||_!==null&&_===si}function sle(b,_){X=U=!0;var N=b.pending;N===null?_.next=_:(_.next=N.next,N.next=_),b.pending=_}function lle(b,_,N){if((N&4194048)!==0){var M=_.lanes;M&=b.pendingLanes,N|=M,_.lanes=N,rt(b,N)}}var VE={readContext:Hs,use:Wr,useCallback:Ht,useContext:Ht,useEffect:Ht,useImperativeHandle:Ht,useLayoutEffect:Ht,useInsertionEffect:Ht,useMemo:Ht,useReducer:Ht,useRef:Ht,useState:Ht,useDebugValue:Ht,useDeferredValue:Ht,useTransition:Ht,useSyncExternalStore:Ht,useId:Ht,useHostTransitionStatus:Ht,useFormState:Ht,useActionState:Ht,useOptimistic:Ht,useMemoCache:Ht,useCacheRefresh:Ht};VE.useEffectEvent=Ht;var cle={readContext:Hs,use:Wr,useCallback:function(b,_){return Dn().memoizedState=[b,_===void 0?null:_],b},useContext:Hs,useEffect:Wb,useImperativeHandle:function(b,_,N){N=N!=null?N.concat([b]):null,no(4194308,4,nc.bind(null,_,b),N)},useLayoutEffect:function(b,_){return no(4194308,4,b,_)},useInsertionEffect:function(b,_){no(4,2,b,_)},useMemo:function(b,_){var N=Dn();_=_===void 0?null:_;var M=b();if(Ce){lt(!0);try{b()}finally{lt(!1)}}return N.memoizedState=[M,_],M},useReducer:function(b,_,N){var M=Dn();if(N!==void 0){var K=N(_);if(Ce){lt(!0);try{N(_)}finally{lt(!1)}}}else K=_;return M.memoizedState=M.baseState=K,b={pending:null,lanes:0,dispatch:null,lastRenderedReducer:b,lastRenderedState:K},M.queue=b,b=b.dispatch=jXe.bind(null,si,b),[M.memoizedState,b]},useRef:function(b){var _=Dn();return b={current:b},_.memoizedState=b},useState:function(b){b=Rt(b);var _=b.queue,N=ole.bind(null,si,_);return _.dispatch=N,[b.memoizedState,N]},useDebugValue:B4,useDeferredValue:function(b,_){var N=Dn();return F4(N,b,_)},useTransition:function(){var b=Rt(!1);return b=tle.bind(null,si,b.queue,!0,!1),Dn().memoizedState=b,[!1,b]},useSyncExternalStore:function(b,_,N){var M=si,K=Dn();if(Oi){if(N===void 0)throw Error(a(407));N=N()}else{if(N=_(),Xo===null)throw Error(a(349));(Hi&127)!==0||Za(M,_,N)}K.memoizedState=N;var te={value:N,getSnapshot:_};return K.queue=te,Wb(Ga.bind(null,M,te,b),[b]),M.flags|=2048,ns(9,{destroy:void 0},xa.bind(null,M,te,N,_),null),N},useId:function(){var b=Dn(),_=Xo.identifierPrefix;if(Oi){var N=_d,M=Ad;N=(M&~(1<<32-It(M)-1)).toString(32)+N,_="_"+_+"R_"+N,N=nt++,0<\/script>",te=te.removeChild(te.firstChild);break;case"select":te=typeof M.is=="string"?Ie.createElement("select",{is:M.is}):Ie.createElement("select"),M.multiple?te.multiple=!0:M.size&&(te.size=M.size);break;default:te=typeof M.is=="string"?Ie.createElement(K,{is:M.is}):Ie.createElement(K)}}te[Xr]=_,te[vn]=M;e:for(Ie=_.child;Ie!==null;){if(Ie.tag===5||Ie.tag===6)te.appendChild(Ie.stateNode);else if(Ie.tag!==4&&Ie.tag!==27&&Ie.child!==null){Ie.child.return=Ie,Ie=Ie.child;continue}if(Ie===_)break e;for(;Ie.sibling===null;){if(Ie.return===null||Ie.return===_)break e;Ie=Ie.return}Ie.sibling.return=Ie.return,Ie=Ie.sibling}_.stateNode=te;e:switch(Tc(te,K,M),K){case"button":case"input":case"select":case"textarea":M=!!M.autoFocus;break e;case"img":M=!0;break e;default:M=!1}M&&Ng(_)}}return ds(_),rB(_,_.type,b===null?null:b.memoizedProps,_.pendingProps,N),null;case 6:if(b&&_.stateNode!=null)b.memoizedProps!==M&&Ng(_);else{if(typeof M!="string"&&_.stateNode===null)throw Error(a(166));if(b=se.current,Cd(_)){if(b=_.stateNode,N=_.memoizedProps,M=null,K=nl,K!==null)switch(K.tag){case 27:case 5:M=K.memoizedProps}b[Xr]=_,b=!!(b.nodeValue===N||M!==null&&M.suppressHydrationWarning===!0||kce(b.nodeValue,N)),b||qp(_,!0)}else b=NI(b).createTextNode(M),b[Xr]=_,_.stateNode=b}return ds(_),null;case 31:if(N=_.memoizedState,b===null||b.memoizedState!==null){if(M=Cd(_),N!==null){if(b===null){if(!M)throw Error(a(318));if(b=_.memoizedState,b=b!==null?b.dehydrated:null,!b)throw Error(a(557));b[Xr]=_}else Mh(),(_.flags&128)===0&&(_.memoizedState=null),_.flags|=4;ds(_),b=!1}else N=IE(),b!==null&&b.memoizedState!==null&&(b.memoizedState.hydrationErrors=N),b=!0;if(!b)return _.flags&256?(Su(_),_):(Su(_),null);if((_.flags&128)!==0)throw Error(a(558))}return ds(_),null;case 13:if(M=_.memoizedState,b===null||b.memoizedState!==null&&b.memoizedState.dehydrated!==null){if(K=Cd(_),M!==null&&M.dehydrated!==null){if(b===null){if(!K)throw Error(a(318));if(K=_.memoizedState,K=K!==null?K.dehydrated:null,!K)throw Error(a(317));K[Xr]=_}else Mh(),(_.flags&128)===0&&(_.memoizedState=null),_.flags|=4;ds(_),K=!1}else K=IE(),b!==null&&b.memoizedState!==null&&(b.memoizedState.hydrationErrors=K),K=!0;if(!K)return _.flags&256?(Su(_),_):(Su(_),null)}return Su(_),(_.flags&128)!==0?(_.lanes=N,_):(N=M!==null,b=b!==null&&b.memoizedState!==null,N&&(M=_.child,K=null,M.alternate!==null&&M.alternate.memoizedState!==null&&M.alternate.memoizedState.cachePool!==null&&(K=M.alternate.memoizedState.cachePool.pool),te=null,M.memoizedState!==null&&M.memoizedState.cachePool!==null&&(te=M.memoizedState.cachePool.pool),te!==K&&(M.flags|=2048)),N!==b&&N&&(_.child.flags|=8192),pI(_,_.updateQueue),ds(_),null);case 4:return ye(),b===null&&_B(_.stateNode.containerInfo),ds(_),null;case 10:return Td(_.type),ds(_),null;case 19:if(re(Ss),M=_.memoizedState,M===null)return ds(_),null;if(K=(_.flags&128)!==0,te=M.rendering,te===null)if(K)HE(M,!1);else{if(qs!==0||b!==null&&(b.flags&128)!==0)for(b=_.child;b!==null;){if(te=vS(b),te!==null){for(_.flags|=128,HE(M,!1),b=te.updateQueue,_.updateQueue=b,pI(_,b),_.subtreeFlags=0,b=N,N=_.child;N!==null;)_c(N,b),N=N.sibling;return L(Ss,Ss.current&1|2),Oi&&Ed(_,M.treeForkCount),_.child}b=b.sibling}M.tail!==null&&Y()>bI&&(_.flags|=128,K=!0,HE(M,!1),_.lanes=4194304)}else{if(!K)if(b=vS(te),b!==null){if(_.flags|=128,K=!0,b=b.updateQueue,_.updateQueue=b,pI(_,b),HE(M,!0),M.tail===null&&M.tailMode==="hidden"&&!te.alternate&&!Oi)return ds(_),null}else 2*Y()-M.renderingStartTime>bI&&N!==536870912&&(_.flags|=128,K=!0,HE(M,!1),_.lanes=4194304);M.isBackwards?(te.sibling=_.child,_.child=te):(b=M.last,b!==null?b.sibling=te:_.child=te,M.last=te)}return M.tail!==null?(b=M.tail,M.rendering=b,M.tail=b.sibling,M.renderingStartTime=Y(),b.sibling=null,N=Ss.current,L(Ss,K?N&1|2:N&1),Oi&&Ed(_,M.treeForkCount),b):(ds(_),null);case 22:case 23:return Su(_),Ec(),M=_.memoizedState!==null,b!==null?b.memoizedState!==null!==M&&(_.flags|=8192):M&&(_.flags|=8192),M?(N&536870912)!==0&&(_.flags&128)===0&&(ds(_),_.subtreeFlags&6&&(_.flags|=8192)):ds(_),N=_.updateQueue,N!==null&&pI(_,N.retryQueue),N=null,b!==null&&b.memoizedState!==null&&b.memoizedState.cachePool!==null&&(N=b.memoizedState.cachePool.pool),M=null,_.memoizedState!==null&&_.memoizedState.cachePool!==null&&(M=_.memoizedState.cachePool.pool),M!==N&&(_.flags|=2048),b!==null&&re(Bh),null;case 24:return N=null,b!==null&&(N=b.memoizedState.cache),_.memoizedState.cache!==N&&(_.flags|=2048),Td(Gs),ds(_),null;case 25:return null;case 30:return null}throw Error(a(156,_.tag))}function BXe(b,_){switch(Bb(_),_.tag){case 1:return b=_.flags,b&65536?(_.flags=b&-65537|128,_):null;case 3:return Td(Gs),ye(),b=_.flags,(b&65536)!==0&&(b&128)===0?(_.flags=b&-65537|128,_):null;case 26:case 27:case 5:return oe(_),null;case 31:if(_.memoizedState!==null){if(Su(_),_.alternate===null)throw Error(a(340));Mh()}return b=_.flags,b&65536?(_.flags=b&-65537|128,_):null;case 13:if(Su(_),b=_.memoizedState,b!==null&&b.dehydrated!==null){if(_.alternate===null)throw Error(a(340));Mh()}return b=_.flags,b&65536?(_.flags=b&-65537|128,_):null;case 19:return re(Ss),null;case 4:return ye(),null;case 10:return Td(_.type),null;case 22:case 23:return Su(_),Ec(),b!==null&&re(Bh),b=_.flags,b&65536?(_.flags=b&-65537|128,_):null;case 24:return Td(Gs),null;case 25:return null;default:return null}}function jle(b,_){switch(Bb(_),_.tag){case 3:Td(Gs),ye();break;case 26:case 27:case 5:oe(_);break;case 4:ye();break;case 31:_.memoizedState!==null&&Su(_);break;case 13:Su(_);break;case 19:re(Ss);break;case 10:Td(_.type);break;case 22:case 23:Su(_),Ec(),b!==null&&re(Bh);break;case 24:Td(Gs)}}function GE(b,_){try{var N=_.updateQueue,M=N!==null?N.lastEffect:null;if(M!==null){var K=M.next;N=K;do{if((N.tag&b)===b){M=void 0;var te=N.create,Ie=N.inst;M=te(),Ie.destroy=M}N=N.next}while(N!==K)}}catch(et){Po(_,_.return,et)}}function F0(b,_,N){try{var M=_.updateQueue,K=M!==null?M.lastEffect:null;if(K!==null){var te=K.next;M=te;do{if((M.tag&b)===b){var Ie=M.inst,et=Ie.destroy;if(et!==void 0){Ie.destroy=void 0,K=_;var Ot=N,pr=et;try{pr()}catch(Lr){Po(K,Ot,Lr)}}}M=M.next}while(M!==te)}}catch(Lr){Po(_,_.return,Lr)}}function Rle(b){var _=b.updateQueue;if(_!==null){var N=b.stateNode;try{lI(_,N)}catch(M){Po(b,b.return,M)}}}function Dle(b,_,N){N.props=Yb(b.type,b.memoizedProps),N.state=b.memoizedState;try{N.componentWillUnmount()}catch(M){Po(b,_,M)}}function qE(b,_){try{var N=b.ref;if(N!==null){switch(b.tag){case 26:case 27:case 5:var M=b.stateNode;break;case 30:M=b.stateNode;break;default:M=b.stateNode}typeof N=="function"?b.refCleanup=N(M):N.current=M}}catch(K){Po(b,_,K)}}function em(b,_){var N=b.ref,M=b.refCleanup;if(N!==null)if(typeof M=="function")try{M()}catch(K){Po(b,_,K)}finally{b.refCleanup=null,b=b.alternate,b!=null&&(b.refCleanup=null)}else if(typeof N=="function")try{N(null)}catch(K){Po(b,_,K)}else N.current=null}function Mle(b){var _=b.type,N=b.memoizedProps,M=b.stateNode;try{e:switch(_){case"button":case"input":case"select":case"textarea":N.autoFocus&&M.focus();break e;case"img":N.src?M.src=N.src:N.srcSet&&(M.srcset=N.srcSet)}}catch(K){Po(b,b.return,K)}}function nB(b,_,N){try{var M=b.stateNode;oZe(M,b.type,N,_),M[vn]=_}catch(K){Po(b,b.return,K)}}function Lle(b){return b.tag===5||b.tag===3||b.tag===26||b.tag===27&&q0(b.type)||b.tag===4}function aB(b){e:for(;;){for(;b.sibling===null;){if(b.return===null||Lle(b.return))return null;b=b.return}for(b.sibling.return=b.return,b=b.sibling;b.tag!==5&&b.tag!==6&&b.tag!==18;){if(b.tag===27&&q0(b.type)||b.flags&2||b.child===null||b.tag===4)continue e;b.child.return=b,b=b.child}if(!(b.flags&2))return b.stateNode}}function iB(b,_,N){var M=b.tag;if(M===5||M===6)b=b.stateNode,_?(N.nodeType===9?N.body:N.nodeName==="HTML"?N.ownerDocument.body:N).insertBefore(b,_):(_=N.nodeType===9?N.body:N.nodeName==="HTML"?N.ownerDocument.body:N,_.appendChild(b),N=N._reactRootContainer,N!=null||_.onclick!==null||(_.onclick=Qe));else if(M!==4&&(M===27&&q0(b.type)&&(N=b.stateNode,_=null),b=b.child,b!==null))for(iB(b,_,N),b=b.sibling;b!==null;)iB(b,_,N),b=b.sibling}function mI(b,_,N){var M=b.tag;if(M===5||M===6)b=b.stateNode,_?N.insertBefore(b,_):N.appendChild(b);else if(M!==4&&(M===27&&q0(b.type)&&(N=b.stateNode),b=b.child,b!==null))for(mI(b,_,N),b=b.sibling;b!==null;)mI(b,_,N),b=b.sibling}function Ble(b){var _=b.stateNode,N=b.memoizedProps;try{for(var M=b.type,K=_.attributes;K.length;)_.removeAttributeNode(K[0]);Tc(_,M,N),_[Xr]=b,_[vn]=N}catch(te){Po(b,b.return,te)}}var Pg=!1,El=!1,oB=!1,Fle=typeof WeakSet=="function"?WeakSet:Set,ac=null;function FXe(b,_){if(b=b.containerInfo,TB=MI,b=ys(b),bs(b)){if("selectionStart"in b)var N={start:b.selectionStart,end:b.selectionEnd};else e:{N=(N=b.ownerDocument)&&N.defaultView||window;var M=N.getSelection&&N.getSelection();if(M&&M.rangeCount!==0){N=M.anchorNode;var K=M.anchorOffset,te=M.focusNode;M=M.focusOffset;try{N.nodeType,te.nodeType}catch{N=null;break e}var Ie=0,et=-1,Ot=-1,pr=0,Lr=0,Hr=b,yr=null;t:for(;;){for(var Tr;Hr!==N||K!==0&&Hr.nodeType!==3||(et=Ie+K),Hr!==te||M!==0&&Hr.nodeType!==3||(Ot=Ie+M),Hr.nodeType===3&&(Ie+=Hr.nodeValue.length),(Tr=Hr.firstChild)!==null;)yr=Hr,Hr=Tr;for(;;){if(Hr===b)break t;if(yr===N&&++pr===K&&(et=Ie),yr===te&&++Lr===M&&(Ot=Ie),(Tr=Hr.nextSibling)!==null)break;Hr=yr,yr=Hr.parentNode}Hr=Tr}N=et===-1||Ot===-1?null:{start:et,end:Ot}}else N=null}N=N||{start:0,end:0}}else N=null;for(kB={focusedElem:b,selectionRange:N},MI=!1,ac=_;ac!==null;)if(_=ac,b=_.child,(_.subtreeFlags&1028)!==0&&b!==null)b.return=_,ac=b;else for(;ac!==null;){switch(_=ac,te=_.alternate,b=_.flags,_.tag){case 0:if((b&4)!==0&&(b=_.updateQueue,b=b!==null?b.events:null,b!==null))for(N=0;N title"))),Tc(te,M,N),te[Xr]=b,fa(te),M=te;break e;case"link":var Ie=Gce("link","href",K).get(M+(N.href||""));if(Ie){for(var et=0;etBo&&(Ie=Bo,Bo=za,za=Ie);var rr=yo(et,za),Vt=yo(et,Bo);if(rr&&Vt&&(Tr.rangeCount!==1||Tr.anchorNode!==rr.node||Tr.anchorOffset!==rr.offset||Tr.focusNode!==Vt.node||Tr.focusOffset!==Vt.offset)){var hr=Hr.createRange();hr.setStart(rr.node,rr.offset),Tr.removeAllRanges(),za>Bo?(Tr.addRange(hr),Tr.extend(Vt.node,Vt.offset)):(hr.setEnd(Vt.node,Vt.offset),Tr.addRange(hr))}}}}for(Hr=[],Tr=et;Tr=Tr.parentNode;)Tr.nodeType===1&&Hr.push({element:Tr,left:Tr.scrollLeft,top:Tr.scrollTop});for(typeof et.focus=="function"&&et.focus(),et=0;etN?32:N,H.T=null,N=hB,hB=null;var te=$0,Ie=Dg;if($l=0,SS=$0=null,Dg=0,(bo&6)!==0)throw Error(a(331));var et=bo;if(bo|=4,Xle(te.current),Wle(te,te.current,Ie,N),bo=et,QE(0,!1),ct&&typeof ct.onPostCommitFiberRoot=="function")try{ct.onPostCommitFiberRoot(Je,te)}catch{}return!0}finally{$.p=K,H.T=M,pce(b,_)}}function gce(b,_,N){_=yu(N,_),_=q4(b.stateNode,_,2),b=Jp(b,_,2),b!==null&&(Ar(b,2),tm(b))}function Po(b,_,N){if(b.tag===3)gce(b,b,N);else for(;_!==null;){if(_.tag===3){gce(_,b,N);break}else if(_.tag===1){var M=_.stateNode;if(typeof _.type.getDerivedStateFromError=="function"||typeof M.componentDidCatch=="function"&&(V0===null||!V0.has(M))){b=yu(N,b),N=vle(2),M=Jp(_,N,2),M!==null&&(yle(N,M,_,b),Ar(M,2),tm(M));break}}_=_.return}}function vB(b,_,N){var M=b.pingCache;if(M===null){M=b.pingCache=new VXe;var K=new Set;M.set(_,K)}else K=M.get(_),K===void 0&&(K=new Set,M.set(_,K));K.has(N)||(cB=!0,K.add(N),b=WXe.bind(null,b,_,N),_.then(b,b))}function WXe(b,_,N){var M=b.pingCache;M!==null&&M.delete(_),b.pingedLanes|=b.suspendedLanes&N,b.warmLanes&=~N,Xo===b&&(Hi&N)===N&&(qs===4||qs===3&&(Hi&62914560)===Hi&&300>Y()-yI?(bo&2)===0&&AS(b,0):uB|=N,wS===Hi&&(wS=0)),tm(b)}function vce(b,_){_===0&&(_=wt()),b=Wi(b,_),b!==null&&(Ar(b,_),tm(b))}function KXe(b){var _=b.memoizedState,N=0;_!==null&&(N=_.retryLane),vce(b,N)}function YXe(b,_){var N=0;switch(b.tag){case 31:case 13:var M=b.stateNode,K=b.memoizedState;K!==null&&(N=K.retryLane);break;case 19:M=b.stateNode;break;case 22:M=b.stateNode._retryCache;break;default:throw Error(a(314))}M!==null&&M.delete(_),vce(b,N)}function XXe(b,_){return Ye(b,_)}var EI=null,ES=null,yB=!1,CI=!1,bB=!1,G0=0;function tm(b){b!==ES&&b.next===null&&(ES===null?EI=ES=b:ES=ES.next=b),CI=!0,yB||(yB=!0,QXe())}function QE(b,_){if(!bB&&CI){bB=!0;do for(var N=!1,M=EI;M!==null;){if(b!==0){var K=M.pendingLanes;if(K===0)var te=0;else{var Ie=M.suspendedLanes,et=M.pingedLanes;te=(1<<31-It(42|b)+1)-1,te&=K&~(Ie&~et),te=te&201326741?te&201326741|1:te?te|2:0}te!==0&&(N=!0,wce(M,te))}else te=Hi,te=Pe(M,M===Xo?te:0,M.cancelPendingCommit!==null||M.timeoutHandle!==-1),(te&3)===0||qe(M,te)||(N=!0,wce(M,te));M=M.next}while(N);bB=!1}}function ZXe(){yce()}function yce(){CI=yB=!1;var b=0;G0!==0&&lZe()&&(b=G0);for(var _=Y(),N=null,M=EI;M!==null;){var K=M.next,te=bce(M,_);te===0?(M.next=null,N===null?EI=K:N.next=K,K===null&&(ES=N)):(N=M,(b!==0||(te&3)!==0)&&(CI=!0)),M=K}$l!==0&&$l!==5||QE(b),G0!==0&&(G0=0)}function bce(b,_){for(var N=b.suspendedLanes,M=b.pingedLanes,K=b.expirationTimes,te=b.pendingLanes&-62914561;0et)break;var Lr=Ot.transferSize,Hr=Ot.initiatorType;Lr&&Nce(Hr)&&(Ot=Ot.responseEnd,Ie+=Lr*(Ot"u"?null:document;function zce(b,_,N){var M=CS;if(M&&typeof _=="string"&&_){var K=Dt(_);K='link[rel="'+b+'"][href="'+K+'"]',typeof N=="string"&&(K+='[crossorigin="'+N+'"]'),Uce.has(K)||(Uce.add(K),b={rel:b,crossOrigin:N,href:_},M.querySelector(K)===null&&(_=M.createElement("link"),Tc(_,"link",b),fa(_),M.head.appendChild(_)))}}function vZe(b){Mg.D(b),zce("dns-prefetch",b,null)}function yZe(b,_){Mg.C(b,_),zce("preconnect",b,_)}function bZe(b,_,N){Mg.L(b,_,N);var M=CS;if(M&&b&&_){var K='link[rel="preload"][as="'+Dt(_)+'"]';_==="image"&&N&&N.imageSrcSet?(K+='[imagesrcset="'+Dt(N.imageSrcSet)+'"]',typeof N.imageSizes=="string"&&(K+='[imagesizes="'+Dt(N.imageSizes)+'"]')):K+='[href="'+Dt(b)+'"]';var te=K;switch(_){case"style":te=TS(b);break;case"script":te=kS(b)}Od.has(te)||(b=d({rel:"preload",href:_==="image"&&N&&N.imageSrcSet?void 0:b,as:_},N),Od.set(te,b),M.querySelector(K)!==null||_==="style"&&M.querySelector(rC(te))||_==="script"&&M.querySelector(nC(te))||(_=M.createElement("link"),Tc(_,"link",b),fa(_),M.head.appendChild(_)))}}function xZe(b,_){Mg.m(b,_);var N=CS;if(N&&b){var M=_&&typeof _.as=="string"?_.as:"script",K='link[rel="modulepreload"][as="'+Dt(M)+'"][href="'+Dt(b)+'"]',te=K;switch(M){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":te=kS(b)}if(!Od.has(te)&&(b=d({rel:"modulepreload",href:b},_),Od.set(te,b),N.querySelector(K)===null)){switch(M){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(N.querySelector(nC(te)))return}M=N.createElement("link"),Tc(M,"link",b),fa(M),N.head.appendChild(M)}}}function wZe(b,_,N){Mg.S(b,_,N);var M=CS;if(M&&b){var K=Xa(M).hoistableStyles,te=TS(b);_=_||"default";var Ie=K.get(te);if(!Ie){var et={loading:0,preload:null};if(Ie=M.querySelector(rC(te)))et.loading=5;else{b=d({rel:"stylesheet",href:b,"data-precedence":_},N),(N=Od.get(te))&&DB(b,N);var Ot=Ie=M.createElement("link");fa(Ot),Tc(Ot,"link",b),Ot._p=new Promise(function(pr,Lr){Ot.onload=pr,Ot.onerror=Lr}),Ot.addEventListener("load",function(){et.loading|=1}),Ot.addEventListener("error",function(){et.loading|=2}),et.loading|=4,II(Ie,_,M)}Ie={type:"stylesheet",instance:Ie,count:1,state:et},K.set(te,Ie)}}}function SZe(b,_){Mg.X(b,_);var N=CS;if(N&&b){var M=Xa(N).hoistableScripts,K=kS(b),te=M.get(K);te||(te=N.querySelector(nC(K)),te||(b=d({src:b,async:!0},_),(_=Od.get(K))&&MB(b,_),te=N.createElement("script"),fa(te),Tc(te,"link",b),N.head.appendChild(te)),te={type:"script",instance:te,count:1,state:null},M.set(K,te))}}function AZe(b,_){Mg.M(b,_);var N=CS;if(N&&b){var M=Xa(N).hoistableScripts,K=kS(b),te=M.get(K);te||(te=N.querySelector(nC(K)),te||(b=d({src:b,async:!0,type:"module"},_),(_=Od.get(K))&&MB(b,_),te=N.createElement("script"),fa(te),Tc(te,"link",b),N.head.appendChild(te)),te={type:"script",instance:te,count:1,state:null},M.set(K,te))}}function Vce(b,_,N,M){var K=(K=se.current)?PI(K):null;if(!K)throw Error(a(446));switch(b){case"meta":case"title":return null;case"style":return typeof N.precedence=="string"&&typeof N.href=="string"?(_=TS(N.href),N=Xa(K).hoistableStyles,M=N.get(_),M||(M={type:"style",instance:null,count:0,state:null},N.set(_,M)),M):{type:"void",instance:null,count:0,state:null};case"link":if(N.rel==="stylesheet"&&typeof N.href=="string"&&typeof N.precedence=="string"){b=TS(N.href);var te=Xa(K).hoistableStyles,Ie=te.get(b);if(Ie||(K=K.ownerDocument||K,Ie={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},te.set(b,Ie),(te=K.querySelector(rC(b)))&&!te._p&&(Ie.instance=te,Ie.state.loading=5),Od.has(b)||(N={rel:"preload",as:"style",href:N.href,crossOrigin:N.crossOrigin,integrity:N.integrity,media:N.media,hrefLang:N.hrefLang,referrerPolicy:N.referrerPolicy},Od.set(b,N),te||_Ze(K,b,N,Ie.state))),_&&M===null)throw Error(a(528,""));return Ie}if(_&&M!==null)throw Error(a(529,""));return null;case"script":return _=N.async,N=N.src,typeof N=="string"&&_&&typeof _!="function"&&typeof _!="symbol"?(_=kS(N),N=Xa(K).hoistableScripts,M=N.get(_),M||(M={type:"script",instance:null,count:0,state:null},N.set(_,M)),M):{type:"void",instance:null,count:0,state:null};default:throw Error(a(444,b))}}function TS(b){return'href="'+Dt(b)+'"'}function rC(b){return'link[rel="stylesheet"]['+b+"]"}function $ce(b){return d({},b,{"data-precedence":b.precedence,precedence:null})}function _Ze(b,_,N,M){b.querySelector('link[rel="preload"][as="style"]['+_+"]")?M.loading=1:(_=b.createElement("link"),M.preload=_,_.addEventListener("load",function(){return M.loading|=1}),_.addEventListener("error",function(){return M.loading|=2}),Tc(_,"link",N),fa(_),b.head.appendChild(_))}function kS(b){return'[src="'+Dt(b)+'"]'}function nC(b){return"script[async]"+b}function Hce(b,_,N){if(_.count++,_.instance===null)switch(_.type){case"style":var M=b.querySelector('style[data-href~="'+Dt(N.href)+'"]');if(M)return _.instance=M,fa(M),M;var K=d({},N,{"data-href":N.href,"data-precedence":N.precedence,href:null,precedence:null});return M=(b.ownerDocument||b).createElement("style"),fa(M),Tc(M,"style",K),II(M,N.precedence,b),_.instance=M;case"stylesheet":K=TS(N.href);var te=b.querySelector(rC(K));if(te)return _.state.loading|=4,_.instance=te,fa(te),te;M=$ce(N),(K=Od.get(K))&&DB(M,K),te=(b.ownerDocument||b).createElement("link"),fa(te);var Ie=te;return Ie._p=new Promise(function(et,Ot){Ie.onload=et,Ie.onerror=Ot}),Tc(te,"link",M),_.state.loading|=4,II(te,N.precedence,b),_.instance=te;case"script":return te=kS(N.src),(K=b.querySelector(nC(te)))?(_.instance=K,fa(K),K):(M=N,(K=Od.get(te))&&(M=d({},N),MB(M,K)),b=b.ownerDocument||b,K=b.createElement("script"),fa(K),Tc(K,"link",M),b.head.appendChild(K),_.instance=K);case"void":return null;default:throw Error(a(443,_.type))}else _.type==="stylesheet"&&(_.state.loading&4)===0&&(M=_.instance,_.state.loading|=4,II(M,N.precedence,b));return _.instance}function II(b,_,N){for(var M=N.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),K=M.length?M[M.length-1]:null,te=K,Ie=0;Ie title"):null)}function EZe(b,_,N){if(N===1||_.itemProp!=null)return!1;switch(b){case"meta":case"title":return!0;case"style":if(typeof _.precedence!="string"||typeof _.href!="string"||_.href==="")break;return!0;case"link":if(typeof _.rel!="string"||typeof _.href!="string"||_.href===""||_.onLoad||_.onError)break;return _.rel==="stylesheet"?(b=_.disabled,typeof _.precedence=="string"&&b==null):!0;case"script":if(_.async&&typeof _.async!="function"&&typeof _.async!="symbol"&&!_.onLoad&&!_.onError&&_.src&&typeof _.src=="string")return!0}return!1}function Wce(b){return!(b.type==="stylesheet"&&(b.state.loading&3)===0)}function CZe(b,_,N,M){if(N.type==="stylesheet"&&(typeof M.media!="string"||matchMedia(M.media).matches!==!1)&&(N.state.loading&4)===0){if(N.instance===null){var K=TS(M.href),te=_.querySelector(rC(K));if(te){_=te._p,_!==null&&typeof _=="object"&&typeof _.then=="function"&&(b.count++,b=jI.bind(b),_.then(b,b)),N.state.loading|=4,N.instance=te,fa(te);return}te=_.ownerDocument||_,M=$ce(M),(K=Od.get(K))&&DB(M,K),te=te.createElement("link"),fa(te);var Ie=te;Ie._p=new Promise(function(et,Ot){Ie.onload=et,Ie.onerror=Ot}),Tc(te,"link",M),N.instance=te}b.stylesheets===null&&(b.stylesheets=new Map),b.stylesheets.set(N,_),(_=N.state.preload)&&(N.state.loading&3)===0&&(b.count++,N=jI.bind(b),_.addEventListener("load",N),_.addEventListener("error",N))}}var LB=0;function TZe(b,_){return b.stylesheets&&b.count===0&&DI(b,b.stylesheets),0LB?50:800)+_);return b.unsuspend=N,function(){b.unsuspend=null,clearTimeout(M),clearTimeout(K)}}:null}function jI(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)DI(this,this.stylesheets);else if(this.unsuspend){var b=this.unsuspend;this.unsuspend=null,b()}}}var RI=null;function DI(b,_){b.stylesheets=null,b.unsuspend!==null&&(b.count++,RI=new Map,_.forEach(kZe,b),RI=null,jI.call(b))}function kZe(b,_){if(!(_.state.loading&4)){var N=RI.get(b);if(N)var M=N.get(null);else{N=new Map,RI.set(b,N);for(var K=b.querySelectorAll("link[data-precedence],style[data-precedence]"),te=0;te"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),qB.exports=$Ze(),qB.exports}var GZe=HZe();var pIe=t=>{throw TypeError(t)},qZe=(t,e,r)=>e.has(t)||pIe("Cannot "+r),XB=(t,e,r)=>(qZe(t,e,"read from private field"),r?r.call(t):e.get(t)),WZe=(t,e,r)=>e.has(t)?pIe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),vue="popstate";function KZe(t={}){function e(n,a){let{pathname:i,search:o,hash:s}=n.location;return Ak("",{pathname:i,search:o,hash:s},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function r(n,a){return typeof a=="string"?a:Jm(a)}return XZe(e,r,null,t)}function Ni(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function zs(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function YZe(){return Math.random().toString(36).substring(2,10)}function yue(t,e){return{usr:t.state,key:t.key,idx:e}}function Ak(t,e,r=null,n){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?xb(e):e,state:r,key:e&&e.key||n||YZe()}}function Jm({pathname:t="/",search:e="",hash:r=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function xb(t){let e={};if(t){let r=t.indexOf("#");r>=0&&(e.hash=t.substring(r),t=t.substring(0,r));let n=t.indexOf("?");n>=0&&(e.search=t.substring(n),t=t.substring(0,n)),t&&(e.pathname=t)}return e}function XZe(t,e,r,n={}){let{window:a=document.defaultView,v5Compat:i=!1}=n,o=a.history,s="POP",l=null,c=u();c==null&&(c=0,o.replaceState({...o.state,idx:c},""));function u(){return(o.state||{idx:null}).idx}function f(){s="POP";let v=u(),y=v==null?null:v-c;c=v,l&&l({action:s,location:m.location,delta:y})}function d(v,y){s="PUSH";let w=Ak(m.location,v,y);c=u()+1;let S=yue(w,c),A=m.createHref(w);try{o.pushState(S,"",A)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;a.location.assign(A)}i&&l&&l({action:s,location:m.location,delta:1})}function h(v,y){s="REPLACE";let w=Ak(m.location,v,y);c=u();let S=yue(w,c),A=m.createHref(w);o.replaceState(S,"",A),i&&l&&l({action:s,location:m.location,delta:0})}function p(v){return mIe(v)}let m={get action(){return s},get location(){return t(a,o)},listen(v){if(l)throw new Error("A history only accepts one active listener");return a.addEventListener(vue,f),l=v,()=>{a.removeEventListener(vue,f),l=null}},createHref(v){return e(a,v)},createURL:p,encodeLocation(v){let y=p(v);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:d,replace:h,go(v){return o.go(v)}};return m}function mIe(t,e=!1){let r="http://localhost";typeof window<"u"&&(r=window.location.origin!=="null"?window.location.origin:window.location.href),Ni(r,"No window.location.(origin|href) available to create URL");let n=typeof t=="string"?t:Jm(t);return n=n.replace(/ $/,"%20"),!e&&n.startsWith("//")&&(n=r+n),new URL(n,r)}var yT,bue=class{constructor(t){if(WZe(this,yT,new Map),t)for(let[e,r]of t)this.set(e,r)}get(t){if(XB(this,yT).has(t))return XB(this,yT).get(t);if(t.defaultValue!==void 0)return t.defaultValue;throw new Error("No value found for context")}set(t,e){XB(this,yT).set(t,e)}};yT=new WeakMap;var ZZe=new Set(["lazy","caseSensitive","path","id","index","children"]);function QZe(t){return ZZe.has(t)}var JZe=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function eQe(t){return JZe.has(t)}function tQe(t){return t.index===!0}function _k(t,e,r=[],n={},a=!1){return t.map((i,o)=>{let s=[...r,String(o)],l=typeof i.id=="string"?i.id:s.join("-");if(Ni(i.index!==!0||!i.children,"Cannot specify children on an index route"),Ni(a||!n[l],`Found a route id collision on id "${l}". Route id's must be globally unique within Data Router usages`),tQe(i)){let c={...i,id:l};return n[l]=xue(c,e(c)),c}else{let c={...i,id:l,children:void 0};return n[l]=xue(c,e(c)),i.children&&(c.children=_k(i.children,e,s,n,a)),c}})}function xue(t,e){return Object.assign(t,{...e,...typeof e.lazy=="object"&&e.lazy!=null?{lazy:{...t.lazy,...e.lazy}}:{}})}function Cy(t,e,r="/"){return bT(t,e,r,!1)}function bT(t,e,r,n){let a=typeof e=="string"?xb(e):e,i=mh(a.pathname||"/",r);if(i==null)return null;let o=gIe(t);nQe(o);let s=null;for(let l=0;s==null&&l{let u={relativePath:c===void 0?o.path||"":c,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(n)&&l)return;Ni(u.relativePath.startsWith(n),`Absolute route path "${u.relativePath}" nested under path "${n}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(n.length)}let f=Um([n,u.relativePath]),d=r.concat(u);o.children&&o.children.length>0&&(Ni(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),gIe(o.children,e,d,f,l)),!(o.path==null&&!o.index)&&e.push({path:f,score:uQe(f,o.index),routesMeta:d})};return t.forEach((o,s)=>{if(o.path===""||!o.path?.includes("?"))i(o,s);else for(let l of vIe(o.path))i(o,s,!0,l)}),e}function vIe(t){let e=t.split("/");if(e.length===0)return[];let[r,...n]=e,a=r.endsWith("?"),i=r.replace(/\?$/,"");if(n.length===0)return a?[i,""]:[i];let o=vIe(n.join("/")),s=[];return s.push(...o.map(l=>l===""?i:[i,l].join("/"))),a&&s.push(...o),s.map(l=>t.startsWith("/")&&l===""?"/":l)}function nQe(t){t.sort((e,r)=>e.score!==r.score?r.score-e.score:fQe(e.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}var aQe=/^:[\w-]+$/,iQe=3,oQe=2,sQe=1,lQe=10,cQe=-2,wue=t=>t==="*";function uQe(t,e){let r=t.split("/"),n=r.length;return r.some(wue)&&(n+=cQe),e&&(n+=oQe),r.filter(a=>!wue(a)).reduce((a,i)=>a+(aQe.test(i)?iQe:i===""?sQe:lQe),n)}function fQe(t,e){return t.length===e.length&&t.slice(0,-1).every((n,a)=>n===e[a])?t[t.length-1]-e[e.length-1]:0}function dQe(t,e,r=!1){let{routesMeta:n}=t,a={},i="/",o=[];for(let s=0;s{if(u==="*"){let p=s[d]||"";o=i.slice(0,i.length-p.length).replace(/(.)\/+$/,"$1")}const h=s[d];return f&&!h?c[u]=void 0:c[u]=(h||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:o,pattern:t}}function hQe(t,e=!1,r=!0){zs(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let n=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,s,l)=>(n.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(n.push({paramName:"*"}),a+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":t!==""&&t!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,e?void 0:"i"),n]}function pQe(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return zs(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function mh(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let r=e.endsWith("/")?e.length-1:e.length,n=t.charAt(r);return n&&n!=="/"?null:t.slice(r)||"/"}function mQe({basename:t,pathname:e}){return e==="/"?t:Um([t,e])}var yIe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,SM=t=>yIe.test(t);function gQe(t,e="/"){let{pathname:r,search:n="",hash:a=""}=typeof t=="string"?xb(t):t,i;if(r)if(SM(r))i=r;else{if(r.includes("//")){let o=r;r=r.replace(/\/\/+/g,"/"),zs(!1,`Pathnames cannot have embedded double slashes - normalizing ${o} -> ${r}`)}r.startsWith("/")?i=Sue(r.substring(1),"/"):i=Sue(r,e)}else i=e;return{pathname:i,search:yQe(n),hash:bQe(a)}}function Sue(t,e){let r=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(a=>{a===".."?r.length>1&&r.pop():a!=="."&&r.push(a)}),r.length>1?r.join("/"):"/"}function ZB(t,e,r,n){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(n)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bIe(t){return t.filter((e,r)=>r===0||e.route.path&&e.route.path.length>0)}function AM(t){let e=bIe(t);return e.map((r,n)=>n===e.length-1?r.pathname:r.pathnameBase)}function _M(t,e,r,n=!1){let a;typeof t=="string"?a=xb(t):(a={...t},Ni(!a.pathname||!a.pathname.includes("?"),ZB("?","pathname","search",a)),Ni(!a.pathname||!a.pathname.includes("#"),ZB("#","pathname","hash",a)),Ni(!a.search||!a.search.includes("#"),ZB("#","search","hash",a)));let i=t===""||a.pathname==="",o=i?"/":a.pathname,s;if(o==null)s=r;else{let f=e.length-1;if(!n&&o.startsWith("..")){let d=o.split("/");for(;d[0]==="..";)d.shift(),f-=1;a.pathname=d.join("/")}s=f>=0?e[f]:"/"}let l=gQe(a,s),c=o&&o!=="/"&&o.endsWith("/"),u=(i||o===".")&&r.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var Um=t=>t.join("/").replace(/\/\/+/g,"/"),vQe=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),yQe=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,bQe=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,yN=class{constructor(t,e,r,n=!1){this.status=t,this.statusText=e||"",this.internal=n,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function Ek(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function bN(t){return t.map(e=>e.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var xIe=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function wIe(t,e){let r=t;if(typeof r!="string"||!yIe.test(r))return{absoluteURL:void 0,isExternal:!1,to:r};let n=r,a=!1;if(xIe)try{let i=new URL(window.location.href),o=r.startsWith("//")?new URL(i.protocol+r):new URL(r),s=mh(o.pathname,e);o.origin===i.origin&&s!=null?r=s+o.search+o.hash:a=!0}catch{zs(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:n,isExternal:a,to:r}}var Iy=Symbol("Uninstrumented");function xQe(t,e){let r={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};t.forEach(a=>a({id:e.id,index:e.index,path:e.path,instrument(i){let o=Object.keys(r);for(let s of o)i[s]&&r[s].push(i[s])}}));let n={};if(typeof e.lazy=="function"&&r.lazy.length>0){let a=O2(r.lazy,e.lazy,()=>{});a&&(n.lazy=a)}if(typeof e.lazy=="object"){let a=e.lazy;["middleware","loader","action"].forEach(i=>{let o=a[i],s=r[`lazy.${i}`];if(typeof o=="function"&&s.length>0){let l=O2(s,o,()=>{});l&&(n.lazy=Object.assign(n.lazy||{},{[i]:l}))}})}return["loader","action"].forEach(a=>{let i=e[a];if(typeof i=="function"&&r[a].length>0){let o=i[Iy]??i,s=O2(r[a],o,(...l)=>Aue(l[0]));s&&(a==="loader"&&o.hydrate===!0&&(s.hydrate=!0),s[Iy]=o,n[a]=s)}}),e.middleware&&e.middleware.length>0&&r.middleware.length>0&&(n.middleware=e.middleware.map(a=>{let i=a[Iy]??a,o=O2(r.middleware,i,(...s)=>Aue(s[0]));return o?(o[Iy]=i,o):a})),n}function wQe(t,e){let r={navigate:[],fetch:[]};if(e.forEach(n=>n({instrument(a){let i=Object.keys(a);for(let o of i)a[o]&&r[o].push(a[o])}})),r.navigate.length>0){let n=t.navigate[Iy]??t.navigate,a=O2(r.navigate,n,(...i)=>{let[o,s]=i;return{to:typeof o=="number"||typeof o=="string"?o:o?Jm(o):".",..._ue(t,s??{})}});a&&(a[Iy]=n,t.navigate=a)}if(r.fetch.length>0){let n=t.fetch[Iy]??t.fetch,a=O2(r.fetch,n,(...i)=>{let[o,,s,l]=i;return{href:s??".",fetcherKey:o,..._ue(t,l??{})}});a&&(a[Iy]=n,t.fetch=a)}return t}function O2(t,e,r){return t.length===0?null:async(...n)=>{let a=await SIe(t,r(...n),()=>e(...n),t.length-1);if(a.type==="error")throw a.value;return a.value}}async function SIe(t,e,r,n){let a=t[n],i;if(a){let o,s=async()=>(o?console.error("You cannot call instrumented handlers more than once"):o=SIe(t,e,r,n-1),i=await o,Ni(i,"Expected a result"),i.type==="error"&&i.value instanceof Error?{status:"error",error:i.value}:{status:"success",error:void 0});try{await a(s,e)}catch(l){console.error("An instrumentation function threw an error:",l)}o||await s(),await o}else try{i={type:"success",value:await r()}}catch(o){i={type:"error",value:o}}return i||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function Aue(t){let{request:e,context:r,params:n,unstable_pattern:a}=t;return{request:SQe(e),params:{...n},unstable_pattern:a,context:AQe(r)}}function _ue(t,e){return{currentUrl:Jm(t.state.location),..."formMethod"in e?{formMethod:e.formMethod}:{},..."formEncType"in e?{formEncType:e.formEncType}:{},..."formData"in e?{formData:e.formData}:{},..."body"in e?{body:e.body}:{}}}function SQe(t){return{method:t.method,url:t.url,headers:{get:(...e)=>t.headers.get(...e)}}}function AQe(t){if(EQe(t)){let e={...t};return Object.freeze(e),e}else return{get:e=>t.get(e)}}var _Qe=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function EQe(t){if(t===null||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null||Object.getOwnPropertyNames(e).sort().join("\0")===_Qe}var AIe=["POST","PUT","PATCH","DELETE"],CQe=new Set(AIe),TQe=["GET",...AIe],kQe=new Set(TQe),_Ie=new Set([301,302,303,307,308]),NQe=new Set([307,308]),QB={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},PQe={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},uC={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},IQe=t=>({hasErrorBoundary:!!t.hasErrorBoundary}),EIe="remix-router-transitions",CIe=Symbol("ResetLoaderData");function OQe(t){const e=t.window?t.window:typeof window<"u"?window:void 0,r=typeof e<"u"&&typeof e.document<"u"&&typeof e.document.createElement<"u";Ni(t.routes.length>0,"You must provide a non-empty routes array to createRouter");let n=t.hydrationRouteProperties||[],a=t.mapRouteProperties||IQe,i=a;if(t.unstable_instrumentations){let Ke=t.unstable_instrumentations;i=rt=>({...a(rt),...xQe(Ke.map(Ct=>Ct.route).filter(Boolean),rt)})}let o={},s=_k(t.routes,i,void 0,o),l,c=t.basename||"/";c.startsWith("/")||(c=`/${c}`);let u=t.dataStrategy||LQe,f={...t.future},d=null,h=new Set,p=null,m=null,v=null,y=t.hydrationData!=null,w=Cy(s,t.history.location,c),S=!1,A=null,E;if(w==null&&!t.patchRoutesOnNavigation){let Ke=Zd(404,{pathname:t.history.location.pathname}),{matches:rt,route:Ct}=$I(s);E=!0,w=rt,A={[Ct.id]:Ke}}else if(w&&!t.hydrationData&&yt(w,s,t.history.location.pathname).active&&(w=null),w)if(w.some(Ke=>Ke.route.lazy))E=!1;else if(!w.some(Ke=>pee(Ke.route)))E=!0;else{let Ke=t.hydrationData?t.hydrationData.loaderData:null,rt=t.hydrationData?t.hydrationData.errors:null;if(rt){let Ct=w.findIndex(Gt=>rt[Gt.route.id]!==void 0);E=w.slice(0,Ct+1).every(Gt=>!MK(Gt.route,Ke,rt))}else E=w.every(Ct=>!MK(Ct.route,Ke,rt))}else{E=!1,w=[];let Ke=yt(null,s,t.history.location.pathname);Ke.active&&Ke.matches&&(S=!0,w=Ke.matches)}let T,C={historyAction:t.history.action,location:t.history.location,matches:w,initialized:E,navigation:QB,restoreScrollPosition:t.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:t.hydrationData&&t.hydrationData.loaderData||{},actionData:t.hydrationData&&t.hydrationData.actionData||null,errors:t.hydrationData&&t.hydrationData.errors||A,fetchers:new Map,blockers:new Map},k="POP",P=null,I=!1,O,j=!1,B=new Map,V=null,F=!1,z=!1,H=new Set,$=new Map,Q=0,ue=-1,fe=new Map,W=new Set,re=new Map,L=new Map,q=new Set,Z=new Map,se,xe=null;function J(){if(d=t.history.listen(({action:Ke,location:rt,delta:Ct})=>{if(se){se(),se=void 0;return}zs(Z.size===0||Ct!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Gt=Ge({currentLocation:C.location,nextLocation:rt,historyAction:Ke});if(Gt&&Ct!=null){let jt=new Promise(Or=>{se=Or});t.history.go(Ct*-1),Oe(Gt,{state:"blocked",location:rt,proceed(){Oe(Gt,{state:"proceeding",proceed:void 0,reset:void 0,location:rt}),jt.then(()=>t.history.go(Ct))},reset(){let Or=new Map(C.blockers);Or.set(Gt,uC),oe({blockers:Or})}}),P?.resolve(),P=null;return}return _e(Ke,rt)}),r){tJe(e,B);let Ke=()=>rJe(e,B);e.addEventListener("pagehide",Ke),V=()=>e.removeEventListener("pagehide",Ke)}return C.initialized||_e("POP",C.location,{initialHydration:!0}),T}function ye(){d&&d(),V&&V(),h.clear(),O&&O.abort(),C.fetchers.forEach((Ke,rt)=>ve(rt)),C.blockers.forEach((Ke,rt)=>de(rt))}function ae(Ke){return h.add(Ke),()=>h.delete(Ke)}function oe(Ke,rt={}){Ke.matches&&(Ke.matches=Ke.matches.map(jt=>{let Or=o[jt.route.id],Qr=jt.route;return Qr.element!==Or.element||Qr.errorElement!==Or.errorElement||Qr.hydrateFallbackElement!==Or.hydrateFallbackElement?{...jt,route:Or}:jt})),C={...C,...Ke};let Ct=[],Gt=[];C.fetchers.forEach((jt,Or)=>{jt.state==="idle"&&(q.has(Or)?Ct.push(Or):Gt.push(Or))}),q.forEach(jt=>{!C.fetchers.has(jt)&&!$.has(jt)&&Ct.push(jt)}),[...h].forEach(jt=>jt(C,{deletedFetchers:Ct,newErrors:Ke.errors??null,viewTransitionOpts:rt.viewTransitionOpts,flushSync:rt.flushSync===!0})),Ct.forEach(jt=>ve(jt)),Gt.forEach(jt=>C.fetchers.delete(jt))}function pe(Ke,rt,{flushSync:Ct}={}){let Gt=C.actionData!=null&&C.navigation.formMethod!=null&&su(C.navigation.formMethod)&&C.navigation.state==="loading"&&Ke.state?._isRedirect!==!0,jt;rt.actionData?Object.keys(rt.actionData).length>0?jt=rt.actionData:jt=null:Gt?jt=C.actionData:jt=null;let Or=rt.loaderData?Rue(C.loaderData,rt.loaderData,rt.matches||[],rt.errors):C.loaderData,Qr=C.blockers;Qr.size>0&&(Qr=new Map(Qr),Qr.forEach((Bn,kn)=>Qr.set(kn,uC)));let on=F?!1:qe(Ke,rt.matches||C.matches),Xr=I===!0||C.navigation.formMethod!=null&&su(C.navigation.formMethod)&&Ke.state?._isRedirect!==!0;l&&(s=l,l=void 0),F||k==="POP"||(k==="PUSH"?t.history.push(Ke,Ke.state):k==="REPLACE"&&t.history.replace(Ke,Ke.state));let vn;if(k==="POP"){let Bn=B.get(C.location.pathname);Bn&&Bn.has(Ke.pathname)?vn={currentLocation:C.location,nextLocation:Ke}:B.has(Ke.pathname)&&(vn={currentLocation:Ke,nextLocation:C.location})}else if(j){let Bn=B.get(C.location.pathname);Bn?Bn.add(Ke.pathname):(Bn=new Set([Ke.pathname]),B.set(C.location.pathname,Bn)),vn={currentLocation:C.location,nextLocation:Ke}}oe({...rt,actionData:jt,loaderData:Or,historyAction:k,location:Ke,initialized:!0,navigation:QB,revalidation:"idle",restoreScrollPosition:on,preventScrollReset:Xr,blockers:Qr},{viewTransitionOpts:vn,flushSync:Ct===!0}),k="POP",I=!1,j=!1,F=!1,z=!1,P?.resolve(),P=null,xe?.resolve(),xe=null}async function be(Ke,rt){if(P?.resolve(),P=null,typeof Ke=="number"){P||(P=Bue());let ma=P.promise;return t.history.go(Ke),ma}let Ct=DK(C.location,C.matches,c,Ke,rt?.fromRouteId,rt?.relative),{path:Gt,submission:jt,error:Or}=Eue(!1,Ct,rt),Qr=C.location,on=Ak(C.location,Gt,rt&&rt.state);on={...on,...t.history.encodeLocation(on)};let Xr=rt&&rt.replace!=null?rt.replace:void 0,vn="PUSH";Xr===!0?vn="REPLACE":Xr===!1||jt!=null&&su(jt.formMethod)&&jt.formAction===C.location.pathname+C.location.search&&(vn="REPLACE");let Bn=rt&&"preventScrollReset"in rt?rt.preventScrollReset===!0:void 0,kn=(rt&&rt.flushSync)===!0,_a=Ge({currentLocation:Qr,nextLocation:on,historyAction:vn});if(_a){Oe(_a,{state:"blocked",location:on,proceed(){Oe(_a,{state:"proceeding",proceed:void 0,reset:void 0,location:on}),be(Ke,rt)},reset(){let ma=new Map(C.blockers);ma.set(_a,uC),oe({blockers:ma})}});return}await _e(vn,on,{submission:jt,pendingError:Or,preventScrollReset:Bn,replace:rt&&rt.replace,enableViewTransition:rt&&rt.viewTransition,flushSync:kn,callSiteDefaultShouldRevalidate:rt&&rt.unstable_defaultShouldRevalidate})}function Se(){xe||(xe=Bue()),me(),oe({revalidation:"loading"});let Ke=xe.promise;return C.navigation.state==="submitting"?Ke:C.navigation.state==="idle"?(_e(C.historyAction,C.location,{startUninterruptedRevalidation:!0}),Ke):(_e(k||C.historyAction,C.navigation.location,{overrideNavigation:C.navigation,enableViewTransition:j===!0}),Ke)}async function _e(Ke,rt,Ct){O&&O.abort(),O=null,k=Ke,F=(Ct&&Ct.startUninterruptedRevalidation)===!0,Pe(C.location,C.matches),I=(Ct&&Ct.preventScrollReset)===!0,j=(Ct&&Ct.enableViewTransition)===!0;let Gt=l||s,jt=Ct&&Ct.overrideNavigation,Or=Ct?.initialHydration&&C.matches&&C.matches.length>0&&!S?C.matches:Cy(Gt,rt,c),Qr=(Ct&&Ct.flushSync)===!0;if(Or&&C.initialized&&!z&&GQe(C.location,rt)&&!(Ct&&Ct.submission&&su(Ct.submission.formMethod))){pe(rt,{matches:Or},{flushSync:Qr});return}let on=yt(Or,Gt,rt.pathname);if(on.active&&on.matches&&(Or=on.matches),!Or){let{error:Pn,notFoundMatches:ya,route:ga}=$e(rt.pathname);pe(rt,{matches:ya,loaderData:{},errors:{[ga.id]:Pn}},{flushSync:Qr});return}O=new AbortController;let Xr=A2(t.history,rt,O.signal,Ct&&Ct.submission),vn=t.getContext?await t.getContext():new bue,Bn;if(Ct&&Ct.pendingError)Bn=[Ty(Or).route.id,{type:"error",error:Ct.pendingError}];else if(Ct&&Ct.submission&&su(Ct.submission.formMethod)){let Pn=await Le(Xr,rt,Ct.submission,Or,vn,on.active,Ct&&Ct.initialHydration===!0,{replace:Ct.replace,flushSync:Qr});if(Pn.shortCircuited)return;if(Pn.pendingActionResult){let[ya,ga]=Pn.pendingActionResult;if(qf(ga)&&Ek(ga.error)&&ga.error.status===404){O=null,pe(rt,{matches:Pn.matches,loaderData:{},errors:{[ya]:ga.error}});return}}Or=Pn.matches||Or,Bn=Pn.pendingActionResult,jt=JB(rt,Ct.submission),Qr=!1,on.active=!1,Xr=A2(t.history,Xr.url,Xr.signal)}let{shortCircuited:kn,matches:_a,loaderData:ma,errors:wa}=await ze(Xr,rt,Or,vn,on.active,jt,Ct&&Ct.submission,Ct&&Ct.fetcherSubmission,Ct&&Ct.replace,Ct&&Ct.initialHydration===!0,Qr,Bn,Ct&&Ct.callSiteDefaultShouldRevalidate);kn||(O=null,pe(rt,{matches:_a||Or,...Due(Bn),loaderData:ma,errors:wa}))}async function Le(Ke,rt,Ct,Gt,jt,Or,Qr,on={}){me();let Xr=JQe(rt,Ct);if(oe({navigation:Xr},{flushSync:on.flushSync===!0}),Or){let kn=await wt(Gt,rt.pathname,Ke.signal);if(kn.type==="aborted")return{shortCircuited:!0};if(kn.type==="error"){if(kn.partialMatches.length===0){let{matches:ma,route:wa}=$I(s);return{matches:ma,pendingActionResult:[wa.id,{type:"error",error:kn.error}]}}let _a=Ty(kn.partialMatches).route.id;return{matches:kn.partialMatches,pendingActionResult:[_a,{type:"error",error:kn.error}]}}else if(kn.matches)Gt=kn.matches;else{let{notFoundMatches:_a,error:ma,route:wa}=$e(rt.pathname);return{matches:_a,pendingActionResult:[wa.id,{type:"error",error:ma}]}}}let vn,Bn=yR(Gt,rt);if(!Bn.route.action&&!Bn.route.lazy)vn={type:"error",error:Zd(405,{method:Ke.method,pathname:rt.pathname,routeId:Bn.route.id})};else{let kn=rA(i,o,Ke,Gt,Bn,Qr?[]:n,jt),_a=await Y(Ke,kn,jt,null);if(vn=_a[Bn.route.id],!vn){for(let ma of Gt)if(_a[ma.route.id]){vn=_a[ma.route.id];break}}if(Ke.signal.aborted)return{shortCircuited:!0}}if(i1(vn)){let kn;return on&&on.replace!=null?kn=on.replace:kn=Iue(vn.response.headers.get("Location"),new URL(Ke.url),c,t.history)===C.location.pathname+C.location.search,await Ve(Ke,vn,!0,{submission:Ct,replace:kn}),{shortCircuited:!0}}if(qf(vn)){let kn=Ty(Gt,Bn.route.id);return(on&&on.replace)!==!0&&(k="PUSH"),{matches:Gt,pendingActionResult:[kn.route.id,vn,Bn.route.id]}}return{matches:Gt,pendingActionResult:[Bn.route.id,vn]}}async function ze(Ke,rt,Ct,Gt,jt,Or,Qr,on,Xr,vn,Bn,kn,_a){let ma=Or||JB(rt,Qr),wa=Qr||on||Lue(ma),Pn=!F&&!vn;if(jt){if(Pn){let ao=we(kn);oe({navigation:ma,...ao!==void 0?{actionData:ao}:{}},{flushSync:Bn})}let Ha=await wt(Ct,rt.pathname,Ke.signal);if(Ha.type==="aborted")return{shortCircuited:!0};if(Ha.type==="error"){if(Ha.partialMatches.length===0){let{matches:$o,route:Ho}=$I(s);return{matches:$o,loaderData:{},errors:{[Ho.id]:Ha.error}}}let ao=Ty(Ha.partialMatches).route.id;return{matches:Ha.partialMatches,loaderData:{},errors:{[ao]:Ha.error}}}else if(Ha.matches)Ct=Ha.matches;else{let{error:ao,notFoundMatches:$o,route:Ho}=$e(rt.pathname);return{matches:$o,loaderData:{},errors:{[Ho.id]:ao}}}}let ya=l||s,{dsMatches:ga,revalidatingFetchers:pi}=Cue(Ke,Gt,i,o,t.history,C,Ct,wa,rt,vn?[]:n,vn===!0,z,H,q,re,W,ya,c,t.patchRoutesOnNavigation!=null,kn,_a);if(ue=++Q,!t.dataStrategy&&!ga.some(Ha=>Ha.shouldLoad)&&!ga.some(Ha=>Ha.route.middleware&&Ha.route.middleware.length>0)&&pi.length===0){let Ha=lt();return pe(rt,{matches:Ct,loaderData:{},errors:kn&&qf(kn[1])?{[kn[0]]:kn[1].error}:null,...Due(kn),...Ha?{fetchers:new Map(C.fetchers)}:{}},{flushSync:Bn}),{shortCircuited:!0}}if(Pn){let Ha={};if(!jt){Ha.navigation=ma;let ao=we(kn);ao!==void 0&&(Ha.actionData=ao)}pi.length>0&&(Ha.fetchers=He(pi)),oe(Ha,{flushSync:Bn})}pi.forEach(Ha=>{Je(Ha.key),Ha.controller&&$.set(Ha.key,Ha.controller)});let Ai=()=>pi.forEach(Ha=>Je(Ha.key));O&&O.signal.addEventListener("abort",Ai);let{loaderResults:Xa,fetcherResults:fa}=await le(ga,pi,Ke,Gt);if(Ke.signal.aborted)return{shortCircuited:!0};O&&O.signal.removeEventListener("abort",Ai),pi.forEach(Ha=>$.delete(Ha.key));let ca=HI(Xa);if(ca)return await Ve(Ke,ca.result,!0,{replace:Xr}),{shortCircuited:!0};if(ca=HI(fa),ca)return W.add(ca.key),await Ve(Ke,ca.result,!0,{replace:Xr}),{shortCircuited:!0};let{loaderData:$a,errors:ka}=jue(C,Ct,Xa,kn,pi,fa);vn&&C.errors&&(ka={...C.errors,...ka});let Na=lt(),Pi=It(ue),Qa=Na||Pi||pi.length>0;return{matches:Ct,loaderData:$a,errors:ka,...Qa?{fetchers:new Map(C.fetchers)}:{}}}function we(Ke){if(Ke&&!qf(Ke[1]))return{[Ke[0]]:Ke[1].data};if(C.actionData)return Object.keys(C.actionData).length===0?null:C.actionData}function He(Ke){return Ke.forEach(rt=>{let Ct=C.fetchers.get(rt.key),Gt=fC(void 0,Ct?Ct.data:void 0);C.fetchers.set(rt.key,Gt)}),new Map(C.fetchers)}async function Ye(Ke,rt,Ct,Gt){Je(Ke);let jt=(Gt&&Gt.flushSync)===!0,Or=l||s,Qr=DK(C.location,C.matches,c,Ct,rt,Gt?.relative),on=Cy(Or,Qr,c),Xr=yt(on,Or,Qr);if(Xr.active&&Xr.matches&&(on=Xr.matches),!on){De(Ke,rt,Zd(404,{pathname:Qr}),{flushSync:jt});return}let{path:vn,submission:Bn,error:kn}=Eue(!0,Qr,Gt);if(kn){De(Ke,rt,kn,{flushSync:jt});return}let _a=t.getContext?await t.getContext():new bue,ma=(Gt&&Gt.preventScrollReset)===!0;if(Bn&&su(Bn.formMethod)){await Re(Ke,rt,vn,on,_a,Xr.active,jt,ma,Bn,Gt&&Gt.unstable_defaultShouldRevalidate);return}re.set(Ke,{routeId:rt,path:vn}),await je(Ke,rt,vn,on,_a,Xr.active,jt,ma,Bn)}async function Re(Ke,rt,Ct,Gt,jt,Or,Qr,on,Xr,vn){me(),re.delete(Ke);let Bn=C.fetchers.get(Ke);Fe(Ke,eJe(Xr,Bn),{flushSync:Qr});let kn=new AbortController,_a=A2(t.history,Ct,kn.signal,Xr);if(Or){let ti=await wt(Gt,new URL(_a.url).pathname,_a.signal,Ke);if(ti.type==="aborted")return;if(ti.type==="error"){De(Ke,rt,ti.error,{flushSync:Qr});return}else if(ti.matches)Gt=ti.matches;else{De(Ke,rt,Zd(404,{pathname:Ct}),{flushSync:Qr});return}}let ma=yR(Gt,Ct);if(!ma.route.action&&!ma.route.lazy){let ti=Zd(405,{method:Xr.formMethod,pathname:Ct,routeId:rt});De(Ke,rt,ti,{flushSync:Qr});return}$.set(Ke,kn);let wa=Q,Pn=rA(i,o,_a,Gt,ma,n,jt),ya=await Y(_a,Pn,jt,Ke),ga=ya[ma.route.id];if(!ga){for(let ti of Pn)if(ya[ti.route.id]){ga=ya[ti.route.id];break}}if(_a.signal.aborted){$.get(Ke)===kn&&$.delete(Ke);return}if(q.has(Ke)){if(i1(ga)||qf(ga)){Fe(Ke,Xg(void 0));return}}else{if(i1(ga))if($.delete(Ke),ue>wa){Fe(Ke,Xg(void 0));return}else return W.add(Ke),Fe(Ke,fC(Xr)),Ve(_a,ga,!1,{fetcherSubmission:Xr,preventScrollReset:on});if(qf(ga)){De(Ke,rt,ga.error);return}}let pi=C.navigation.location||C.location,Ai=A2(t.history,pi,kn.signal),Xa=l||s,fa=C.navigation.state!=="idle"?Cy(Xa,C.navigation.location,c):C.matches;Ni(fa,"Didn't find any matches after fetcher action");let ca=++Q;fe.set(Ke,ca);let $a=fC(Xr,ga.data);C.fetchers.set(Ke,$a);let{dsMatches:ka,revalidatingFetchers:Na}=Cue(Ai,jt,i,o,t.history,C,fa,Xr,pi,n,!1,z,H,q,re,W,Xa,c,t.patchRoutesOnNavigation!=null,[ma.route.id,ga],vn);Na.filter(ti=>ti.key!==Ke).forEach(ti=>{let _i=ti.key,Vs=C.fetchers.get(_i),Ze=fC(void 0,Vs?Vs.data:void 0);C.fetchers.set(_i,Ze),Je(_i),ti.controller&&$.set(_i,ti.controller)}),oe({fetchers:new Map(C.fetchers)});let Pi=()=>Na.forEach(ti=>Je(ti.key));kn.signal.addEventListener("abort",Pi);let{loaderResults:Qa,fetcherResults:Ha}=await le(ka,Na,Ai,jt);if(kn.signal.aborted)return;if(kn.signal.removeEventListener("abort",Pi),fe.delete(Ke),$.delete(Ke),Na.forEach(ti=>$.delete(ti.key)),C.fetchers.has(Ke)){let ti=Xg(ga.data);C.fetchers.set(Ke,ti)}let ao=HI(Qa);if(ao)return Ve(Ai,ao.result,!1,{preventScrollReset:on});if(ao=HI(Ha),ao)return W.add(ao.key),Ve(Ai,ao.result,!1,{preventScrollReset:on});let{loaderData:$o,errors:Ho}=jue(C,fa,Qa,void 0,Na,Ha);It(ca),C.navigation.state==="loading"&&ca>ue?(Ni(k,"Expected pending action"),O&&O.abort(),pe(C.navigation.location,{matches:fa,loaderData:$o,errors:Ho,fetchers:new Map(C.fetchers)})):(oe({errors:Ho,loaderData:Rue(C.loaderData,$o,fa,Ho),fetchers:new Map(C.fetchers)}),z=!1)}async function je(Ke,rt,Ct,Gt,jt,Or,Qr,on,Xr){let vn=C.fetchers.get(Ke);Fe(Ke,fC(Xr,vn?vn.data:void 0),{flushSync:Qr});let Bn=new AbortController,kn=A2(t.history,Ct,Bn.signal);if(Or){let ga=await wt(Gt,new URL(kn.url).pathname,kn.signal,Ke);if(ga.type==="aborted")return;if(ga.type==="error"){De(Ke,rt,ga.error,{flushSync:Qr});return}else if(ga.matches)Gt=ga.matches;else{De(Ke,rt,Zd(404,{pathname:Ct}),{flushSync:Qr});return}}let _a=yR(Gt,Ct);$.set(Ke,Bn);let ma=Q,wa=rA(i,o,kn,Gt,_a,n,jt),ya=(await Y(kn,wa,jt,Ke))[_a.route.id];if($.get(Ke)===Bn&&$.delete(Ke),!kn.signal.aborted){if(q.has(Ke)){Fe(Ke,Xg(void 0));return}if(i1(ya))if(ue>ma){Fe(Ke,Xg(void 0));return}else{W.add(Ke),await Ve(kn,ya,!1,{preventScrollReset:on});return}if(qf(ya)){De(Ke,rt,ya.error);return}Fe(Ke,Xg(ya.data))}}async function Ve(Ke,rt,Ct,{submission:Gt,fetcherSubmission:jt,preventScrollReset:Or,replace:Qr}={}){Ct||(P?.resolve(),P=null),rt.response.headers.has("X-Remix-Revalidate")&&(z=!0);let on=rt.response.headers.get("Location");Ni(on,"Expected a Location header on the redirect Response"),on=Iue(on,new URL(Ke.url),c,t.history);let Xr=Ak(C.location,on,{_isRedirect:!0});if(r){let wa=!1;if(rt.response.headers.has("X-Remix-Reload-Document"))wa=!0;else if(SM(on)){const Pn=mIe(on,!0);wa=Pn.origin!==e.location.origin||mh(Pn.pathname,c)==null}if(wa){Qr?e.location.replace(on):e.location.assign(on);return}}O=null;let vn=Qr===!0||rt.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:Bn,formAction:kn,formEncType:_a}=C.navigation;!Gt&&!jt&&Bn&&kn&&_a&&(Gt=Lue(C.navigation));let ma=Gt||jt;if(NQe.has(rt.response.status)&&ma&&su(ma.formMethod))await _e(vn,Xr,{submission:{...ma,formAction:on},preventScrollReset:Or||I,enableViewTransition:Ct?j:void 0});else{let wa=JB(Xr,Gt);await _e(vn,Xr,{overrideNavigation:wa,fetcherSubmission:jt,preventScrollReset:Or||I,enableViewTransition:Ct?j:void 0})}}async function Y(Ke,rt,Ct,Gt){let jt,Or={};try{jt=await FQe(u,Ke,rt,Gt,Ct,!1)}catch(Qr){return rt.filter(on=>on.shouldLoad).forEach(on=>{Or[on.route.id]={type:"error",error:Qr}}),Or}if(Ke.signal.aborted)return Or;if(!su(Ke.method))for(let Qr of rt){if(jt[Qr.route.id]?.type==="error")break;!jt.hasOwnProperty(Qr.route.id)&&!C.loaderData.hasOwnProperty(Qr.route.id)&&(!C.errors||!C.errors.hasOwnProperty(Qr.route.id))&&Qr.shouldCallHandler()&&(jt[Qr.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${Qr.route.id}`)})}for(let[Qr,on]of Object.entries(jt))if(YQe(on)){let Xr=on.result;Or[Qr]={type:"redirect",response:$Qe(Xr,Ke,Qr,rt,c)}}else Or[Qr]=await VQe(on);return Or}async function le(Ke,rt,Ct,Gt){let jt=Y(Ct,Ke,Gt,null),Or=Promise.all(rt.map(async Xr=>{if(Xr.matches&&Xr.match&&Xr.request&&Xr.controller){let Bn=(await Y(Xr.request,Xr.matches,Gt,Xr.key))[Xr.match.route.id];return{[Xr.key]:Bn}}else return Promise.resolve({[Xr.key]:{type:"error",error:Zd(404,{pathname:Xr.path})}})})),Qr=await jt,on=(await Or).reduce((Xr,vn)=>Object.assign(Xr,vn),{});return{loaderResults:Qr,fetcherResults:on}}function me(){z=!0,re.forEach((Ke,rt)=>{$.has(rt)&&H.add(rt),Je(rt)})}function Fe(Ke,rt,Ct={}){C.fetchers.set(Ke,rt),oe({fetchers:new Map(C.fetchers)},{flushSync:(Ct&&Ct.flushSync)===!0})}function De(Ke,rt,Ct,Gt={}){let jt=Ty(C.matches,rt);ve(Ke),oe({errors:{[jt.route.id]:Ct},fetchers:new Map(C.fetchers)},{flushSync:(Gt&&Gt.flushSync)===!0})}function it(Ke){return L.set(Ke,(L.get(Ke)||0)+1),q.has(Ke)&&q.delete(Ke),C.fetchers.get(Ke)||PQe}function ee(Ke,rt){Je(Ke,rt?.reason),Fe(Ke,Xg(null))}function ve(Ke){let rt=C.fetchers.get(Ke);$.has(Ke)&&!(rt&&rt.state==="loading"&&fe.has(Ke))&&Je(Ke),re.delete(Ke),fe.delete(Ke),W.delete(Ke),q.delete(Ke),H.delete(Ke),C.fetchers.delete(Ke)}function Ae(Ke){let rt=(L.get(Ke)||0)-1;rt<=0?(L.delete(Ke),q.add(Ke)):L.set(Ke,rt),oe({fetchers:new Map(C.fetchers)})}function Je(Ke,rt){let Ct=$.get(Ke);Ct&&(Ct.abort(rt),$.delete(Ke))}function ct(Ke){for(let rt of Ke){let Ct=it(rt),Gt=Xg(Ct.data);C.fetchers.set(rt,Gt)}}function lt(){let Ke=[],rt=!1;for(let Ct of W){let Gt=C.fetchers.get(Ct);Ni(Gt,`Expected fetcher: ${Ct}`),Gt.state==="loading"&&(W.delete(Ct),Ke.push(Ct),rt=!0)}return ct(Ke),rt}function It(Ke){let rt=[];for(let[Ct,Gt]of fe)if(Gt0}function ne(Ke,rt){let Ct=C.blockers.get(Ke)||uC;return Z.get(Ke)!==rt&&Z.set(Ke,rt),Ct}function de(Ke){C.blockers.delete(Ke),Z.delete(Ke)}function Oe(Ke,rt){let Ct=C.blockers.get(Ke)||uC;Ni(Ct.state==="unblocked"&&rt.state==="blocked"||Ct.state==="blocked"&&rt.state==="blocked"||Ct.state==="blocked"&&rt.state==="proceeding"||Ct.state==="blocked"&&rt.state==="unblocked"||Ct.state==="proceeding"&&rt.state==="unblocked",`Invalid blocker state transition: ${Ct.state} -> ${rt.state}`);let Gt=new Map(C.blockers);Gt.set(Ke,rt),oe({blockers:Gt})}function Ge({currentLocation:Ke,nextLocation:rt,historyAction:Ct}){if(Z.size===0)return;Z.size>1&&zs(!1,"A router only supports one blocker at a time");let Gt=Array.from(Z.entries()),[jt,Or]=Gt[Gt.length-1],Qr=C.blockers.get(jt);if(!(Qr&&Qr.state==="proceeding")&&Or({currentLocation:Ke,nextLocation:rt,historyAction:Ct}))return jt}function $e(Ke){let rt=Zd(404,{pathname:Ke}),Ct=l||s,{matches:Gt,route:jt}=$I(Ct);return{notFoundMatches:Gt,route:jt,error:rt}}function he(Ke,rt,Ct){if(p=Ke,v=rt,m=Ct||null,!y&&C.navigation===QB){y=!0;let Gt=qe(C.location,C.matches);Gt!=null&&oe({restoreScrollPosition:Gt})}return()=>{p=null,v=null,m=null}}function ge(Ke,rt){return m&&m(Ke,rt.map(Gt=>rQe(Gt,C.loaderData)))||Ke.key}function Pe(Ke,rt){if(p&&v){let Ct=ge(Ke,rt);p[Ct]=v()}}function qe(Ke,rt){if(p){let Ct=ge(Ke,rt),Gt=p[Ct];if(typeof Gt=="number")return Gt}return null}function yt(Ke,rt,Ct){if(t.patchRoutesOnNavigation)if(Ke){if(Object.keys(Ke[0].params).length>0)return{active:!0,matches:bT(rt,Ct,c,!0)}}else return{active:!0,matches:bT(rt,Ct,c,!0)||[]};return{active:!1,matches:null}}async function wt(Ke,rt,Ct,Gt){if(!t.patchRoutesOnNavigation)return{type:"success",matches:Ke};let jt=Ke;for(;;){let Or=l==null,Qr=l||s,on=o;try{await t.patchRoutesOnNavigation({signal:Ct,path:rt,matches:jt,fetcherKey:Gt,patch:(Bn,kn)=>{Ct.aborted||Tue(Bn,kn,Qr,on,i,!1)}})}catch(Bn){return{type:"error",error:Bn,partialMatches:jt}}finally{Or&&!Ct.aborted&&(s=[...s])}if(Ct.aborted)return{type:"aborted"};let Xr=Cy(Qr,rt,c),vn=null;if(Xr){if(Object.keys(Xr[0].params).length===0)return{type:"success",matches:Xr};if(vn=bT(Qr,rt,c,!0),!(vn&&jt.lengthCt.route.id===rt[Gt].route.id)}function Ar(Ke){o={},l=_k(Ke,i,void 0,o)}function ir(Ke,rt,Ct=!1){let Gt=l==null;Tue(Ke,rt,l||s,o,i,Ct),Gt&&(s=[...s],oe({}))}return T={get basename(){return c},get future(){return f},get state(){return C},get routes(){return s},get window(){return e},initialize:J,subscribe:ae,enableScrollRestoration:he,navigate:be,fetch:Ye,revalidate:Se,createHref:Ke=>t.history.createHref(Ke),encodeLocation:Ke=>t.history.encodeLocation(Ke),getFetcher:it,resetFetcher:ee,deleteFetcher:Ae,dispose:ye,getBlocker:ne,deleteBlocker:de,patchRoutes:ir,_internalFetchControllers:$,_internalSetRoutes:Ar,_internalSetStateDoNotUseOrYouWillBreakYourApp(Ke){oe(Ke)}},t.unstable_instrumentations&&(T=wQe(T,t.unstable_instrumentations.map(Ke=>Ke.router).filter(Boolean))),T}function jQe(t){return t!=null&&("formData"in t&&t.formData!=null||"body"in t&&t.body!==void 0)}function DK(t,e,r,n,a,i){let o,s;if(a){o=[];for(let c of e)if(o.push(c),c.route.id===a){s=c;break}}else o=e,s=e[e.length-1];let l=_M(n||".",AM(o),mh(t.pathname,r)||t.pathname,i==="path");if(n==null&&(l.search=t.search,l.hash=t.hash),(n==null||n===""||n===".")&&s){let c=gee(l.search);if(s.route.index&&!c)l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index";else if(!s.route.index&&c){let u=new URLSearchParams(l.search),f=u.getAll("index");u.delete("index"),f.filter(h=>h).forEach(h=>u.append("index",h));let d=u.toString();l.search=d?`?${d}`:""}}return r!=="/"&&(l.pathname=mQe({basename:r,pathname:l.pathname})),Jm(l)}function Eue(t,e,r){if(!r||!jQe(r))return{path:e};if(r.formMethod&&!QQe(r.formMethod))return{path:e,error:Zd(405,{method:r.formMethod})};let n=()=>({path:e,error:Zd(400,{type:"invalid-body"})}),i=(r.formMethod||"get").toUpperCase(),o=OIe(e);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!su(i))return n();let f=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((d,[h,p])=>`${d}${h}=${p} +`,""):String(r.body);return{path:e,submission:{formMethod:i,formAction:o,formEncType:r.formEncType,formData:void 0,json:void 0,text:f}}}else if(r.formEncType==="application/json"){if(!su(i))return n();try{let f=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:e,submission:{formMethod:i,formAction:o,formEncType:r.formEncType,formData:void 0,json:f,text:void 0}}}catch{return n()}}}Ni(typeof FormData=="function","FormData is not available in this environment");let s,l;if(r.formData)s=BK(r.formData),l=r.formData;else if(r.body instanceof FormData)s=BK(r.body),l=r.body;else if(r.body instanceof URLSearchParams)s=r.body,l=Oue(s);else if(r.body==null)s=new URLSearchParams,l=new FormData;else try{s=new URLSearchParams(r.body),l=Oue(s)}catch{return n()}let c={formMethod:i,formAction:o,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:l,json:void 0,text:void 0};if(su(c.formMethod))return{path:e,submission:c};let u=xb(e);return t&&u.search&&gee(u.search)&&s.append("index",""),u.search=`?${s}`,{path:Jm(u),submission:c}}function Cue(t,e,r,n,a,i,o,s,l,c,u,f,d,h,p,m,v,y,w,S,A){let E=S?qf(S[1])?S[1].error:S[1].data:void 0,T=a.createURL(i.location),C=a.createURL(l),k;if(u&&i.errors){let F=Object.keys(i.errors)[0];k=o.findIndex(z=>z.route.id===F)}else if(S&&qf(S[1])){let F=S[0];k=o.findIndex(z=>z.route.id===F)-1}let P=S?S[1].statusCode:void 0,I=P&&P>=400,O={currentUrl:T,currentParams:i.matches[0]?.params||{},nextUrl:C,nextParams:o[0].params,...s,actionResult:E,actionStatus:P},j=bN(o),B=o.map((F,z)=>{let{route:H}=F,$=null;if(k!=null&&z>k?$=!1:H.lazy?$=!0:pee(H)?u?$=MK(H,i.loaderData,i.errors):RQe(i.loaderData,i.matches[z],F)&&($=!0):$=!1,$!==null)return LK(r,n,t,j,F,c,e,$);let Q=!1;typeof A=="boolean"?Q=A:I?Q=!1:(f||T.pathname+T.search===C.pathname+C.search||T.search!==C.search||DQe(i.matches[z],F))&&(Q=!0);let ue={...O,defaultShouldRevalidate:Q},fe=YT(F,ue);return LK(r,n,t,j,F,c,e,fe,ue,A)}),V=[];return p.forEach((F,z)=>{if(u||!o.some(L=>L.route.id===F.routeId)||h.has(z))return;let H=i.fetchers.get(z),$=H&&H.state!=="idle"&&H.data===void 0,Q=Cy(v,F.path,y);if(!Q){if(w&&$)return;V.push({key:z,routeId:F.routeId,path:F.path,matches:null,match:null,request:null,controller:null});return}if(m.has(z))return;let ue=yR(Q,F.path),fe=new AbortController,W=A2(a,F.path,fe.signal),re=null;if(d.has(z))d.delete(z),re=rA(r,n,W,Q,ue,c,e);else if($)f&&(re=rA(r,n,W,Q,ue,c,e));else{let L;typeof A=="boolean"?L=A:I?L=!1:L=f;let q={...O,defaultShouldRevalidate:L};YT(ue,q)&&(re=rA(r,n,W,Q,ue,c,e,q))}re&&V.push({key:z,routeId:F.routeId,path:F.path,matches:re,match:ue,request:W,controller:fe})}),{dsMatches:B,revalidatingFetchers:V}}function pee(t){return t.loader!=null||t.middleware!=null&&t.middleware.length>0}function MK(t,e,r){if(t.lazy)return!0;if(!pee(t))return!1;let n=e!=null&&t.id in e,a=r!=null&&r[t.id]!==void 0;return!n&&a?!1:typeof t.loader=="function"&&t.loader.hydrate===!0?!0:!n&&!a}function RQe(t,e,r){let n=!e||r.route.id!==e.route.id,a=!t.hasOwnProperty(r.route.id);return n||a}function DQe(t,e){let r=t.route.path;return t.pathname!==e.pathname||r!=null&&r.endsWith("*")&&t.params["*"]!==e.params["*"]}function YT(t,e){if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate(e);if(typeof r=="boolean")return r}return e.defaultShouldRevalidate}function Tue(t,e,r,n,a,i){let o;if(t){let c=n[t];Ni(c,`No route found to patch children into: routeId = ${t}`),c.children||(c.children=[]),o=c.children}else o=r;let s=[],l=[];if(e.forEach(c=>{let u=o.find(f=>TIe(c,f));u?l.push({existingRoute:u,newRoute:c}):s.push(c)}),s.length>0){let c=_k(s,a,[t||"_","patch",String(o?.length||"0")],n);o.push(...c)}if(i&&l.length>0)for(let c=0;ce.children?.some(a=>TIe(r,a))):!1}var kue=new WeakMap,kIe=({key:t,route:e,manifest:r,mapRouteProperties:n})=>{let a=r[e.id];if(Ni(a,"No route found in manifest"),!a.lazy||typeof a.lazy!="object")return;let i=a.lazy[t];if(!i)return;let o=kue.get(a);o||(o={},kue.set(a,o));let s=o[t];if(s)return s;let l=(async()=>{let c=QZe(t),f=a[t]!==void 0&&t!=="hasErrorBoundary";if(c)zs(!c,"Route property "+t+" is not a supported lazy route property. This property will be ignored."),o[t]=Promise.resolve();else if(f)zs(!1,`Route "${a.id}" has a static property "${t}" defined. The lazy property will be ignored.`);else{let d=await i();d!=null&&(Object.assign(a,{[t]:d}),Object.assign(a,n(a)))}typeof a.lazy=="object"&&(a.lazy[t]=void 0,Object.values(a.lazy).every(d=>d===void 0)&&(a.lazy=void 0))})();return o[t]=l,l},Nue=new WeakMap;function MQe(t,e,r,n,a){let i=r[t.id];if(Ni(i,"No route found in manifest"),!t.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof t.lazy=="function"){let u=Nue.get(i);if(u)return{lazyRoutePromise:u,lazyHandlerPromise:u};let f=(async()=>{Ni(typeof t.lazy=="function","No lazy route function found");let d=await t.lazy(),h={};for(let p in d){let m=d[p];if(m===void 0)continue;let v=eQe(p),w=i[p]!==void 0&&p!=="hasErrorBoundary";v?zs(!v,"Route property "+p+" is not a supported property to be returned from a lazy route function. This property will be ignored."):w?zs(!w,`Route "${i.id}" has a static property "${p}" defined but its lazy function is also returning a value for this property. The lazy route property "${p}" will be ignored.`):h[p]=m}Object.assign(i,h),Object.assign(i,{...n(i),lazy:void 0})})();return Nue.set(i,f),f.catch(()=>{}),{lazyRoutePromise:f,lazyHandlerPromise:f}}let o=Object.keys(t.lazy),s=[],l;for(let u of o){if(a&&a.includes(u))continue;let f=kIe({key:u,route:t,manifest:r,mapRouteProperties:n});f&&(s.push(f),u===e&&(l=f))}let c=s.length>0?Promise.all(s).then(()=>{}):void 0;return c?.catch(()=>{}),l?.catch(()=>{}),{lazyRoutePromise:c,lazyHandlerPromise:l}}async function Pue(t){let e=t.matches.filter(a=>a.shouldLoad),r={};return(await Promise.all(e.map(a=>a.resolve()))).forEach((a,i)=>{r[e[i].route.id]=a}),r}async function LQe(t){return t.matches.some(e=>e.route.middleware)?NIe(t,()=>Pue(t)):Pue(t)}function NIe(t,e){return BQe(t,e,n=>{if(ZQe(n))throw n;return n},WQe,r);function r(n,a,i){if(i)return Promise.resolve(Object.assign(i.value,{[a]:{type:"error",result:n}}));{let{matches:o}=t,s=Math.min(Math.max(o.findIndex(c=>c.route.id===a),0),Math.max(o.findIndex(c=>c.shouldCallHandler()),0)),l=Ty(o,o[s].route.id).route.id;return Promise.resolve({[l]:{type:"error",result:n}})}}}async function BQe(t,e,r,n,a){let{matches:i,request:o,params:s,context:l,unstable_pattern:c}=t,u=i.flatMap(d=>d.route.middleware?d.route.middleware.map(h=>[d.route.id,h]):[]);return await PIe({request:o,params:s,context:l,unstable_pattern:c},u,e,r,n,a)}async function PIe(t,e,r,n,a,i,o=0){let{request:s}=t;if(s.signal.aborted)throw s.signal.reason??new Error(`Request aborted: ${s.method} ${s.url}`);let l=e[o];if(!l)return await r();let[c,u]=l,f,d=async()=>{if(f)throw new Error("You may only call `next()` once per middleware");try{return f={value:await PIe(t,e,r,n,a,i,o+1)},f.value}catch(h){return f={value:await i(h,c,f)},f.value}};try{let h=await u(t,d),p=h!=null?n(h):void 0;return a(p)?p:f?p??f.value:(f={value:await d()},f.value)}catch(h){return await i(h,c,f)}}function IIe(t,e,r,n,a){let i=kIe({key:"middleware",route:n.route,manifest:e,mapRouteProperties:t}),o=MQe(n.route,su(r.method)?"action":"loader",e,t,a);return{middleware:i,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function LK(t,e,r,n,a,i,o,s,l=null,c){let u=!1,f=IIe(t,e,r,a,i);return{...a,_lazyPromises:f,shouldLoad:s,shouldRevalidateArgs:l,shouldCallHandler(d){return u=!0,l?typeof c=="boolean"?YT(a,{...l,defaultShouldRevalidate:c}):typeof d=="boolean"?YT(a,{...l,defaultShouldRevalidate:d}):YT(a,l):s},resolve(d){let{lazy:h,loader:p,middleware:m}=a.route,v=u||s||d&&!su(r.method)&&(h||p),y=m&&m.length>0&&!p&&!h;return v&&(su(r.method)||!y)?UQe({request:r,unstable_pattern:n,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:d,scopedContext:o}):Promise.resolve({type:"data",result:void 0})}}}function rA(t,e,r,n,a,i,o,s=null){return n.map(l=>l.route.id!==a.route.id?{...l,shouldLoad:!1,shouldRevalidateArgs:s,shouldCallHandler:()=>!1,_lazyPromises:IIe(t,e,r,l,i),resolve:()=>Promise.resolve({type:"data",result:void 0})}:LK(t,e,r,bN(n),l,i,o,!0,s))}async function FQe(t,e,r,n,a,i){r.some(c=>c._lazyPromises?.middleware)&&await Promise.all(r.map(c=>c._lazyPromises?.middleware));let o={request:e,unstable_pattern:bN(r),params:r[0].params,context:a,matches:r},l=await t({...o,fetcherKey:n,runClientMiddleware:c=>{let u=o;return NIe(u,()=>c({...u,fetcherKey:n,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(r.flatMap(c=>[c._lazyPromises?.handler,c._lazyPromises?.route]))}catch{}return l}async function UQe({request:t,unstable_pattern:e,match:r,lazyHandlerPromise:n,lazyRoutePromise:a,handlerOverride:i,scopedContext:o}){let s,l,c=su(t.method),u=c?"action":"loader",f=d=>{let h,p=new Promise((y,w)=>h=w);l=()=>h(),t.signal.addEventListener("abort",l);let m=y=>typeof d!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${u}" [routeId: ${r.route.id}]`)):d({request:t,unstable_pattern:e,params:r.params,context:o},...y!==void 0?[y]:[]),v=(async()=>{try{return{type:"data",result:await(i?i(w=>m(w)):m())}}catch(y){return{type:"error",result:y}}})();return Promise.race([v,p])};try{let d=c?r.route.action:r.route.loader;if(n||a)if(d){let h,[p]=await Promise.all([f(d).catch(m=>{h=m}),n,a]);if(h!==void 0)throw h;s=p}else{await n;let h=c?r.route.action:r.route.loader;if(h)[s]=await Promise.all([f(h),a]);else if(u==="action"){let p=new URL(t.url),m=p.pathname+p.search;throw Zd(405,{method:t.method,pathname:m,routeId:r.route.id})}else return{type:"data",result:void 0}}else if(d)s=await f(d);else{let h=new URL(t.url),p=h.pathname+h.search;throw Zd(404,{pathname:p})}}catch(d){return{type:"error",result:d}}finally{l&&t.signal.removeEventListener("abort",l)}return s}async function zQe(t){let e=t.headers.get("Content-Type");return e&&/\bapplication\/json\b/.test(e)?t.body==null?null:t.json():t.text()}async function VQe(t){let{result:e,type:r}=t;if(mee(e)){let n;try{n=await zQe(e)}catch(a){return{type:"error",error:a}}return r==="error"?{type:"error",error:new yN(e.status,e.statusText,n),statusCode:e.status,headers:e.headers}:{type:"data",data:n,statusCode:e.status,headers:e.headers}}return r==="error"?Mue(e)?e.data instanceof Error?{type:"error",error:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:qQe(e),statusCode:Ek(e)?e.status:void 0,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:e,statusCode:Ek(e)?e.status:void 0}:Mue(e)?{type:"data",data:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"data",data:e}}function $Qe(t,e,r,n,a){let i=t.headers.get("Location");if(Ni(i,"Redirects returned/thrown from loaders/actions must have a Location header"),!SM(i)){let o=n.slice(0,n.findIndex(s=>s.route.id===r)+1);i=DK(new URL(e.url),o,a,i),t.headers.set("Location",i)}return t}function Iue(t,e,r,n){let a=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(SM(t)){let i=t,o=i.startsWith("//")?new URL(e.protocol+i):new URL(i);if(a.includes(o.protocol))throw new Error("Invalid redirect location");let s=mh(o.pathname,r)!=null;if(o.origin===e.origin&&s)return o.pathname+o.search+o.hash}try{let i=n.createURL(t);if(a.includes(i.protocol))throw new Error("Invalid redirect location")}catch{}return t}function A2(t,e,r,n){let a=t.createURL(OIe(e)).toString(),i={signal:r};if(n&&su(n.formMethod)){let{formMethod:o,formEncType:s}=n;i.method=o.toUpperCase(),s==="application/json"?(i.headers=new Headers({"Content-Type":s}),i.body=JSON.stringify(n.json)):s==="text/plain"?i.body=n.text:s==="application/x-www-form-urlencoded"&&n.formData?i.body=BK(n.formData):i.body=n.formData}return new Request(a,i)}function BK(t){let e=new URLSearchParams;for(let[r,n]of t.entries())e.append(r,typeof n=="string"?n:n.name);return e}function Oue(t){let e=new FormData;for(let[r,n]of t.entries())e.append(r,n);return e}function HQe(t,e,r,n=!1,a=!1){let i={},o=null,s,l=!1,c={},u=r&&qf(r[1])?r[1].error:void 0;return t.forEach(f=>{if(!(f.route.id in e))return;let d=f.route.id,h=e[d];if(Ni(!i1(h),"Cannot handle redirect results in processLoaderData"),qf(h)){let p=h.error;if(u!==void 0&&(p=u,u=void 0),o=o||{},a)o[d]=p;else{let m=Ty(t,d);o[m.route.id]==null&&(o[m.route.id]=p)}n||(i[d]=CIe),l||(l=!0,s=Ek(h.error)?h.error.status:500),h.headers&&(c[d]=h.headers)}else i[d]=h.data,h.statusCode&&h.statusCode!==200&&!l&&(s=h.statusCode),h.headers&&(c[d]=h.headers)}),u!==void 0&&r&&(o={[r[0]]:u},r[2]&&(i[r[2]]=void 0)),{loaderData:i,errors:o,statusCode:s||200,loaderHeaders:c}}function jue(t,e,r,n,a,i){let{loaderData:o,errors:s}=HQe(e,r,n);return a.filter(l=>!l.matches||l.matches.some(c=>c.shouldLoad)).forEach(l=>{let{key:c,match:u,controller:f}=l;if(f&&f.signal.aborted)return;let d=i[c];if(Ni(d,"Did not find corresponding fetcher result"),qf(d)){let h=Ty(t.matches,u?.route.id);s&&s[h.route.id]||(s={...s,[h.route.id]:d.error}),t.fetchers.delete(c)}else if(i1(d))Ni(!1,"Unhandled fetcher revalidation redirect");else{let h=Xg(d.data);t.fetchers.set(c,h)}}),{loaderData:o,errors:s}}function Rue(t,e,r,n){let a=Object.entries(e).filter(([,i])=>i!==CIe).reduce((i,[o,s])=>(i[o]=s,i),{});for(let i of r){let o=i.route.id;if(!e.hasOwnProperty(o)&&t.hasOwnProperty(o)&&i.route.loader&&(a[o]=t[o]),n&&n.hasOwnProperty(o))break}return a}function Due(t){return t?qf(t[1])?{actionData:{}}:{actionData:{[t[0]]:t[1].data}}:{}}function Ty(t,e){return(e?t.slice(0,t.findIndex(n=>n.route.id===e)+1):[...t]).reverse().find(n=>n.route.hasErrorBoundary===!0)||t[0]}function $I(t){let e=t.length===1?t[0]:t.find(r=>r.index||!r.path||r.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e}}function Zd(t,{pathname:e,routeId:r,method:n,type:a,message:i}={}){let o="Unknown Server Error",s="Unknown @remix-run/router error";return t===400?(o="Bad Request",n&&e&&r?s=`You made a ${n} request to "${e}" but did not provide a \`loader\` for route "${r}", so there is no way to handle the request.`:a==="invalid-body"&&(s="Unable to encode submission body")):t===403?(o="Forbidden",s=`Route "${r}" does not match URL "${e}"`):t===404?(o="Not Found",s=`No route matches URL "${e}"`):t===405&&(o="Method Not Allowed",n&&e&&r?s=`You made a ${n.toUpperCase()} request to "${e}" but did not provide an \`action\` for route "${r}", so there is no way to handle the request.`:n&&(s=`Invalid request method "${n.toUpperCase()}"`)),new yN(t||500,o,new Error(s),!0)}function HI(t){let e=Object.entries(t);for(let r=e.length-1;r>=0;r--){let[n,a]=e[r];if(i1(a))return{key:n,result:a}}}function OIe(t){let e=typeof t=="string"?xb(t):t;return Jm({...e,hash:""})}function GQe(t,e){return t.pathname!==e.pathname||t.search!==e.search?!1:t.hash===""?e.hash!=="":t.hash===e.hash?!0:e.hash!==""}function qQe(t){return new yN(t.init?.status??500,t.init?.statusText??"Internal Server Error",t.data)}function WQe(t){return t!=null&&typeof t=="object"&&Object.entries(t).every(([e,r])=>typeof e=="string"&&KQe(r))}function KQe(t){return t!=null&&typeof t=="object"&&"type"in t&&"result"in t&&(t.type==="data"||t.type==="error")}function YQe(t){return mee(t.result)&&_Ie.has(t.result.status)}function qf(t){return t.type==="error"}function i1(t){return(t&&t.type)==="redirect"}function Mue(t){return typeof t=="object"&&t!=null&&"type"in t&&"data"in t&&"init"in t&&t.type==="DataWithResponseInit"}function mee(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.headers=="object"&&typeof t.body<"u"}function XQe(t){return _Ie.has(t)}function ZQe(t){return mee(t)&&XQe(t.status)&&t.headers.has("Location")}function QQe(t){return kQe.has(t.toUpperCase())}function su(t){return CQe.has(t.toUpperCase())}function gee(t){return new URLSearchParams(t).getAll("index").some(e=>e==="")}function yR(t,e){let r=typeof e=="string"?xb(e).search:e.search;if(t[t.length-1].route.index&&gee(r||""))return t[t.length-1];let n=bIe(t);return n[n.length-1]}function Lue(t){let{formMethod:e,formAction:r,formEncType:n,text:a,formData:i,json:o}=t;if(!(!e||!r||!n)){if(a!=null)return{formMethod:e,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a};if(i!=null)return{formMethod:e,formAction:r,formEncType:n,formData:i,json:void 0,text:void 0};if(o!==void 0)return{formMethod:e,formAction:r,formEncType:n,formData:void 0,json:o,text:void 0}}}function JB(t,e){return e?{state:"loading",location:t,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text}:{state:"loading",location:t,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function JQe(t,e){return{state:"submitting",location:t,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text}}function fC(t,e){return t?{state:"loading",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function eJe(t,e){return{state:"submitting",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e?e.data:void 0}}function Xg(t){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function tJe(t,e){try{let r=t.sessionStorage.getItem(EIe);if(r){let n=JSON.parse(r);for(let[a,i]of Object.entries(n||{}))i&&Array.isArray(i)&&e.set(a,new Set(i||[]))}}catch{}}function rJe(t,e){if(e.size>0){let r={};for(let[n,a]of e)r[n]=[...a];try{t.sessionStorage.setItem(EIe,JSON.stringify(r))}catch(n){zs(!1,`Failed to save applied view transitions in sessionStorage (${n}).`)}}}function Bue(){let t,e,r=new Promise((n,a)=>{t=async i=>{n(i);try{await r}catch{}},e=async i=>{a(i);try{await r}catch{}}});return{promise:r,resolve:t,reject:e}}var jw=D.createContext(null);jw.displayName="DataRouter";var xN=D.createContext(null);xN.displayName="DataRouterState";var jIe=D.createContext(!1);function nJe(){return D.useContext(jIe)}var vee=D.createContext({isTransitioning:!1});vee.displayName="ViewTransition";var RIe=D.createContext(new Map);RIe.displayName="Fetchers";var aJe=D.createContext(null);aJe.displayName="Await";var vd=D.createContext(null);vd.displayName="Navigation";var EM=D.createContext(null);EM.displayName="Location";var Ah=D.createContext({outlet:null,matches:[],isDataRoute:!1});Ah.displayName="Route";var yee=D.createContext(null);yee.displayName="RouteError";var DIe="REACT_ROUTER_ERROR",iJe="REDIRECT",oJe="ROUTE_ERROR_RESPONSE";function sJe(t){if(t.startsWith(`${DIe}:${iJe}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function lJe(t){if(t.startsWith(`${DIe}:${oJe}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new yN(e.status,e.statusText,e.data)}catch{}}function cJe(t,{relative:e}={}){Ni(E_(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:n}=D.useContext(vd),{hash:a,pathname:i,search:o}=SN(t,{relative:e}),s=i;return r!=="/"&&(s=i==="/"?r:Um([r,i])),n.createHref({pathname:s,search:o,hash:a})}function E_(){return D.useContext(EM)!=null}function Rp(){return Ni(E_(),"useLocation() may be used only in the context of a component."),D.useContext(EM).location}var MIe="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function LIe(t){D.useContext(vd).static||D.useLayoutEffect(t)}function Ro(){let{isDataRoute:t}=D.useContext(Ah);return t?_Je():uJe()}function uJe(){Ni(E_(),"useNavigate() may be used only in the context of a component.");let t=D.useContext(jw),{basename:e,navigator:r}=D.useContext(vd),{matches:n}=D.useContext(Ah),{pathname:a}=Rp(),i=JSON.stringify(AM(n)),o=D.useRef(!1);return LIe(()=>{o.current=!0}),D.useCallback((l,c={})=>{if(zs(o.current,MIe),!o.current)return;if(typeof l=="number"){r.go(l);return}let u=_M(l,JSON.parse(i),a,c.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:Um([e,u.pathname])),(c.replace?r.replace:r.push)(u,c.state,c)},[e,r,i,a,t])}var fJe=D.createContext(null);function dJe(t){let e=D.useContext(Ah).outlet;return D.useMemo(()=>e&&D.createElement(fJe.Provider,{value:t},e),[e,t])}function wN(){let{matches:t}=D.useContext(Ah),e=t[t.length-1];return e?e.params:{}}function SN(t,{relative:e}={}){let{matches:r}=D.useContext(Ah),{pathname:n}=Rp(),a=JSON.stringify(AM(r));return D.useMemo(()=>_M(t,JSON.parse(a),n,e==="path"),[t,a,n,e])}function hJe(t,e,r,n,a){Ni(E_(),"useRoutes() may be used only in the context of a component.");let{navigator:i}=D.useContext(vd),{matches:o}=D.useContext(Ah),s=o[o.length-1],l=s?s.params:{},c=s?s.pathname:"/",u=s?s.pathnameBase:"/",f=s&&s.route;{let w=f&&f.path||"";FIe(c,!f||w.endsWith("*")||w.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let d=Rp(),h;h=d;let p=h.pathname||"/",m=p;if(u!=="/"){let w=u.replace(/^\//,"").split("/");m="/"+p.replace(/^\//,"").split("/").slice(w.length).join("/")}let v=Cy(t,{pathname:m});return zs(f||v!=null,`No routes matched location "${h.pathname}${h.search}${h.hash}" `),zs(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${h.pathname}${h.search}${h.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`),yJe(v&&v.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:Um([u,i.encodeLocation?i.encodeLocation(w.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?u:Um([u,i.encodeLocation?i.encodeLocation(w.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathnameBase])})),o,r,n,a)}function pJe(){let t=AJe(),e=Ek(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,n="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:n},i={padding:"2px 4px",backgroundColor:n},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=D.createElement(D.Fragment,null,D.createElement("p",null,"💿 Hey developer 👋"),D.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",D.createElement("code",{style:i},"ErrorBoundary")," or"," ",D.createElement("code",{style:i},"errorElement")," prop on your route.")),D.createElement(D.Fragment,null,D.createElement("h2",null,"Unexpected Application Error!"),D.createElement("h3",{style:{fontStyle:"italic"}},e),r?D.createElement("pre",{style:a},r):null,o)}var mJe=D.createElement(pJe,null),BIe=class extends D.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const r=lJe(t.digest);r&&(t=r)}let e=t!==void 0?D.createElement(Ah.Provider,{value:this.props.routeContext},D.createElement(yee.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?D.createElement(gJe,{error:t},e):e}};BIe.contextType=jIe;var e9=new WeakMap;function gJe({children:t,error:e}){let{basename:r}=D.useContext(vd);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let n=sJe(e.digest);if(n){let a=e9.get(e);if(a)throw a;let i=wIe(n.location,r);if(xIe&&!e9.get(e))if(i.isExternal||n.reloadDocument)window.location.href=i.absoluteURL||i.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:n.replace}));throw e9.set(e,o),o}return D.createElement("meta",{httpEquiv:"refresh",content:`0;url=${i.absoluteURL||i.to}`})}}return t}function vJe({routeContext:t,match:e,children:r}){let n=D.useContext(jw);return n&&n.static&&n.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=e.route.id),D.createElement(Ah.Provider,{value:t},r)}function yJe(t,e=[],r=null,n=null,a=null){if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(e.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let i=t,o=r?.errors;if(o!=null){let u=i.findIndex(f=>f.route.id&&o?.[f.route.id]!==void 0);Ni(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),i=i.slice(0,Math.min(i.length,u+1))}let s=!1,l=-1;if(r)for(let u=0;u=0?i=i.slice(0,l+1):i=[i[0]];break}}}let c=r&&n?(u,f)=>{n(u,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:bN(r.matches),errorInfo:f})}:void 0;return i.reduceRight((u,f,d)=>{let h,p=!1,m=null,v=null;r&&(h=o&&f.route.id?o[f.route.id]:void 0,m=f.route.errorElement||mJe,s&&(l<0&&d===0?(FIe("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),p=!0,v=null):l===d&&(p=!0,v=f.route.hydrateFallbackElement||null)));let y=e.concat(i.slice(0,d+1)),w=()=>{let S;return h?S=m:p?S=v:f.route.Component?S=D.createElement(f.route.Component,null):f.route.element?S=f.route.element:S=u,D.createElement(vJe,{match:f,routeContext:{outlet:u,matches:y,isDataRoute:r!=null},children:S})};return r&&(f.route.ErrorBoundary||f.route.errorElement||d===0)?D.createElement(BIe,{location:r.location,revalidation:r.revalidation,component:m,error:h,children:w(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:c}):w()},null)}function bee(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function bJe(t){let e=D.useContext(jw);return Ni(e,bee(t)),e}function xJe(t){let e=D.useContext(xN);return Ni(e,bee(t)),e}function wJe(t){let e=D.useContext(Ah);return Ni(e,bee(t)),e}function xee(t){let e=wJe(t),r=e.matches[e.matches.length-1];return Ni(r.route.id,`${t} can only be used on routes that contain a unique "id"`),r.route.id}function SJe(){return xee("useRouteId")}function AJe(){let t=D.useContext(yee),e=xJe("useRouteError"),r=xee("useRouteError");return t!==void 0?t:e.errors?.[r]}function _Je(){let{router:t}=bJe("useNavigate"),e=xee("useNavigate"),r=D.useRef(!1);return LIe(()=>{r.current=!0}),D.useCallback(async(a,i={})=>{zs(r.current,MIe),r.current&&(typeof a=="number"?await t.navigate(a):await t.navigate(a,{fromRouteId:e,...i}))},[t,e])}var Fue={};function FIe(t,e,r){!e&&!Fue[t]&&(Fue[t]=!0,zs(!1,r))}var Uue={};function zue(t,e){!t&&!Uue[e]&&(Uue[e]=!0,console.warn(e))}var EJe="useOptimistic",Vue=vN[EJe],CJe=()=>{};function TJe(t){return Vue?Vue(t):[t,CJe]}function kJe(t){let e={hasErrorBoundary:t.hasErrorBoundary||t.ErrorBoundary!=null||t.errorElement!=null};return t.Component&&(t.element&&zs(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(e,{element:D.createElement(t.Component),Component:void 0})),t.HydrateFallback&&(t.hydrateFallbackElement&&zs(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(e,{hydrateFallbackElement:D.createElement(t.HydrateFallback),HydrateFallback:void 0})),t.ErrorBoundary&&(t.errorElement&&zs(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(e,{errorElement:D.createElement(t.ErrorBoundary),ErrorBoundary:void 0})),e}var NJe=["HydrateFallback","hydrateFallbackElement"],PJe=class{constructor(){this.status="pending",this.promise=new Promise((t,e)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",e(r))}})}};function IJe({router:t,flushSync:e,onError:r,unstable_useTransitions:n}){n=nJe()||n;let[i,o]=D.useState(t.state),[s,l]=TJe(i),[c,u]=D.useState(),[f,d]=D.useState({isTransitioning:!1}),[h,p]=D.useState(),[m,v]=D.useState(),[y,w]=D.useState(),S=D.useRef(new Map),A=D.useCallback((k,{deletedFetchers:P,newErrors:I,flushSync:O,viewTransitionOpts:j})=>{I&&r&&Object.values(I).forEach(V=>r(V,{location:k.location,params:k.matches[0]?.params??{},unstable_pattern:bN(k.matches)})),k.fetchers.forEach((V,F)=>{V.data!==void 0&&S.current.set(F,V.data)}),P.forEach(V=>S.current.delete(V)),zue(O===!1||e!=null,'You provided the `flushSync` option to a router update, but you are not using the `` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let B=t.window!=null&&t.window.document!=null&&typeof t.window.document.startViewTransition=="function";if(zue(j==null||B,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!j||!B){e&&O?e(()=>o(k)):n===!1?o(k):D.startTransition(()=>{n===!0&&l(V=>$ue(V,k)),o(k)});return}if(e&&O){e(()=>{m&&(h?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let V=t.window.document.startViewTransition(()=>{e(()=>o(k))});V.finished.finally(()=>{e(()=>{p(void 0),v(void 0),u(void 0),d({isTransitioning:!1})})}),e(()=>v(V));return}m?(h?.resolve(),m.skipTransition(),w({state:k,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(u(k),d({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[t.window,e,m,h,n,l,r]);D.useLayoutEffect(()=>t.subscribe(A),[t,A]),D.useEffect(()=>{f.isTransitioning&&!f.flushSync&&p(new PJe)},[f]),D.useEffect(()=>{if(h&&c&&t.window){let k=c,P=h.promise,I=t.window.document.startViewTransition(async()=>{n===!1?o(k):D.startTransition(()=>{n===!0&&l(O=>$ue(O,k)),o(k)}),await P});I.finished.finally(()=>{p(void 0),v(void 0),u(void 0),d({isTransitioning:!1})}),v(I)}},[c,h,t.window,n,l]),D.useEffect(()=>{h&&c&&s.location.key===c.location.key&&h.resolve()},[h,m,s.location,c]),D.useEffect(()=>{!f.isTransitioning&&y&&(u(y.state),d({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),w(void 0))},[f.isTransitioning,y]);let E=D.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:k=>t.navigate(k),push:(k,P,I)=>t.navigate(k,{state:P,preventScrollReset:I?.preventScrollReset}),replace:(k,P,I)=>t.navigate(k,{replace:!0,state:P,preventScrollReset:I?.preventScrollReset})}),[t]),T=t.basename||"/",C=D.useMemo(()=>({router:t,navigator:E,static:!1,basename:T,onError:r}),[t,E,T,r]);return D.createElement(D.Fragment,null,D.createElement(jw.Provider,{value:C},D.createElement(xN.Provider,{value:s},D.createElement(RIe.Provider,{value:S.current},D.createElement(vee.Provider,{value:f},D.createElement(RJe,{basename:T,location:s.location,navigationType:s.historyAction,navigator:E,unstable_useTransitions:n},D.createElement(OJe,{routes:t.routes,future:t.future,state:s,onError:r})))))),null)}function $ue(t,e){return{...t,navigation:e.navigation.state!=="idle"?e.navigation:t.navigation,revalidation:e.revalidation!=="idle"?e.revalidation:t.revalidation,actionData:e.navigation.state!=="submitting"?e.actionData:t.actionData,fetchers:e.fetchers}}var OJe=D.memo(jJe);function jJe({routes:t,future:e,state:r,onError:n}){return hJe(t,void 0,r,n,e)}function Jh({to:t,replace:e,state:r,relative:n}){Ni(E_()," may be used only in the context of a component.");let{static:a}=D.useContext(vd);zs(!a," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:i}=D.useContext(Ah),{pathname:o}=Rp(),s=Ro(),l=_M(t,AM(i),o,n==="path"),c=JSON.stringify(l);return D.useEffect(()=>{s(JSON.parse(c),{replace:e,state:r,relative:n})},[s,c,n,e,r]),null}function FK(t){return dJe(t.context)}function RJe({basename:t="/",children:e=null,location:r,navigationType:n="POP",navigator:a,static:i=!1,unstable_useTransitions:o}){Ni(!E_(),"You cannot render a inside another . You should never have more than one in your app.");let s=t.replace(/^\/*/,"/"),l=D.useMemo(()=>({basename:s,navigator:a,static:i,unstable_useTransitions:o,future:{}}),[s,a,i,o]);typeof r=="string"&&(r=xb(r));let{pathname:c="/",search:u="",hash:f="",state:d=null,key:h="default"}=r,p=D.useMemo(()=>{let m=mh(c,s);return m==null?null:{location:{pathname:m,search:u,hash:f,state:d,key:h},navigationType:n}},[s,c,u,f,d,h,n]);return zs(p!=null,` is not able to match the URL "${c}${u}${f}" because it does not start with the basename, so the won't render anything.`),p==null?null:D.createElement(vd.Provider,{value:l},D.createElement(EM.Provider,{children:e,value:p}))}var bR="get",xR="application/x-www-form-urlencoded";function CM(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function DJe(t){return CM(t)&&t.tagName.toLowerCase()==="button"}function MJe(t){return CM(t)&&t.tagName.toLowerCase()==="form"}function LJe(t){return CM(t)&&t.tagName.toLowerCase()==="input"}function BJe(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function FJe(t,e){return t.button===0&&(!e||e==="_self")&&!BJe(t)}function UK(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,r)=>{let n=t[r];return e.concat(Array.isArray(n)?n.map(a=>[r,a]):[[r,n]])},[]))}function UJe(t,e){let r=UK(t);return e&&e.forEach((n,a)=>{r.has(a)||e.getAll(a).forEach(i=>{r.append(a,i)})}),r}var GI=null;function zJe(){if(GI===null)try{new FormData(document.createElement("form"),0),GI=!1}catch{GI=!0}return GI}var VJe=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function t9(t){return t!=null&&!VJe.has(t)?(zs(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${xR}"`),null):t}function $Je(t,e){let r,n,a,i,o;if(MJe(t)){let s=t.getAttribute("action");n=s?mh(s,e):null,r=t.getAttribute("method")||bR,a=t9(t.getAttribute("enctype"))||xR,i=new FormData(t)}else if(DJe(t)||LJe(t)&&(t.type==="submit"||t.type==="image")){let s=t.form;if(s==null)throw new Error('Cannot submit a + `}};N.styles=[E,te,ie,Ae];P([d()],N.prototype,"size",void 0);P([d({type:Boolean})],N.prototype,"disabled",void 0);P([d()],N.prototype,"icon",void 0);P([d()],N.prototype,"iconColor",void 0);N=P([u("wui-icon-link")],N);const Te=v` + button { + display: block; + display: flex; + align-items: center; + padding: var(--wui-spacing-xxs); + gap: var(--wui-spacing-xxs); + transition: all var(--wui-ease-out-power-1) var(--wui-duration-md); + border-radius: var(--wui-border-radius-xxs); + } + + wui-image { + border-radius: 100%; + width: var(--wui-spacing-xl); + height: var(--wui-spacing-xl); + } + + wui-icon-box { + width: var(--wui-spacing-xl); + height: var(--wui-spacing-xl); + } + + button:hover { + background-color: var(--wui-color-gray-glass-002); + } + + button:active { + background-color: var(--wui-color-gray-glass-005); + } +`;var ne=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let U=class extends f{constructor(){super(...arguments),this.imageSrc=""}render(){return a``}imageTemplate(){return this.imageSrc?a``:a``}};U.styles=[E,te,ie,Te];ne([d()],U.prototype,"imageSrc",void 0);U=ne([u("wui-select")],U);const Oe=v` + :host { + height: 64px; + } + + wui-text { + text-transform: capitalize; + } + + wui-flex.w3m-header-title { + transform: translateY(0); + opacity: 1; + } + + wui-flex.w3m-header-title[view-direction='prev'] { + animation: + slide-down-out 120ms forwards var(--wui-ease-out-power-2), + slide-down-in 120ms forwards var(--wui-ease-out-power-2); + animation-delay: 0ms, 200ms; + } + + wui-flex.w3m-header-title[view-direction='next'] { + animation: + slide-up-out 120ms forwards var(--wui-ease-out-power-2), + slide-up-in 120ms forwards var(--wui-ease-out-power-2); + animation-delay: 0ms, 200ms; + } + + wui-icon-link[data-hidden='true'] { + opacity: 0 !important; + pointer-events: none; + } + + @keyframes slide-up-out { + from { + transform: translateY(0px); + opacity: 1; + } + to { + transform: translateY(3px); + opacity: 0; + } + } + + @keyframes slide-up-in { + from { + transform: translateY(-3px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } + } + + @keyframes slide-down-out { + from { + transform: translateY(0px); + opacity: 1; + } + to { + transform: translateY(-3px); + opacity: 0; + } + } + + @keyframes slide-down-in { + from { + transform: translateY(3px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } + } +`;var y=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const Ee=["SmartSessionList"];function K(){const r=l.state.data?.connector?.name,e=l.state.data?.wallet?.name,t=l.state.data?.network?.name,o=e??r,n=M.getConnectors();return{Connect:`Connect ${n.length===1&&n[0]?.id==="w3m-email"?"Email":""} Wallet`,Create:"Create Wallet",ChooseAccountName:void 0,Account:void 0,AccountSettings:void 0,AllWallets:"All Wallets",ApproveTransaction:"Approve Transaction",BuyInProgress:"Buy",ConnectingExternal:o??"Connect Wallet",ConnectingWalletConnect:o??"WalletConnect",ConnectingWalletConnectBasic:"WalletConnect",ConnectingSiwe:"Sign In",Convert:"Convert",ConvertSelectToken:"Select token",ConvertPreview:"Preview convert",Downloads:o?`Get ${o}`:"Downloads",EmailLogin:"Email Login",EmailVerifyOtp:"Confirm Email",EmailVerifyDevice:"Register Device",GetWallet:"Get a wallet",Networks:"Choose Network",OnRampProviders:"Choose Provider",OnRampActivity:"Activity",OnRampTokenSelect:"Select Token",OnRampFiatSelect:"Select Currency",Pay:"How you pay",Profile:void 0,SwitchNetwork:t??"Switch Network",SwitchAddress:"Switch Address",Transactions:"Activity",UnsupportedChain:"Switch Network",UpgradeEmailWallet:"Upgrade your Wallet",UpdateEmailWallet:"Edit Email",UpdateEmailPrimaryOtp:"Confirm Current Email",UpdateEmailSecondaryOtp:"Confirm New Email",WhatIsABuy:"What is Buy?",RegisterAccountName:"Choose name",RegisterAccountNameSuccess:"",WalletReceive:"Receive",WalletCompatibleNetworks:"Compatible Networks",Swap:"Swap",SwapSelectToken:"Select token",SwapPreview:"Preview swap",WalletSend:"Send",WalletSendPreview:"Review send",WalletSendSelectToken:"Select Token",WhatIsANetwork:"What is a network?",WhatIsAWallet:"What is a wallet?",ConnectWallets:"Connect wallet",ConnectSocials:"All socials",ConnectingSocial:F.state.socialProvider?F.state.socialProvider:"Connect Social",ConnectingMultiChain:"Select chain",ConnectingFarcaster:"Farcaster",SwitchActiveChain:"Switch chain",SmartSessionCreated:void 0,SmartSessionList:"Smart Sessions",SIWXSignMessage:"Sign In",PayLoading:"Payment in progress"}}let h=class extends f{constructor(){super(),this.unsubscribe=[],this.heading=K()[l.state.view],this.network=m.state.activeCaipNetwork,this.networkImage=H.getNetworkImage(this.network),this.showBack=!1,this.prevHistoryLength=1,this.view=l.state.view,this.viewDirection="",this.headerText=K()[l.state.view],this.unsubscribe.push(fe.subscribeNetworkImages(()=>{this.networkImage=H.getNetworkImage(this.network)}),l.subscribeKey("view",e=>{setTimeout(()=>{this.view=e,this.headerText=K()[e]},k.ANIMATION_DURATIONS.HeaderText),this.onViewChange(),this.onHistoryChange()}),m.subscribeKey("activeCaipNetwork",e=>{this.network=e,this.networkImage=H.getNetworkImage(this.network)}))}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){return a` + + ${this.leftHeaderTemplate()} ${this.titleTemplate()} ${this.rightHeaderTemplate()} + + `}onWalletHelp(){q.sendEvent({type:"track",event:"CLICK_WALLET_HELP"}),l.push("WhatIsAWallet")}async onClose(){await oe.safeClose()}rightHeaderTemplate(){const e=T?.state?.features?.smartSessions;return l.state.view!=="Account"||!e?this.closeButtonTemplate():a` + l.push("SmartSessionList")} + data-testid="w3m-header-smart-sessions" + > + ${this.closeButtonTemplate()} + `}closeButtonTemplate(){return a` + + `}titleTemplate(){const e=Ee.includes(this.view);return a` + + ${this.headerText} + ${e?a`Beta`:null} + + `}leftHeaderTemplate(){const{view:e}=l.state,t=e==="Connect",o=T.state.enableEmbedded,n=e==="ApproveTransaction",i=e==="ConnectingSiwe",s=e==="Account",c=T.state.enableNetworkSwitch,G=n||i||t&&o;return s&&c?a``:this.showBack&&!G?a``:a``}onNetworks(){this.isAllowedNetworkSwitch()&&(q.sendEvent({type:"track",event:"CLICK_NETWORKS"}),l.push("Networks"))}isAllowedNetworkSwitch(){const e=m.getAllRequestedCaipNetworks(),t=e?e.length>1:!1,o=e?.find(({id:n})=>n===this.network?.id);return t||!o}getPadding(){return this.heading?["l","2l","l","2l"]:["0","2l","0","2l"]}onViewChange(){const{history:e}=l.state;let t=k.VIEW_DIRECTION.Next;e.length1&&!this.showBack&&t?(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!0,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"})):e.length<=1&&this.showBack&&t&&(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!1,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}onGoBack(){l.goBack()}};h.styles=Oe;y([w()],h.prototype,"heading",void 0);y([w()],h.prototype,"network",void 0);y([w()],h.prototype,"networkImage",void 0);y([w()],h.prototype,"showBack",void 0);y([w()],h.prototype,"prevHistoryLength",void 0);y([w()],h.prototype,"view",void 0);y([w()],h.prototype,"viewDirection",void 0);y([w()],h.prototype,"headerText",void 0);h=y([u("w3m-header")],h);const Ie=v` + :host { + display: flex; + column-gap: var(--wui-spacing-s); + align-items: center; + padding: var(--wui-spacing-xs) var(--wui-spacing-m) var(--wui-spacing-xs) var(--wui-spacing-xs); + border-radius: var(--wui-border-radius-s); + border: 1px solid var(--wui-color-gray-glass-005); + box-sizing: border-box; + background-color: var(--wui-color-bg-175); + box-shadow: + 0px 14px 64px -4px rgba(0, 0, 0, 0.15), + 0px 8px 22px -6px rgba(0, 0, 0, 0.15); + + max-width: 300px; + } + + :host wui-loading-spinner { + margin-left: var(--wui-spacing-3xs); + } +`;var R=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let b=class extends f{constructor(){super(...arguments),this.backgroundColor="accent-100",this.iconColor="accent-100",this.icon="checkmark",this.message="",this.loading=!1,this.iconType="default"}render(){return a` + ${this.templateIcon()} + ${this.message} + `}templateIcon(){return this.loading?a``:this.iconType==="default"?a``:a``}};b.styles=[E,Ie];R([d()],b.prototype,"backgroundColor",void 0);R([d()],b.prototype,"iconColor",void 0);R([d()],b.prototype,"icon",void 0);R([d()],b.prototype,"message",void 0);R([d()],b.prototype,"loading",void 0);R([d()],b.prototype,"iconType",void 0);b=R([u("wui-snackbar")],b);const Pe=v` + :host { + display: block; + position: absolute; + opacity: 0; + pointer-events: none; + top: 11px; + left: 50%; + width: max-content; + } +`;var re=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const _e={loading:void 0,success:{backgroundColor:"success-100",iconColor:"success-100",icon:"checkmark"},error:{backgroundColor:"error-100",iconColor:"error-100",icon:"close"}};let z=class extends f{constructor(){super(),this.unsubscribe=[],this.timeout=void 0,this.open=$.state.open,this.unsubscribe.push($.subscribeKey("open",e=>{this.open=e,this.onOpen()}))}disconnectedCallback(){clearTimeout(this.timeout),this.unsubscribe.forEach(e=>e())}render(){const{message:e,variant:t,svg:o}=$.state,n=_e[t],{icon:i,iconColor:s}=o??n??{};return a` + + `}onOpen(){clearTimeout(this.timeout),this.open?(this.animate([{opacity:0,transform:"translateX(-50%) scale(0.85)"},{opacity:1,transform:"translateX(-50%) scale(1)"}],{duration:150,fill:"forwards",easing:"ease"}),this.timeout&&clearTimeout(this.timeout),$.state.autoClose&&(this.timeout=setTimeout(()=>$.hide(),2500))):this.animate([{opacity:1,transform:"translateX(-50%) scale(1)"},{opacity:0,transform:"translateX(-50%) scale(0.85)"}],{duration:150,fill:"forwards",easing:"ease"})}};z.styles=Pe;re([w()],z.prototype,"open",void 0);z=re([u("w3m-snackbar")],z);const Be=v` + :host { + pointer-events: none; + } + + :host > wui-flex { + display: var(--w3m-tooltip-display); + opacity: var(--w3m-tooltip-opacity); + padding: 9px var(--wui-spacing-s) 10px var(--wui-spacing-s); + border-radius: var(--wui-border-radius-xxs); + color: var(--wui-color-bg-100); + position: fixed; + top: var(--w3m-tooltip-top); + left: var(--w3m-tooltip-left); + transform: translate(calc(-50% + var(--w3m-tooltip-parent-width)), calc(-100% - 8px)); + max-width: calc(var(--w3m-modal-width) - var(--wui-spacing-xl)); + transition: opacity 0.2s var(--wui-ease-out-power-2); + will-change: opacity; + } + + :host([data-variant='shade']) > wui-flex { + background-color: var(--wui-color-bg-150); + border: 1px solid var(--wui-color-gray-glass-005); + } + + :host([data-variant='shade']) > wui-flex > wui-text { + color: var(--wui-color-fg-150); + } + + :host([data-variant='fill']) > wui-flex { + background-color: var(--wui-color-fg-100); + border: none; + } + + wui-icon { + position: absolute; + width: 12px !important; + height: 4px !important; + color: var(--wui-color-bg-150); + } + + wui-icon[data-placement='top'] { + bottom: 0px; + left: 50%; + transform: translate(-50%, 95%); + } + + wui-icon[data-placement='bottom'] { + top: 0; + left: 50%; + transform: translate(-50%, -95%) rotate(180deg); + } + + wui-icon[data-placement='right'] { + top: 50%; + left: 0; + transform: translate(-65%, -50%) rotate(90deg); + } + + wui-icon[data-placement='left'] { + top: 50%; + right: 0%; + transform: translate(65%, -50%) rotate(270deg); + } +`;var _=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let W=class extends f{constructor(){super(),this.unsubscribe=[],this.open=A.state.open,this.message=A.state.message,this.triggerRect=A.state.triggerRect,this.variant=A.state.variant,this.unsubscribe.push(A.subscribe(e=>{this.open=e.open,this.message=e.message,this.triggerRect=e.triggerRect,this.variant=e.variant}))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){this.dataset.variant=this.variant;const e=this.triggerRect.top,t=this.triggerRect.left;return this.style.cssText=` + --w3m-tooltip-top: ${e}px; + --w3m-tooltip-left: ${t}px; + --w3m-tooltip-parent-width: ${this.triggerRect.width/2}px; + --w3m-tooltip-display: ${this.open?"flex":"none"}; + --w3m-tooltip-opacity: ${this.open?1:0}; + `,a` + + ${this.message} + `}};W.styles=[Be];_([w()],W.prototype,"open",void 0);_([w()],W.prototype,"message",void 0);_([w()],W.prototype,"triggerRect",void 0);_([w()],W.prototype,"variant",void 0);W=_([u("w3m-tooltip"),u("w3m-tooltip")],W);const De=v` + :host { + --prev-height: 0px; + --new-height: 0px; + display: block; + } + + div.w3m-router-container { + transform: translateY(0); + opacity: 1; + } + + div.w3m-router-container[view-direction='prev'] { + animation: + slide-left-out 150ms forwards ease, + slide-left-in 150ms forwards ease; + animation-delay: 0ms, 200ms; + } + + div.w3m-router-container[view-direction='next'] { + animation: + slide-right-out 150ms forwards ease, + slide-right-in 150ms forwards ease; + animation-delay: 0ms, 200ms; + } + + @keyframes slide-left-out { + from { + transform: translateX(0px); + opacity: 1; + } + to { + transform: translateX(10px); + opacity: 0; + } + } + + @keyframes slide-left-in { + from { + transform: translateX(-10px); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } + } + + @keyframes slide-right-out { + from { + transform: translateX(0px); + opacity: 1; + } + to { + transform: translateX(-10px); + opacity: 0; + } + } + + @keyframes slide-right-in { + from { + transform: translateX(10px); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } + } +`;var Y=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let O=class extends f{constructor(){super(),this.resizeObserver=void 0,this.prevHeight="0px",this.prevHistoryLength=1,this.unsubscribe=[],this.view=l.state.view,this.viewDirection="",this.unsubscribe.push(l.subscribeKey("view",e=>this.onViewChange(e)))}firstUpdated(){this.resizeObserver=new ResizeObserver(([e])=>{const t=`${e?.contentRect.height}px`;this.prevHeight!=="0px"&&(this.style.setProperty("--prev-height",this.prevHeight),this.style.setProperty("--new-height",t),this.style.animation="w3m-view-height 150ms forwards ease",this.style.height="auto"),setTimeout(()=>{this.prevHeight=t,this.style.animation="unset"},k.ANIMATION_DURATIONS.ModalHeight)}),this.resizeObserver?.observe(this.getWrapper())}disconnectedCallback(){this.resizeObserver?.unobserve(this.getWrapper()),this.unsubscribe.forEach(e=>e())}render(){return a`
+ ${this.viewTemplate()} +
`}viewTemplate(){switch(this.view){case"AccountSettings":return a``;case"Account":return a``;case"AllWallets":return a``;case"ApproveTransaction":return a``;case"BuyInProgress":return a``;case"ChooseAccountName":return a``;case"Connect":return a``;case"Create":return a``;case"ConnectingWalletConnect":return a``;case"ConnectingWalletConnectBasic":return a``;case"ConnectingExternal":return a``;case"ConnectingSiwe":return a``;case"ConnectWallets":return a``;case"ConnectSocials":return a``;case"ConnectingSocial":return a``;case"Downloads":return a``;case"EmailLogin":return a``;case"EmailVerifyOtp":return a``;case"EmailVerifyDevice":return a``;case"GetWallet":return a``;case"Networks":return a``;case"SwitchNetwork":return a``;case"Profile":return a``;case"SwitchAddress":return a``;case"Transactions":return a``;case"OnRampProviders":return a``;case"OnRampActivity":return a``;case"OnRampTokenSelect":return a``;case"OnRampFiatSelect":return a``;case"UpgradeEmailWallet":return a``;case"UpdateEmailWallet":return a``;case"UpdateEmailPrimaryOtp":return a``;case"UpdateEmailSecondaryOtp":return a``;case"UnsupportedChain":return a``;case"Swap":return a``;case"SwapSelectToken":return a``;case"SwapPreview":return a``;case"WalletSend":return a``;case"WalletSendSelectToken":return a``;case"WalletSendPreview":return a``;case"WhatIsABuy":return a``;case"WalletReceive":return a``;case"WalletCompatibleNetworks":return a``;case"WhatIsAWallet":return a``;case"ConnectingMultiChain":return a``;case"WhatIsANetwork":return a``;case"ConnectingFarcaster":return a``;case"SwitchActiveChain":return a``;case"RegisterAccountName":return a``;case"RegisterAccountNameSuccess":return a``;case"SmartSessionCreated":return a``;case"SmartSessionList":return a``;case"SIWXSignMessage":return a``;case"Pay":return a``;case"PayLoading":return a``;default:return a``}}onViewChange(e){A.hide();let t=k.VIEW_DIRECTION.Next;const{history:o}=l.state;o.length{this.view=e},k.ANIMATION_DURATIONS.ViewTransition)}getWrapper(){return this.shadowRoot?.querySelector("div")}};O.styles=De;Y([w()],O.prototype,"view",void 0);Y([w()],O.prototype,"viewDirection",void 0);O=Y([u("w3m-router")],O);const je=v` + :host { + z-index: var(--w3m-z-index); + display: block; + backface-visibility: hidden; + will-change: opacity; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + pointer-events: none; + opacity: 0; + background-color: var(--wui-cover); + transition: opacity 0.2s var(--wui-ease-out-power-2); + will-change: opacity; + } + + :host(.open) { + opacity: 1; + } + + :host(.appkit-modal) { + position: relative; + pointer-events: unset; + background: none; + width: 100%; + opacity: 1; + } + + wui-card { + max-width: var(--w3m-modal-width); + width: 100%; + position: relative; + animation: zoom-in 0.2s var(--wui-ease-out-power-2); + animation-fill-mode: backwards; + outline: none; + transition: + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: border-radius, background-color; + } + + :host(.appkit-modal) wui-card { + max-width: 400px; + } + + wui-card[shake='true'] { + animation: + zoom-in 0.2s var(--wui-ease-out-power-2), + w3m-shake 0.5s var(--wui-ease-out-power-2); + } + + wui-flex { + overflow-x: hidden; + overflow-y: auto; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + + @media (max-height: 700px) and (min-width: 431px) { + wui-flex { + align-items: flex-start; + } + + wui-card { + margin: var(--wui-spacing-xxl) 0px; + } + } + + @media (max-width: 430px) { + wui-flex { + align-items: flex-end; + } + + wui-card { + max-width: 100%; + border-bottom-left-radius: var(--local-border-bottom-mobile-radius); + border-bottom-right-radius: var(--local-border-bottom-mobile-radius); + border-bottom: none; + animation: slide-in 0.2s var(--wui-ease-out-power-2); + } + + wui-card[shake='true'] { + animation: + slide-in 0.2s var(--wui-ease-out-power-2), + w3m-shake 0.5s var(--wui-ease-out-power-2); + } + } + + @keyframes zoom-in { + 0% { + transform: scale(0.95) translateY(0); + } + 100% { + transform: scale(1) translateY(0); + } + } + + @keyframes slide-in { + 0% { + transform: scale(1) translateY(50px); + } + 100% { + transform: scale(1) translateY(0); + } + } + + @keyframes w3m-shake { + 0% { + transform: scale(1) rotate(0deg); + } + 20% { + transform: scale(1) rotate(-1deg); + } + 40% { + transform: scale(1) rotate(1.5deg); + } + 60% { + transform: scale(1) rotate(-1.5deg); + } + 80% { + transform: scale(1) rotate(1deg); + } + 100% { + transform: scale(1) rotate(0deg); + } + } + + @keyframes w3m-view-height { + from { + height: var(--prev-height); + } + to { + height: var(--new-height); + } + } +`;var C=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const J="scroll-lock";class x extends f{constructor(){super(),this.unsubscribe=[],this.abortController=void 0,this.hasPrefetched=!1,this.enableEmbedded=T.state.enableEmbedded,this.open=g.state.open,this.caipAddress=m.state.activeCaipAddress,this.caipNetwork=m.state.activeCaipNetwork,this.shake=g.state.shake,this.filterByNamespace=M.state.filterByNamespace,this.initializeTheming(),D.prefetchAnalyticsConfig(),this.unsubscribe.push(g.subscribeKey("open",e=>e?this.onOpen():this.onClose()),g.subscribeKey("shake",e=>this.shake=e),m.subscribeKey("activeCaipNetwork",e=>this.onNewNetwork(e)),m.subscribeKey("activeCaipAddress",e=>this.onNewAddress(e)),T.subscribeKey("enableEmbedded",e=>this.enableEmbedded=e),M.subscribeKey("filterByNamespace",e=>{this.filterByNamespace!==e&&!m.getAccountData(e)?.caipAddress&&(D.fetchRecommendedWallets(),this.filterByNamespace=e)}))}firstUpdated(){if(this.caipAddress){if(this.enableEmbedded){g.close(),this.prefetch();return}this.onNewAddress(this.caipAddress)}this.open&&this.onOpen(),this.enableEmbedded&&this.prefetch()}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),this.onRemoveKeyboardListener()}render(){return this.style.cssText=` + --local-border-bottom-mobile-radius: ${this.enableEmbedded?"clamp(0px, var(--wui-border-radius-l), 44px)":"0px"}; + `,this.enableEmbedded?a`${this.contentTemplate()} + `:this.open?a` + + ${this.contentTemplate()} + + + `:null}contentTemplate(){return a` + + + + + `}async onOverlayClick(e){e.target===e.currentTarget&&await this.handleClose()}async handleClose(){await oe.safeClose()}initializeTheming(){const{themeVariables:e,themeMode:t}=ge.state,o=Ce.getColorTheme(t);be(e,o)}onClose(){this.open=!1,this.classList.remove("open"),this.onScrollUnlock(),$.hide(),this.onRemoveKeyboardListener()}onOpen(){this.open=!0,this.classList.add("open"),this.onScrollLock(),this.onAddKeyboardListener()}onScrollLock(){const e=document.createElement("style");e.dataset.w3m=J,e.textContent=` + body { + touch-action: none; + overflow: hidden; + overscroll-behavior: contain; + } + w3m-modal { + pointer-events: auto; + } + `,document.head.appendChild(e)}onScrollUnlock(){const e=document.head.querySelector(`style[data-w3m="${J}"]`);e&&e.remove()}onAddKeyboardListener(){this.abortController=new AbortController;const e=this.shadowRoot?.querySelector("wui-card");e?.focus(),window.addEventListener("keydown",t=>{if(t.key==="Escape")this.handleClose();else if(t.key==="Tab"){const{tagName:o}=t.target;o&&!o.includes("W3M-")&&!o.includes("WUI-")&&e?.focus()}},this.abortController)}onRemoveKeyboardListener(){this.abortController?.abort(),this.abortController=void 0}async onNewAddress(e){const t=m.state.isSwitchingNamespace,o=ye.getPlainAddress(e);!o&&!t?g.close():t&&o&&l.goBack(),await ee.initializeIfEnabled(),this.caipAddress=e,m.setIsSwitchingNamespace(!1)}onNewNetwork(e){const t=this.caipNetwork,o=t?.caipNetworkId?.toString(),n=t?.chainNamespace,i=e?.caipNetworkId?.toString(),s=e?.chainNamespace,c=o!==i,se=c&&!(n!==s),ce=t?.name===xe.UNSUPPORTED_NETWORK_NAME,le=l.state.view==="ConnectingExternal",we=!m.getAccountData(e?.chainNamespace)?.caipAddress,de=l.state.view==="UnsupportedChain",ue=g.state.open;let B=!1;ue&&!le&&(we?c&&(B=!0):(de||se&&!ce)&&(B=!0)),B&&l.state.view!=="SIWXSignMessage"&&l.goBack(),this.caipNetwork=e}prefetch(){this.hasPrefetched||(D.prefetch(),D.fetchWalletsByPage({page:1}),this.hasPrefetched=!0)}}x.styles=je;C([d({type:Boolean})],x.prototype,"enableEmbedded",void 0);C([w()],x.prototype,"open",void 0);C([w()],x.prototype,"caipAddress",void 0);C([w()],x.prototype,"caipNetwork",void 0);C([w()],x.prototype,"shake",void 0);C([w()],x.prototype,"filterByNamespace",void 0);let Q=class extends x{};Q=C([u("w3m-modal")],Q);let Z=class extends x{};Z=C([u("appkit-modal")],Z);export{Z as AppKitModal,Q as W3mModal,x as W3mModalBase}; diff --git a/dist/assets/wallet-DRGGQpIZ.js b/dist/assets/wallet-DRGGQpIZ.js new file mode 100644 index 0000000..eaee838 --- /dev/null +++ b/dist/assets/wallet-DRGGQpIZ.js @@ -0,0 +1,8 @@ +import{w as o}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=o` + +`;export{i as walletSvg}; diff --git a/dist/assets/wallet-placeholder-CkOIHNYS.js b/dist/assets/wallet-placeholder-CkOIHNYS.js new file mode 100644 index 0000000..5267d31 --- /dev/null +++ b/dist/assets/wallet-placeholder-CkOIHNYS.js @@ -0,0 +1,14 @@ +import{w as a}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=a` + + + + +`;export{i as walletPlaceholderSvg}; diff --git a/dist/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js b/dist/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js new file mode 100644 index 0000000..b8b7207 --- /dev/null +++ b/dist/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js @@ -0,0 +1 @@ +var C="data:image/svg+xml,%3Csvg%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2028%2028%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22%233B99FC%22%2F%3E%0A%3Cpath%20d%3D%22M8.38969%2010.3739C11.4882%207.27538%2016.5118%207.27538%2019.6103%2010.3739L19.9832%2010.7468C20.1382%2010.9017%2020.1382%2011.1529%2019.9832%2011.3078L18.7076%2012.5835C18.6301%2012.6609%2018.5045%2012.6609%2018.4271%2012.5835L17.9139%2012.0703C15.7523%209.9087%2012.2477%209.9087%2010.0861%2012.0703L9.53655%2012.6198C9.45909%2012.6973%209.3335%2012.6973%209.25604%2012.6198L7.98039%2011.3442C7.82547%2011.1893%207.82547%2010.9381%207.98039%2010.7832L8.38969%2010.3739ZM22.2485%2013.012L23.3838%2014.1474C23.5387%2014.3023%2023.5387%2014.5535%2023.3838%2014.7084L18.2645%2019.8277C18.1096%2019.9827%2017.8584%2019.9827%2017.7035%2019.8277C17.7035%2019.8277%2017.7035%2019.8277%2017.7035%2019.8277L14.0702%2016.1944C14.0314%2016.1557%2013.9686%2016.1557%2013.9299%2016.1944C13.9299%2016.1944%2013.9299%2016.1944%2013.9299%2016.1944L10.2966%2019.8277C10.1417%2019.9827%209.89053%2019.9827%209.73561%2019.8278C9.7356%2019.8278%209.7356%2019.8277%209.7356%2019.8277L4.61619%2014.7083C4.46127%2014.5534%204.46127%2014.3022%204.61619%2014.1473L5.75152%2013.012C5.90645%2012.857%206.15763%2012.857%206.31255%2013.012L9.94595%2016.6454C9.98468%2016.6841%2010.0475%2016.6841%2010.0862%2016.6454C10.0862%2016.6454%2010.0862%2016.6454%2010.0862%2016.6454L13.7194%2013.012C13.8743%2012.857%2014.1255%2012.857%2014.2805%2013.012C14.2805%2013.012%2014.2805%2013.012%2014.2805%2013.012L17.9139%2016.6454C17.9526%2016.6841%2018.0154%2016.6841%2018.0541%2016.6454L21.6874%2013.012C21.8424%2012.8571%2022.0936%2012.8571%2022.2485%2013.012Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/dist/assets/walletconnect-Cdm-8Yfn.js b/dist/assets/walletconnect-Cdm-8Yfn.js new file mode 100644 index 0000000..6e2ccce --- /dev/null +++ b/dist/assets/walletconnect-Cdm-8Yfn.js @@ -0,0 +1,30 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const o=l` + + +`,c=l` + + + + + + + + + + + +`,r=l` + + + + + + +`;export{r as walletConnectBrownSvg,c as walletConnectLightBrownSvg,o as walletConnectSvg}; diff --git a/dist/assets/warning-circle-BP-PKFQQ.js b/dist/assets/warning-circle-BP-PKFQQ.js new file mode 100644 index 0000000..f08522d --- /dev/null +++ b/dist/assets/warning-circle-BP-PKFQQ.js @@ -0,0 +1,12 @@ +import{w as r}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const n=r` + + +`;export{n as warningCircleSvg}; diff --git a/dist/assets/x-BhgnxxC9.js b/dist/assets/x-BhgnxxC9.js new file mode 100644 index 0000000..41c4724 --- /dev/null +++ b/dist/assets/x-BhgnxxC9.js @@ -0,0 +1,12 @@ +import{w as l}from"./core-Cmtj-tL6.js";import"./index-BJmn9h7A.js";import"./index.es-DwcFMDuM.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const o=l` + + + + + + + +`;export{o as xSvg}; diff --git a/dist/assets/xdc-KJ3TDBYO-DNV6zchh.js b/dist/assets/xdc-KJ3TDBYO-DNV6zchh.js new file mode 100644 index 0000000..962efec --- /dev/null +++ b/dist/assets/xdc-KJ3TDBYO-DNV6zchh.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23B7B5B1%22%20d%3D%22M8%208h12v12H8z%22%2F%3E%3Cpath%20fill%3D%22%23B7B5B1%22%20d%3D%22M28%2012.667C24.786-5.97.448-2.363.011%2012.667c1.4.728%202.285%201.176%202.285%201.176s-.74.448-2.296%201.434c2.8%2018.278%2026.723%2015.624%2028-.023-1.523-.93-2.352-1.422-2.352-1.422s.717-.336%202.352-1.165Zm-11.973%206.507-2.285-3.92-2.318%203.92-1.758-.123%203.304-5.566L9.99%208.68l1.792-.157%202.117%203.562%202.117-3.405%201.669.045-2.778%204.726%203.058%205.69-1.96.045.022-.012Z%22%2F%3E%3Cpath%20fill%3D%22%23244B81%22%20d%3D%22M26.869%2011.94C22.512-4.627%202.52-.147%201.154%2011.94a249.514%20249.514%200%200%201%203.404%201.926l-3.416%202.172c2.98%2015.927%2024.54%2012.858%2025.727-.022-2.173-1.366-3.461-2.162-3.461-2.162s2.934-1.635%203.46-1.915Zm-10.842%207.246-2.285-3.92-2.318%203.92-1.747-.124%203.304-5.566L10%208.691l1.793-.157%202.116%203.562%202.117-3.405%201.669.045-2.766%204.726%203.057%205.69-1.96.045v-.011Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/zetachain-TLDS5IPW-Udhyw16T.js b/dist/assets/zetachain-TLDS5IPW-Udhyw16T.js new file mode 100644 index 0000000..b938f61 --- /dev/null +++ b/dist/assets/zetachain-TLDS5IPW-Udhyw16T.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%20viewBox%3D%220%200%20178%20178%22%3E%3Ccircle%20cx%3D%2289%22%20cy%3D%2289%22%20r%3D%2289%22%20fill%3D%22%23005741%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M112.109%20108.673v12.02H62.523c.684-7.911%203.236-13.477%2012.064-21.304l37.522-32.01v28.09h13.507V43.79H48.813v25.76H62.32V57.297h40.803L65.784%2089.163l-.089.085c-15.648%2013.854-16.892%2025.036-16.892%2038.211v6.751h76.818v-25.527h-13.507z%22%2F%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/zh_CN-HJBN674C-Baf0GEeT.js b/dist/assets/zh_CN-HJBN674C-Baf0GEeT.js new file mode 100644 index 0000000..60ab59d --- /dev/null +++ b/dist/assets/zh_CN-HJBN674C-Baf0GEeT.js @@ -0,0 +1,1487 @@ +var u=`{ + "connect_wallet": { + "label": "连接钱包", + "wrong_network": { + "label": "错误的网络" + } + }, + "intro": { + "title": "什么是钱包?", + "description": "钱包用于发送、接收、存储和显示数字资产。它也是一种新型的登录方式,无需在每个网站上创建新账户和密码。", + "digital_asset": { + "title": "您的数字资产之家", + "description": "钱包用于发送、接收、存储和显示像以太坊和NFT这样的数字资产。" + }, + "login": { + "title": "一种新的登录方式", + "description": "而不是在每个网站上创建新的账户和密码,只需连接您的钱包。" + }, + "get": { + "label": "获取钱包" + }, + "learn_more": { + "label": "了解更多" + } + }, + "sign_in": { + "label": "验证您的账户", + "description": "为了完成连接,您必须在钱包中签署一条消息,以验证您是此账户的所有者。", + "message": { + "send": "发送消息", + "preparing": "准备消息中...", + "cancel": "取消", + "preparing_error": "准备消息时出错,请重试!" + }, + "signature": { + "waiting": "等待签名...", + "verifying": "正在验证签名...", + "signing_error": "签署消息时出错,请重试!", + "verifying_error": "验证签名时出错,请重试!", + "oops_error": "哎呀,出了点问题!" + } + }, + "connect": { + "label": "连接", + "title": "连接钱包", + "new_to_ethereum": { + "description": "对以太坊钱包不熟悉?", + "learn_more": { + "label": "了解更多" + } + }, + "learn_more": { + "label": "了解更多" + }, + "recent": "近期", + "status": { + "opening": "正在打开 %{wallet}...", + "connecting": "正在连接", + "connect_mobile": "在 %{wallet}中继续", + "not_installed": "%{wallet} 尚未安装", + "not_available": "%{wallet} 不可用", + "confirm": "在扩展中确认连接", + "confirm_mobile": "在钱包中接受连接请求" + }, + "secondary_action": { + "get": { + "description": "没有 %{wallet}吗?", + "label": "获取" + }, + "install": { + "label": "安装" + }, + "retry": { + "label": "重试" + } + }, + "walletconnect": { + "description": { + "full": "需要官方的 WalletConnect 弹窗吗?", + "compact": "需要 WalletConnect 弹窗吗?" + }, + "open": { + "label": "打开" + } + } + }, + "connect_scan": { + "title": "使用 %{wallet}扫描", + "fallback_title": "使用您的手机扫描" + }, + "connector_group": { + "installed": "已安装", + "recommended": "推荐", + "other": "其他", + "popular": "流行", + "more": "更多", + "others": "其他的" + }, + "get": { + "title": "获取一个钱包", + "action": { + "label": "获取" + }, + "mobile": { + "description": "移动钱包" + }, + "extension": { + "description": "浏览器扩展" + }, + "mobile_and_extension": { + "description": "移动钱包和扩展" + }, + "mobile_and_desktop": { + "description": "移动和桌面钱包" + }, + "looking_for": { + "title": "不是你要找的吗?", + "mobile": { + "description": "在主屏幕上选择一个钱包,以开始使用不同的钱包提供商。" + }, + "desktop": { + "compact_description": "在主屏幕上选择一个钱包,以开始使用不同的钱包提供商。", + "wide_description": "在左侧选择一个钱包,以开始使用不同的钱包提供商。" + } + } + }, + "get_options": { + "title": "开始使用 %{wallet}", + "short_title": "获取 %{wallet}", + "mobile": { + "title": "%{wallet} 用于移动", + "description": "使用移动钱包探索以太坊的世界。", + "download": { + "label": "获取应用" + } + }, + "extension": { + "title": "%{wallet} 为 %{browser}", + "description": "从您最喜欢的网络浏览器直接访问您的钱包。", + "download": { + "label": "添加到 %{browser}" + } + }, + "desktop": { + "title": "%{wallet} 对于 %{platform}", + "description": "从您强大的桌面原生访问您的钱包。", + "download": { + "label": "添加到 %{platform}" + } + } + }, + "get_mobile": { + "title": "安装 %{wallet}", + "description": "用手机扫描下载 iOS 或 Android", + "continue": { + "label": "继续" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "连接" + }, + "learn_more": { + "label": "了解更多" + } + }, + "extension": { + "refresh": { + "label": "刷新" + }, + "learn_more": { + "label": "了解更多" + } + }, + "desktop": { + "connect": { + "label": "连接" + }, + "learn_more": { + "label": "了解更多" + } + } + }, + "chains": { + "title": "切换网络", + "wrong_network": "检测到错误的网络,请切换或断开连接以继续。", + "confirm": "在钱包中确认", + "switching_not_supported": "您的钱包不支持从 %{appName}切换网络。请尝试从您的钱包内部切换网络。", + "switching_not_supported_fallback": "您的钱包不支持从此应用切换网络。尝试从您的钱包内切换网络。", + "disconnect": "断开连接", + "connected": "已连接" + }, + "profile": { + "disconnect": { + "label": "断开连接" + }, + "copy_address": { + "label": "复制地址", + "copied": "已复制!" + }, + "explorer": { + "label": "在浏览器上查看更多" + }, + "transactions": { + "description": "%{appName} 交易将会出现在这里...", + "description_fallback": "您的交易将会出现在这里...", + "recent": { + "title": "最近交易" + }, + "clear": { + "label": "清除全部" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "将Ready添加到你的主屏幕,以便更快地访问你的钱包。", + "title": "打开 Ready 应用" + }, + "step2": { + "description": "创建钱包和用户名,或导入现有钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描二维码按钮" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "安装 BeraSig 扩展", + "description": "我们建议将 BeraSig 固定到任务栏,以便更轻松地访问您的钱包。" + }, + "step2": { + "title": "创建一个钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "打开Best Wallet应用", + "description": "将Best Wallet添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "我们建议将Bifrost Wallet放在您的主屏幕上,以便更快地访问。", + "title": "打开 Bifrost Wallet 应用" + }, + "step2": { + "description": "使用恢复短语创建或导入钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "我们建议您将Bitget钱包添加到主屏幕,以便更快地访问。", + "title": "打开Bitget钱包应用程序" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现一个连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + }, + "extension": { + "step1": { + "description": "我们建议您将Bitget钱包固定在任务栏,以便更快地访问您的钱包。", + "title": "安装Bitget Wallet扩展" + }, + "step2": { + "description": "确保使用安全的方式备份您的钱包。绝不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "我们建议您将Bitski固定在任务栏上,以便更快地访问您的钱包。", + "title": "安装Bitski扩展" + }, + "step2": { + "description": "请确保用安全的方法备份您的钱包。绝不与任何人共享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置完您的钱包后,点击下方以刷新浏览器并加载扩展程序。", + "title": "刷新您的浏览器" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "打开 Bitverse Wallet 应用", + "description": "将 Bitverse Wallet 添加到您的主屏幕上,以便更快访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "打开 Bloom 钱包应用", + "description": "我们建议将 Bloom 钱包添加到主屏幕上,以便更快地访问。" + }, + "step2": { + "description": "使用恢复短语创建或导入钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "拥有钱包后,点击连接以通过 Bloom 连接。应用中会出现一个连接提示,供您确认连接。", + "title": "点击连接" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "我们建议将 Bybit 添加到您的主屏幕上,以便更快访问您的钱包。", + "title": "打开 Bybit 应用" + }, + "step2": { + "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + }, + "extension": { + "step1": { + "description": "点击浏览器右上角并固定 Bybit Wallet,便于快速访问。", + "title": "安装 Bybit Wallet 扩展程序" + }, + "step2": { + "description": "创建新钱包或导入现有钱包。", + "title": "创建或导入钱包。" + }, + "step3": { + "description": "设置 Bybit Wallet 后,点击下方刷新浏览器并加载扩展程序。", + "title": "刷新您的浏览器" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "我们建议将Binance放在您的主屏幕上,以便更快地访问您的钱包。", + "title": "打开 Binance 应用" + }, + "step2": { + "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击WalletConnect按钮" + } + }, + "extension": { + "step1": { + "title": "安装Binance钱包扩展", + "description": "我们建议您将Binance钱包固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "我们建议将Coin98钱包放在您的主屏幕上,以便更快地访问您的钱包。", + "title": "打开Coin98钱包应用程序" + }, + "step2": { + "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现一个连接提示,让您连接您的钱包。", + "title": "点击WalletConnect按钮" + } + }, + "extension": { + "step1": { + "description": "点击浏览器右上角并固定Coin98钱包,以便轻松访问。", + "title": "安装Coin98钱包扩展" + }, + "step2": { + "description": "创建新钱包或导入现有钱包。", + "title": "创建或导入钱包。" + }, + "step3": { + "description": "设置完成Coin98 钱包后,单击下方以刷新浏览器并加载扩展程序。", + "title": "刷新您的浏览器" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "我们建议您把Coinbase钱包放到主屏幕上,以便更快地访问。", + "title": "打开Coinbase钱包应用" + }, + "step2": { + "description": "您可以轻松地使用云备份功能备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + }, + "extension": { + "step1": { + "description": "我们建议您将Coinbase钱包固定在任务栏上,以便更快地访问您的钱包。", + "title": "安装Coinbase钱包扩展" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。永远不要与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置好钱包后,点击下方以刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "我们建议将Compass Wallet固定在任务栏上,以便更快地访问您的钱包。", + "title": "安装Compass Wallet扩展" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "我们建议您将Core添加到主屏幕,以便更快地访问您的钱包。", + "title": "打开Core应用程序" + }, + "step2": { + "description": "您可以使用我们的手机备份功能轻松备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现连接提示,让您连接您的钱包。", + "title": "点击WalletConnect按钮" + } + }, + "extension": { + "step1": { + "description": "我们建议将 Core 固定到任务栏,以便更快地访问您的钱包。", + "title": "安装 Core 扩展" + }, + "step2": { + "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置好钱包后,点击下方以刷新浏览器并加载扩展。", + "title": "刷新你的浏览器" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "我们建议您将 FoxWallet 放到主屏幕上,以便更快的访问。", + "title": "打开 FoxWallet 应用" + }, + "step2": { + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人共享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现连接提示,让您连接您的钱包。", + "title": "点击扫描按钮" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "我们建议将 Frontier 钱包放在您的主屏幕上,以便更快地访问。", + "title": "打开 Frontier 钱包应用" + }, + "step2": { + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人共享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "扫描后,将出现连接提示,让您连接您的钱包。", + "title": "点击扫描按钮" + } + }, + "extension": { + "step1": { + "description": "我们建议您将Frontier钱包固定到任务栏,以便更快地访问您的钱包。", + "title": "安装Frontier钱包扩展" + }, + "step2": { + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置完成钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新你的浏览器" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "打开imToken应用", + "description": "将imToken应用放在您的主屏幕上,以更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入已有的钱包。" + }, + "step3": { + "title": "点击右上角的扫描图标", + "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "我们建议您将ioPay添加到主屏幕,以便更快地访问您的钱包。", + "title": "打开ioPay应用" + }, + "step2": { + "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击WalletConnect按钮" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "我们建议将 Kaikas 固定到任务栏上,以便更快访问您的钱包。", + "title": "安装 Kaikas 扩展程序" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + }, + "qr_code": { + "step1": { + "title": "打开 Kaikas 应用", + "description": "将 Kaikas 应用添加到您的主屏幕上,以便更快访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击右上角的扫描图标", + "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "我们建议将Kaia固定在您的任务栏上,以便更快地访问您的钱包。", + "title": "安装Kaia扩展程序" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + }, + "qr_code": { + "step1": { + "title": "打开Kaia应用", + "description": "将Kaia应用放在您的主屏幕上,以更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击右上角的扫描图标", + "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "打开Kraken Wallet应用程序", + "description": "将Kraken Wallet添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "打开 Kresus 钱包应用", + "description": "将Kresus钱包添加到主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "安装 Magic Eden 扩展程序", + "description": "我们建议将 Magic Eden 固定到任务栏,以便更轻松地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "打开 MetaMask 应用", + "description": "我们建议将 MetaMask 放在您的主屏幕上,以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享你的秘密短语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "扫描后,将出现连接提示,以便你连接你的钱包。" + } + }, + "extension": { + "step1": { + "title": "安装 MetaMask 扩展", + "description": "我们建议将MetaMask固定在您的任务栏上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "请务必使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "一旦您设置好您的钱包,点击下面刷新浏览器并加载扩展。" + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "安装 NestWallet 扩展程序", + "description": "我们建议将NestWallet固定到任务栏,以便更快速地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "打开OKX钱包应用程序", + "description": "我们建议将OKX钱包放在您的主屏幕上,以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。千万不要与任何人分享您的秘密短语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "扫描后,将出现一个连接提示,让您连接您的钱包。" + } + }, + "extension": { + "step1": { + "title": "安装 OKX 钱包扩展", + "description": "我们建议将 OKX 钱包固定到您的任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。千万不要与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "一旦你设置好你的钱包,点击下方刷新浏览器并加载扩展。" + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "打开Omni应用", + "description": "将Omni添加到你的主屏幕,以便更快地访问你的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新的钱包或导入现有的钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "点击首页的二维码图标,扫描代码并确认提示以连接。" + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "将 1inch Wallet 添加到您的主屏幕上,以便更快访问您的钱包。", + "title": "打开 1inch Wallet 应用" + }, + "step2": { + "description": "创建钱包和用户名,或导入现有钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描二维码按钮" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "打开TokenPocket应用", + "description": "我们建议将TokenPocket放在您的主屏幕上以便更快的访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "扫描后,将出现连接提示,供您连接钱包。" + } + }, + "extension": { + "step1": { + "title": "安装TokenPocket扩展", + "description": "我们建议将TokenPocket固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入一个钱包", + "description": "一定要使用安全的方法备份您的钱包。绝对不要与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置好您的钱包后,点击下面刷新浏览器并加载扩展。" + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "打开Trust Wallet应用", + "description": "将Trust Wallet放在主屏幕上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入一个钱包", + "description": "创建新的钱包或导入现有的钱包。" + }, + "step3": { + "title": "在设置中点击WalletConnect", + "description": "选择新的连接,然后扫描二维码并确认提示以进行连接。" + } + }, + "extension": { + "step1": { + "title": "安装Trust Wallet扩展程序", + "description": "在浏览器的右上角点击并固定Trust Wallet以便于访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新的钱包或导入现有的钱包。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置Trust Wallet后,点击下面以刷新浏览器并加载扩展程序。" + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "打开Uniswap应用", + "description": "将Uniswap钱包添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "打开Zerion应用", + "description": "我们建议将Zerion放在您的主屏幕上以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方式备份你的钱包。绝对不要与任何人分享你的私人密语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "你扫描后,会出现一个连接提示让你连接你的钱包。" + } + }, + "extension": { + "step1": { + "title": "安装 Zerion 扩展", + "description": "我们建议将 Zerion 固定在你的任务栏以便更快访问你的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份你的钱包。永远不要与任何人分享你的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置您的钱包后,点击下面以刷新浏览器并加载扩展程序。" + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "打开 Rainbow 应用", + "description": "我们建议将 Rainbow 放在您的主屏幕上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "您可以使用我们的备份功能在您的手机上轻松备份你的钱包。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "扫描后,将出现连接提示,让您连接您的钱包。" + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "我们建议将Enkrypt Wallet固定到任务栏,以便更快地访问您的钱包。", + "title": "安装Enkrypt Wallet扩展" + }, + "step2": { + "description": "请确保使用安全方法备份您的钱包。永远不要与任何人分享您的秘密短语。", + "title": "创建钱包或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下面刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "我们建议将Frame固定到任务栏,以便更快地访问您的钱包。", + "title": "安装Frame及其配套扩展" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方以刷新浏览器并加载扩展。", + "title": "刷新你的浏览器" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "安装OneKey Wallet扩展", + "description": "我们建议将OneKey Wallet固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置您的钱包后,点击下方以刷新浏览器并加载扩展程序。" + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "打开ParaSwap应用", + "description": "将ParaSwap Wallet添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "安装 Phantom 扩展程序", + "description": "我们建议将 Phantom 固定到您的任务栏,以便更容易访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "安装 Rabby 扩展程序", + "description": "我们建议将 Rabby 固定在您的任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的密钥短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "一旦您设置好您的钱包,点击以下以刷新浏览器并加载扩展程序。" + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "我们建议您将Ronin钱包添加到主屏幕,以便更快地访问。", + "title": "打开Ronin钱包应用" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + }, + "extension": { + "step1": { + "description": "我们建议您将Ronin钱包固定到任务栏,以便更快地访问您的钱包。", + "title": "安装Ronin钱包扩展" + }, + "step2": { + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", + "title": "刷新您的浏览器" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "安装Ramper扩展", + "description": "我们建议您将Ramper固定到任务栏,以便更容易地访问您的钱包。" + }, + "step2": { + "title": "创建一个钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "安装 Core 扩展", + "description": "我们建议将 Safeheron 固定在您的任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "安装Taho扩展程序", + "description": "我们建议将Taho固定在您的任务栏上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "安装Wigwam扩展程序", + "description": "我们建议将Wigwam固定在您的任务栏上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "安装 Talisman 扩展程序", + "description": "我们建议将 Talisman 固定在任务栏上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入以太坊钱包", + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的恢复短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "安装 CTRL Wallet 扩展", + "description": "我们建议将 CTRL Wallet 固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "打开 Zeal 应用", + "description": "将Zeal钱包添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击QR图标并扫描", + "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" + } + }, + "extension": { + "step1": { + "title": "安装Zeal扩展程序", + "description": "我们建议将Zeal固定在您的任务栏上,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "安装SafePal Wallet扩展程序", + "description": "点击浏览器右上角并固定SafePal Wallet以便于快速访问。" + }, + "step2": { + "title": "创建或导入钱包。", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "一旦设置了SafePal钱包,点击下方刷新浏览器并加载扩展程序。" + } + }, + "qr_code": { + "step1": { + "title": "打开SafePal钱包应用程序", + "description": "将SafePal钱包放在主屏幕上以更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "在设置中点击WalletConnect", + "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "安装 Desig 扩展", + "description": "我们建议将 Desig 固定到任务栏,以便更轻松地访问您的钱包。" + }, + "step2": { + "title": "创建一个钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "安装 SubWallet 扩展", + "description": "我们建议将 SubWallet 固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的恢复短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + }, + "qr_code": { + "step1": { + "title": "打开 SubWallet 应用", + "description": "我们建议将 SubWallet 放置在主屏幕上,以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "安装 CLV Wallet 扩展", + "description": "我们建议将 CLV Wallet 固定到任务栏,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + }, + "qr_code": { + "step1": { + "title": "打开 CLV 钱包应用", + "description": "我们建议将 CLV 钱包添加到您的主屏幕,以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "打开 Okto 应用", + "description": "将 Okto 添加到您的主屏幕以便快速访问" + }, + "step2": { + "title": "创建一个 MPC 钱包", + "description": "创建一个账户并生成一个钱包" + }, + "step3": { + "title": "在设置中点击WalletConnect", + "description": "点击右上角的扫描二维码图标,并确认提示以连接。" + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "打开Ledger Live应用", + "description": "我们建议将Ledger Live放在您的主屏幕上,以便更快地访问。" + }, + "step2": { + "title": "设置您的Ledger", + "description": "设置一个新的Ledger或连接到一个现有的。" + }, + "step3": { + "title": "连接", + "description": "你扫描后,会出现一个连接提示让你连接你的钱包。" + } + }, + "qr_code": { + "step1": { + "title": "打开Ledger Live应用", + "description": "我们建议将Ledger Live放在您的主屏幕上,以便更快地访问。" + }, + "step2": { + "title": "设置您的Ledger", + "description": "您可以同步桌面应用程式,或连接您的Ledger。" + }, + "step3": { + "title": "扫描代码", + "description": "点击 WalletConnect 然后切换到扫描器。你扫描后,会出现一个连接提示让你连接你的钱包。" + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "打开Valora应用程序", + "description": "我们建议将 Valora 放在您的主屏幕上以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "打开 Gate 应用", + "description": "我们建议将 Gate 放在您的主屏幕上以便更快地访问。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + }, + "extension": { + "step1": { + "title": "安装 Gate 扩展程序", + "description": "我们建议将 Gate 固定到任务栏,以便更轻松地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" + }, + "step3": { + "title": "刷新您的浏览器", + "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "打开 keys.gemini.com", + "description": "在您的移动浏览器上访问 keys.gemini.com—无需下载应用程序。" + }, + "step2": { + "title": "立即创建您的钱包", + "description": "使用设备内置身份验证,瞬间设置智能钱包。" + }, + "step3": { + "title": "扫码连接", + "description": "扫描二维码,即可立即连接您的钱包,一切尽在掌握。" + } + }, + "extension": { + "step1": { + "title": "进入 keys.gemini.com", + "description": "无需扩展或下载—您的钱包安全地存于浏览器中。" + }, + "step2": { + "title": "一键设定", + "description": "通过密码认证即时创建您的智能钱包——比任何其他钱包都更简单。" + }, + "step3": { + "title": "连接并前往", + "description": "批准连接就准备好了——这是一个没有意见的简单好用钱包。" + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "将 xPortal 放到您的主屏幕上,以便更快地访问您的钱包。", + "title": "打开 xPortal 应用" + }, + "step2": { + "description": "创建钱包或导入现有钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描二维码按钮" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "我们建议将 MEW 钱包添加到您的主屏幕,以便更快地访问。", + "title": "打开 MEW 钱包应用" + }, + "step2": { + "description": "您可以轻松地使用云备份功能备份您的钱包。", + "title": "创建或导入钱包" + }, + "step3": { + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", + "title": "点击扫描按钮" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "打开ZilPay应用", + "description": "将ZilPay添加到你的主屏幕,以便更快地访问你的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "打开Nova钱包应用", + "description": "将Nova钱包添加到您的主屏幕,以便更快地访问您的钱包。" + }, + "step2": { + "title": "创建或导入钱包", + "description": "创建新钱包或导入现有钱包。" + }, + "step3": { + "title": "点击扫描按钮", + "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" + } + } + } + } +} +`;export{u as default}; diff --git a/dist/assets/zh_HK-JW3WLRKE-VztJKXL5.js b/dist/assets/zh_HK-JW3WLRKE-VztJKXL5.js new file mode 100644 index 0000000..a5b00e9 --- /dev/null +++ b/dist/assets/zh_HK-JW3WLRKE-VztJKXL5.js @@ -0,0 +1,1487 @@ +var u=`{ + "connect_wallet": { + "label": "連接錢包", + "wrong_network": { + "label": "錯誤的網絡" + } + }, + "intro": { + "title": "錢包是什麼?", + "description": "錢包可以用來發送、接收、存儲和顯示數字資產。這也是一種新的登錄方式,不需要在每個網站上創建新的賬號和密碼。", + "digital_asset": { + "title": "您的數字資產之家", + "description": "錢包可用於發送、接收、存儲和顯示數字資產,例如以太坊和NFT。" + }, + "login": { + "title": "一種新的登錄方式", + "description": "無需在每個網站上創建新的賬號和密碼,只需連接您的錢包。" + }, + "get": { + "label": "獲取錢包" + }, + "learn_more": { + "label": "了解更多" + } + }, + "sign_in": { + "label": "驗證你的賬戶", + "description": "要完成連接,你必須在錢包中簽署一條消息,以驗證你是這個賬戶的擁有者。", + "message": { + "send": "簽署消息", + "preparing": "正在準備消息...", + "cancel": "取消", + "preparing_error": "準備消息時出錯,請重試!" + }, + "signature": { + "waiting": "等待簽名...", + "verifying": "驗證簽名中...", + "signing_error": "簽署消息時出錯,請重試!", + "verifying_error": "驗證簽名時出錯,請重試!", + "oops_error": "哦,出了點問題!" + } + }, + "connect": { + "label": "連接", + "title": "連接錢包", + "new_to_ethereum": { + "description": "新手入門以太坊錢包?", + "learn_more": { + "label": "了解更多" + } + }, + "learn_more": { + "label": "了解更多" + }, + "recent": "最近", + "status": { + "opening": "正在開啟%{wallet}...", + "connecting": "連接中", + "connect_mobile": "繼續在 %{wallet} 中操作", + "not_installed": "%{wallet} 尚未安裝", + "not_available": "%{wallet} 不可用", + "confirm": "在擴展程序中確認連接", + "confirm_mobile": "在錢包中接受連接請求" + }, + "secondary_action": { + "get": { + "description": "沒有%{wallet}?", + "label": "獲取" + }, + "install": { + "label": "安裝" + }, + "retry": { + "label": "重試" + } + }, + "walletconnect": { + "description": { + "full": "需要官方的WalletConnect模態框嗎?", + "compact": "需要WalletConnect模態框嗎?" + }, + "open": { + "label": "開啟" + } + } + }, + "connect_scan": { + "title": "用 %{wallet} 掃描", + "fallback_title": "用你的手機掃描" + }, + "connector_group": { + "installed": "已安裝", + "recommended": "推荐", + "other": "其他", + "popular": "流行", + "more": "更多", + "others": "其他" + }, + "get": { + "title": "獲取錢包", + "action": { + "label": "獲取" + }, + "mobile": { + "description": "手機錢包" + }, + "extension": { + "description": "瀏覽器擴展" + }, + "mobile_and_extension": { + "description": "手機錢包和擴展" + }, + "mobile_and_desktop": { + "description": "行動裝置和桌面錢包" + }, + "looking_for": { + "title": "找不到你想要的?", + "mobile": { + "description": "在主屏幕上選擇一個錢包,以開始使用不同的錢包提供商。" + }, + "desktop": { + "compact_description": "在主屏幕上選擇一個錢包,以開始使用不同的錢包提供商。", + "wide_description": "在左邊選擇一個錢包,以開始使用不同的錢包提供商。" + } + } + }, + "get_options": { + "title": "開始使用%{wallet}", + "short_title": "獲取%{wallet}", + "mobile": { + "title": "%{wallet} 手機版", + "description": "使用手機錢包探索以太坊的世界。", + "download": { + "label": "獲取應用" + } + }, + "extension": { + "title": "%{wallet} 適用於 %{browser}", + "description": "直接從您喜愛的網頁瀏覽器中訪問您的錢包。", + "download": { + "label": "添加到%{browser}" + } + }, + "desktop": { + "title": "%{wallet} 用於 %{platform}", + "description": "從強大的桌面上本地訪問你的錢包。", + "download": { + "label": "添加到 %{platform}" + } + } + }, + "get_mobile": { + "title": "安裝%{wallet}", + "description": "用你的手機掃描以下載iOS或Android版本", + "continue": { + "label": "繼續" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "連接" + }, + "learn_more": { + "label": "了解更多" + } + }, + "extension": { + "refresh": { + "label": "刷新" + }, + "learn_more": { + "label": "了解更多" + } + }, + "desktop": { + "connect": { + "label": "連接" + }, + "learn_more": { + "label": "了解更多" + } + } + }, + "chains": { + "title": "切換網絡", + "wrong_network": "檢測到錯誤的網絡,請切換或斷開連接以繼續。", + "confirm": "在錢包中確認", + "switching_not_supported": "您的錢包不支持從 %{appName} 切換網絡。請嘗試在您的錢包內切換網絡。", + "switching_not_supported_fallback": "您的錢包不支持從此應用切換網絡。請嘗試在您的錢包內切換網絡。", + "disconnect": "斷開連接", + "connected": "已連接" + }, + "profile": { + "disconnect": { + "label": "斷開連接" + }, + "copy_address": { + "label": "複製地址", + "copied": "已複製!" + }, + "explorer": { + "label": "在探勘器查看更多" + }, + "transactions": { + "description": "%{appName} 的交易將會顯示在這裡...", + "description_fallback": "您的交易將會顯示在這裡...", + "recent": { + "title": "最近的交易" + }, + "clear": { + "label": "清除所有" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "將 Ready 加到主畫面以便更快速存取您的錢包。", + "title": "開啟 Ready 應用程式" + }, + "step2": { + "description": "創建一個錢包和用戶名,或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃瞄 QR 按鈕" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "安裝 BeraSig 擴充套件", + "description": "我們建議您將 BeraSig 固定在工作列上,以便更輕鬆地存取您的錢包。" + }, + "step2": { + "title": "建立錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "打開 Best Wallet 應用程式", + "description": "將 Best Wallet 加到主畫面以更快地開啟你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "我們建議將 Bifrost Wallet 加到你的主畫面,以便更快訪問。", + "title": "打開 Bifrost Wallet 應用程式" + }, + "step2": { + "description": "使用你的恢覆短語創建或導入錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "我們建議將 Bitget Wallet 加到你的主畫面,以便更快訪問。", + "title": "打開 Bitget Wallet 應用程式" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Bitget Wallet 固定到你的任務欄上,以便更快訪問你的錢包。", + "title": "安裝 Bitget Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "我們建議將 Bitski 固定到你的任務欄上,以便更快訪問你的錢包。", + "title": "安裝 Bitski 擴展" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "開啟 Bitverse Wallet 應用程式", + "description": "新增 Bitverse Wallet 至你的主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "打開 Bloom Wallet 應用程式", + "description": "我們建議將 Bloom Wallet 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "description": "使用你的恢覆短語創建或導入錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "擁有錢包後,點擊連接以通過 Bloom 連接。應用程式中將會出現一個連接提示讓你確認連接。", + "title": "點擊連接" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "我們建議將 Bybit 放在主畫面,便可以更快存取你的電子錢包。", + "title": "開啟 Bybit 應用程式" + }, + "step2": { + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "點擊瀏覽器右上角,並將 Bybit Wallet 釘起來,以便輕鬆存取。", + "title": "安裝 Bybit Wallet 擴充功能" + }, + "step2": { + "description": "創建新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置 Bybit Wallet 後,點擊下方刷新瀏覽器,並加載擴充功能。", + "title": "刷新你的瀏覽器" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "我們建議將 Binance 放在主畫面,便可以更快存取你的電子錢包。", + "title": "開啟 Binance 應用程式" + }, + "step2": { + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "title": "安裝 Binance Wallet 擴充功能", + "description": "我們建議將 Binance Wallet 釘在工作列上,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "我們建議將 Coin98 Wallet 加到你的主畫面,以便更快訪問你的錢包。", + "title": "打開 Coin98 Wallet 應用程式" + }, + "step2": { + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "description": "點擊瀏覽器右上角並固定 Coin98 Wallet 以便訪問。", + "title": "安裝 Coin98 Wallet 擴展" + }, + "step2": { + "description": "創建新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置好 Coin98 Wallet 後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "我們建議將 Coinbase Wallet 加到你的主畫面,以便更快訪問。", + "title": "打開 Coinbase Wallet 應用程式" + }, + "step2": { + "description": "你可以使用雲端備份功能輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Coinbase Wallet 固定到你的任務欄上,以便更快訪問你的錢包。", + "title": "安裝 Coinbase Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "我們建議將 Compass Wallet 釘在工作列上,便可以更快存取你的電子錢包。", + "title": "安裝 Compass Wallet 擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "我們建議將 Core 加到你的主畫面,以便更快訪問你的錢包。", + "title": "打開 Core 應用程式" + }, + "step2": { + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Core 釘在你的工作列,以便更快捷地存取你的錢包。", + "title": "安裝 Core 擴充套件" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "我們建議將 FoxWallet 放在你的主畫面上,以方便更快地存取。", + "title": "打開 FoxWallet 應用程式" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "我們建議將 Frontier Wallet 放在你的主畫面上,以便更快捷地存取。", + "title": "打開 Frontier Wallet 應用程式" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Frontier Wallet 釘在你的工作列,以便更快捷地存取你的錢包。", + "title": "安裝 Frontier Wallet 擴充套件" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "打開 imToken 應用程式", + "description": "將 imToken 應用程式放在你的主畫面上,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖示", + "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "我們建議將 ioPay 放在主畫面,便可以更快存取你的電子錢包。", + "title": "開啟 ioPay 應用程式" + }, + "step2": { + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "我們建議將 Kaikas 釘在工作列上,便可以更快存取你的電子錢包。", + "title": "安裝 Kaikas 擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + }, + "qr_code": { + "step1": { + "title": "開啟 Kaikas 應用程式", + "description": "將 Kaikas 應用程式放在主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖示", + "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "我們建議將 Kaia 釘在工作列上,便可以更快存取你的電子錢包。", + "title": "安裝 Kaia 擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + }, + "qr_code": { + "step1": { + "title": "打開 Kaia 應用程式", + "description": "將 Kaia 應用程式放在主畫面,以便更快訪問你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖示", + "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "開啟 Kraken Wallet 應用程式", + "description": "新增 Kraken Wallet 至你的主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "開啟 Kresus Wallet 應用程式", + "description": "新增 Kresus Wallet 至你的主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "安裝 Magic Eden 擴充功能", + "description": "我們建議將 Magic Eden 釘在工作列上,便可以更容易存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "打開 MetaMask 應用程式", + "description": "我們建議將 MetaMask 放在你的主畫面上,以便更快捷地存取。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 MetaMask 擴充套件", + "description": "我們建議將 MetaMask 釘在你的工作列,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "安裝 NestWallet 擴充功能", + "description": "我們建議將 NestWallet 釘在工作列上,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "打開 OKX Wallet 應用程式", + "description": "我們建議將 OKX Wallet 放在你的主畫面上,以便更快捷地存取。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 OKX Wallet 擴充套件", + "description": "我們建議將 OKX Wallet 釘在你的工作列,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "打開 Omni 應用程式", + "description": "將 Omni 加到你的主畫面上,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "將 1inch Wallet 放在主畫面,便可以更快存取你的電子錢包。", + "title": "開啟 1inch Wallet 應用程式" + }, + "step2": { + "description": "創建一個錢包和用戶名,或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃瞄 QR 按鈕" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "打開 TokenPocket 應用程式", + "description": "我們建議將 TokenPocket 放在你的主畫面上,以便更快捷地存取。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 TokenPocket 擴充套件", + "description": "我們建議將 TokenPocket 釘在你的工作列,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "打開 Trust Wallet 應用程式", + "description": "將 Trust Wallet 放在你的主畫面上,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" + } + }, + "extension": { + "step1": { + "title": "安裝 Trust Wallet 擴充套件", + "description": "點擊瀏覽器右上角,然後釘上 Trust Wallet 以便輕鬆存取。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設定 Trust Wallet 後,點擊下方以重新整理瀏覽器並加載擴充套件。" + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "打開 Uniswap 應用程式", + "description": "將 Uniswap Wallet 加到你的主畫面上,以便更快捷地存取你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "打開 Zerion 應用程式", + "description": "我們建議把 Zerion 放在主頁上以便更快捷地進入。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 Zerion 擴充功能", + "description": "我們建議把 Zerion 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "打開 Rainbow 應用程式", + "description": "我們建議把 Rainbow 放在主頁上以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "我們建議把 Enkrypt Wallet 釘在工作列上,以便更快捷地進入你的錢包。", + "title": "安裝 Enkrypt Wallet 擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "我們建議把 Frame 釘在工作列上,以便更快捷地進入你的錢包。", + "title": "安裝 Frame 和配套擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "安裝 OneKey Wallet 擴充功能", + "description": "我們建議把 OneKey Wallet 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "打開 ParaSwap 應用程式", + "description": "將 ParaSwap Wallet 加到主畫面以更快地開啟你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "安裝 Phantom 擴充功能", + "description": "我們建議把 Phantom 釘在工作列上,以便更容易地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "安裝 Rabby 擴充功能", + "description": "我們建議把 Rabby 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "我們建議將 Ronin Wallet 放在主畫面,便可以更快存取你的電子錢包。", + "title": "開啟 Ronin Wallet 應用程式" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Ronin Wallet 釘在工作列上,便可以更快存取你的電子錢包。", + "title": "安裝 Ronin Wallet 擴充功能" + }, + "step2": { + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", + "title": "刷新你的瀏覽器" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "安裝 Ramper 擴充功能", + "description": "我們建議將 Ramper 釘在工作列上,便可以更容易存取你的電子錢包。" + }, + "step2": { + "title": "建立錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "安裝 Core 擴充套件", + "description": "我們建議把 Safeheron 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "安裝 Taho 擴充功能", + "description": "我們建議把 Taho 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "安裝 Wigwam 擴充套件", + "description": "我們建議將 Wigwam 鎖定到任務欄,方便更快捷地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "安裝 Talisman 擴充功能", + "description": "我們建議把 Talisman 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "建立或導入以太坊錢包", + "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的恢復詞。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "安裝 CTRL Wallet 擴展套件", + "description": "我們建議將 CTRL Wallet 固定到你的任務欄,以便更快地訪問你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "開啟 Zeal 應用程式", + "description": "新增 Zeal Wallet 至你的主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊二維碼圖示並掃描", + "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" + } + }, + "extension": { + "step1": { + "title": "安裝 Zeal 擴充功能", + "description": "我們建議把 Zeal 釘在工作列上,以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "安裝 SafePal Wallet 擴充功能", + "description": "點擊瀏覽器右上方並把 SafePal Wallet 釘起來,以便容易進入。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設定好 SafePal Wallet 後,點擊下方以更新瀏覽器並加載擴充功能。" + } + }, + "qr_code": { + "step1": { + "title": "打開 SafePal Wallet 應用程式", + "description": "把 SafePal Wallet 放在主頁上以便更快捷地進入你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "安裝 Desig 擴充功能", + "description": "我們建議把 Desig 釘在工作列上以便更容易地進入你的錢包。" + }, + "step2": { + "title": "建立錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "安裝 SubWallet 擴充功能", + "description": "我們建議將 SubWallet 固定到你的任務欄,以便更快地訪問你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的恢復詞。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + }, + "qr_code": { + "step1": { + "title": "打開 SubWallet 應用程式", + "description": "我們建議將 SubWallet 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "安裝 CLV Wallet 擴展", + "description": "我們建議將 CLV Wallet 固定到你的任務欄,以便更快地訪問你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + }, + "qr_code": { + "step1": { + "title": "打開 CLV Wallet 應用程式", + "description": "我們建議將 CLV Wallet 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "打開 Okto 應用程式", + "description": "將 Okto 添加到你的主畫面,以便快速訪問" + }, + "step2": { + "title": "創建 MPC 錢包", + "description": "創建賬戶並生成錢包" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "點擊右上角的掃描 QR 圖示,並確認提示以連接。" + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "打開 Ledger Live 應用程式", + "description": "我們建議將 Ledger Live 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "設置你的 Ledger", + "description": "設置一個新的 Ledger 或連接到現有的 Ledger。" + }, + "step3": { + "title": "連接", + "description": "將會出現一個連接提示,以便你連接錢包。" + } + }, + "qr_code": { + "step1": { + "title": "打開 Ledger Live 應用程式", + "description": "我們建議將 Ledger Live 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "設置你的 Ledger", + "description": "你可以同步桌面應用程式或連接你的 Ledger。" + }, + "step3": { + "title": "掃描代碼", + "description": "點擊 WalletConnect 並切換到掃描器。掃描後,將會出現一個連接提示,以便你連接錢包。" + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "打開 Valora 應用程式", + "description": "我們建議將 Valora 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "打開 Gate 應用程式", + "description": "我們建議將 Gate 放置在你的主畫面,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 Gate 擴充套件", + "description": "我們建議將 Gate 釘選到你的工作列,以便更方便地訪問你的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" + }, + "step3": { + "title": "刷新你的瀏覽器", + "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "開啟 keys.gemini.com", + "description": "在你的手機瀏覽器中訪問 keys.gemini.com,不需要下載應用程式。" + }, + "step2": { + "title": "即時創建您的錢包", + "description": "使用裝置的內置認證來在短短幾秒內設置您的智能錢包。" + }, + "step3": { + "title": "掃描以連接", + "description": "掃描 QR 碼即可即時連接您的錢包,它非常方便。" + } + }, + "extension": { + "step1": { + "title": "前往 keys.gemini.com", + "description": "無需擴展或下載—您的錢包安全地存在於瀏覽器中。" + }, + "step2": { + "title": "一鍵設置", + "description": "使用通行密鑰認證立即創建您的智能錢包 - 比任何其他錢包都更容易。" + }, + "step3": { + "title": "連接並開始", + "description": "批准連接後即可開始使用 - 無偏見的錢包,順利運作。" + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "將 xPortal 放置在你的主畫面,以便更快地訪問你的錢包。", + "title": "打開 xPortal 應用程式" + }, + "step2": { + "description": "創建新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃瞄 QR 按鈕" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "我們建議將 MEW Wallet 放置在你的主畫面,以便更快地訪問。", + "title": "打開 MEW Wallet 應用程式" + }, + "step2": { + "description": "你可以使用雲端備份功能輕鬆備份你的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "開啟 ZilPay 應用程式", + "description": "將 ZilPay 加到主畫面以便更快速存取您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "開啟 Nova Wallet 應用程式", + "description": "新增 Nova Wallet 至你的主畫面,便可以更快存取你的電子錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" + } + } + } + } +} +`;export{u as default}; diff --git a/dist/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js b/dist/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js new file mode 100644 index 0000000..2770704 --- /dev/null +++ b/dist/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js @@ -0,0 +1,1487 @@ +var u=`{ + "connect_wallet": { + "label": "連接錢包", + "wrong_network": { + "label": "錯誤的網絡" + } + }, + "intro": { + "title": "什麼是錢包?", + "description": "錢包用於發送、接收、儲存及顯示數字資產。它還是一種新的登入方式,不需要為每個網站創建新的帳戶和密碼。", + "digital_asset": { + "title": "您的數字資產之家", + "description": "錢包用於發送、接收、儲存及顯示像以太坊和NFT這樣的數字資產。" + }, + "login": { + "title": "新的登入方式", + "description": "不用再為每個網站創建新的帳戶和密碼,只需連接您的錢包。" + }, + "get": { + "label": "獲取錢包" + }, + "learn_more": { + "label": "了解更多" + } + }, + "sign_in": { + "label": "驗證您的賬戶", + "description": "要完成連接,您必須在錢包中簽署一條消息,以驗證您是此賬戶的擁有者。", + "message": { + "send": "簽署訊息", + "preparing": "準備消息...", + "cancel": "取消", + "preparing_error": "準備消息時出錯,請重試!" + }, + "signature": { + "waiting": "等待簽名...", + "verifying": "驗證簽名...", + "signing_error": "簽署消息時出錯,請重試!", + "verifying_error": "驗證簽名時出錯,請重試!", + "oops_error": "糟糕,出錯了!" + } + }, + "connect": { + "label": "連接", + "title": "連接錢包", + "new_to_ethereum": { + "description": "剛開始使用以太坊錢包嗎?", + "learn_more": { + "label": "了解更多" + } + }, + "learn_more": { + "label": "了解更多" + }, + "recent": "最近", + "status": { + "opening": "正在開啟%{wallet}...", + "connecting": "連接中", + "connect_mobile": "繼續在 %{wallet}", + "not_installed": "%{wallet}尚未安裝", + "not_available": "%{wallet}無法使用", + "confirm": "在擴展程序中確認連接", + "confirm_mobile": "在錢包中接受連接請求" + }, + "secondary_action": { + "get": { + "description": "沒有%{wallet}?", + "label": "獲取" + }, + "install": { + "label": "安裝" + }, + "retry": { + "label": "重試" + } + }, + "walletconnect": { + "description": { + "full": "需要官方的WalletConnect模態?", + "compact": "需要WalletConnect模態?" + }, + "open": { + "label": "開啟" + } + } + }, + "connect_scan": { + "title": "使用%{wallet}掃描", + "fallback_title": "用手機掃描" + }, + "connector_group": { + "installed": "已安裝", + "recommended": "推薦", + "other": "其他", + "popular": "熱門", + "more": "更多", + "others": "其他" + }, + "get": { + "title": "獲取錢包", + "action": { + "label": "獲取" + }, + "mobile": { + "description": "手機錢包" + }, + "extension": { + "description": "瀏覽器擴展" + }, + "mobile_and_extension": { + "description": "手機錢包和擴展" + }, + "mobile_and_desktop": { + "description": "移動和桌面錢包" + }, + "looking_for": { + "title": "不是您要找的東西嗎?", + "mobile": { + "description": "在主屏幕上選擇一個錢包以使用不同的錢包提供商。" + }, + "desktop": { + "compact_description": "在主屏幕上選擇一個錢包以使用不同的錢包提供商。", + "wide_description": "在左側選擇一個錢包以使用不同的錢包提供商。" + } + } + }, + "get_options": { + "title": "開始使用%{wallet}", + "short_title": "獲取%{wallet}", + "mobile": { + "title": "%{wallet}移動版本", + "description": "使用手機錢包探索以太坊世界。", + "download": { + "label": "下載應用" + } + }, + "extension": { + "title": "%{wallet}適用於%{browser}", + "description": "直接從您最喜愛的網絡瀏覽器訪問您的錢包。", + "download": { + "label": "添加到%{browser}" + } + }, + "desktop": { + "title": "%{wallet} 在 %{platform}", + "description": "從強大的桌面端本機存取您的錢包。", + "download": { + "label": "添加到 %{platform}" + } + } + }, + "get_mobile": { + "title": "安裝%{wallet}", + "description": "用手機掃描即可在iOS或Android下載", + "continue": { + "label": "繼續" + } + }, + "get_instructions": { + "mobile": { + "connect": { + "label": "連接" + }, + "learn_more": { + "label": "了解更多" + } + }, + "extension": { + "refresh": { + "label": "刷新" + }, + "learn_more": { + "label": "了解更多" + } + }, + "desktop": { + "connect": { + "label": "連接" + }, + "learn_more": { + "label": "了解更多" + } + } + }, + "chains": { + "title": "切換網路", + "wrong_network": "檢測到錯誤網絡,請切換或斷開連接以繼續。", + "confirm": "在錢包中確認", + "switching_not_supported": "您的錢包不支持從 %{appName} 切換網絡。請嘗試從錢包內切換網絡。", + "switching_not_supported_fallback": "您的錢包不支持從此應用切換網絡。請嘗試從錢包內切換網絡。", + "disconnect": "斷開連接", + "connected": "已連接" + }, + "profile": { + "disconnect": { + "label": "斷開連接" + }, + "copy_address": { + "label": "複製地址", + "copied": "已複製!" + }, + "explorer": { + "label": "在探險家中查看更多" + }, + "transactions": { + "description": "%{appName} 交易將顯示在這裡...", + "description_fallback": "您的交易將顯示在這裡...", + "recent": { + "title": "最近交易" + }, + "clear": { + "label": "全部清除" + } + } + }, + "wallet_connectors": { + "ready": { + "qr_code": { + "step1": { + "description": "將 Ready 添加到您的主畫面,更快速地存取您的錢包。", + "title": "打開 Ready 應用程序" + }, + "step2": { + "description": "創建一個錢包和用戶名,或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描 QR 按鈕" + } + } + }, + "berasig": { + "extension": { + "step1": { + "title": "安裝 BeraSig 擴充功能", + "description": "我們建議將 BeraSig 固定到工作列上,以便更輕鬆地存取您的錢包。" + }, + "step2": { + "title": "創建錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "best": { + "qr_code": { + "step1": { + "title": "打開 Best Wallet 應用程式", + "description": "將 Best Wallet 添加到主畫面以更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "bifrost": { + "qr_code": { + "step1": { + "description": "我們建議將 Bifrost Wallet 放在主屏幕上以更快訪問。", + "title": "打開 Bifrost Wallet 應用" + }, + "step2": { + "description": "使用恢復短語創建或導入錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "bitget": { + "qr_code": { + "step1": { + "description": "我們建議將 Bitget Wallet 放在主屏幕上以更快訪問。", + "title": "打開 Bitget Wallet 應用" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Bitget Wallet 固定到任務欄,以更快訪問您的錢包。", + "title": "安裝 Bitget Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "bitski": { + "extension": { + "step1": { + "description": "我們建議將 Bitski 固定到任務欄,以更快訪問您的錢包。", + "title": "安裝 Bitski 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "bitverse": { + "qr_code": { + "step1": { + "title": "打開 Bitverse Wallet 應用程序", + "description": "將 Bitverse Wallet 添加到主屏幕以便更快速訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "bloom": { + "desktop": { + "step1": { + "title": "打開 Bloom Wallet 應用程序", + "description": "我們建議將 Bloom Wallet 添加到主屏幕以便更快速訪問。" + }, + "step2": { + "description": "使用恢復短語創建或導入錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "擁有錢包後,點擊連接通過 Bloom 連接。應用程序中會出現連接提示,讓您確認連接。", + "title": "點擊連接" + } + } + }, + "bybit": { + "qr_code": { + "step1": { + "description": "我們建議將 Bybit 添加到主屏幕以便更快速訪問您的錢包。", + "title": "打開 Bybit 應用程序" + }, + "step2": { + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "點擊瀏覽器右上角,將 Bybit Wallet 錨定以便輕鬆訪問。", + "title": "安裝 Bybit Wallet 擴展" + }, + "step2": { + "description": "創建一個新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置 Bybit Wallet 後,點擊下方刷新瀏覽器並載入擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "binance": { + "qr_code": { + "step1": { + "description": "我們建議將 Binance 放到主屏幕上,以便更快訪問您的錢包。", + "title": "打開 Binance 應用程序" + }, + "step2": { + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "title": "安裝 Binance Wallet 擴展", + "description": "我們建議將 Binance Wallet 錨定到任務欄以便更快速訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "coin98": { + "qr_code": { + "step1": { + "description": "我們建議將 Coin98 Wallet 放在主屏幕上以更快訪問您的錢包。", + "title": "打開 Coin98 Wallet 應用" + }, + "step2": { + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "description": "在瀏覽器右上角點擊並固定 Coin98 Wallet 以便快速訪問。", + "title": "安裝 Coin98 Wallet 擴展" + }, + "step2": { + "description": "創建一個新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "設置好 Coin98 Wallet 後,點擊下方以刷新瀏覽器並加載插件。", + "title": "刷新您的瀏覽器" + } + } + }, + "coinbase": { + "qr_code": { + "step1": { + "description": "我們建議將 Coinbase Wallet 添加到主屏幕,以便更快地訪問。", + "title": "打開 Coinbase Wallet 應用" + }, + "step2": { + "description": "您可以使用雲備份功能輕鬆備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Coinbase Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。", + "title": "安裝 Coinbase Wallet 插件" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "compass": { + "extension": { + "step1": { + "description": "我們建議將 Compass Wallet 錨定到工作列,以便更快訪問您的錢包。", + "title": "安裝 Compass Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "core": { + "qr_code": { + "step1": { + "description": "我們建議將 Core 添加到主屏幕,以便更快地訪問您的錢包。", + "title": "打開 Core 應用" + }, + "step2": { + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Core 鎖定在任務欄上,以便更快地訪問您的錢包。", + "title": "安裝 Core 插件" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "fox": { + "qr_code": { + "step1": { + "description": "我們建議將 FoxWallet 添加到主屏幕,以便更快地訪問。", + "title": "打開 FoxWallet 應用" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "frontier": { + "qr_code": { + "step1": { + "description": "我們建議將 Frontier Wallet 添加到主屏幕,以便更快地訪問。", + "title": "打開 Frontier Wallet 應用" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Frontier Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。", + "title": "安裝 Frontier Wallet 插件" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "im_token": { + "qr_code": { + "step1": { + "title": "打開 imToken 應用", + "description": "將 imToken 應用放置在主屏幕,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖標", + "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" + } + } + }, + "iopay": { + "qr_code": { + "step1": { + "description": "我們建議將 ioPay 放在您的主畫面,以便更快速地存取您的錢包。", + "title": "打開 ioPay 應用程式" + }, + "step2": { + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊 WalletConnect 按鈕" + } + } + }, + "kaikas": { + "extension": { + "step1": { + "description": "我們建議將 Kaikas 錨定到工作列,以便更快訪問您的錢包。", + "title": "安裝 Kaikas 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + }, + "qr_code": { + "step1": { + "title": "打開 Kaikas 應用程序", + "description": "將 Kaikas 應用程序放到主屏幕上,以便更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖標", + "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" + } + } + }, + "kaia": { + "extension": { + "step1": { + "description": "我們建議將 Kaia 鎖定到您的任務欄,以便更快地訪問您的錢包。", + "title": "安裝 Kaia 擴充功能" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + }, + "qr_code": { + "step1": { + "title": "打開 Kaia 應用程式", + "description": "將 Kaia 應用程式放在您的主畫面,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊右上角的掃描圖標", + "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" + } + } + }, + "kraken": { + "qr_code": { + "step1": { + "title": "打開 Kraken Wallet 應用程序", + "description": "將 Kraken Wallet 添加到主屏幕上,以便更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "kresus": { + "qr_code": { + "step1": { + "title": "打開 Kresus Wallet 應用程序", + "description": "將 Kresus Wallet 添加到主屏幕以便更快速訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "magicEden": { + "extension": { + "step1": { + "title": "安裝 Magic Eden 擴展", + "description": "我們建議將 Magic Eden 錨定到工作列,以便更容易訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "metamask": { + "qr_code": { + "step1": { + "title": "打開 MetaMask 應用", + "description": "我們建議將 MetaMask 添加到主屏幕,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 MetaMask 插件", + "description": "我們建議將 MetaMask 鎖定在任務欄上,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "nestwallet": { + "extension": { + "step1": { + "title": "安裝 NestWallet 擴展", + "description": "我們建議將 NestWallet 錨定到工作列,以便更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "okx": { + "qr_code": { + "step1": { + "title": "打開 OKX Wallet 應用", + "description": "我們建議將 OKX Wallet 添加到主屏幕,以便更快地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 OKX Wallet 插件", + "description": "我們建議將 OKX Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "omni": { + "qr_code": { + "step1": { + "title": "打開 Omni 應用", + "description": "將 Omni 添加到主屏幕,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "點擊主屏幕上的 QR 圖標,掃描代碼並確認提示連接。" + } + } + }, + "1inch": { + "qr_code": { + "step1": { + "description": "將 1inch Wallet 放到主屏幕上,以便更快訪問您的錢包。", + "title": "打開 1inch Wallet 應用程序" + }, + "step2": { + "description": "創建一個錢包和用戶名,或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描 QR 按鈕" + } + } + }, + "token_pocket": { + "qr_code": { + "step1": { + "title": "打開 TokenPocket 應用", + "description": "我們建議將 TokenPocket 放在您的主螢幕上,以便更快速地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 TokenPocket 擴展", + "description": "我們建議將 TokenPocket 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "trust": { + "qr_code": { + "step1": { + "title": "打開 Trust Wallet 應用程式", + "description": "將 Trust Wallet 放在您的主螢幕上,以便更快地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" + } + }, + "extension": { + "step1": { + "title": "安裝 Trust Wallet 擴展", + "description": "點擊瀏覽器右上角並固定 Trust Wallet,以便輕鬆訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "設置 Trust Wallet 後,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "uniswap": { + "qr_code": { + "step1": { + "title": "打開 Uniswap 應用程式", + "description": "將 Uniswap Wallet 放在您的主螢幕上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "zerion": { + "qr_code": { + "step1": { + "title": "打開 Zerion 應用程式", + "description": "我們建議將 Zerion 放在您的主螢幕上,以便更快速地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 Zerion 擴展", + "description": "我們建議將 Zerion 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "rainbow": { + "qr_code": { + "step1": { + "title": "打開 Rainbow 應用程式", + "description": "我們建議將 Rainbow 放在您的主螢幕上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + }, + "enkrypt": { + "extension": { + "step1": { + "description": "我們建議將 Enkrypt Wallet 固定到您的工作列上,以便更快速地訪問您的錢包。", + "title": "安裝 Enkrypt Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "frame": { + "extension": { + "step1": { + "description": "我們建議將 Frame 固定到您的工作列上,以便更快速地訪問您的錢包。", + "title": "安裝 Frame 和輔助擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "one_key": { + "extension": { + "step1": { + "title": "安裝 OneKey Wallet 擴展", + "description": "我們建議將 OneKey Wallet 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "paraswap": { + "qr_code": { + "step1": { + "title": "打開 ParaSwap 應用程式", + "description": "將 ParaSwap Wallet 添加到主畫面以更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + } + }, + "phantom": { + "extension": { + "step1": { + "title": "安裝 Phantom 擴展", + "description": "我們建議將 Phantom 固定到您的工作列上,以便更輕鬆地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "rabby": { + "extension": { + "step1": { + "title": "安裝 Rabby 擴展", + "description": "我們建議將 Rabby 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "ronin": { + "qr_code": { + "step1": { + "description": "我們建議將 Ronin Wallet 添加到主屏幕以便更快速訪問。", + "title": "打開 Ronin Wallet 應用程序" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + }, + "extension": { + "step1": { + "description": "我們建議將 Ronin Wallet 錨定到任務欄以便更快速訪問錢包。", + "title": "安裝 Ronin Wallet 擴展" + }, + "step2": { + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", + "title": "刷新您的瀏覽器" + } + } + }, + "ramper": { + "extension": { + "step1": { + "title": "安裝 Ramper 擴展", + "description": "我們建議將 Ramper 錨定到任務欄以便更容易訪問錢包。" + }, + "step2": { + "title": "創建錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "safeheron": { + "extension": { + "step1": { + "title": "安裝 Core 插件", + "description": "我們建議將 Safeheron 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "taho": { + "extension": { + "step1": { + "title": "安裝 Taho 擴展", + "description": "我們建議將 Taho 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "wigwam": { + "extension": { + "step1": { + "title": "安裝 Wigwam 擴充套件", + "description": "我們建議將 Wigwam 鎖定到任務欄,以便更快存取您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "talisman": { + "extension": { + "step1": { + "title": "安裝 Talisman 擴展", + "description": "我們建議將 Talisman 固定到您的工作列上,以便更快速地訪問您的錢包。" + }, + "step2": { + "title": "創建或導入以太坊錢包", + "description": "請確保使用安全的方法備份您的錢包。絕不與任何人分享您的恢復短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "ctrl": { + "extension": { + "step1": { + "title": "安裝 CTRL Wallet 擴展程序", + "description": "我們建議將 CTRL Wallet 釘選到您的任務欄,以便更快訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "zeal": { + "qr_code": { + "step1": { + "title": "打開 Zeal 應用程序", + "description": "將 Zeal Wallet 添加到主屏幕上,以便更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊 QR 圖標並掃描", + "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" + } + }, + "extension": { + "step1": { + "title": "安裝 Zeal 擴展程序", + "description": "我們建議將 Zeal 釘選到您的任務欄,以便更快訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "safepal": { + "extension": { + "step1": { + "title": "安裝 SafePal Wallet 擴展程序", + "description": "點擊您的瀏覽器右上角,將 SafePal Wallet 釘選,方便訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "設置 SafePal Wallet 後,點擊下方刷新瀏覽器並加載擴展程序。" + } + }, + "qr_code": { + "step1": { + "title": "打開 SafePal Wallet 應用程序", + "description": "將 SafePal Wallet 添加到您的主屏幕,以便更快捷地訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" + } + } + }, + "desig": { + "extension": { + "step1": { + "title": "安裝 Desig 擴展程序", + "description": "我們建議將 Desig 釘選到您的任務欄,以便更容易訪問錢包。" + }, + "step2": { + "title": "創建錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "subwallet": { + "extension": { + "step1": { + "title": "安裝 SubWallet 擴展程序", + "description": "我們建議將 SubWallet 釘選到您的任務欄,以便更快訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。絕不與任何人分享您的恢復短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + }, + "qr_code": { + "step1": { + "title": "打開 SubWallet 應用程序", + "description": "我們建議將 SubWallet 添加到您的主屏幕,以便更快捷地訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + }, + "clv": { + "extension": { + "step1": { + "title": "安裝 CLV Wallet 擴展程序", + "description": "我們建議將 CLV Wallet 釘選到您的任務欄,以便更快訪問錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + }, + "qr_code": { + "step1": { + "title": "打開 CLV Wallet 應用程序", + "description": "我們建議將 CLV Wallet 添加到您的主屏幕,以便更快訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + }, + "okto": { + "qr_code": { + "step1": { + "title": "打開 Okto 應用程序", + "description": "將 Okto 添加到您的主屏幕,便捷訪問" + }, + "step2": { + "title": "創建 MPC 錢包", + "description": "創建賬戶並生成錢包" + }, + "step3": { + "title": "在設定中點擊 WalletConnect", + "description": "點擊右上角的掃描二維碼圖標,確認提示以連接。" + } + } + }, + "ledger": { + "desktop": { + "step1": { + "title": "打開 Ledger Live 應用程序", + "description": "我們建議將 Ledger Live 添加到主屏幕以便更快速訪問。" + }, + "step2": { + "title": "設置您的 Ledger", + "description": "設置一個新的 Ledger 或連接到現有的。" + }, + "step3": { + "title": "連接", + "description": "會出現一個連接提示,讓您連接錢包。" + } + }, + "qr_code": { + "step1": { + "title": "打開 Ledger Live 應用程序", + "description": "我們建議將 Ledger Live 添加到主屏幕以便更快速訪問。" + }, + "step2": { + "title": "設置您的 Ledger", + "description": "您可以同步桌面應用程序或連接 Ledger。" + }, + "step3": { + "title": "掃描代碼", + "description": "點擊 WalletConnect 然後切換到掃描儀。掃描後,會出現連接提示,讓您連接錢包。" + } + } + }, + "valora": { + "qr_code": { + "step1": { + "title": "打開 Valora 應用程式", + "description": "我們建議將 Valora 放在您的主畫面上以便更快存取。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + }, + "gate": { + "qr_code": { + "step1": { + "title": "打開 Gate 應用程式", + "description": "我們建議將 Gate 添加到主屏幕以便更快速訪問。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + }, + "extension": { + "step1": { + "title": "安裝 Gate 插件", + "description": "我們建議將 Gate 固定到任務欄上,方便快速訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" + }, + "step3": { + "title": "刷新您的瀏覽器", + "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" + } + } + }, + "gemini": { + "qr_code": { + "step1": { + "title": "開啟 keys.gemini.com", + "description": "在您的手機瀏覽器上訪問 keys.gemini.com - 不需要下載應用程式。" + }, + "step2": { + "title": "立即創建您的錢包", + "description": "使用您設備內建的身份驗證功能,數秒即可設置您的智能錢包。" + }, + "step3": { + "title": "掃碼連接", + "description": "掃描二維碼即可立即連接您的錢包 - 簡單有效。" + } + }, + "extension": { + "step1": { + "title": "前往 keys.gemini.com", + "description": "不需要擴充功能或下載 - 您的錢包安全地存放於瀏覽器中。" + }, + "step2": { + "title": "一鍵設置", + "description": "立即使用密碼鎖認證建立您的智能錢包 - 比其他錢包更簡單。" + }, + "step3": { + "title": "連接並啟用", + "description": "批准連接,即可使用 - 不中立的錢包,只需運行即刻使用。" + } + } + }, + "xportal": { + "qr_code": { + "step1": { + "description": "將 xPortal 添加到主屏幕以便更快速訪問您的錢包。", + "title": "打開 xPortal 應用程式" + }, + "step2": { + "description": "創建一個新的錢包或導入現有的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描 QR 按鈕" + } + } + }, + "mew": { + "qr_code": { + "step1": { + "description": "我們建議將 MEW Wallet 添加到主屏幕以便更快速訪問。", + "title": "打開 MEW Wallet 應用程式" + }, + "step2": { + "description": "您可以使用雲備份功能輕鬆備份您的錢包。", + "title": "創建或導入錢包" + }, + "step3": { + "description": "掃描後,將出現連接提示以連接您的錢包。", + "title": "點擊掃描按鈕" + } + } + }, + "zilpay": { + "qr_code": { + "step1": { + "title": "打開 ZilPay 應用程式", + "description": "將 ZilPay 添加到您的主畫面,更快速地存取您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + }, + "nova": { + "qr_code": { + "step1": { + "title": "打開 Nova Wallet 應用程序", + "description": "將 Nova Wallet 添加到主屏幕上,以便更快訪問您的錢包。" + }, + "step2": { + "title": "創建或導入錢包", + "description": "創建一個新的錢包或導入現有的錢包。" + }, + "step3": { + "title": "點擊掃描按鈕", + "description": "掃描後,將出現連接提示以連接您的錢包。" + } + } + } + } +} +`;export{u as default}; diff --git a/dist/assets/zksync-DH7HK5U4-Dt4usFw6.js b/dist/assets/zksync-DH7HK5U4-Dt4usFw6.js new file mode 100644 index 0000000..5ec3a7e --- /dev/null +++ b/dist/assets/zksync-DH7HK5U4-Dt4usFw6.js @@ -0,0 +1 @@ +var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.1%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20d%3D%22m32.25%2020.005-6.954-6.922v5.066l-6.901%205.078h6.901v3.7l6.954-6.922ZM7.75%2020.005l6.954%206.923v-5.036l6.901-5.119h-6.901v-3.7L7.75%2020.004Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/dist/assets/zora-FYL5H3IO-iB4wygST.js b/dist/assets/zora-FYL5H3IO-iB4wygST.js new file mode 100644 index 0000000..9f5adb9 --- /dev/null +++ b/dist/assets/zora-FYL5H3IO-iB4wygST.js @@ -0,0 +1 @@ +var o="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22b%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.005%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%22.458%22%20stop-color%3D%22%23B7D8C8%22%2F%3E%3Cstop%20offset%3D%22.656%22%20stop-color%3D%22%236D9487%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234B4C3C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.005%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%22.458%22%20stop-color%3D%22%23B5B4C6%22%2F%3E%3Cstop%20offset%3D%22.656%22%20stop-color%3D%22%239B8F8F%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234B4C3C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.156%22%20stop-color%3D%22%23DCC8D0%22%2F%3E%3Cstop%20offset%3D%22.302%22%20stop-color%3D%22%2378C8CF%22%2F%3E%3Cstop%20offset%3D%22.427%22%20stop-color%3D%22%234D959E%22%2F%3E%3Cstop%20offset%3D%22.557%22%20stop-color%3D%22%23305EB9%22%2F%3E%3Cstop%20offset%3D%22.797%22%20stop-color%3D%22%23311F12%22%2F%3E%3Cstop%20offset%3D%22.906%22%20stop-color%3D%22%23684232%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%232D1C13%22%2F%3E%3C%2FradialGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{o as default}; diff --git a/dist/font/Gellix-TRIAL-Regular.otf b/dist/font/Gellix-TRIAL-Regular.otf new file mode 100644 index 0000000..b986cb4 Binary files /dev/null and b/dist/font/Gellix-TRIAL-Regular.otf differ diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..64f93a4 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,14 @@ + + + + + + + OpenAssets + + + + +
+ + diff --git a/dist/logo-light.svg b/dist/logo-light.svg new file mode 100644 index 0000000..792114a --- /dev/null +++ b/dist/logo-light.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/meth-crystal.svg b/dist/meth-crystal.svg new file mode 100644 index 0000000..664d95f --- /dev/null +++ b/dist/meth-crystal.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/ADMIN_ASSET_FLOW_FIXES.md b/docs/ADMIN_ASSET_FLOW_FIXES.md index 636f904..385684a 100644 --- a/docs/ADMIN_ASSET_FLOW_FIXES.md +++ b/docs/ADMIN_ASSET_FLOW_FIXES.md @@ -243,7 +243,7 @@ await Asset.updateOne( ## 🎯 Expected Behavior After Fixes -### Step 1: Register on Mantle +### Step 1: Register on arbitrum **Should Show:** - Assets with `checkpoints.attested === true` - AND `checkpoints.registered !== true` diff --git a/docs/ADMIN_DASHBOARD_FIXED.md b/docs/ADMIN_DASHBOARD_FIXED.md index 9ef04f8..11e578c 100644 --- a/docs/ADMIN_DASHBOARD_FIXED.md +++ b/docs/ADMIN_DASHBOARD_FIXED.md @@ -49,7 +49,7 @@ const complianceAssets = allAssets.filter((asset: any) => - ✅ `checkpoints.attested === true` - ✅ `checkpoints.registered !== true` - Shows: Invoice details, face value, token supply, buyer -- Action: **Register on Mantle** → Changes to REGISTERED +- Action: **Register on arbitrum** → Changes to REGISTERED **Phase 2: Ready for Tokenization** (Registered but NOT Tokenized) - ✅ `checkpoints.registered === true` @@ -120,7 +120,7 @@ const complianceAssets = allAssets.filter((asset: any) => │ ATTESTED │ → Compliance approved └──────┬──────┘ │ OPERATIONS (Phase 1) - │ Admin clicks "Register on Mantle" + │ Admin clicks "Register on arbitrum" ↓ ┌─────────────┐ │ REGISTERED │ → On-chain registration @@ -178,7 +178,7 @@ asset.checkpoints.attested // true/false - ✅ Split into 3 phases (Ready to Register, Ready to Tokenize, Tokenized) - ✅ Shows registry transaction hash and block number - ✅ Displays token deployment details -- ✅ Links to Mantle Sepolia explorer +- ✅ Links to arbitrum Sepolia explorer - ✅ Correct stats counters per phase ### Settlement View @@ -197,7 +197,7 @@ All actions now use correct `asset.assetId` instead of `asset.id`: await adminService.approveAsset(asset.assetId, adminWallet); // Status: MERKLED → ATTESTED -// Register on Mantle +// Register on arbitrum await adminService.registerAsset(asset.assetId); // Status: ATTESTED → REGISTERED diff --git a/docs/ADMIN_DASHBOARD_INTEGRATION.md b/docs/ADMIN_DASHBOARD_INTEGRATION.md index 7b5d815..91ec0ba 100644 --- a/docs/ADMIN_DASHBOARD_INTEGRATION.md +++ b/docs/ADMIN_DASHBOARD_INTEGRATION.md @@ -275,7 +275,7 @@ POST /admin/assets/9482d1dc-b852-417f-ab7e-f8a1cdd44057/register Response: { "success": true, "transactionHash": "0x498e...", - "explorerUrl": "https://explorer.sepolia.mantle.xyz/tx/0x498e..." + "explorerUrl": "https://explorer.sepolia.arbitrum.xyz/tx/0x498e..." } ``` @@ -320,7 +320,7 @@ POST /admin/assets/list-on-marketplace Response: { "success": true, "transactionHash": "0x71123...", - "explorerUrl": "https://explorer.sepolia.mantle.xyz/tx/0x71123..." + "explorerUrl": "https://explorer.sepolia.arbitrum.xyz/tx/0x71123..." } ``` diff --git a/docs/ADMIN_FLOW_FIXES_IMPLEMENTED.md b/docs/ADMIN_FLOW_FIXES_IMPLEMENTED.md index 1d1fd4c..cd3fb5b 100644 --- a/docs/ADMIN_FLOW_FIXES_IMPLEMENTED.md +++ b/docs/ADMIN_FLOW_FIXES_IMPLEMENTED.md @@ -222,12 +222,12 @@ export interface AdminAsset { ## 🎯 Expected Behavior After Fixes -### Step 1: Register on Mantle +### Step 1: Register on arbitrum **Shows:** - Assets with `checkpoints.attested === true` - AND `checkpoints.registered !== true` -**Button:** "Register on Mantle" → Opens registration modal +**Button:** "Register on arbitrum" → Opens registration modal --- @@ -265,7 +265,7 @@ export interface AdminAsset { ### Example: AUCTION Asset ``` -Step 1: Asset attested → Click "Register on Mantle" +Step 1: Asset attested → Click "Register on arbitrum" ↓ Step 2: Asset registered → Click "Deploy Token" ↓ @@ -283,7 +283,7 @@ Auction goes LIVE on marketplace ### Example: STATIC Asset ``` -Step 1: Asset attested → Click "Register on Mantle" +Step 1: Asset attested → Click "Register on arbitrum" ↓ Step 2: Asset registered → Click "Deploy Token" ↓ diff --git a/docs/API_DOCS.md b/docs/API_DOCS.md index db0a888..1e0ed2a 100644 --- a/docs/API_DOCS.md +++ b/docs/API_DOCS.md @@ -1,4 +1,4 @@ -# Mantle RWA Platform - API Documentation +# arbitrum RWA Platform - API Documentation **Base URL:** `http://localhost:3000` @@ -38,7 +38,7 @@ Creates a challenge message for wallet signing. **Response:** ```json { - "message": "Sign this message to authenticate with Mantle RWA Platform.\nNonce: \nTimestamp: ", + "message": "Sign this message to authenticate with arbitrum RWA Platform.\nNonce: \nTimestamp: ", "nonce": "" } ``` @@ -91,7 +91,7 @@ curl -X POST 'http://localhost:3000/auth/login' \ --data '{ "walletAddress": "0x23e67597f0898f747Fa3291C892016hadF9455D0", "signature": "", - "message": "Sign this message to authenticate with Mantle RWA Platform.\nNonce: \nTimestamp: " + "message": "Sign this message to authenticate with arbitrum RWA Platform.\nNonce: \nTimestamp: " }' ``` diff --git a/docs/ASSET_STUCK_IN_STEP1_FIX.md b/docs/ASSET_STUCK_IN_STEP1_FIX.md index a19e9a9..269a9d2 100644 --- a/docs/ASSET_STUCK_IN_STEP1_FIX.md +++ b/docs/ASSET_STUCK_IN_STEP1_FIX.md @@ -1,7 +1,7 @@ # 🔧 Fix for "Asset Stuck in Step 1" Issue **Date:** 2025-12-26 -**Issue:** Assets registered on-chain still showing in "Step 1: Register on Mantle" +**Issue:** Assets registered on-chain still showing in "Step 1: Register on arbitrum" --- @@ -186,7 +186,7 @@ await Asset.updateOne( 1. Upload a new asset 2. Approve it for compliance -3. **Step 1:** Click "Register on Mantle" +3. **Step 1:** Click "Register on arbitrum" - Wait for success - **Asset should DISAPPEAR from Step 1** - **Asset should APPEAR in Step 2** diff --git a/docs/CONTRACT_INTEGRATION_COMPLETE.md b/docs/CONTRACT_INTEGRATION_COMPLETE.md index 81e0460..c50536e 100644 --- a/docs/CONTRACT_INTEGRATION_COMPLETE.md +++ b/docs/CONTRACT_INTEGRATION_COMPLETE.md @@ -34,7 +34,7 @@ Contract addresses, ABIs, and helper functions. **Contains:** -- Deployed contract addresses (Mantle Sepolia) +- Deployed contract addresses (arbitrum Sepolia) - Contract ABIs: USDC, PrimaryMarketplace, IdentityRegistry - Helper functions: UUID → bytes32, wei conversions - Type definitions for contract interactions @@ -314,11 +314,11 @@ useEffect(() => { --- -## 🎯 Deployed Contracts (Mantle Sepolia) +## 🎯 Deployed Contracts (arbitrum Sepolia) ```json { - "network": "mantleTestnet", + "network": "arbitrumTestnet", "contracts": { "IdentityRegistry": "0x2E310C62A225033055E88B690F8d054ece8bcbC4", "PrimaryMarketplace": "0x96183D507Bbb0dA7d78192dce7FBC8C1f209061C", @@ -335,7 +335,7 @@ All addresses are hardcoded in `auction.contract.ts`. ## 🔧 Technical Details ### Wallet Integration -- **RainbowKit** configured for Mantle Sepolia (rainbowkit.config.ts) +- **RainbowKit** configured for arbitrum Sepolia (rainbowkit.config.ts) - **Wagmi hooks** used for all contract interactions - Existing wallet connection flow preserved diff --git a/docs/CRITICAL_BACKEND_BUG.md b/docs/CRITICAL_BACKEND_BUG.md index 2bb1056..13e0cce 100644 --- a/docs/CRITICAL_BACKEND_BUG.md +++ b/docs/CRITICAL_BACKEND_BUG.md @@ -12,7 +12,7 @@ When assets are successfully registered on-chain, deployed as tokens, or listed ### Observed Behavior: -1. **Admin clicks "Register on Mantle"** for asset `e5d970bf-bb75-4a3c-89e6-446b9bf62d40` +1. **Admin clicks "Register on arbitrum"** for asset `e5d970bf-bb75-4a3c-89e6-446b9bf62d40` 2. **Backend successfully registers the asset on-chain** 3. **BUT backend does NOT update:** - `checkpoints.registered` (stays `false`, should be `true`) @@ -109,7 +109,7 @@ Step 5.5: Register Asset On-Chain ## 🛠️ Required Backend Fix -### File: `TOA-Server-Mantle/src/controllers/admin.controller.ts` (or similar) +### File: `TOA-Server-arbitrum/src/controllers/admin.controller.ts` (or similar) ### Endpoint: `POST /admin/assets/:id/register` @@ -236,7 +236,7 @@ The same bug likely exists in **ALL three operations**: ### Test Case 3: Verify Frontend Flow 1. Asset in Step 1 (attested, not registered) -2. Click "Register on Mantle" +2. Click "Register on arbitrum" 3. Wait for success 4. **Asset should DISAPPEAR from Step 1** 5. **Asset should APPEAR in Step 2** (registered, not tokenized) diff --git a/docs/CRITICAL_FIXES_SUMMARY.md b/docs/CRITICAL_FIXES_SUMMARY.md index 33f6dd5..d0c142b 100644 --- a/docs/CRITICAL_FIXES_SUMMARY.md +++ b/docs/CRITICAL_FIXES_SUMMARY.md @@ -283,7 +283,7 @@ useEffect(() => { ### Test Admin Asset Flow: - [ ] Asset in Step 1 (attested, not registered) -- [ ] Click "Register on Mantle" +- [ ] Click "Register on arbitrum" - [ ] If already registered, shows informative message - [ ] Run manual DB fix - [ ] Refresh page diff --git a/docs/DEBUGGING_PLACE_BID_BUTTON.md b/docs/DEBUGGING_PLACE_BID_BUTTON.md index 1a6dc0c..0e3b265 100644 --- a/docs/DEBUGGING_PLACE_BID_BUTTON.md +++ b/docs/DEBUGGING_PLACE_BID_BUTTON.md @@ -52,7 +52,7 @@ You should see logs like this: **Solution:** 1. Click the wallet connect button in the top right 2. Connect your wallet -3. Make sure you're on Mantle Sepolia network +3. Make sure you're on arbitrum Sepolia network **Console will show:** ``` @@ -296,7 +296,7 @@ When you click "Place Bid", verify: 5. Screenshot of your wallet connection status ### Common External Issues: -- **Wallet not on Mantle Sepolia network** → Switch network in wallet +- **Wallet not on arbitrum Sepolia network** → Switch network in wallet - **Not enough USDC** → Get test USDC from faucet: `0x643b8c16F894B39399506cC921efa68d61A14905` - **Wallet popup blocked** → Allow popups for the site - **Transaction rejected in wallet** → User declined in wallet popup diff --git a/docs/FINAL_FIX_SUMMARY.md b/docs/FINAL_FIX_SUMMARY.md index de41d8e..6a46339 100644 --- a/docs/FINAL_FIX_SUMMARY.md +++ b/docs/FINAL_FIX_SUMMARY.md @@ -137,7 +137,7 @@ onChainAssets: assets.filter(a => #### 2. `src/pages/admin/operations/OperationsView.page.tsx` -**Step 1: Register on Mantle** +**Step 1: Register on arbitrum** ```typescript // ❌ OLD: asset.checkpoints.attested && !asset.checkpoints.registered // ✅ NEW: asset.status === 'ATTESTED' @@ -173,12 +173,12 @@ onChainAssets: assets.filter(a => ### Asset: `4105fe0d-5eca-41b6-a51e-cf0e1299e8d7` - Status: `"ATTESTED"` ✅ -- **Will appear in:** Step 1 (Register on Mantle) ✅✅✅ +- **Will appear in:** Step 1 (Register on arbitrum) ✅✅✅ - **CORRECT!** ### Asset: `9d2dd6af-c0da-4e5e-a59d-bf41e7630932` - Status: `"ATTESTED"` ✅ -- **Will appear in:** Step 1 (Register on Mantle) ✅✅✅ +- **Will appear in:** Step 1 (Register on arbitrum) ✅✅✅ - **CORRECT!** ### Asset: `fb518b56-863e-4e78-b01d-d5cbcfcdaded` @@ -203,7 +203,7 @@ HASHED ↓ MERKLED ────────────► Compliance View (Approve) ↓ -ATTESTED ───────────► Step 1: Register on Mantle +ATTESTED ───────────► Step 1: Register on arbitrum ↓ REGISTERED ─────────► Step 2: Deploy Token ↓ @@ -241,7 +241,7 @@ LISTED ─────────────► Settlement View ### Admin Dashboard - Step 1 (Register): - [x] Shows assets with status = ATTESTED -- [x] Click "Register on Mantle" → Backend updates status to REGISTERED +- [x] Click "Register on arbitrum" → Backend updates status to REGISTERED - [x] Asset DISAPPEARS from Step 1 - [x] Asset APPEARS in Step 2 diff --git a/docs/FIX_LISTING_APPROVAL.md b/docs/FIX_LISTING_APPROVAL.md index dff6030..9bb0773 100644 --- a/docs/FIX_LISTING_APPROVAL.md +++ b/docs/FIX_LISTING_APPROVAL.md @@ -86,7 +86,7 @@ async function fixListingApproval() { console.log('Token Address:', tokenAddress); console.log('Originator:', originator); - // Connect to Mantle Sepolia with ORIGINATOR wallet + // Connect to arbitrum Sepolia with ORIGINATOR wallet // IMPORTANT: Use the originator's private key const originatorPrivateKey = process.env.ORIGINATOR_PRIVATE_KEY; if (!originatorPrivateKey) { @@ -94,7 +94,7 @@ async function fixListingApproval() { process.exit(1); } - const provider = new ethers.JsonRpcProvider('https://rpc.sepolia.mantle.xyz'); + const provider = new ethers.JsonRpcProvider('https://rpc.sepolia.arbitrum.xyz'); const wallet = new ethers.Wallet(originatorPrivateKey, provider); console.log('Wallet Address:', wallet.address); @@ -139,7 +139,7 @@ async function fixListingApproval() { console.log('✅ Approved in block', receipt.blockNumber); console.log('\n✅ Fix Complete!'); console.log('━'.repeat(50)); - console.log(`Explorer: https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log(`Explorer: https://explorer.sepolia.arbitrum.xyz/tx/${tx.hash}`); console.log('\nYou can now purchase tokens from this asset on the frontend!'); } @@ -149,7 +149,7 @@ fixListingApproval().catch(console.error); ### Step 3: Run the Fix ```bash -cd TOA-Server-Mantle +cd TOA-Server-arbitrum # Set the originator's private key export ORIGINATOR_PRIVATE_KEY="0x..." # The originator wallet's private key @@ -180,7 +180,7 @@ Approval TX: 0x... ✅ Fix Complete! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Explorer: https://explorer.sepolia.mantle.xyz/tx/0x... +Explorer: https://explorer.sepolia.arbitrum.xyz/tx/0x... You can now purchase tokens from this asset on the frontend! ``` diff --git a/docs/MARKETPLACE_LISTING_ADDED.md b/docs/MARKETPLACE_LISTING_ADDED.md index 5d21d51..0b567b3 100644 --- a/docs/MARKETPLACE_LISTING_ADDED.md +++ b/docs/MARKETPLACE_LISTING_ADDED.md @@ -90,7 +90,7 @@ const confirmListing = async () => { ### 4. Updated OperationsView Layout **Phase 1**: Attested → Ready for Registry -- Action: **Register on Mantle** +- Action: **Register on arbitrum** **Phase 2**: Registered → Ready for Tokenization - Action: **Deploy Token** @@ -165,7 +165,7 @@ const confirmListing = async () => { 2. Operations Center - Phase 1 (/admin/operations) ↓ Asset Status: ATTESTED - Action: Click "Register on Mantle" + Action: Click "Register on arbitrum" ↓ API: POST /admin/assets/:id/register Result: Status → REGISTERED @@ -263,7 +263,7 @@ POST /admin/assets/list-on-marketplace "price": "1000000", "minInvestment": "1000000000000000000000", "transactionHash": "0x71123ed678b2b4f8f21b3b0411412a12062c7a315dddb0e01b1abfa174bed034", - "explorerUrl": "https://explorer.sepolia.mantle.xyz/tx/0x71123..." + "explorerUrl": "https://explorer.sepolia.arbitrum.xyz/tx/0x71123..." } ``` diff --git a/docs/PROJECT_SUMMARY.md b/docs/PROJECT_SUMMARY.md new file mode 100644 index 0000000..e2a6f24 --- /dev/null +++ b/docs/PROJECT_SUMMARY.md @@ -0,0 +1,595 @@ +# OpenAssets — Project Summary + +> TOA-Client-arbitrum | arbitrum Hackathon 2026 + +--- + +## What Is This? + +**OpenAssets** is a production-grade, arbitrum-native web3 platform for **tokenized Real-World Assets (RWAs)**. It lets users discover, invest in, trade, borrow against, and earn yield on invoice-backed digital assets — all on-chain. + +The codebase is a React + TypeScript single-page application that integrates deeply with EVM smart contracts (primarily on arbitrum Sepolia) and supports a secondary Stellar network path. It was built as a hackathon project but follows professional architecture patterns throughout. + +--- + +## Tech Stack + +| Layer | Technology | +|---|---| +| UI Framework | React 19.2 + Vite 7.2 + TypeScript 5.9 | +| Styling | Tailwind CSS 4 + PostCSS | +| Routing | React Router DOM 7 | +| EVM Wallet | RainbowKit 2 + Wagmi 2 + Viem 2 | +| Contract Calls | Ethers.js 6 | +| State (client) | Zustand 5 | +| State (server) | TanStack React Query 5 | +| Charts | ECharts 6 + Recharts 3 | +| Animation | Framer Motion 12 | +| 3D / Shaders | React Three Fiber 9 + Three.js + Paper Design Shaders | +| Icons | Lucide React + Tabler Icons | +| UI Primitives | Radix UI (Dialog, Tabs, Select, Popover, etc.) | + +--- + +## Architecture Overview + +### 1. Multi-Network, Feature-Gated Routing + +The app mounts under a `/:network` URL prefix. This drives which features are visible: + +``` +/arbitrum/* → full feature set (leverage, faucet, secondary market, borrow) +/stellar/* → limited feature set (secondary market + borrow only) +``` + +Feature availability is declared in `src/lib/network/network.config.ts` and enforced at the component level by ``. Unsupported routes redirect to the network root. + +### 2. Provider Stack + +``` + ← reads :network param, sets context + ← RainbowKit + Wagmi (EVM) + ← React Query wrapper (Stellar) + + +``` + +### 3. Service Layer (`src/lib/api/`) + +All backend communication goes through class-based services that extend `BaseService`. Each service maps 1-to-1 with a domain: + +| Service | Domain | +|---|---| +| `auth.service.ts` | Wallet challenge/response, JWT management | +| `marketplace.service.ts` | Listings, auctions, bids, P2P orders | +| `portfolio.service.ts` | User holdings, purchase notifications | +| `asset.service.ts` | Issuer asset management | +| `issuer.service.ts` | Originator onboarding & profile | +| `solvency.service.ts` | Credit lines, borrow/repay | +| `leverage.service.ts` | stARB leverage positions | +| `admin.service.ts` | Platform admin operations | +| `contract.service.ts` | Generic contract interactions | +| `solvency-contract.service.ts` | Solvency vault contract calls | +| `kyc.service.ts` | KYC flows | +| `faucet.service.ts` | Test token distribution | +| `notification.service.ts` | Real-time notifications | +| `changelog.service.ts` | Platform changelog | + +`BaseService` handles: auth headers, 30s timeout via `AbortController`, automatic logout on 401, and ngrok bypass header for local development. + +### 4. Zustand Stores (`src/stores/`) + +| Store | Manages | +|---|---| +| `auth.store.ts` | Logged-in user, tokens, role | +| `marketplace.store.ts` | Listings, auctions, bids | +| `portfolio.store.ts` | Owned assets, active bids | +| `leverage.store.ts` | stARB positions, harvest history | +| `solvency.store.ts` | Credit lines, loans | +| `admin.store.ts` | Admin dashboard data | +| `changelog.store.ts` | Changelog entries | + +All stores follow the same async pattern: `isLoading`, `error`, and action methods that delegate to the service layer. + +### 5. TypeScript Types (`src/types/`) + +Strict, domain-aligned interfaces for every major entity: +`auth.types.ts` · `marketplace.types.ts` · `issuer.types.ts` · `solvency.types.ts` · `leverage.types.ts` · `admin.types.ts` · `changelog.types.ts` + +--- + +## Core Feature Modules + +### Marketplace (Primary) + +Routes: `/marketplace`, `/marketplace/asset/:id`, `/marketplace/auction/:id` + +- Browse RWA invoice tokens +- **Fixed-price listings** — direct USDC purchase +- **Uniform-price auctions** — submit bids, clearing price set at settlement +- Asset detail pages with document attestation, yield projections, and on-chain registry data + +### Secondary Market (P2P Trading) + +Route: `/trade/asset/:id` *(arbitrum only)* + +- Orderbook UI — live buy and sell orders +- Create limit orders for any RWA token +- Fill existing orders from counterparties +- Time-weighted yield transfers with ownership — yield accrual follows the token across trades +- Chart view: execution history + sentiment indicators + +### Portfolio + +Route: `/portfolio` + +- View all owned RWA tokens with current value and accrued yield +- Track pending auction bids +- Monitor active leverage positions +- Monitor active loans + +### stARB Leverage *(arbitrum-native)* + +Available on asset detail pages when purchasing. + +The core arbitrum-specific differentiator: +- Deposit stARB as collateral → borrow USDC → buy RWA tokens +- stARB staking yield is auto-harvested periodically to repay interest +- Result: near-zero effective borrowing cost +- Health factor monitoring (basis points; 15 000 = 150% = healthy) +- Positions display: collateral, debt, health status, harvest history + +### Universal Credit / OAID (Open Access ID) + +Route: `/borrow` *(arbitrum + Stellar)* + +- Deposit RWA tokens as collateral +- Receive a credit line at 70% LTV +- Borrow USDC directly from the platform Senior Pool +- Future: plug into Aave, Compound, and other third-party protocols +- Health factor gating at 110% minimum + +### Issuer / Originator Flow + +Routes: `/onboarding`, `/issuer/dashboard`, `/issuer/asset/:id` + +RWA asset lifecycle: +``` +UPLOADED → ATTESTED → REGISTERED → TOKENIZED → LISTED → SETTLED +``` +- Upload invoice documents +- Submit for compliance attestation +- Deploy ERC-3643 identity-bound token via `TokenFactory` +- List on primary marketplace (auction or fixed-price) +- Track sales; settle at maturity + +### Admin Dashboard + +Routes: `/admin/*` + +| Section | Purpose | +|---|---| +| Overview | Platform-wide metrics | +| Listings | Approve or reject asset tokenizations | +| Loans | Monitor all active credit positions | +| Compliance | KYC management | +| Operations | System health | +| Payouts | Settlement queue processing | +| Settlements | Handle matured assets | + +### Faucet + +Route: `/faucet` *(arbitrum only)* + +Claim test USDC, stARB, and RWA tokens for use on arbitrum Sepolia testnet. + +--- + +## Authentication + +1. User connects wallet via RainbowKit +2. Backend issues a challenge (nonce-based message) +3. User signs the challenge with their private key +4. Frontend sends signature → backend verifies → issues JWT pair +5. Tokens stored in `localStorage` scoped to network (`arbitrum_access_token`, `stellar_access_token`) +6. All API calls attach `Authorization: Bearer ` via `BaseService` +7. 401 responses trigger automatic logout and redirect to `/auth` + +**Roles:** `INVESTOR` · `ORIGINATOR` · `ADMIN` + +--- + +## Smart Contract Layer + +**Default network:** arbitrum Sepolia (chain ID 5003) + +| Contract | Purpose | Env Var | +|---|---|---| +| Primary Marketplace | Auctions + fixed listings | `VITE_PRIMARY_MARKETPLACE_ADDRESS` | +| Secondary Market | P2P orderbook | `VITE_SECONDARY_MARKET` | +| Yield Vault | Yield accrual + distribution | `VITE_YIELD_VAULT_ADDRESS` | +| Token Factory | ERC-3643 token deployment | `VITE_TOKEN_FACTORY` | +| Identity Registry | KYC-bound token permissions | `VITE_IDENTITY_REGISTRY` | +| Leverage Vault | stARB collateral custody | `VITE_LEVERAGE_VAULT` | +| Solvency Vault | RWA collateral for credit | `VITE_SOLVENCY_VAULT` | +| Senior Pool | USDC lending pool | `VITE_SENIOR_POOL` | +| OAID Registry | Universal credit identity | `VITE_OAID` | +| Mock stARB | Test stARB token | `VITE_MOCK_stARB` | +| USDC | Test USDC | `VITE_USDC_ADDRESS` | +| Faucet | Token distribution | `VITE_FAUCET` | + +--- + +## Route Map + +``` +/:network/ Landing page +/:network/how-it-works FAQ / documentation +/:network/about About +/:network/changelog Development changelog + +/:network/auth Wallet login +/:network/adminAuth Admin login +/:network/faucet Test tokens [arbitrum only] + +/:network/marketplace Asset discovery +/:network/marketplace/asset/:id Asset detail + buy +/:network/marketplace/auction/:id Auction detail + bid + +/:network/trade/asset/:id Secondary market [arbitrum only] +/:network/portfolio User holdings +/:network/borrow Credit / OAID [feature-gated] + +/:network/onboarding Issuer registration +/:network/issuer/dashboard Issuer management +/:network/issuer/asset/:id Asset management (issuer) + +/:network/admin Admin dashboard +/:network/admin/listings Listing approvals +/:network/admin/loans Loan monitoring +/:network/admin/compliance KYC +/:network/admin/operations System health +/:network/admin/payouts Payout queue +/:network/admin/settlements Maturity processing + +/marketplace → redirect → /arbitrum/marketplace (legacy) +/auth → redirect → /arbitrum/auth (legacy) +``` + +--- + +## File Structure + +``` +src/ +├── app/ +│ ├── layouts/ +│ │ └── NetworkLayout.tsx Multi-network aware shell +│ ├── providers/ +│ │ ├── NetworkProvider.tsx Network context + routing +│ │ ├── WalletProvider.tsx RainbowKit / Wagmi (EVM) +│ │ ├── StellarWalletProvider.tsx Stellar (React Query) +│ │ └── WalletIntegrityProvider.tsx +│ └── router/ +│ ├── index.tsx Router setup +│ └── public.routes.tsx Route definitions +├── components/ +│ ├── ui/ Primitive components (Radix wrappers) +│ ├── common/ +│ │ └── FeatureGuard.tsx Feature-flag route guard +│ └── ... Page-specific component trees +├── lib/ +│ ├── api/ 15 service classes +│ ├── blockchain/ +│ │ ├── rainbowkit.config.ts +│ │ ├── auction.contract.ts +│ │ ├── leverage.contract.ts +│ │ └── solvency-contract.service.ts +│ ├── network/ +│ │ ├── network.config.ts Per-network feature flags +│ │ └── NetworkContext.tsx +│ ├── utils/ Formatters, helpers +│ └── data/ Static/seed data +├── pages/ +│ ├── landing/ Home, About, FAQ, Changelog +│ ├── marketplace/ Browse + buy +│ ├── secondary-marketplace/ P2P orderbook +│ ├── portfolio/ Holdings dashboard +│ ├── borrow/ Credit / OAID +│ ├── issuer/ Tokenization workflow +│ ├── admin/ Admin views +│ ├── faucet/ Test tokens +│ └── public/ Auth pages +├── stores/ 6 Zustand stores +├── types/ 7 TypeScript definition files +├── styles/ +├── App.tsx +└── main.tsx +``` + +--- + +## Development + +```bash +npm install # install dependencies +npm run dev # Vite dev server with HMR +npm run build # tsc + Vite production build +npm run preview # preview production build locally +npm run lint # ESLint +``` + +### Required `.env` variables + +``` +VITE_arbitrum_API_URL +VITE_STELLAR_API_URL +VITE_WALLETCONNECT_PROJECT_ID +VITE_FAUCET +VITE_USDC_ADDRESS +VITE_PRIMARY_MARKETPLACE_ADDRESS +VITE_SECONDARY_MARKET +VITE_YIELD_VAULT_ADDRESS +VITE_TOKEN_FACTORY +VITE_IDENTITY_REGISTRY +VITE_MOCK_stARB +VITE_LEVERAGE_VAULT +VITE_OAID +VITE_SOLVENCY_VAULT +VITE_SENIOR_POOL +``` + +--- + +## Documentation Index + +| File | Contents | +|---|---| +| `docs/PROJECT_SUMMARY.md` | This document | +| `docs/IMPLEMENTATION_COMPLETE.md` | Borrowing flow implementation notes | +| `docs/INTEGRATION_STATUS.md` | Marketplace integration status | +| `docs/CONTRACT_INTEGRATION_COMPLETE.md` | Smart contract integration notes | +| `docs/SOLVENCY_VERIFICATION_AUDIT_REPORT.md` | Credit system audit | +| `docs/API_AUDIT_REPORT.md` | API endpoint audit | +| `docs/Solvency_flows.md` | Borrowing & lending flow diagrams | +| `docs/plan/netowork_switchable_frontend.md` | Multi-chain architecture plan | + +--- + +## Status + +All major features are implemented and marked complete in the documentation: + +- [x] Wallet authentication (challenge/response + JWT) +- [x] Asset discovery marketplace +- [x] Uniform-price auction system +- [x] Secondary P2P orderbook + chart +- [x] stARB leverage (arbitrum-native) +- [x] Universal Credit / OAID borrowing +- [x] Issuer tokenization workflow +- [x] Admin dashboard +- [x] KYC / identity registry integration +- [x] Multi-network routing (arbitrum + Stellar) +- [x] Feature-gated UI per network +- [x] Test faucet + + + +## Directory striuctre + + TOA-Client-arbitrum git:(main) ✗ tree ./src/ +./src/ +├── App.tsx +├── app +│ ├── layouts +│ │ └── NetworkLayout.tsx +│ ├── providers +│ │ ├── NetworkProvider.tsx +│ │ ├── StellarWalletProvider.tsx +│ │ ├── WalletIntegrityProvider.tsx +│ │ └── WalletProvider.tsx +│ └── router +│ ├── index.tsx +│ └── public.routes.tsx +├── assets +│ ├── ALogo-removebg-preview.png +│ ├── ALogo-removebg-preview.svg +│ ├── ALogo.png +│ ├── AbLogo.png +│ ├── Orion.png +│ ├── cloud.png +│ └── react.svg +├── components +│ ├── changelog +│ │ ├── ChangelogHotTimeline.tsx +│ │ ├── ChangelogTester.tsx +│ │ ├── CustomGitGraph.tsx +│ │ ├── GitHubCalendar.tsx +│ │ └── index.ts +│ ├── common +│ │ ├── FeatureGuard.tsx +│ │ └── Navbar.tsx +│ ├── faucet +│ │ └── TokenFaucetCard.tsx +│ ├── issuer +│ │ └── AssetUploadModal.tsx +│ ├── leverage +│ │ ├── LeverageForm.tsx +│ │ ├── PositionDetailChart.tsx +│ │ ├── PositionSparkline.tsx +│ │ ├── PositionStats.tsx +│ │ └── PositionsTable.tsx +│ ├── marketplace +│ │ ├── SentimentChart.tsx +│ │ └── TradeChart.tsx +│ ├── notifications +│ │ └── NotificationBell.tsx +│ ├── portfolio +│ │ ├── ActiveBidsTable.tsx +│ │ ├── MiniAreaChart.tsx +│ │ ├── MyAssetsTable.tsx +│ │ ├── MyLoansTable.tsx +│ │ ├── NoAssetsModal.tsx +│ │ ├── PortfolioStats.tsx +│ │ ├── RepayLoanModal.tsx +│ │ └── TradesTable.tsx +│ ├── ui +│ │ ├── 404-page-not-found.tsx +│ │ ├── badge.tsx +│ │ ├── button.tsx +│ │ ├── card.tsx +│ │ ├── dialog.tsx +│ │ ├── fadein.tsx +│ │ ├── faq-details.tsx +│ │ ├── file-upload.tsx +│ │ ├── input.tsx +│ │ ├── label.tsx +│ │ ├── loader.tsx +│ │ ├── page-loader.tsx +│ │ ├── particle-text-effect.tsx +│ │ ├── popover.tsx +│ │ ├── react-tailwind-image-gallery.tsx +│ │ ├── select.tsx +│ │ ├── shimmer-lines.tsx +│ │ ├── sign-in.tsx +│ │ ├── tabs.tsx +│ │ ├── timeline-animation.tsx +│ │ ├── timeline.tsx +│ │ ├── toast.tsx +│ │ ├── vertical-cut-reveal.tsx +│ │ ├── video-player.tsx +│ │ └── wavy.tsx +│ └── wallet +│ ├── ConnectWallet.tsx +│ ├── DocumentUploadModal.tsx +│ └── WalletAddress.tsx +├── constants +│ └── solvency.constants.ts +├── env.d.ts +├── hooks +│ ├── useAuctionContracts.ts +│ ├── useAuthActions.ts +│ ├── useSecondaryMarket.ts +│ ├── useToast.tsx +│ └── useWalletIntegrityMonitor.ts +├── index.css +├── lib +│ ├── api +│ │ ├── admin.service.ts +│ │ ├── asset.service.ts +│ │ ├── auth.service.ts +│ │ ├── base.service.ts +│ │ ├── changelog.service.ts +│ │ ├── contract.service.ts +│ │ ├── faucet.service.ts +│ │ ├── issuer.service.ts +│ │ ├── kyc.service.ts +│ │ ├── leverage.service.ts +│ │ ├── marketplace.service.ts +│ │ ├── notification.service.ts +│ │ ├── portfolio.service.ts +│ │ ├── solvency-contract.service.ts +│ │ └── solvency.service.ts +│ ├── blockchain +│ │ ├── auction.contract.ts +│ │ ├── leverage.contract.ts +│ │ └── rainbowkit.config.ts +│ ├── data +│ │ └── marketplace-helper.ts +│ ├── network +│ │ ├── NetworkContext.tsx +│ │ └── network.config.ts +│ ├── utils +│ │ ├── error-handler.ts +│ │ ├── fetch-interceptor.ts +│ │ ├── portfolioChartGenerator.ts +│ │ └── solvency-adapter.util.ts +│ └── utils.ts +├── main.tsx +├── pages +│ ├── admin +│ │ ├── compliance +│ │ │ └── ComplianceView.page.tsx +│ │ ├── layout +│ │ │ └── AdminLayout.page.tsx +│ │ ├── listings +│ │ │ └── Listings.page.tsx +│ │ ├── loans +│ │ │ └── LoansView.page.tsx +│ │ ├── operations +│ │ │ └── OperationsView.page.tsx +│ │ ├── overview +│ │ │ └── AdminOverview.page.tsx +│ │ ├── payout +│ │ │ └── PayoutView.page.tsx +│ │ └── settlements +│ │ └── SettlementView.page.tsx +│ ├── borrow +│ │ ├── BorrowPage.tsx +│ │ ├── components +│ │ │ ├── DepositCollateralModal.tsx +│ │ │ ├── DirectBorrowModal.tsx +│ │ │ ├── HealthFactorBar.tsx +│ │ │ └── UnifiedBorrowModal.tsx +│ │ └── hooks +│ │ └── useCreditData.ts +│ ├── faucet +│ │ └── Faucet.page.tsx +│ ├── issuer +│ │ ├── asset-details +│ │ │ ├── AssetDetails.page.tsx +│ │ │ └── AssetDetailsWrapper.page.tsx +│ │ └── dashboard +│ │ └── IssuerDashboard.page.tsx +│ ├── landing +│ │ ├── About.page.tsx +│ │ ├── Changelog.page.tsx +│ │ ├── FAQ.page.tsx +│ │ ├── FeaturePage.tsx +│ │ ├── Footer.page.tsx +│ │ ├── Hero.page.tsx +│ │ ├── HeroBackground.tsx +│ │ ├── Home.page.tsx +│ │ ├── MermaidSimulator.page.tsx +│ │ └── Navbar.page.tsx +│ ├── marketplace +│ │ ├── Marketplace.page.tsx +│ │ ├── asset +│ │ │ └── AssetDetails.page.tsx +│ │ └── auction +│ │ └── AuctionDetails.page.tsx +│ ├── portfolio +│ │ └── Portfolio.page.tsx +│ ├── public +│ │ ├── auth +│ │ │ ├── Auth.page.tsx +│ │ │ └── adminAuth.page.tsx +│ │ └── onboarding +│ │ └── IssuerOnboarding.page.tsx +│ └── secondary-marketplace +│ └── TradingEngine.page.tsx +├── stores +│ ├── admin.store.ts +│ ├── auth.store.ts +│ ├── changelog.store.ts +│ ├── leverage.store.ts +│ ├── marketplace.store.ts +│ └── portfolio.store.ts +├── styles +│ ├── Navbar.css +│ ├── globals.css +│ └── heroBackground.css +├── types +│ ├── admin.types.ts +│ ├── auth.types.ts +│ ├── changelog.types.ts +│ ├── issuer.types.ts +│ ├── leverage.types.ts +│ ├── marketplace.types.ts +│ └── solvency.types.ts +└── utils + ├── debounce.ts + └── solvency + ├── format-credit.util.ts + ├── formatters.ts + └── health-factor.util.ts diff --git a/docs/PURCHASE_FLOW_FIXED.md b/docs/PURCHASE_FLOW_FIXED.md index 37c835b..dd8bfed 100644 --- a/docs/PURCHASE_FLOW_FIXED.md +++ b/docs/PURCHASE_FLOW_FIXED.md @@ -180,7 +180,7 @@ Token Address: 0xF837236ea7e3c8fFd1250C62F7c00E1C04ec2E4D ✅ Confirmed in block 32558XXX ✅ Purchase Complete! - Explorer: https://explorer.sepolia.mantle.xyz/tx/0x... + Explorer: https://explorer.sepolia.arbitrum.xyz/tx/0x... 📝 Transaction details for backend notification: { diff --git a/docs/SOLVENCY_FULL.md b/docs/SOLVENCY_FULL.md index 2d33cb9..daa09b6 100644 --- a/docs/SOLVENCY_FULL.md +++ b/docs/SOLVENCY_FULL.md @@ -152,7 +152,7 @@ All scripts require `INVESTOR_KEY` (for user actions) or `ADMIN_KEY` (for admin | `check-oaid-credit.js` | View OAID credit stats | `node scripts/check-oaid-credit.js ` | | `admin-mark-missed-payment.js` | (Admin) Force missed payment | `node scripts/admin-mark-missed-payment.js ` | -## 5. Contract Addresses (Mantle Sepolia) +## 5. Contract Addresses (arbitrum Sepolia) * **SolvencyVault:** `0x9019F4B9bBE67b27f6972019264655ef7a08298e` * **OAID:** `0x307cEEceB3A0ed74E4cE711C8b8033FCB2d635F0` diff --git a/docs/STATUS_BASED_FILTERING_FIX.md b/docs/STATUS_BASED_FILTERING_FIX.md index 297f502..22dab7e 100644 --- a/docs/STATUS_BASED_FILTERING_FIX.md +++ b/docs/STATUS_BASED_FILTERING_FIX.md @@ -92,7 +92,7 @@ assets.filter(asset => asset.status === 'MERKLED') --- -### Operations View - Step 1: Register on Mantle +### Operations View - Step 1: Register on arbitrum **Show:** Assets with `status = 'ATTESTED'` **Action:** Register on-chain @@ -204,7 +204,7 @@ assets.filter(asset => } ``` -**Expected:** Asset appears in **Step 1: Register on Mantle** ✅ +**Expected:** Asset appears in **Step 1: Register on arbitrum** ✅ **Actual:** Works! We're filtering by `status === 'ATTESTED'` ✅ --- @@ -301,7 +301,7 @@ assets.filter(asset => **Current State:** - `status = "ATTESTED"` ✅ -- **Appears in:** Step 1 (Register on Mantle) ✅✅✅ +- **Appears in:** Step 1 (Register on arbitrum) ✅✅✅ - **Correct!** --- diff --git a/docs/TOAST_NOTIFICATION_SYSTEM.md b/docs/TOAST_NOTIFICATION_SYSTEM.md index 86be3f3..f3ec479 100644 --- a/docs/TOAST_NOTIFICATION_SYSTEM.md +++ b/docs/TOAST_NOTIFICATION_SYSTEM.md @@ -106,7 +106,7 @@ Added smooth slide-in animation: 1. ❌ `alert('This asset was already registered on-chain...')` → ✅ `info('Asset Already Registered', '...', 8000)` -2. ❌ `alert('Asset registered successfully on Mantle!')` +2. ❌ `alert('Asset registered successfully on arbitrum!')` → ✅ `success('Registration Successful!', '...')` 3. ❌ `alert('Failed to register asset: ...')` diff --git a/docs/backend/API_REFERENCE.md b/docs/backend/API_REFERENCE.md index 5daf02d..6d85e77 100644 --- a/docs/backend/API_REFERENCE.md +++ b/docs/backend/API_REFERENCE.md @@ -38,7 +38,7 @@ Response: ### 1. Initiate Leveraged Purchase -Create a new leveraged position using mETH as collateral. +Create a new leveraged position using stARB as collateral. ```bash POST /leverage/initiate @@ -50,7 +50,7 @@ Content-Type: application/json "tokenAddress": "0xe7BAdAaF6d2FFF75394cC8608f68362c61F00bFb", "tokenAmount": "100000000000000000000", "pricePerToken": "800000", - "mETHCollateral": "50000000000000000000" + "stARBCollateral": "50000000000000000000" } Response: @@ -71,9 +71,9 @@ Response: ``` **Validation**: -- Validates 150% LTV: `mETH value >= 1.5 × (tokenAmount × pricePerToken)` +- Validates 150% LTV: `stARB value >= 1.5 × (tokenAmount × pricePerToken)` - Checks SeniorPool has sufficient liquidity -- Verifies user has approved mETH spending +- Verifies user has approved stARB spending ### 2. Get Position Details @@ -90,7 +90,7 @@ Response: "positionId": 1, "userAddress": "0x...", "assetId": "...", - "mETHCollateral": "50000000000000000000", + "stARBCollateral": "50000000000000000000", "usdcBorrowed": "80000000000", "currentHealthFactor": 14500, "healthStatus": "HEALTHY", @@ -98,7 +98,7 @@ Response: "harvestHistory": [ { "timestamp": "2025-01-15T10:30:00Z", - "mETHSwapped": "1000000000000000000", + "stARBSwapped": "1000000000000000000", "usdcReceived": "3000000000", "interestPaid": "100000000" } @@ -159,10 +159,10 @@ Response: ### 5. Get Swap Quote -Get expected USDC output for mETH swap. +Get expected USDC output for stARB swap. ```bash -GET /leverage/quote/:mETHAmount +GET /leverage/quote/:stARBAmount Authorization: Bearer Example: @@ -170,18 +170,18 @@ GET /leverage/quote/1000000000000000000 Response: { - "mETHAmount": "1000000000000000000", + "stARBAmount": "1000000000000000000", "expectedUSDC": "3000000000", "expectedUSDCFormatted": "3000.0 USDC" } ``` -### 6. Get mETH Price +### 6. Get stARB Price -Get current mETH price in USD. +Get current stARB price in USD. ```bash -GET /leverage/meth-price +GET /leverage/stARB-price Authorization: Bearer Response: @@ -445,8 +445,8 @@ Response: ### Complete Leveraged Purchase Flow ```bash -# 1. Get mETH price -curl http://localhost:3000/leverage/meth-price \ +# 1. Get stARB price +curl http://localhost:3000/leverage/stARB-price \ -H "Authorization: Bearer $JWT_TOKEN" # 2. Get swap quote @@ -462,7 +462,7 @@ curl -X POST http://localhost:3000/leverage/initiate \ "tokenAddress": "0xe7BAdAaF6d2FFF75394cC8608f68362c61F00bFb", "tokenAmount": "100000000000000000000", "pricePerToken": "800000", - "mETHCollateral": "50000000000000000000" + "stARBCollateral": "50000000000000000000" }' # 4. Monitor position @@ -517,7 +517,7 @@ All endpoints return errors in the following format: ```json { "statusCode": 400, - "message": "Insufficient collateral. Required: 120000000000 USDC worth of mETH, Provided: 100000000000 USDC worth", + "message": "Insufficient collateral. Required: 120000000000 USDC worth of stARB, Provided: 100000000000 USDC worth", "error": "Bad Request" } ``` @@ -582,7 +582,7 @@ Import this collection for quick testing: { "name": "Initiate Purchase", "request": { - "method": "POST", + "stARBod": "POST", "header": [ { "key": "Authorization", @@ -591,7 +591,7 @@ Import this collection for quick testing: ], "body": { "mode": "raw", - "raw": "{\n \"assetId\": \"...\",\n \"tokenAddress\": \"...\",\n \"tokenAmount\": \"100000000000000000000\",\n \"pricePerToken\": \"800000\",\n \"mETHCollateral\": \"50000000000000000000\"\n}" + "raw": "{\n \"assetId\": \"...\",\n \"tokenAddress\": \"...\",\n \"tokenAmount\": \"100000000000000000000\",\n \"pricePerToken\": \"800000\",\n \"stARBCollateral\": \"50000000000000000000\"\n}" }, "url": { "raw": "{{base_url}}/leverage/initiate", diff --git a/docs/backend/LOAN_SYNC_IMPLEMENTATION.md b/docs/backend/LOAN_SYNC_IMPLEMENTATION.md index 6699b7a..58771e5 100644 --- a/docs/backend/LOAN_SYNC_IMPLEMENTATION.md +++ b/docs/backend/LOAN_SYNC_IMPLEMENTATION.md @@ -49,7 +49,7 @@ Created **loan notification endpoints** that frontend/scripts call after on-chai } ``` -### 2. Service Methods +### 2. Service stARBods **[solvency-position.service.ts](packages/backend/src/modules/solvency/services/solvency-position.service.ts:552-625)** @@ -146,7 +146,7 @@ INVESTOR_KEY=0x... node scripts/repay-solvency-loan.js 1 10 ```typescript // After user borrows const response = await fetch('/solvency/loan/borrow-notify', { - method: 'POST', + stARBod: 'POST', headers: { 'Authorization': `Bearer ${userToken}`, 'Content-Type': 'application/json' @@ -163,7 +163,7 @@ const response = await fetch('/solvency/loan/borrow-notify', { // After user repays const response = await fetch('/solvency/loan/repay-notify', { - method: 'POST', + stARBod: 'POST', headers: { 'Authorization': `Bearer ${userToken}`, 'Content-Type': 'application/json' @@ -243,7 +243,7 @@ This implementation follows the same pattern as: ### Backend - ✅ `dto/notify-loan-borrow.dto.ts` - New DTO - ✅ `dto/notify-loan-repayment.dto.ts` - New DTO -- ✅ `services/solvency-position.service.ts` - Added notify methods +- ✅ `services/solvency-position.service.ts` - Added notify stARBods - ✅ `controllers/solvency.controller.ts` - Added endpoints ### Scripts @@ -254,7 +254,7 @@ This implementation follows the same pattern as: ## Future Enhancements -1. **On-Chain Verification**: Add transaction verification in notify methods +1. **On-Chain Verification**: Add transaction verification in notify stARBods 2. **Event Indexer**: Optional blockchain event listener as backup 3. **Webhooks**: Notify external systems of loan events 4. **Batch Sync**: Endpoint to sync multiple positions at once diff --git a/docs/backend/SEQUENCE_DIAGRAMS.md b/docs/backend/SEQUENCE_DIAGRAMS.md index 8e489ed..0340b42 100644 --- a/docs/backend/SEQUENCE_DIAGRAMS.md +++ b/docs/backend/SEQUENCE_DIAGRAMS.md @@ -3,7 +3,7 @@ This document contains sequence diagrams illustrating all major flows in the RWA platform. ## Table of Contents -1. [Leveraged mETH Purchase Flow](#1-leveraged-meth-purchase-flow) +1. [Leveraged stARB Purchase Flow](#1-leveraged-stARB-purchase-flow) 2. [Automated Harvest Flow](#2-automated-harvest-flow) 3. [Health Monitoring & Liquidation Flow](#3-health-monitoring--liquidation-flow) 4. [Settlement Waterfall Flow](#4-settlement-waterfall-flow) @@ -12,7 +12,7 @@ This document contains sequence diagrams illustrating all major flows in the RWA --- -## 1. Leveraged mETH Purchase Flow +## 1. Leveraged stARB Purchase Flow ```mermaid sequenceDiagram @@ -29,19 +29,19 @@ sequenceDiagram participant MongoDB User->>Frontend: Initiate leveraged purchase - Note over User,Frontend: AssetID, TokenAmount,
PricePerToken, mETH Collateral + Note over User,Frontend: AssetID, TokenAmount,
PricePerToken, stARB Collateral Frontend->>LeverageController: POST /leverage/initiate activate LeverageController - LeverageController->>FluxionDEXService: calculateMETHValueUSD(mETH) + LeverageController->>FluxionDEXService: calculatestARBValueUSD(stARB) activate FluxionDEXService - FluxionDEXService->>MockFluxionDEX: getMETHPrice() + FluxionDEXService->>MockFluxionDEX: getstARBPrice() MockFluxionDEX-->>FluxionDEXService: price ($3000) - FluxionDEXService-->>LeverageController: mETH value in USD + FluxionDEXService-->>LeverageController: stARB value in USD deactivate FluxionDEXService - Note over LeverageController: Validate 150% LTV:
mETH value >= 150% of USDC needed + Note over LeverageController: Validate 150% LTV:
stARB value >= 150% of USDC needed alt Insufficient Collateral LeverageController-->>Frontend: Error: Insufficient collateral @@ -50,10 +50,10 @@ sequenceDiagram LeverageController->>LeverageBlockchainService: createPosition(params) activate LeverageBlockchainService - LeverageBlockchainService->>LeverageVault: createPosition(user, mETH, USDC, token, amount) + LeverageBlockchainService->>LeverageVault: createPosition(user, stARB, USDC, token, amount) activate LeverageVault - LeverageVault->>LeverageVault: Transfer mETH from user + LeverageVault->>LeverageVault: Transfer stARB from user Note over LeverageVault: Store as collateral LeverageVault->>SeniorPool: borrow(positionId, usdcAmount) @@ -94,7 +94,7 @@ sequenceDiagram **Key Points**: - 150% LTV validation happens before blockchain transaction -- mETH transferred to LeverageVault as collateral +- stARB transferred to LeverageVault as collateral - SeniorPool lends USDC with 5% APR - RWA tokens purchased and held by vault (not directly by user) - Position tracked in MongoDB with health metrics @@ -112,7 +112,7 @@ sequenceDiagram participant LeverageBlockchainService participant FluxionDEXService participant LeverageVault - participant MockMETH + participant MockstARB participant FluxionIntegration participant MockFluxionDEX participant SeniorPool @@ -143,14 +143,14 @@ sequenceDiagram deactivate LeverageBlockchainService alt Interest > 0 - HarvestKeeperService->>FluxionDEXService: calculateMETHForUSDC(interestAmount + 5% buffer) + HarvestKeeperService->>FluxionDEXService: calculatestARBForUSDC(interestAmount + 5% buffer) activate FluxionDEXService FluxionDEXService->>MockFluxionDEX: getQuote(targetUSDC) - MockFluxionDEX-->>FluxionDEXService: mETH needed - FluxionDEXService-->>HarvestKeeperService: mETH amount (with buffer) + MockFluxionDEX-->>FluxionDEXService: stARB needed + FluxionDEXService-->>HarvestKeeperService: stARB amount (with buffer) deactivate FluxionDEXService - HarvestKeeperService->>FluxionDEXService: checkLiquidity(mETH × 10) + HarvestKeeperService->>FluxionDEXService: checkLiquidity(stARB × 10) activate FluxionDEXService FluxionDEXService->>MockFluxionDEX: Check reserves MockFluxionDEX-->>FluxionDEXService: hasLiquidity = true/false @@ -164,16 +164,16 @@ sequenceDiagram LeverageBlockchainService->>LeverageVault: harvestYield(positionId) activate LeverageVault - LeverageVault->>LeverageVault: Get position mETH appreciation - LeverageVault->>MockMETH: getValueInUSD(mETH change) - MockMETH-->>LeverageVault: USD value of appreciation + LeverageVault->>LeverageVault: Get position stARB appreciation + LeverageVault->>MockstARB: getValueInUSD(stARB change) + MockstARB-->>LeverageVault: USD value of appreciation - LeverageVault->>FluxionIntegration: swapMETHToUSDC(mETHAmount) + LeverageVault->>FluxionIntegration: swapstARBToUSDC(stARBAmount) activate FluxionIntegration - FluxionIntegration->>MockFluxionDEX: swapMETHForUSDC(amount, minOut) + FluxionIntegration->>MockFluxionDEX: swapstARBForUSDC(amount, minOut) activate MockFluxionDEX MockFluxionDEX->>MockFluxionDEX: Validate slippage (max 3%) - MockFluxionDEX->>MockFluxionDEX: Transfer mETH, send USDC + MockFluxionDEX->>MockFluxionDEX: Transfer stARB, send USDC MockFluxionDEX-->>FluxionIntegration: USDC received deactivate MockFluxionDEX FluxionIntegration-->>LeverageVault: USDC amount @@ -195,7 +195,7 @@ sequenceDiagram HarvestKeeperService->>LeveragePositionService: recordHarvest(positionId, harvestData) activate LeveragePositionService LeveragePositionService->>MongoDB: Push to harvestHistory array - LeveragePositionService->>MongoDB: Update totalInterestPaid, totalMETHHarvested + LeveragePositionService->>MongoDB: Update totalInterestPaid, totalstARBHarvested MongoDB-->>LeveragePositionService: Updated LeveragePositionService-->>HarvestKeeperService: Success deactivate LeveragePositionService @@ -219,7 +219,7 @@ sequenceDiagram - Runs every 4 minutes in demo mode (360x acceleration) - Calculates accrued interest with time multiplier - Only harvests if DEX has 10x liquidity buffer -- 5% slippage buffer added to mETH amount +- 5% slippage buffer added to stARB amount - Tracks harvest history in MongoDB - Sends notifications to users @@ -236,7 +236,7 @@ sequenceDiagram participant MongoDB participant LeverageVault participant FluxionDEXService - participant MockMETH + participant MockstARB participant SeniorPool participant NotificationService @@ -256,12 +256,12 @@ sequenceDiagram LeverageBlockchainService->>LeverageVault: getHealthFactor(positionId) activate LeverageVault - LeverageVault->>LeverageVault: Get position mETH collateral & USDC debt + LeverageVault->>LeverageVault: Get position stARB collateral & USDC debt - LeverageVault->>FluxionDEXService: getMETHPrice() - FluxionDEXService->>MockMETH: getPrice() - MockMETH-->>FluxionDEXService: Current price - FluxionDEXService-->>LeverageVault: mETH price + LeverageVault->>FluxionDEXService: getstARBPrice() + FluxionDEXService->>MockstARB: getPrice() + MockstARB-->>FluxionDEXService: Current price + FluxionDEXService-->>LeverageVault: stARB price LeverageVault->>LeverageVault: Calculate: (collateralValue × 10000) / debt Note over LeverageVault: Health Factor in basis points
15000 = 150%, 11000 = 110% @@ -289,10 +289,10 @@ sequenceDiagram LeverageBlockchainService->>LeverageVault: liquidatePosition(positionId) activate LeverageVault - LeverageVault->>LeverageVault: Seize mETH collateral + LeverageVault->>LeverageVault: Seize stARB collateral - LeverageVault->>FluxionIntegration: swapMETHToUSDC(allCollateral) - FluxionIntegration->>MockFluxionDEX: Swap mETH for USDC + LeverageVault->>FluxionIntegration: swapstARBToUSDC(allCollateral) + FluxionIntegration->>MockFluxionDEX: Swap stARB for USDC MockFluxionDEX-->>FluxionIntegration: USDC recovered FluxionIntegration-->>LeverageVault: usdcReceived @@ -349,7 +349,7 @@ sequenceDiagram **Key Points**: - Runs every 1 minute in demo mode -- Calculates real-time health factor using current mETH price +- Calculates real-time health factor using current stARB price - Progressive alerts: WARNING → CRITICAL → LIQUIDATION - Automatic liquidation at <110% health factor - Shortfalls covered by JuniorTranche (first-loss capital) @@ -435,10 +435,10 @@ sequenceDiagram Note over LeverageVault: All debt paid, surplus exists LeverageVault->>LeverageVault: Burn RWA tokens - LeverageVault->>LeverageVault: Calculate mETH to return + LeverageVault->>LeverageVault: Calculate stARB to return Note over LeverageVault: proportional to original collateral - LeverageVault->>LeverageVault: Transfer mETH + surplus USDC to user + LeverageVault->>LeverageVault: Transfer stARB + surplus USDC to user LeverageVault->>LeverageVault: Mark position as SETTLED end @@ -476,7 +476,7 @@ sequenceDiagram 3. **User Yield** (residual after debt) - If insufficient funds at any tier, waterfall stops - User only receives yield if all debt is fully paid -- mETH collateral returned to user after settlement +- stARB collateral returned to user after settlement - Complete settlement breakdown tracked in MongoDB --- @@ -484,7 +484,7 @@ sequenceDiagram ## Summary These diagrams illustrate: -- **Leveraged mETH Purchase**: Complete position creation with 150% LTV validation +- **Leveraged stARB Purchase**: Complete position creation with 150% LTV validation - **Automated Harvest**: Cron-based yield harvesting every 4 minutes (demo mode) - **Health Monitoring**: Progressive alerts and automatic liquidation at thresholds - **Settlement Waterfall**: 3-tier priority distribution (Principal → Interest → User) diff --git a/docs/directory.md b/docs/directory.md index 1f74fcd..51a04d7 100644 --- a/docs/directory.md +++ b/docs/directory.md @@ -141,7 +141,7 @@ Scalability for Production: In industry standards (e.g., as seen in apps built b Testing and Maintenance: Isolated factory logic is easier to unit test. If a bug arises in toasts, fix it in the factory, and it propagates everywhere. Integration with Libraries: Shadcn/UI is essentially a factory system—it generates customizable components on-demand, integrating with Radix UI primitives for headless, accessible bases. This is superior to off-the-shelf libraries like Material-UI, as it gives full control without vendor lock-in. Beyond UI: Extend factories to services (e.g., a QueryFactory for React Query hooks) or utilities (e.g., a FormatterFactory for locale-specific formatting), ensuring the entire app follows factory-driven abstraction. -Industry Best Practices: Factories are standard in enterprise React apps (e.g., via Mantlebook for component isolation, or Tanstack's virtualizers for list factories). They reduce technical debt, speed up onboarding for developers, and align with micro-frontend architectures if the project scales. +Industry Best Practices: Factories are standard in enterprise React apps (e.g., via arbitrumbook for component isolation, or Tanstack's virtualizers for list factories). They reduce technical debt, speed up onboarding for developers, and align with micro-frontend architectures if the project scales. In this plan, factories will be mandated in key areas: UI components (via Shadcn), services (for API/blockchain abstractions), hooks (composable factories), and more. We'll generate them early to bootstrap features. If new factories are needed (e.g., for forms or errors), they'll be added iteratively. The folder structure remains as before, with factories primarily in components/ui/ for UI, and extended to lib/services/ for service factories if abstraction grows. diff --git a/docs/plan/CanonicalpriceRepresentation.md b/docs/plan/CanonicalpriceRepresentation.md new file mode 100644 index 0000000..f10cb7d --- /dev/null +++ b/docs/plan/CanonicalpriceRepresentation.md @@ -0,0 +1,190 @@ +# Canonical Price & Amount Representation + +**Author:** Architecture Planning +**Date:** February 16, 2026 +**Scope:** Establishes the universal rule for how all monetary values — prices, token amounts, payment totals, yields, fees — are represented, stored, and transmitted across the entire backend, regardless of which blockchain network the values originated from. + +--- + +## The Problem This Solves + +Every blockchain has its own internal precision convention. arbitrum EVM stores token amounts as 18-decimal integers and USDC as 6-decimal integers. Stellar stores amounts as 7-decimal stroops. Future chains may use entirely different conventions. + +Without a canonical representation, the backend's business logic, schemas, and service calculations each carry implicit assumptions about which decimal convention is in use. This is exactly what caused the price scaling conflict identified in the auction plan: `StellarAdminStrategy` divides by `10^10` on the way to Stellar, but `verifyBidTransaction` returns raw chain values without applying the inverse, so the `usdcDeposited` calculation in `BidTrackerService` ends up with a value that is wrong by a factor of `10^10`. + +The fix is a boundary rule: all network-specific precision is resolved at the adapter layer, and everything inside the backend from that point onward lives in one canonical format. + +--- + +## The Rule + +**The backend canonical format for all prices and amounts is a decimal string with exactly 4 places after the decimal point.** + +`"1.2345"` not `"1234500"` or `"1000000000000000000"`. + +This applies to: +- Price per token (USDC per token, or native currency per token) +- Total payment amount (USDC paid for a purchase) +- Token balance (how many tokens a user holds) +- Yield received +- Collateral amounts +- Borrowed amounts +- Fees + +Every schema field, every service calculation, every DTO response uses this format. The 4-decimal format is what MongoDB stores. The 4-decimal format is what services pass to each other. The 4-decimal format is what controllers return to the frontend. + +--- + +## The Raw Precision Companion Fields + +4 decimal places cannot represent every value exactly. There are two scenarios: + +**Scenario A: Precision loss beyond 4 decimals** + +A value like `5.89000000005678` cannot be fully expressed in 4 decimal places. Rounding to `5.8900` loses the tail `000000005678`. + +In this case: +- The main price field stores the 4-decimal rounded value: `"5.8900"` +- A boolean companion field `rawPrecise: true` signals that precision was lost +- A string companion field `rawPrice: "5.89000000005678"` stores the full exact value from the chain + +**Scenario B: Value below 4-decimal resolution** + +A value like `0.000000000018` (e.g., `18 × 10^-12` of stARB swapped) rounds to `0.0000` in 4-decimal format. + +In this case: +- The main price field stores `"0.0000"` +- `rawPrecise: true` signals that the zero is not actually zero +- `rawPrice: "0.000000000018"` stores the actual value + +**Scenario C: Value exactly representable in 4 decimals** + +A value like `1.2500` or `100.0000`. No precision is lost. + +In this case: +- The main price field stores `"1.2500"` +- `rawPrecise: false` (or the field is simply absent — consumers treat absence as false) +- `rawPrice` is absent or null + +**Consumer rule for display:** +If `rawPrecise` is `false` or absent, display the 4-decimal value directly. +If `rawPrecise` is `true`, the raw precision value is available in `rawPrice` for display. The 4-decimal value is still valid as an approximation for sorting, comparisons, and calculations that do not require full precision. + +--- + +## The Boundary: Adapter Layer + +The adapter layer is the exclusive location where conversion between chain-native precision and the 4-decimal canonical format happens. Nothing outside the adapter ever sees raw wei, raw stroops, or raw chain integer amounts. + +### Inbound (chain → backend) + +Every adapter stARBod that returns a price or amount value must convert to the 4-decimal canonical format before returning. The `PurchaseVerificationResult`, `BidVerificationResult`, `BidSettlementResult`, and all other adapter return types must carry their numeric fields as 4-decimal canonical strings. + +The adapter also sets `rawPrecise` and `rawPrice` on each field where precision loss occurs. + +**EVM Adapter inbound conversion:** +- Token amounts: divide the 18-decimal integer by `10^18`, round to 4 decimal places, detect precision loss +- USDC amounts: divide the 6-decimal integer by `10^6`, round to 4 decimal places, detect precision loss +- All other EVM values follow the appropriate divisor for their token's configured decimal count + +**Stellar Adapter inbound conversion:** +- Native asset amounts (7-decimal stroops): divide by `10^7`, round to 4 decimal places +- USDC amounts: divide by `10^6`, round to 4 decimal places + +### Outbound (backend → chain) + +Every adapter stARBod that sends a price or amount to the chain must convert from the 4-decimal canonical format to the chain's native precision. + +**EVM Adapter outbound conversion:** +- Token amounts: multiply by `10^18` +- USDC amounts: multiply by `10^6` + +**Stellar Adapter outbound conversion:** +- Native asset amounts: multiply by `10^7` +- USDC amounts: multiply by `10^6` + +The `STELLAR_PRICE_DIVISOR` currently embedded in `StellarAdminStrategy.listOnMarketplace()` must move into the Stellar adapter. It must not live in a strategy or service — it is a chain-communication concern and belongs exclusively in the adapter. + +--- + +## Precision Loss Detection + +The adapter's conversion utilities must detect whether a given chain value introduces precision loss when rounded to 4 decimal places. + +The detection logic is: convert the chain integer to a full-precision decimal string, then check whether the portion beyond 4 decimal places is non-zero. + +If it is non-zero, set `rawPrecise: true` and populate `rawPrice` with the full-precision decimal string. + +The full-precision decimal string in `rawPrice` is always in plain decimal notation, not scientific notation. `"0.000000000018"` not `"1.8e-11"`. This makes it unambiguous to parse and display on the frontend without needing to handle scientific notation edge cases. + +--- + +## Impact on Existing Schemas + +The existing schemas — `Purchase`, `Bid`, `YieldClaim`, `LeveragePosition`, `SolvencyPosition` — currently store amounts as raw integer wei strings (e.g., `"1000000000000000000"` for 1 token). This was a deliberate design to avoid JavaScript floating point issues. + +**Migration approach:** +- Existing records are not retroactively changed. They remain as wei strings. +- All new schemas (`UserPortfolio`, any new schemas created going forward) use the 4-decimal canonical format from the start. +- Services that read existing schemas and produce portfolio aggregates or API responses are responsible for converting the old wei strings to 4-decimal format at the service layer before returning data. This conversion is a one-time normalization step, not a schema migration. +- Over time, as schemas are revised for other reasons, their amount fields will be updated to the 4-decimal format. This is opportunistic, not forced. + +The `UserPortfolioSchema` (defined in the portfolio plan) stores all amounts in 4-decimal canonical format. The `UserPortfolioService` converts old-format wei values from the `Purchase` and `LeveragePosition` schemas into 4-decimal format when building the portfolio document. + +--- + +## The Raw Precision Fields as Schema Pattern + +Any schema that stores a price or amount field must optionally carry the raw precision companion fields. The pattern, applied consistently, is: + +A price field named `price` has two optional companions: `rawPrecise` (boolean) and `rawPrice` (string). The same for `amount` → `rawAmount`, `totalPayment` → `rawTotalPayment`, `yield` → `rawYield`, and so on. + +New schemas created under this plan include these companion fields on every monetary field. Existing schemas have them added opportunistically or when precision matters for the specific domain (for example, `LeveragePosition.harvestHistory` stARB amounts, where values can legitimately be sub-0.0001, should have the companion fields added as a priority). + +--- + +## No Cross-Chain Price Feeds + +The price representation defined here is per-network. A price that originates from a arbitrum chain event is converted to the 4-decimal canonical format by the EVM adapter. A price that originates from a Stellar chain event is converted by the Stellar adapter. The two chains never share price feed data with each other. + +There is no price oracle layer that translates stARB prices for a Stellar deployment, or Stellar XLM prices for a arbitrum deployment. Each deployment's backend works exclusively with the assets and prices native to its configured network. + +--- + +## Summary of All Price Representation Rules + +| Rule | Description | +|---|---| +| Canonical format | 4 decimal places, decimal string, e.g. `"1.2345"` | +| Schema storage | New schemas: 4-decimal canonical. Existing schemas: keep wei until migrated | +| Precision loss | `rawPrecise: true` + `rawPrice: ""` on companion fields | +| Boundary enforcement | Only adapters convert between chain precision and canonical format | +| Chain-specific conversion | EVM: `/10^18` tokens, `/10^6` USDC. Stellar: `/10^7` stroops, `/10^6` USDC | +| No cross-chain prices | Each network handles its own units; no feed sharing | +| Consumer display rule | Show `rawPrice` when `rawPrecise === true`, else show 4-decimal value | +| Zero vs near-zero | `"0.0000"` with `rawPrecise: true` means non-zero, check `rawPrice` | + +--- + +## Files This Spec Affects + +Every plan document that mentions amount conversions, wei values, or price formats must be updated to reference this spec as the authority. Specifically: + +- `cross_network_modification_plan.md` — The canonical amount convention section (Part 5) is superseded by this document +- `chain_agnostic_backend_phase2_primary_marketplace_purchase.md` — Parts 5 and 12 are superseded by this document +- `chain_agnostic_purchase_notify_static_models.md` — The decimal convention discussion defers to this document +- `chain_agnostic_auction_flow_stellar_plan.md` — The price scaling conflict (Part 8) is resolved by this document: the Stellar adapter handles all stroop-to-canonical conversion, the `STELLAR_PRICE_DIVISOR` logic moves fully into the adapter, and `verifyBidTransaction` / `verifyBidSettlement` return canonical 4-decimal values +- `user_portfolio_schema_plan.md` — Portfolio schema uses 4-decimal canonical from the start + +--- + +## Implementation Note for the Auction Plan Specifically + +The `STELLAR_PRICE_DIVISOR = 10^10` currently in `StellarAdminStrategy.listOnMarketplace()` represents a conversion that belongs in the Stellar adapter. When this plan is implemented: + +1. The strategy sends the canonical 4-decimal price to the registry +2. The Stellar adapter receives the canonical price and converts to Stellar stroop format internally before invoking the contract +3. When `verifyBidTransaction` reads a bid price from a Soroban event, the Stellar adapter converts from stroop format back to canonical 4-decimal before returning the `BidVerificationResult` +4. `BidTrackerService.notifyBid()` receives canonical 4-decimal values and never performs any chain-specific arithmetic + +The `usdcDeposited` calculation in `notifyBid()` becomes straightforward arithmetic on two 4-decimal numbers with no implicit assumptions about decimal precision. \ No newline at end of file diff --git a/docs/plan/enforcing_network.md b/docs/plan/enforcing_network.md new file mode 100644 index 0000000..497bc21 --- /dev/null +++ b/docs/plan/enforcing_network.md @@ -0,0 +1,388 @@ +# Feature Registry — Frontend Domain Strategy Architecture Plan + +**Status:** Proposed +**Context:** The backend resolved multi-network complexity with a Module Registry / Domain Strategy pattern. The frontend faces the same problem: pages directly use wagmi hooks and EVM contract services that crash on Stellar. The auth layer was already abstracted (`AuthStrategyContext` + `EvmAuthProvider` / `StellarAuthProvider`). This plan extends that proven pattern to every feature domain. + +--- + +## The Gap + +**What exists (Level 1):** Network routing (`/:network/*`), wallet provider branching (`NetworkLayout`), auth strategy abstraction, dynamic API URL resolution, boolean feature flags (`leverage: true/false`). + +**What's missing (Level 2):** Domain strategy layer. Pages call `useAccount()` from wagmi directly (crashes on Stellar), import `contractService` (ethers.js + `window.ethereum`, hardcoded chainId 5003n), and have 50+ hardcoded `navigate('/path')` calls missing `networkPath()`. The boolean flags say "is this feature on?" but not "HOW does this feature work on this network?" — e.g., marketplace supports direct buy + auction + leverage on arbitrum but only direct buy on Stellar. + +--- + +## Architecture + +Every feature domain follows the same three-layer pattern already proven by auth: + +``` +Strategy Interface (TypeScript interface + React Context + useXxxStrategy() hook) + ↓ +Network Providers (EvmXxxProvider / StellarXxxProvider — contain all network-specific code) + ↓ +NetworkLayout (mounts the correct provider tree based on networkType) +``` + +Pages never import network-specific code. They call `useWalletStrategy()`, `useMarketplaceStrategy()`, etc. + +--- + +## 1. Expanded Capabilities Config + +Replace flat booleans with structured capability descriptors. + +**New file: `src/lib/network/network-capabilities.ts`** + +```ts +export interface MarketplaceCapabilities { + directBuy: boolean; + auction: boolean; + leverageBuy: boolean; +} + +export interface SecondaryMarketCapabilities { + enabled: boolean; + orderCreation: boolean; + orderCancellation: boolean; +} + +export interface YieldCapabilities { + enabled: boolean; + burnToClaim: boolean; // EVM: burn RWA tokens to claim. Stellar: different flow +} + +export interface SolvencyCapabilities { + enabled: boolean; + depositCollateral: boolean; + borrowUSDC: boolean; + repayLoan: boolean; +} + +export interface WalletCapabilities { + type: 'evm' | 'stellar'; + integrityMonitoring: boolean; + nativeTokenSymbol: string; + explorerBaseUrl: string; + networkDisplayName: string; // "arbitrum Network" / "Stellar Network" — replaces hardcoded UI text +} + +export interface NetworkCapabilities { + marketplace: MarketplaceCapabilities; + secondaryMarket: SecondaryMarketCapabilities; + yield: YieldCapabilities; + solvency: SolvencyCapabilities; + wallet: WalletCapabilities; + faucet: boolean; + kycOnChain: boolean; +} +``` + +arbitrum: `{ marketplace: { directBuy: true, auction: true, leverageBuy: true }, ... }` +Stellar: `{ marketplace: { directBuy: true, auction: false, leverageBuy: false }, ... }` + +**Modify: `src/lib/network/network.config.ts`** — add `capabilities: NetworkCapabilities` to `NetworkConfig`. +**Modify: `src/lib/network/NetworkContext.tsx`** — add `isCapabilityAvailable(path: string)` for dot-path queries like `'marketplace.auction'`, expose `capabilities` object. + +The old `features` field stays temporarily for backward compat, removed in Phase 5. + +--- + +## 2. Strategy Domains (6 total) + +### Domain 1: WalletStrategy (foundation — everything depends on this) + +**Interface:** +```ts +interface WalletStrategy { + address: string | undefined; + isConnected: boolean; + connect: () => Promise; + disconnect: () => void; + signMessage: (message: string) => Promise; + explorerUrl: (txHash: string) => string; + walletType: 'evm' | 'stellar'; +} +``` + +**Files:** +- `src/lib/strategies/wallet/WalletStrategyContext.tsx` — interface + context + `useWalletStrategy()` hook +- `src/lib/strategies/wallet/EvmWalletProvider.tsx` — wraps wagmi `useAccount`, `useDisconnect`, `useSignMessage`, RainbowKit `useConnectModal` +- `src/lib/strategies/wallet/StellarWalletProvider.tsx` — wraps Freighter `getAddress`, `isConnected`, `signMessage`, `requestAccess` + +Replaces ALL direct `useAccount()` / `useDisconnect()` usage across the codebase. + +### Domain 2: MarketplaceStrategy (deepest divergence) + +**Interface:** +```ts +interface MarketplaceStrategy { + completePurchase: (params: PurchaseParams) => Promise; + verifyListing: (assetId: string, tokenAddress?: string) => Promise; + getPaymentTokenBalance: (userAddress: string) => Promise; + capabilities: MarketplaceCapabilities; +} +``` + +**Files:** +- `src/lib/strategies/marketplace/MarketplaceStrategyContext.tsx` +- `src/lib/strategies/marketplace/EvmMarketplaceProvider.tsx` — wraps `contractService.completePurchase()`, `checkUSDCBalance()` +- `src/lib/strategies/marketplace/StellarMarketplaceProvider.tsx` — Stellar/Soroban purchase flow + +### Domain 3: AuctionStrategy + +**Interface:** +```ts +interface AuctionStrategy { + submitBid: (params: BidSubmissionParams) => Promise<{ success: boolean }>; + settleBid: (params: BidSettlementParams) => Promise; + checkKYC: () => { isVerified: boolean; isLoading: boolean }; + endAuction: (params: EndAuctionParams) => Promise; + status: string; + error: string | null; + isLoading: boolean; + reset: () => void; +} +``` + +**Files:** +- `src/lib/strategies/auction/AuctionStrategyContext.tsx` +- `src/lib/strategies/auction/EvmAuctionProvider.tsx` — wraps `useSubmitBid`, `useSettleBid`, `useEndAuction`, `useCheckKYC` from `useAuctionContracts.ts` +- `src/lib/strategies/auction/NullAuctionProvider.tsx` — returns no-ops for networks without auction support (Stellar). Pages use `capabilities.auction` to hide auction UI entirely. + +### Domain 4: SecondaryMarketStrategy + +**Interface:** +```ts +interface SecondaryMarketStrategy { + executeOrder: (txData: any) => Promise<{ txHash: string }>; + cancelOrder: (orderId: string) => Promise; + approveToken: (tokenAddress: string, spender: string, amount: string) => Promise; + checkAllowance: (tokenAddress: string, owner: string, spender: string) => Promise; + checkBalance: (tokenAddress: string, owner: string) => Promise; + status: string; + error: string | null; + isLoading: boolean; +} +``` + +**Files:** +- `src/lib/strategies/secondary-market/SecondaryMarketStrategyContext.tsx` +- `src/lib/strategies/secondary-market/EvmSecondaryMarketProvider.tsx` — wraps wagmi `useWriteContract` + `useReadContract` for approve/execute/cancel +- `src/lib/strategies/secondary-market/StellarSecondaryMarketProvider.tsx` — submits XDR transactions via Freighter + +### Domain 5: YieldStrategy + +**Interface:** +```ts +interface YieldStrategy { + getSettlementInfo: (tokenAddress: string, userAddress: string) => Promise; + approveYieldVault: (tokenAddress: string, amount: string) => Promise; + claimYield: (tokenAddress: string, amount: string) => Promise; + getRWATokenBalance: (tokenAddress: string, userAddress: string) => Promise; +} +``` + +**Files:** +- `src/lib/strategies/yield/YieldStrategyContext.tsx` +- `src/lib/strategies/yield/EvmYieldProvider.tsx` — wraps `contractService.getSettlementInfo()`, `.approveYieldVault()`, `.claimYield()` +- `src/lib/strategies/yield/StellarYieldProvider.tsx` — Stellar native payment operations + +### Domain 6: SolvencyStrategy + +**Interface:** +```ts +interface SolvencyStrategy { + depositCollateral: (params) => Promise; + borrowUSDC: (positionId, amount, duration, installments) => Promise; + repayLoan: (positionId, amount) => Promise; + getPosition: (positionId) => Promise; + getOutstandingDebt: (positionId) => Promise; + approveToken: (tokenAddress, amount) => Promise; + approveUSDC: (amount) => Promise; +} +``` + +**Files:** +- `src/lib/strategies/solvency/SolvencyStrategyContext.tsx` +- `src/lib/strategies/solvency/EvmSolvencyProvider.tsx` — wraps `solvencyContractService` +- `src/lib/strategies/solvency/StellarSolvencyProvider.tsx` — Soroban contract calls + +--- + +## 3. Provider Nesting in NetworkLayout + +Use a `composeProviders` utility (`src/lib/utils/composeProviders.tsx`) to avoid 10-level deep JSX nesting: + +```tsx +// src/app/layouts/NetworkLayout.tsx +const arbitrumProviders = composeProviders( + WalletProvider, EvmWalletStrategyProvider, WalletIntegrityProvider, + EvmAuthProvider, EvmMarketplaceProvider, EvmAuctionProvider, + EvmSecondaryMarketProvider, EvmYieldProvider, EvmSolvencyProvider +); + +const StellarProviders = composeProviders( + StellarWalletProvider, StellarWalletStrategyProvider, + StellarAuthProvider, StellarMarketplaceProvider, NullAuctionProvider, + StellarSecondaryMarketProvider, StellarYieldProvider, StellarSolvencyProvider +); + +export const NetworkLayout = () => { + const { networkType } = useNetwork(); + const Providers = networkType === 'stellar' ? StellarProviders : arbitrumProviders; + return ; +}; +``` + +--- + +## 4. How Pages Change (examples) + +**Marketplace.page.tsx:** +```diff +- import { useAccount, useDisconnect } from 'wagmi'; ++ import { useWalletStrategy } from '@/lib/strategies/wallet/WalletStrategyContext'; ++ import { useNetwork } from '@/lib/network/NetworkContext'; + +- const { address } = useAccount(); +- const { disconnect } = useDisconnect(); ++ const { address, disconnect } = useWalletStrategy(); ++ const { networkPath } = useNetwork(); + +- navigate('/marketplace/asset/' + id); ++ navigate(networkPath('/marketplace/asset/' + id)); +``` + +**AssetDetails.page.tsx:** +```diff +- import { contractService } from '@/lib/api/contract.service'; ++ import { useMarketplaceStrategy } from '@/lib/strategies/marketplace/MarketplaceStrategyContext'; + +- const result = await contractService.completePurchase(params, tokenAddress); ++ const result = await completePurchase(params); +``` + +**Portfolio.page.tsx** (biggest consumer — uses 4 strategies): +```diff +- import { useAccount, useDisconnect } from 'wagmi'; +- import { useSettleBid } from '@/hooks/useAuctionContracts'; +- import { useCancelOrder } from '@/hooks/useSecondaryMarket'; +- import { contractService } from '@/lib/api/contract.service'; ++ import { useWalletStrategy } from '@/lib/strategies/wallet/WalletStrategyContext'; ++ import { useAuctionStrategy } from '@/lib/strategies/auction/AuctionStrategyContext'; ++ import { useSecondaryMarketStrategy } from '@/lib/strategies/secondary-market/SecondaryMarketStrategyContext'; ++ import { useYieldStrategy } from '@/lib/strategies/yield/YieldStrategyContext'; +``` + +--- + +## 5. Migration Phases + +### Phase 0 — Foundation (no page changes) +- Create `src/lib/network/network-capabilities.ts` +- Create `src/lib/utils/composeProviders.tsx` +- Create `src/components/common/FeatureGate.tsx` +- Add `capabilities` to `NetworkConfig` and `NetworkContext` + +### Phase 1 — WalletStrategy +- Create wallet strategy context + EVM + Stellar providers +- Mount in `NetworkLayout.tsx` +- Migrate all direct `useAccount`/`useDisconnect` consumers: + - `Navbar.tsx`, `Marketplace.page.tsx`, `Faucet.page.tsx`, `TradingEngine.page.tsx`, `Portfolio.page.tsx`, `ConnectWallet.tsx`, `TokenFaucetCard.tsx` +- Fix all hardcoded `navigate('/path')` → `navigate(networkPath('/path'))` across these files + +### Phase 2 — MarketplaceStrategy + YieldStrategy +- Create marketplace + yield strategy contexts and providers +- Migrate `AssetDetails.page.tsx` (purchase flow → `useMarketplaceStrategy`) +- Migrate `Portfolio.page.tsx` yield claim flow → `useYieldStrategy` +- `contractService` stays as-is, only imported by EVM providers + +### Phase 3 — AuctionStrategy + SecondaryMarketStrategy +- Create auction + secondary market strategy contexts and providers +- Migrate `AuctionDetails.page.tsx` → `useAuctionStrategy` +- Migrate `TradingEngine.page.tsx` → `useSecondaryMarketStrategy` +- Migrate `Portfolio.page.tsx` settle bid + cancel order +- Add `FeatureGate` around auction routes + +### Phase 4 — SolvencyStrategy +- Create solvency strategy context and providers +- Migrate `BorrowPage.tsx`, `DepositCollateralModal.tsx`, `DirectBorrowModal.tsx` +- Migrate `Portfolio.page.tsx` loans tab + `RepayLoanModal.tsx` + +### Phase 5 — Cleanup +- Remove deprecated `features` boolean field from `NetworkConfig` +- Replace all `isFeatureAvailable()` calls with `isCapabilityAvailable()` +- Replace hardcoded "arbitrum Network" / "ERC-3643" UI text with `capabilities.wallet.networkDisplayName` +- Replace hardcoded explorer URLs with `capabilities.wallet.explorerBaseUrl` + +--- + +## 6. Files Summary + +### New Files (21) + +| File | Purpose | +|------|---------| +| `src/lib/network/network-capabilities.ts` | Capability types + per-network configs | +| `src/lib/utils/composeProviders.tsx` | Provider composition utility | +| `src/components/common/FeatureGate.tsx` | Conditional render by capability path | +| `src/lib/strategies/wallet/WalletStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/wallet/EvmWalletProvider.tsx` | wagmi wrapper | +| `src/lib/strategies/wallet/StellarWalletProvider.tsx` | Freighter wrapper | +| `src/lib/strategies/marketplace/MarketplaceStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/marketplace/EvmMarketplaceProvider.tsx` | Wraps contractService | +| `src/lib/strategies/marketplace/StellarMarketplaceProvider.tsx` | Stellar purchase flow | +| `src/lib/strategies/auction/AuctionStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/auction/EvmAuctionProvider.tsx` | Wraps useAuctionContracts | +| `src/lib/strategies/auction/NullAuctionProvider.tsx` | No-op for non-auction networks | +| `src/lib/strategies/secondary-market/SecondaryMarketStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/secondary-market/EvmSecondaryMarketProvider.tsx` | wagmi tx execution | +| `src/lib/strategies/secondary-market/StellarSecondaryMarketProvider.tsx` | XDR via Freighter | +| `src/lib/strategies/yield/YieldStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/yield/EvmYieldProvider.tsx` | Wraps contractService yield methods | +| `src/lib/strategies/yield/StellarYieldProvider.tsx` | Stellar yield claim | +| `src/lib/strategies/solvency/SolvencyStrategyContext.tsx` | Interface + context + hook | +| `src/lib/strategies/solvency/EvmSolvencyProvider.tsx` | Wraps solvencyContractService | +| `src/lib/strategies/solvency/StellarSolvencyProvider.tsx` | Soroban contract calls | + +### Files to Modify (~20) + +| File | Change | +|------|--------| +| `src/lib/network/network.config.ts` | Add `capabilities` field | +| `src/lib/network/NetworkContext.tsx` | Add `isCapabilityAvailable()`, expose `capabilities` | +| `src/app/layouts/NetworkLayout.tsx` | Mount all strategy providers via `composeProviders` | +| `src/components/common/Navbar.tsx` | `useWalletStrategy()` replaces wagmi | +| `src/components/wallet/ConnectWallet.tsx` | `useWalletStrategy()` replaces wagmi | +| `src/components/faucet/TokenFaucetCard.tsx` | `useWalletStrategy()` replaces wagmi | +| `src/components/portfolio/RepayLoanModal.tsx` | `useSolvencyStrategy()` replaces direct service | +| `src/pages/marketplace/Marketplace.page.tsx` | `useWalletStrategy()` + `networkPath()` | +| `src/pages/marketplace/asset/AssetDetails.page.tsx` | `useMarketplaceStrategy()` for purchase | +| `src/pages/marketplace/auction/AuctionDetails.page.tsx` | `useAuctionStrategy()` + FeatureGate | +| `src/pages/secondary-marketplace/TradingEngine.page.tsx` | `useSecondaryMarketStrategy()` + `useWalletStrategy()` | +| `src/pages/portfolio/Portfolio.page.tsx` | All 4 strategies replace direct imports | +| `src/pages/faucet/Faucet.page.tsx` | `useWalletStrategy()` replaces wagmi | +| `src/pages/borrow/*.tsx` | `useSolvencyStrategy()` replaces direct service | +| `src/pages/admin/operations/OperationsView.page.tsx` | Network-conditional UI text | + +### Files That Stay Unchanged (encapsulated inside EVM providers) + +- `src/lib/api/contract.service.ts` — only imported by `EvmMarketplaceProvider` + `EvmYieldProvider` +- `src/lib/api/solvency-contract.service.ts` — only imported by `EvmSolvencyProvider` +- `src/hooks/useAuctionContracts.ts` — only imported by `EvmAuctionProvider` +- `src/hooks/useSecondaryMarket.ts` — only imported by `EvmSecondaryMarketProvider` +- `src/lib/blockchain/*.ts` — EVM-only infrastructure, stays as-is + +--- + +## 7. Verification + +1. **arbitrum routes unchanged**: All existing `/arbitrum/*` flows work identically — purchase, auction, yield claim, borrow, faucet +2. **Stellar routes don't crash**: `/stellar/marketplace` renders without wagmi errors, shows only direct buy listings +3. **Feature gating works**: `/stellar/marketplace/auction/:id` redirects to `/stellar/marketplace` (auction disabled) +4. **Capability queries work**: `isCapabilityAvailable('marketplace.leverageBuy')` returns `true` on arbitrum, `false` on Stellar +5. **No wagmi imports outside providers**: `grep -r "from 'wagmi'" src/` only matches files in `src/lib/strategies/*/Evm*`, `src/app/providers/Wallet*`, `src/hooks/useWalletIntegrityMonitor.ts`, and `src/hooks/useAuctionContracts.ts` +6. **Navigation is network-prefixed**: No remaining `navigate('/path')` without `networkPath()` in any page file +7. **Network switch preserves context**: Clicking network switcher on `/arbitrum/marketplace` goes to `/stellar/marketplace` without errors diff --git a/docs/plan/netowork_switchable_frontend.md b/docs/plan/netowork_switchable_frontend.md new file mode 100644 index 0000000..183f296 --- /dev/null +++ b/docs/plan/netowork_switchable_frontend.md @@ -0,0 +1,279 @@ +# Plan: Multi-Network Frontend Architecture (`/:network/` routing) + +## Context + +The backend now supports two independent deployments — one for arbitrum (EVM) and one for Stellar — each running at a separate API URL. The frontend needs to serve both simultaneously under network-prefixed routes (`/arbitrum/…`, `/stellar/…`), routing API calls to the correct backend, conditionally showing/hiding features unavailable on a given network, and mounting the right wallet provider (RainbowKit/Wagmi for EVM, Freighter stub for Stellar). Auth tokens must be scoped per network so a user can independently log in on both. + +--- + +## Architecture Overview + +``` +/ → Redirect to /arbitrum +/:network/* → NetworkProvider reads param, validates, sets context + ├── NetworkLayout → Mounts correct wallet provider based on network + ├── Navbar → Links use networkPath(), feature items conditionally shown + ├── FeatureGuard → Wraps feature-gated routes; redirects if disabled + └── All existing pages → Unchanged internals; API calls auto-route via BaseService + +API calls: BaseService reads window.location.pathname[1] → resolves backend URL +Auth tokens: keyed as `arbitrum_access_token`, `stellar_access_token` in localStorage +``` + +--- + +## Files to Create (5 new files) + +| File | Purpose | +|------|---------| +| `src/lib/network/network.config.ts` | Per-network config: API URL, feature flags, wallet type | +| `src/lib/network/NetworkContext.tsx` | React context + `useNetwork()` hook | +| `src/app/providers/NetworkProvider.tsx` | Reads `:network` param, validates, provides context | +| `src/app/layouts/NetworkLayout.tsx` | Mounts correct wallet provider; renders `` | +| `src/components/common/FeatureGuard.tsx` | Redirects to network home if feature is disabled | + +--- + +## Files to Modify + +| File | Change Summary | +|------|---------------| +| `src/app/router/public.routes.tsx` | Restructure: root→redirect, `/:network` parent with NetworkProvider+NetworkLayout, legacy redirects | +| `src/App.tsx` | Remove `WalletProvider`/`WalletIntegrityProvider` wrappers (moved to NetworkLayout) | +| `src/lib/api/base.service.ts` | `baseURL` becomes a dynamic getter (reads network from `window.location`); auth header reads network-scoped token | +| `src/lib/api/auth.service.ts` | Remove hardcoded `API_BASE_URL`, call `super()` with no args, write network-scoped tokens on login | +| All other 12 service files in `src/lib/api/` | Same: remove hardcoded `API_BASE_URL`, call `super()` with no args | +| `src/stores/auth.store.ts` | `logout()` clears network-scoped token keys; `authenticatedWalletAddress` keyed per network | +| `src/lib/utils/error-handler.ts` | `handle401Unauthorized` clears network-scoped tokens and redirects to `/${network}` | +| `src/components/common/Navbar.tsx` | Links use `networkPath()`, hide Borrow/Faucet based on `isFeatureAvailable()` | +| `.env.example` | Add `VITE_arbitrum_API_URL`, `VITE_STELLAR_API_URL` | + +--- + +## Implementation Steps + +### Phase 1 — Network Config & Context + +**1. Create `src/lib/network/network.config.ts`** +```typescript +export type NetworkType = 'arbitrum' | 'stellar'; + +export interface NetworkFeatures { + leverage: boolean; + faucet: boolean; + solvency: boolean; + secondaryMarket: boolean; + borrow: boolean; +} + +export interface NetworkConfig { + type: NetworkType; + displayName: string; + apiUrl: string; + features: NetworkFeatures; + walletType: 'evm' | 'stellar'; +} + +export const NETWORK_CONFIGS: Record = { + arbitrum: { + type: 'arbitrum', + displayName: 'arbitrum', + apiUrl: import.meta.env.VITE_arbitrum_API_URL ?? import.meta.env.VITE_API_URL ?? 'http://localhost:3000', + features: { leverage: true, faucet: true, solvency: true, secondaryMarket: true, borrow: true }, + walletType: 'evm', + }, + stellar: { + type: 'stellar', + displayName: 'Stellar', + apiUrl: import.meta.env.VITE_STELLAR_API_URL ?? 'http://localhost:3001', + features: { leverage: false, faucet: false, solvency: true, secondaryMarket: true, borrow: true }, + walletType: 'stellar', + }, +}; + +export const SUPPORTED_NETWORKS: NetworkType[] = ['arbitrum', 'stellar']; +export const DEFAULT_NETWORK: NetworkType = 'arbitrum'; +``` + +**2. Create `src/lib/network/NetworkContext.tsx`** +- `NetworkContextValue` exposes: `network`, `networkType`, `isFeatureAvailable(feature)`, `networkPath(path)` (prepends `/${networkType}`) +- Export `useNetwork()` hook (throws if used outside provider) + +**3. Create `src/app/providers/NetworkProvider.tsx`** +- Reads `useParams<{ network: string }>()` +- If invalid network → `` +- Otherwise sets `NetworkContext.Provider` with the resolved config + +### Phase 2 — Routing Restructure + +**4. Create `src/app/layouts/NetworkLayout.tsx`** +```tsx +const NetworkLayout = () => { + const { networkType } = useNetwork(); + if (networkType === 'stellar') { + return ( + {/* stub — see note below */} + + + ); + } + return ( + + + + + + ); +}; +``` +> `StellarWalletProvider` is a thin stub (`<>{children}`) — full Freighter integration is out of scope until Stellar contracts are deployed. It satisfies React Query needs without EVM hooks crashing. + +**5. Create `src/components/common/FeatureGuard.tsx`** +```tsx +const FeatureGuard = ({ feature, children }) => { + const { isFeatureAvailable, networkPath } = useNetwork(); + return isFeatureAvailable(feature) ? <>{children} : ; +}; +``` + +**6. Restructure `src/app/router/public.routes.tsx`** +- Root `/` → `` +- Single `/:network` route with `element: ` and all current routes as `children` (paths become relative, e.g. `marketplace`, `auth`, `admin`, etc.) +- Feature-gated children wrapped in `` etc. +- Legacy redirects at root level: `/marketplace` → `/arbitrum/marketplace`, `/auth` → `/arbitrum/auth`, etc. for the 8 most common paths + +**7. Update `src/App.tsx`** +Remove `WalletProvider` and `WalletIntegrityProvider` — they now live in `NetworkLayout`: +```tsx +function App() { + return ; +} +``` + +### Phase 3 — Network-Aware API Layer + +**8. Update `src/lib/api/base.service.ts`** + +Replace the `protected baseURL: string` field with a getter: +```typescript +class BaseService { + private _baseURL: string; + + constructor(baseURL?: string) { + this._baseURL = baseURL ?? ''; + } + + protected get baseURL(): string { + if (this._baseURL) return this._baseURL; + // Dynamic resolution from current route + const segment = window.location.pathname.split('/')[1]; + if (segment === 'stellar') { + return import.meta.env.VITE_STELLAR_API_URL ?? 'http://localhost:3001'; + } + return import.meta.env.VITE_arbitrum_API_URL ?? import.meta.env.VITE_API_URL ?? 'http://localhost:3000'; + } + + protected getAuthHeaders = () => { + const segment = window.location.pathname.split('/')[1]; + const network = ['arbitrum','stellar'].includes(segment) ? segment : 'arbitrum'; + const token = localStorage.getItem(`${network}_access_token`) + ?? localStorage.getItem('access_token'); // legacy fallback + if (!token) handleAPIError(new Error('Not a verified user')); + return { ...this.getHeaders(), 'Authorization': `Bearer ${token}` }; + } +} +``` + +**9. Update all 13 service files** — remove `const API_BASE_URL = ...` and change `super(API_BASE_URL)` → `super()`. Files: +- `auth.service.ts`, `kyc.service.ts`, `marketplace.service.ts`, `portfolio.service.ts`, `issuer.service.ts`, `admin.service.ts`, `leverage.service.ts`, `faucet.service.ts`, `contract.service.ts`, `solvency-contract.service.ts`, `notification.service.ts`, `asset.service.ts`, `changelog.service.ts` + +Also update `auth.service.ts` `login()` to store network-scoped tokens: +```typescript +const segment = window.location.pathname.split('/')[1]; +const network = ['arbitrum','stellar'].includes(segment) ? segment : 'arbitrum'; +localStorage.setItem(`${network}_access_token`, data.tokens.access); +localStorage.setItem(`${network}_refresh_token`, data.tokens.refresh); +``` + +**10. Update `src/stores/auth.store.ts`** + +Update `logout()` to clear all network-scoped keys: +```typescript +logout: () => { + ['arbitrum','stellar'].forEach(n => { + localStorage.removeItem(`${n}_access_token`); + localStorage.removeItem(`${n}_refresh_token`); + localStorage.removeItem(`${n}_authenticated_wallet_address`); + }); + // legacy cleanup + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + localStorage.removeItem('authenticated_wallet_address'); + set({ user: null, isAuthenticated: false, isLoading: false, authenticatedWalletAddress: null }); +} +``` + +**11. Update `src/lib/utils/error-handler.ts`** + +`handle401Unauthorized`: +```typescript +export const handle401Unauthorized = (): void => { + const segment = window.location.pathname.split('/')[1]; + const network = ['arbitrum','stellar'].includes(segment) ? segment : 'arbitrum'; + ['arbitrum','stellar'].forEach(n => { + localStorage.removeItem(`${n}_access_token`); + localStorage.removeItem(`${n}_refresh_token`); + }); + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + localStorage.removeItem('authenticated_wallet_address'); + window.location.href = `/${network}`; +}; +``` + +### Phase 4 — UI Updates + +**12. Update `src/components/common/Navbar.tsx`** +- Import `useNetwork` +- Replace `navigate('/marketplace')` etc. with `navigate(networkPath('/marketplace'))` +- Wrap "Borrow" button: only render if `isFeatureAvailable('borrow')` +- Wrap "Faucet" link (if present in nav): only render if `isFeatureAvailable('faucet')` +- Add a **NetworkSwitcher** component inline in the Navbar (no separate file needed): + - Renders a small pill/toggle showing the current network (e.g. "arbitrum" | "Stellar") + - On click, switches to `/${otherNetwork}${currentSubPath}` where `currentSubPath` is everything after `/:network` (e.g. `/arbitrum/marketplace` → `/stellar/marketplace`). If the destination path is feature-gated and unavailable on the target network, fall back to `/${otherNetwork}` home. + - Uses `useNavigate` + `useLocation` to compute the target URL + - Styled to match the existing nav pill design (gray-100 background, rounded-full) + +**13. Update `.env.example`** +``` +# --- arbitrum Backend --- +VITE_arbitrum_API_URL=http://localhost:3000 +# --- Stellar Backend --- +VITE_STELLAR_API_URL=http://localhost:3001 +# --- Legacy (used as arbitrum fallback) --- +VITE_API_URL=http://localhost:3000 +``` + +--- + +- **Freighter wallet integration**: Stellar's `StellarWalletProvider`. Full Freighter wallet auth (sign challenge, connect) needs to be done. +- **Stellar contract addresses**: `.env` EVM addresses stay as-is; Stellar Soroban contract IDs will be added + +## What's Explicitly Out of Scope + + +- **Frontend contract services** (`contract.service.ts`, `solvency-contract.service.ts`): EVM-only Wagmi hooks; only loaded under arbitrum routes, no changes needed + +--- + +## Verification + +1. **Root redirect**: `http://localhost:5173/` → `http://localhost:5173/arbitrum` +2. **arbitrum routes work**: `/arbitrum/marketplace`, `/arbitrum/auth`, `/arbitrum/admin` all load correctly +3. **Stellar routes render**: `/stellar/marketplace` loads without crashing (no EVM hooks) +4. **Feature guard**: `/stellar/faucet` redirects to `/stellar/` (faucet disabled) +5. **API routing**: Under `/arbitrum/*`, all fetch calls go to `VITE_arbitrum_API_URL`. Under `/stellar/*`, to `VITE_STELLAR_API_URL`. Verify in DevTools Network tab +6. **Independent auth**: Login on `/arbitrum/auth` → `arbitrum_access_token` in localStorage. Login on `/stellar/auth` → `stellar_access_token`. Each network shows correct auth state independently +7. **Legacy redirects**: `/marketplace` → `/arbitrum/marketplace`, `/auith` → `/arbitrum/auth` +8. **Logout clears correct tokens**: Logout on arbitrum clears `arbitrum_*` tokens; Stellar tokens survive and vice versa +9. **Navbar hides features on Stellar**: Borrow shows on arbitrum, shows on Stellar (both `borrow: true`); Faucet nav item hidden on Stellar diff --git a/package.json b/package.json index ace4833..ae419c3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "client-mantle", + "name": "client-arbitrum", "private": true, "version": "0.0.0", "type": "module", @@ -19,8 +19,12 @@ "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tabs": "^1.1.13", "@rainbow-me/rainbowkit": "^2.2.10", + "@stellar/freighter-api": "^6.0.1", + "@stellar/stellar-sdk": "^14.5.0", "@tabler/icons-react": "^3.36.0", + "@tanstack/query-core": "^5.90.20", "@tanstack/react-query": "^5.90.12", + "buffer": "^6.0.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dagre": "^0.8.5", @@ -34,6 +38,7 @@ "react-dom": "^19.2.0", "react-dropzone": "^14.3.8", "react-hot-toast": "^2.6.0", + "react-is": "^19.2.4", "react-router-dom": "^7.11.0", "recharts": "^3.6.0", "tailwind-merge": "^3.4.0", @@ -50,6 +55,7 @@ "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", + "@types/react-is": "^19", "@types/three": "^0.182.0", "@vitejs/plugin-react": "^5.1.1", "autoprefixer": "^10.4.23", diff --git a/public/arbitrum-logo.png b/public/arbitrum-logo.png new file mode 100644 index 0000000..bb1d425 Binary files /dev/null and b/public/arbitrum-logo.png differ diff --git a/public/arbitrum-logo.svg b/public/arbitrum-logo.svg new file mode 100644 index 0000000..2dce975 --- /dev/null +++ b/public/arbitrum-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/App.tsx b/src/App.tsx index ebbe518..b21f9b2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,18 +1,12 @@ // src/App.tsx import { RouterProvider } from 'react-router-dom'; import { router } from './app/router'; -import { WalletProvider } from './app/providers/WalletProvider'; -import { WalletIntegrityProvider } from './app/providers/WalletIntegrityProvider'; import './styles/heroBackground.css' function App() { return ( - - - - - + ); } diff --git a/src/app/layouts/NetworkLayout.tsx b/src/app/layouts/NetworkLayout.tsx new file mode 100644 index 0000000..09b65ff --- /dev/null +++ b/src/app/layouts/NetworkLayout.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Outlet } from 'react-router-dom'; +import { useNetwork } from '../../lib/network/NetworkContext'; +import { WagmiProvider } from 'wagmi'; +import { QueryClientProvider } from '@tanstack/react-query'; +import { rainbowKitConfig } from '../../lib/blockchain/rainbowkit.config'; +import { queryClient } from '../../lib/api/queryClient'; +import { EvmWalletProvider } from '../providers/EvmWalletProvider'; +import { WalletIntegrityProvider } from '../providers/WalletIntegrityProvider'; +import { EvmAuthProvider } from '../../components/auth/EvmAuthProvider'; +import { StellarAuthProvider } from '../../components/auth/StellarAuthProvider'; + +export const NetworkLayout: React.FC = () => { + const { networkType } = useNetwork(); + + console.log('🏗️ NetworkLayout mounting for network:', networkType); + + return ( + + + {networkType === 'stellar' ? ( + // Stellar Branch + // Note: StellarWalletProvider was just a QueryClientProvider wrapper, which is now hoisted. + // We can skip it or keep it if it does other things. + // Checking file 453: it ONLY does QueryClientProvider. + // So we can remove it and just use StellarAuthProvider directly. + + + + ) : ( + // EVM Branch + + + + + + + + )} + + + ); +}; diff --git a/src/app/providers/EvmWalletProvider.tsx b/src/app/providers/EvmWalletProvider.tsx new file mode 100644 index 0000000..1f52ea6 --- /dev/null +++ b/src/app/providers/EvmWalletProvider.tsx @@ -0,0 +1,19 @@ +import '@rainbow-me/rainbowkit/styles.css'; +import { RainbowKitProvider } from '@rainbow-me/rainbowkit'; +import type { ReactNode } from 'react'; + +interface EvmWalletProviderProps { + children: ReactNode; +} + +/** + * EvmWalletProvider - Wraps app with RainbowKit + * Requires WagmiProvider to be present in parent tree + */ +export const EvmWalletProvider = ({ children }: EvmWalletProviderProps) => { + return ( + + {children} + + ); +}; diff --git a/src/app/providers/NetworkProvider.tsx b/src/app/providers/NetworkProvider.tsx new file mode 100644 index 0000000..ce4dc7c --- /dev/null +++ b/src/app/providers/NetworkProvider.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { useParams, Navigate } from 'react-router-dom'; +import { NETWORK_CONFIGS, DEFAULT_NETWORK } from '../../lib/network/network.config'; +import type { NetworkType } from '../../lib/network/network.config'; +import { NetworkProviderInternal } from '../../lib/network/NetworkContext'; + +export const NetworkProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const { network } = useParams<{ network: string }>(); + + const resolvedNetwork = (network as NetworkType) || DEFAULT_NETWORK; + const config = NETWORK_CONFIGS[resolvedNetwork as NetworkType]; + + console.log('🌐 NetworkProvider: resolved network =', resolvedNetwork, 'config =', config); + + if (!config) { + return ; + } + + return {children}; +}; diff --git a/src/app/providers/StellarWalletProvider.tsx b/src/app/providers/StellarWalletProvider.tsx new file mode 100644 index 0000000..085e488 --- /dev/null +++ b/src/app/providers/StellarWalletProvider.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const queryClient = new QueryClient(); + +export const StellarWalletProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + return ( + + {children} + + ); +}; diff --git a/src/app/router/public.routes.tsx b/src/app/router/public.routes.tsx index 1a10fad..9c30203 100644 --- a/src/app/router/public.routes.tsx +++ b/src/app/router/public.routes.tsx @@ -1,5 +1,5 @@ // src/app/router/public.routes.tsx -import { type RouteObject } from 'react-router-dom'; +import { type RouteObject, Navigate } from 'react-router-dom'; import HomePage from '../../pages/landing/Home.page'; import AuthPage from '../../pages/public/auth/Auth.page'; import AdminAuthPage from '../../pages/public/auth/adminAuth.page'; @@ -16,8 +16,7 @@ import PayoutViewPage from '../../pages/admin/payout/PayoutView.page'; import SettlementViewPage from '../../pages/admin/settlements/SettlementView.page'; import ListingsPage from '../../pages/admin/listings/Listings.page'; import { LoansView } from '../../pages/admin/loans/LoansView.page'; - - +import TrustlineRequestsPage from '../../pages/admin/trustline/TrustlineRequests.page'; // Marketplace import MarketplacePage from '../../pages/marketplace/Marketplace.page'; @@ -38,112 +37,149 @@ import ChangelogPage from '../../pages/landing/Changelog.page'; import FAQSection from '../../pages/landing/FAQ.page'; import BorrowPage from '../../pages/borrow/BorrowPage'; -// Challenge Verification Page +// Network & Layout +import { NetworkProvider } from '../providers/NetworkProvider'; +import { NetworkLayout } from '../layouts/NetworkLayout'; +import { FeatureGuard } from '../../components/common/FeatureGuard'; export const publicRoutes: RouteObject[] = [ { path: '/', - element: , - }, - { - path: '/how-it-works', - element: , - }, - { - path: '/about', - element: , - }, - { - path: '/Changelog', - element: , - }, - { - path: '/marketplace', - element: , - }, - { - path :'/borrow', - element: , - }, - { - path: '/marketplace/asset/:assetId', - element: , - }, - { - path: '/marketplace/auction/:assetId', - element: , - }, - // { - // path: '/trade', - // element: , - // }, - { - path: '/trade/asset/:assetId', - element: , - }, - { - path: '/portfolio', - element: , - }, - { - path: '/faucet', - element: , - }, - { - path: '/auth', - element: , - }, - { - path: '/adminAuth', - element: , + element: , }, { - path: '/onboarding', - element: , - }, - { - path: '/issuer/dashboard', - element: , - }, - { - path: '/issuer/asset/:assetId', - element: , - }, - // Admin Dashboard Routes - { - path: '/admin', - element: , + path: '/:network', + element: ( + + + + ), children: [ { index: true, - element: , + element: , + }, + { + path: 'how-it-works', + element: , + }, + { + path: 'about', + element: , + }, + { + path: 'Changelog', + element: , + }, + { + path: 'marketplace', + element: , + }, + { + path: 'borrow', + element: ( + + + + ), + }, + { + path: 'marketplace/asset/:assetId', + element: , + }, + { + path: 'marketplace/auction/:assetId', + element: , + }, + { + path: 'trade/asset/:assetId', + element: ( + + + + ), + }, + { + path: 'portfolio', + element: , + }, + { + path: 'faucet', + element: ( + + + + ), }, { - path: 'listings', - element: , + path: 'auth', + element: , }, { - path: 'loans', - element: , + path: 'adminAuth', + element: , }, { - path: 'compliance', - element: , + path: 'onboarding', + element: , }, { - path: 'operations', - element: , + path: 'issuer/dashboard', + element: , }, { - path: 'payouts', - element: , + path: 'issuer/asset/:assetId', + element: , }, + // Admin Dashboard Routes { - path: 'settlements', - element: , + path: 'admin', + element: , + children: [ + { + index: true, + element: , + }, + { + path: 'listings', + element: , + }, + { + path: 'loans', + element: , + }, + { + path: 'compliance', + element: , + }, + { + path: 'operations', + element: , + }, + { + path: 'payouts', + element: , + }, + { + path: 'settlements', + element: , + }, + { + path: 'trustlines', + element: , + }, + ], }, ], }, + // Legacy Redirects + { path: '/marketplace', element: }, + { path: '/auth', element: }, + { path: '/portfolio', element: }, + { path: '/admin', element: }, + { path: '/trade/*', element: }, + { path: '/faucet', element: }, + { path: '/borrow', element: }, // 404 - Catch all unmatched routes { diff --git a/src/components/auth/EvmAuthProvider.tsx b/src/components/auth/EvmAuthProvider.tsx new file mode 100644 index 0000000..e3d82e5 --- /dev/null +++ b/src/components/auth/EvmAuthProvider.tsx @@ -0,0 +1,189 @@ +import React, { useState } from 'react'; +import { useAccount, useSignMessage, useDisconnect } from 'wagmi'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { authService } from '../../lib/api/auth.service'; +import { issuerService } from '../../lib/api/issuer.service'; +import { useAuthStore } from '../../stores/auth.store'; +import { useNavigate } from 'react-router-dom'; +import { useNetwork } from '../../lib/network/NetworkContext'; +import { AuthStrategyProvider } from '../../lib/auth/AuthStrategyContext'; +import type { AuthStrategy } from '../../lib/auth/AuthStrategyContext'; + +export const EvmAuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const navigate = useNavigate(); + const { networkPath } = useNetwork(); + const { openConnectModal } = useConnectModal(); + const { address, isConnected } = useAccount(); + const { signMessageAsync } = useSignMessage(); + const { disconnect } = useDisconnect(); + const { setUser, setLoading, setAuthenticatedWallet, logout: storeLogout } = useAuthStore(); + + const [error, setError] = useState(null); + const [isAuthenticating, setIsAuthenticating] = useState(false); + const [pendingAction, setPendingAction] = useState<'investor' | 'issuer' | null>(null); + + // Re-use logic from original useAuthActions + // We can't easily reuse useAuthActions because it's being refactored to USE this provider. + // So we move the logic here. + + const authenticateInvestor = async () => { + if (!isConnected || !address) return; + + try { + setIsAuthenticating(true); + setLoading(true); + setError(null); + + const challenge = await authService.getChallenge(address); + const signature = await signMessageAsync({ + message: challenge.message, + }); + + const loginResponse = await authService.login({ + walletAddress: address, + message: challenge.message, + signature: signature, + }); + + setUser(loginResponse.user); + setAuthenticatedWallet(address); + + if (loginResponse.user.role === 'ORIGINATOR') { + navigate(networkPath('/issuer/dashboard')); + } else if (loginResponse.user.role === 'INVESTOR') { + if (loginResponse.user.kyc === true) { + navigate(networkPath('/portfolio')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } else if (loginResponse.user.role === 'ADMIN') { + navigate(networkPath('/admin')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } catch (err: any) { + console.error('Error during authentication:', err); + setError(err.message || 'Authentication failed'); + } finally { + setIsAuthenticating(false); + setLoading(false); + } + }; + + const authenticateIssuer = async () => { + if (!isConnected || !address) return; + + try { + setIsAuthenticating(true); + setLoading(true); + setError(null); + + const challenge = await issuerService.getChallenge(address); + const signature = await signMessageAsync({ + message: challenge.message, + }); + + const loginResponse = await issuerService.login({ + walletAddress: address, + message: challenge.message, + signature: signature, + }); + + setUser(loginResponse.user); + setAuthenticatedWallet(address); + + if (loginResponse.user.role === 'ORIGINATOR') { + if (loginResponse.user.kyc === true) { + navigate(networkPath('/issuer/dashboard')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } else if (loginResponse.user.role === 'INVESTOR') { + navigate(networkPath('/portfolio')); + } else if (loginResponse.user.role === 'ADMIN') { + navigate(networkPath('/admin')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } catch (err: any) { + console.error('Error during authentication:', err); + setError(err.message || 'Authentication failed'); + } finally { + setIsAuthenticating(false); + setLoading(false); + } + }; + + // Handle pending actions after connection + React.useEffect(() => { + if (isConnected && address && pendingAction) { + if (pendingAction === 'investor') { + authenticateInvestor(); + } else if (pendingAction === 'issuer') { + authenticateIssuer(); + } + setPendingAction(null); + } + }, [isConnected, address, pendingAction]); + + const handleGetStarted = async () => { + try { + setError(null); + + if (!isConnected || !address) { + setPendingAction('investor'); + if (openConnectModal) { + openConnectModal(); + } else { + setError("Wallet connection not available"); + } + return; + } + + await authenticateInvestor(); + } catch (err: any) { + console.error('Error during get started:', err); + setError(err.message || 'Operation failed'); + } + }; + + const handleIssuerGetStarted = async () => { + try { + setError(null); + + if (!isConnected || !address) { + setPendingAction('issuer'); + if (openConnectModal) { + openConnectModal(); + } else { + setError("Wallet connection not available"); + } + return; + } + + await authenticateIssuer(); + } catch (err: any) { + console.error('Error during issuer get started:', err); + setError(err.message || 'Operation failed'); + } + }; + + const handleLogout = () => { + disconnect(); + storeLogout(); + navigate(networkPath('/')); + }; + + const strategy: AuthStrategy = { + isAuthenticating, + isAuthenticated: isConnected && !!address, // Simplified check + address: address, + error, + login: handleGetStarted, // Alias for now + logout: handleLogout, + handleGetStarted, + handleIssuerGetStarted, + }; + + return {children}; +}; diff --git a/src/components/auth/StellarAuthProvider.tsx b/src/components/auth/StellarAuthProvider.tsx new file mode 100644 index 0000000..e1c029e --- /dev/null +++ b/src/components/auth/StellarAuthProvider.tsx @@ -0,0 +1,209 @@ +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useNetwork } from '../../lib/network/NetworkContext'; +import { AuthStrategyProvider } from '../../lib/auth/AuthStrategyContext'; +import type { AuthStrategy } from '../../lib/auth/AuthStrategyContext'; +import { useAuthStore } from '../../stores/auth.store'; +import { + isConnected, + requestAccess, + getAddress, + signMessage +} from "@stellar/freighter-api"; +import { authService } from '../../lib/api/auth.service'; +import { issuerService } from '../../lib/api/issuer.service'; + +export const StellarAuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const navigate = useNavigate(); + const { networkPath } = useNetwork(); + const { setUser, setLoading, setAuthenticatedWallet, logout: storeLogout } = useAuthStore(); + + const [error, setError] = useState(null); + const [isAuthenticating, setIsAuthenticating] = useState(false); + const [address, setAddress] = useState(undefined); + + // Restore session on mount + React.useEffect(() => { + const restoreSession = async () => { + try { + // 1. Check for existing token + const token = localStorage.getItem('stellar_access_token') || localStorage.getItem('arbitrum_access_token'); + + if (!token) { + // No backend session, just clear state + return; + } + + // 2. Check if Freighter is installed and we have access + if (await isConnected()) { + const addressData = await getAddress(); + if (addressData.address) { + setAddress(addressData.address); + setAuthenticatedWallet(addressData.address); + + // 3. Verify backend session + try { + // Force base service to use the found token if needed, but it should auto-detect + // We call getCurrentUser to validate token and get user role/kyc + const user = await authService.getCurrentUser(); + setUser(user as any); + } catch (e) { + console.warn("Backend session invalid:", e); + handleLogout(); // Token invalid, force logout + } + } + } + } catch (err) { + // Silent failure - user just needs to login again if info cannot be retrieved + console.debug("Failed to restore Stellar session:", err); + } + }; + restoreSession(); + }, [setAuthenticatedWallet]); + + const authenticateStellar = async (role: 'investor' | 'issuer') => { + try { + setError(null); + setIsAuthenticating(true); + setLoading(true); + + // 1. Check if Freighter is installed + const installed = await isConnected(); + if (!installed) { + throw new Error("Freighter wallet is not installed. Please install it to continue."); + } + + // 2. Request access + const allowed = await requestAccess(); + if (!allowed) { + throw new Error("User denied access to Freighter wallet."); + } + + // 3. Get Public Key + const addressData = await getAddress(); + if (addressData.error) { + throw new Error(typeof addressData.error === 'string' ? addressData.error : "Failed to retrieve address"); + } + + const publicKey = addressData.address; + if (!publicKey) { + throw new Error("Failed to retrieve public key from Freighter."); + } + setAddress(publicKey); + + // 4. Get Challenge & Sign + const service = role === 'issuer' ? issuerService : authService; + const challenge = await service.getChallenge(publicKey); + + const signResponse = await signMessage(challenge.message); + if (signResponse.error) { + throw new Error(typeof signResponse.error === 'string' ? signResponse.error : "Failed to sign message"); + } + + let signature = signResponse.signedMessage; + if (!signature) throw new Error("User denied message signature."); + + // Convert Buffer/Uint8Array to Base64 string (Backend expects Base64 for Stellar) + if (typeof signature !== 'string') { + try { + // Check if it's a Buffer-like object or Uint8Array + // @ts-ignore + if (signature.type === 'Buffer' || signature.constructor?.name === 'Buffer' || signature instanceof Uint8Array || Array.isArray(signature)) { + // Convert to Uint8Array first to be safe + // @ts-ignore + const byteArray = signature instanceof Uint8Array ? signature : new Uint8Array(signature); + + // Convert to binary string + let binary = ''; + const len = byteArray.byteLength; + for (let i = 0; i < len; i++) { + binary += String.fromCharCode(byteArray[i]); + } + + // Convert to Base64 + signature = window.btoa(binary); + } else { + // Fallback for unknown types, try standard toString or fail gracefully + console.warn("Unknown signature format, attempting toString:", signature); + signature = (signature as any).toString(); + } + } catch (e) { + console.error("Signature conversion failed:", e); + throw new Error("Failed to process wallet signature"); + } + } + + // 5. Login + const loginResponse = await service.login({ + walletAddress: publicKey, + message: challenge.message, + signature: signature as string, + }); + + // 6. Persist Token Explicitly (Fix for missing token issue) + if (loginResponse.tokens) { + localStorage.setItem('stellar_access_token', loginResponse.tokens.access); + localStorage.setItem('stellar_refresh_token', loginResponse.tokens.refresh); + } + + // 7. Update State + setUser(loginResponse.user); + setAuthenticatedWallet(publicKey); + + // 8. Navigate + if (loginResponse.user.role === 'ORIGINATOR') { + if (loginResponse.user.kyc === true) { + navigate(networkPath('/issuer/dashboard')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } else if (loginResponse.user.role === 'INVESTOR') { + if (loginResponse.user.kyc === true) { + navigate(networkPath('/portfolio')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + } else if (loginResponse.user.role === 'ADMIN') { + navigate(networkPath('/admin')); + } else { + navigate(networkPath('/auth'), { state: { showKycForm: true } }); + } + + } catch (err: any) { + console.error('Stellar Authentication Error:', err); + setError(err.message || "Authentication failed"); + } finally { + setIsAuthenticating(false); + setLoading(false); + } + }; + + const handleGetStarted = async () => { + await authenticateStellar('investor'); + }; + + const handleIssuerGetStarted = async () => { + await authenticateStellar('issuer'); + }; + + const handleLogout = () => { + setAddress(undefined); + localStorage.removeItem('stellar_access_token'); + localStorage.removeItem('stellar_refresh_token'); + storeLogout(); + navigate(networkPath('/')); + }; + + const strategy: AuthStrategy = { + isAuthenticating, + isAuthenticated: !!address, + address, + error, + login: handleGetStarted, + logout: handleLogout, + handleGetStarted, + handleIssuerGetStarted, + }; + + return {children}; +}; diff --git a/src/components/changelog/ChangelogHotTimeline.tsx b/src/components/changelog/ChangelogHotTimeline.tsx index cc7f568..1c60669 100644 --- a/src/components/changelog/ChangelogHotTimeline.tsx +++ b/src/components/changelog/ChangelogHotTimeline.tsx @@ -122,7 +122,7 @@ export function ChangelogTimeline() { Features up till now

- Authentication, Asset Tokenisation & Management, Marketplaces, Actions, Transfers, Real Time Updates, Elaborate Notification Service, Activity Logs, Portfolio Management, Analytics, Leverage METH Buy, Collateralisation, Borrowing, Private Credit, Universal Loans, OAID + Authentication, Asset Tokenisation & Management, Marketplaces, Actions, Transfers, Real Time Updates, Elaborate Notification Service, Activity Logs, Portfolio Management, Analytics, Leverage stARB Buy, Collateralisation, Borrowing, Private Credit, Universal Loans, OAID

Server { + return ( +
+
+ +
+

{title}

+

+ {description} +

+
+ ); +}; diff --git a/src/components/common/FeatureGuard.tsx b/src/components/common/FeatureGuard.tsx new file mode 100644 index 0000000..455b50c --- /dev/null +++ b/src/components/common/FeatureGuard.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Navigate } from 'react-router-dom'; +import { useNetwork } from '../../lib/network/NetworkContext'; +import type { NetworkFeatures } from '../../lib/network/network.config'; + +interface FeatureGuardProps { + feature: keyof NetworkFeatures; + children: React.ReactNode; +} + +export const FeatureGuard: React.FC = ({ feature, children }) => { + const { isFeatureAvailable, networkPath } = useNetwork(); + + if (!isFeatureAvailable(feature)) { + return ; + } + + return <>{children}; +}; diff --git a/src/components/common/Navbar.tsx b/src/components/common/Navbar.tsx index 640d1eb..e1b66bc 100644 --- a/src/components/common/Navbar.tsx +++ b/src/components/common/Navbar.tsx @@ -3,17 +3,25 @@ import { useAccount, useDisconnect } from 'wagmi'; import { Button } from "../ui/button"; import { NotificationBell } from "../notifications/NotificationBell"; import { useAuthActions } from "../../hooks/useAuthActions"; +import { useNetwork } from "../../lib/network/NetworkContext"; +import { NetworkSwitcher } from "./NetworkSwitcher"; + const Navbar = () => { const navigate = useNavigate(); const { address } = useAccount(); const { disconnect } = useDisconnect(); const { handleGetStarted, isAuthenticating } = useAuthActions(); + const { networkPath, isFeatureAvailable, networkType } = useNetwork(); + + console.log('🧭 Navbar rendering. Network:', networkType); + console.log(' Marketplace Path:', networkPath('/marketplace')); + const handleLogout = () => { disconnect(); // Maybe clear auth store as well - navigate('/'); + navigate(networkPath('/')); }; const truncateAddress = (addr: string | undefined) => addr ? `${addr.slice(0, 6)}...${addr.slice(-4)}` : ''; @@ -21,19 +29,22 @@ const Navbar = () => { return (
{/* Left: Logo */} - - Mantle + + arbitrum {/* Center: Navigation */} - {/* Right: Wallet Display */} + {/* Right: Wallet & Network Switcher */}
+ {address ? ( <> diff --git a/src/components/common/NetworkSwitcher.tsx b/src/components/common/NetworkSwitcher.tsx new file mode 100644 index 0000000..9d0aa57 --- /dev/null +++ b/src/components/common/NetworkSwitcher.tsx @@ -0,0 +1,32 @@ +import { useNavigate, useLocation } from "react-router-dom"; +import { useNetwork } from "../../lib/network/NetworkContext"; +import { SUPPORTED_NETWORKS } from "../../lib/network/network.config"; +import type { NetworkType } from "../../lib/network/network.config"; + +export const NetworkSwitcher = () => { + const { networkType } = useNetwork(); + const navigate = useNavigate(); + const location = useLocation(); + + const handleSwitch = (targetNetwork: NetworkType) => { + if (targetNetwork === networkType) return; + + // Compute current sub-path + const pathParts = location.pathname.split('/'); + // pathParts[0] is empty, pathParts[1] is network, rest is subpath + const currentSubPath = pathParts.slice(2).join('/'); + + // Navigate to new network with same subpath + navigate(`/${targetNetwork}/${currentSubPath}`); + }; + + return ( +
+ +
+ ); +}; diff --git a/src/components/faucet/TokenFaucetCard.tsx b/src/components/faucet/TokenFaucetCard.tsx index 427c9d4..b5ee517 100644 --- a/src/components/faucet/TokenFaucetCard.tsx +++ b/src/components/faucet/TokenFaucetCard.tsx @@ -1,14 +1,15 @@ import { useState } from 'react'; -import { useAccount, useBalance } from 'wagmi'; +import { useAccount, useBalance, useWriteContract } from 'wagmi'; import { Button } from '../ui/button'; import { useToast } from '../../hooks/useToast'; import { Loader2, CheckCircle, ExternalLink } from 'lucide-react'; -import { faucetService } from '../../lib/api/faucet.service'; +import { USDC_ABI, STARB_ABI, CONTRACTS } from '../../lib/blockchain/auction.contract'; +import { parseUnits } from 'viem'; import type { Address } from 'viem'; interface TokenFaucetCardProps { - tokenName: 'USDC' | 'mETH'; - tokenSymbol: 'USDC' | 'mETH'; + tokenName: 'USDC' | 'stARB'; + tokenSymbol: 'USDC' | 'stARB'; tokenDecimals: number; tokenImage: string; tokenAddress: string; @@ -43,6 +44,8 @@ export const TokenFaucetCard = ({ token: tokenAddress as Address, }); + const { writeContractAsync } = useWriteContract(); + const handleGetToken = async () => { if (!address) { toastError('Wallet not connected', 'Please connect your wallet to use the faucet.'); @@ -76,13 +79,41 @@ export const TokenFaucetCard = ({ } } - info(`Requesting ${tokenName}...`, 'The faucet is processing your request.'); - const response = - tokenName === 'USDC' - ? await faucetService.getUsdcFromFaucet(address) - : await faucetService.getMethFromFaucet(address); - success(`${tokenName} Received!`, `${response.amount} ${tokenName} sent to your wallet.`); - setFaucetResult({ ...response, symbol: tokenSymbol }); + if (tokenName === 'USDC') { + // Call faucet() directly on the MockUSDC contract + info(`Requesting ${tokenName}...`, 'Please confirm the transaction in your wallet.'); + const txHash = await writeContractAsync({ + address: CONTRACTS.USDC as Address, + abi: USDC_ABI, + functionName: 'faucet', + }); + success(`${tokenName} Received!`, `1000 ${tokenName} sent to your wallet.`); + setFaucetResult({ + message: `Successfully received 1000 ${tokenName}`, + amount: '1000', + transactionHash: txHash, + explorerUrl: `https://sepolia.arbiscan.io/tx/${txHash}`, + symbol: tokenSymbol, + }); + } else { + // Call mint(address, amount) directly on the MockStARB contract + info(`Requesting ${tokenName}...`, 'Please confirm the transaction in your wallet.'); + const mintAmount = parseUnits(faucetAmount.toString(), 18); // stARB has 18 decimals + const txHash = await writeContractAsync({ + address: CONTRACTS.stARB as Address, + abi: STARB_ABI, + functionName: 'mint', + args: [address, mintAmount], + }); + success(`${tokenName} Received!`, `${faucetAmount} ${tokenName} sent to your wallet.`); + setFaucetResult({ + message: `Successfully received ${faucetAmount} ${tokenName}`, + amount: faucetAmount.toString(), + transactionHash: txHash, + explorerUrl: `https://sepolia.arbiscan.io/tx/${txHash}`, + symbol: tokenSymbol, + }); + } } catch (err: unknown) { const error = err as Error; toastError('Faucet Error', error.message); diff --git a/src/components/issuer/AssetUploadModal.tsx b/src/components/issuer/AssetUploadModal.tsx index 33dc37e..6f40f87 100644 --- a/src/components/issuer/AssetUploadModal.tsx +++ b/src/components/issuer/AssetUploadModal.tsx @@ -138,11 +138,7 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa const handleNext = () => { if (validateStep()) setCurrentStep(v => v + 1); }; const handlePrevious = () => setCurrentStep(v => v - 1); - const tokensToWei = (tokens: string): string => { - if (!tokens) return '0'; - const weiAmount = BigInt(Math.floor(parseFloat(tokens))) * BigInt('1000000000000000000'); - return weiAmount.toString(); - }; + const handleSubmit = async () => { if (!validateStep()) return; @@ -150,11 +146,30 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa try { const data = new FormData(); if (formData.file) data.append('file', formData.file); - ['invoiceNumber', 'faceValue', 'currency', 'issueDate', 'dueDate', 'buyerName', 'industry', 'riskTier', 'assetType', 'minRaisePercentage', 'maxRaisePercentage'].forEach(key => { - data.append(key, (formData as any)[key]); - }); - data.append('totalSupply', tokensToWei(formData.totalSupply)); - data.append('minInvestment', tokensToWei(formData.minInvestment)); + // Format ALL numeric values to canonical 4-decimal strings + const toCanonical = (val: string) => { + if (!val || val.trim() === '') return '0.0000'; + const num = parseFloat(val); + return isNaN(num) ? '0.0000' : num.toFixed(4); + }; + + // Explicitly append fields to control formatting + data.append('invoiceNumber', formData.invoiceNumber); + data.append('currency', formData.currency); + data.append('issueDate', formData.issueDate); + data.append('dueDate', formData.dueDate); + data.append('buyerName', formData.buyerName); + data.append('industry', formData.industry); + data.append('riskTier', formData.riskTier); + data.append('assetType', formData.assetType); + + // Numeric fields requiring canonical format + data.append('faceValue', toCanonical(formData.faceValue)); + data.append('minRaisePercentage', toCanonical(formData.minRaisePercentage)); + data.append('maxRaisePercentage', toCanonical(formData.maxRaisePercentage)); + data.append('totalSupply', toCanonical(formData.totalSupply)); + data.append('minInvestment', toCanonical(formData.minInvestment)); + if (formData.assetType === 'AUCTION') data.append('auctionDuration', formData.auctionDuration); await assetService.uploadAsset(data); @@ -247,8 +262,8 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa

PDF format supported • Max 10MB

- updateField('invoiceNumber', v)} placeholder="e.g. INV-2024-001" /> - updateField('faceValue', v)} placeholder="e.g. 50000.00" /> + updateField('invoiceNumber', v)} placeholder="e.g. INV-2024-001" /> + updateField('faceValue', v)} placeholder="e.g. 50000.00" />
@@ -268,7 +283,7 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa
updateField('issueDate', v)} max={today} />
- updateField('dueDate', v)} min={today} /> + updateField('dueDate', v)} min={today} />
@@ -276,7 +291,7 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa {currentStep === 2 && (
- updateField('buyerName', v)} placeholder="e.g. Acme Corporation Global" /> + updateField('buyerName', v)} placeholder="e.g. Acme Corporation Global" />
@@ -350,31 +365,31 @@ export const AssetUploadModal = ({ isOpen, onClose, onSuccess }: AssetUploadModa

Fundraising Limits (%)

- { - const numValue = Math.min(95, Math.max(0, parseInt(v) || 0)); - updateField('minRaisePercentage', numValue.toString()); - }} - placeholder="Min 0" - max="95" - min="0" + { + const numValue = Math.min(95, Math.max(0, parseInt(v) || 0)); + updateField('minRaisePercentage', numValue.toString()); + }} + placeholder="Min 0" + max="95" + min="0" /> - { - const numValue = Math.min(95, Math.max(0, parseInt(v) || 0)); - updateField('maxRaisePercentage', numValue.toString()); - }} - max="95" - min="0" - placeholder="Max 95" + { + const numValue = Math.min(95, Math.max(0, parseInt(v) || 0)); + updateField('maxRaisePercentage', numValue.toString()); + }} + max="95" + min="0" + placeholder="Max 95" />
diff --git a/src/components/leverage/LeverageForm.tsx b/src/components/leverage/LeverageForm.tsx index 5063ae9..d3e4811 100644 --- a/src/components/leverage/LeverageForm.tsx +++ b/src/components/leverage/LeverageForm.tsx @@ -19,17 +19,17 @@ const TEST_ASSET = { export const LeverageForm = () => { const [amount, setAmount] = useState(''); const { - methPrice, + stARBPrice, activeQuote, isLoading, - fetchMethPrice, + fetchstARBPrice, getQuote, createPosition } = useLeverageStore(); useEffect(() => { - fetchMethPrice(); - }, [fetchMethPrice]); + fetchstARBPrice(); + }, [fetchstARBPrice]); const handleAmountChange = (e: React.ChangeEvent) => { const val = e.target.value; @@ -44,7 +44,7 @@ export const LeverageForm = () => { if (!amount || !activeQuote) return; try { - const mETHCollateral = parseUnits(amount, 18).toString(); + const stARBCollateral = parseUnits(amount, 18).toString(); // Token has 18 decimals usually? Let's assume standard ERC20 for the RWA token const tokenAmount = parseUnits(estimatedTokens.toString(), 18).toString(); @@ -53,7 +53,7 @@ export const LeverageForm = () => { tokenAddress: TEST_ASSET.address, tokenAmount: tokenAmount, pricePerToken: TEST_ASSET.priceWei, - mETHCollateral: mETHCollateral + stARBCollateral: stARBCollateral }); setAmount(''); @@ -71,7 +71,7 @@ export const LeverageForm = () => { Open Leveraged Position - Deposit mETH collateral to borrow USDC and purchase RWA tokens. + Deposit stARB collateral to borrow USDC and purchase RWA tokens. @@ -79,7 +79,7 @@ export const LeverageForm = () => { {/* Input Section */}
{ className="pr-16" /> - mETH + stARB
- Balance: 5.42 mETH - ≈ ${amount ? (parseFloat(amount) * methPrice).toLocaleString() : '0.00'} USD + Balance: 5.42 stARB + ≈ ${amount ? (parseFloat(amount) * stARBPrice).toLocaleString() : '0.00'} USD
{/* Info Box */}
- mETH Price - ${methPrice.toLocaleString()} + stARB Price + ${stARBPrice.toLocaleString()}
Max Borrow (LTV 150%) diff --git a/src/components/leverage/PositionDetailChart.tsx b/src/components/leverage/PositionDetailChart.tsx index 00daab2..aa9d7d8 100644 --- a/src/components/leverage/PositionDetailChart.tsx +++ b/src/components/leverage/PositionDetailChart.tsx @@ -29,7 +29,7 @@ const HarvestDot = (props: any) => { const { cx, cy, payload, harvestHistory, fill = '#10B981' } = props; // Only show dots for actual harvest points (non-zero values) - const isHarvestPoint = payload.mETHSwapped > 0 || payload.interestPaid > 0 || payload.usdcReceived > 0; + const isHarvestPoint = payload.stARBSwapped > 0 || payload.interestPaid > 0 || payload.usdcReceived > 0; if (!isHarvestPoint) { return ( @@ -66,7 +66,7 @@ const HarvestDot = (props: any) => { e.stopPropagation(); e.preventDefault(); console.log('Clicking harvest point:', harvestEvent.transactionHash); - const explorerUrl = `https://explorer.sepolia.mantle.xyz/tx/${harvestEvent.transactionHash}`; + const explorerUrl = `https://explorer.sepolia.arbitrum.xyz/tx/${harvestEvent.transactionHash}`; window.open(explorerUrl, '_blank', 'noopener,noreferrer'); }; @@ -96,9 +96,9 @@ const HarvestDot = (props: any) => { }; /** - * Custom Tooltip for mETH Chart + * Custom Tooltip for stARB Chart */ -const MethTooltip = (props: any) => { +const StARBTooltip = (props: any) => { const { active, payload, harvestHistory } = props; if (!active || !payload || !payload.length) return null; @@ -118,8 +118,8 @@ const MethTooltip = (props: any) => { minute: '2-digit', }); - const mETHValue = parseFloat(harvestEvent.mETHSwapped) / 1e18; - const formattedMETH = mETHValue < 0.000001 ? mETHValue.toExponential(4) : mETHValue.toFixed(6); + const stARBValue = parseFloat(harvestEvent.stARBSwapped) / 1e18; + const formattedstARB = stARBValue < 0.000001 ? stARBValue.toExponential(4) : stARBValue.toFixed(6); return (
@@ -127,7 +127,7 @@ const MethTooltip = (props: any) => {

- mETH: {formattedMETH} + stARB: {formattedstARB}

@@ -234,7 +234,7 @@ const HealthTooltip = (props: any) => { export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose }: PositionDetailChartProps) => { const [position, setPosition] = useState(initialPosition); const [loading, setLoading] = useState(false); - const [activeChart, setActiveChart] = useState<'meth' | 'interest' | 'health'>('meth'); + const [activeChart, setActiveChart] = useState<'stARB' | 'interest' | 'health'>('stARB'); // Zoom/History Slider State // Value 0: Show all history (start from index 0) // Value 80: Show last 20% (start from index 80%) @@ -274,7 +274,7 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose if (harvestEvent) { console.log('Opening transaction:', harvestEvent.transactionHash); - const explorerUrl = `https://explorer.sepolia.mantle.xyz/tx/${harvestEvent.transactionHash}`; + const explorerUrl = `https://explorer.sepolia.arbitrum.xyz/tx/${harvestEvent.transactionHash}`; window.open(explorerUrl, '_blank', 'noopener,noreferrer'); } }; @@ -366,10 +366,10 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose interestMax + padding, ]; - const collateral = formatUnits(BigInt(position.mETHCollateral), 18); + const collateral = formatUnits(BigInt(position.stARBCollateral), 18); const debt = formatUnits(BigInt(position.usdcBorrowed), 6); const health = position.currentHealthFactor / 10000; - const totalMETH = (parseFloat(position.totalMETHHarvested || '0') / 1e18).toFixed(8); + const totalstARB = (parseFloat(position.totalstARBHarvested || '0') / 1e18).toFixed(8); const totalInterest = (parseFloat(position.totalInterestPaid || '0') / 1e6).toFixed(4); const totalHarvests = position.harvestHistory?.length || 0; @@ -432,7 +432,7 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose
- Collateral: {parseFloat(collateral).toFixed(4)} mETH + Collateral: {parseFloat(collateral).toFixed(4)} stARB Debt: ${parseFloat(debt).toLocaleString()} USDC @@ -447,7 +447,7 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose Harvests: {totalHarvests} - mETH Swapped: {totalMETH} + stARB Swapped: {totalstARB} Interest Paid: ${totalInterest} @@ -469,13 +469,13 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose
)} - {/* mETH Swapped Chart */} - {activeChart === 'meth' && ( + {/* stARB Swapped Chart */} + {activeChart === 'stARB' && ( - + @@ -554,21 +554,21 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose dy={10} /> - } cursor={{ stroke: '#e5e7eb', strokeWidth: 1 }} /> + } cursor={{ stroke: '#e5e7eb', strokeWidth: 1 }} /> } connectNulls isAnimationActive={false} @@ -709,7 +709,7 @@ export const PositionDetailChart = ({ position: initialPosition, isOpen, onClose /** * Build timeline from actual harvest history data - * Creates data points for mETH swapped, interest paid, and health factor at each harvest + * Creates data points for stARB swapped, interest paid, and health factor at each harvest */ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimelineData[] { const points: PositionTimelineData[] = []; @@ -717,7 +717,7 @@ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimeline // Add starting point at position creation (no harvest yet) points.push({ timestamp: position.createdAt, - mETHSwapped: 0, + stARBSwapped: 0, interestPaid: 0, usdcReceived: 0, healthFactor: position.currentHealthFactor / 10000, @@ -726,8 +726,8 @@ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimeline // Process each harvest event if (position.harvestHistory && position.harvestHistory.length > 0) { position.harvestHistory.forEach((harvest) => { - // Convert mETH swapped from WEI to ETH - const mETHSwapped = parseFloat(harvest.mETHSwapped) / 1e18; + // Convert stARB swapped from WEI to ETH + const stARBSwapped = parseFloat(harvest.stARBSwapped) / 1e18; // Convert interest paid from USDC WEI to USD const interestPaid = parseFloat(harvest.interestPaid); @@ -741,7 +741,7 @@ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimeline // Add harvest point points.push({ timestamp: harvest.timestamp, - mETHSwapped, + stARBSwapped, interestPaid, usdcReceived, healthFactor, @@ -752,7 +752,7 @@ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimeline // Add current point (now) // points.push({ // timestamp: new Date().toISOString(), - // mETHSwapped: 0, // No harvest at current time + // stARBSwapped: 0, // No harvest at current time // interestPaid: 0, // usdcReceived: 0, // healthFactor: position.currentHealthFactor / 10000, @@ -763,7 +763,7 @@ function buildTimelineFromHarvests(position: LeveragePosition): PositionTimeline totalHarvests: position.harvestHistory?.length || 0, points: points.map(p => ({ timestamp: new Date(p.timestamp).toLocaleString(), - mETHSwapped: p.mETHSwapped?.toFixed(6), + stARBSwapped: p.stARBSwapped?.toFixed(6), interestPaid: p.interestPaid?.toFixed(4), usdcReceived: p.usdcReceived?.toFixed(4), healthFactor: p.healthFactor?.toFixed(2), diff --git a/src/components/leverage/PositionSparkline.tsx b/src/components/leverage/PositionSparkline.tsx index ad71495..b16896c 100644 --- a/src/components/leverage/PositionSparkline.tsx +++ b/src/components/leverage/PositionSparkline.tsx @@ -5,7 +5,7 @@ import type { HarvestEvent, PositionTimelineData, HealthStatus } from '../../typ interface PortfolioPosition { positionId: number; createdAt: string; - mETHCollateral: string; + stARBCollateral: string; healthFactor?: number; lastHarvestTime?: string; harvestHistory?: HarvestEvent[]; @@ -32,7 +32,7 @@ const HarvestTooltip = (props: any) => { if (!harvestEvent) return null; - const mETHSwapped = (parseFloat(harvestEvent.mETHSwapped) / 1e18).toFixed(6); + const stARBSwapped = (parseFloat(harvestEvent.stARBSwapped) / 1e18).toFixed(6); const interestPaid = (parseFloat(harvestEvent.interestPaid) / 1e6).toFixed(4); return ( @@ -40,7 +40,7 @@ const HarvestTooltip = (props: any) => {

🌾 Harvest

- mETH: {mETHSwapped} + stARB: {stARBSwapped}

Interest: ${interestPaid} @@ -53,7 +53,7 @@ const HarvestTooltip = (props: any) => { /** * PositionSparkline Component * Displays a minimal sparkline chart in the table row - * Shows mETH value trend with color-coded area fill + * Shows stARB value trend with color-coded area fill * Green for upward trend, red for downward trend */ export const PositionSparkline = ({ @@ -67,8 +67,8 @@ export const PositionSparkline = ({ let lineColor = '#10B981'; // Default green if (data.length > 2) { - const latestValue = data[data.length - 2].mETHSwapped || 0; // Second to last (last is current with 0) - const previousValue = data[data.length - 3].mETHSwapped || 0; + const latestValue = data[data.length - 2].stARBSwapped || 0; // Second to last (last is current with 0) + const previousValue = data[data.length - 3].stARBSwapped || 0; if (latestValue < previousValue) { lineColor = '#EF4444'; // Red for declining @@ -94,7 +94,7 @@ export const PositionSparkline = ({ /> { - const mETHSwapped = parseFloat(harvest.mETHSwapped) / 1e18; + const stARBSwapped = parseFloat(harvest.stARBSwapped) / 1e18; points.push({ timestamp: harvest.timestamp, - mETHSwapped: mETHSwapped, + stARBSwapped: stARBSwapped, healthFactor: harvest.healthFactorAfter / 10000, }); }); @@ -159,7 +159,7 @@ function buildSparklineFromHarvests(position: PortfolioPosition): PositionTimeli // // Add current point // points.push({ // timestamp: new Date().toISOString(), - // mETHSwapped: 0, + // stARBSwapped: 0, // healthFactor: healthFactorValue / 100, // }); diff --git a/src/components/leverage/PositionStats.tsx b/src/components/leverage/PositionStats.tsx index e68e647..e554379 100644 --- a/src/components/leverage/PositionStats.tsx +++ b/src/components/leverage/PositionStats.tsx @@ -30,7 +30,7 @@ export const PositionStats = () => { diff --git a/src/components/leverage/PositionsTable.tsx b/src/components/leverage/PositionsTable.tsx index fced939..003817b 100644 --- a/src/components/leverage/PositionsTable.tsx +++ b/src/components/leverage/PositionsTable.tsx @@ -22,7 +22,7 @@ interface PortfolioLeveragePosition { riskTier?: string; positionType: 'Leveraged Position'; }; - mETHCollateral: string; + stARBCollateral: string; usdcBorrowed: string; healthFactor?: number; healthStatus?: string; @@ -32,7 +32,7 @@ interface PortfolioLeveragePosition { liquidationTxHash?: string; leverageInfo: { type: 'ACTIVE' | 'SETTLED' | 'LIQUIDATED'; - mETHCollateralFormatted: string; + stARBCollateralFormatted: string; usdcBorrowedFormatted: string; healthFactorFormatted?: string; healthStatus?: string; @@ -41,8 +41,8 @@ interface PortfolioLeveragePosition { claimableYieldFormatted: string; userYield?: string; userYieldFormatted?: string; - mETHReturned?: string; - mETHReturnedFormatted?: string; + stARBReturned?: string; + stARBReturnedFormatted?: string; settlementTxHash?: string; settlementDate?: string; liquidationTxHash?: string; @@ -127,13 +127,19 @@ export const PositionsTable = ({ positions, isLoading, onSelectPosition }: Posit return pos.userYieldDistributed ? formatUSDC(pos.userYieldDistributed) : undefined; }; - const formatUSDC = (weiAmount: string): string => { - const usdc = parseFloat(weiAmount) / 1e6; + const formatUSDC = (amount: string): string => { + const val = parseFloat(amount || '0'); + // If value contains a decimal or is small, it's already canonical + const usdc = amount.includes('.') || val < 1e5 ? val : val / 1e6; return usdc.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }; - const formatMETH = (weiAmount: string): string => { - return formatUnits(BigInt(weiAmount), 18); + const formatstARB = (amount: string): string => { + if (!amount) return '0'; + const val = parseFloat(amount); + // If value contains a decimal or is small, it's already canonical + if (amount.includes('.') || val < 1e9) return val.toString(); + return formatUnits(BigInt(amount), 18); }; const getHealthColor = (health: number) => { @@ -238,9 +244,9 @@ export const PositionsTable = ({ positions, isLoading, onSelectPosition }: Posit {filteredPositions.map((pos, index) => { const health = getHealthFactor(pos); - const collateral = formatMETH(pos.mETHCollateral); + const collateral = formatstARB(pos.stARBCollateral); const invested = formatUSDC(pos.usdcBorrowed); - const totalAmount = isPortfolioPosition(pos) ? formatMETH(pos.totalAmount) : (parseFloat(formatMETH((pos as LeveragePosition).rwaTokenAmount || '0'))).toFixed(2); + const totalAmount = isPortfolioPosition(pos) ? formatstARB(pos.totalAmount) : (parseFloat(formatstARB((pos as LeveragePosition).rwaTokenAmount || '0'))).toFixed(2); const status = getStatus(pos); const positionStatusStyle = getPositionStatusStyle(status); const isActivePosition = status === 'ACTIVE'; @@ -284,7 +290,7 @@ export const PositionsTable = ({ positions, isLoading, onSelectPosition }: Posit {/* Collateral */}

- {parseFloat(collateral).toFixed(4)} mETH + {parseFloat(collateral).toFixed(4)} stARB
@@ -315,7 +321,7 @@ export const PositionsTable = ({ positions, isLoading, onSelectPosition }: Posit
{settlementTx ? ( { @@ -23,6 +25,7 @@ const getNotificationIcon = (type: NotificationType | string) => { ASSET_STATUS: FileCheck, TOKEN_DEPLOYED: Coins, KYC_STATUS: UserCheck, BID_PLACED: Award, AUCTION_WON: Award, BID_REFUNDED: XCircle, TOKEN_PURCHASED: TrendingUp, YIELD_DISTRIBUTED: DollarSign, SYSTEM_ALERT: Bell, + TRUSTLINE_APPROVED: FileCheck, }; return iconMap[type] || AlertCircle; }; @@ -95,12 +98,12 @@ export function NotificationBell({ role }: { role: 'ORIGINATOR' | 'INVESTOR' | ' const unsubscribe = notificationService.subscribeToNotifications((newNotification) => { const allowed = notificationService.filterNotificationsByRole([newNotification], role); if (allowed.length === 0) return; - + // Trigger Toast toast(newNotification.header, { icon: newNotification.severity === 'success' ? '✅' : - newNotification.severity === 'error' ? '❌' : - newNotification.severity === 'warning' ? '⚠️' : 'ℹ️', + newNotification.severity === 'error' ? '❌' : + newNotification.severity === 'warning' ? '⚠️' : 'ℹ️', duration: 4000, position: 'top-right', className: 'font-geist text-sm font-medium' @@ -122,6 +125,12 @@ export function NotificationBell({ role }: { role: 'ORIGINATOR' | 'INVESTOR' | ' const metadata = n.actionMetadata || {}; if (n.action === 'VIEW_ASSET' && metadata.assetId) { navigate(role === 'ORIGINATOR' ? `/issuer/asset/${metadata.assetId}` : role === 'ADMIN' ? `/admin/operations` : `/marketplace/asset/${metadata.assetId}`); + } else if (n.action === 'VIEW_MARKETPLACE') { + if (metadata.assetId) { + navigate(`/marketplace/asset/${metadata.assetId}`); + } else { + navigate('/marketplace'); + } } setIsOpen(false); } diff --git a/src/components/portfolio/ActiveBidsTable.tsx b/src/components/portfolio/ActiveBidsTable.tsx index b57d6c5..35efb02 100644 --- a/src/components/portfolio/ActiveBidsTable.tsx +++ b/src/components/portfolio/ActiveBidsTable.tsx @@ -222,7 +222,7 @@ export const ActiveBidsTable = ({ {bid.txHash ? ( e.stopPropagation()} @@ -235,7 +235,7 @@ export const ActiveBidsTable = ({ )}
{bid.settlementTxHash && bid.settlementTxHash !== undefined && (
e.stopPropagation()} diff --git a/src/components/portfolio/MiniAreaChart.tsx b/src/components/portfolio/MiniAreaChart.tsx index 38bda8d..e768599 100644 --- a/src/components/portfolio/MiniAreaChart.tsx +++ b/src/components/portfolio/MiniAreaChart.tsx @@ -1,5 +1,5 @@ // src/components/portfolio/MiniAreaChart.tsx -import { AreaChart, Area, ResponsiveContainer } from 'recharts'; +import { AreaChart, Area } from 'recharts'; interface MiniAreaChartProps { data: Array<{ timestamp: number; value: number }>; @@ -23,36 +23,36 @@ export const MiniAreaChart = ({ return (
- - - - - - - - - - - + + + + + + + + +
); }; diff --git a/src/components/portfolio/MyAssetsTable.tsx b/src/components/portfolio/MyAssetsTable.tsx index 189dbf9..d6d9dad 100644 --- a/src/components/portfolio/MyAssetsTable.tsx +++ b/src/components/portfolio/MyAssetsTable.tsx @@ -21,7 +21,7 @@ interface YieldInfo { interface LeverageInfo { type: 'ACTIVE' | 'SETTLED'; - mETHCollateralFormatted: string; + stARBCollateralFormatted: string; usdcBorrowedFormatted: string; healthFactorFormatted?: string; healthStatus?: 'HEALTHY' | 'WARNING' | 'CRITICAL'; @@ -30,8 +30,8 @@ interface LeverageInfo { claimableYieldFormatted?: string; userYield?: string; userYieldFormatted?: string; - mETHReturned?: string; - mETHReturnedFormatted?: string; + stARBReturned?: string; + stARBReturnedFormatted?: string; settlementTxHash?: string; settlementDate?: string; } @@ -70,7 +70,7 @@ interface PortfolioAsset { yieldInfo?: YieldInfo; transactionHistory?: TransactionHistory[]; // Leverage-specific fields - mETHCollateral?: string; + stARBCollateral?: string; usdcBorrowed?: string; healthFactor?: number; healthStatus?: string; @@ -129,12 +129,46 @@ export const MyAssetsTable = ({ }; const formatTokenAmount = (weiAmount: string): string => { - const tokens = parseFloat(weiAmount) / 1e18; + // If it's already canonical (e.g. "100.0000" or small number), don't divide by 1e18 + const val = parseFloat(weiAmount); + // Heuristic: if val < 1e12 and has decimals or is clearly not wei, use as is. + // 1e18 wei = 1 token. A normal balance of 1,000,000 tokens is 1e24 wei. + // So anything < 1e12 is definitely canonical. + if (weiAmount.includes('.') || val < 1e12) { + return val.toLocaleString('en-US', { maximumFractionDigits: 4 }); + } + const tokens = val / 1e18; return tokens.toLocaleString('en-US', { maximumFractionDigits: 4 }); }; const formatUSDCAmount = (amount: string): number => { - return parseFloat(amount) / 1e6; + // If it's already canonical (e.g. "85.0000" or small number), don't divide by 1e6 + const val = parseFloat(amount); + // Heuristic: 1e6 wei = 1 USDC. + // If val < 1e5 (0.1 USDC in Wei) it's tiny, but if it's "100.00" it's 100 USDC. + // A balance of 1000 USDC is 1e9 wei. + // If the input is "100.00", parseFloat is 100. + // If input is 100000000 (100 USDC), parseFloat is 1e8. + + // Better heuristic: if it has a dot '.', treat as canonical. + if (amount.includes('.')) { + return val; + } + // If it's an integer but small? "100" could be 100 USDC or 0.0001 USDC (wei). + // Given the context of the app, let's assume integers > 10000 are Raw, unless proven otherwise. + // But "100" USDC is plausible. + // Safest bet: Check if it looks like Wei. + // Let's stick to the convention: if it has a dot, it's canonical. + // If it's huge, it's Wei. + + if (val > 1e10) { // > 10,000 USDC in wei + return val / 1e6; + } + // If it's "100500000" (100.5 USDC), it has no dot. + + // NOTE: The backend seems to standardize on canonical strings now "100.0000". + + return val; }; const formatCurrency = (value: number): string => { @@ -169,7 +203,7 @@ export const MyAssetsTable = ({ const openTxHash = (hash: string, e: React.MouseEvent) => { e.stopPropagation(); - window.open(`https://sepolia.mantlescan.xyz/tx/${hash}`, '_blank'); + window.open(`https://sepolia.arbitrumscan.xyz/tx/${hash}`, '_blank'); }; @@ -346,8 +380,8 @@ export const MyAssetsTable = ({
{isLeverage && asset.leverageInfo ? (
- mETH - {asset.leverageInfo.mETHCollateralFormatted} + stARB + {asset.leverageInfo.stARBCollateralFormatted}
) : (
@@ -370,10 +404,10 @@ export const MyAssetsTable = ({
) : (
- {(formatUSDCAmount(asset.totalInvested || '0') > 0) ? - (Capital Invested) - : (Capital Received) - } + {(formatUSDCAmount(asset.totalInvested || '0') > 0) ? + (Capital Invested) + : (Capital Received) + } 0 ? 'text-red-600' : 'text-green-600' @@ -557,18 +591,18 @@ export const MyAssetsTable = ({ )} - {/* Leverage Settled: mETH Returned */} + {/* Leverage Settled: stARB Returned */} {isLeverage && asset.leverageInfo?.type === 'SETTLED' && - asset.leverageInfo.mETHReturnedFormatted && ( + asset.leverageInfo.stARBReturnedFormatted && (
-
mETH Returned
+
stARB Returned
- {asset.leverageInfo.mETHReturnedFormatted} + {asset.leverageInfo.stARBReturnedFormatted}
)} - + {/* Tokens Leveraged */} {isLeverage && diff --git a/src/components/portfolio/MyLoansTable.tsx b/src/components/portfolio/MyLoansTable.tsx index e7b0044..a68ea7d 100644 --- a/src/components/portfolio/MyLoansTable.tsx +++ b/src/components/portfolio/MyLoansTable.tsx @@ -23,7 +23,8 @@ import { solvencyContractService } from '../../lib/api/solvency-contract.service import { format } from 'date-fns'; import { RepayLoanModal } from './RepayLoanModal'; import { PageLoader } from '../ui/page-loader'; -import { portfolioService, type PortfolioAsset } from '../../lib/api/portfolio.service'; +import { portfolioService } from '../../lib/api/portfolio.service'; +import type { PortfolioAsset } from '../../types/portfolio.types'; import { marketplaceService } from '../../lib/api/marketplace.service'; import { ToastContainer } from '../ui/toast'; import { useToast } from '../../hooks/useToast'; @@ -757,7 +758,7 @@ export const MyLoansTable = ({ positions, isLoading, onRefresh }: MyLoansTablePr
Deposit TX: { e.stopPropagation(); - window.open(`https://sepolia.mantlescan.xyz/tx/${hash}`, '_blank'); + window.open(`https://sepolia.arbitrumscan.xyz/tx/${hash}`, '_blank'); }; const getStatusColor = (status: string): string => { diff --git a/src/components/ui/faq-details.tsx b/src/components/ui/faq-details.tsx index 3bed9ad..dfd93b8 100644 --- a/src/components/ui/faq-details.tsx +++ b/src/components/ui/faq-details.tsx @@ -101,11 +101,11 @@ const FaqDetails = ({ icon: , label: "Leverage", content: { - badge: "mETH Buy", - title: "Buy RWAs using leveraged mETH", + badge: "stARB Buy", + title: "Buy RWAs using leveraged stARB", description: - "Use mETH as collateral to create leveraged exposure while yield services interest automatically.", - buttonText: "Use mETH", + "Use stARB as collateral to create leveraged exposure while yield services interest automatically.", + buttonText: "Use stARB", videoSrc: "https://youtu.be/c7CdBkcVZPQ", }, }, diff --git a/src/components/ui/wavy.tsx b/src/components/ui/wavy.tsx index 0cdcf56..54c9938 100644 --- a/src/components/ui/wavy.tsx +++ b/src/components/ui/wavy.tsx @@ -49,7 +49,7 @@ export function Wavy({ return ( -
+
{mounted && ( <> diff --git a/src/hooks/useAuctionContracts.ts b/src/hooks/useAuctionContracts.ts index ff98d85..91e31e3 100644 --- a/src/hooks/useAuctionContracts.ts +++ b/src/hooks/useAuctionContracts.ts @@ -2,8 +2,12 @@ // Wagmi Hooks for Auction Contract Interactions // 100% Script-Verified from investor-bidding.sh, investor-settle.sh, admin-endauction.sh -import { useWriteContract, useWaitForTransactionReceipt, useReadContract, useAccount } from 'wagmi'; +import { useWriteContract, useWaitForTransactionReceipt, useReadContract, useAccount, usePublicClient } from 'wagmi'; import { useState, useCallback, useEffect, useRef } from 'react'; +import { useNetwork } from '../lib/network/NetworkContext'; +import freighterApi, { isConnected, signTransaction, setAllowed } from '@stellar/freighter-api'; +import * as StellarSdk from '@stellar/stellar-sdk'; +import { assetService } from '../lib/api/asset.service'; import { CONTRACTS, USDC_ABI, @@ -90,8 +94,27 @@ function parseErrorMessage(error: any): string { return 'Transaction failed. Please try again'; } +/** + * Get gas fee overrides with a buffer to prevent "max fee per gas less than block base fee" errors. + * Arbitrum Sepolia base fees fluctuate between blocks, so we add a 2x buffer. + */ +async function getGasOverrides(publicClient: ReturnType) { + if (!publicClient) return {}; + try { + const block = await publicClient.getBlock(); + const baseFee = block.baseFeePerGas ?? 0n; + return { + maxFeePerGas: baseFee * 2n, + maxPriorityFeePerGas: baseFee > 0n ? baseFee / 10n : 100000n, + }; + } catch { + return {}; + } +} + export function useSubmitBid() { const { address } = useAccount(); + const publicClient = usePublicClient(); const [status, setStatus] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); @@ -189,37 +212,66 @@ export function useSubmitBid() { // CRITICAL: Auto-submit bid after approval succeeds (investor-bidding.sh flow) useEffect(() => { if (isApproveSuccess && pendingBidParams) { - console.log('✅ USDC approval confirmed! Auto-submitting bid...'); - console.log('📦 Pending bid params:', pendingBidParams); + const autoSubmitBid = async () => { + console.log('✅ USDC approval confirmed! Auto-submitting bid...'); + console.log('📦 Pending bid params:', pendingBidParams); - // Convert parameters - const assetIdBytes32 = uuidToBytes32(pendingBidParams.assetId); - const tokenAmountWei = parseTokenAmount(pendingBidParams.tokenAmount); - const priceWei = parseUSDC(pendingBidParams.pricePerToken); + // Convert parameters + const assetIdBytes32 = uuidToBytes32(pendingBidParams.assetId); + const tokenAmountWei = parseTokenAmount(pendingBidParams.tokenAmount); + const priceWei = parseUSDC(pendingBidParams.pricePerToken); - setStatus('Submitting bid on-chain...'); - console.log('🔨 Submitting bid to contract...'); - console.log('🔨 Contract address:', CONTRACTS.PrimaryMarketplace); - console.log('🔨 Args:', [assetIdBytes32, tokenAmountWei.toString(), priceWei.toString()]); + // Pre-flight: simulate before sending to MetaMask + if (publicClient) { + try { + setStatus('Simulating bid...'); + await publicClient.simulateContract({ + address: CONTRACTS.PrimaryMarketplace as `0x${string}`, + abi: MARKETPLACE_ABI, + functionName: 'submitBid', + args: [assetIdBytes32, tokenAmountWei, priceWei], + account: address, + }); + console.log('✅ Bid simulation passed'); + } catch (simError: any) { + console.error('❌ Bid simulation failed after approval:', simError); + const errorMsg = parseErrorMessage(simError); + setError(`Bid will fail: ${errorMsg}`); + setStatus(`Bid failed: ${errorMsg}`); + setIsLoading(false); + setPendingBidParams(null); + return; + } + } - try { - submitBidTx({ - address: CONTRACTS.PrimaryMarketplace as `0x${string}`, - abi: MARKETPLACE_ABI, - functionName: 'submitBid', - args: [assetIdBytes32, tokenAmountWei, priceWei], - }); - console.log('✅ Bid submission transaction triggered'); - // Clear pending params - setPendingBidParams(null); - } catch (error: any) { - console.error('❌ Error triggering bid submission:', error); - setStatus(`Error: ${error.message}`); - setIsLoading(false); - setPendingBidParams(null); - } + setStatus('Submitting bid on-chain...'); + console.log('🔨 Submitting bid to contract...'); + console.log('🔨 Contract address:', CONTRACTS.PrimaryMarketplace); + console.log('🔨 Args:', [assetIdBytes32, tokenAmountWei.toString(), priceWei.toString()]); + + try { + const gasOverrides = await getGasOverrides(publicClient); + submitBidTx({ + address: CONTRACTS.PrimaryMarketplace as `0x${string}`, + abi: MARKETPLACE_ABI, + functionName: 'submitBid', + args: [assetIdBytes32, tokenAmountWei, priceWei], + ...gasOverrides, + }); + console.log('✅ Bid submission transaction triggered'); + // Clear pending params + setPendingBidParams(null); + } catch (error: any) { + console.error('❌ Error triggering bid submission:', error); + setStatus(`Error: ${error.message}`); + setIsLoading(false); + setPendingBidParams(null); + } + }; + + autoSubmitBid(); } - }, [isApproveSuccess, pendingBidParams, submitBidTx]); + }, [isApproveSuccess, pendingBidParams, submitBidTx, publicClient, address]); // CRITICAL: Auto-notify backend after bid transaction succeeds (investor-bidding.sh line 362) const lastBidParamsRef = useRef(null); @@ -240,15 +292,16 @@ export function useSubmitBid() { try { setStatus('In progress..'); - const tokenAmountWei = parseTokenAmount(lastBidParamsRef.current.tokenAmount); - const priceWei = parseUSDC(lastBidParamsRef.current.pricePerToken); + // Backend expects canonical 4-decimal format (e.g. "100.0000", "1.2345") + const tokenAmountCanonical = parseFloat(String(lastBidParamsRef.current.tokenAmount)).toFixed(4); + const priceCanonical = parseFloat(String(lastBidParamsRef.current.pricePerToken)).toFixed(4); // Call backend notification API await marketplaceService.notifyBidPlaced({ txHash: bidHash, assetId: lastBidParamsRef.current.assetId, - tokenAmount: tokenAmountWei.toString(), - price: priceWei.toString(), + tokenAmount: tokenAmountCanonical, + price: priceCanonical, }); console.log('✅ Backend notified successfully'); @@ -333,16 +386,35 @@ export function useSubmitBid() { Marketplace: CONTRACTS.PrimaryMarketplace, }); + // Pre-flight: simulate approval to catch reverts before MetaMask + if (publicClient) { + try { + await publicClient.simulateContract({ + address: CONTRACTS.USDC as `0x${string}`, + abi: USDC_ABI, + functionName: 'approve', + args: [CONTRACTS.PrimaryMarketplace as `0x${string}`, depositNeeded], + account: address, + }); + console.log('✅ Approval simulation passed'); + } catch (simError: any) { + console.error('❌ Approval simulation failed:', simError); + throw new Error(`USDC approval will fail: ${parseErrorMessage(simError)}`); + } + } + // Store params for auto-submit after approval setPendingBidParams(params); console.log('📦 Stored pending bid params for auto-submit after approval'); try { + const gasOverrides = await getGasOverrides(publicClient); approveUSDC({ address: CONTRACTS.USDC as `0x${string}`, abi: USDC_ABI, functionName: 'approve', args: [CONTRACTS.PrimaryMarketplace as `0x${string}`, depositNeeded], + ...gasOverrides, }); console.log('✅ USDC approval transaction triggered'); console.log('⏳ Waiting for approval confirmation... (useEffect will auto-submit bid)'); @@ -357,17 +429,39 @@ export function useSubmitBid() { } // Step 2: Submit bid to contract (investor-bidding.sh line 297) + setStatus('Simulating bid...'); + console.log('🔨 Simulating bid before submission...'); + + // Pre-flight: simulate submitBid to catch reverts before MetaMask + if (publicClient) { + try { + await publicClient.simulateContract({ + address: CONTRACTS.PrimaryMarketplace as `0x${string}`, + abi: MARKETPLACE_ABI, + functionName: 'submitBid', + args: [assetIdBytes32, tokenAmountWei, priceWei], + account: address, + }); + console.log('✅ Bid simulation passed'); + } catch (simError: any) { + console.error('❌ Bid simulation failed:', simError); + throw new Error(`Bid will fail: ${parseErrorMessage(simError)}`); + } + } + setStatus('Submitting bid on-chain...'); console.log('🔨 Submitting bid to contract...'); console.log('🔨 Contract address:', CONTRACTS.PrimaryMarketplace); console.log('🔨 Args:', [assetIdBytes32, tokenAmountWei.toString(), priceWei.toString()]); try { + const gasOverrides = await getGasOverrides(publicClient); submitBidTx({ address: CONTRACTS.PrimaryMarketplace as `0x${string}`, abi: MARKETPLACE_ABI, functionName: 'submitBid', args: [assetIdBytes32, tokenAmountWei, priceWei], + ...gasOverrides, }); console.log('✅ Bid submission transaction triggered'); } catch (submitError: any) { @@ -386,7 +480,7 @@ export function useSubmitBid() { throw error; } }, - [address, currentAllowance, approveUSDC, submitBidTx] + [address, currentAllowance, approveUSDC, submitBidTx, publicClient] ); // Reset error and status @@ -421,6 +515,8 @@ export function useSubmitBid() { */ export function useSettleBid() { const { address } = useAccount(); + const publicClient = usePublicClient(); + const { networkType } = useNetwork(); const [status, setStatus] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); @@ -482,10 +578,6 @@ export function useSettleBid() { const settleBid = useCallback( async (params: BidSettlementParams) => { - if (!address) { - throw new Error('Wallet not connected'); - } - // Clear previous errors setError(null); setIsLoading(true); @@ -496,7 +588,7 @@ export function useSettleBid() { // Set a timeout to prevent infinite loading (30 seconds) timeoutRef.current = setTimeout(() => { - if (isLoading && !isSuccess) { + if (isLoading && !isSuccess && networkType !== 'stellar') { console.error('❌ Settlement transaction timeout'); setError('Transaction timeout. Please check your wallet and try again.'); setStatus(''); @@ -506,6 +598,142 @@ export function useSettleBid() { }, 30000); try { + if (networkType === 'stellar') { + if (!(await isConnected())) { + throw new Error("Freighter wallet not found"); + } + await setAllowed(); + + const { address: stellarAddress } = await freighterApi.getAddress(); + if (!stellarAddress) throw new Error("Could not get wallet address"); + + const primaryMarketId = import.meta.env.VITE_STELLAR_PRIMARY_MARKET || "CB2N3N2TDF47NTARJ6JRUMYX434GSP2HLI5N5RTVJKOX4NL7NZYMBZIK"; + const HORIZON_URL = import.meta.env.VITE_STELLAR_HORIZON_URL || 'https://horizon-testnet.stellar.org'; + const RPC_URL = import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'; + const NETWORK_PASSPHRASE = import.meta.env.VITE_STELLAR_NETWORK_PASSPHRASE || 'Test SDF Network ; September 2015'; + + // Fetch Asset details to get assetCode + setStatus('Fetching asset details...'); + const assetDetails: any = await assetService.getAssetById(params.assetId); + if (!assetDetails || !assetDetails.token || !assetDetails.token.address) { + throw new Error(`Asset not found or no token deployed for ${params.assetId}`); + } + const assetCode = assetDetails.token.address.split(':')[0]; + + setStatus('Simulating settlement...'); + const horizonServer = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await horizonServer.loadAccount(stellarAddress); + const contract = new StellarSdk.Contract(primaryMarketId); + + const txBuilder = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }).addOperation( + contract.call( + 'settle_bid', + new StellarSdk.Address(stellarAddress).toScVal(), // caller + StellarSdk.nativeToScVal(assetCode, { type: 'string' }), // asset_code + StellarSdk.nativeToScVal(BigInt(params.bidIndex), { type: 'u64' }) // bid_index + ) + ); + + const tx = txBuilder.setTimeout(30).build(); + const rpcServer = new StellarSdk.rpc.Server(RPC_URL); + const simulation = await rpcServer.simulateTransaction(tx); + + if (!StellarSdk.rpc.Api.isSimulationSuccess(simulation)) { + throw new Error(`Simulation failed: ${(simulation as any).error || 'Unknown error'}`); + } + + setStatus('Awaiting signature...'); + const assembled = StellarSdk.rpc.assembleTransaction(tx, simulation).build(); + const signed = await signTransaction(assembled.toXDR(), { networkPassphrase: NETWORK_PASSPHRASE }); + if (!signed) throw new Error("User denied signature"); + + setStatus('Submitting to Stellar network...'); + const signedTx = new StellarSdk.Transaction(signed.signedTxXdr, NETWORK_PASSPHRASE); + const response = await rpcServer.sendTransaction(signedTx); + + if ((response as any).status !== "PENDING" && (response as any).status !== "SUCCESS") { + throw new Error(`Transaction failed: ${JSON.stringify(response)}`); + } + + // Wait for network confirmation + let txResult; + let attempts = 0; + do { + await new Promise(r => setTimeout(r, 3000)); + txResult = await rpcServer.getTransaction(response.hash); + attempts++; + if (attempts > 20) throw new Error('Confirmation timeout after 60 seconds'); + } while ((txResult as any).status === 'NOT_FOUND' || (txResult as any).status === 'PENDING'); + + if ((txResult as any).status !== 'SUCCESS') { + throw new Error('Transaction failed: ' + (txResult as any).status); + } + + console.log('✅ Stellar Settlement confirmed! Notifying backend...'); + setStatus('Notifying backend...'); + let tokensReceived = '0'; + let cost = '0'; + let refund = '0'; + + try { + if ((txResult as any).resultMetaXdr) { + const meta = (txResult as any).resultMetaXdr; + const v3 = meta.v3 ? meta.v3() : null; + if (v3 && v3.sorobanMeta && v3.sorobanMeta()) { + const sorobanMeta = v3.sorobanMeta(); + const events = sorobanMeta.events ? sorobanMeta.events() : []; + for (const event of events) { + const topics = event.body().v0 ? event.body().v0().topics() : []; + const hasSettled = topics.some((t: any) => { + try { return StellarSdk.scValToNative(t) === 'BidSettled'; } catch { return false; } + }); + if (hasSettled) { + const data = StellarSdk.scValToNative(event.body().v0().data()); + if (Array.isArray(data) && data.length >= 5) { + tokensReceived = data[2].toString(); + cost = data[3].toString(); + refund = data[4].toString(); + } + } + } + } + } + } catch (evtErr) { + console.warn('Event decode skipped:', evtErr); + } + + await marketplaceService.notifyBidSettled({ + assetId: params.assetId, + bidIndex: params.bidIndex, + txHash: response.hash, + blockNumber: (txResult as any).ledger ? (txResult as any).ledger.toString() : '0', + network: 'stellar', + ledger: (txResult as any).ledger ? (txResult as any).ledger.toString() : '0', + tokensReceived, + cost, + refund + }); + + notificationSentRef.current = response.hash; + setStatus('Bid settled successfully! 🎉'); + setIsLoading(false); + lastSettleParamsRef.current = null; + if (timeoutRef.current) clearTimeout(timeoutRef.current); + + setTimeout(() => { + window.location.reload(); + }, 1000); + + return; + } + + if (!address) { + throw new Error('Wallet not connected'); + } + // Convert parameters const assetIdBytes32 = uuidToBytes32(params.assetId); @@ -516,11 +744,13 @@ export function useSettleBid() { }); // Call settleBid on contract (investor-settle.sh line 192) + const gasOverrides = await getGasOverrides(publicClient); settleBidTx({ address: CONTRACTS.PrimaryMarketplace as `0x${string}`, abi: MARKETPLACE_ABI, functionName: 'settleBid', args: [assetIdBytes32, BigInt(params.bidIndex)], + ...gasOverrides, }); } catch (error: any) { const errorMsg = parseErrorMessage(error); @@ -539,7 +769,7 @@ export function useSettleBid() { throw error; } }, - [address, settleBidTx, isLoading, isSuccess] + [address, settleBidTx, isLoading, isSuccess, networkType] ); // CRITICAL: Auto-notify backend after settlement succeeds (investor-settle.sh line 264) @@ -561,12 +791,12 @@ export function useSettleBid() { setStatus('Notifying backend...'); console.log('✅ Settlement confirmed! Notifying backend...'); - await marketplaceService.notifyBidSettled({ + await marketplaceService.notifyBidSettled({ assetId: lastSettleParamsRef.current.assetId, bidIndex: lastSettleParamsRef.current.bidIndex, txHash, blockNumber: receipt.blockNumber.toString(), - }); + }); notificationSentRef.current = txHash; setStatus('Bid settled successfully! 🎉'); @@ -633,6 +863,7 @@ export function useSettleBid() { */ export function useEndAuction() { const { address } = useAccount(); + const publicClient = usePublicClient(); const [status, setStatus] = useState(''); const [isLoading, setIsLoading] = useState(false); @@ -656,6 +887,23 @@ export function useEndAuction() { setStatus('Ending auction on-chain...'); try { + // Check if Stellar (address not 0x) + if (!address.startsWith('0x')) { + // Stellar Flow + // We need asset details to get code/issuer... Params only has assetId. + // This hook might need refactoring to support Stellar fully if used outside Admin Listings page. + // For now, let's assume this hook is primarily EVM-focused or we need to fetch asset. + // Given the Listings page implements it manually, maybe we leave this as EVM-only or add a TODO. + // But for completeness, let's add a basic check or error. + console.log("Stellar end auction should be handled via stellarService directly or updated hook."); + + // If we want to support it here, we'd need to fetch asset details first. + // For now, let's throw if trying to use this hook on Stellar without proper implementation + // OR we can import stellarService and try to do it if we had the code/issuer. + throw new Error("Stellar End Auction via this hook is not yet fully implemented. Please use the Admin Listings page."); + } + + // EVM Flow // Convert parameters const assetIdBytes32 = uuidToBytes32(params.assetId); const clearingPriceWei = parseUSDC(params.clearingPrice); @@ -668,11 +916,13 @@ export function useEndAuction() { }); // Call endAuction on contract (admin-endauction.sh line 205) + const gasOverrides = await getGasOverrides(publicClient); endAuctionTx({ address: CONTRACTS.PrimaryMarketplace as `0x${string}`, abi: MARKETPLACE_ABI, functionName: 'endAuction', args: [assetIdBytes32, clearingPriceWei], + ...gasOverrides, }); } catch (error: any) { console.error('Error ending auction:', error); diff --git a/src/hooks/useAuthActions.ts b/src/hooks/useAuthActions.ts index 81416a1..5f807b2 100644 --- a/src/hooks/useAuthActions.ts +++ b/src/hooks/useAuthActions.ts @@ -1,166 +1,6 @@ -import { useNavigate } from "react-router-dom"; -import { useAccount, useSignMessage } from 'wagmi'; -import { useConnectModal } from '@rainbow-me/rainbowkit'; -import { authService } from '../lib/api/auth.service'; -import { useAuthStore } from '../stores/auth.store'; -import { useState, useEffect } from 'react'; -import { issuerService } from "../lib/api/issuer.service"; +import { useAuthStrategy } from "../lib/auth/AuthStrategyContext"; export const useAuthActions = () => { - const navigate = useNavigate(); - const { openConnectModal } = useConnectModal(); - const { address, isConnected } = useAccount(); - const { signMessageAsync } = useSignMessage(); - const { setUser, setLoading, setAuthenticatedWallet } = useAuthStore(); - const [error, setError] = useState(null); - const [isAuthenticating, setIsAuthenticating] = useState(false); - const [pendingAction, setPendingAction] = useState<'investor' | 'issuer' | null>(null); - - useEffect(() => { - if (isConnected && address && pendingAction) { - if (pendingAction === 'investor') { - authenticateInvestor(); - } else if (pendingAction === 'issuer') { - authenticateIssuer(); - } - setPendingAction(null); - } - }, [isConnected, address, pendingAction]); - - const authenticateInvestor = async () => { - if (!isConnected || !address) return; - - try { - setIsAuthenticating(true); - setLoading(true); - setError(null); - - const challenge = await authService.getChallenge(address); - const signature = await signMessageAsync({ - message: challenge.message, - }); - - const loginResponse = await authService.login({ - walletAddress: address, - message: challenge.message, - signature: signature, - }); - - setUser(loginResponse.user); - setAuthenticatedWallet(address); - - if (loginResponse.user.role === 'ORIGINATOR') { - navigate('/issuer/dashboard'); - } else if (loginResponse.user.role === 'INVESTOR') { - if (loginResponse.user.kyc === true) { - navigate('/portfolio'); - } else { - navigate('/auth', { state: { showKycForm: true } }); - } - } else if (loginResponse.user.role === 'ADMIN') { - navigate('/admin'); - } else { - navigate('/auth', { state: { showKycForm: true } }); - } - } catch (err: any) { - console.error('Error during authentication:', err); - setError(err.message || 'Authentication failed'); - } finally { - setIsAuthenticating(false); - setLoading(false); - } - }; - - const authenticateIssuer = async () => { - if (!isConnected || !address) return; - - try { - setIsAuthenticating(true); - setLoading(true); - setError(null); - - const challenge = await issuerService.getChallenge(address); - const signature = await signMessageAsync({ - message: challenge.message, - }); - - const loginResponse = await issuerService.login({ - walletAddress: address, - message: challenge.message, - signature: signature, - }); - - setUser(loginResponse.user); - setAuthenticatedWallet(address); - - if (loginResponse.user.role === 'ORIGINATOR') { - if (loginResponse.user.kyc === true) { - navigate('/issuer/dashboard'); - } else { - navigate('/auth', { state: { showKycForm: true } }); - } - } else if (loginResponse.user.role === 'INVESTOR') { - navigate('/portfolio'); - } else if (loginResponse.user.role === 'ADMIN') { - navigate('/admin'); - } else { - navigate('/auth', { state: { showKycForm: true } }); - } - } catch (err: any) { - console.error('Error during authentication:', err); - setError(err.message || 'Authentication failed'); - } finally { - setIsAuthenticating(false); - setLoading(false); - } - }; - - const handleGetStarted = async () => { - try { - setError(null); - - if (!isConnected || !address) { - setPendingAction('investor'); - if (openConnectModal) { - openConnectModal(); - } else { - setError("Wallet connection not available"); - } - return; - } - - await authenticateInvestor(); - } catch (err: any) { - console.error('Error during get started:', err); - setError(err.message || 'Operation failed'); - } - }; - - const handleIssuerGetStarted = async () => { - try { - setError(null); - - if (!isConnected || !address) { - setPendingAction('issuer'); - if (openConnectModal) { - openConnectModal(); - } else { - setError("Wallet connection not available"); - } - return; - } - - await authenticateIssuer(); - } catch (err: any) { - console.error('Error during issuer get started:', err); - setError(err.message || 'Operation failed'); - } - }; - - return { - error, - isAuthenticating, - handleGetStarted, - handleIssuerGetStarted, - }; + return useAuthStrategy(); }; + diff --git a/src/hooks/useWalletIntegrityMonitor.ts b/src/hooks/useWalletIntegrityMonitor.ts index ada6790..daf8c9c 100644 --- a/src/hooks/useWalletIntegrityMonitor.ts +++ b/src/hooks/useWalletIntegrityMonitor.ts @@ -21,6 +21,13 @@ export const useWalletIntegrityMonitor = () => { const isLoggingOut = useRef(false); useEffect(() => { + // Verify we are on EVM network before enforcing EVM integrity + // This prevents false positives when switching to Stellar while having MetaMask connected + const segment = window.location.pathname.split('/')[1]; + if (segment === 'stellar') { + return; + } + // Skip if not authenticated or already logging out if (!isAuthenticated || !authenticatedWalletAddress || isLoggingOut.current) { return; diff --git a/src/lib/api/admin.service.ts b/src/lib/api/admin.service.ts index 5ca56d7..d55a27b 100644 --- a/src/lib/api/admin.service.ts +++ b/src/lib/api/admin.service.ts @@ -9,12 +9,15 @@ import type { AdminAsset, AdminStats, AdminActivity } from '../../stores/admin.s import type { AuctionClearingPriceInfo } from '../../types/admin.types'; import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - class AdminService extends BaseService { constructor() { - super(API_BASE_URL); + super(); + } + + private getNetwork(): string { + const segment = window.location.pathname.split('/')[1]; + return ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; } async getChallenge(walletAddress: string): Promise { @@ -54,8 +57,9 @@ class AdminService extends BaseService { const data: LoginResponse = await response.json(); if (data.tokens) { - localStorage.setItem('access_token', data.tokens.access); - localStorage.setItem('refresh_token', data.tokens.refresh); + const network = this.getNetwork(); + localStorage.setItem(`${network}_access_token`, data.tokens.access); + localStorage.setItem(`${network}_refresh_token`, data.tokens.refresh); } return data; diff --git a/src/lib/api/asset.service.ts b/src/lib/api/asset.service.ts index e9adf5f..9141144 100644 --- a/src/lib/api/asset.service.ts +++ b/src/lib/api/asset.service.ts @@ -2,8 +2,6 @@ import type { IssuerAsset } from '@/types/issuer.types'; import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - /** * Response type for paginated assets */ @@ -29,7 +27,7 @@ export interface GetAssetsParams { class AssetService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** @@ -204,15 +202,16 @@ class AssetService extends BaseService { try { console.log('⬆️ Starting asset upload...'); + // Get network-aware auth headers and remove Content-Type so browser sets boundary + const authHeaders = this.getAuthHeaders(); + const { 'Content-Type': _, ...headers } = authHeaders as any; + // Use fetchWithTimeout with 5-minute timeout for file uploads const response = await this.fetchWithTimeout( `${this.baseURL}/assets/upload`, { method: 'POST', - headers: { - 'Authorization': `Bearer ${localStorage.getItem('access_token')}`, - // Don't set Content-Type - browser will set it with boundary for FormData - }, + headers, body: formData, }, 300000 // 5 minutes diff --git a/src/lib/api/auth.service.ts b/src/lib/api/auth.service.ts index a670682..bea11a7 100644 --- a/src/lib/api/auth.service.ts +++ b/src/lib/api/auth.service.ts @@ -9,9 +9,6 @@ import type { import { UserRole } from '../../types/issuer.types'; import BaseService from './base.service'; - -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - // ============================================================================ // MOCK MODE CONFIGURATION // ============================================================================ @@ -21,61 +18,29 @@ const USE_MOCK_MODE = import.meta.env.VITE_USE_MOCK_AUTH === 'false' || false; /** * Auth Service - Handles all authentication-related API calls - * - * MOCK MODE: Currently using simulated backend responses for development - * - * TO SWITCH TO REAL BACKEND: - * 1. Set USE_MOCK_MODE = false (or set VITE_USE_MOCK_AUTH=false in .env) - * 2. Ensure backend is running at API_BASE_URL - * 3. No other code changes needed - all endpoints are already configured */ class AuthService extends BaseService { constructor() { - super(API_BASE_URL); + super(); + } + + private getNetwork(): string { + const segment = window.location.pathname.split('/')[1]; + return ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; } - /** - * Check if wallet exists and KYC status - * - * ENDPOINT: GET /users/exists?walletAddress=0xUSER - * - * BACKEND IMPLEMENTATION REQUIREMENTS: - * - Query parameter: walletAddress (string, required) - * - No authentication required (public endpoint) - * - * EXPECTED BACKEND RESPONSE: - * { - * exists: boolean, // true if wallet is registered in the system - * kyc: boolean // true if user has completed KYC verification - * } - * - * BACKEND LOGIC: - * 1. Check if wallet address exists in users table - * 2. If exists, check if user.kycStatus === 'APPROVED' - * 3. Return { exists: true/false, kyc: true/false } - * - * ERROR CASES: - * - 400: Invalid wallet address format - * - 500: Database error - */ async checkWalletStatus(walletAddress: string): Promise { // MOCK MODE: Simulate backend response - if (true) { + if (false) { console.log('🔧 MOCK MODE: Simulating wallet status check'); // Simulate network delay await new Promise(resolve => setTimeout(resolve, 800)); - // Mock logic: Simulate different scenarios based on wallet address - // In real backend, this would query the database const mockResponse: WalletStatusResponse = { - // Change these values to test different scenarios: - // - exists: false, kyc: false -> New user (shows email + document upload) - // - exists: true, kyc: true -> Existing user (shows login button) - // - exists: true, kyc: false -> Registered but not verified (shows login, KYC required after) - exists: false, // Set to true to test existing user flow - kyc: false, // Set to true to test returning user flow + exists: false, + kyc: false, }; return mockResponse; @@ -102,36 +67,6 @@ class AuthService extends BaseService { } } - /** - * Get authentication challenge for wallet signature - * - * ENDPOINT: GET /auth/challenge?walletAddress=0xUSER - * - * BACKEND IMPLEMENTATION REQUIREMENTS: - * - Query parameter: walletAddress (string, required) - * - No authentication required - * - * EXPECTED BACKEND RESPONSE: - * { - * message: string, // The message to be signed by the wallet - * nonce: string // Unique random value to prevent replay attacks - * } - * - * BACKEND LOGIC: - * 1. Generate a unique nonce (crypto.randomBytes(32).toString('hex')) - * 2. Store nonce with walletAddress in temporary storage (Redis with 5min TTL) - * 3. Create challenge message: "Sign this message to authenticate with TOA Platform\n\nWallet: {walletAddress}\nNonce: {nonce}\nTimestamp: {timestamp}" - * 4. Return { message, nonce } - * - * SECURITY NOTES: - * - Nonce should be cryptographically random - * - Nonce should expire after 5 minutes - * - Message should include wallet address to prevent signature reuse - * - * ERROR CASES: - * - 400: Invalid wallet address - * - 500: Failed to generate nonce - */ async getChallenge(walletAddress: string): Promise { // MOCK MODE: Generate mock challenge if (USE_MOCK_MODE) { @@ -159,8 +94,6 @@ class AuthService extends BaseService { { method: 'GET', headers: this.getHeaders(), - credentials: 'include', - } ); @@ -175,83 +108,18 @@ class AuthService extends BaseService { } } - /** - * Login with wallet signature - * - * ENDPOINT: POST /auth/login - * - * REQUEST BODY: - * { - * walletAddress: string, // User's wallet address - * message: string, // The challenge message that was signed - * signature: string, // Wallet signature of the message - * onboardingToken?: string // Optional: Issuer onboarding token from email link - * } - * - * BACKEND IMPLEMENTATION REQUIREMENTS: - * 1. Verify the signature matches the wallet address - * 2. Verify the nonce from the message is valid and not expired - * 3. Check if user exists in database - * 4. If onboardingToken is present: - * - Validate the token and get pending issuer data - * - Link wallet address to the pending issuer record - * - Set user role to 'ISSUER' - * - Mark issuer status as 'APPROVED' - * 5. Generate JWT access token (15min expiry) and refresh token (7 days) - * 6. Return user data and tokens - * - * EXPECTED BACKEND RESPONSE: - * { - * user: { - * id: string, - * walletAddress: string, - * role: 'INVESTOR' | 'ISSUER' | 'ADMIN', - * kyc: boolean // KYC completion status - * }, - * tokens: { - * access: string, // JWT access token - * refresh: string // JWT refresh token - * } - * } - * - * BACKEND SIGNATURE VERIFICATION: - * - Use ethers.js or web3.js to verify signature - * - Example: ethers.utils.verifyMessage(message, signature) === walletAddress - * - * BACKEND JWT GENERATION: - * - Access token payload: { userId, walletAddress, role } - * - Access token expiry: 15 minutes - * - Refresh token expiry: 7 days - * - Use environment variable for JWT_SECRET - * - * ERROR CASES: - * - 400: Invalid signature or missing fields - * - 401: Signature verification failed - * - 404: User not found (if wallet not registered) - * - 500: Database or token generation error - * - * IMPORTANT NOTES: - * 🚫 Do NOT send KYC data in this endpoint - * 🚫 Do NOT change payload structure - * ✅ KYC submission is handled separately in /kyc/submit endpoint - */ async login(payload: LoginPayload): Promise { + const network = this.getNetwork(); + // MOCK MODE: Simulate successful login if (USE_MOCK_MODE) { console.log('🔧 MOCK MODE: Simulating login with wallet signature'); - console.log('Payload:', { ...payload, signature: payload.signature.substring(0, 20) + '...' }); - - // Check if this is issuer onboarding + const isIssuerOnboarding = !!payload.onboardingToken; - if (isIssuerOnboarding) { - console.log('🔧 ISSUER ONBOARDING: Token detected -', payload.onboardingToken); - } - // Simulate network delay await new Promise(resolve => setTimeout(resolve, 1000)); - // Mock tokens (in real backend, generate JWTs) const mockAccessToken = 'mock_access_token_' + Math.random().toString(36); const mockRefreshToken = 'mock_refresh_token_' + Math.random().toString(36); @@ -259,8 +127,8 @@ class AuthService extends BaseService { user: { id: 'mock_user_id_' + Math.random().toString(36).substring(2, 9), walletAddress: payload.walletAddress, - role: isIssuerOnboarding ? UserRole.ORIGINATOR : UserRole.INVESTOR, // Set role based on onboarding token - kyc: false, // Set to true to skip KYC flow in testing + role: isIssuerOnboarding ? UserRole.ORIGINATOR : UserRole.INVESTOR, + kyc: false, }, tokens: { access: mockAccessToken, @@ -268,9 +136,9 @@ class AuthService extends BaseService { }, }; - // Store tokens in localStorage (same as real flow) - localStorage.setItem('access_token', mockResponse.tokens.access); - localStorage.setItem('refresh_token', mockResponse.tokens.refresh); + // Store tokens in localStorage (network-scoped) + localStorage.setItem(`${network}_access_token`, mockResponse.tokens.access); + localStorage.setItem(`${network}_refresh_token`, mockResponse.tokens.refresh); return mockResponse; } @@ -290,10 +158,10 @@ class AuthService extends BaseService { const data: LoginResponse = await response.json(); - // Store tokens in localStorage + // Store tokens in localStorage (network-scoped) if (data.tokens) { - localStorage.setItem('access_token', data.tokens.access); - localStorage.setItem('refresh_token', data.tokens.refresh); + localStorage.setItem(`${network}_access_token`, data.tokens.access); + localStorage.setItem(`${network}_refresh_token`, data.tokens.refresh); } return data; @@ -303,61 +171,26 @@ class AuthService extends BaseService { } } - /** - * Logout - Clear tokens - * - * OPTIONAL BACKEND ENDPOINT: POST /auth/logout - * - Send refresh token to invalidate it (add to blacklist) - * - Not required for basic functionality (frontend token removal is sufficient) - */ logout(): void { - localStorage.removeItem('access_token'); - localStorage.removeItem('refresh_token'); + const network = this.getNetwork(); + localStorage.removeItem(`${network}_access_token`); + localStorage.removeItem(`${network}_refresh_token`); } - /** - * Get stored access token - */ getAccessToken(): string | null { - return localStorage.getItem('access_token'); + const network = this.getNetwork(); + return localStorage.getItem(`${network}_access_token`) || localStorage.getItem('access_token'); } - /** - * Get stored refresh token - */ getRefreshToken(): string | null { - return localStorage.getItem('refresh_token'); + const network = this.getNetwork(); + return localStorage.getItem(`${network}_refresh_token`) || localStorage.getItem('refresh_token'); } - /** - * Check if user is authenticated - */ isAuthenticated(): boolean { return !!this.getAccessToken(); } - /** - * Get current authenticated user details - * - * ENDPOINT: GET /auth/me - * - * BACKEND IMPLEMENTATION REQUIREMENTS: - * - Header: Authorization: Bearer {access_token} - * - Validate JWT token - * - Return user details from token payload - * - * EXPECTED BACKEND RESPONSE: - * { - * id: string, - * walletAddress: string, - * role: 'INVESTOR' | 'ORIGINATOR' | 'ADMIN', - * kyc: boolean - * } - * - * ERROR CASES: - * - 401: Invalid or expired token - * - 403: Token valid but user not authorized - */ async getCurrentUser(): Promise<{ id: string; walletAddress: string; role: string; kyc: boolean }> { const token = this.getAccessToken(); @@ -376,7 +209,6 @@ class AuthService extends BaseService { if (!response.ok) { if (response.status === 401) { - // Token expired or invalid - clear tokens this.logout(); throw new Error('Session expired. Please login again.'); } diff --git a/src/lib/api/base.service.ts b/src/lib/api/base.service.ts index a889534..030a601 100644 --- a/src/lib/api/base.service.ts +++ b/src/lib/api/base.service.ts @@ -12,10 +12,21 @@ export interface TimeoutController { } class BaseService { - protected baseURL: string; + private _baseURL: string; - constructor(baseURL: string) { - this.baseURL = baseURL; + constructor(baseURL?: string) { + this._baseURL = baseURL ?? ''; + } + + protected get baseURL(): string { + if (this._baseURL) return this._baseURL; + + // Dynamic resolution from current route + const segment = window.location.pathname.split('/')[1]; + if (segment === 'stellar') { + return import.meta.env.VITE_STELLAR_API_URL ?? 'http://localhost:3001'; + } + return import.meta.env.VITE_ARBITRUM_API_URL ?? import.meta.env.VITE_API_URL ?? 'http://localhost:3000'; } protected getHeaders = () => { @@ -27,16 +38,27 @@ class BaseService { return headers; } - protected getAuthHeaders = () => { - const token = localStorage.getItem('access_token'); - if (!token) { - // This will trigger the error handler which redirects to /verify-challenge - handleAPIError(new Error('Not a verified user, please solve the challenge')); + protected getAuthHeaders = (required: boolean = true) => { + const segment = window.location.pathname.split('/')[1]; + const network = ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; + + const token = localStorage.getItem(`${network}_access_token`) + ?? localStorage.getItem('access_token'); // legacy fallback + + // Debug log to trace auth issues + // console.log(`[BaseService] getAuthHeaders: network=${network}, required=${required}, hasToken=${!!token}`); + + if (!token && required) { + console.warn(`[BaseService] Missing token for required auth. Network: ${network}`); + handleAPIError(new Error('Not a verified user')); } - return { + + const headers = { ...this.getHeaders(), - 'Authorization': `Bearer ${token}`, + ...(token ? { 'Authorization': `Bearer ${token}` } : {}), }; + + return headers; } /** diff --git a/src/lib/api/changelog.service.ts b/src/lib/api/changelog.service.ts index 33bd9fd..6712f8a 100644 --- a/src/lib/api/changelog.service.ts +++ b/src/lib/api/changelog.service.ts @@ -13,20 +13,9 @@ import type { SyncMetricsResponse, } from '../../types/changelog.types'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:3000'; - -/** - * Changelog Service - Handles GitHub activities and changelog API calls - * - * Endpoints: - * - POST /changelog/sync - Trigger manual sync - * - GET /changelog/commits - Get commit history - * - GET /changelog/pull-requests - Get pull requests - * - GET /changelog/timeline - Get mixed timeline - */ class ChangelogService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** diff --git a/src/lib/api/contract.service.ts b/src/lib/api/contract.service.ts index 7bc0817..0e9a974 100644 --- a/src/lib/api/contract.service.ts +++ b/src/lib/api/contract.service.ts @@ -69,6 +69,20 @@ export interface PurchaseResult { } class ContractService { + /** + * Get gas fee overrides with a buffer to prevent "max fee per gas less than block base fee" errors. + * Arbitrum Sepolia base fees can fluctuate between blocks, so we add a 50% buffer. + */ + private async getGasOverrides(provider: ethers.BrowserProvider): Promise<{ maxFeePerGas: bigint; maxPriorityFeePerGas: bigint }> { + const feeData = await provider.getFeeData(); + const baseFee = feeData.maxFeePerGas ?? 0n; + const priorityFee = feeData.maxPriorityFeePerGas ?? 0n; + return { + maxFeePerGas: baseFee * 3n / 2n, // 1.5x buffer + maxPriorityFeePerGas: priorityFee > 0n ? priorityFee : 100000n, + }; + } + /** * Convert UUID asset ID to bytes32 format required by smart contract * Example: "4d02feaa-7b32-4c35-980f-5710b73a982a" -> "0x4d02feaa7b324c35980f5710b73a982a00000000000000000000000000000000" @@ -128,9 +142,9 @@ class ContractService { const provider = new ethers.BrowserProvider(window.ethereum); const network = await provider.getNetwork(); - // Check if we're on Mantle Sepolia (chainId: 5003) - if (network.chainId !== 5003n) { - console.warn(`Wrong network: Connected to chainId ${network.chainId}, expected 5003 (Mantle Sepolia)`); + // Check if we're on Arbitrum Sepolia (chainId: 421614) + if (network.chainId !== 421614n) { + console.warn(`Wrong network: Connected to chainId ${network.chainId}, expected 421614 (Arbitrum Sepolia)`); return '0'; } @@ -239,7 +253,8 @@ class ContractService { if (allowance < payment) { // Approve USDC - const tx = await usdcContract.approve(PRIMARY_MARKETPLACE_ADDRESS, payment); + const gasOverrides = await this.getGasOverrides(provider); + const tx = await usdcContract.approve(PRIMARY_MARKETPLACE_ADDRESS, payment, gasOverrides); console.log('Approve TX:', tx.hash); const receipt = await this.waitForTransaction(tx.hash, provider); @@ -614,7 +629,8 @@ class ContractService { // Buy tokens console.log('\n✅ Step 2: Buying tokens...'); - const tx = await marketplaceContract.buyTokens(assetIdBytes32, tokenAmountWei); + const gasOverrides = await this.getGasOverrides(provider); + const tx = await marketplaceContract.buyTokens(assetIdBytes32, tokenAmountWei, gasOverrides); console.log('Buy TX:', tx.hash); console.log('⏳ Waiting for confirmation...'); @@ -623,7 +639,7 @@ class ContractService { console.log(`✅ Confirmed in block ${receipt.blockNumber}`); console.log('\n✅ Purchase Complete!'); console.log('━'.repeat(50)); - console.log(`Explorer: https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log(`Explorer: https://sepolia.arbiscan.io/tx/${tx.hash}`); return { success: true, @@ -927,7 +943,8 @@ class ContractService { // Approve YieldVault console.log('⏳ Approving YieldVault to spend tokens...'); - const tx = await tokenContract.approve(YIELD_VAULT_ADDRESS, burnAmount); + const gasOverrides = await this.getGasOverrides(provider); + const tx = await tokenContract.approve(YIELD_VAULT_ADDRESS, burnAmount, gasOverrides); console.log('TX Hash:', tx.hash); console.log('⏳ Waiting for confirmation...'); @@ -1006,7 +1023,8 @@ class ContractService { // Call claimYield(tokenAddress, tokenAmount) console.log('⏳ Submitting claimYield() transaction...'); - const tx = await yieldVaultContract.claimYield(tokenAddress, burnAmountWei); + const gasOverrides = await this.getGasOverrides(provider); + const tx = await yieldVaultContract.claimYield(tokenAddress, burnAmountWei, gasOverrides); console.log('TX Hash:', tx.hash); console.log('⏳ Waiting for confirmation...'); @@ -1040,7 +1058,7 @@ class ContractService { console.log('✅ Yield claimed successfully!'); console.log('TX Hash:', tx.hash); console.log('Block:', receipt.blockNumber); - console.log('Explorer:', `https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log('Explorer:', `https://sepolia.arbiscan.io/tx/${tx.hash}`); console.log(); return { @@ -1070,7 +1088,7 @@ class ContractService { * - Only approves if allowance is 0 * - Uses MaxUint256 for unlimited approval * - * Contract Addresses (Mantle Testnet): + * Contract Addresses (arbitrum Testnet): * - PrimaryMarketplace: 0x034Ca27695555CEeB44CB62d59c4E3f95F4Ef504 * * @param tokenAddress - The RWA token address to approve @@ -1088,7 +1106,7 @@ class ContractService { // This is done to match the behavior of the `approve-marketplace.js` script. // In a production environment, this should be handled by a secure backend service. const custodyPrivateKey = '0x1d12932a5c3a7aa8d4f50662caa679bb2e53321e11bc5df2af9298e2ace59305'; - const provider = new ethers.JsonRpcProvider('https://rpc.sepolia.mantle.xyz'); + const provider = new ethers.JsonRpcProvider('https://sepolia-rollup.arbitrum.io/rpc'); const custodyWallet = new ethers.Wallet(custodyPrivateKey, provider); const RWA_TOKEN_ABI = [ @@ -1140,7 +1158,7 @@ class ContractService { const receipt = await this.waitForTransaction(tx.hash, provider); console.log(`✅ Confirmed in block ${receipt.blockNumber}`); console.log('✅ Marketplace approved!'); - console.log('Explorer:', `https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log('Explorer:', `https://sepolia.arbiscan.io/tx/${tx.hash}`); console.log(); console.log('✅ Marketplace can now transfer tokens to buyers!'); @@ -1181,7 +1199,8 @@ class ContractService { console.log('Clearing Price (wei):', clearingPriceWei.toString()); console.log('Submitting endAuction transaction...'); - const tx = await marketplaceContract.endAuction(assetIdBytes32, clearingPriceWei); + const gasOverrides = await this.getGasOverrides(provider); + const tx = await marketplaceContract.endAuction(assetIdBytes32, clearingPriceWei, gasOverrides); console.log('TX Hash:', tx.hash); console.log('Waiting for confirmation...'); diff --git a/src/lib/api/faucet.service.ts b/src/lib/api/faucet.service.ts index 8add7ee..732e094 100644 --- a/src/lib/api/faucet.service.ts +++ b/src/lib/api/faucet.service.ts @@ -1,9 +1,7 @@ // src/lib/api/faucet.service.ts import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:3000'; - -interface FaucetResponse { +export interface FaucetResponse { success: boolean; message: string; transactionHash: string; @@ -14,7 +12,7 @@ interface FaucetResponse { class FaucetService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } async getUsdcFromFaucet(receiverAddress: string): Promise { @@ -39,9 +37,9 @@ class FaucetService extends BaseService { } } - async getMethFromFaucet(receiverAddress: string): Promise { + async getstARBFromFaucet(receiverAddress: string): Promise { try { - const response = await fetch(`${this.baseURL}/faucet/meth`, { + const response = await fetch(`${this.baseURL}/faucet/stARB`, { method: 'POST', headers: this.getHeaders(), // Use non-authed headers body: JSON.stringify({ receiverAddress }), @@ -50,14 +48,14 @@ class FaucetService extends BaseService { const data = await response.json(); if (!response.ok || !data.success) { - throw new Error(data.message || 'Failed to get mETH from faucet.'); + throw new Error(data.message || 'Failed to get stARB from faucet.'); } return data; } catch (error: unknown) { - console.error('Error getting mETH from faucet:', error); + console.error('Error getting stARB from faucet:', error); const e = error as Error; - throw new Error(`Failed to get mETH from faucet: ${e.message}`); + throw new Error(`Failed to get stARB from faucet: ${e.message}`); } } } diff --git a/src/lib/api/issuer.service.ts b/src/lib/api/issuer.service.ts index 7353447..b536f86 100644 --- a/src/lib/api/issuer.service.ts +++ b/src/lib/api/issuer.service.ts @@ -9,8 +9,6 @@ import { } from '../../types/issuer.types'; import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - // ============================================================================ // MOCK MODE CONFIGURATION // ============================================================================ @@ -18,20 +16,15 @@ const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok // Set to false when backend is ready const USE_MOCK_MODE = import.meta.env.VITE_USE_MOCK_AUTH === 'false' || false; -/** - * Issuer Service - Handles issuer onboarding-related API calls - * - * MOCK MODE: Currently using simulated backend responses for development - * - * TO SWITCH TO REAL BACKEND: - * 1. Set USE_MOCK_MODE = false (or set VITE_USE_MOCK_AUTH=false in .env) - * 2. Ensure backend is running at API_BASE_URL - * 3. No other code changes needed - all endpoints are already configured - */ class IssuerService extends BaseService { constructor() { - super(API_BASE_URL); + super(); + } + + private getNetwork(): string { + const segment = window.location.pathname.split('/')[1]; + return ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; } // Challenge @@ -111,35 +104,69 @@ class IssuerService extends BaseService { }, }; - // Store tokens in localStorage (same as real flow) - localStorage.setItem('access_token', mockResponse.tokens.access); - localStorage.setItem('refresh_token', mockResponse.tokens.refresh); + // Store tokens in localStorage (network-scoped) - return mockResponse; - } + const network = this.getNetwork(); - // REAL MODE: Call backend login - try { - const response = await fetch(`${this.baseURL}/auth/login`, { - method: 'POST', - headers: this.getHeaders(), - body: JSON.stringify(payload), - }); + localStorage.setItem(`${network}_access_token`, mockResponse.tokens.access); - if (!response.ok) { - const error = await response.json(); - throw new Error(error.message || 'Login failed'); - } + localStorage.setItem(`${network}_refresh_token`, mockResponse.tokens.refresh); - const data: LoginResponse = await response.json(); + - // Store tokens in localStorage - if (data.tokens) { - localStorage.setItem('access_token', data.tokens.access); - localStorage.setItem('refresh_token', data.tokens.refresh); - } + return mockResponse; + + } + + + + // REAL MODE: Call backend login + + try { + + const response = await fetch(`${this.baseURL}/auth/login`, { + + method: 'POST', + + headers: this.getHeaders(), + + body: JSON.stringify(payload), + + }); + + + + if (!response.ok) { + + const error = await response.json(); + + throw new Error(error.message || 'Login failed'); + + } + + + + const data: LoginResponse = await response.json(); + + + + // Store tokens in localStorage (network-scoped) + + if (data.tokens) { + + const network = this.getNetwork(); + + localStorage.setItem(`${network}_access_token`, data.tokens.access); + + localStorage.setItem(`${network}_refresh_token`, data.tokens.refresh); + + } + + + + return data; - return data; + } catch (error) { console.error('Error during login:', error); throw error; diff --git a/src/lib/api/kyc.service.ts b/src/lib/api/kyc.service.ts index 0578678..8f6d0ad 100644 --- a/src/lib/api/kyc.service.ts +++ b/src/lib/api/kyc.service.ts @@ -3,8 +3,6 @@ import type { KYCSubmitResponse } from '../../types/auth.types'; import BaseService from './base.service'; import { handleAPIError } from '../utils/error-handler'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - // ============================================================================ // MOCK MODE CONFIGURATION // ============================================================================ @@ -12,21 +10,15 @@ const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok // Set to false when backend is ready const USE_MOCK_MODE = import.meta.env.VITE_USE_MOCK_AUTH === 'false' || false; -/** - * KYC Service - Handles KYC-related API calls - * Separate from auth service as per requirements - * - * MOCK MODE: Currently using simulated backend responses for development - * - * TO SWITCH TO REAL BACKEND: - * 1. Set USE_MOCK_MODE = false (or set VITE_USE_MOCK_AUTH=false in .env) - * 2. Ensure backend is running at API_BASE_URL - * 3. No other code changes needed - all endpoints are already configured - */ class KYCService extends BaseService { constructor() { - super(API_BASE_URL); + super(); + } + + private getNetwork(): string { + const segment = window.location.pathname.split('/')[1]; + return ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; } /** @@ -119,14 +111,15 @@ class KYCService extends BaseService { * - Implement rate limiting to prevent abuse */ async submitKYC(payload: FormData): Promise { + const network = this.getNetwork(); + const token = localStorage.getItem(`${network}_access_token`) || localStorage.getItem('access_token'); + // MOCK MODE: Simulate KYC submission if (USE_MOCK_MODE) { console.log('🔧 MOCK MODE: Simulating KYC submission'); console.log('Payload:', payload); - const accessToken = localStorage.getItem('access_token'); - - if (!accessToken) { + if (!token) { handleAPIError(new Error('Not a verified user, please solve the challenge.')); } @@ -147,7 +140,7 @@ class KYCService extends BaseService { const response = await fetch(`${this.baseURL}/kyc/upload`, { method: 'POST', headers: { - 'Authorization': `Bearer ${localStorage.getItem('access_token')}`, + 'Authorization': `Bearer ${token}`, // Do NOT set Content-Type - let the browser handle multipart/form-data boundary }, body: payload, diff --git a/src/lib/api/leverage.service.ts b/src/lib/api/leverage.service.ts index aaa1e6d..9db098c 100644 --- a/src/lib/api/leverage.service.ts +++ b/src/lib/api/leverage.service.ts @@ -1,21 +1,19 @@ import BaseService from './base.service'; -import type { LeveragePosition,LeveragePositionDetails, LeverageQuote, MethPrice } from '../../types/leverage.types'; - -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; +import type { LeveragePosition,LeveragePositionDetails, LeverageQuote, stARBPrice } from '../../types/leverage.types'; class LeverageService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** - * Get current mETH price in USD - * ENDPOINT: GET /leverage/meth-price + * Get current stARB price in USD + * ENDPOINT: GET /leverage/stARB-price */ - async getMethPrice(): Promise { + async getstARBPrice(): Promise { try { const response = await this.fetchWithTimeout( - `${this.baseURL}/leverage/meth-price`, + `${this.baseURL}/leverage/stARB-price`, { method: 'GET', headers: this.getAuthHeaders(), @@ -23,24 +21,24 @@ class LeverageService extends BaseService { ); if (!response.ok) { - throw new Error('Failed to fetch mETH price'); + throw new Error('Failed to fetch stARB price'); } return await response.json(); } catch (error) { - console.error('Error fetching mETH price:', error); + console.error('Error fetching stARB price:', error); throw error; } } /** * Get Swap Quote - * ENDPOINT: GET /leverage/quote/:mETHAmount + * ENDPOINT: GET /leverage/quote/:stARBAmount */ - async getQuote(mETHAmount: string): Promise { + async getQuote(stARBAmount: string): Promise { try { const response = await this.fetchWithTimeout( - `${this.baseURL}/leverage/quote/${mETHAmount}`, + `${this.baseURL}/leverage/quote/${stARBAmount}`, { method: 'GET', headers: this.getAuthHeaders(), @@ -67,7 +65,7 @@ class LeverageService extends BaseService { tokenAddress: string; tokenAmount: string; // WEI pricePerToken: string; // USDC WEI - mETHCollateral: string; // WEI + stARBCollateral: string; // WEI }): Promise<{ success: boolean; positionId: number; transactionHash: string }> { try { const response = await this.fetchWithTimeout( diff --git a/src/lib/api/marketplace.service.ts b/src/lib/api/marketplace.service.ts index c30938a..c6aea9c 100644 --- a/src/lib/api/marketplace.service.ts +++ b/src/lib/api/marketplace.service.ts @@ -13,19 +13,10 @@ import type { } from '@/types/marketplace.types'; import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - -/** - * Marketplace Service - Handles marketplace-related API calls - * - * Endpoints: - * - GET /marketplace/listings - Get all asset listings - * - GET /marketplace/listings/:assetId - Get specific asset details - */ class MarketplaceService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** @@ -44,7 +35,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/listings`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -75,7 +66,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/listings/${assetId}`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -164,7 +155,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/announcements`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -205,7 +196,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/announcements/asset/${assetId}`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -252,7 +243,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/assets/${assetId}`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -369,7 +360,7 @@ class MarketplaceService extends BaseService { * ENDPOINT: POST /marketplace/bids/notify (VERIFIED from investor-bidding.sh line 362) * REF: investor-bidding.sh Step 4 * - * Payload: { txHash, assetId, tokenAmount (wei), price (wei) } + * Payload: { txHash, assetId, tokenAmount (canonical 4-decimal e.g. "100.0000"), price (canonical 4-decimal e.g. "1.2345") } * * Called AFTER successful on-chain bid submission */ @@ -378,6 +369,7 @@ class MarketplaceService extends BaseService { assetId: string; tokenAmount: string; price: string; + network?: string; }): Promise { try { const response = await fetch(`${this.baseURL}/marketplace/bids/notify`, { @@ -413,6 +405,11 @@ class MarketplaceService extends BaseService { bidIndex: number; txHash: string; blockNumber: string; + network?: string; + ledger?: string; + tokensReceived?: string; + cost?: string; + refund?: string; }): Promise { try { const response = await fetch(`${this.baseURL}/marketplace/bids/settle-notify`, { @@ -506,7 +503,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/info`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -561,7 +558,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/top-grossing?limit=${limit}`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -583,7 +580,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/assets/${assetId}/purchase-history`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -634,7 +631,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/secondary/${assetId}/orderbook`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -657,7 +654,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/secondary/${assetId}/trades`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { @@ -789,7 +786,7 @@ class MarketplaceService extends BaseService { try { const response = await fetch(`${this.baseURL}/marketplace/secondary/${assetId}/chart?interval=${interval}`, { method: 'GET', - headers: this.getAuthHeaders(), + headers: this.getAuthHeaders(false), }); if (!response.ok) { diff --git a/src/lib/api/notification.service.ts b/src/lib/api/notification.service.ts index 9ed1946..03d651c 100644 --- a/src/lib/api/notification.service.ts +++ b/src/lib/api/notification.service.ts @@ -1,125 +1,13 @@ // src/lib/api/notification.service.ts import BaseService from './base.service'; +import type { + BackendNotification, + NotificationsResponse, + UnreadCountResponse, + NotificationType +} from '../../types/notification.types'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - -/** - * Notification types from backend - * export enum NotificationType { - ASSET_STATUS = 'ASSET_STATUS', - KYC_STATUS = 'KYC_STATUS', - YIELD_DISTRIBUTED = 'YIELD_DISTRIBUTED', - PAYOUT_SETTLED = 'PAYOUT_SETTLED', - TOKEN_PURCHASED = 'TOKEN_PURCHASED', - TOKEN_DEPLOYED = 'TOKEN_DEPLOYED', - SYSTEM_ALERT = 'SYSTEM_ALERT', - MARKETPLACE_LISTING = 'MARKETPLACE_LISTING', - BID_PLACED = 'BID_PLACED', - AUCTION_WON = 'AUCTION_WON', - BID_REFUNDED = 'BID_REFUNDED', - ORDER_FILLED = 'ORDER_FILLED', - ORDER_CANCELED = 'ORDER_CANCELED', - ORDER_ACTIVE = 'ORDER_ACTIVE', - ORDER_CREATED = 'ORDER_CREATED', - ORDER_CANCELLED = 'ORDER_CANCELLED', - -} - -export enum NotificationSeverity { - INFO = 'info', - SUCCESS = 'success', - WARNING = 'warning', - ERROR = 'error', -} - -export enum NotificationAction { - VIEW_ASSET = 'VIEW_ASSET', - VIEW_PORTFOLIO = 'VIEW_PORTFOLIO', - CLAIM_YIELD = 'CLAIM_YIELD', - VIEW_MARKETPLACE = 'VIEW_MARKETPLACE', - VIEW_KYC = 'VIEW_KYC', - NONE = 'NONE', -} - - * - * - */ -export type NotificationType = - | 'ASSET_STATUS' - | 'KYC_STATUS' - | 'YIELD_DISTRIBUTED' - | 'PAYOUT_SETTLED' - | 'TOKEN_PURCHASED' - | 'TOKEN_DEPLOYED' - | 'SYSTEM_ALERT' - | 'MARKETPLACE_LISTING' - | 'BID_PLACED' - | 'AUCTION_WON' - | 'BID_REFUNDED' - | 'ORDER_FILLED' - | 'ORDER_CANCELED' - | 'ORDER_ACTIVE' - | 'ORDER_CREATED' - | 'ORDER_CANCELLED'; - -export type NotificationSeverity = 'info' | 'success' | 'warning' | 'error'; - -export type NotificationAction = - | 'VIEW_ASSET' - | 'VIEW_PORTFOLIO' - | 'CLAIM_YIELD' - | 'VIEW_MARKETPLACE' - | 'VIEW_KYC' - | 'NONE'; - -/** - * Notification structure from backend - */ -export interface BackendNotification { - _id: string; - header: string; - summary?: string; // Added from SSE payload - detail: string; - type: NotificationType; - severity: NotificationSeverity; - action: NotificationAction; - walletAddress?: string; // Added from SSE payload - actionMetadata?: { - assetId?: string; - amount?: string; - totalPayment?: string; - bidIndex?: string; - [key: string]: any; - }; - icon?: string; - read: boolean; - readAt: string | null; - receivedAt: string; -} - -/** - * Response from GET /notifications - */ -export interface NotificationsResponse { - notifications: BackendNotification[]; - meta: { - unreadCount: number; - totalCount: number; - }; -} - -/** - * Response from GET /notifications/unread-count - */ -export interface UnreadCountResponse { - unreadCount: number; -} - -/** - * Notification Service - Connects to backend /notifications endpoints - * Based on NOTIFICATIONS.md API spec - */ class NotificationService extends BaseService { private sseAbortController: AbortController | null = null; private sseReader: ReadableStreamDefaultReader | null = null; @@ -135,19 +23,16 @@ class NotificationService extends BaseService { private readonly CACHE_TTL = 30000; // 30 seconds cache constructor() { - super(API_BASE_URL); + super(); + } + + private getNetwork(): string { + const segment = window.location.pathname.split('/')[1]; + return ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; } /** * Fetch all notifications with optional filtering - * GET /notifications - * - * OPTIMIZED: Prevents multiple concurrent fetches and caches results - * - * @param filter - 'all', 'unread', or 'read' - * @param limit - Number of notifications per page (default: 20) - * @param offset - Pagination offset (default: 0) - * @param forceRefresh - Force bypass cache (default: false) */ async getAllNotifications( filter: 'all' | 'unread' | 'read' = 'all', @@ -155,14 +40,12 @@ class NotificationService extends BaseService { offset: number = 0, forceRefresh: boolean = false ): Promise { - // Return cached data if available and not expired const now = Date.now(); const isCacheValid = this.cachedNotifications !== null && (now - this.cacheTimestamp) < this.CACHE_TTL && !forceRefresh; if (isCacheValid && offset === 0) { - console.log('📦 Returning cached notifications (preventing duplicate fetch)'); return { notifications: this.cachedNotifications!, meta: { @@ -172,13 +55,10 @@ class NotificationService extends BaseService { }; } - // If already fetching, return the existing promise to prevent concurrent fetches if (this.isFetchingNotifications && this.notificationsFetchPromise) { - console.log('⏳ Fetch already in progress, waiting for existing request...'); return this.notificationsFetchPromise; } - // Mark as fetching and create new fetch promise this.isFetchingNotifications = true; this.notificationsFetchPromise = (async () => { @@ -188,12 +68,10 @@ class NotificationService extends BaseService { queryParams.append('limit', limit.toString()); queryParams.append('offset', offset.toString()); - // Create AbortController with 30s timeout const abortController = new AbortController(); const timeoutId = setTimeout(() => abortController.abort(), 30000); try { - console.log('🔄 Fetching notifications from API...'); const response = await fetch( `${this.baseURL}/notifications`, { @@ -211,7 +89,6 @@ class NotificationService extends BaseService { const data: NotificationsResponse = await response.json(); - // Cache the results (only for first page) if (offset === 0) { this.cachedNotifications = data.notifications; this.cachedUnreadCount = data.meta.unreadCount; @@ -226,7 +103,6 @@ class NotificationService extends BaseService { console.error('Error fetching notifications:', error); throw error; } finally { - // Reset fetching state this.isFetchingNotifications = false; this.notificationsFetchPromise = null; } @@ -235,10 +111,6 @@ class NotificationService extends BaseService { return this.notificationsFetchPromise; } - /** - * Get notification by ID - * GET /notifications/:id - */ async getNotificationById(id: string): Promise { try { const abortController = new AbortController(); @@ -267,10 +139,6 @@ class NotificationService extends BaseService { } } - /** - * Get unread count - * GET /notifications/unread-count - */ async getUnreadCount(): Promise { try { const abortController = new AbortController(); @@ -300,10 +168,6 @@ class NotificationService extends BaseService { } } - /** - * Mark notification as read - * PATCH /notifications/:id/read - */ async markAsRead(id: string): Promise { try { const abortController = new AbortController(); @@ -327,7 +191,6 @@ class NotificationService extends BaseService { throw new Error('Failed to mark notification as read'); } - // Update cache if (this.cachedNotifications) { const notification = this.cachedNotifications.find((n) => n._id === id); if (notification && !notification.read) { @@ -345,10 +208,6 @@ class NotificationService extends BaseService { } } - /** - * Mark all notifications as read - * POST /notifications/mark-all-read - */ async markAllAsRead(): Promise { try { const abortController = new AbortController(); @@ -372,7 +231,6 @@ class NotificationService extends BaseService { throw new Error('Failed to mark all notifications as read'); } - // Update cache - mark all as read if (this.cachedNotifications) { const now = new Date().toISOString(); this.cachedNotifications.forEach((n) => { @@ -392,9 +250,6 @@ class NotificationService extends BaseService { } } - /** - * Add a new notification to the cache (called when SSE receives new notification) - */ addNotificationToCache(notification: BackendNotification): void { if (this.cachedNotifications) { this.cachedNotifications = [notification, ...this.cachedNotifications]; @@ -404,35 +259,21 @@ class NotificationService extends BaseService { } } - /** - * Invalidate the cache (force next fetch to refresh) - */ invalidateCache(): void { this.cachedNotifications = null; this.cacheTimestamp = 0; this.cachedUnreadCount = 0; } - /** - * Subscribe to real-time notifications via SSE - * GET /notifications/stream - * - * Custom implementation using fetch/ReadableStream to support headers (Auth) - * Mimics EventSource behavior including parsing event types. - * - * @param callback - Function called when new notification arrives - * @returns Unsubscribe function - */ subscribeToNotifications(callback: (notification: BackendNotification) => void): () => void { if (this.isSSEConnected) { - console.warn('⚠️ SSE connection already active, skipping duplicate'); return () => this.closeSSEConnection(); } this.closeSSEConnection(); - const token = localStorage.getItem('access_token'); + const network = this.getNetwork(); + const token = localStorage.getItem(`${network}_access_token`) || localStorage.getItem('access_token'); if (!token) { - console.error('No access token found for SSE connection'); return () => { }; } @@ -442,10 +283,6 @@ class NotificationService extends BaseService { try { const url = `${this.baseURL}/notifications/stream`; - console.log(`🔄 Connecting to Notification Stream at: ${url}`); - - // Match BaseService headers and required SSE headers - // Removing ngrok-skip-browser-warning as it might cause CORS issues on localhost if not allowed const headers: HeadersInit = { 'Authorization': `Bearer ${token}`, 'Accept': 'text/event-stream', @@ -459,15 +296,12 @@ class NotificationService extends BaseService { }); if (!response.ok) { - const errorText = await response.text().catch(() => 'No error details'); - throw new Error(`SSE Connection Failed: ${response.status} ${response.statusText} - ${errorText}`); + throw new Error(`SSE Connection Failed: ${response.status}`); } this.sseReader = response.body?.getReader() || null; if (!this.sseReader) throw new Error('ReadableStream not supported'); - console.log('✅ SSE Connected'); - const decoder = new TextDecoder(); let buffer = ''; @@ -477,7 +311,6 @@ class NotificationService extends BaseService { buffer += decoder.decode(value, { stream: true }); const lines = buffer.split('\n'); - // Keep the last partial line in buffer buffer = lines.pop() || ''; let currentEvent = 'message'; @@ -485,12 +318,10 @@ class NotificationService extends BaseService { for (const line of lines) { if (line.trim() === '') { - // End of event dispatch if (currentData) { try { if (currentEvent === 'notification') { const rawData = JSON.parse(currentData); - // Map SSE payload to BackendNotification interface const notification: BackendNotification = { _id: rawData.id || rawData._id, header: rawData.header || rawData.summary, @@ -506,11 +337,8 @@ class NotificationService extends BaseService { walletAddress: rawData.walletAddress, icon: rawData.icon }; - console.log('🔔 Notification Received:', notification.header); this.addNotificationToCache(notification); callback(notification); - } else if (currentEvent === 'connected') { - console.log('📡 Stream Handshake:', currentData); } } catch (e) { console.error('Error parsing SSE data:', e); @@ -530,10 +358,8 @@ class NotificationService extends BaseService { } } catch (error: any) { if (error.name !== 'AbortError') { - console.error('❌ SSE Error:', error); if (this.isSSEConnected) { this.reconnectTimeout = setTimeout(() => { - console.log('♻️ Reconnecting SSE...'); connectSSE(); }, 5000); } @@ -547,22 +373,14 @@ class NotificationService extends BaseService { return () => this.closeSSEConnection(); } - /** - * Close SSE connection - */ private closeSSEConnection(): void { this.isSSEConnected = false; if (this.reconnectTimeout) clearTimeout(this.reconnectTimeout); if (this.sseAbortController) this.sseAbortController.abort(); this.sseAbortController = null; this.sseReader = null; - console.log('🔌 SSE Connection Closed'); } - /** - * Filter notifications by role - * This is client-side filtering to ensure only relevant notifications are shown - */ filterNotificationsByRole( notifications: BackendNotification[], role: 'ORIGINATOR' | 'INVESTOR' | 'ADMIN' @@ -586,6 +404,7 @@ class NotificationService extends BaseService { 'ORDER_ACTIVE', 'ORDER_CREATED', 'ORDER_CANCELLED', + 'TRUSTLINE_APPROVED', ], ADMIN: ['ASSET_STATUS', 'YIELD_DISTRIBUTED'], }; @@ -595,5 +414,5 @@ class NotificationService extends BaseService { } } -// Singleton instance export const notificationService = new NotificationService(); +export type { NotificationType, BackendNotification, NotificationsResponse, UnreadCountResponse }; diff --git a/src/lib/api/portfolio.service.ts b/src/lib/api/portfolio.service.ts index 6d4cca7..7c72b9b 100644 --- a/src/lib/api/portfolio.service.ts +++ b/src/lib/api/portfolio.service.ts @@ -1,89 +1,17 @@ // src/lib/api/portfolio.service.ts import BaseService from './base.service'; - -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - -export interface PortfolioAsset { - purchaseType: 'STATIC' | 'LEVERAGE'; - assetId: string; - tokenAddress: string; - totalAmount: string; - status: string; - // STATIC-specific fields - totalInvested?: string; - purchaseCount?: number; - firstPurchase: string; - lastPurchase?: string; - metadata: { - assetName?: string; - industry?: string; - riskTier?: string; - positionType?: string; - }; - yieldInfo?: { - settlementDistributed: boolean; - claimableYield: string; - claimableYieldFormatted: string; - settlementDate?: string; - settlementId?: string; - yieldClaimTxHash?: string; - }; - // LEVERAGE-specific fields - positionId?: number; - createdAt?: string; - mETHCollateral?: string; - usdcBorrowed?: string; - healthFactor?: number; - healthStatus?: string; - totalInterestPaid?: string; - lastHarvestTime?: string; - settlementTxHash?: string; - leverageInfo?: { - type: 'ACTIVE' | 'SETTLED'; - mETHCollateralFormatted: string; - usdcBorrowedFormatted: string; - healthFactorFormatted?: string; - healthStatus?: string; - totalInterestPaidFormatted: string; - claimableYield: string; - claimableYieldFormatted: string; - userYield?: string; - userYieldFormatted?: string; - mETHReturned?: string; - mETHReturnedFormatted?: string; - settlementTxHash?: string; - settlementDate?: string; - }; -} - -export interface PortfolioResponse { - success: boolean; - investorWallet: string; - totalAssets: number; - totalPurchases: number; - totalLeveragePositions?: number; - portfolio: PortfolioAsset[]; -} +import type { PortfolioResponse } from '../../types/portfolio.types'; class PortfolioService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** * Get investor's complete portfolio * * ENDPOINT: GET /marketplace/portfolio - * - * BACKEND RESPONSE: - * { - * success: boolean, - * investorWallet: string, - * totalAssets: number, - * totalPurchases: number, - * portfolio: PortfolioAsset[] - * } */ async getPortfolio(): Promise { try { @@ -97,7 +25,7 @@ class PortfolioService extends BaseService { if (!response.ok) { const error = await response.json(); - // 401 will be handled by global fetch interceptor, but throw error anyway + // 401 will be handled by global fetch interceptor if (response.status === 401) { throw new Error('Unauthorized'); } @@ -116,24 +44,13 @@ class PortfolioService extends BaseService { /** * Notify backend after successful token purchase - * - * ENDPOINT: POST /marketplace/purchases/notify - * - * BACKEND RESPONSE: - * { - * success: boolean, - * purchaseId: string, - * assetId: string, - * amount: string, - * totalPayment: string, - * tokenAddress: string - * } */ async notifyPurchase(data: { txHash: string; assetId: string; amount: string; blockNumber: string; + type?: string; }): Promise<{ success: boolean; purchaseId: string; diff --git a/src/lib/api/queryClient.ts b/src/lib/api/queryClient.ts new file mode 100644 index 0000000..92e258f --- /dev/null +++ b/src/lib/api/queryClient.ts @@ -0,0 +1,11 @@ +import { QueryClient } from '@tanstack/react-query'; + +// Create a single QueryClient instance with proper configuration +export const queryClient = new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + retry: 1, + }, + }, +}); diff --git a/src/lib/api/solvency-contract.service.ts b/src/lib/api/solvency-contract.service.ts index 4b78c6c..a6a690a 100644 --- a/src/lib/api/solvency-contract.service.ts +++ b/src/lib/api/solvency-contract.service.ts @@ -9,8 +9,8 @@ import { ethers } from 'ethers'; // Contract addresses from environment -const VAULT_CONTRACT_ADDRESS = import.meta.env.VITE_SOLVENCY_VAULT || '0xf491b90154C46f856CF59e951c19eaD61c030e17'; -const USDC_CONTRACT_ADDRESS = import.meta.env.VITE_USDC_CONTRACT_ADDRESS || '0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238'; +const VAULT_CONTRACT_ADDRESS = import.meta.env.VITE_SOLVENCY_VAULT || ''; +const USDC_CONTRACT_ADDRESS = import.meta.env.VITE_USDC_CONTRACT_ADDRESS || ''; // Solvency Vault ABI - ✅ VERIFIED from deposit-to-vaultsolvency.js lines 115-121 // Updated borrowUSDC to include loanDuration and numberOfInstallments per COMPLETE_LOAN.md @@ -107,10 +107,10 @@ class SolvencyContractService { const network = await provider.getNetwork(); console.log(` Connected to network: chainId ${network.chainId}`); - // Check if on Mantle Sepolia (chainId: 5003) - if (network.chainId !== 5003n) { + // Check if on Arbitrum Sepolia (chainId: 421614) + if (network.chainId !== 421614n) { throw new Error( - `Wrong network. Please switch to Mantle Sepolia (chainId: 5003). Currently on chainId: ${network.chainId}` + `Wrong network. Please switch to Arbitrum Sepolia (chainId: 421614). Currently on chainId: ${network.chainId}` ); } @@ -461,7 +461,7 @@ class SolvencyContractService { throw new Error('Could not parse position ID from transaction'); } - console.log(` Explorer: https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log(` Explorer: https://sepolia.arbiscan.io/tx/${tx.hash}`); return { success: true, @@ -556,7 +556,7 @@ class SolvencyContractService { } } - console.log(`🔗 Explorer: https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log(`🔗 Explorer: https://sepolia.arbiscan.io/tx/${tx.hash}`); console.log('✅ Step 8: Borrow completed successfully!'); return { @@ -816,7 +816,7 @@ class SolvencyContractService { } } - console.log(` Explorer: https://explorer.sepolia.mantle.xyz/tx/${tx.hash}`); + console.log(` Explorer: https://sepolia.arbiscan.io/tx/${tx.hash}`); return { success: true, diff --git a/src/lib/api/solvency.service.ts b/src/lib/api/solvency.service.ts index 25d4e24..3937597 100644 --- a/src/lib/api/solvency.service.ts +++ b/src/lib/api/solvency.service.ts @@ -9,8 +9,6 @@ import type { GetPositionsResponse, Position } from '../../types/solvency.types' import type { AdminPositionsResponse } from '../../types/admin.types'; import BaseService from './base.service'; -const API_BASE_URL = import.meta.env.VITE_API_URL || 'https://f5e22b62e871.ngrok-free.app/'; - // ============================================ // RESPONSE TYPES (Matching actual backend) // ============================================ @@ -59,7 +57,7 @@ export interface SyncPositionResponse { class SolvencyService extends BaseService { constructor() { - super(API_BASE_URL); + super(); } /** diff --git a/src/lib/api/stellar-yield.service.ts b/src/lib/api/stellar-yield.service.ts new file mode 100644 index 0000000..8703b42 --- /dev/null +++ b/src/lib/api/stellar-yield.service.ts @@ -0,0 +1,240 @@ + +import freighterApi, { + isConnected, + signTransaction, + setAllowed, +} from "@stellar/freighter-api"; +import * as StellarSdk from "@stellar/stellar-sdk"; +import type { ClaimResult, SettlementInfoResult, TransactionResult, YieldService } from "./yield.service.interface"; + +const HORIZON_URL = import.meta.env.VITE_STELLAR_HORIZON_URL || 'https://horizon-testnet.stellar.org'; +const NETWORK_PASSPHRASE = import.meta.env.VITE_STELLAR_NETWORK_PASSPHRASE || 'Test SDF Network ; September 2015'; +const YIELD_VAULT_ID = import.meta.env.VITE_STELLAR_YIELD_VAULT_ID || import.meta.env.VITE_STELLAR_YIELD_VAULT || ''; + +export class StellarYieldService implements YieldService { + + private parseTokenAddress(tokenAddress: string): { code: string, issuer: string } { + if (!tokenAddress.includes(':')) { + throw new Error(`Invalid Stellar token address format: ${tokenAddress}. Expected "CODE:ISSUER"`); + } + const [code, issuer] = tokenAddress.split(':'); + return { code, issuer }; + } + + async getSettlementInfo(tokenAddress: string, userAddress?: string): Promise { + try { + if (!YIELD_VAULT_ID) { + throw new Error("Stellar YieldVault contract ID not configured"); + } + + if (!userAddress) { + if (await isConnected()) { + // In a real app we might want to get the address from Freighter if not provided + throw new Error("User address required for settlement info"); + } + } + + const { code, issuer } = this.parseTokenAddress(tokenAddress); + + // 1. Simulate get_settlement_info call + const server = new StellarSdk.rpc.Server(import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'); + const contract = new StellarSdk.Contract(YIELD_VAULT_ID); + + const simulationSource = userAddress || 'GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF'; + + const horizonServer = new StellarSdk.Horizon.Server(HORIZON_URL); + let sourceAccount; + try { + sourceAccount = await horizonServer.loadAccount(simulationSource); + } catch (e) { + console.warn("Could not load account for simulation, using random keypair"); + const pair = StellarSdk.Keypair.random(); + sourceAccount = new StellarSdk.Account(pair.publicKey(), "0"); + } + + const tx = new StellarSdk.TransactionBuilder(sourceAccount, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + contract.call( + 'get_settlement_info', + StellarSdk.nativeToScVal(code, { type: 'string' }) + ) + ) + .setTimeout(30) + .build(); + + const simulation = await server.simulateTransaction(tx); + + if (!StellarSdk.rpc.Api.isSimulationSuccess(simulation)) { + console.warn("get_settlement_info simulation failed (possibly no settlement yet)", simulation); + return { + success: true, + totalSettlement: '0', + totalTokenSupply: '0', + totalClaimed: '0', + totalTokensBurned: '0', + yieldPerToken: '0', + investorBalance: '0', + expectedUsdcForAllTokens: '0', + tokenSymbol: code, + tokenDecimals: 7, + allowance: '9999999999999' + }; + } + + const res = simulation.result?.retval; + if (!res) throw new Error("No return value from get_settlement_info"); + + const unwrap = (val: any) => StellarSdk.scValToNative(val); + const nativeRes = unwrap(res); + + const totalSettlement = (nativeRes.total_settlement || 0n).toString(); + // Contract uses supply_snapshot for total active supply at snapshot + const totalTokenSupply = (nativeRes.supply_snapshot || nativeRes.total_supply || 0n).toString(); + const totalClaimed = (nativeRes.claimed_tokens || nativeRes.total_claimed || 0n).toString(); + const totalTokensBurned = (nativeRes.total_tokens_burned || nativeRes.total_burned || 0n).toString(); + const yieldPerToken = (nativeRes.yield_per_token || 0n).toString(); + + let userBalanceRaw = 0n; + let userBalanceStr = '0.0000'; + if (userAddress) { + try { + const accountData = await horizonServer.loadAccount(userAddress); + const balances = (accountData as any).balances || []; + const balanceObj = balances.find((b: any) => + b.asset_code === code && b.asset_issuer === issuer + ); + if (balanceObj) { + const parts = balanceObj.balance.split('.'); + const intPart = BigInt(parts[0]); + const fracPart = parts[1] ? parts[1].padEnd(7, '0').slice(0, 7) : '0000000'; + userBalanceRaw = intPart * 10_000_000n + BigInt(fracPart); + userBalanceStr = parseFloat(balanceObj.balance).toFixed(4); + } + } catch (e) { + console.warn("Could not fetch user balance", e); + } + } + + let expectedUsdc = '0'; + if (BigInt(totalTokenSupply) > 0n && userBalanceRaw > 0n) { + const settlementBn = BigInt(totalSettlement); + const supplyBn = BigInt(totalTokenSupply); + const expectedBn = (userBalanceRaw * settlementBn) / supplyBn; + expectedUsdc = (Number(expectedBn) / 10_000_000).toFixed(6); + } + + return { + success: true, + totalSettlement, + totalTokenSupply, + totalClaimed, + totalTokensBurned, + yieldPerToken, + investorBalance: userBalanceStr, + tokenDecimals: 7, + tokenSymbol: code, + allowance: '999999999999999999', + expectedUsdcForAllTokens: expectedUsdc, + yieldVaultAddress: YIELD_VAULT_ID + }; + + } catch (error: any) { + console.error("Stellar Yield Info Error:", error); + return { + success: false, + error: error.message || "Failed to fetch Stellar yield info" + }; + } + } + + async approveYieldVault(_tokenAddress: string, _burnAmountWei: string, _currentAllowance?: string): Promise { + return { + success: true, + skipped: true, + transactionHash: 'skipped' + }; + } + + async claimYield(tokenAddress: string, burnAmountWei: string): Promise { + try { + if (!YIELD_VAULT_ID) throw new Error("YieldVault ID not configured"); + + const { code, issuer } = this.parseTokenAddress(tokenAddress); + + if (!(await isConnected())) { + throw new Error("Freighter wallet not found"); + } + await setAllowed(); + + // Retrieve public key/address from Freighter + const { address } = await freighterApi.getAddress(); + if (!address) throw new Error("Could not get wallet address"); + const publicKey = address; + + const horizonServer = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await horizonServer.loadAccount(publicKey); + + const contract = new StellarSdk.Contract(YIELD_VAULT_ID); + + // Derive SAC Contract ID from Asset + const assetObj = new StellarSdk.Asset(code, issuer); + const sacContractId = assetObj.contractId(NETWORK_PASSPHRASE); + console.log(`Derived SAC Contract ID for ${code}: ${sacContractId}`); + + const txBuilder = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + contract.call( + 'claim_yield', + StellarSdk.nativeToScVal(code, { type: 'string' }), + new StellarSdk.Address(sacContractId).toScVal(), + StellarSdk.nativeToScVal(BigInt(burnAmountWei), { type: 'i128' }), + new StellarSdk.Address(address).toScVal() + ) + ); + + const tx = txBuilder.setTimeout(30).build(); + + const rpcServer = new StellarSdk.rpc.Server(import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'); + const simulation = await rpcServer.simulateTransaction(tx); + + if (!StellarSdk.rpc.Api.isSimulationSuccess(simulation)) { + throw new Error(`Simulation failed: ${(simulation as any).error || 'Unknown error'}`); + } + + const assembled = StellarSdk.rpc.assembleTransaction(tx, simulation).build(); + const xdr = assembled.toXDR(); + const signed = await signTransaction(xdr, { networkPassphrase: NETWORK_PASSPHRASE }); + if (!signed) throw new Error("User denied signature"); + + const signedTx = new StellarSdk.Transaction(signed.signedTxXdr, NETWORK_PASSPHRASE); + const response = await rpcServer.sendTransaction(signedTx); + + if (response.status !== "PENDING" && (response as any).status !== "SUCCESS") { + throw new Error(`Transaction failed: ${JSON.stringify(response)}`); + } + + return { + success: true, + transactionHash: response.hash, + tokensBurned: burnAmountWei, + tokensBurnedFormatted: (Number(burnAmountWei) / 10_000_000).toFixed(2), + usdcReceived: '0' + }; + + } catch (error: any) { + console.error("Stellar Claim Yield Error:", error); + return { + success: false, + error: error.message + }; + } + } +} + +export const stellarYieldService = new StellarYieldService(); diff --git a/src/lib/api/stellar.service.ts b/src/lib/api/stellar.service.ts new file mode 100644 index 0000000..fd02376 --- /dev/null +++ b/src/lib/api/stellar.service.ts @@ -0,0 +1,476 @@ +import { + isConnected, + signTransaction, + setAllowed, +} from "@stellar/freighter-api"; +import * as StellarSdk from "@stellar/stellar-sdk"; + +const HORIZON_URL = import.meta.env.VITE_STELLAR_HORIZON_URL || 'https://horizon-testnet.stellar.org'; +const NETWORK_PASSPHRASE = import.meta.env.VITE_STELLAR_NETWORK_PASSPHRASE || 'Test SDF Network ; September 2015'; + +export const stellarService = { + /** + * Check if a trustline exists for a specific asset + */ + checkTrustline: async (account: string, assetCode: string, issuer: string): Promise => { + try { + // Use Horizon for account data + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const accountData = await server.loadAccount(account); + + const balances = (accountData as any).balances || []; + return balances.some((balance: any) => { + return ( + balance.asset_type !== 'native' && + balance.asset_code === assetCode && + balance.asset_issuer === issuer + ); + }); + } catch (error) { + console.error('Error checking trustline:', error); + return false; + } + }, + + /** + * Get the balance of a specific asset for an account + */ + getAccountBalance: async (account: string, assetCode: string, issuer?: string): Promise => { + try { + // Use Horizon for account data + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const accountData = await server.loadAccount(account); + + const balances = (accountData as any).balances || []; + console.log('DEBUG: Horizon account balances:', balances); + + const balance = balances.find((b: any) => { + if (assetCode === 'native') return b.asset_type === 'native'; + + const codeMatch = b.asset_code === assetCode; + const issuerMatch = issuer ? b.asset_issuer === issuer : true; + + if (b.asset_code === assetCode) { + console.log(`DEBUG: Found likely match for ${assetCode}. Issuer: ${b.asset_issuer}. Expected: ${issuer}. Match? ${issuerMatch}`); + } + + return codeMatch && issuerMatch; + }); + + const result = balance ? balance.balance : '0'; + console.log(`Balance found for ${assetCode}: ${result}`); + return result; + } catch (error) { + console.error('Error fetching balance:', error); + return '0'; + } + }, + + /** + * Add a trustline for an asset using Freighter + */ + addTrustline: async (account: string, assetCode: string, issuer: string): Promise => { + try { + // 1. Check Freighter connection + if (!(await isConnected())) { + throw new Error("Freighter wallet not found"); + } + + await setAllowed(); // Ensure we have permission + + // 2. Load account to get sequence number (Use Horizon for reliable sequence) + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await server.loadAccount(account); + + // 3. Build Transaction + const asset = new StellarSdk.Asset(assetCode, issuer); + const tx = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation(StellarSdk.Operation.changeTrust({ + asset: asset, + })) + .setTimeout(30) + .build(); + + // 4. Sign with Freighter + const xdr = tx.toXDR(); + const signedXdrObj = await signTransaction(xdr, { + networkPassphrase: NETWORK_PASSPHRASE, + }); + + if (!signedXdrObj) { + throw new Error("User denied transaction signature"); + } + + // 5. Submit Transaction + // signedXdrObj is { signedTxXdr: string, signerAddress: string } + const response = await server.submitTransaction(new StellarSdk.Transaction(signedXdrObj.signedTxXdr, NETWORK_PASSPHRASE)); + + return response.hash; + } catch (error: any) { + console.error("Add trustline error:", error); + throw new Error(error.message || "Failed to add trustline"); + } + }, + + /** + * Buy tokens on Stellar using the Primary Market contract + */ + buyTokens: async (account: string, assetCode: string, amount: string, decimals: number = 7): Promise => { + try { + // 1. Check Freighter connection + if (!(await isConnected())) { + throw new Error("Freighter wallet not found"); + } + + await setAllowed(); // Ensure we have permission + + // 2. Load account for sequence number + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await server.loadAccount(account); + + // 3. Resolve Contract ID (PrimaryMarket) + const marketContractId = import.meta.env.VITE_STELLAR_PRIMARY_MARKET; + if (!marketContractId) { + throw new Error("Primary Market contract ID not configured"); + } + + // 4. Prepare arguments + // Handle fractional amounts correctly (e.g. 0.1 tokens) + // We use standard string parsing to avoid floating point errors + const parts = amount.split('.'); + let amountBigInt: bigint; + const decimalsBigInt = BigInt(decimals); + + if (parts.length === 1) { + // Integer + amountBigInt = BigInt(amount) * (BigInt(10) ** decimalsBigInt); + } else { + // Decimal + const integerPart = parts[0]; + const fractionalPart = parts[1]; + + // Truncate fractional part if longer than decimals + const truncatedFraction = fractionalPart.slice(0, decimals); + + // Pad with zeros if shorter + const paddedFraction = truncatedFraction.padEnd(decimals, '0'); + + const fullNumberStr = integerPart + paddedFraction; + amountBigInt = BigInt(fullNumberStr); + } + + const contract = new StellarSdk.Contract(marketContractId); + + // 5. Build Transaction + console.log(`DEBUG: Calling buy_tokens on ${marketContractId} with: Account=${account}, Asset=${assetCode}, Amount=${amountBigInt.toString()} (Decimals: ${decimals})`); + + const tx = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + contract.call( + 'buy_tokens', + StellarSdk.nativeToScVal(account, { type: 'address' }), + StellarSdk.nativeToScVal(assetCode, { type: 'string' }), + StellarSdk.nativeToScVal(amountBigInt, { type: 'i128' }), + ) + ) + .setTimeout(30) + .build(); + + // 6. Simulate Transaction + const rpcServer = new StellarSdk.rpc.Server(import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'); + const simulation = await rpcServer.simulateTransaction(tx); + + if (!StellarSdk.rpc.Api.isSimulationSuccess(simulation)) { + console.error("Simulation failed:", simulation); + let errorMsg = simulation.error as string || "Unknown simulation error"; + + // Try to extract diagnostic events if available + if (simulation.events && simulation.events.length > 0) { + const events = simulation.events.map((e: any) => { + // Diagnostic events structure + return `Topic: ${e.topic || e.topics}, Data: ${e.value || e.data}`; + }).join('\n'); + errorMsg += `\nEvents: ${events}`; + } + + throw new Error(`Transaction simulation failed: ${errorMsg}. \nPossible causes: Contract has insufficient balance of asset ${assetCode}, or listing is inactive.`); + } + + console.log("Simulation successful. Assembling transaction..."); + // Assemble the transaction with the simulation data (resources, auth) + const assembledTx = StellarSdk.rpc.assembleTransaction(tx, simulation).build(); + + // 7. Sign with Freighter (pass XDR of assembled tx) + const xdr = assembledTx.toXDR(); + const signedXdrObj = await signTransaction(xdr, { + networkPassphrase: NETWORK_PASSPHRASE, + }); + + if (!signedXdrObj) { + throw new Error("User denied transaction signature"); + } + + // 8. Submit Transaction via RPC + // Restore the transaction object from the signed XDR + const signedTx = new StellarSdk.Transaction(signedXdrObj.signedTxXdr, NETWORK_PASSPHRASE); + + // Submit + const response = await rpcServer.sendTransaction(signedTx); + + if (response.status === "PENDING" || (response as any).status === "SUCCESS") { + return response.hash; + } else { + throw new Error(`Transaction failed: ${JSON.stringify(response)}`); + } + + } catch (error: any) { + console.error("Buy tokens error:", error); + throw new Error(error.message || "Failed to buy tokens"); + } + }, + + /** + * Submit a bid on Stellar (Primary Market) + * Matches logic from scripts/investor-place-bid.sh + */ + submitBid: async ( + account: string, + assetCode: string, + tokenAmount: string, + limitPrice: string + ): Promise<{ txHash: string; tokenAmount7dec: string; limitPrice7dec: string }> => { + try { + if (!(await isConnected())) throw new Error("Freighter wallet not found"); + await setAllowed(); + + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await server.loadAccount(account); + + const marketContractId = import.meta.env.VITE_STELLAR_PRIMARY_MARKET; + if (!marketContractId) throw new Error("Primary Market contract ID not configured"); + + // Convert to Stellar 7-decimal integers (i64) + const STELLAR_DECIMALS = 10_000_000; + const tokenAmount7dec = BigInt(Math.round(parseFloat(tokenAmount) * STELLAR_DECIMALS)); + const limitPrice7dec = BigInt(Math.round(parseFloat(limitPrice) * STELLAR_DECIMALS)); + + const contract = new StellarSdk.Contract(marketContractId); + + console.log(`Submitting bid: Code=${assetCode}, Tokens=${tokenAmount7dec}, Price=${limitPrice7dec}`); + + const tx = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + contract.call( + 'submit_bid', + new StellarSdk.Address(account).toScVal(), + StellarSdk.nativeToScVal(assetCode, { type: 'string' }), + StellarSdk.nativeToScVal(tokenAmount7dec, { type: 'i64' }), + StellarSdk.nativeToScVal(limitPrice7dec, { type: 'i64' }) + ) + ) + .setTimeout(30) + .build(); + + const rpcServer = new StellarSdk.rpc.Server(import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'); + const simulation = await rpcServer.simulateTransaction(tx); + + if (!StellarSdk.rpc.Api.isSimulationSuccess(simulation)) { + let errorMsg = typeof simulation.error === 'string' ? simulation.error : 'Unknown error'; + if (simulation.events && simulation.events.length > 0) { + // Extract informative errors from events if possible + errorMsg += " | Events: " + simulation.events.map((e: any) => e.topics.join(',')).join('; '); + } + throw new Error(`Simulation failed: ${errorMsg}`); + } + + const assembled = StellarSdk.rpc.assembleTransaction(tx, simulation).build(); + const signed = await signTransaction(assembled.toXDR(), { networkPassphrase: NETWORK_PASSPHRASE }); + if (!signed) throw new Error("User denied signature"); + + const signedTx = new StellarSdk.Transaction(signed.signedTxXdr, NETWORK_PASSPHRASE); + const response = await rpcServer.sendTransaction(signedTx); + + if (response.status !== "PENDING" && (response as any).status !== "SUCCESS") { + throw new Error(`Transaction failed: ${JSON.stringify(response)}`); + } + + return { + txHash: response.hash, + tokenAmount7dec: tokenAmount7dec.toString(), + limitPrice7dec: limitPrice7dec.toString() + }; + + } catch (error: any) { + console.error("Submit bid error:", error); + throw new Error(error.message || "Failed to submit bid"); + } + }, + + /** + * End an auction on Stellar (Admin only) + * Matches logic from scripts/admin-end-auction.sh + */ + endAuction: async ( + account: string, + assetCode: string, + issuer: string, + totalSupply: string, + clearingPrice: string + ): Promise<{ txHash: string; ledger: number; clearingPrice7dec: string }> => { + try { + // 1. Check Freighter connection + if (!(await isConnected())) { + throw new Error("Freighter wallet not found"); + } + + await setAllowed(); + + // 2. Load account + const server = new StellarSdk.Horizon.Server(HORIZON_URL); + const source = await server.loadAccount(account); + + // 3. Configuration & Conversion + const marketContractId = import.meta.env.VITE_STELLAR_PRIMARY_MARKET; + if (!marketContractId) throw new Error("Primary Market contract ID not configured"); + + const STELLAR_DECIMALS = 10_000_000; + const totalSupply7dec = BigInt(Math.round(parseFloat(totalSupply) * STELLAR_DECIMALS)); + const clearingPrice7dec = BigInt(Math.round(parseFloat(clearingPrice) * STELLAR_DECIMALS)); + + const rpcServer = new StellarSdk.rpc.Server(import.meta.env.VITE_STELLAR_RPC_URL || 'https://soroban-testnet.stellar.org'); + + // 4. Check PrimaryMarket Balance & Mint if needed (SAC) + const asset = new StellarSdk.Asset(assetCode, issuer); + const sacContractId = asset.contractId(NETWORK_PASSPHRASE); + const sacContract = new StellarSdk.Contract(sacContractId); + + console.log(`Checking balance in PrimaryMarket... SAC: ${sacContractId}`); + + // Prepare simulation to check balance + const balanceTx = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + sacContract.call( + 'balance', + new StellarSdk.Address(marketContractId).toScVal() + ) + ) + .setTimeout(30) + .build(); + + const balanceSim = await rpcServer.simulateTransaction(balanceTx); + let currentBalance = BigInt(0); + + if (StellarSdk.rpc.Api.isSimulationSuccess(balanceSim) && balanceSim.result) { + currentBalance = StellarSdk.scValToNative(balanceSim.result.retval) as bigint; + } + console.log(`Current PrimaryMarket balance: ${currentBalance.toString()} (Required: ${totalSupply7dec.toString()})`); + + // Variable to hold the source account for the clear auction tx (may need refresh if minting occurred) + let clearAuctionSource = source; + + if (currentBalance < totalSupply7dec) { + const mintAmount = totalSupply7dec - currentBalance; + console.log(`Minting ${mintAmount.toString()} tokens to PrimaryMarket...`); + + const mintTx = new StellarSdk.TransactionBuilder(source, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + sacContract.call( + 'mint', + new StellarSdk.Address(marketContractId).toScVal(), + StellarSdk.nativeToScVal(mintAmount, { type: 'i128' }) + ) + ) + .setTimeout(30) + .build(); + + // Sign & Submit Mint + const mintXdr = mintTx.toXDR(); + const signedMint = await signTransaction(mintXdr, { networkPassphrase: NETWORK_PASSPHRASE }); + if (!signedMint) throw new Error("User denied minting signature"); + + const signedMintTx = new StellarSdk.Transaction(signedMint.signedTxXdr, NETWORK_PASSPHRASE); + const mintRes = await rpcServer.sendTransaction(signedMintTx); + + if (mintRes.status !== "PENDING" && (mintRes as any).status !== "SUCCESS") { + throw new Error(`Minting failed: ${JSON.stringify(mintRes)}`); + } + + // Wait for confirmation (simple delay for now) + console.log("Mint submitted, waiting for confirmation..."); + await new Promise(r => setTimeout(r, 4000)); + + // Reload account sequence for next tx + clearAuctionSource = await server.loadAccount(account); + } + + // 5. Clear Auction + console.log("Clearing auction..."); + const marketContract = new StellarSdk.Contract(marketContractId); + + // ALWAYS fetch a fresh copy of the account to avoid txBadSeq errors. + // Earlier simulations (like balanceTx) increment the in-memory sequence number of 'source'. + clearAuctionSource = await server.loadAccount(account); + + const clearTx = new StellarSdk.TransactionBuilder(clearAuctionSource, { + fee: StellarSdk.BASE_FEE, + networkPassphrase: NETWORK_PASSPHRASE, + }) + .addOperation( + marketContract.call( + 'clear_auction', + new StellarSdk.Address(account).toScVal(), // admin + StellarSdk.nativeToScVal(assetCode, { type: 'string' }), + StellarSdk.nativeToScVal(clearingPrice7dec, { type: 'i64' }) + ) + ) + .setTimeout(30) + .build(); + + // Simulate Clear + const clearSim = await rpcServer.simulateTransaction(clearTx); + if (!StellarSdk.rpc.Api.isSimulationSuccess(clearSim)) { + console.error("Clear simulation failed:", clearSim); + throw new Error(`Clear auction simulation failed: ${(clearSim as any).error}`); + } + + // Sign & Submit Clear + const assembledClear = StellarSdk.rpc.assembleTransaction(clearTx, clearSim).build(); + const clearXdr = assembledClear.toXDR(); + + const signedClear = await signTransaction(clearXdr, { networkPassphrase: NETWORK_PASSPHRASE }); + if (!signedClear) throw new Error("User denied clear auction signature"); + + const signedClearTx = new StellarSdk.Transaction(signedClear.signedTxXdr, NETWORK_PASSPHRASE); + const clearRes = await rpcServer.sendTransaction(signedClearTx); + + if (clearRes.status !== "PENDING" && (clearRes as any).status !== "SUCCESS") { + throw new Error(`Clear auction failed: ${JSON.stringify(clearRes)}`); + } + + return { + txHash: clearRes.hash, + ledger: 0, // We don't get ledger immediately from sendTransaction, backend can query if needed + clearingPrice7dec: clearingPrice7dec.toString() + }; + + } catch (error: any) { + console.error("End auction error:", error); + throw new Error(error.message || "Failed to end auction"); + } + }, +}; diff --git a/src/lib/api/trustline.service.ts b/src/lib/api/trustline.service.ts new file mode 100644 index 0000000..0f078a1 --- /dev/null +++ b/src/lib/api/trustline.service.ts @@ -0,0 +1,148 @@ +import BaseService from './base.service'; + +export interface NotifyTrustlineDto { + txHash: string; + assetId: string; + network: string; + blockNumber?: string; +} + +export interface CheckAbilityResponseDto { + canBuy: boolean; + trustlineStatus: 'APPROVED' | 'PENDING' | 'NOT_REQUESTED'; + reason?: string; +} + +export interface TrustlineRequest { + requestId: string; + investorAddress: string; + assetId: string; + assetCode: string; + issuerAddress: string; + status: 'PENDING' | 'APPROVED' | 'REJECTED'; + txHash: string; + createdAt: string; + updatedAt: string; + asset?: any; +} + +export interface ApproveTrustlineDto { + requestId: string; + adminWallet: string; +} + +class TrustlineService extends BaseService { + /** + * Notify backend that a trustline transaction has been submitted/completed on-chain + */ + async notifyTrustlineAdded(data: NotifyTrustlineDto): Promise<{ success: boolean; requestId: string; status: string }> { + const response = await fetch(`${this.baseURL}/trustline/add-trustline-notify`, { + method: 'POST', + headers: this.getAuthHeaders(), + body: JSON.stringify(data), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to notify trustline added'); + } + return await response.json(); + } + + /** + * Check if the current user can buy the asset (i.e., has an approved trustline) + */ + async checkAbilityToBuy(assetId: string): Promise { + const response = await fetch(`${this.baseURL}/trustline/check-ability-to-buy/${assetId}`, { + method: 'GET', + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to check ability to buy'); + } + return await response.json(); + } + + /** + * Get the current user's trustline requests + */ + async getMyRequests(params?: { status?: string; limit?: number; offset?: number }): Promise { + const queryParams = new URLSearchParams(params as any).toString(); + const response = await fetch(`${this.baseURL}/trustline/my-requests?${queryParams}`, { + method: 'GET', + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to get my requests'); + } + return await response.json(); + } + + // --- Admin Endpoints --- + + /** + * Get all pending trustline requests (Admin) + */ + async getAdminRequests(params?: { + status?: string; + investorAddress?: string; + assetId?: string; + dateFrom?: string; + dateTo?: string; + limit?: number; + offset?: number; + sortBy?: string; + sortOrder?: string; + }): Promise<{ requests: TrustlineRequest[]; totalCount: number; page: number; limit: number }> { + const queryParams = new URLSearchParams(params as any).toString(); + const response = await fetch(`${this.baseURL}/admin/trustline-requests?${queryParams}`, { + method: 'GET', + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to get admin requests'); + } + return await response.json(); + } + + /** + * Get a specific request by ID (Admin) + */ + async getRequestById(requestId: string): Promise { + const response = await fetch(`${this.baseURL}/admin/trustline-requests/${requestId}`, { + method: 'GET', + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to get request by id'); + } + return await response.json(); + } + + /** + * Approve a trustline request (Admin) + */ + async approveTrustline(data: ApproveTrustlineDto): Promise<{ success: boolean; transactionHash?: string; request: TrustlineRequest }> { + const response = await fetch(`${this.baseURL}/admin/trustline-requests/approve`, { + method: 'POST', + headers: this.getAuthHeaders(), + body: JSON.stringify(data), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.message || 'Failed to approve trustline'); + } + return await response.json(); + } +} + +export const trustlineService = new TrustlineService(); diff --git a/src/lib/api/yield.service.factory.ts b/src/lib/api/yield.service.factory.ts new file mode 100644 index 0000000..2163ee3 --- /dev/null +++ b/src/lib/api/yield.service.factory.ts @@ -0,0 +1,13 @@ + +import type { YieldService } from './yield.service.interface'; +import { contractService } from './contract.service'; +// @ts-ignore - stellar service might have type issues initially or if module not found +import { stellarYieldService } from './stellar-yield.service'; +import type { NetworkType } from '../network/network.config'; + +export const getYieldService = (network: NetworkType): YieldService => { + if (network === 'stellar') { + return stellarYieldService as YieldService; + } + return contractService as unknown as YieldService; +}; diff --git a/src/lib/api/yield.service.interface.ts b/src/lib/api/yield.service.interface.ts new file mode 100644 index 0000000..bfa218e --- /dev/null +++ b/src/lib/api/yield.service.interface.ts @@ -0,0 +1,50 @@ + +export interface SettlementInfoResult { + success: boolean; + totalSettlement?: string; + totalTokenSupply?: string; + totalClaimed?: string; + totalTokensBurned?: string; + yieldPerToken?: string; + investorBalance?: string; + tokenDecimals?: number; + tokenSymbol?: string; + allowance?: string; + expectedUsdcForAllTokens?: string; + yieldVaultAddress?: string; + error?: string; +} + +export interface TransactionResult { + success: boolean; + transactionHash?: string; + blockNumber?: number; + skipped?: boolean; + error?: string; +} + +export interface ClaimResult { + success: boolean; + transactionHash?: string; + blockNumber?: number; + tokensBurned?: string; + usdcReceived?: string; + tokensBurnedFormatted?: string; + usdcReceivedFormatted?: string; + error?: string; +} + +export interface YieldService { + getSettlementInfo(tokenAddress: string, userAddress?: string): Promise; + + approveYieldVault( + tokenAddress: string, + burnAmountWei: string, + currentAllowance?: string + ): Promise; + + claimYield( + tokenAddress: string, + burnAmountWei: string + ): Promise; +} diff --git a/src/lib/auth/AuthStrategyContext.tsx b/src/lib/auth/AuthStrategyContext.tsx new file mode 100644 index 0000000..0480682 --- /dev/null +++ b/src/lib/auth/AuthStrategyContext.tsx @@ -0,0 +1,31 @@ +import React, { createContext, useContext } from 'react'; + +export interface AuthStrategy { + isAuthenticating: boolean; + isAuthenticated: boolean; + address: string | undefined; + error: string | null; + login: () => Promise; + logout: () => void; + // Specialized helper for "Get Started" which might differ per network + handleGetStarted: () => Promise; + // For issuer flow + handleIssuerGetStarted: () => Promise; +} + +const AuthStrategyContext = createContext(undefined); + +export const useAuthStrategy = () => { + const context = useContext(AuthStrategyContext); + if (!context) { + throw new Error('useAuthStrategy must be used within an AuthStrategyProvider'); + } + return context; +}; + +export const AuthStrategyProvider: React.FC<{ strategy: AuthStrategy; children: React.ReactNode }> = ({ + strategy, + children, +}) => { + return {children}; +}; diff --git a/src/lib/blockchain/auction.contract.ts b/src/lib/blockchain/auction.contract.ts index 3c5e5d6..d44859a 100644 --- a/src/lib/blockchain/auction.contract.ts +++ b/src/lib/blockchain/auction.contract.ts @@ -5,35 +5,21 @@ import { parseUnits, formatUnits } from 'viem'; /** - * Deployed Contract Addresses (Mantle Sepolia Testnet) - * Source: packages/contracts/deployed_contracts.json + * Deployed Contract Addresses (Arbitrum Sepolia Testnet) + * Set via VITE_* environment variables in .env */ export const CONTRACTS = { - AttestationRegistry: import.meta.env.VITE_ATTESTATION_REGISTRY || '0x03FE7d3736402D140659e7bD92B64808E31C3f51', - TrustedIssuersRegistry: import.meta.env.VITE_TRUSTED_ISSUERS_REGISTRY || '0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2', - IdentityRegistry: import.meta.env.VITE_IDENTITY_REGISTRY || '0x2E310C62A225033055E88B690F8d054ece8bcbC4', - YieldVault: import.meta.env.VITE_YIELD_VAULT_ADDRESS || '0xa05bDf67483EB6ba5CcA0dc81543DeD5Ed845Da7', - TokenFactory: import.meta.env.VITE_TOKEN_FACTORY || '0x7C75795Cf41ee32fB4FEB89964d7591F0a44BcfE', - PrimaryMarketplace: import.meta.env.VITE_PRIMARY_MARKETPLACE_ADDRESS || '0x034Ca27695555CEeB44CB62d59c4E3f95F4Ef504', - USDC: import.meta.env.VITE_USDC_ADDRESS || '0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238', - Faucet: import.meta.env.VITE_FAUCET || '0x26Da2F1a2de3295302Fd95eBA1A183dc8Ffd77a3', + AttestationRegistry: import.meta.env.VITE_ATTESTATION_REGISTRY || '', + TrustedIssuersRegistry: import.meta.env.VITE_TRUSTED_ISSUERS_REGISTRY || '', + IdentityRegistry: import.meta.env.VITE_IDENTITY_REGISTRY || '', + YieldVault: import.meta.env.VITE_YIELD_VAULT_ADDRESS || '', + TokenFactory: import.meta.env.VITE_TOKEN_FACTORY || '', + PrimaryMarketplace: import.meta.env.VITE_PRIMARY_MARKETPLACE_ADDRESS || '', + USDC: import.meta.env.VITE_USDC_ADDRESS || '', + stARB: import.meta.env.VITE_STARB_ADDRESS || '0x3172772883A4CfD4013280CA95370017f4a863f9', + Faucet: import.meta.env.VITE_FAUCET || '', } as const; -/* - "AttestationRegistry": "0x03FE7d3736402D140659e7bD92B64808E31C3f51", - "TrustedIssuersRegistry": "0xf63B563b6D438122cBC87f4356e60b8BB3Bc53E2", - "IdentityRegistry": "0x2E310C62A225033055E88B690F8d054ece8bcbC4", - "YieldVault": "0xa05bDf67483EB6ba5CcA0dc81543DeD5Ed845Da7", - "TokenFactory": "0x7C75795Cf41ee32fB4FEB89964d7591F0a44BcfE", - "PrimaryMarketplace": "0x034Ca27695555CEeB44CB62d59c4E3f95F4Ef504", - "USDC": "0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238", - "MockMETH": "0x4Ade8aAa0143526393EcadA836224EF21aBC6ac6", - "METHFaucet": "0xB50d0AC5D59E456C1f3EdB66403fd27eEbd155dB", - "MockFluxionDEX": "0x882eA0d81d445CF9e696869af4D007008281892D", - "SeniorPool": "0xc0AbF06aC81285C64de5e130682824B9828b1FAC", - "FluxionIntegration": "0x7351C8b33e9e5AE3cCf5a5380ec27e90fc8B82c7", - "LeverageVault": "0x202266854D99F96A98157ea51E8319E4a54e50d8", - "Faucet": "0x26Da2F1a2de3295302Fd95eBA1A183dc8Ffd77a3" */ /** @@ -69,6 +55,27 @@ export const USDC_ABI = [ inputs: [{ name: 'account', type: 'address' }], outputs: [{ type: 'uint256' }], }, + { + name: 'faucet', + type: 'function', + stateMutability: 'nonpayable', + inputs: [], + outputs: [], + }, +] as const; + +// MockStARB ABI - mint function for faucet +export const STARB_ABI = [ + { + name: 'mint', + type: 'function', + stateMutability: 'nonpayable', + inputs: [ + { name: 'to', type: 'address' }, + { name: 'amount', type: 'uint256' }, + ], + outputs: [], + }, ] as const; // PrimaryMarketplace ABI (investor-bidding.sh lines 229-232) diff --git a/src/lib/blockchain/leverage.contract.ts b/src/lib/blockchain/leverage.contract.ts index 9d7056a..dd0a6f9 100644 --- a/src/lib/blockchain/leverage.contract.ts +++ b/src/lib/blockchain/leverage.contract.ts @@ -1,20 +1,20 @@ /** - * Leverage Contract Addresses (Mantle Sepolia Testnet) + * Leverage Contract Addresses (arbitrum Sepolia Testnet) * Deployed on: 2025-12-31 */ export const LEVERAGE_CONTRACTS = { LeverageVault: import.meta.env.VITE_LEVERAGE_VAULT, - MockMETH: import.meta.env.VITE_MOCK_METH, + MockstARB: import.meta.env.VITE_MOCK_stARB, MockFluxionDEX: import.meta.env.VITE_MOCK_FLUXION_DEX, SeniorPool: import.meta.env.VITE_SENIOR_POOL, } as const; /** - * mETH (ERC20) ABI + * stARB (ERC20) ABI */ -export const METH_ABI = [ +export const stARB_ABI = [ { name: 'approve', type: 'function', @@ -54,12 +54,12 @@ export const LEVERAGE_VAULT_ABI = [ stateMutability: 'nonpayable', inputs: [ { name: 'user', type: 'address' }, - { name: 'mETHAmount', type: 'uint256' }, + { name: 'stARBAmount', type: 'uint256' }, { name: 'usdcToBorrow', type: 'uint256' }, { name: 'rwaToken', type: 'address' }, { name: 'rwaTokenAmount', type: 'uint256' }, { name: 'assetId', type: 'string' }, - { name: 'mETHPriceUSD', type: 'uint256' } + { name: 'stARBPriceUSD', type: 'uint256' } ], outputs: [{ name: 'positionId', type: 'uint256' }], }, @@ -72,7 +72,7 @@ export const LEVERAGE_VAULT_ABI = [ { components: [ { name: 'user', type: 'address' }, - { name: 'mETHCollateral', type: 'uint256' }, + { name: 'stARBCollateral', type: 'uint256' }, { name: 'usdcBorrowed', type: 'uint256' }, { name: 'rwaToken', type: 'address' }, { name: 'rwaTokenAmount', type: 'uint256' }, @@ -92,7 +92,7 @@ export const LEVERAGE_VAULT_ABI = [ stateMutability: 'view', inputs: [ { name: 'positionId', type: 'uint256' }, - { name: 'mETHPriceUSD', type: 'uint256' } + { name: 'stARBPriceUSD', type: 'uint256' } ], outputs: [{ type: 'uint256' }], } diff --git a/src/lib/blockchain/rainbowkit.config.ts b/src/lib/blockchain/rainbowkit.config.ts index 8b150d0..ed3f8f8 100644 --- a/src/lib/blockchain/rainbowkit.config.ts +++ b/src/lib/blockchain/rainbowkit.config.ts @@ -1,45 +1,16 @@ // src/lib/blockchain/rainbowkit.config.ts import { getDefaultConfig } from '@rainbow-me/rainbowkit'; -import { mainnet, sepolia, polygon, optimism, arbitrum } from 'wagmi/chains'; -import { type Chain } from 'wagmi/chains'; - -/** - * Mantle Sepolia Testnet Configuration - */ -export const mantleSepolia: Chain = { - id: 5003, - name: 'Mantle Sepolia', - nativeCurrency: { - name: 'MNT', - symbol: 'MNT', - decimals: 18, - }, - rpcUrls: { - default: { - http: ['https://rpc.sepolia.mantle.xyz'], - }, - public: { - http: ['https://rpc.sepolia.mantle.xyz'], - }, - }, - blockExplorers: { - default: { - name: 'Mantle Sepolia Explorer', - url: 'https://explorer.sepolia.mantle.xyz', - }, - }, - testnet: true, -}; +import { mainnet, sepolia, polygon, optimism, arbitrum, arbitrumSepolia } from 'wagmi/chains'; /** * RainbowKit Configuration * Configures supported chains and wallet connection - * Mantle Sepolia is set as the default chain + * Arbitrum Sepolia is set as the default chain */ export const rainbowKitConfig = getDefaultConfig({ appName: 'Open Assets', projectId: import.meta.env.VITE_WALLETCONNECT_PROJECT_ID || 'YOUR_PROJECT_ID', - chains: [mantleSepolia, sepolia, mainnet, polygon, optimism, arbitrum], + chains: [arbitrumSepolia, sepolia, mainnet, polygon, optimism, arbitrum], ssr: false, }); diff --git a/src/lib/network/NetworkContext.tsx b/src/lib/network/NetworkContext.tsx new file mode 100644 index 0000000..53f75e3 --- /dev/null +++ b/src/lib/network/NetworkContext.tsx @@ -0,0 +1,45 @@ +import React, { createContext, useContext, useCallback } from 'react'; +import type { NetworkConfig, NetworkFeatures, NetworkType } from './network.config'; + +interface NetworkContextValue { + network: NetworkConfig; + networkType: NetworkType; + isFeatureAvailable: (feature: keyof NetworkFeatures) => boolean; + networkPath: (path: string) => string; +} + +const NetworkContext = createContext(undefined); + +export const NetworkProviderInternal: React.FC<{ network: NetworkConfig; children: React.ReactNode }> = ({ network, children }) => { + const isFeatureAvailable = useCallback( + (feature: keyof NetworkFeatures) => { + return network.features[feature]; + }, + [network.features] + ); + + const networkPath = useCallback( + (path: string) => { + const cleanPath = path.startsWith('/') ? path : `/${path}`; + return `/${network.type}${cleanPath}`; + }, + [network.type] + ); + + const value: NetworkContextValue = { + network, + networkType: network.type, + isFeatureAvailable, + networkPath, + }; + + return {children}; +}; + +export const useNetwork = () => { + const context = useContext(NetworkContext); + if (context === undefined) { + throw new Error('useNetwork must be used within a NetworkProvider'); + } + return context; +}; diff --git a/src/lib/network/network.config.ts b/src/lib/network/network.config.ts new file mode 100644 index 0000000..e6a0923 --- /dev/null +++ b/src/lib/network/network.config.ts @@ -0,0 +1,42 @@ +export type NetworkType = 'arbitrum' | 'stellar'; + +export interface NetworkFeatures { + leverage: boolean; + faucet: boolean; + solvency: boolean; + secondaryMarket: boolean; + borrow: boolean; +} + +// src/lib/network/network.config.ts + +export interface NetworkConfig { + type: NetworkType; + displayName: string; + apiUrl: string; + explorerUrl: string; + features: NetworkFeatures; + walletType: 'evm' | 'stellar'; +} + +export const NETWORK_CONFIGS: Record = { + arbitrum: { + type: 'arbitrum', + displayName: 'Arbitrum', + apiUrl: import.meta.env.VITE_ARBITRUM_API_URL ?? import.meta.env.VITE_API_URL ?? 'http://localhost:3000', + explorerUrl: 'https://sepolia.arbiscan.io', + features: { leverage: true, faucet: true, solvency: true, secondaryMarket: true, borrow: true }, + walletType: 'evm', + }, + stellar: { + type: 'stellar', + displayName: 'Stellar', + apiUrl: import.meta.env.VITE_STELLAR_API_URL ?? 'http://localhost:3001', + explorerUrl: 'https://stellar.expert/explorer/testnet', + features: { leverage: false, faucet: false, solvency: true, secondaryMarket: true, borrow: true }, + walletType: 'stellar', + }, +}; + +export const SUPPORTED_NETWORKS: NetworkType[] = ['arbitrum', 'stellar']; +export const DEFAULT_NETWORK: NetworkType = 'arbitrum'; diff --git a/src/lib/utils/error-handler.ts b/src/lib/utils/error-handler.ts index 96626cc..b108ffb 100644 --- a/src/lib/utils/error-handler.ts +++ b/src/lib/utils/error-handler.ts @@ -25,7 +25,16 @@ export class APIError extends Error { export const handle401Unauthorized = (): void => { console.log('🔒 401 Unauthorized detected - Logging out user'); + const segment = window.location.pathname.split('/')[1]; + const network = ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; + // Clear all auth-related data from localStorage + ['arbitrum', 'stellar'].forEach(n => { + localStorage.removeItem(`${n}_access_token`); + localStorage.removeItem(`${n}_refresh_token`); + localStorage.removeItem(`${n}_authenticated_wallet_address`); + }); + localStorage.removeItem('access_token'); localStorage.removeItem('refresh_token'); localStorage.removeItem('authenticated_wallet_address'); @@ -34,8 +43,8 @@ export const handle401Unauthorized = (): void => { localStorage.removeItem('redirect_after_verification'); // Disconnect wallet by triggering a page reload to reset wagmi state - // This ensures the wallet connection is also cleared - window.location.href = '/'; + // Redirect to current network home + window.location.href = `/${network}`; }; export const handleAPIError = (error: any): never => { @@ -61,8 +70,11 @@ export const handleAPIError = (error: any): never => { localStorage.removeItem('user'); localStorage.removeItem('redirect_after_verification'); - // Redirect to auth page - window.location.href = '/'; + const segment = window.location.pathname.split('/')[1]; + const network = ['arbitrum', 'stellar'].includes(segment) ? segment : 'arbitrum'; + + // Redirect to auth page on current network + window.location.href = `/${network}`; throw new APIError(error.message, 401, 'VERIFICATION_REQUIRED'); } diff --git a/src/lib/utils/formatters.ts b/src/lib/utils/formatters.ts new file mode 100644 index 0000000..55b0a49 --- /dev/null +++ b/src/lib/utils/formatters.ts @@ -0,0 +1,68 @@ + +/** + * Formats token amounts handling both raw wei values (e.g. "1000000000000000000") + * and canonical decimal strings (e.g. "1.0000"). + * + * @param amount - The amount to format (string or number) + * @param decimals - The number of decimals for the token (default: 18) + * @returns The parsed number in canonical units + */ +export const parseTokenAmount = (amount: string | number | undefined | null, decimals: number = 18): number => { + if (amount === undefined || amount === null || amount === '') return 0; + + const strAmount = amount.toString(); + + // If it contains a decimal point, assume it's already in canonical format + if (strAmount.includes('.')) { + return parseFloat(strAmount); + } + + // If no decimal point, we need to guess if it's raw units or canonical integer + const value = Number(strAmount); + + if (isNaN(value)) return 0; + + // Heuristic based on decimals: + // For high-decimal tokens (e.g. 18 dec), Raw values are huge (1e18). + // For low-decimal tokens (e.g. 6 dec USDC), Raw values are smaller (1e6). + + // Threshold to distinguish Canonical Integer from Raw Integer. + // Values below threshold are treated as Canonical (e.g. "100" tokens). + // Values above are treated as Raw (e.g. "1000000" USDC wei). + + // If decimals > 9 (e.g. 18): Threshold 1e12 (1 Trillion). + // "100" < 1e12 -> 100 Tokens. + // "1e18" > 1e12 -> 1 Token. + + // If decimals <= 9 (e.g. 6): Threshold 1e5 (100,000). + // "100" < 1e5 -> 100 USDC. + // "1,000,000" (1 USDC Raw) > 1e5 -> 1 USDC. + + const threshold = decimals > 9 ? 1e12 : 1e5; + + if (value < threshold) { + return value; + } + + return value / Math.pow(10, decimals); +}; + +/** + * Formats a number as a localized string with specific decimals + */ +export const formatNumber = (value: number, maxDecimals: number = 2): string => { + return value.toLocaleString('en-US', { + minimumFractionDigits: 0, + maximumFractionDigits: maxDecimals + }); +}; + +/** + * Formats a currency value + */ +export const formatCurrency = (value: number, decimals: number = 2): string => { + return value.toLocaleString('en-US', { + minimumFractionDigits: decimals, + maximumFractionDigits: decimals + }); +}; diff --git a/src/lib/utils/portfolioChartGenerator.ts b/src/lib/utils/portfolioChartGenerator.ts index f84a87a..39fdf8c 100644 --- a/src/lib/utils/portfolioChartGenerator.ts +++ b/src/lib/utils/portfolioChartGenerator.ts @@ -1,5 +1,5 @@ // src/lib/utils/portfolioChartGenerator.ts -import type { PortfolioAsset } from '../api/portfolio.service'; +import type { PortfolioAsset } from '../../types/portfolio.types'; /** * Generate asset value chart data - smooth S-curve showing portfolio growth diff --git a/src/lib/utils/solvency-adapter.util.ts b/src/lib/utils/solvency-adapter.util.ts index 574b409..145505e 100644 --- a/src/lib/utils/solvency-adapter.util.ts +++ b/src/lib/utils/solvency-adapter.util.ts @@ -21,7 +21,7 @@ export function adaptCreditResponse( const availableCredit = parseInt(response.totalAvailableCredit) / 1_000_000; // Convert credit lines to collateral positions - const collateral: CollateralPosition[] = response.creditLines.map((line) => { + const collateral: CollateralPosition[] = response.creditLines.map((line: any) => { const amount = parseInt(line.collateralAmount); const valueUSD = parseInt(line.creditLimit) / 1_000_000; // Credit limit is based on collateral value diff --git a/src/main.tsx b/src/main.tsx index 9a0e4a1..5294d34 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -7,6 +7,23 @@ import { setupFetchInterceptor } from './lib/utils/fetch-interceptor' // Setup global fetch interceptor to handle 401 Unauthorized errors setupFetchInterceptor(); +// Clear stale wagmi state if it contains the old Mantle Sepolia chain (5003). +// This forces wagmi to default to Arbitrum Sepolia on the next load. +try { + const wagmiStore = localStorage.getItem('wagmi.store'); + if (wagmiStore) { + const parsed = JSON.parse(wagmiStore); + if (parsed?.state?.chainId === 5003) { + localStorage.removeItem('wagmi.store'); + console.log('🧹 Cleared stale Mantle wagmi chain state'); + } + } +} catch { + // ignore parse errors +} + +console.log('🚀 App starting...'); + createRoot(document.getElementById('root')!).render( diff --git a/src/pages/admin/layout/AdminLayout.page.tsx b/src/pages/admin/layout/AdminLayout.page.tsx index 42f4fe9..3018a99 100644 --- a/src/pages/admin/layout/AdminLayout.page.tsx +++ b/src/pages/admin/layout/AdminLayout.page.tsx @@ -10,26 +10,29 @@ import { List, LogOut, TrendingDown, + FileCheck, } from 'lucide-react'; import HeroBackground from '../../landing/HeroBackground'; import { NotificationBell } from '../../../components/notifications/NotificationBell'; import { authService } from '../../../lib/api/auth.service'; import { useEffect, useState } from 'react'; import { useAuthStore } from '../../../stores/auth.store'; +import { useNetwork } from '../../../lib/network/NetworkContext'; const AdminLayout = () => { const location = useLocation(); const [error, setError] = useState(''); const navigate = useNavigate(); const { user } = useAuthStore(); + const { networkPath } = useNetwork(); useEffect(() => { - + const verifyAuth = async () => { try { // Check if access token exists - + // Verify token with backend const currentUser = await authService.getCurrentUser(); @@ -37,7 +40,7 @@ const AdminLayout = () => { if (currentUser.role !== 'ADMIN') { setError('Unauthorized access. You do not have permission to access the admin dashboard.'); setTimeout(() => { - navigate('/', { replace: true }); + navigate(networkPath('/'), { replace: true }); }, 2000); return; } @@ -47,7 +50,7 @@ const AdminLayout = () => { console.error('Authentication verification failed:', err); setError(err.message || 'Authentication failed. Redirecting to login...'); setTimeout(() => { - navigate('/', { replace: true }); + navigate(networkPath('/'), { replace: true }); }, 2000); } }; @@ -79,56 +82,66 @@ const AdminLayout = () => { return () => { document.head.removeChild(style); }; - }, [navigate, user]); + }, [navigate, user, networkPath]); const navigation = [ { name: 'Overview', - path: '/admin', + path: networkPath('/admin'), icon: LayoutDashboard, }, { name: 'Listings', - path: '/admin/listings', + path: networkPath('/admin/listings'), icon: List, }, { name: 'Loans', - path: '/admin/loans', + path: networkPath('/admin/loans'), icon: TrendingDown, }, { name: 'Compliance', - path: '/admin/compliance', + path: networkPath('/admin/compliance'), icon: ShieldCheck, }, { name: 'Operations', - path: '/admin/operations', + path: networkPath('/admin/operations'), icon: Network, }, { name: 'Payouts', - path: '/admin/payouts', + path: networkPath('/admin/payouts'), icon: DollarSign, }, { name: 'Settlements', - path: '/admin/settlements', + path: networkPath('/admin/settlements'), icon: Coins, }, + { + name: 'Trustlines', + path: networkPath('/admin/trustlines'), + icon: FileCheck, + }, ]; const isActive = (path: string) => { - if (path === '/admin') { - return location.pathname === '/admin'; + // Exact match for root admin path to separate it from sub-paths if needed, + // but typically startsWith is fine if ordered correctly or if exact check is preferred for root. + // Since all paths start with /network/admin, we need to be careful. + // For 'Overview' which is likely /network/admin, we want exact match or it highlights for everything. + const overviewPath = networkPath('/admin'); + if (path === overviewPath) { + return location.pathname === overviewPath; } return location.pathname.startsWith(path); }; const handleLogout = () => { authService.logout(); - navigate('/'); + navigate(networkPath('/')); }; return ( @@ -152,9 +165,9 @@ const AdminLayout = () => {
Logo navigate('/')} + onClick={() => navigate(networkPath('/'))} className='cursor-pointer' /> @@ -172,11 +185,10 @@ const AdminLayout = () => { {item.name} diff --git a/src/pages/admin/listings/Listings.page.tsx b/src/pages/admin/listings/Listings.page.tsx index dae3ed8..555db87 100644 --- a/src/pages/admin/listings/Listings.page.tsx +++ b/src/pages/admin/listings/Listings.page.tsx @@ -1,7 +1,6 @@ // src/pages/admin/listings/Listings.page.tsx import { useEffect, useState } from 'react'; -import { ethers } from 'ethers'; import { adminService } from '../../../lib/api/admin.service'; import type { ApiAdminAsset, AuctionClearingPriceInfo } from '../../../types/admin.types'; import { Badge } from '../../../components/ui/badge'; @@ -83,7 +82,8 @@ const ListingsPage = () => { try { const info = await adminService.getAuctionClearingPriceInfo(asset.assetId); setClearingInfo(info); - setClearingPrice( (Number(info.suggestedPrice) / 1e6).toFixed(2) ); + const sp = parseFloat(info.suggestedPrice); + setClearingPrice((sp > 1000 ? sp / 1e6 : sp).toString()); } catch (error) { toastError('Failed to load auction data', 'Could not load bidding data for this auction.'); } finally { @@ -99,22 +99,64 @@ const ListingsPage = () => { setIsEndingAuction(true); try { - const clearingPriceWei = ethers.parseUnits(clearingPrice, 6).toString(); + const isStellar = selectedAsset.token?.address && !selectedAsset.token.address.startsWith('0x'); - info('Ending auction...', 'This may take a moment. The backend is processing the on-chain transaction.'); + if (isStellar) { + // Stellar Path + const [code, issuer] = selectedAsset.token.address.split(':'); + if (!code || !issuer) throw new Error('Invalid Stellar token address format'); - const result = await adminService.endAuctionOnChain(selectedAsset.assetId, clearingPriceWei); + info('Ending Stellar Auction...', 'Please sign the transactions in your wallet.'); - if (!result.success) { - throw new Error(result.message || 'Failed to end auction.'); - } + // 1. Execute on-chain (Client-side signing via Freighter) + // We assume the connected wallet is the admin/issuer + // Need to import stellarService dynamically or statically? It's already available in lib + const { stellarService } = await import('../../../lib/api/stellar.service'); + const { isConnected, getAddress } = await import('@stellar/freighter-api'); + + if (!(await isConnected())) { + throw new Error('Freighter wallet not connected'); + } + const adminAddress = await getAddress(); + if (!adminAddress || !adminAddress.address) throw new Error('Could not get admin address'); + + const result = await stellarService.endAuction( + adminAddress.address, + code, + issuer, + selectedAsset.tokenParams.totalSupply || '0', // Full supply must be in contract + clearingPrice + ); + + // 2. Notify Backend + info('Syncing status...', 'Notifying backend of auction end.'); + await adminService.notifyAuctionEnded( + selectedAsset.assetId, + parseFloat(clearingPrice).toFixed(4), // Pass canonical 4-decimal string + result.txHash + ); + + success('Auction Ended Successfully', `Auction cleared on Stellar! TX: ${result.txHash.slice(0, 10)}...`); - success('Auction Ended Successfully', `${selectedAsset.metadata.invoiceNumber} has been successfully ended. TX: ${result.transactionHash.slice(0,10)}...`); + } else { + // EVM Path (Backend handles signing) + const canonicalClearingPrice = parseFloat(clearingPrice).toFixed(4); + info('Ending auction...', 'This may take a moment. The backend is processing the on-chain transaction.'); + + const result = await adminService.endAuctionOnChain(selectedAsset.assetId, canonicalClearingPrice); + + if (!result.success) { + throw new Error(result.message || 'Failed to end auction.'); + } + + success('Auction Ended Successfully', `${selectedAsset.metadata.invoiceNumber} has been successfully ended. TX: ${result.transactionHash.slice(0, 10)}...`); + } setIsModalOpen(false); fetchAssets(); } catch (err: unknown) { + console.error('End auction error:', err); const error = err as Error; toastError('Failed to End Auction', error.message || 'An unknown error occurred.'); } finally { @@ -187,9 +229,8 @@ const ListingsPage = () => { {assets.length > 0 ? ( assets.map((asset, index) => ( - +
{asset.metadata.invoiceNumber}
{asset.assetId}
@@ -213,10 +254,10 @@ const ListingsPage = () => {
- {asset.assetType === 'AUCTION' && (asset.status === 'ENDED' || asset.status === 'AUCTION_DECLARED') ? ( + {asset.assetType === 'AUCTION' && (asset.status === 'ENDED' || asset.status === 'AUCTION_DECLARED') ? ( asset.listing?.clearingPrice ? ( - Announced: ${asset.listing.clearingPrice ? (parseFloat(asset.listing.clearingPrice) / 1e6).toFixed(2) : 'N/A'} + Announced: ${asset.listing.clearingPrice ? (() => { const cp = parseFloat(asset.listing.clearingPrice); return (cp > 1000 ? cp / 1e6 : cp).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 4 }); })() : 'N/A'} ) : (
- {clearingInfo &&

Suggested: ${(Number(clearingInfo.suggestedPrice) / 1e6).toFixed(2)}

} + {clearingInfo &&

Suggested: ${(() => { const sp = parseFloat(clearingInfo.suggestedPrice); return (sp > 1000 ? sp / 1e6 : sp).toFixed(4); })()}

}
{isLoadingInfo ? (
- +
) : clearingInfo && (
@@ -275,13 +317,19 @@ const ListingsPage = () => {

All Bids

- {clearingInfo.allBids.map((bid, i) => ( -
- {bid.bidder.slice(0, 10)}... - {(Number(bid.tokenAmount) / 1e18).toLocaleString()} tokens - ${(Number(bid.price) / 1e6).toFixed(2)} -
- ))} + {clearingInfo.allBids.map((bid, i) => { + const amount = parseFloat(bid.tokenAmount); + const canonicalAmount = amount > 1e9 ? amount / 1e18 : amount; + const price = parseFloat(bid.price); + const canonicalPrice = price > 1000 ? price / 1e6 : price; + return ( +
+ {bid.bidder.slice(0, 10)}... + {canonicalAmount.toLocaleString()} tokens + ${canonicalPrice.toFixed(4)} +
+ ); + })}
)} diff --git a/src/pages/admin/loans/LoansView.page.tsx b/src/pages/admin/loans/LoansView.page.tsx index 505cedc..e7e977c 100644 --- a/src/pages/admin/loans/LoansView.page.tsx +++ b/src/pages/admin/loans/LoansView.page.tsx @@ -2,6 +2,7 @@ import { useState, useEffect } from 'react'; import { AlertCircle, RefreshCw, AlertTriangle, TrendingDown, CheckCircle } from 'lucide-react'; import { solvencyService } from '../../../lib/api/solvency.service'; import { Button } from '../../../components/ui/button'; +import { useNetwork } from '../../../lib/network/NetworkContext'; import type { AdminPosition } from '../../../types/admin.types'; import { ethers } from 'ethers'; @@ -35,7 +36,7 @@ export function LoansView() { isOpen: false, title: '', message: '', - onConfirm: () => {}, + onConfirm: () => { }, isDangerous: false, }); @@ -105,9 +106,29 @@ export function LoansView() { setFilteredPositions(filtered); }; + const { networkType } = useNetwork(); + useEffect(() => { - fetchPositions(); - }, []); + if (networkType !== 'stellar') { + fetchPositions(); + } + }, [networkType]); + + if (networkType === 'stellar') { + return ( +
+
+ +
+

Loan Management

+

Coming Soon on Stellar

+

+ Loan functionalities are currently being developed for the Stellar network. + Please switch to arbitrum to manage loans. +

+
+ ); + } useEffect(() => { applyFilter(positions, activeFilter); @@ -429,95 +450,94 @@ export function LoansView() { {filteredPositions.map((position) => ( position.borrowedAmountFormatted !== '$0.00' && position.outstandingDebtFormatted !== '$0.00' && ( - - - #{position.positionId} - - - {position.userAddress.slice(0, 6)}...{position.userAddress.slice(-4)} - - -
-

{position.collateralValueFormatted}

-

{position.collateralTokenType}

-
- - - {position.borrowedAmountFormatted} - - - {position.outstandingDebtFormatted} - - - - 0 ? 'bg-red-100 text-red-700' : 'bg-gray-100 text-gray-600' - }`}> - {Math.min(position.missedPayments, 3)} / 3 - - - - {getStatusBadge(position.status)} - - -
- {/* Mark Missed Payment - Available for active positions */} - {position.status === 'ACTIVE' && position.missedPayments < 3 && ( - - )} - - {/* Mark Defaulted - Available after 3 missed payments */} - {position.status === 'ACTIVE' && position.missedPayments >= 3 && !position.isDefaulted && ( - - )} - - {/* Liquidate - Available for liquidatable positions */} - {( - - )} - - {/* Settle Liquidation - Available for liquidated positions after maturity */} - {position.status === 'LIQUIDATED' && ( - - )} - - {/* Sync - Always available */} - -
- - ) + + + #{position.positionId} + + + {position.userAddress.slice(0, 6)}...{position.userAddress.slice(-4)} + + +
+

{position.collateralValueFormatted}

+

{position.collateralTokenType}

+
+ + + {position.borrowedAmountFormatted} + + + {position.outstandingDebtFormatted} + + + + 0 ? 'bg-red-100 text-red-700' : 'bg-gray-100 text-gray-600' + }`}> + {Math.min(position.missedPayments, 3)} / 3 + + + + {getStatusBadge(position.status)} + + +
+ {/* Mark Missed Payment - Available for active positions */} + {position.status === 'ACTIVE' && position.missedPayments < 3 && ( + + )} + + {/* Mark Defaulted - Available after 3 missed payments */} + {position.status === 'ACTIVE' && position.missedPayments >= 3 && !position.isDefaulted && ( + + )} + + {/* Liquidate - Available for liquidatable positions */} + {( + + )} + + {/* Settle Liquidation - Available for liquidated positions after maturity */} + {position.status === 'LIQUIDATED' && ( + + )} + + {/* Sync - Always available */} + +
+ + ) ))} @@ -555,11 +575,10 @@ export function LoansView() {
@@ -568,10 +576,24 @@ const OperationsViewPage = () => { {/* Token Supply */}
- {(parseFloat(asset.tokenParams.totalSupply) / 1e18).toLocaleString()} + {( + () => { + const rawSupply = parseFloat(asset.tokenParams.totalSupply); + // Heuristic: If supply > 1 billion (likely wei), divide by 1e18. + // Otherwise assume canonical. + // 100 tokens = 100 (canonical) or 100 * 1e18 (wei) + return (rawSupply > 1e9 ? rawSupply / 1e18 : rawSupply).toLocaleString(undefined, { maximumFractionDigits: 4 }); + } + )()}
- @ ${(parseFloat(asset.tokenParams.pricePerToken) / 1e6).toFixed(2)} + @ ${( + () => { + const raw = parseFloat(asset.tokenParams.pricePerToken); + // Heuristic: if price > 1000, assume raw 6-decimal (1e6) + return (raw > 1000 ? raw / 1e6 : raw).toFixed(4); + } + )()}
@@ -667,12 +689,12 @@ const OperationsViewPage = () => {

- Register Asset on Mantle + Register Asset on {networkName}

- This will register the asset on Mantle blockchain with BlobID and attestation hash. + This will register the asset on {networkName} blockchain with BlobID and attestation hash.

{/* Asset Details */} @@ -708,21 +730,30 @@ const OperationsViewPage = () => {
BlobID: -

{mockBlobId}

+

+ {selectedAsset.cryptography?.assetIdBytes32 || 'Pending Generation'} +

Attestation Hash: -

{mockAttestationHash}

+

+ {selectedAsset.attestation?.hash || 'Pending Attestation'} +

Registry Contract: -

0x1234...7890

+

+ {networkType === 'stellar' + ? import.meta.env.VITE_STELLAR_ASSET_REGISTRY + : import.meta.env.VITE_ATTESTATION_REGISTRY + } +

@@ -734,7 +765,7 @@ const OperationsViewPage = () => { disabled={processing} className="flex-1 font-gellix font-medium rounded-xl bg-black hover:bg-black/90 text-white shadow-sm" > - {processing ? 'Registering on Mantle...' : 'Confirm Registration'} + {processing ? `Registering on ${networkName}...` : 'Confirm Registration'}

- Deploy ERC-3643 Token + Deploy {tokenStandard} Token

- This will deploy a compliant ERC-3643 security token for the asset. + This will deploy a compliant {tokenStandard} security token for the asset.

{/* Token Details */} @@ -792,11 +823,18 @@ const OperationsViewPage = () => {
Total Supply: -

{(parseFloat(selectedAsset.tokenParams.totalSupply) / 1e18).toLocaleString()}

+

+ {( + () => { + const raw = parseFloat(selectedAsset.tokenParams.totalSupply); + return (raw > 1e9 ? raw / 1e18 : raw).toLocaleString(undefined, { maximumFractionDigits: 4 }); + } + )()} +

Token Standard: -

ERC-3643

+

{tokenStandard}

@@ -811,21 +849,21 @@ const OperationsViewPage = () => {
Network: -

Mantle Network

+

{networkName}

- Token Address (Preview): -

{mockTokenAddress}

+ Token Address: +

Pending Deployment

Contract Type: -

ERC-3643 Compliant Security Token

+

{tokenStandard} Compliant Security Token

diff --git a/src/pages/admin/payout/PayoutView.page.tsx b/src/pages/admin/payout/PayoutView.page.tsx index 11b5f04..f844f30 100644 --- a/src/pages/admin/payout/PayoutView.page.tsx +++ b/src/pages/admin/payout/PayoutView.page.tsx @@ -3,6 +3,7 @@ import { useState, useEffect } from 'react'; import { DollarSign, Check, Loader2, ExternalLink } from 'lucide-react'; import { adminService } from '../../../lib/api/admin.service'; import { PageLoader } from '../../../components/ui/page-loader'; +import { useNetwork } from '../../../lib/network/NetworkContext'; interface PayoutAsset { assetId: string; invoiceNumber: string; @@ -17,6 +18,7 @@ interface PayoutAsset { } const PayoutViewPage = () => { + const { network } = useNetwork(); const [assets, setAssets] = useState([]); const [loading, setLoading] = useState(true); const [payingOut, setPayingOut] = useState(null); @@ -66,9 +68,9 @@ const PayoutViewPage = () => { console.log('All assets:', allAssets); - // Filter for LISTED, ENDED, or AUCTION_DECLARED assets - const filteredAssets = allAssets.filter((asset: any) => - ['LISTED', 'AUCTION_DECLARED'].includes(asset.status) + // Filter for LISTED, ENDED, PAYOUT_COMPLETE, or AUCTION_DECLARED assets + const filteredAssets = allAssets.filter((asset: any) => + ['LISTED', 'AUCTION_DECLARED', 'ENDED', 'PAYOUT_COMPLETE'].includes(asset.status) ); console.log('Filtered assets for payout:', filteredAssets); @@ -77,31 +79,27 @@ const PayoutViewPage = () => { const payoutAssets: PayoutAsset[] = filteredAssets .map((asset: any) => { // Parse sold tokens - const soldRaw = asset.listing?.sold || '0'; - const sold = typeof soldRaw === 'string' - ? (soldRaw.length >= 18 ? parseFloat(soldRaw) / 1e18 : parseFloat(soldRaw)) - : soldRaw; + const getCanonical = (val: string | number) => { + if (!val) return 0; + const r = typeof val === 'string' ? parseFloat(val) : val; + return r > 1e9 ? r / 1e18 : r; + }; + const sold = getCanonical(asset.listing?.sold || '0'); // Parse total supply - const totalSupplyRaw = asset.tokenParams?.totalSupply || '0'; - const totalSupply = typeof totalSupplyRaw === 'string' - ? (totalSupplyRaw.length > 18 ? parseFloat(totalSupplyRaw) / 1e18 : parseFloat(totalSupplyRaw)) - : totalSupplyRaw; + const totalSupply = getCanonical(asset.tokenParams?.totalSupply || '0'); - // Parse price (USDC with 6 decimals) - // For STATIC assets: use listing.price - // For AUCTION assets: use listing.reservePrice - // Backend stores prices in 6 decimals (e.g., 30000 = $0.03, 150000 = $0.15) + // Parse price (USDC) + // Heuristic: if > 1000, assume raw 6-decimal (e.g. 850000 = $0.85). + // If < 1000, assume canonical (e.g. 0.85 = $0.85). const priceRaw = asset.assetType === 'AUCTION' ? (asset.listing?.clearingPrice || '0') : (asset.listing?.price || asset.tokenParams?.pricePerToken || '0'); - // Always divide by 1e6 since backend stores in 6 decimals - const priceInUsdc = typeof priceRaw === 'string' - ? parseFloat(priceRaw) / 1e6 - : priceRaw / 1e6; + const pVal = parseFloat(priceRaw as string); + const priceInUsdc = pVal > 1000 ? pVal / 1e6 : pVal; - // Calculate total raised (sold tokens * price per token in USDC) + // Calculate total raised const totalRaised = sold * priceInUsdc; console.log(`Asset ${asset.assetId}:`, { @@ -143,7 +141,7 @@ const PayoutViewPage = () => { console.log(`Executing payout for asset: ${assetId}`); - if (assets.find(asset => asset.assetId === assetId)?.status && ['PAYOUT_COMPLETE', 'ENDED'].includes(assets.find(asset => asset.assetId === assetId)?.status || '')) { + if (assets.find(asset => asset.assetId === assetId)?.status && ['PAYOUT_COMPLETE'].includes(assets.find(asset => asset.assetId === assetId)?.status || '')) { console.log('Payout already executed for this asset.'); return; } @@ -200,7 +198,7 @@ const PayoutViewPage = () => {

Transaction:{' '} { {assets.map((asset, index) => ( - +

diff --git a/src/pages/admin/settlements/SettlementView.page.tsx b/src/pages/admin/settlements/SettlementView.page.tsx index 9405178..4140f0b 100644 --- a/src/pages/admin/settlements/SettlementView.page.tsx +++ b/src/pages/admin/settlements/SettlementView.page.tsx @@ -14,6 +14,7 @@ import { } from 'lucide-react'; import { useAdminStore, type AdminAsset } from '../../../stores/admin.store'; import { adminService } from '../../../lib/api/admin.service'; +import { useNetwork } from '../../../lib/network/NetworkContext'; import { Button } from '../../../components/ui/button'; import { Input } from '../../../components/ui/input'; import { PageLoader } from '../../../components/ui/page-loader'; @@ -45,6 +46,7 @@ interface Settlement { const SettlementViewPage = () => { const { assetsForSettlement: payoutCompleteAssets, isLoading, error, fetchAdminDashboardData } = useAdminStore(); + const { network, networkType } = useNetwork(); // Modal state const [selectedAsset, setSelectedAsset] = useState(null); @@ -371,7 +373,12 @@ const SettlementViewPage = () => {

- {(parseFloat(asset.tokenParams.totalSupply) / 1e18).toLocaleString()} + {( + () => { + const raw = parseFloat(asset.tokenParams.totalSupply); + return (raw > 1e9 ? raw / 1e18 : raw).toLocaleString(undefined, { maximumFractionDigits: 4 }); + } + )()}

@@ -416,13 +423,16 @@ const SettlementViewPage = () => {

Blockchain Explorer

{asset.token?.address ? (
e.stopPropagation()} > - View on Mantlescan + View on {network.displayName} Explorer ) : ( diff --git a/src/pages/admin/trustline/TrustlineRequests.page.tsx b/src/pages/admin/trustline/TrustlineRequests.page.tsx new file mode 100644 index 0000000..16035c6 --- /dev/null +++ b/src/pages/admin/trustline/TrustlineRequests.page.tsx @@ -0,0 +1,126 @@ +import { useEffect, useState } from 'react'; +import { Button } from '../../../components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '../../../components/ui/card'; +import { Badge } from '../../../components/ui/badge'; +import { trustlineService } from '../../../lib/api/trustline.service'; +import type { TrustlineRequest } from '../../../lib/api/trustline.service'; +import { useAuthStrategy } from '../../../lib/auth/AuthStrategyContext'; +import { PageLoader } from '../../../components/ui/page-loader'; + +export default function TrustlineRequestsPage() { + const [requests, setRequests] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [isProcessing, setIsProcessing] = useState(null); + const { address } = useAuthStrategy(); + + const fetchRequests = async () => { + try { + setIsLoading(true); + const data = await trustlineService.getAdminRequests({ status: 'PENDING' }); + // API returns { requests: TrustlineRequest[]; totalCount: number; ... } + setRequests(data.requests || []); + } catch (error) { + console.error('Failed to fetch trustline requests:', error); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + fetchRequests(); + }, []); + + const handleApprove = async (request: TrustlineRequest) => { + if (!address) return; + + try { + setIsProcessing(request.requestId); + console.log(`Approving request ${request.requestId}...`); + + await trustlineService.approveTrustline({ + requestId: request.requestId, + adminWallet: address, + }); + + // Refresh list + await fetchRequests(); + } catch (error) { + console.error('Failed to approve trustline:', error); + alert('Failed to approve trustline. See console for details.'); + } finally { + setIsProcessing(null); + } + }; + + if (isLoading) { + return ; + } + + return ( +
+
+
+

Trustline Requests

+

Approve investor trustlines for Stellar assets

+
+ +
+ + + + Pending Requests + + +
+ + + + + + + + + + + + + {requests.length === 0 ? ( + + + + ) : ( + requests.map((request) => ( + + + + + + + + + )) + )} + +
DateInvestorAsset CodeAsset IDStatusAction
+ No pending trustline requests found. +
{new Date(request.createdAt).toLocaleDateString()}{request.investorAddress}{request.assetCode || 'N/A'}{request.assetId} + + {request.status} + + + +
+
+
+
+
+ ); +} diff --git a/src/pages/borrow/BorrowPage.tsx b/src/pages/borrow/BorrowPage.tsx index 856ca64..e2cafc2 100644 --- a/src/pages/borrow/BorrowPage.tsx +++ b/src/pages/borrow/BorrowPage.tsx @@ -10,11 +10,14 @@ import { Loader2 } from 'lucide-react'; import { NotificationBell } from '../../components/notifications/NotificationBell'; import { authService } from '../../lib/api/auth.service'; import HeroBackground from '../landing/HeroBackground'; +import { useNetwork } from '../../lib/network/NetworkContext'; +import { ComingSoon } from '../../components/common/ComingSoon'; const BorrowPage = () => { const { address, isConnected } = useAccount(); const { disconnect } = useDisconnect(); const navigate = useNavigate(); + const { networkPath, networkType } = useNetwork(); const { creditData, isLoading: isCreditLoading, refetch: refetchCredit } = useCreditData(address); @@ -22,7 +25,7 @@ const BorrowPage = () => { const handlelogout = () => { authService.logout(); disconnect(); - navigate('/'); // Redirect to home or login page after logout + navigate(networkPath('/')); // Redirect to home or login page after logout }; useEffect(() => { @@ -48,17 +51,17 @@ const BorrowPage = () => {
{/* Logo */} Logo navigate('/')} + onClick={() => navigate(networkPath('/'))} />
{/* Center: Navigation */}
- + ); }; diff --git a/src/pages/borrow/components/DepositCollateralModal.tsx b/src/pages/borrow/components/DepositCollateralModal.tsx index 6ee16b9..8b0b5e1 100644 --- a/src/pages/borrow/components/DepositCollateralModal.tsx +++ b/src/pages/borrow/components/DepositCollateralModal.tsx @@ -11,7 +11,8 @@ import { useAccount } from 'wagmi'; import { ethers } from 'ethers'; import { useCallback } from 'react'; import { X } from 'lucide-react'; -import { portfolioService, type PortfolioAsset } from '../../../lib/api/portfolio.service'; +import { portfolioService } from '../../../lib/api/portfolio.service'; +import type { PortfolioAsset } from '../../../types/portfolio.types'; import { assetService } from '../../../lib/api/asset.service'; import { solvencyContractService } from '../../../lib/api/solvency-contract.service'; import { solvencyService } from '../../../lib/api/solvency.service'; @@ -535,7 +536,7 @@ export const DepositCollateralModal = ({ {txHash && ( {txHash && ( {txHash && ( {txHash && ( { tokenSymbol="USDC" tokenDecimals={6} tokenImage="https://cryptologos.cc/logos/usd-coin-usdc-logo.png" - tokenAddress="0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238" + tokenAddress="0xa6887882e7430862150F7C4FF5AE192966c6e1d2" faucetAmount={1000} description="Receive 1,000 testnet USDC to your connected wallet." /> )} diff --git a/src/pages/issuer/asset-details/AssetDetails.page.tsx b/src/pages/issuer/asset-details/AssetDetails.page.tsx index 209c838..b8b274a 100644 --- a/src/pages/issuer/asset-details/AssetDetails.page.tsx +++ b/src/pages/issuer/asset-details/AssetDetails.page.tsx @@ -7,12 +7,15 @@ import { Tag, } from 'lucide-react'; +import { useNetwork } from '../../../lib/network/NetworkContext'; + interface AssetDetailsPageProps { asset: any; } const AssetDetailsPage = ({ asset }: AssetDetailsPageProps) => { const navigate = useNavigate(); + const { networkPath } = useNetwork(); const [timeLeft, setTimeLeft] = useState(''); useEffect(() => { @@ -102,7 +105,7 @@ const AssetDetailsPage = ({ asset }: AssetDetailsPageProps) => {
diff --git a/src/pages/marketplace/asset/AssetDetails.page.tsx b/src/pages/marketplace/asset/AssetDetails.page.tsx index b8a55be..717f57c 100644 --- a/src/pages/marketplace/asset/AssetDetails.page.tsx +++ b/src/pages/marketplace/asset/AssetDetails.page.tsx @@ -1,9 +1,9 @@ // src/pages/marketplace/asset/AssetDetails.page.tsx import { useEffect, useState, useCallback } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; -import { useAccount, useReadContract, useWriteContract } from 'wagmi'; -import { ethers } from 'ethers'; +import { useReadContract, useWriteContract, usePublicClient } from 'wagmi'; import { formatUnits } from 'viem'; +import { parseTokenAmount } from '../../../lib/utils/formatters'; import type { PurchaseHistoryResponse } from '../../../types/marketplace.types'; import { useMarketplaceStore } from '../../../stores/marketplace.store'; import { contractService } from '../../../lib/api/contract.service'; @@ -15,8 +15,13 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../../components/ui import { AreaChart, XAxis, YAxis, Tooltip, ResponsiveContainer, Area } from 'recharts'; import { useLeverageStore } from '../../../stores/leverage.store'; import { parseUnits } from 'viem'; -import { LEVERAGE_CONTRACTS, METH_ABI } from '../../../lib/blockchain/leverage.contract'; +import { LEVERAGE_CONTRACTS, stARB_ABI } from '../../../lib/blockchain/leverage.contract'; import { PageLoader } from '../../../components/ui/page-loader'; +import { useAuthStrategy } from '../../../lib/auth/AuthStrategyContext'; +import { useNetwork } from '../../../lib/network/NetworkContext'; +import { ComingSoon } from '../../../components/common/ComingSoon'; +import { stellarService } from '../../../lib/api/stellar.service'; +import { trustlineService } from '../../../lib/api/trustline.service'; // USDC Contract Address const USDC_ADDRESS = (import.meta.env.VITE_USDC_ADDRESS || '0x9A54Bad93a00Bf1232D4e636f5e53055Dc0b8238') as `0x${string}`; @@ -34,10 +39,15 @@ const USDC_ABI = [ const AssetDetailsPage = () => { const { assetId } = useParams<{ assetId: string }>(); - const { address } = useAccount(); + const { address } = useAuthStrategy(); + const { networkType, networkPath } = useNetwork(); + const isEvm = networkType === 'arbitrum'; + // Only pass address to wagmi hooks if on EVM network + const evmAddress = (isEvm && address) ? address as `0x${string}` : undefined; + const navigate = useNavigate(); const { currentAsset: asset, isLoadingAsset, error, fetchAssetDetails } = useMarketplaceStore(); - const { methPrice, fetchMethPrice, isLoading: isLeverageLoading } = useLeverageStore(); + const { stARBPrice, fetchstARBPrice, isLoading: isLeverageLoading } = useLeverageStore(); const [tokensToBuy, setTokensToBuy] = useState(''); const [isPurchasing, setIsPurchasing] = useState(false); @@ -53,78 +63,112 @@ const AssetDetailsPage = () => { const [isApproving, setIsApproving] = useState(false); const [leveragePurchaseStatus, setLeveragePurchaseStatus] = useState(null); - // Calculate required mETH based on token input - // Formula: Required mETH = (Tokens * TokenPrice * 1.5) / mETHPrice + // Stellar Trustline State + const [needsTrustline, setNeedsTrustline] = useState(false); + const [trustlineStatus, setTrustlineStatus] = useState<'APPROVED' | 'PENDING' | 'NOT_REQUESTED' | 'checking'>('checking'); + const [isCheckingTrust, setIsCheckingTrust] = useState(false); + const [isAddingTrust, setIsAddingTrust] = useState(false); + const [trustlineError, setTrustlineError] = useState(null); + + // Calculate required stARB based on token input + // Formula: Required stARB = (Tokens * TokenPrice * 1.5) / stARBPrice // 1.5 (150%) is the required collateralization ratio (backend validation) - const calculatedMethAmount = (() => { - if (!leverageTokenInput || !asset?.tokenParams?.pricePerToken || !methPrice) return 0; + const calculatedstARBAmount = (() => { + if (!leverageTokenInput || !asset?.tokenParams?.pricePerToken) return 0; const tokens = parseFloat(leverageTokenInput); - const tokenPrice = parseFloat(asset.tokenParams.pricePerToken); // USDC Wei (6 decimals) - const methPriceVal = methPrice; // USDC Wei (6 decimals) + if (tokens <= 0) return 0; + + // Backend sends canonical 4-decimal values (e.g. "0.8500") + const tokenPrice = parseFloat(asset.tokenParams.pricePerToken); + const stARBPriceVal = stARBPrice; - // Total Value in USDC Wei = Tokens * TokenPrice - // Required Collateral Value = Total Value * 1.5 - // Required mETH = Required Collateral Value / mETHPrice + console.log('DEBUG stARB calc:', { tokens, tokenPrice, stARBPriceVal, leverageTokenInput }); - const meth = (tokens * tokenPrice * 1.5) / methPriceVal; + if (!stARBPriceVal || stARBPriceVal <= 0) return 0; + + // Required stARB = (Tokens * TokenPrice * 1.5) / stARBPrice + const stARB = (tokens * tokenPrice * 1.5) / stARBPriceVal; // Add 1 USDC buffer to prevent "insufficient collateral" due to micro-rounding errors - // 1 USDC = 1e6 units - const buffer = (1.0 * 1e6) / methPriceVal; + const buffer = 1.0 / stARBPriceVal; - return meth + buffer; + return stARB + buffer; })(); - const calculatedMethString = calculatedMethAmount > 0 ? calculatedMethAmount.toFixed(6) : ''; + const calculatedstARBString = calculatedstARBAmount > 0 ? calculatedstARBAmount.toFixed(6) : ''; + + // Stellar USDC Balance State + const [stellarUsdcBalance, setStellarUsdcBalance] = useState('0'); + + // Fetch Stellar USDC Balance + const fetchStellarBalance = useCallback(async () => { + // Only fetch if on Stellar network and address is available + if (networkType === 'stellar' && address) { + try { + const stellarUsdcIssuer = import.meta.env.VITE_STELLAR_USDC_ISSUER || 'GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5'; + const bal = await stellarService.getAccountBalance(address, 'USDC', stellarUsdcIssuer); + setStellarUsdcBalance(bal); + } catch (error) { + console.error('Failed to fetch Stellar USDC balance:', error); + } + } + }, [networkType, address]); - // Read USDC Balance directly using Wagmi + useEffect(() => { + fetchStellarBalance(); + }, [fetchStellarBalance]); + + // Read USDC Balance directly using Wagmi (EVM) const { data: usdcBalanceRaw, refetch: refetchUsdcBalance } = useReadContract({ address: USDC_ADDRESS, abi: USDC_ABI, functionName: 'balanceOf', - args: address ? [address] : undefined, + args: evmAddress ? [evmAddress] : undefined, query: { - enabled: !!address, // Only run when address exists + enabled: !!evmAddress, // Only run when address exists and is EVM } }); - // Format USDC balance (6 decimals) - const usdcBalance = usdcBalanceRaw ? formatUnits(usdcBalanceRaw, 6) : '0'; + // Calculate generic USDC balance based on network + const usdcBalance = networkType === 'stellar' + ? stellarUsdcBalance + : (usdcBalanceRaw ? formatUnits(usdcBalanceRaw, 6) : '0'); - // Wagmi Hooks for mETH Balance and Approval - const { data: methBalanceRaw, refetch: refetchMethBalance } = useReadContract({ - address: LEVERAGE_CONTRACTS.MockMETH, - abi: METH_ABI, + // Wagmi Hooks for stARB Balance and Approval + const { data: stARBBalanceRaw, refetch: refetchstARBBalance } = useReadContract({ + address: LEVERAGE_CONTRACTS.MockstARB, + abi: stARB_ABI, functionName: 'balanceOf', - args: address ? [address] : undefined, + args: evmAddress ? [evmAddress] : undefined, query: { enabled: !!address, } }); const { data: allowance, refetch: refetchAllowance } = useReadContract({ - address: LEVERAGE_CONTRACTS.MockMETH, - abi: METH_ABI, + address: LEVERAGE_CONTRACTS.MockstARB, + abi: stARB_ABI, functionName: 'allowance', - args: address ? [address, LEVERAGE_CONTRACTS.LeverageVault] : undefined, + args: evmAddress ? [evmAddress, LEVERAGE_CONTRACTS.LeverageVault] : undefined, }); - const { writeContractAsync: approveMeth } = useWriteContract(); + const { writeContractAsync: approvestARB } = useWriteContract(); + const publicClient = usePublicClient(); - // Format mETH balance (18 decimals) - const methBalance = methBalanceRaw ? formatUnits(methBalanceRaw, 18) : '0'; + // Format stARB balance (18 decimals) + const stARBBalance = stARBBalanceRaw ? formatUnits(stARBBalanceRaw, 18) : '0'; // Load wallet data (refetch balances and allowances) const loadWalletData = useCallback(async () => { if (!address) return; try { refetchUsdcBalance(); - refetchMethBalance(); + refetchstARBBalance(); refetchAllowance(); } catch (error) { console.error('Error loading wallet data:', error); } - }, [address, refetchUsdcBalance, refetchMethBalance, refetchAllowance]); + }, [address, refetchUsdcBalance, refetchstARBBalance, refetchAllowance]); useEffect(() => { if (assetId) { @@ -132,32 +176,102 @@ const AssetDetailsPage = () => { } if (activeTab === 'leverage') { - fetchMethPrice(); + fetchstARBPrice(); } - // Load wallet data if already connected - if (address) { + // Load wallet data if already connected and on EVM + if (evmAddress) { loadWalletData(); } - // Auto-refresh mETH price every 30 seconds ONLY if active tab is leverage + // Auto-refresh stARB price every 30 seconds ONLY if active tab is leverage let interval: NodeJS.Timeout; if (activeTab === 'leverage') { interval = setInterval(() => { - fetchMethPrice(); + fetchstARBPrice(); }, 30000); } return () => { if (interval) clearInterval(interval); }; - }, [assetId, address, fetchAssetDetails, fetchMethPrice, loadWalletData, activeTab, purchaseStatus,]); + }, [assetId, address, fetchAssetDetails, fetchstARBPrice, loadWalletData, activeTab, purchaseStatus,]); useEffect(() => { - if (address) { + if (evmAddress) { loadWalletData(); } - }, [address, loadWalletData]); + }, [evmAddress, loadWalletData]); + + // Check Stellar Trustline + const checkStellarTrustline = useCallback(async () => { + if (isEvm || !address || !asset?.assetId) return; + + try { + setIsCheckingTrust(true); + setTrustlineError(null); + + console.log(`Checking trustline eligibility for asset ${asset.assetId}...`); + const response = await trustlineService.checkAbilityToBuy(asset.assetId); + console.log('Trustline capability response:', response); + + setTrustlineStatus(response.trustlineStatus); + // If NOT_REQUESTED or PENDING, we need trustline (or approval) + // If APPROVED, we don't need trustline action + setNeedsTrustline(!response.canBuy); + + if (!response.canBuy && response.reason) { + console.log('Cannot buy reason:', response.reason); + } + + } catch (err) { + console.error('Error checking trustline:', err); + // Fallback: check on-chain directly if backend fails? + // For now, let's stick to backend as source of truth for "permission" + } finally { + setIsCheckingTrust(false); + } + }, [isEvm, address, asset]); + + useEffect(() => { + checkStellarTrustline(); + }, [checkStellarTrustline]); + + const handleAddTrustline = async () => { + if (!address || !asset?.token?.address || !asset?.assetId) return; + + try { + setIsAddingTrust(true); + setTrustlineError(null); + const [code, issuer] = asset.token.address.split(':'); + + if (!code || !issuer) { + throw new Error('Invalid token address format'); + } + + console.log(`Adding trustline on-chain for ${code}...`); + // 1. Execute on-chain transaction + const txHash = await stellarService.addTrustline(address, code, issuer); + console.log('Trustline added on-chain. Hash:', txHash); + + // 2. Notify backend + console.log('Notifying backend...'); + await trustlineService.notifyTrustlineAdded({ + txHash: txHash, + assetId: asset.assetId, + network: 'stellar', + }); + + // 3. Re-check status + await checkStellarTrustline(); + + } catch (err: any) { + console.error('Failed to add trustline:', err); + setTrustlineError(err.message || 'Failed to add trustline'); + } finally { + setIsAddingTrust(false); + } + }; useEffect(() => { if (assetId) { @@ -207,7 +321,7 @@ const AssetDetailsPage = () => { const block = blocks.get(blockTime); if (block) { // Parse tokens purchased (18 decimals) - const tokensPurchased = parseFloat(purchase.tokensPurchased) / 1e18; + const tokensPurchased = parseFloat(purchase.tokensPurchased); block.tokensPurchased += tokensPurchased; block.count += 1; // Keep the method of the most recent purchase in the block @@ -216,7 +330,7 @@ const AssetDetailsPage = () => { } } else { // Create new block for this time interval - const tokensPurchased = parseFloat(purchase.tokensPurchased) / 1e18; + const tokensPurchased = parseFloat(purchase.tokensPurchased); blocks.set(blockTime, { timestamp: blockTime, tokensPurchased: tokensPurchased, @@ -248,90 +362,104 @@ const AssetDetailsPage = () => { /** * Handle Leverage Token Purchase * Follows the script flow exactly: - * 1. Check mETH balance (redirect to faucet if insufficient) - * 2. Approve mETH spending + * 1. Check stARB balance (redirect to faucet if insufficient) + * 2. Approve stARB spending * 3. Initiate leveraged purchase via backend API * 4. Monitor position health */ const handleOpenLeveragePosition = async () => { - if (!address || !asset || !leverageTokenInput || calculatedMethAmount <= 0) return; + if (!evmAddress || !asset || !leverageTokenInput || calculatedstARBAmount <= 0) return; console.log('\n🚀 ===== STARTING LEVERAGED PURCHASE FLOW ====='); console.log('Asset ID:', asset.assetId); console.log('Token Amount:', leverageTokenInput); console.log('Token Address:', asset.token?.address || 'N/A'); - console.log('Buyer Address:', address); + console.log('Buyer Address:', evmAddress); console.log('==============================================\n'); setIsPurchasing(true); setLeveragePurchaseStatus(null); try { // ============================================================ - // STEP 1: Fetch latest mETH price + // STEP 1: Fetch latest stARB price // ============================================================ - console.log('📊 Step 1: Fetching latest mETH price...'); - await fetchMethPrice(); - const methPriceUSD = methPrice / 1e6; - console.log(`✅ Current mETH price: $${methPriceUSD.toFixed(2)}`); + console.log('📊 Step 1: Fetching latest stARB price...'); + await fetchstARBPrice(); + console.log(`✅ Current stARB price: $${stARBPrice.toFixed(2)}`); // ============================================================ - // STEP 2: Calculate required mETH collateral (150% LTV) + // STEP 2: Calculate required stARB collateral (150% LTV) // ============================================================ - console.log('\n💰 Step 2: Calculating required mETH collateral...'); - const mETHCollateral = parseUnits(calculatedMethString, 18); - const tokenAmount = parseUnits(leverageTokenInput, 18); + console.log('\n💰 Step 2: Calculating required stARB collateral...'); + const stARBCollateral = parseUnits(calculatedstARBString, 18); const pricePerToken = asset.tokenParams.pricePerToken || '0'; console.log(` Token Amount: ${leverageTokenInput} tokens`); - console.log(` Price per Token: ${parseFloat(pricePerToken) / 1e6} USDC`); - console.log(` Required mETH Collateral: ${calculatedMethString} mETH`); - console.log(` Total Cost: ${(tokenAmount * BigInt(pricePerToken)) / parseUnits('1', 18) / BigInt(1e6)} USDC`); + console.log(` Price per Token: ${pricePerToken} USDC`); + console.log(` Required stARB Collateral: ${calculatedstARBString} stARB`); + console.log(` Total Cost: ${(parseFloat(leverageTokenInput) * parseFloat(pricePerToken)).toFixed(4)} USDC`); // ============================================================ - // STEP 3: Check mETH Balance + // STEP 3: Check stARB Balance // ============================================================ - console.log('\n💼 Step 3: Checking mETH balance...'); - await refetchMethBalance(); - const currentMethBalance = parseFloat(methBalance); - const requiredMeth = parseFloat(calculatedMethString); + console.log('\n💼 Step 3: Checking stARB balance...'); + await refetchstARBBalance(); + const currentstARBBalance = parseFloat(stARBBalance); + const requiredstARB = parseFloat(calculatedstARBString); - console.log(` Current mETH Balance: ${currentMethBalance.toFixed(6)} mETH`); - console.log(` Required mETH: ${requiredMeth.toFixed(6)} mETH`); + console.log(` Current stARB Balance: ${currentstARBBalance.toFixed(6)} stARB`); + console.log(` Required stARB: ${requiredstARB.toFixed(6)} stARB`); - if (currentMethBalance < requiredMeth) { - const shortfall = requiredMeth - currentMethBalance; - console.error(`❌ Insufficient mETH balance. Need ${shortfall.toFixed(6)} more mETH`); - setLeveragePurchaseStatus(`Insufficient mETH balance. Need ${shortfall.toFixed(6)} more mETH. Redirecting to faucet...`); + if (currentstARBBalance < requiredstARB) { + const shortfall = requiredstARB - currentstARBBalance; + console.error(`❌ Insufficient stARB balance. Need ${shortfall.toFixed(6)} more stARB`); + setLeveragePurchaseStatus(`Insufficient stARB balance. Need ${shortfall.toFixed(6)} more stARB. Redirecting to faucet...`); // Redirect to faucet page after 2 seconds setTimeout(() => { - navigate('/faucet'); + navigate(networkPath('/faucet')); }, 2000); return; } - console.log('✅ Sufficient mETH balance'); + console.log('✅ Sufficient stARB balance'); // ============================================================ - // STEP 4: Check Allowance and Approve mETH Spending + // STEP 4: Check Allowance and Approve stARB Spending // ============================================================ - console.log('\n🔐 Step 4: Checking mETH allowance...'); + console.log('\n🔐 Step 4: Checking stARB allowance...'); await refetchAllowance(); const currentAllowance = allowance || BigInt(0); - console.log(` Current Allowance: ${formatUnits(currentAllowance, 18)} mETH`); - console.log(` Required Allowance: ${calculatedMethString} mETH`); + console.log(` Current Allowance: ${formatUnits(currentAllowance, 18)} stARB`); + console.log(` Required Allowance: ${calculatedstARBString} stARB`); - if (currentAllowance < mETHCollateral) { + if (currentAllowance < stARBCollateral) { setIsApproving(true); - setLeveragePurchaseStatus('Approving mETH usage...'); - console.log(`⏳ Approving ${calculatedMethString} mETH for LeverageVault...`); + setLeveragePurchaseStatus('Approving stARB usage...'); + console.log(`⏳ Approving ${calculatedstARBString} stARB for LeverageVault...`); try { - const txHash = await approveMeth({ - address: LEVERAGE_CONTRACTS.MockMETH, - abi: METH_ABI, + // Get gas overrides to prevent "max fee per gas less than block base fee" errors + let gasOverrides = {}; + if (publicClient) { + try { + const block = await publicClient.getBlock(); + const baseFee = block.baseFeePerGas ?? 0n; + gasOverrides = { + maxFeePerGas: baseFee * 2n, + maxPriorityFeePerGas: baseFee > 0n ? baseFee / 10n : 100000n, + }; + } catch (e) { + console.warn('Failed to get gas overrides, proceeding without:', e); + } + } + + const txHash = await approvestARB({ + address: LEVERAGE_CONTRACTS.MockstARB, + abi: stARB_ABI, functionName: 'approve', - args: [LEVERAGE_CONTRACTS.LeverageVault, mETHCollateral], + args: [LEVERAGE_CONTRACTS.LeverageVault, stARBCollateral], + ...gasOverrides, }); console.log(`✅ Approval transaction submitted: ${txHash}`); setLeveragePurchaseStatus('Approval submitted! Waiting for confirmation...'); @@ -341,8 +469,8 @@ const AssetDetailsPage = () => { // Refetch allowance to verify const { data: newAllowance } = await refetchAllowance(); - console.log('✅ mETH approved successfully'); - console.log(` New Allowance: ${newAllowance ? formatUnits(newAllowance, 18) : '0'} mETH`); + console.log('✅ stARB approved successfully'); + console.log(` New Allowance: ${newAllowance ? formatUnits(newAllowance, 18) : '0'} stARB`); setLeveragePurchaseStatus('Approval confirmed! Proceeding to open position...'); setIsApproving(false); @@ -379,9 +507,9 @@ const AssetDetailsPage = () => { const purchaseData = { assetId: asset.assetId, tokenAddress: asset.token?.address || '', - tokenAmount: tokenAmount.toString(), - pricePerToken: pricePerToken, - mETHCollateral: mETHCollateral.toString(), + tokenAmount: parseFloat(leverageTokenInput).toFixed(4), + pricePerToken: parseFloat(pricePerToken).toFixed(4), + stARBCollateral: parseFloat(calculatedstARBString).toFixed(4), }; console.log('📤 Purchase Data:'); @@ -429,7 +557,7 @@ const AssetDetailsPage = () => { console.log('✅ Position created successfully!'); console.log(` Position ID: ${result.positionId}`); console.log(` Transaction Hash: ${result.transactionHash}`); - console.log(` Explorer: https://explorer.sepolia.mantle.xyz/tx/${result.transactionHash}`); + console.log(` Explorer: https://explorer.sepolia.arbitrum.xyz/tx/${result.transactionHash}`); // ============================================================ // STEP 6: Monitor Position Health @@ -447,8 +575,8 @@ const AssetDetailsPage = () => { console.log(` Status: ${positionDetails.status}`); console.log(` Health Factor: ${(positionDetails.currentHealthFactor / 100).toFixed(2)}%`); console.log(` Health Status: ${positionDetails.healthStatus}`); - console.log(` mETH Collateral: ${formatUnits(BigInt(positionDetails.mETHCollateral), 18)} mETH`); - console.log(` USDC Borrowed: ${parseFloat(positionDetails.usdcBorrowed) / 1e6} USDC`); + console.log(` stARB Collateral: ${positionDetails.stARBCollateral} stARB`); + console.log(` USDC Borrowed: ${positionDetails.usdcBorrowed} USDC`); setLeveragePurchaseStatus( `Position created successfully! 🎉\n` + @@ -489,8 +617,13 @@ const AssetDetailsPage = () => { } }; - const needsApproval = allowance && calculatedMethAmount > 0 - ? allowance < parseUnits(calculatedMethString, 18) + if (!isEvm && activeTab === 'leverage') { + // Switch to standard tab if on Stellar and leverage is selected (or hide leverage tab) + // For now, we will just conditionally render the content below + } + + const needsApproval = allowance && calculatedstARBAmount > 0 + ? allowance < parseUnits(calculatedstARBString, 18) : true; if (isLoadingAsset) { @@ -508,17 +641,18 @@ const AssetDetailsPage = () => { } // Calculate token availability and limits - const totalSupply = parseFloat(asset.tokenParams.totalSupply) / 1e18; - const soldTokens = parseFloat(asset.listing?.sold || '0') / 1e18; + const totalSupply = parseTokenAmount(asset.tokenParams.totalSupply, 18); + const soldTokens = parseTokenAmount(asset.listing?.sold || '0', 18); const availableTokens = totalSupply - soldTokens; - const minInvestment = parseFloat(asset.tokenParams.minInvestment) / 1e18; + const minInvestment = parseTokenAmount(asset.tokenParams.minInvestment, 18); - // Calculate estimated total price (actual price will be fetched from contract during purchase) - // Note: pricePerToken is in USDC (6 decimals), not wei (18 decimals) - const estimatedTotalPrice = tokensToBuy && asset.tokenParams.pricePerToken - ? ((parseFloat(tokensToBuy) * parseFloat(asset.tokenParams.pricePerToken)) / 1e6).toFixed(2) - : '0.00'; + // Calculate estimated total price + // Backend sends pricePerToken in canonical 4-decimal format (e.g. "0.8500") + const pricePerToken = parseFloat(asset.tokenParams.pricePerToken || '0'); + const estimatedTotalPrice = tokensToBuy && pricePerToken + ? (parseFloat(tokensToBuy) * pricePerToken).toFixed(4) + : '0.0000'; const handleBuyTokens = async () => { @@ -532,16 +666,32 @@ const AssetDetailsPage = () => { return; } + // Validate Stellar specific requirements + if (!isEvm) { + if (!asset.token?.address) { + setPurchaseStatus('Asset token address not found'); + return; + } + } + // New balance check const currentUsdcBalance = parseFloat(usdcBalance); const estimatedUsdcNeeded = parseFloat(estimatedTotalPrice); + console.log('DEBUG: Balance Check Values:'); + console.log(` - State usdcBalance: ${usdcBalance}`); + console.log(` - Parsed currentUsdcBalance: ${currentUsdcBalance}`); + console.log(` - State estimatedTotalPrice: ${estimatedTotalPrice}`); + console.log(` - Parsed estimatedUsdcNeeded: ${estimatedUsdcNeeded}`); + console.log(` - Asset Price Per Token (raw): ${asset.tokenParams.pricePerToken}`); + if (currentUsdcBalance < estimatedUsdcNeeded) { + console.log('DEBUG: Insufficient balance detected.'); setPurchaseStatus(`Insufficient USDC balance. You need ${estimatedUsdcNeeded.toFixed(2)} USDC but have ${currentUsdcBalance.toFixed(2)} USDC.`); return; } - const minInvestment = parseFloat(asset.tokenParams.minInvestment) / 1e18; + const minInvestment = parseFloat(asset.tokenParams.minInvestment); const requestedAmount = parseFloat(tokensToBuy); if (requestedAmount < minInvestment) { @@ -558,47 +708,57 @@ const AssetDetailsPage = () => { console.log('Token Address:', asset.token?.address || 'N/A'); console.log('Token Amount:', tokensToBuy); console.log('Buyer Address:', address); + console.log('Network:', networkType); console.log('=====================================\n'); try { - const result = await contractService.completePurchase( - { - assetId: asset.assetId, - tokenAmount: tokensToBuy, - }, - asset.token?.address || '' // Pass token address for debugging - ); - - if (result.success) { + let result; + + if (isEvm) { + // EVM Purchase + result = await contractService.completePurchase( + { + assetId: asset.assetId, + tokenAmount: tokensToBuy, + }, + asset.token?.address || '' + ); + } else { + // Stellar Purchase + const [code] = asset.token?.address.split(':') || []; + if (!code) throw new Error('Invalid asset code format'); + + // Pass 7 decimals for standard Stellar assets + // TODO: potential dynamic decimal support if using verified Soroban tokens + const txHash = await stellarService.buyTokens(address, code, tokensToBuy, 7); + + // Mocking the result structure expected by the UI/backend handler + result = { + success: true, + purchaseTxHash: txHash, + blockNumber: 0, + }; + } + + if (result.success || (!isEvm && result.purchaseTxHash)) { // Accommodate Stellar result console.log('\n✅ Purchase transaction successful!'); console.log('Transaction Hash:', result.purchaseTxHash); - console.log('Block Number:', result.blockNumber); setPurchaseStatus('Purchase successful! 🎉'); - // Notify backend about the purchase (matching script output format) + // Notify backend about the purchase try { const notifyPayload = { txHash: result.purchaseTxHash!, assetId: asset.assetId, - amount: ethers.parseUnits(tokensToBuy, 18).toString(), - blockNumber: result.blockNumber!.toString(), + // Send canonical 4-decimal string based on backend validation + amount: parseFloat(tokensToBuy).toFixed(4), + blockNumber: result.blockNumber ? result.blockNumber.toString() : '0', + network: isEvm ? 'arbitrum' : 'stellar' }; - console.log('\n📝 Transaction details for backend notification:'); - console.log(JSON.stringify({ - txHash: result.purchaseTxHash, - assetId: asset.assetId, - buyer: address, - amount: tokensToBuy, - blockNumber: result.blockNumber - }, null, 2)); - - console.log('\n📤 Notifying backend at POST /marketplace/purchases/notify...'); - const backendResponse = await marketplaceService.notifyPurchase(notifyPayload); - - console.log('✅ Backend notification successful!'); - console.log('Backend response:', backendResponse); + console.log('\n📤 Notifying backend...'); + await marketplaceService.notifyPurchase(notifyPayload); setPurchaseStatus('Purchase and notification successful! 🎉'); } catch (notifyError: any) { @@ -608,13 +768,13 @@ const AssetDetailsPage = () => { setTokensToBuy(''); // Reload wallet data - await loadWalletData(); + if (isEvm) await loadWalletData(); + // TODO: reload Stellar data } else { console.error('❌ Purchase failed:', result.error); setPurchaseStatus(`Purchase failed`); setTokensToBuy(''); - // Reload wallet data - await loadWalletData(); + if (isEvm) await loadWalletData(); setTimeout(() => { setPurchaseStatus(null); }, 2500); @@ -623,8 +783,7 @@ const AssetDetailsPage = () => { console.error('❌ Purchase error:', error); setPurchaseStatus(`Error: ${error.message}`); setTokensToBuy(''); - // Reload wallet data - await loadWalletData(); + if (isEvm) await loadWalletData(); setTimeout(() => { setPurchaseStatus(null); }, 2500); @@ -644,20 +803,20 @@ const AssetDetailsPage = () => { {/* Header */}
- +

Invoice {asset.metadata.invoiceNumber}

- -
@@ -674,7 +833,7 @@ const AssetDetailsPage = () => {

- ${(purchaseHistory?.purchases && purchaseHistory.purchases.length > 0) ? (parseFloat(purchaseHistory.purchases[0].price) / 1e6).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : (asset.tokenParams.pricePerToken ? (parseFloat(asset.tokenParams.pricePerToken) / 1e6).toFixed(2) : 'N/A')} + ${(purchaseHistory?.purchases && purchaseHistory.purchases.length > 0) ? parseFloat(purchaseHistory.purchases[0].price).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : (asset.tokenParams.pricePerToken ? parseFloat(asset.tokenParams.pricePerToken).toFixed(2) : 'N/A')}

Token Price (USDC)

@@ -815,19 +974,19 @@ const AssetDetailsPage = () => {

Total Supply

- {(parseFloat(asset.tokenParams.totalSupply) / 1e18).toLocaleString()} tokens + {parseFloat(asset.tokenParams.totalSupply).toLocaleString(undefined, { maximumFractionDigits: 4 })} tokens

Minimum Investment

- {(parseFloat(asset.tokenParams.minInvestment) / 1e18).toLocaleString()} tokens + {parseFloat(asset.tokenParams.minInvestment).toLocaleString(undefined, { maximumFractionDigits: 4 })} tokens

Sold Tokens

- {(parseFloat(asset.listing?.sold || '0') / 1e18).toLocaleString()} tokens + {parseFloat(asset.listing?.sold || '0').toLocaleString(undefined, { maximumFractionDigits: 4 })} tokens

@@ -895,19 +1054,21 @@ const AssetDetailsPage = () => { setTokensToBuy(inputValue); }} min={(() => { - const totalSupply = parseFloat(asset.tokenParams.totalSupply) / 1e18; - const soldTokens = parseFloat(asset.listing?.sold || '0') / 1e18; + const getCanonical = (val: string) => parseFloat(val); + const totalSupply = getCanonical(asset.tokenParams.totalSupply); + const soldTokens = getCanonical(asset.listing?.sold || '0'); const availableTokens = totalSupply - soldTokens; - const minInvestment = parseFloat(asset.tokenParams.minInvestment) / 1e18; + const minInvestment = getCanonical(asset.tokenParams.minInvestment); return availableTokens < minInvestment ? availableTokens : minInvestment; })()} className=" border-none text-2xl font-medium text-[#111111] p-0 h-auto focus-visible:ring-0 focus-visible:ring-offset-0" />

Available: {(() => { - const totalSupply = parseFloat(asset.tokenParams.totalSupply) / 1e18; - const soldTokens = parseFloat(asset.listing?.sold || '0') / 1e18; - return (totalSupply - soldTokens).toLocaleString(); + const getCanonical = (val: string) => parseFloat(val); + const totalSupply = getCanonical(asset.tokenParams.totalSupply); + const soldTokens = getCanonical(asset.listing?.sold || '0'); + return (totalSupply - soldTokens).toLocaleString(undefined, { maximumFractionDigits: 4 }); })()} tokens

@@ -937,7 +1098,11 @@ const AssetDetailsPage = () => {
Min Investment - {(parseFloat(asset.tokenParams.minInvestment) / 1e18).toLocaleString()} tokens + {( + () => { + return parseFloat(asset.tokenParams.minInvestment).toLocaleString(undefined, { maximumFractionDigits: 4 }); + } + )()} tokens
@@ -951,138 +1116,196 @@ const AssetDetailsPage = () => { {purchaseStatus}
)} - + {!isEvm && needsTrustline ? ( +
+ {trustlineError && ( +
+ {trustlineError} +
+ )} + + {trustlineStatus === 'PENDING' ? ( +
+

Trustline Approval Pending

+

Your request is being reviewed by an admin.

+
+ ) : ( + <> + +

+ You must establish a trustline for this asset before purchasing. +

+ + )} +
+ ) : ( + + )}
-
-
- -
- -
- -
- -
-
-

Required Collateral

-
- mETH + ) : ( +
+
+ +
+ -

- {calculatedMethString || '0.00'} mETH -

+
-
-
- Buying Power - - {(() => { - if (!calculatedMethAmount) return '$0.00 USDC'; - const bp = (calculatedMethAmount * methPrice) / (1.5 * 1e6); - return `$${bp.toLocaleString(undefined, { maximumFractionDigits: 2 })} USDC`; - })()} - + +
+
+

Required Collateral

+
+ stARB +

+ {calculatedstARBString || '0.00'} stARB +

+
-
- mETH Price - - ${(methPrice / 1e6).toLocaleString(undefined, { maximumFractionDigits: 2 })} - +
+
+ Buying Power + + {(() => { + if (!calculatedstARBAmount) return '$0.00 USDC'; + const bp = (calculatedstARBAmount * stARBPrice) / 1.5; + return `$${bp.toLocaleString(undefined, { maximumFractionDigits: 2 })} USDC`; + })()} + +
+
+ stARB Price + + ${stARBPrice.toLocaleString(undefined, { maximumFractionDigits: 2 })} + +
-
- -
-
- Health Factor - 1.50 (Initial) -
-
- Liquidation Threshold - 1.10 -
-
- {leveragePurchaseStatus && (() => { - const statusLower = leveragePurchaseStatus.toLowerCase(); - const isSuccess = statusLower.includes('success'); - const isError = statusLower.includes('fail') || statusLower.includes('error'); - const tone = isSuccess - ? 'bg-green-50 text-green-800 border border-green-200' - : isError - ? 'bg-red-50 text-red-800 border border-red-200' - : 'bg-blue-50 text-blue-800 border border-blue-200'; - return ( -
- {leveragePurchaseStatus} +
+
+ Health Factor + 1.50 (Initial) +
+
+ Liquidation Threshold + 1.10
- ); - })()} - -
+ {leveragePurchaseStatus && (() => { + const statusLower = leveragePurchaseStatus.toLowerCase(); + const isSuccess = statusLower.includes('success'); + const isError = statusLower.includes('fail') || statusLower.includes('error'); + const tone = isSuccess + ? 'bg-green-50 text-green-800 border border-green-200' + : isError + ? 'bg-red-50 text-red-800 border border-red-200' + : 'bg-blue-50 text-blue-800 border border-blue-200'; return ( - - {showLoader && ( - - )} - {label} - +
+ {leveragePurchaseStatus} +
); })()} - -
+ + +
+ )}
@@ -1095,4 +1318,3 @@ const AssetDetailsPage = () => { }; export default AssetDetailsPage; -  \ No newline at end of file diff --git a/src/pages/marketplace/auction/AuctionDetails.page.tsx b/src/pages/marketplace/auction/AuctionDetails.page.tsx index ba82d8b..9790ff5 100644 --- a/src/pages/marketplace/auction/AuctionDetails.page.tsx +++ b/src/pages/marketplace/auction/AuctionDetails.page.tsx @@ -1,12 +1,17 @@ // src/pages/marketplace/auction/AuctionDetails.page.tsx -import { useEffect, useState } from 'react'; +import { useEffect, useState, useCallback } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; -import { useAccount } from 'wagmi'; +import { parseTokenAmount } from '../../../lib/utils/formatters'; +// import { useAccount } from 'wagmi'; // Removed import { Clock } from 'lucide-react'; +import { useAuthStrategy } from '../../../lib/auth/AuthStrategyContext'; +import { useNetwork } from '../../../lib/network/NetworkContext'; import { useMarketplaceStore } from '../../../stores/marketplace.store'; import { useSubmitBid } from '../../../hooks/useAuctionContracts'; import { contractService } from '../../../lib/api/contract.service'; import { marketplaceService } from '../../../lib/api/marketplace.service'; +import { trustlineService } from '../../../lib/api/trustline.service'; +import { stellarService } from '../../../lib/api/stellar.service'; import { Button } from '../../../components/ui/button'; import { ShaderAnimation } from '../../../components/ui/shimmer-lines'; import { PageLoader } from '../../../components/ui/page-loader'; @@ -14,7 +19,9 @@ import { PageLoader } from '../../../components/ui/page-loader'; const AuctionDetailsPage = () => { const { assetId } = useParams<{ assetId: string }>(); const navigate = useNavigate(); - const { address } = useAccount(); + const { address } = useAuthStrategy(); + const { networkType, networkPath } = useNetwork(); + const isEvm = networkType === 'arbitrum'; const { currentAsset: asset, isLoadingAsset, error, fetchAssetDetails } = useMarketplaceStore(); const [bidAmount, setBidAmount] = useState(''); @@ -22,6 +29,18 @@ const AuctionDetailsPage = () => { const [usdcBalance, setUsdcBalance] = useState('0'); const [hasAlreadyBidded, setHasAlreadyBidded] = useState(false); + // Trustline State + const [isCheckingTrust, setIsCheckingTrust] = useState(false); + const [needsTrustline, setNeedsTrustline] = useState(false); + const [isAddingTrust, setIsAddingTrust] = useState(false); + const [trustlineError, setTrustlineError] = useState(null); + const [trustlineStatus, setTrustlineStatus] = useState<'APPROVED' | 'PENDING' | 'NOT_REQUESTED' | 'checking' | null>(null); + + // Stellar Bidding State + const [isStellarSubmitting, setIsStellarSubmitting] = useState(false); + const [stellarStatus, setStellarStatus] = useState(null); + const [stellarError, setStellarError] = useState(null); + const { submitBid, status, error: bidError, isLoading, reset } = useSubmitBid(); // Auto-clear error after 8 seconds @@ -40,6 +59,7 @@ const AuctionDetailsPage = () => { } if (address) { const fetchBalance = async () => { + if (!isEvm) return; // Only fetch USDC balance on EVM try { const balance = await contractService.checkUSDCBalance(address); setUsdcBalance(balance); @@ -53,6 +73,76 @@ const AuctionDetailsPage = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [assetId, address]); + // Check Stellar Trustline + const checkStellarTrustline = useCallback(async () => { + if (isEvm || !address || !asset?.assetId) return; + + try { + setIsCheckingTrust(true); + setTrustlineError(null); + + console.log(`Checking trustline eligibility for asset ${asset.assetId}...`); + const response = await trustlineService.checkAbilityToBuy(asset.assetId); + console.log('Trustline capability response:', response); + + setTrustlineStatus(response.trustlineStatus); + // If NOT_REQUESTED or PENDING, we need trustline (or approval) + // If APPROVED, we don't need trustline action + setNeedsTrustline(!response.canBuy); + + if (!response.canBuy && response.reason) { + console.log('Cannot buy reason:', response.reason); + } + + } catch (err) { + console.error('Error checking trustline:', err); + // Fallback: check on-chain directly if backend fails? + // For now, let's stick to backend as source of truth for "permission" + } finally { + setIsCheckingTrust(false); + } + }, [isEvm, address, asset]); + + useEffect(() => { + checkStellarTrustline(); + }, [checkStellarTrustline]); + + const handleAddTrustline = async () => { + if (!address || !asset?.token?.address || !asset?.assetId) return; + + try { + setIsAddingTrust(true); + setTrustlineError(null); + const [code, issuer] = asset.token.address.split(':'); + + if (!code || !issuer) { + throw new Error('Invalid token address format'); + } + + console.log(`Adding trustline on-chain for ${code}...`); + // 1. Execute on-chain transaction + const txHash = await stellarService.addTrustline(address, code, issuer); + console.log('Trustline added on-chain. Hash:', txHash); + + // 2. Notify backend + console.log('Notifying backend...'); + await trustlineService.notifyTrustlineAdded({ + txHash: txHash, + assetId: asset.assetId, + network: 'stellar', + }); + + // 3. Re-check status + await checkStellarTrustline(); + + } catch (err: any) { + console.error('Failed to add trustline:', err); + setTrustlineError(err.message || 'Failed to add trustline'); + } finally { + setIsAddingTrust(false); + } + }; + // Check for existing bids useEffect(() => { if (address && assetId) { @@ -126,12 +216,88 @@ const AuctionDetailsPage = () => { } }; + const getStatusLabel = (status: string | null) => { + switch (status) { + case 'PENDING': + return 'Trustline Pending...'; + case 'NOT_REQUESTED': + default: + return 'Add Trustline'; + } + }; + + const submitStellarBid = async (params: { assetId: string, tokenAmount: string, pricePerToken: string }) => { + if (!address || !asset?.token?.address) { + setStellarError("Wallet not connected or asset token unavailable"); + return; + } + + try { + setIsStellarSubmitting(true); + setStellarStatus('Submitting bid to Stellar network...'); + setStellarError(null); + + const [code] = asset.token.address.split(':'); + + // 1. Submit on-chain + const result = await stellarService.submitBid( + address, + code, + params.tokenAmount, + params.pricePerToken + ); + + setStellarStatus('Bid submitted! Waiting for confirmation (6s)...'); + console.log('Stellar bid tx:', result.txHash); + + const tokenAmountFormatted = parseFloat(params.tokenAmount).toFixed(4); + const priceFormatted = parseFloat(params.pricePerToken).toFixed(4); + + // Wait 6 seconds for propagation + await new Promise(r => setTimeout(r, 6000)); + + setStellarStatus('Notifying backend...'); + + await marketplaceService.notifyBidPlaced({ + txHash: result.txHash, + assetId: params.assetId, + tokenAmount: tokenAmountFormatted, + price: priceFormatted, + network: 'stellar' + }); + + setStellarStatus('Bid placed successfully! 🎉'); + + // Refresh after delay + setTimeout(() => { + navigate(networkPath('/portfolio')); + }, 2000); + + } catch (err: any) { + console.error('Stellar bid error:', err); + setStellarError(err.message || 'Failed to place Stellar bid'); + setStellarStatus(null); + } finally { + setIsStellarSubmitting(false); + } + }; + const handlePlaceBid = async () => { if (!assetId || !bidAmount || !pricePerToken) { alert('Please fill in all bid fields'); return; } + if (!isEvm) { + await submitStellarBid({ + assetId, + tokenAmount: bidAmount, + pricePerToken: pricePerToken + }); + return; + } + + // EVM Flow await submitBid({ assetId: assetId, tokenAmount: bidAmount, @@ -162,7 +328,7 @@ const AuctionDetailsPage = () => {

) : (
@@ -319,7 +485,7 @@ const AuctionDetailsPage = () => { minute: '2-digit' }) : 'N/A'}. {asset.listing?.clearingPrice && Number(asset.listing.clearingPrice) > 0 - ? ` Final clearing price: $${(Number(asset.listing.clearingPrice) / 1e6).toFixed(2)} per token.` + ? ` Final clearing price: $${parseTokenAmount(asset.listing.clearingPrice, 6).toFixed(2)} per token.` : ' No tokens were sold.'}

@@ -394,8 +560,8 @@ const AuctionDetailsPage = () => { placeholder="0" disabled={isAuctionAnnounced || !!(asset.listing?.scheduledEndTime && new Date(asset.listing.scheduledEndTime).getTime() <= new Date().getTime())} value={bidAmount} - min={asset.tokenParams?.minInvestment ? (Number(asset.tokenParams.minInvestment) / 1e18).toString() : '0'} - max={asset.tokenParams?.totalSupply ? (Number(asset.tokenParams.totalSupply) / 1e18).toString() : '0'} + min={asset.tokenParams?.minInvestment ? parseTokenAmount(asset.tokenParams.minInvestment, 18).toString() : '0'} + max={asset.tokenParams?.totalSupply ? parseTokenAmount(asset.tokenParams.totalSupply, 18).toString() : '0'} step="0.1" onChange={(e) => { const value = e.target.value; @@ -417,8 +583,8 @@ const AuctionDetailsPage = () => { onBlur={() => { if (bidAmount && parseFloat(bidAmount) > 0) { const numValue = parseFloat(bidAmount); - const available = asset.tokenParams?.totalSupply ? Number(asset.tokenParams.totalSupply) / 1e18 : 0; - const minBid = asset.tokenParams?.minInvestment ? Number(asset.tokenParams.minInvestment) / 1e18 : 0; + const available = parseTokenAmount(asset.tokenParams?.totalSupply, 18); + const minBid = parseTokenAmount(asset.tokenParams?.minInvestment, 18); const effectiveMin = Math.min(minBid, available); if (numValue < effectiveMin) { @@ -432,8 +598,8 @@ const AuctionDetailsPage = () => { />

Min: {asset.tokenParams?.minInvestment && asset.tokenParams?.totalSupply - ? Math.min(Number(asset.tokenParams.minInvestment) / 1e18, Number(asset.tokenParams.totalSupply) / 1e18).toFixed(2) - : '0.00'} · Available: {asset.tokenParams?.totalSupply ? (Number(asset.tokenParams.totalSupply) / 1e18).toFixed(2) : '0.00'} + ? Math.min(parseTokenAmount(asset.tokenParams.minInvestment, 18), parseTokenAmount(asset.tokenParams.totalSupply, 18)).toFixed(2) + : '0.00'} · Available: {asset.tokenParams?.totalSupply ? parseTokenAmount(asset.tokenParams.totalSupply, 18).toFixed(2) : '0.00'}

@@ -451,11 +617,17 @@ const AuctionDetailsPage = () => {
{ + const val = parseTokenAmount(asset.listing?.priceRange?.min || '0', 6); + return val.toString(); + })()} + max={(() => { + const val = parseTokenAmount(asset.listing?.priceRange?.max || '0', 6); + return val.toString(); + })()} onChange={(e) => { const value = e.target.value; if (value === '') { @@ -476,8 +648,8 @@ const AuctionDetailsPage = () => { onBlur={() => { if (pricePerToken && parseFloat(pricePerToken) > 0) { const numValue = parseFloat(pricePerToken); - const minPrice = asset.listing?.priceRange?.min ? Number(asset.listing.priceRange.min) / 1e6 : 0; - const maxPrice = asset.listing?.priceRange?.max ? Number(asset.listing.priceRange.max) / 1e6 : Infinity; + const minPrice = parseTokenAmount(asset.listing?.priceRange?.min || '0', 6); + const maxPrice = parseTokenAmount(asset.listing?.priceRange?.max || '0', 6) || Infinity; if (numValue < minPrice) { setPricePerToken(minPrice.toString()); @@ -489,15 +661,21 @@ const AuctionDetailsPage = () => { className="w-full border-none text-2xl font-medium text-[#111111] p-0 h-auto bg-transparent focus:outline-none focus:ring-0" />

- Range: ${asset.listing?.priceRange?.min ? (Number(asset.listing.priceRange.min) / 1e6).toFixed(4) : '0.0000'} - ${asset.listing?.priceRange?.max ? (Number(asset.listing.priceRange.max) / 1e6).toFixed(3) : '0.000'} + Range: ${(() => { + const val = parseTokenAmount(asset.listing?.priceRange?.min || '0', 6); + return val.toFixed(4); + })()} - ${(() => { + const val = parseTokenAmount(asset.listing?.priceRange?.max || '0', 6); + return val.toFixed(4); + })()}

{/* Error Message */} - {bidError && ( + {(bidError || trustlineError || stellarError) && (
@@ -515,22 +693,26 @@ const AuctionDetailsPage = () => { )} {/* Status/Success Message */} - {status && !bidError && ( -
- {status.includes('success') || status.includes('🎉') ? ( - - ) : ( -
- )} -

✓ + ) : ( +

+ )} +

- {status} + {status || stellarStatus}

@@ -545,20 +727,24 @@ const AuctionDetailsPage = () => { ${(parseFloat(bidAmount) * parseFloat(pricePerToken)).toFixed(2)} USDC -
- Your Balance - - ${parseFloat(usdcBalance).toFixed(2)} USDC - -
+ {!isEvm ? null : ( +
+ Your Balance + + ${parseFloat(usdcBalance).toFixed(2)} USDC + +
+ )} )} - {/* Place Bid / Retry Button */} - {bidError ? ( + {/* Place Bid / Retry Button / Add Trustline */} + {bidError || stellarError ? ( + ) : !isEvm && isCheckingTrust ? ( + + ) : !isEvm && needsTrustline ? ( +
+ {trustlineStatus === 'PENDING' ? ( +
+

Trustline Approval Pending

+

Your request is being reviewed by an admin.

+
+ ) : ( + <> + +

+ You must establish a trustline for this asset before bidding. +

+ + )} +
) : ( )} diff --git a/src/pages/portfolio/Portfolio.page.tsx b/src/pages/portfolio/Portfolio.page.tsx index 3cd8fa1..7d1caab 100644 --- a/src/pages/portfolio/Portfolio.page.tsx +++ b/src/pages/portfolio/Portfolio.page.tsx @@ -3,15 +3,19 @@ import { useEffect, useState, useCallback } from 'react'; import { usePortfolioStore } from '../../stores/portfolio.store'; import { useMarketplaceStore } from '../../stores/marketplace.store'; import { useNavigate, useSearchParams } from 'react-router-dom'; -import { useAccount, useDisconnect } from 'wagmi'; +// import { useAccount, useDisconnect } from 'wagmi'; // Removed import { Search } from 'lucide-react'; +import { useAuthStrategy } from '../../lib/auth/AuthStrategyContext'; +import { useNetwork } from '../../lib/network/NetworkContext'; import { useSettleBid } from '../../hooks/useAuctionContracts'; -import { contractService } from '../../lib/api/contract.service'; +// import { contractService } from '../../lib/api/contract.service'; import { useToast } from '../../hooks/useToast'; import { ToastContainer } from '../../components/ui/toast'; import { NotificationBell } from '../../components/notifications/NotificationBell'; -import { authService } from '../../lib/api/auth.service'; +// import { authService } from '../../lib/api/auth.service'; import { marketplaceService } from '../../lib/api/marketplace.service'; +import { getYieldService } from '../../lib/api/yield.service.factory'; +import { parseTokenAmount } from '../../lib/utils/formatters'; import { solvencyService } from '../../lib/api/solvency.service'; import { PositionsTable } from '../../components/leverage/PositionsTable'; import { PortfolioStats } from '../../components/portfolio/PortfolioStats'; @@ -36,12 +40,15 @@ import HeroBackground from '../landing/HeroBackground'; const PortfolioPage = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); - const { address } = useAccount(); + const { address, logout } = useAuthStrategy(); + const { networkType, networkPath } = useNetwork(); + const isEvm = networkType === 'arbitrum'; + const { portfolio, isLoading, error, fetchPortfolio } = usePortfolioStore(); const { userBids, isLoadingBids, fetchUserBids, myOrders, isLoadingMyOrders, fetchMyOrders } = useMarketplaceStore(); const { toasts, success, error: showError, warning, removeToast } = useToast(); - const { disconnect } = useDisconnect(); - const { creditData, refetch: refetchCredit } = useCreditData(address); + // const { disconnect } = useDisconnect(); // handled by logout + const { creditData, refetch: refetchCredit } = useCreditData(isEvm ? address : undefined); // Cancel order hook @@ -102,11 +109,11 @@ const PortfolioPage = () => { // Filtered data based on search term // Get all portfolio items (both STATIC and LEVERAGE) const allPortfolioItems = portfolio?.portfolio || []; - const staticAssets = allPortfolioItems.filter(item => item.purchaseType === 'STATIC'); - const leveragePositions = allPortfolioItems.filter(item => item.purchaseType === 'LEVERAGE'); + const staticAssets = allPortfolioItems.filter((item: any) => item.purchaseType === 'STATIC'); + const leveragePositions = allPortfolioItems.filter((item: any) => item.purchaseType === 'LEVERAGE'); // Filter ALL assets for My Assets table (both STATIC and LEVERAGE) - const filteredAssets = allPortfolioItems.filter(asset => + const filteredAssets = allPortfolioItems.filter((asset: any) => asset.assetId.toLowerCase().includes(searchTerm.toLowerCase()) || asset.metadata?.assetName?.toLowerCase().includes(searchTerm.toLowerCase()) || false @@ -118,14 +125,14 @@ const PortfolioPage = () => { false ) || []; - const filteredPositions = leveragePositions.filter(position => + const filteredPositions = leveragePositions.filter((position: any) => position.assetId.toLowerCase().includes(searchTerm.toLowerCase()) || position.metadata?.assetName?.toLowerCase().includes(searchTerm.toLowerCase()) || false ); const filteredOrders = myOrders.filter(order => - (filteredAssets.find(asset => asset.assetId === order.assetId)?.metadata?.assetName || '').toLowerCase().includes(searchTerm.toLowerCase()) || + (filteredAssets.find((asset: any) => asset.assetId === order.assetId)?.metadata?.assetName || '').toLowerCase().includes(searchTerm.toLowerCase()) || order.orderId.toLowerCase().includes(searchTerm.toLowerCase()) || order.assetId.toLowerCase().includes(searchTerm.toLowerCase()) || false @@ -139,7 +146,7 @@ const PortfolioPage = () => { // Calculate total asset value (STATIC purchases only) const totalAssetValue = staticAssets.reduce( - (sum, asset) => sum + (parseFloat(asset.totalInvested || '0') / 1e6), + (sum: number, asset: any) => sum + parseTokenAmount(asset.totalInvested || '0', 6), 0 ); @@ -193,7 +200,7 @@ const PortfolioPage = () => { }, [isCancelSuccess]); const handleIncreaseCreditLimit = () => { - const validAssets = staticAssets.filter(asset => asset.yieldInfo?.settlementDistributed === false); + const validAssets = staticAssets.filter((asset: any) => asset.yieldInfo?.settlementDistributed === false); if (validAssets.length > 0) { setShowDepositModal(true); } else { @@ -208,8 +215,8 @@ const PortfolioPage = () => { // Helper functions const handlelogout = () => { - authService.logout(); - disconnect(); + // authService.logout(); + logout(); navigate('/'); // Redirect to home or login page after logout }; @@ -240,12 +247,17 @@ const PortfolioPage = () => { } // Find the asset in portfolio to get tokenAddress - const asset = portfolio?.portfolio?.find(a => a.assetId === assetId); + const asset = portfolio?.portfolio?.find((a: any) => a.assetId === assetId); if (!asset || !asset.tokenAddress) { showError('Asset Not Found', 'Could not find token address for this asset'); return; } + if (!isEvm && networkType !== 'stellar') { + warning('Not Supported', 'Yield claiming is currently only supported on arbitrum & Stellar Networks.'); + return; + } + setClaimingAssetId(assetId); setClaimStatus('Checking...'); @@ -255,7 +267,8 @@ const PortfolioPage = () => { console.log('Asset ID:', assetId); console.log('Token Address:', asset.tokenAddress); - const settlementResult = await contractService.getSettlementInfo(asset.tokenAddress, address); + const yieldService = getYieldService(networkType); + const settlementResult = await yieldService.getSettlementInfo(asset.tokenAddress, address); console.log('Settlement Info:', settlementResult); @@ -322,7 +335,7 @@ const PortfolioPage = () => { const handlenavigate = () => { - navigate('/') + navigate(networkPath('/')) } /** @@ -343,8 +356,26 @@ const PortfolioPage = () => { try { // Burn ALL tokens (matching script default behavior) - const burnAmountWei = investorBalance; - const burnAmountFormatted = (parseFloat(investorBalance) / 1e18).toFixed(2); + // Burn ALL tokens (amount from backend is Canonical string e.g "100.0000") + let burnAmountWei = investorBalance; + + // Stellar uses 7 decimals (10^7) + // Backend returns "100.0000", we need "1000000000" (i64) + if (networkType === 'stellar') { + const amount = parseFloat(investorBalance); + burnAmountWei = Math.round(amount * 10_000_000).toString(); + } else { + // If EVM or others still use Wei strings, handle logic here or assume standardized + // For now, if string has dot, it's canonical + if (investorBalance.includes('.')) { + // It's canonical "100.0" -> "100000..." (18 decimals for EVM) + const amount = parseFloat(investorBalance); + // Use BigInt for precision if needed, but for now simple math + burnAmountWei = BigInt(Math.round(amount * 1e18)).toString(); + } + } + + const burnAmountFormatted = parseFloat(investorBalance).toFixed(2); // Balance is already canonical console.log('='.repeat(50)); console.log('🔥 Burn-to-Claim Yield (v2)'); @@ -361,7 +392,9 @@ const PortfolioPage = () => { console.log('✅ Step 2: Approving YieldVault to burn tokens...'); setClaimStatus('Approving...'); - const approvalResult = await contractService.approveYieldVault( + const yieldService = getYieldService(networkType); + + const approvalResult = await yieldService.approveYieldVault( tokenAddress, burnAmountWei, allowance @@ -382,7 +415,8 @@ const PortfolioPage = () => { console.log('🔥 Step 3: Burning tokens and claiming USDC...'); setClaimStatus('Burning & Claiming...'); - const claimResult = await contractService.claimYield(tokenAddress, burnAmountWei); + const yieldService = getYieldService(networkType); + const claimResult = await yieldService.claimYield(tokenAddress, burnAmountWei); if (!claimResult.success) { throw new Error(claimResult.error || 'Failed to claim yield'); @@ -418,7 +452,7 @@ const PortfolioPage = () => { success( 'Yield Claimed Successfully! 🎉', - `Tokens Burned: ${tokensBurned} ${tokenSymbol} 🔥\nUSDC Received: ${usdcReceived} USDC\nTX: ${claimResult.transactionHash?.slice(0, 10)}...\n\nYour USDC has been transferred to your wallet!\n\nView on explorer: https://explorer.sepolia.mantle.xyz/tx/${claimResult.transactionHash}`, + `Tokens Burned: ${tokensBurned} ${tokenSymbol} 🔥\nUSDC Received: ${usdcReceived} USDC\nTX: ${claimResult.transactionHash?.slice(0, 10)}...\n\nYour USDC has been transferred to your wallet!\n\nView on explorer: https://sepolia.arbiscan.io/tx/${claimResult.transactionHash}`, 12000 ); @@ -489,7 +523,7 @@ const PortfolioPage = () => {
- Logo + Logo
@@ -511,13 +545,13 @@ const PortfolioPage = () => { {/* Center: Navigation */}