@awarizon/core 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +264 -0
- package/dist/index.d.mts +420 -0
- package/dist/index.d.ts +420 -0
- package/dist/index.js +816 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +837 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/AwarizonCore.ts","../src/keyring/index.ts","../src/modules/network.ts","../src/utils/amounts.ts","../src/modules/wallet.ts","../src/modules/inbox.ts","../src/modules/developer.ts","../src/modules/apps.ts","../src/modules/campaigns.ts","../src/modules/assets.ts","../src/modules/nfts.ts","../src/modules/validators.ts","../src/modules/identity.ts","../src/modules/links.ts"],"sourcesContent":["// Main client\nexport { AwarizonCore, createCore } from './AwarizonCore'\nexport type { CoreConfig } from './AwarizonCore'\n\n// Keyring\nexport { AwarizonKeyring } from './keyring'\n\n// Types\nexport type {\n TxResult,\n Balance,\n GeneratedWallet,\n WalletAccount,\n InboxItem,\n ClaimResult,\n DeveloperStatus,\n AppManifest,\n Campaign,\n Asset,\n AssetBalance,\n NFTItem,\n ValidatorInfo,\n NetworkStats,\n IdentityRecord,\n NameLookup,\n LinkedAddress,\n ChainType,\n LinkStatus,\n TargetingOptions,\n} from './types'\n\n// Utils\nexport { parseAmount, formatAmount, isValidAmount } from './utils/amounts'\n\n// Re-export constants from SDK that consumers need\nexport {\n RIZ,\n PLANCK,\n MICRO_RIZ,\n DEFAULT_ENDPOINT,\n MIN_SESSION_SECONDS,\n MIN_INTERACTIONS,\n MIN_CAMPAIGN_DURATION_DAYS,\n MAX_CAMPAIGN_DURATION_DAYS,\n} from '@awarizon/sdk'\n","import type { ApiPromise } from '@polkadot/api'\nimport { AwarizonClient } from '@awarizon/sdk'\nimport { AwarizonKeyring } from './keyring'\nimport { NetworkModule } from './modules/network'\nimport { WalletModule } from './modules/wallet'\nimport { InboxModule } from './modules/inbox'\nimport { DeveloperModule } from './modules/developer'\nimport { AppsModule } from './modules/apps'\nimport { CampaignsModule } from './modules/campaigns'\nimport { AssetsModule } from './modules/assets'\nimport { NFTsModule } from './modules/nfts'\nimport { ValidatorsModule } from './modules/validators'\nimport { IdentityModule } from './modules/identity'\nimport { LinksModule } from './modules/links'\n\nexport interface CoreConfig {\n endpoint: string\n}\n\nexport class AwarizonCore {\n private client: AwarizonClient | null = null\n private api: ApiPromise | null = null\n readonly keyring: AwarizonKeyring\n\n network!: NetworkModule\n wallet!: WalletModule\n inbox!: InboxModule\n developer!: DeveloperModule\n apps!: AppsModule\n campaigns!: CampaignsModule\n assets!: AssetsModule\n nfts!: NFTsModule\n validators!: ValidatorsModule\n identity!: IdentityModule\n links!: LinksModule\n\n constructor(private config: CoreConfig) {\n this.keyring = new AwarizonKeyring()\n }\n\n async connect(): Promise<this> {\n await this.keyring.initialize()\n\n this.client = new AwarizonClient(this.config.endpoint)\n await this.client.connect()\n this.api = this.client.getApi()\n\n this.network = new NetworkModule(this.api)\n this.wallet = new WalletModule(this.api)\n this.inbox = new InboxModule(this.api)\n this.developer = new DeveloperModule(this.api)\n this.apps = new AppsModule(this.api)\n this.campaigns = new CampaignsModule(this.api)\n this.assets = new AssetsModule(this.api)\n this.nfts = new NFTsModule(this.api)\n this.validators = new ValidatorsModule(this.api)\n this.identity = new IdentityModule(this.api)\n this.links = new LinksModule(this.api)\n\n return this\n }\n\n async disconnect(): Promise<void> {\n if (this.client) {\n await this.client.disconnect()\n this.client = null\n this.api = null\n }\n }\n\n isConnected(): boolean {\n return this.client !== null\n }\n\n getApi(): ApiPromise {\n if (!this.api) {\n throw new Error('Not connected. Call connect() first.')\n }\n return this.api\n }\n}\n\nexport async function createCore(config: CoreConfig): Promise<AwarizonCore> {\n const core = new AwarizonCore(config)\n await core.connect()\n return core\n}\n","import {\n mnemonicGenerate,\n mnemonicValidate,\n cryptoWaitReady,\n} from '@polkadot/util-crypto'\nimport { Keyring } from '@polkadot/keyring'\nimport { u8aToHex } from '@polkadot/util'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport type { GeneratedWallet, WalletAccount } from '../types'\n\nexport class AwarizonKeyring {\n private keyring: Keyring\n\n constructor() {\n this.keyring = new Keyring({ type: 'sr25519', ss58Format: 42 })\n }\n\n async initialize(): Promise<void> {\n await cryptoWaitReady()\n }\n\n generate(wordCount: 12 | 24 = 12): GeneratedWallet {\n const mnemonic = mnemonicGenerate(wordCount)\n const pair = this.keyring.addFromMnemonic(mnemonic)\n return {\n mnemonic,\n address: pair.address,\n publicKey: u8aToHex(pair.publicKey),\n }\n }\n\n validate(mnemonic: string): boolean {\n return mnemonicValidate(mnemonic)\n }\n\n fromMnemonic(mnemonic: string): KeyringPair {\n if (!this.validate(mnemonic)) {\n throw new Error('Invalid mnemonic phrase')\n }\n return this.keyring.addFromMnemonic(mnemonic)\n }\n\n // Derive a child account. path examples: \"//0\", \"//1\", \"//accountName\"\n derive(mnemonic: string, path: string): KeyringPair {\n if (!this.validate(mnemonic)) {\n throw new Error('Invalid mnemonic phrase')\n }\n // Polkadot derivation: append path to mnemonic (e.g. \"word1 ... word12//0\")\n return this.keyring.addFromMnemonic(`${mnemonic}${path}`)\n }\n\n // Encrypt keypair to JSON string safe for storage\n encrypt(pair: KeyringPair, password: string): string {\n const json = pair.toJson(password)\n return JSON.stringify(json)\n }\n\n // Decrypt keypair from stored JSON string\n decrypt(encrypted: string, password: string): KeyringPair {\n try {\n const json = JSON.parse(encrypted)\n const pair = this.keyring.addFromJson(json)\n pair.decodePkcs8(password)\n return pair\n } catch {\n throw new Error(\n 'Failed to decrypt wallet. Check your password and try again.'\n )\n }\n }\n\n getAccount(pair: KeyringPair): WalletAccount {\n return {\n address: pair.address,\n publicKey: u8aToHex(pair.publicKey),\n }\n }\n\n exportJson(pair: KeyringPair, password: string): string {\n return JSON.stringify(pair.toJson(password))\n }\n\n importJson(json: string, password: string): KeyringPair {\n try {\n const parsed = JSON.parse(json)\n const pair = this.keyring.addFromJson(parsed)\n pair.decodePkcs8(password)\n return pair\n } catch {\n throw new Error(\n 'Failed to import wallet. Invalid backup file or wrong password.'\n )\n }\n }\n\n toAddress(publicKey: string): string {\n return this.keyring.encodeAddress(publicKey, 42)\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport {\n getNetworkStats,\n getTokenStats,\n getValidatorCount,\n getActiveValidators,\n} from '@awarizon/sdk'\nimport type { NetworkStats } from '../types'\nimport { formatAmount } from '../utils/amounts'\n\nexport class NetworkModule {\n constructor(private api: ApiPromise) {}\n\n async stats(): Promise<NetworkStats> {\n const raw = await getNetworkStats(this.api)\n\n return {\n totalWallets: Number(raw.total_wallets),\n totalDeliveries: Number(raw.total_deliveries),\n activeCampaigns: Number(raw.active_campaigns),\n totalStaked: formatAmount(BigInt(raw.total_staked)),\n currentEpoch: Number(raw.current_epoch),\n inboxReserve: formatAmount(BigInt(raw.inbox_reserve_balance)),\n totalExtrinsics: Number(raw.total_extrinsics),\n circulatingSupply: formatAmount(BigInt(raw.circulating_supply)),\n nonCirculatingSupply: formatAmount(BigInt(raw.non_circulating_supply)),\n }\n }\n\n async tokenStats(): Promise<{ totalIssuance: string; engagementPool: string }> {\n const raw = await getTokenStats(this.api)\n return {\n totalIssuance: formatAmount(BigInt(raw.total_issuance)),\n engagementPool: formatAmount(BigInt(raw.engagement_pool_balance)),\n }\n }\n\n async validatorCount(): Promise<number> {\n const count = await getValidatorCount(this.api)\n return Number(count)\n }\n\n async activeValidators(): Promise<string[]> {\n return getActiveValidators(this.api)\n }\n\n subscribeBlocks(\n callback: (blockNumber: number, hash: string) => void\n ): Promise<() => void> {\n return new Promise((resolve, reject) => {\n this.api.rpc.chain\n .subscribeNewHeads((header) => {\n callback(header.number.toNumber(), header.hash.toHex())\n })\n .then((unsub) => resolve(unsub as unknown as () => void))\n .catch(reject)\n })\n }\n}\n","import { RIZ } from '@awarizon/sdk'\n\n// Parse human-readable amount to planck bigint.\n// Accepts: \"10 RIZ\", \"10\", \"0.5 RIZ\", \"1000000 RIZ\"\nexport function parseAmount(input: string): bigint {\n const clean = input.replace(/\\s*RIZ\\s*/gi, '').trim()\n\n if (!clean || isNaN(Number(clean))) {\n throw new Error(\n `Invalid amount: \"${input}\". Use format \"10 RIZ\" or \"10\"`\n )\n }\n\n const [whole, decimal = ''] = clean.split('.')\n const paddedDecimal = decimal.padEnd(12, '0').slice(0, 12)\n return (\n BigInt(whole || '0') * RIZ +\n BigInt(paddedDecimal)\n )\n}\n\n// Format planck bigint to human-readable RIZ string.\n// Returns: \"10.0000 RIZ\"\nexport function formatAmount(planck: bigint, decimals = 4): string {\n const whole = planck / RIZ\n const remainder = planck % RIZ\n const decStr = remainder.toString().padStart(12, '0').slice(0, decimals)\n return `${whole.toLocaleString()}.${decStr} RIZ`\n}\n\n// Validate that a string is a valid RIZ amount.\nexport function isValidAmount(input: string): boolean {\n try {\n parseAmount(input)\n return true\n } catch {\n return false\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { signAndSend } from '@awarizon/sdk'\nimport type { Balance, TxResult } from '../types'\nimport { parseAmount, formatAmount } from '../utils/amounts'\n\nexport class WalletModule {\n constructor(private api: ApiPromise) {}\n\n async balance(address: string): Promise<Balance> {\n const account = await this.api.query.system.account(address)\n const data = (account as any).data\n const free = BigInt(data.free.toString())\n const reserved = BigInt(data.reserved.toString())\n const total = free + reserved\n\n return {\n free: formatAmount(free),\n staked: formatAmount(reserved),\n reserved: formatAmount(reserved),\n total: formatAmount(total),\n freePlanck: free,\n }\n }\n\n async send(params: {\n to: string\n amount: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const planck = parseAmount(params.amount)\n const ext = this.api.tx.balances.transferKeepAlive(params.to, planck)\n const result = await signAndSend(this.api, ext, params.signer)\n return {\n hash: result.blockHash,\n blockNumber: 0,\n success: true,\n }\n }\n\n async totalIssuance(): Promise<string> {\n const issuance = await this.api.query.balances.totalIssuance()\n return formatAmount(BigInt(issuance.toString()))\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getInboxCount,\n getInboxRecord,\n buildDismissInboxRecord,\n buildSubmitEngagement,\n buildClaimReward,\n signAndSend,\n MIN_SESSION_SECONDS,\n MIN_INTERACTIONS,\n} from '@awarizon/sdk'\nimport type { InboxItem, TxResult, ClaimResult } from '../types'\n\nexport class InboxModule {\n constructor(private api: ApiPromise) {}\n\n // Enumerate all InboxRecords for address via StorageDoubleMap prefix iteration\n async list(address: string): Promise<InboxItem[]> {\n const entries = await (this.api.query as any).awarizonState.inboxRecords.entries(address)\n\n return entries.map(([, value]: [unknown, any]) => {\n const raw = value.toJSON() as Record<string, unknown>\n return {\n recordId: raw.record_id as string,\n campaignId: raw.campaign_id as string,\n developer: raw.developer as string,\n manifestHash: raw.manifest_hash as string,\n category: raw.category as string,\n status: raw.status as InboxItem['status'],\n deliveredAt: raw.delivered_at as number,\n engagedAt: (raw.engaged_at as number | null) ?? null,\n rewardClaimed: raw.reward_claimed as boolean,\n rewardEligible:\n (raw.status as string) === 'Engaged' && !(raw.reward_claimed as boolean),\n }\n })\n }\n\n async get(address: string, recordId: string): Promise<InboxItem | null> {\n const raw = await getInboxRecord(this.api, address, recordId)\n if (!raw) return null\n return {\n recordId: raw.record_id,\n campaignId: raw.campaign_id,\n developer: raw.developer,\n manifestHash: raw.manifest_hash,\n category: raw.category,\n status: raw.status,\n deliveredAt: raw.delivered_at,\n engagedAt: raw.engaged_at ?? null,\n rewardClaimed: raw.reward_claimed,\n rewardEligible: raw.status === 'Engaged' && !raw.reward_claimed,\n }\n }\n\n async count(address: string): Promise<number> {\n return getInboxCount(this.api, address)\n }\n\n async engage(params: {\n recordId: string\n sessionSeconds?: number\n interactions?: number\n signer: KeyringPair\n }): Promise<TxResult> {\n const sessionSeconds = params.sessionSeconds ?? MIN_SESSION_SECONDS\n const interactions = params.interactions ?? MIN_INTERACTIONS\n\n const ext = buildSubmitEngagement(\n this.api,\n params.recordId,\n sessionSeconds,\n interactions\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async claim(params: {\n recordId: string\n signer: KeyringPair\n }): Promise<ClaimResult> {\n const ext = buildClaimReward(this.api, params.recordId)\n const result = await signAndSend(this.api, ext, params.signer)\n // Base reward is 1 RIZ; DeFi/Gaming categories receive 1.5 RIZ on-chain\n return { hash: result.blockHash, blockNumber: 0, success: true, reward: '1.0000 RIZ' }\n }\n\n async dismiss(params: {\n recordId: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildDismissInboxRecord(this.api, params.recordId)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getDeveloperProfile,\n buildRegisterDeveloper,\n buildStakeRiz,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { DeveloperStatus, TxResult } from '../types'\nimport { parseAmount, formatAmount } from '../utils/amounts'\n\nexport class DeveloperModule {\n constructor(private api: ApiPromise) {}\n\n async register(params: { signer: KeyringPair }): Promise<TxResult> {\n const ext = buildRegisterDeveloper(this.api)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async stake(params: { amount: string; signer: KeyringPair }): Promise<TxResult> {\n const planck = parseAmount(params.amount)\n const ext = buildStakeRiz(this.api, planck)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async status(address: string): Promise<DeveloperStatus | null> {\n const profile = await getDeveloperProfile(this.api, address)\n if (!profile) return null\n return {\n registered: true,\n verified: profile.status === 'Verified',\n stake: formatAmount(profile.staked_riz),\n totalCampaigns: profile.total_campaigns ?? 0,\n totalDeliveries: Number(profile.total_deliveries),\n violationCount: profile.violation_count ?? 0,\n }\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getDeveloperManifests,\n buildRegisterManifest,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { AppCategory } from '@awarizon/sdk'\nimport type { AppManifest, TxResult } from '../types'\n\nexport class AppsModule {\n constructor(private api: ApiPromise) {}\n\n async register(params: {\n manifestHash: string // 0x-prefixed 32-byte hex\n category: AppCategory\n metadataUri: string\n signer: KeyringPair\n }): Promise<TxResult & { manifestHash: string }> {\n const ext = buildRegisterManifest(\n this.api,\n params.manifestHash,\n params.category,\n params.metadataUri\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return {\n hash: result.blockHash,\n blockNumber: 0,\n success: true,\n manifestHash: params.manifestHash,\n }\n }\n\n async list(developerAddress: string): Promise<AppManifest[]> {\n const hashes = await getDeveloperManifests(this.api, developerAddress)\n const manifests: AppManifest[] = []\n\n for (const hash of hashes) {\n const raw = await (this.api.query as any).awarizonState.manifests(hash)\n const json = raw.toJSON() as Record<string, unknown> | null\n if (!json) continue\n manifests.push({\n manifestHash: json.manifest_hash as string,\n developer: json.developer as string,\n category: json.category as string,\n registeredAt: json.registered_at as number,\n metadataUri: typeof json.metadata_uri === 'string'\n ? json.metadata_uri\n : Buffer.from(json.metadata_uri as number[]).toString('utf8'),\n })\n }\n\n return manifests\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getCampaign,\n getCampaignDeliveryStatus,\n buildCreateCampaign,\n buildTerminateCampaign,\n buildDeliverToInbox,\n generateCampaignId,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { AppCategory, TargetingCriteria } from '@awarizon/sdk'\nimport type { Campaign, TxResult, TargetingOptions } from '../types'\nimport { parseAmount } from '../utils/amounts'\n\nconst CATEGORY_MAP: Record<string, AppCategory> = {\n DeFi: 'DeFi',\n Gaming: 'Gaming',\n Social: 'Social',\n Productivity: 'Productivity',\n Infrastructure: 'Infrastructure',\n DigitalAssets: 'DigitalAssets',\n DeveloperTools: 'DeveloperTools',\n Education: 'Education',\n}\n\nfunction buildTargetingCriteria(opts: TargetingOptions): TargetingCriteria {\n return {\n wallet_age_min: opts.minWalletAge ?? null,\n wallet_age_max: opts.maxWalletAge ?? null,\n riz_balance_min: opts.minBalance ? parseAmount(opts.minBalance) : null,\n riz_balance_max: opts.maxBalance ? parseAmount(opts.maxBalance) : null,\n activity_min: opts.minActivity ?? null,\n activity_max: opts.maxActivity ?? null,\n region_codes: opts.regions ?? [],\n category_history: (opts.categories ?? [])\n .map((c) => CATEGORY_MAP[c])\n .filter((c): c is AppCategory => c !== undefined),\n custom_logic_hash: null,\n }\n}\n\nfunction targetingDescription(opts: TargetingOptions): string {\n const parts: string[] = []\n if (opts.categories?.length) parts.push(`categories: ${opts.categories.join(', ')}`)\n if (opts.minBalance || opts.maxBalance)\n parts.push(`balance: ${opts.minBalance ?? '0'} – ${opts.maxBalance ?? '∞'}`)\n if (opts.minWalletAge || opts.maxWalletAge)\n parts.push(`wallet age: ${opts.minWalletAge ?? 0} – ${opts.maxWalletAge ?? '∞'} days`)\n if (opts.regions?.length) parts.push(`regions: ${opts.regions.join(', ')}`)\n return parts.length ? parts.join('; ') : 'no targeting filters'\n}\n\nfunction rawToCampaign(raw: NonNullable<Awaited<ReturnType<typeof getCampaign>>>): Campaign {\n return {\n campaignId: raw.campaign_id,\n developer: raw.developer,\n manifestHash: raw.manifest_hash,\n status: raw.status,\n createdAt: raw.created_at,\n expiresAt: raw.expires_at,\n maxDeliveries: Number(raw.max_deliveries),\n currentDeliveries: Number(raw.current_deliveries),\n targetingDescription: 'see on-chain targeting criteria',\n }\n}\n\nexport class CampaignsModule {\n constructor(private api: ApiPromise) {}\n\n async create(params: {\n manifestHash: string\n targeting: TargetingOptions\n durationDays: number\n maxDeliveries: bigint\n signer: KeyringPair\n }): Promise<TxResult & { campaignId: string }> {\n const campaignId = generateCampaignId(params.manifestHash)\n const criteria = buildTargetingCriteria(params.targeting)\n\n const ext = buildCreateCampaign(\n this.api,\n campaignId,\n params.manifestHash,\n criteria,\n params.durationDays,\n params.maxDeliveries\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true, campaignId }\n }\n\n async get(campaignId: string): Promise<Campaign | null> {\n const raw = await getCampaign(this.api, campaignId)\n if (!raw) return null\n return rawToCampaign(raw)\n }\n\n async terminate(params: {\n campaignId: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildTerminateCampaign(this.api, params.campaignId)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async deliver(params: {\n campaignId: string\n wallet: string\n recordId: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildDeliverToInbox(\n this.api,\n params.wallet,\n params.campaignId,\n params.recordId\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async deliveryStatus(campaignId: string): Promise<{\n current: number\n max: number\n remaining: number\n percentage: number\n } | null> {\n const raw = await getCampaignDeliveryStatus(this.api, campaignId)\n if (!raw) return null\n return {\n current: Number(raw.current_deliveries),\n max: Number(raw.max_deliveries),\n remaining: Number(raw.remaining),\n percentage: raw.percentage_used,\n }\n }\n\n // Convenience: build targeting criteria description without creating a campaign\n describeTargeting(opts: TargetingOptions): string {\n return targetingDescription(opts)\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n buildCreateAsset,\n buildMintAsset,\n buildTransferAsset,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { Asset, AssetBalance, TxResult } from '../types'\n\nexport class AssetsModule {\n constructor(private api: ApiPromise) {}\n\n async create(params: {\n id: number\n admin: string\n minBalance: bigint\n signer: KeyringPair\n }): Promise<TxResult & { assetId: number }> {\n const ext = buildCreateAsset(this.api, params.id, params.admin, params.minBalance)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true, assetId: params.id }\n }\n\n async mint(params: {\n assetId: number\n to: string\n amount: bigint\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildMintAsset(this.api, params.assetId, params.to, params.amount)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async transfer(params: {\n assetId: number\n to: string\n amount: bigint\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildTransferAsset(this.api, params.assetId, params.to, params.amount)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async burn(params: {\n assetId: number\n who: string\n amount: bigint\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = (this.api.tx.assets as any).burn(params.assetId, params.who, params.amount)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async balance(params: { assetId: number; address: string }): Promise<AssetBalance> {\n const raw = await (this.api.query.assets as any).account(params.assetId, params.address)\n const json = raw.toJSON() as Record<string, unknown> | null\n const balRaw = BigInt(json?.balance?.toString() ?? '0')\n return {\n assetId: params.assetId,\n symbol: String(params.assetId),\n balance: balRaw.toString(),\n balanceRaw: balRaw,\n }\n }\n\n async metadata(assetId: number): Promise<{ name: string; symbol: string; decimals: number }> {\n const raw = await (this.api.query.assets as any).metadata(assetId)\n const json = raw.toJSON() as Record<string, unknown>\n return {\n name: String(json.name ?? ''),\n symbol: String(json.symbol ?? ''),\n decimals: Number(json.decimals ?? 0),\n }\n }\n\n async info(assetId: number): Promise<Asset | null> {\n const raw = await (this.api.query.assets as any).asset(assetId)\n const json = raw.toJSON() as Record<string, unknown> | null\n if (!json) return null\n const meta = await this.metadata(assetId)\n return {\n id: assetId,\n name: meta.name,\n symbol: meta.symbol,\n decimals: meta.decimals,\n supply: String(json.supply ?? '0'),\n owner: String(json.owner ?? ''),\n }\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { signAndSend } from '@awarizon/sdk'\nimport type { NFTItem, TxResult } from '../types'\n\nexport class NFTsModule {\n constructor(private api: ApiPromise) {}\n\n async createCollection(params: {\n collectionId: number\n admin: string\n signer: KeyringPair\n }): Promise<TxResult & { collectionId: number }> {\n // pallet_nfts: create(collection, admin, config)\n const ext = (this.api.tx.nfts as any).create(\n params.collectionId,\n params.admin,\n {} // CollectionConfig — defaults suffice for basic usage\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true, collectionId: params.collectionId }\n }\n\n async mint(params: {\n collection: number\n itemId: number\n owner: string\n signer: KeyringPair\n }): Promise<TxResult> {\n // pallet_nfts: mint(collection, item, mint_to, witness_data)\n const ext = (this.api.tx.nfts as any).mint(\n params.collection,\n params.itemId,\n params.owner,\n null // witness_data (None)\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async transfer(params: {\n collection: number\n item: number\n to: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = (this.api.tx.nfts as any).transfer(params.collection, params.item, params.to)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async burn(params: {\n collection: number\n item: number\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = (this.api.tx.nfts as any).burn(params.collection, params.item)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async ownerOf(params: { collection: number; item: number }): Promise<string | null> {\n const raw = await (this.api.query.nfts as any).item(params.collection, params.item)\n const json = raw.toJSON() as Record<string, unknown> | null\n if (!json) return null\n return String(json.owner ?? '')\n }\n\n async list(address: string): Promise<NFTItem[]> {\n // pallet_nfts stores ownership in Account storage: (owner, collection, item)\n const entries = await (this.api.query.nfts as any).account.entries(address)\n const items: NFTItem[] = []\n\n for (const [key] of entries) {\n const [, collection, item] = key.args as [unknown, number, number]\n items.push({\n collection: Number(collection),\n item: Number(item),\n owner: address,\n metadata: {},\n })\n }\n\n return items\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getActiveValidators,\n getValidatorPerformance,\n buildRegisterValidator,\n buildDelegateStake,\n buildUndelegateStake,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { ValidatorInfo, TxResult } from '../types'\nimport { parseAmount, formatAmount } from '../utils/amounts'\n\nfunction bpsToPercent(bps: number): number {\n return Math.round(bps / 100)\n}\n\nexport class ValidatorsModule {\n constructor(private api: ApiPromise) {}\n\n async register(params: {\n stake: string\n regionCode: number\n countryCode: number\n signer: KeyringPair\n }): Promise<TxResult> {\n const planck = parseAmount(params.stake)\n const ext = buildRegisterValidator(this.api, planck, params.regionCode, params.countryCode)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async delegate(params: {\n to: string\n amount: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const planck = parseAmount(params.amount)\n const ext = buildDelegateStake(this.api, params.to, planck)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async undelegate(params: {\n from: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = buildUndelegateStake(this.api, params.from)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async performance(address: string): Promise<ValidatorInfo | null> {\n const [validatorRaw, perfRaw] = await Promise.all([\n (this.api.query as any).awarizonConsensus.validators(address),\n getValidatorPerformance(this.api, address),\n ])\n\n const validator = validatorRaw.toJSON() as Record<string, unknown> | null\n if (!validator) return null\n\n const selfStake = BigInt(String(validator.self_stake ?? '0'))\n const delegatedStake = BigInt(String(validator.delegated_stake ?? '0'))\n\n return {\n address,\n selfStake: formatAmount(selfStake),\n delegatedStake: formatAmount(delegatedStake),\n totalStake: formatAmount(selfStake + delegatedStake),\n performanceScore: perfRaw ? perfRaw.performance_score : 0,\n uptime: perfRaw ? bpsToPercent(perfRaw.uptime_bps) : bpsToPercent(validator.uptime_bps as number ?? 0),\n slashCount: perfRaw ? perfRaw.slash_count : (validator.slash_count as number ?? 0),\n isActive: Boolean(validator.is_active),\n }\n }\n\n async list(): Promise<ValidatorInfo[]> {\n const addresses = await getActiveValidators(this.api)\n const results = await Promise.all(addresses.map((addr) => this.performance(addr)))\n return results.filter((v): v is ValidatorInfo => v !== null)\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport {\n getIdentity,\n isNameAvailable,\n lookupName,\n signAndSend,\n} from '@awarizon/sdk'\nimport type { IdentityRecord, NameLookup, TxResult } from '../types'\n\nexport class IdentityModule {\n constructor(private api: ApiPromise) {}\n\n async get(address: string): Promise<IdentityRecord | null> {\n return getIdentity(this.api, address)\n }\n\n async lookup(name: string): Promise<NameLookup | null> {\n return lookupName(this.api, name)\n }\n\n async isAvailable(name: string): Promise<boolean> {\n return isNameAvailable(this.api, name)\n }\n\n async register(params: {\n rizName?: string\n displayName?: string\n bio?: string\n avatarUri?: string\n website?: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = this.api.tx.awarizonIdentity.registerIdentity(\n params.rizName ?? null,\n params.displayName ?? null,\n params.bio ?? null,\n params.avatarUri ?? null,\n params.website ?? null,\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async update(params: {\n displayName?: string\n bio?: string\n avatarUri?: string\n website?: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = this.api.tx.awarizonIdentity.updateIdentity(\n params.displayName ?? null,\n params.bio ?? null,\n params.avatarUri ?? null,\n params.website ?? null,\n )\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async recalculateReputation(params: {\n account: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = this.api.tx.awarizonIdentity.recalculateReputation(params.account)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n}\n","import type { ApiPromise } from '@polkadot/api'\nimport type { KeyringPair } from '@polkadot/keyring/types'\nimport { getLinkedAddresses, signAndSend } from '@awarizon/sdk'\nimport type { ChainType, LinkedAddress, TxResult } from '../types'\n\nexport class LinksModule {\n constructor(private api: ApiPromise) {}\n\n buildEvmLinkMessage(awarizonAddress: string): string {\n return `Link to Awarizon: ${awarizonAddress}`\n }\n\n buildSolanaLinkMessage(awarizonAddress: string): string {\n return `Link to Awarizon: ${awarizonAddress}`\n }\n\n async linkEvm(params: {\n evmAddress: string\n signature: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const addrBytes = hexToBytes20(params.evmAddress)\n const sigBytes = hexToBytes65(params.signature)\n const ext = this.api.tx.awarizonLinks.linkEvmAddress(addrBytes, sigBytes)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async linkSolana(params: {\n solanaPubkey: string\n signature: string\n signer: KeyringPair\n }): Promise<TxResult> {\n const pubkeyBytes = base58ToBytes32(params.solanaPubkey)\n const sigBytes = base64ToBytes64(params.signature)\n const ext = this.api.tx.awarizonLinks.linkSolanaAddress(pubkeyBytes, sigBytes)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async unlink(params: {\n chain: ChainType\n signer: KeyringPair\n }): Promise<TxResult> {\n const ext = this.api.tx.awarizonLinks.unlinkAddress(params.chain)\n const result = await signAndSend(this.api, ext, params.signer)\n return { hash: result.blockHash, blockNumber: 0, success: true }\n }\n\n async list(address: string): Promise<LinkedAddress[]> {\n return getLinkedAddresses(this.api, address)\n }\n}\n\nfunction hexToBytes20(hex: string): Uint8Array {\n const clean = hex.replace(/^0x/i, '')\n if (clean.length !== 40) throw new Error('EVM address must be 20 bytes (40 hex chars)')\n return Uint8Array.from(Buffer.from(clean, 'hex'))\n}\n\nfunction hexToBytes65(hex: string): Uint8Array {\n const clean = hex.replace(/^0x/i, '')\n if (clean.length !== 130) throw new Error('Signature must be 65 bytes (130 hex chars)')\n return Uint8Array.from(Buffer.from(clean, 'hex'))\n}\n\nfunction base58ToBytes32(b58: string): Uint8Array {\n // Simplified: expect hex input prefixed with 0x for now\n if (b58.startsWith('0x') || b58.startsWith('0X')) {\n const clean = b58.slice(2)\n return Uint8Array.from(Buffer.from(clean.padStart(64, '0'), 'hex'))\n }\n throw new Error('Solana pubkey must be provided as 0x-prefixed hex (32 bytes)')\n}\n\nfunction base64ToBytes64(b64: string): Uint8Array {\n const buf = Buffer.from(b64, 'base64')\n if (buf.length !== 64) throw new Error('Ed25519 signature must be 64 bytes')\n return Uint8Array.from(buf)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,eAA+B;;;ACD/B,yBAIO;AACP,qBAAwB;AACxB,kBAAyB;AAIlB,IAAM,kBAAN,MAAsB;AAAA,EAG3B,cAAc;AACZ,SAAK,UAAU,IAAI,uBAAQ,EAAE,MAAM,WAAW,YAAY,GAAG,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,aAA4B;AAChC,cAAM,oCAAgB;AAAA,EACxB;AAAA,EAEA,SAAS,YAAqB,IAAqB;AACjD,UAAM,eAAW,qCAAiB,SAAS;AAC3C,UAAM,OAAO,KAAK,QAAQ,gBAAgB,QAAQ;AAClD,WAAO;AAAA,MACL;AAAA,MACA,SAAS,KAAK;AAAA,MACd,eAAW,sBAAS,KAAK,SAAS;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,SAAS,UAA2B;AAClC,eAAO,qCAAiB,QAAQ;AAAA,EAClC;AAAA,EAEA,aAAa,UAA+B;AAC1C,QAAI,CAAC,KAAK,SAAS,QAAQ,GAAG;AAC5B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AACA,WAAO,KAAK,QAAQ,gBAAgB,QAAQ;AAAA,EAC9C;AAAA;AAAA,EAGA,OAAO,UAAkB,MAA2B;AAClD,QAAI,CAAC,KAAK,SAAS,QAAQ,GAAG;AAC5B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAEA,WAAO,KAAK,QAAQ,gBAAgB,GAAG,QAAQ,GAAG,IAAI,EAAE;AAAA,EAC1D;AAAA;AAAA,EAGA,QAAQ,MAAmB,UAA0B;AACnD,UAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA;AAAA,EAGA,QAAQ,WAAmB,UAA+B;AACxD,QAAI;AACF,YAAM,OAAO,KAAK,MAAM,SAAS;AACjC,YAAM,OAAO,KAAK,QAAQ,YAAY,IAAI;AAC1C,WAAK,YAAY,QAAQ;AACzB,aAAO;AAAA,IACT,QAAQ;AACN,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,MAAkC;AAC3C,WAAO;AAAA,MACL,SAAS,KAAK;AAAA,MACd,eAAW,sBAAS,KAAK,SAAS;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,WAAW,MAAmB,UAA0B;AACtD,WAAO,KAAK,UAAU,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC7C;AAAA,EAEA,WAAW,MAAc,UAA+B;AACtD,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,YAAM,OAAO,KAAK,QAAQ,YAAY,MAAM;AAC5C,WAAK,YAAY,QAAQ;AACzB,aAAO;AAAA,IACT,QAAQ;AACN,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,WAA2B;AACnC,WAAO,KAAK,QAAQ,cAAc,WAAW,EAAE;AAAA,EACjD;AACF;;;ACjGA,IAAAC,cAKO;;;ACNP,iBAAoB;AAIb,SAAS,YAAY,OAAuB;AACjD,QAAM,QAAQ,MAAM,QAAQ,eAAe,EAAE,EAAE,KAAK;AAEpD,MAAI,CAAC,SAAS,MAAM,OAAO,KAAK,CAAC,GAAG;AAClC,UAAM,IAAI;AAAA,MACR,oBAAoB,KAAK;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,UAAU,EAAE,IAAI,MAAM,MAAM,GAAG;AAC7C,QAAM,gBAAgB,QAAQ,OAAO,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE;AACzD,SACE,OAAO,SAAS,GAAG,IAAI,iBACvB,OAAO,aAAa;AAExB;AAIO,SAAS,aAAa,QAAgB,WAAW,GAAW;AACjE,QAAM,QAAQ,SAAS;AACvB,QAAM,YAAY,SAAS;AAC3B,QAAM,SAAS,UAAU,SAAS,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,GAAG,QAAQ;AACvE,SAAO,GAAG,MAAM,eAAe,CAAC,IAAI,MAAM;AAC5C;AAGO,SAAS,cAAc,OAAwB;AACpD,MAAI;AACF,gBAAY,KAAK;AACjB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AD5BO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,QAA+B;AACnC,UAAM,MAAM,UAAM,6BAAgB,KAAK,GAAG;AAE1C,WAAO;AAAA,MACL,cAAc,OAAO,IAAI,aAAa;AAAA,MACtC,iBAAiB,OAAO,IAAI,gBAAgB;AAAA,MAC5C,iBAAiB,OAAO,IAAI,gBAAgB;AAAA,MAC5C,aAAa,aAAa,OAAO,IAAI,YAAY,CAAC;AAAA,MAClD,cAAc,OAAO,IAAI,aAAa;AAAA,MACtC,cAAc,aAAa,OAAO,IAAI,qBAAqB,CAAC;AAAA,MAC5D,iBAAiB,OAAO,IAAI,gBAAgB;AAAA,MAC5C,mBAAmB,aAAa,OAAO,IAAI,kBAAkB,CAAC;AAAA,MAC9D,sBAAsB,aAAa,OAAO,IAAI,sBAAsB,CAAC;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,MAAM,aAAyE;AAC7E,UAAM,MAAM,UAAM,2BAAc,KAAK,GAAG;AACxC,WAAO;AAAA,MACL,eAAe,aAAa,OAAO,IAAI,cAAc,CAAC;AAAA,MACtD,gBAAgB,aAAa,OAAO,IAAI,uBAAuB,CAAC;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,MAAM,iBAAkC;AACtC,UAAM,QAAQ,UAAM,+BAAkB,KAAK,GAAG;AAC9C,WAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EAEA,MAAM,mBAAsC;AAC1C,eAAO,iCAAoB,KAAK,GAAG;AAAA,EACrC;AAAA,EAEA,gBACE,UACqB;AACrB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,IAAI,IAAI,MACV,kBAAkB,CAAC,WAAW;AAC7B,iBAAS,OAAO,OAAO,SAAS,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA,MACxD,CAAC,EACA,KAAK,CAAC,UAAU,QAAQ,KAA8B,CAAC,EACvD,MAAM,MAAM;AAAA,IACjB,CAAC;AAAA,EACH;AACF;;;AExDA,IAAAC,cAA4B;AAIrB,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,QAAQ,SAAmC;AAC/C,UAAM,UAAU,MAAM,KAAK,IAAI,MAAM,OAAO,QAAQ,OAAO;AAC3D,UAAM,OAAQ,QAAgB;AAC9B,UAAM,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACxC,UAAM,WAAW,OAAO,KAAK,SAAS,SAAS,CAAC;AAChD,UAAM,QAAQ,OAAO;AAErB,WAAO;AAAA,MACL,MAAM,aAAa,IAAI;AAAA,MACvB,QAAQ,aAAa,QAAQ;AAAA,MAC7B,UAAU,aAAa,QAAQ;AAAA,MAC/B,OAAO,aAAa,KAAK;AAAA,MACzB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,QAIW;AACpB,UAAM,SAAS,YAAY,OAAO,MAAM;AACxC,UAAM,MAAM,KAAK,IAAI,GAAG,SAAS,kBAAkB,OAAO,IAAI,MAAM;AACpE,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO;AAAA,MACL,MAAM,OAAO;AAAA,MACb,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,MAAM,gBAAiC;AACrC,UAAM,WAAW,MAAM,KAAK,IAAI,MAAM,SAAS,cAAc;AAC7D,WAAO,aAAa,OAAO,SAAS,SAAS,CAAC,CAAC;AAAA,EACjD;AACF;;;AC1CA,IAAAC,cASO;AAGA,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA;AAAA,EAGtC,MAAM,KAAK,SAAuC;AAChD,UAAM,UAAU,MAAO,KAAK,IAAI,MAAc,cAAc,aAAa,QAAQ,OAAO;AAExF,WAAO,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,MAAsB;AAChD,YAAM,MAAM,MAAM,OAAO;AACzB,aAAO;AAAA,QACL,UAAU,IAAI;AAAA,QACd,YAAY,IAAI;AAAA,QAChB,WAAW,IAAI;AAAA,QACf,cAAc,IAAI;AAAA,QAClB,UAAU,IAAI;AAAA,QACd,QAAQ,IAAI;AAAA,QACZ,aAAa,IAAI;AAAA,QACjB,WAAY,IAAI,cAAgC;AAAA,QAChD,eAAe,IAAI;AAAA,QACnB,gBACG,IAAI,WAAsB,aAAa,CAAE,IAAI;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,SAAiB,UAA6C;AACtE,UAAM,MAAM,UAAM,4BAAe,KAAK,KAAK,SAAS,QAAQ;AAC5D,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO;AAAA,MACL,UAAU,IAAI;AAAA,MACd,YAAY,IAAI;AAAA,MAChB,WAAW,IAAI;AAAA,MACf,cAAc,IAAI;AAAA,MAClB,UAAU,IAAI;AAAA,MACd,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,WAAW,IAAI,cAAc;AAAA,MAC7B,eAAe,IAAI;AAAA,MACnB,gBAAgB,IAAI,WAAW,aAAa,CAAC,IAAI;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,SAAkC;AAC5C,eAAO,2BAAc,KAAK,KAAK,OAAO;AAAA,EACxC;AAAA,EAEA,MAAM,OAAO,QAKS;AACpB,UAAM,iBAAiB,OAAO,kBAAkB;AAChD,UAAM,eAAe,OAAO,gBAAgB;AAE5C,UAAM,UAAM;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,MAAM,QAGa;AACvB,UAAM,UAAM,8BAAiB,KAAK,KAAK,OAAO,QAAQ;AACtD,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAE7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,MAAM,QAAQ,aAAa;AAAA,EACvF;AAAA,EAEA,MAAM,QAAQ,QAGQ;AACpB,UAAM,UAAM,qCAAwB,KAAK,KAAK,OAAO,QAAQ;AAC7D,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AACF;;;AC/FA,IAAAC,cAKO;AAIA,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,SAAS,QAAoD;AACjE,UAAM,UAAM,oCAAuB,KAAK,GAAG;AAC3C,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,MAAM,QAAoE;AAC9E,UAAM,SAAS,YAAY,OAAO,MAAM;AACxC,UAAM,UAAM,2BAAc,KAAK,KAAK,MAAM;AAC1C,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,SAAkD;AAC7D,UAAM,UAAU,UAAM,iCAAoB,KAAK,KAAK,OAAO;AAC3D,QAAI,CAAC,QAAS,QAAO;AACrB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,UAAU,QAAQ,WAAW;AAAA,MAC7B,OAAO,aAAa,QAAQ,UAAU;AAAA,MACtC,gBAAgB,QAAQ,mBAAmB;AAAA,MAC3C,iBAAiB,OAAO,QAAQ,gBAAgB;AAAA,MAChD,gBAAgB,QAAQ,mBAAmB;AAAA,IAC7C;AAAA,EACF;AACF;;;ACrCA,IAAAC,cAIO;AAIA,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,SAAS,QAKkC;AAC/C,UAAM,UAAM;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO;AAAA,MACL,MAAM,OAAO;AAAA,MACb,aAAa;AAAA,MACb,SAAS;AAAA,MACT,cAAc,OAAO;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,kBAAkD;AAC3D,UAAM,SAAS,UAAM,mCAAsB,KAAK,KAAK,gBAAgB;AACrE,UAAM,YAA2B,CAAC;AAElC,eAAW,QAAQ,QAAQ;AACzB,YAAM,MAAM,MAAO,KAAK,IAAI,MAAc,cAAc,UAAU,IAAI;AACtE,YAAM,OAAO,IAAI,OAAO;AACxB,UAAI,CAAC,KAAM;AACX,gBAAU,KAAK;AAAA,QACb,cAAc,KAAK;AAAA,QACnB,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,cAAc,KAAK;AAAA,QACnB,aAAa,OAAO,KAAK,iBAAiB,WACtC,KAAK,eACL,OAAO,KAAK,KAAK,YAAwB,EAAE,SAAS,MAAM;AAAA,MAChE,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;;;ACrDA,IAAAC,cAQO;AAKP,IAAM,eAA4C;AAAA,EAChD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,WAAW;AACb;AAEA,SAAS,uBAAuB,MAA2C;AACzE,SAAO;AAAA,IACL,gBAAgB,KAAK,gBAAgB;AAAA,IACrC,gBAAgB,KAAK,gBAAgB;AAAA,IACrC,iBAAiB,KAAK,aAAa,YAAY,KAAK,UAAU,IAAI;AAAA,IAClE,iBAAiB,KAAK,aAAa,YAAY,KAAK,UAAU,IAAI;AAAA,IAClE,cAAc,KAAK,eAAe;AAAA,IAClC,cAAc,KAAK,eAAe;AAAA,IAClC,cAAc,KAAK,WAAW,CAAC;AAAA,IAC/B,mBAAmB,KAAK,cAAc,CAAC,GACpC,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC,EAC1B,OAAO,CAAC,MAAwB,MAAM,MAAS;AAAA,IAClD,mBAAmB;AAAA,EACrB;AACF;AAEA,SAAS,qBAAqB,MAAgC;AAC5D,QAAM,QAAkB,CAAC;AACzB,MAAI,KAAK,YAAY,OAAQ,OAAM,KAAK,eAAe,KAAK,WAAW,KAAK,IAAI,CAAC,EAAE;AACnF,MAAI,KAAK,cAAc,KAAK;AAC1B,UAAM,KAAK,YAAY,KAAK,cAAc,GAAG,WAAM,KAAK,cAAc,QAAG,EAAE;AAC7E,MAAI,KAAK,gBAAgB,KAAK;AAC5B,UAAM,KAAK,eAAe,KAAK,gBAAgB,CAAC,WAAM,KAAK,gBAAgB,QAAG,OAAO;AACvF,MAAI,KAAK,SAAS,OAAQ,OAAM,KAAK,YAAY,KAAK,QAAQ,KAAK,IAAI,CAAC,EAAE;AAC1E,SAAO,MAAM,SAAS,MAAM,KAAK,IAAI,IAAI;AAC3C;AAEA,SAAS,cAAc,KAAqE;AAC1F,SAAO;AAAA,IACL,YAAY,IAAI;AAAA,IAChB,WAAW,IAAI;AAAA,IACf,cAAc,IAAI;AAAA,IAClB,QAAQ,IAAI;AAAA,IACZ,WAAW,IAAI;AAAA,IACf,WAAW,IAAI;AAAA,IACf,eAAe,OAAO,IAAI,cAAc;AAAA,IACxC,mBAAmB,OAAO,IAAI,kBAAkB;AAAA,IAChD,sBAAsB;AAAA,EACxB;AACF;AAEO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,OAAO,QAMkC;AAC7C,UAAM,iBAAa,gCAAmB,OAAO,YAAY;AACzD,UAAM,WAAW,uBAAuB,OAAO,SAAS;AAExD,UAAM,UAAM;AAAA,MACV,KAAK;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,MAAM,WAAW;AAAA,EAC7E;AAAA,EAEA,MAAM,IAAI,YAA8C;AACtD,UAAM,MAAM,UAAM,yBAAY,KAAK,KAAK,UAAU;AAClD,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,cAAc,GAAG;AAAA,EAC1B;AAAA,EAEA,MAAM,UAAU,QAGM;AACpB,UAAM,UAAM,oCAAuB,KAAK,KAAK,OAAO,UAAU;AAC9D,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,QAAQ,QAKQ;AACpB,UAAM,UAAM;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,eAAe,YAKX;AACR,UAAM,MAAM,UAAM,uCAA0B,KAAK,KAAK,UAAU;AAChE,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO;AAAA,MACL,SAAS,OAAO,IAAI,kBAAkB;AAAA,MACtC,KAAK,OAAO,IAAI,cAAc;AAAA,MAC9B,WAAW,OAAO,IAAI,SAAS;AAAA,MAC/B,YAAY,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA,EAGA,kBAAkB,MAAgC;AAChD,WAAO,qBAAqB,IAAI;AAAA,EAClC;AACF;;;AC7IA,IAAAC,cAKO;AAGA,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,OAAO,QAK+B;AAC1C,UAAM,UAAM,8BAAiB,KAAK,KAAK,OAAO,IAAI,OAAO,OAAO,OAAO,UAAU;AACjF,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,MAAM,SAAS,OAAO,GAAG;AAAA,EACrF;AAAA,EAEA,MAAM,KAAK,QAKW;AACpB,UAAM,UAAM,4BAAe,KAAK,KAAK,OAAO,SAAS,OAAO,IAAI,OAAO,MAAM;AAC7E,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,SAAS,QAKO;AACpB,UAAM,UAAM,gCAAmB,KAAK,KAAK,OAAO,SAAS,OAAO,IAAI,OAAO,MAAM;AACjF,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,KAAK,QAKW;AACpB,UAAM,MAAO,KAAK,IAAI,GAAG,OAAe,KAAK,OAAO,SAAS,OAAO,KAAK,OAAO,MAAM;AACtF,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,QAAQ,QAAqE;AACjF,UAAM,MAAM,MAAO,KAAK,IAAI,MAAM,OAAe,QAAQ,OAAO,SAAS,OAAO,OAAO;AACvF,UAAM,OAAO,IAAI,OAAO;AACxB,UAAM,SAAS,OAAO,MAAM,SAAS,SAAS,KAAK,GAAG;AACtD,WAAO;AAAA,MACL,SAAS,OAAO;AAAA,MAChB,QAAQ,OAAO,OAAO,OAAO;AAAA,MAC7B,SAAS,OAAO,SAAS;AAAA,MACzB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAA8E;AAC3F,UAAM,MAAM,MAAO,KAAK,IAAI,MAAM,OAAe,SAAS,OAAO;AACjE,UAAM,OAAO,IAAI,OAAO;AACxB,WAAO;AAAA,MACL,MAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,MAC5B,QAAQ,OAAO,KAAK,UAAU,EAAE;AAAA,MAChC,UAAU,OAAO,KAAK,YAAY,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,SAAwC;AACjD,UAAM,MAAM,MAAO,KAAK,IAAI,MAAM,OAAe,MAAM,OAAO;AAC9D,UAAM,OAAO,IAAI,OAAO;AACxB,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,OAAO,MAAM,KAAK,SAAS,OAAO;AACxC,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,MACf,QAAQ,OAAO,KAAK,UAAU,GAAG;AAAA,MACjC,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AACF;;;AC3FA,IAAAC,cAA4B;AAGrB,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,iBAAiB,QAI0B;AAE/C,UAAM,MAAO,KAAK,IAAI,GAAG,KAAa;AAAA,MACpC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,CAAC;AAAA;AAAA,IACH;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,MAAM,cAAc,OAAO,aAAa;AAAA,EACpG;AAAA,EAEA,MAAM,KAAK,QAKW;AAEpB,UAAM,MAAO,KAAK,IAAI,GAAG,KAAa;AAAA,MACpC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA;AAAA,IACF;AACA,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,SAAS,QAKO;AACpB,UAAM,MAAO,KAAK,IAAI,GAAG,KAAa,SAAS,OAAO,YAAY,OAAO,MAAM,OAAO,EAAE;AACxF,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,KAAK,QAIW;AACpB,UAAM,MAAO,KAAK,IAAI,GAAG,KAAa,KAAK,OAAO,YAAY,OAAO,IAAI;AACzE,UAAM,SAAS,UAAM,yBAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,QAAQ,QAAsE;AAClF,UAAM,MAAM,MAAO,KAAK,IAAI,MAAM,KAAa,KAAK,OAAO,YAAY,OAAO,IAAI;AAClF,UAAM,OAAO,IAAI,OAAO;AACxB,QAAI,CAAC,KAAM,QAAO;AAClB,WAAO,OAAO,KAAK,SAAS,EAAE;AAAA,EAChC;AAAA,EAEA,MAAM,KAAK,SAAqC;AAE9C,UAAM,UAAU,MAAO,KAAK,IAAI,MAAM,KAAa,QAAQ,QAAQ,OAAO;AAC1E,UAAM,QAAmB,CAAC;AAE1B,eAAW,CAAC,GAAG,KAAK,SAAS;AAC3B,YAAM,CAAC,EAAE,YAAY,IAAI,IAAI,IAAI;AACjC,YAAM,KAAK;AAAA,QACT,YAAY,OAAO,UAAU;AAAA,QAC7B,MAAM,OAAO,IAAI;AAAA,QACjB,OAAO;AAAA,QACP,UAAU,CAAC;AAAA,MACb,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;;;ACnFA,IAAAC,eAOO;AAIP,SAAS,aAAa,KAAqB;AACzC,SAAO,KAAK,MAAM,MAAM,GAAG;AAC7B;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,SAAS,QAKO;AACpB,UAAM,SAAS,YAAY,OAAO,KAAK;AACvC,UAAM,UAAM,qCAAuB,KAAK,KAAK,QAAQ,OAAO,YAAY,OAAO,WAAW;AAC1F,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,SAAS,QAIO;AACpB,UAAM,SAAS,YAAY,OAAO,MAAM;AACxC,UAAM,UAAM,iCAAmB,KAAK,KAAK,OAAO,IAAI,MAAM;AAC1D,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,WAAW,QAGK;AACpB,UAAM,UAAM,mCAAqB,KAAK,KAAK,OAAO,IAAI;AACtD,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,YAAY,SAAgD;AAChE,UAAM,CAAC,cAAc,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC/C,KAAK,IAAI,MAAc,kBAAkB,WAAW,OAAO;AAAA,UAC5D,sCAAwB,KAAK,KAAK,OAAO;AAAA,IAC3C,CAAC;AAED,UAAM,YAAY,aAAa,OAAO;AACtC,QAAI,CAAC,UAAW,QAAO;AAEvB,UAAM,YAAY,OAAO,OAAO,UAAU,cAAc,GAAG,CAAC;AAC5D,UAAM,iBAAiB,OAAO,OAAO,UAAU,mBAAmB,GAAG,CAAC;AAEtE,WAAO;AAAA,MACL;AAAA,MACA,WAAW,aAAa,SAAS;AAAA,MACjC,gBAAgB,aAAa,cAAc;AAAA,MAC3C,YAAY,aAAa,YAAY,cAAc;AAAA,MACnD,kBAAkB,UAAU,QAAQ,oBAAoB;AAAA,MACxD,QAAQ,UAAU,aAAa,QAAQ,UAAU,IAAI,aAAa,UAAU,cAAwB,CAAC;AAAA,MACrG,YAAY,UAAU,QAAQ,cAAe,UAAU,eAAyB;AAAA,MAChF,UAAU,QAAQ,UAAU,SAAS;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,MAAM,OAAiC;AACrC,UAAM,YAAY,UAAM,kCAAoB,KAAK,GAAG;AACpD,UAAM,UAAU,MAAM,QAAQ,IAAI,UAAU,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,CAAC,CAAC;AACjF,WAAO,QAAQ,OAAO,CAAC,MAA0B,MAAM,IAAI;AAAA,EAC7D;AACF;;;AC/EA,IAAAC,eAKO;AAGA,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,MAAM,IAAI,SAAiD;AACzD,eAAO,0BAAY,KAAK,KAAK,OAAO;AAAA,EACtC;AAAA,EAEA,MAAM,OAAO,MAA0C;AACrD,eAAO,yBAAW,KAAK,KAAK,IAAI;AAAA,EAClC;AAAA,EAEA,MAAM,YAAY,MAAgC;AAChD,eAAO,8BAAgB,KAAK,KAAK,IAAI;AAAA,EACvC;AAAA,EAEA,MAAM,SAAS,QAOO;AACpB,UAAM,MAAM,KAAK,IAAI,GAAG,iBAAiB;AAAA,MACvC,OAAO,WAAW;AAAA,MAClB,OAAO,eAAe;AAAA,MACtB,OAAO,OAAO;AAAA,MACd,OAAO,aAAa;AAAA,MACpB,OAAO,WAAW;AAAA,IACpB;AACA,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,QAMS;AACpB,UAAM,MAAM,KAAK,IAAI,GAAG,iBAAiB;AAAA,MACvC,OAAO,eAAe;AAAA,MACtB,OAAO,OAAO;AAAA,MACd,OAAO,aAAa;AAAA,MACpB,OAAO,WAAW;AAAA,IACpB;AACA,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,sBAAsB,QAGN;AACpB,UAAM,MAAM,KAAK,IAAI,GAAG,iBAAiB,sBAAsB,OAAO,OAAO;AAC7E,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AACF;;;ACnEA,IAAAC,eAAgD;AAGzC,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,KAAiB;AAAjB;AAAA,EAAkB;AAAA,EAEtC,oBAAoB,iBAAiC;AACnD,WAAO,qBAAqB,eAAe;AAAA,EAC7C;AAAA,EAEA,uBAAuB,iBAAiC;AACtD,WAAO,qBAAqB,eAAe;AAAA,EAC7C;AAAA,EAEA,MAAM,QAAQ,QAIQ;AACpB,UAAM,YAAY,aAAa,OAAO,UAAU;AAChD,UAAM,WAAW,aAAa,OAAO,SAAS;AAC9C,UAAM,MAAM,KAAK,IAAI,GAAG,cAAc,eAAe,WAAW,QAAQ;AACxE,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,WAAW,QAIK;AACpB,UAAM,cAAc,gBAAgB,OAAO,YAAY;AACvD,UAAM,WAAW,gBAAgB,OAAO,SAAS;AACjD,UAAM,MAAM,KAAK,IAAI,GAAG,cAAc,kBAAkB,aAAa,QAAQ;AAC7E,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,QAGS;AACpB,UAAM,MAAM,KAAK,IAAI,GAAG,cAAc,cAAc,OAAO,KAAK;AAChE,UAAM,SAAS,UAAM,0BAAY,KAAK,KAAK,KAAK,OAAO,MAAM;AAC7D,WAAO,EAAE,MAAM,OAAO,WAAW,aAAa,GAAG,SAAS,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,KAAK,SAA2C;AACpD,eAAO,iCAAmB,KAAK,KAAK,OAAO;AAAA,EAC7C;AACF;AAEA,SAAS,aAAa,KAAyB;AAC7C,QAAM,QAAQ,IAAI,QAAQ,QAAQ,EAAE;AACpC,MAAI,MAAM,WAAW,GAAI,OAAM,IAAI,MAAM,6CAA6C;AACtF,SAAO,WAAW,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAClD;AAEA,SAAS,aAAa,KAAyB;AAC7C,QAAM,QAAQ,IAAI,QAAQ,QAAQ,EAAE;AACpC,MAAI,MAAM,WAAW,IAAK,OAAM,IAAI,MAAM,4CAA4C;AACtF,SAAO,WAAW,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAClD;AAEA,SAAS,gBAAgB,KAAyB;AAEhD,MAAI,IAAI,WAAW,IAAI,KAAK,IAAI,WAAW,IAAI,GAAG;AAChD,UAAM,QAAQ,IAAI,MAAM,CAAC;AACzB,WAAO,WAAW,KAAK,OAAO,KAAK,MAAM,SAAS,IAAI,GAAG,GAAG,KAAK,CAAC;AAAA,EACpE;AACA,QAAM,IAAI,MAAM,8DAA8D;AAChF;AAEA,SAAS,gBAAgB,KAAyB;AAChD,QAAM,MAAM,OAAO,KAAK,KAAK,QAAQ;AACrC,MAAI,IAAI,WAAW,GAAI,OAAM,IAAI,MAAM,oCAAoC;AAC3E,SAAO,WAAW,KAAK,GAAG;AAC5B;;;Ab5DO,IAAM,eAAN,MAAmB;AAAA,EAiBxB,YAAoB,QAAoB;AAApB;AAhBpB,SAAQ,SAAgC;AACxC,SAAQ,MAAyB;AAgB/B,SAAK,UAAU,IAAI,gBAAgB;AAAA,EACrC;AAAA,EAEA,MAAM,UAAyB;AAC7B,UAAM,KAAK,QAAQ,WAAW;AAE9B,SAAK,SAAS,IAAI,4BAAe,KAAK,OAAO,QAAQ;AACrD,UAAM,KAAK,OAAO,QAAQ;AAC1B,SAAK,MAAM,KAAK,OAAO,OAAO;AAE9B,SAAK,UAAU,IAAI,cAAc,KAAK,GAAG;AACzC,SAAK,SAAS,IAAI,aAAa,KAAK,GAAG;AACvC,SAAK,QAAQ,IAAI,YAAY,KAAK,GAAG;AACrC,SAAK,YAAY,IAAI,gBAAgB,KAAK,GAAG;AAC7C,SAAK,OAAO,IAAI,WAAW,KAAK,GAAG;AACnC,SAAK,YAAY,IAAI,gBAAgB,KAAK,GAAG;AAC7C,SAAK,SAAS,IAAI,aAAa,KAAK,GAAG;AACvC,SAAK,OAAO,IAAI,WAAW,KAAK,GAAG;AACnC,SAAK,aAAa,IAAI,iBAAiB,KAAK,GAAG;AAC/C,SAAK,WAAW,IAAI,eAAe,KAAK,GAAG;AAC3C,SAAK,QAAQ,IAAI,YAAY,KAAK,GAAG;AAErC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAA4B;AAChC,QAAI,KAAK,QAAQ;AACf,YAAM,KAAK,OAAO,WAAW;AAC7B,WAAK,SAAS;AACd,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AAAA,EAEA,cAAuB;AACrB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EAEA,SAAqB;AACnB,QAAI,CAAC,KAAK,KAAK;AACb,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AACA,WAAO,KAAK;AAAA,EACd;AACF;AAEA,eAAsB,WAAW,QAA2C;AAC1E,QAAM,OAAO,IAAI,aAAa,MAAM;AACpC,QAAM,KAAK,QAAQ;AACnB,SAAO;AACT;;;ADnDA,IAAAC,eASO;","names":["import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk"]}
|