@slvr-labs/sdk 0.1.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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +849 -0
  3. package/dist/connect.d.ts +47 -0
  4. package/dist/connect.d.ts.map +1 -0
  5. package/dist/connect.js +56 -0
  6. package/dist/connect.js.map +1 -0
  7. package/dist/contracts/autoCommit.d.ts +151 -0
  8. package/dist/contracts/autoCommit.d.ts.map +1 -0
  9. package/dist/contracts/autoCommit.js +426 -0
  10. package/dist/contracts/autoCommit.js.map +1 -0
  11. package/dist/contracts/hub.d.ts +50 -0
  12. package/dist/contracts/hub.d.ts.map +1 -0
  13. package/dist/contracts/hub.js +118 -0
  14. package/dist/contracts/hub.js.map +1 -0
  15. package/dist/contracts/index.d.ts +8 -0
  16. package/dist/contracts/index.d.ts.map +1 -0
  17. package/dist/contracts/index.js +18 -0
  18. package/dist/contracts/index.js.map +1 -0
  19. package/dist/contracts/jackpot.d.ts +21 -0
  20. package/dist/contracts/jackpot.d.ts.map +1 -0
  21. package/dist/contracts/jackpot.js +44 -0
  22. package/dist/contracts/jackpot.js.map +1 -0
  23. package/dist/contracts/lottery.d.ts +256 -0
  24. package/dist/contracts/lottery.d.ts.map +1 -0
  25. package/dist/contracts/lottery.js +767 -0
  26. package/dist/contracts/lottery.js.map +1 -0
  27. package/dist/contracts/registry.d.ts +53 -0
  28. package/dist/contracts/registry.d.ts.map +1 -0
  29. package/dist/contracts/registry.js +143 -0
  30. package/dist/contracts/registry.js.map +1 -0
  31. package/dist/contracts/staking.d.ts +101 -0
  32. package/dist/contracts/staking.d.ts.map +1 -0
  33. package/dist/contracts/staking.js +306 -0
  34. package/dist/contracts/staking.js.map +1 -0
  35. package/dist/contracts/token.d.ts +95 -0
  36. package/dist/contracts/token.d.ts.map +1 -0
  37. package/dist/contracts/token.js +273 -0
  38. package/dist/contracts/token.js.map +1 -0
  39. package/dist/deployments.d.ts +117 -0
  40. package/dist/deployments.d.ts.map +1 -0
  41. package/dist/deployments.js +74 -0
  42. package/dist/deployments.js.map +1 -0
  43. package/dist/errors.d.ts +39 -0
  44. package/dist/errors.d.ts.map +1 -0
  45. package/dist/errors.js +67 -0
  46. package/dist/errors.js.map +1 -0
  47. package/dist/ev.d.ts +123 -0
  48. package/dist/ev.d.ts.map +1 -0
  49. package/dist/ev.js +111 -0
  50. package/dist/ev.js.map +1 -0
  51. package/dist/events.d.ts +418 -0
  52. package/dist/events.d.ts.map +1 -0
  53. package/dist/events.js +87 -0
  54. package/dist/events.js.map +1 -0
  55. package/dist/index.d.ts +248 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +436 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/oracle.d.ts +48 -0
  60. package/dist/oracle.d.ts.map +1 -0
  61. package/dist/oracle.js +77 -0
  62. package/dist/oracle.js.map +1 -0
  63. package/dist/price.d.ts +52 -0
  64. package/dist/price.d.ts.map +1 -0
  65. package/dist/price.js +78 -0
  66. package/dist/price.js.map +1 -0
  67. package/dist/transaction.d.ts +54 -0
  68. package/dist/transaction.d.ts.map +1 -0
  69. package/dist/transaction.js +105 -0
  70. package/dist/transaction.js.map +1 -0
  71. package/dist/types.d.ts +162 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +23 -0
  74. package/dist/types.js.map +1 -0
  75. package/dist/utils.d.ts +58 -0
  76. package/dist/utils.d.ts.map +1 -0
  77. package/dist/utils.js +110 -0
  78. package/dist/utils.js.map +1 -0
  79. package/examples/.env.example +22 -0
  80. package/examples/README.md +417 -0
  81. package/examples/automated-betting.ts +232 -0
  82. package/examples/combined-strategy.ts +227 -0
  83. package/examples/constants.ts +35 -0
  84. package/examples/custom-strategy-example.ts +231 -0
  85. package/examples/expected-value-strategy.ts +255 -0
  86. package/examples/fixed-squares-strategy.ts +176 -0
  87. package/examples/index.ts +30 -0
  88. package/examples/least-allocated-strategy.ts +224 -0
  89. package/examples/local-test.ts +172 -0
  90. package/examples/quickstart-bet.ts +72 -0
  91. package/examples/quickstart-read.ts +87 -0
  92. package/examples/simple-example.ts +122 -0
  93. package/examples/strategy-base.ts +283 -0
  94. package/package.json +71 -0
  95. package/skills/slvr-bot/SKILL.md +193 -0
  96. package/skills/slvr-bot/references/api.md +117 -0
@@ -0,0 +1,47 @@
1
+ import { Account, Chain, PublicClient, Transport, WalletClient } from 'viem';
2
+ import { SlvrDeployment } from './deployments';
3
+ /**
4
+ * Options for {@link createSlvrClients} / {@link SlvrSDK.connect}.
5
+ */
6
+ export interface ConnectOptions {
7
+ /** Which deployment to target. Defaults to `robinhood`. */
8
+ deployment?: SlvrDeployment;
9
+ /** RPC URL. Defaults to the deployment's `rpcUrl`. Ignored if `transport` is given. */
10
+ rpcUrl?: string;
11
+ /** A fully-custom viem transport (overrides `rpcUrl`). */
12
+ transport?: Transport;
13
+ /** A private key to build a wallet client from (for sending transactions). */
14
+ privateKey?: `0x${string}`;
15
+ /** …or an already-built viem `Account` (alternative to `privateKey`). */
16
+ account?: Account;
17
+ /** Auto-batch concurrent reads through Multicall3. Defaults to `true`. */
18
+ batchMulticall?: boolean;
19
+ /** viem polling interval (ms) used by event watchers. */
20
+ pollingInterval?: number;
21
+ }
22
+ /**
23
+ * Build a viem `Chain` for a deployment. Returns the shipped `robinhoodChain`
24
+ * (which already registers Multicall3) for the Robinhood deployment; otherwise
25
+ * synthesizes one, wiring `multicall3` when the deployment provides it.
26
+ */
27
+ export declare function chainFromDeployment(deployment: SlvrDeployment): Chain;
28
+ /** Clients returned by {@link createSlvrClients}. */
29
+ export interface SlvrClients {
30
+ chain: Chain;
31
+ publicClient: PublicClient;
32
+ /** Present only when a `privateKey` or `account` was supplied. */
33
+ walletClient?: WalletClient;
34
+ }
35
+ /**
36
+ * Create ready-to-use viem clients for a Slvr deployment with sensible, resilient
37
+ * defaults — Multicall3 auto-batching, a longer timeout, and retries — so you
38
+ * don't have to hand-tune the transport for a polling bot.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * import { createSlvrClients } from '@slvr-labs/sdk';
43
+ * const { publicClient, walletClient } = createSlvrClients({ privateKey: process.env.PRIVATE_KEY });
44
+ * ```
45
+ */
46
+ export declare function createSlvrClients(opts?: ConnectOptions): SlvrClients;
47
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EAKb,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,cAAc,EAA6B,MAAM,eAAe,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,cAAc,GAAG,KAAK,CAcrE;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,kEAAkE;IAClE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,cAAmB,GAAG,WAAW,CAkBxE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chainFromDeployment = chainFromDeployment;
4
+ exports.createSlvrClients = createSlvrClients;
5
+ const viem_1 = require("viem");
6
+ const accounts_1 = require("viem/accounts");
7
+ const deployments_1 = require("./deployments");
8
+ /**
9
+ * Build a viem `Chain` for a deployment. Returns the shipped `robinhoodChain`
10
+ * (which already registers Multicall3) for the Robinhood deployment; otherwise
11
+ * synthesizes one, wiring `multicall3` when the deployment provides it.
12
+ */
13
+ function chainFromDeployment(deployment) {
14
+ if (deployment.chainId === deployments_1.robinhood.chainId)
15
+ return deployments_1.robinhoodChain;
16
+ return (0, viem_1.defineChain)({
17
+ id: deployment.chainId,
18
+ name: deployment.name,
19
+ nativeCurrency: { decimals: 18, name: 'Ether', symbol: 'ETH' },
20
+ rpcUrls: { default: { http: [deployment.rpcUrl] } },
21
+ ...(deployment.blockExplorer
22
+ ? { blockExplorers: { default: { name: 'Explorer', url: deployment.blockExplorer } } }
23
+ : {}),
24
+ ...(deployment.addresses.multicall3
25
+ ? { contracts: { multicall3: { address: deployment.addresses.multicall3 } } }
26
+ : {}),
27
+ });
28
+ }
29
+ /**
30
+ * Create ready-to-use viem clients for a Slvr deployment with sensible, resilient
31
+ * defaults — Multicall3 auto-batching, a longer timeout, and retries — so you
32
+ * don't have to hand-tune the transport for a polling bot.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import { createSlvrClients } from '@slvr-labs/sdk';
37
+ * const { publicClient, walletClient } = createSlvrClients({ privateKey: process.env.PRIVATE_KEY });
38
+ * ```
39
+ */
40
+ function createSlvrClients(opts = {}) {
41
+ const deployment = opts.deployment ?? deployments_1.robinhood;
42
+ const chain = chainFromDeployment(deployment);
43
+ const transport = opts.transport ?? (0, viem_1.http)(opts.rpcUrl ?? deployment.rpcUrl, { timeout: 20000, retryCount: 3 });
44
+ const publicClient = (0, viem_1.createPublicClient)({
45
+ chain,
46
+ transport,
47
+ batch: { multicall: opts.batchMulticall ?? true },
48
+ ...(opts.pollingInterval ? { pollingInterval: opts.pollingInterval } : {}),
49
+ });
50
+ const account = opts.account ?? (opts.privateKey ? (0, accounts_1.privateKeyToAccount)(opts.privateKey) : undefined);
51
+ const walletClient = account
52
+ ? (0, viem_1.createWalletClient)({ chain, transport, account })
53
+ : undefined;
54
+ return { chain, publicClient, walletClient };
55
+ }
56
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":";;AAuCA,kDAcC;AAqBD,8CAkBC;AA5FD,+BAUc;AACd,4CAAoD;AACpD,+CAA0E;AAsB1E;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,UAA0B;IAC5D,IAAI,UAAU,CAAC,OAAO,KAAK,uBAAS,CAAC,OAAO;QAAE,OAAO,4BAAc,CAAC;IACpE,OAAO,IAAA,kBAAW,EAAC;QACjB,EAAE,EAAE,UAAU,CAAC,OAAO;QACtB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAC9D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;QACnD,GAAG,CAAC,UAAU,CAAC,aAAa;YAC1B,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE;YACtF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU;YACjC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE;YAC7E,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAUD;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,OAAuB,EAAE;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,uBAAS,CAAC;IAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/G,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAC;QACtC,KAAK;QACL,SAAS;QACT,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;QACjD,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAiB,CAAC;IAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,8BAAmB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrG,MAAM,YAAY,GAAG,OAAO;QAC1B,CAAC,CAAE,IAAA,yBAAkB,EAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAkB;QACrE,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { Address, PublicClient, WalletClient } from 'viem';
2
+ import { AutoCommitPlan } from '../types';
3
+ /**
4
+ * SlvrAutoCommitV2 contract interface
5
+ *
6
+ * V2 economics: executors calling executeFor/claimFor are reimbursed their
7
+ * metered gas (plus a premium, capped at maxFeePerExecution — both owner-tunable
8
+ * within hard ceilings) from the user's plan balance — there is no flat
9
+ * AUTOMATION_FEE and the execution functions are nonpayable. Claimable winning
10
+ * rounds are discovered off-chain and passed in explicitly via claimRounds.
11
+ */
12
+ export declare class SlvrAutoCommit {
13
+ private publicClient;
14
+ private walletClient?;
15
+ private address;
16
+ private static readonly ABI;
17
+ constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, address: Address);
18
+ /**
19
+ * Update the wallet client
20
+ * @param walletClient New wallet client
21
+ */
22
+ setWalletClient(walletClient: WalletClient | undefined): void;
23
+ /**
24
+ * Get plan information for a user
25
+ */
26
+ planInfo(user: Address): Promise<AutoCommitPlan>;
27
+ /**
28
+ * Check whether a plan is ready to execute, and if not, why
29
+ */
30
+ needsExecution(user: Address): Promise<{
31
+ ready: boolean;
32
+ reason: string;
33
+ }>;
34
+ /**
35
+ * Check whether a specific round has already been executed for a user
36
+ */
37
+ executedRound(user: Address, roundId: bigint): Promise<boolean>;
38
+ /**
39
+ * Get lottery contract address
40
+ */
41
+ lottery(): Promise<Address>;
42
+ /**
43
+ * Get the sentinel plays value meaning "unlimited plays"
44
+ */
45
+ unlimitedPlays(): Promise<number>;
46
+ /**
47
+ * Get max plays per execution
48
+ */
49
+ maxPlaysPerExecution(): Promise<number>;
50
+ /**
51
+ * Get max claim rounds accepted per execution
52
+ */
53
+ maxClaimsPerExecution(): Promise<bigint>;
54
+ /**
55
+ * Get the current cap on the executor fee reimbursed per execution
56
+ * (owner-tunable within the contract's hard ceiling)
57
+ */
58
+ maxFeePerExecution(): Promise<bigint>;
59
+ /**
60
+ * Get the current executor-fee premium in basis points
61
+ * (owner-tunable within the contract's hard ceiling)
62
+ */
63
+ feePremiumBps(): Promise<number>;
64
+ /**
65
+ * Deposit native tokens to auto-commit plan
66
+ * @param value Amount to deposit
67
+ * @returns Transaction hash
68
+ * @throws WalletClientRequiredError if wallet client is not available
69
+ * @throws ValidationError if amount is invalid
70
+ * @throws ContractCallError if contract call fails
71
+ */
72
+ deposit(value: bigint): Promise<`0x${string}`>;
73
+ /**
74
+ * Withdraw from auto-commit plan
75
+ * @param amount Amount to withdraw
76
+ * @param to Recipient address
77
+ * @returns Transaction hash
78
+ * @throws WalletClientRequiredError if wallet client is not available
79
+ * @throws ValidationError if inputs are invalid
80
+ * @throws ContractCallError if contract call fails
81
+ */
82
+ withdraw(amount: bigint, to: Address): Promise<`0x${string}`>;
83
+ /**
84
+ * Configure auto-commit plan
85
+ * @param plays Number of plays (UNLIMITED_PLAYS = 4294967295 for unlimited;
86
+ * forced to unlimited on-chain when autoClaim is true)
87
+ * @param amountPerPlay Amount per play
88
+ * @param squares Square indices to bet on
89
+ * @param bpsAlloc Basis points allocation for each square (must sum to 10000)
90
+ * @param autoClaim Whether the keeper should claim winnings back into the plan balance
91
+ * @returns Transaction hash
92
+ * @throws WalletClientRequiredError if wallet client is not available
93
+ * @throws ValidationError if inputs are invalid
94
+ * @throws ContractCallError if contract call fails
95
+ */
96
+ configurePlan(plays: number, amountPerPlay: bigint, squares: number[], bpsAlloc: number[], autoClaim: boolean): Promise<`0x${string}`>;
97
+ /**
98
+ * Configure auto-commit plan and deposit funds in a single transaction
99
+ * @param plays Number of plays (see configurePlan)
100
+ * @param amountPerPlay Amount per play
101
+ * @param squares Square indices to bet on
102
+ * @param bpsAlloc Basis points allocation for each square (must sum to 10000)
103
+ * @param autoClaim Whether the keeper should claim winnings back into the plan balance
104
+ * @param value Amount to deposit
105
+ * @returns Transaction hash
106
+ * @throws WalletClientRequiredError if wallet client is not available
107
+ * @throws ValidationError if inputs are invalid
108
+ * @throws ContractCallError if contract call fails
109
+ */
110
+ configurePlanAndDeposit(plays: number, amountPerPlay: bigint, squares: number[], bpsAlloc: number[], autoClaim: boolean, value: bigint): Promise<`0x${string}`>;
111
+ /**
112
+ * Disable auto-commit plan
113
+ * @returns Transaction hash
114
+ * @throws WalletClientRequiredError if wallet client is not available
115
+ * @throws ContractCallError if contract call fails
116
+ */
117
+ disablePlan(): Promise<`0x${string}`>;
118
+ /**
119
+ * Cancel the plan and refund the entire remaining balance to the caller
120
+ * @returns Transaction hash
121
+ * @throws WalletClientRequiredError if wallet client is not available
122
+ * @throws ContractCallError if contract call fails
123
+ */
124
+ cancelPlan(): Promise<`0x${string}`>;
125
+ /**
126
+ * Execute auto-commit plan for a user (anyone can call).
127
+ * The caller is reimbursed metered gas + premium from the user's plan balance.
128
+ * @param user User address
129
+ * @param maxPlays Maximum number of plays to execute
130
+ * @param claimRounds Winning round ids to claim into the plan balance before
131
+ * betting (discovered off-chain; non-claimable entries are no-ops)
132
+ * @returns Transaction hash
133
+ * @throws WalletClientRequiredError if wallet client is not available
134
+ * @throws ValidationError if inputs are invalid
135
+ * @throws ContractCallError if contract call fails
136
+ */
137
+ executeFor(user: Address, maxPlays: number, claimRounds?: bigint[]): Promise<`0x${string}`>;
138
+ /**
139
+ * Claim winning rounds into a user's plan balance without betting (anyone can
140
+ * call). Useful when the plan balance is too low to bet until winnings land.
141
+ * @param user User address
142
+ * @param claimRounds Winning round ids to claim (discovered off-chain)
143
+ * @returns Transaction hash
144
+ * @throws WalletClientRequiredError if wallet client is not available
145
+ * @throws ValidationError if inputs are invalid
146
+ * @throws ContractCallError if contract call fails
147
+ */
148
+ claimFor(user: Address, claimRounds: bigint[]): Promise<`0x${string}`>;
149
+ private validatePlanConfig;
150
+ }
151
+ //# sourceMappingURL=autoCommit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoCommit.d.ts","sourceRoot":"","sources":["../../src/contracts/autoCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAqBxB;gBAES,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO;IAMhG;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAI7D;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAqBtD;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUhF;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASrE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQjC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ7C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ9C;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ3C;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQtC;;;;;;;OAOG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAwBpD;;;;;;;;OAQG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAyBnE;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAwBzB;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAC3B,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IA0BzB;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAqB3C;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAqB1C;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IA2BrG;;;;;;;;;OASG;IACG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IA2B5E,OAAO,CAAC,kBAAkB;CAS3B"}