@ickb/sdk 1000.0.82 → 9001.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.
Files changed (157) hide show
  1. package/README.md +84 -32
  2. package/dist/constants.d.ts +9 -22
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +62 -76
  5. package/dist/constants.js.map +1 -1
  6. package/dist/conversion/estimate.d.ts +33 -0
  7. package/dist/conversion/estimate.d.ts.map +1 -0
  8. package/dist/conversion/estimate.js +117 -0
  9. package/dist/conversion/estimate.js.map +1 -0
  10. package/dist/conversion/maturity.d.ts +15 -0
  11. package/dist/conversion/maturity.d.ts.map +1 -0
  12. package/dist/conversion/maturity.js +113 -0
  13. package/dist/conversion/maturity.js.map +1 -0
  14. package/dist/conversion/plans.d.ts +20 -0
  15. package/dist/conversion/plans.d.ts.map +1 -0
  16. package/dist/conversion/plans.js +106 -0
  17. package/dist/conversion/plans.js.map +1 -0
  18. package/dist/conversion/projection.d.ts +21 -0
  19. package/dist/conversion/projection.d.ts.map +1 -0
  20. package/dist/conversion/projection.js +94 -0
  21. package/dist/conversion/projection.js.map +1 -0
  22. package/dist/conversion/types.d.ts +264 -0
  23. package/dist/conversion/types.d.ts.map +1 -0
  24. package/dist/conversion/types.js +2 -0
  25. package/dist/conversion/types.js.map +1 -0
  26. package/dist/conversion/withdrawal_ring.d.ts +34 -0
  27. package/dist/conversion/withdrawal_ring.d.ts.map +1 -0
  28. package/dist/conversion/withdrawal_ring.js +87 -0
  29. package/dist/conversion/withdrawal_ring.js.map +1 -0
  30. package/dist/dao.d.ts +100 -0
  31. package/dist/dao.d.ts.map +1 -0
  32. package/dist/dao.js +125 -0
  33. package/dist/dao.js.map +1 -0
  34. package/dist/index.d.ts +49 -3
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +20 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/logic.d.ts +81 -0
  39. package/dist/logic.d.ts.map +1 -0
  40. package/dist/logic.js +173 -0
  41. package/dist/logic.js.map +1 -0
  42. package/dist/order/cells.d.ts +168 -0
  43. package/dist/order/cells.d.ts.map +1 -0
  44. package/dist/order/cells.js +309 -0
  45. package/dist/order/cells.js.map +1 -0
  46. package/dist/order/conversion.d.ts +37 -0
  47. package/dist/order/conversion.d.ts.map +1 -0
  48. package/dist/order/conversion.js +120 -0
  49. package/dist/order/conversion.js.map +1 -0
  50. package/dist/order/fee.d.ts +9 -0
  51. package/dist/order/fee.d.ts.map +1 -0
  52. package/dist/order/fee.js +24 -0
  53. package/dist/order/fee.js.map +1 -0
  54. package/dist/order/fill.d.ts +36 -0
  55. package/dist/order/fill.d.ts.map +1 -0
  56. package/dist/order/fill.js +53 -0
  57. package/dist/order/fill.js.map +1 -0
  58. package/dist/order/info.d.ts +62 -0
  59. package/dist/order/info.d.ts.map +1 -0
  60. package/dist/order/info.js +102 -0
  61. package/dist/order/info.js.map +1 -0
  62. package/dist/order/master.d.ts +49 -0
  63. package/dist/order/master.d.ts.map +1 -0
  64. package/dist/order/master.js +27 -0
  65. package/dist/order/master.js.map +1 -0
  66. package/dist/order/matcher.d.ts +43 -0
  67. package/dist/order/matcher.d.ts.map +1 -0
  68. package/dist/order/matcher.js +124 -0
  69. package/dist/order/matcher.js.map +1 -0
  70. package/dist/order/order.d.ts +63 -0
  71. package/dist/order/order.d.ts.map +1 -0
  72. package/dist/order/order.js +234 -0
  73. package/dist/order/order.js.map +1 -0
  74. package/dist/order/order_data.d.ts +51 -0
  75. package/dist/order/order_data.d.ts.map +1 -0
  76. package/dist/order/order_data.js +67 -0
  77. package/dist/order/order_data.js.map +1 -0
  78. package/dist/order/ratio.d.ts +40 -0
  79. package/dist/order/ratio.d.ts.map +1 -0
  80. package/dist/order/ratio.js +74 -0
  81. package/dist/order/ratio.js.map +1 -0
  82. package/dist/order/relative.d.ts +43 -0
  83. package/dist/order/relative.d.ts.map +1 -0
  84. package/dist/order/relative.js +57 -0
  85. package/dist/order/relative.js.map +1 -0
  86. package/dist/owned_owner.d.ts +108 -0
  87. package/dist/owned_owner.d.ts.map +1 -0
  88. package/dist/owned_owner.js +260 -0
  89. package/dist/owned_owner.js.map +1 -0
  90. package/dist/sdk.d.ts +113 -41
  91. package/dist/sdk.d.ts.map +1 -1
  92. package/dist/sdk.js +410 -209
  93. package/dist/sdk.js.map +1 -1
  94. package/dist/send/sign_and_send_transaction.d.ts +61 -0
  95. package/dist/send/sign_and_send_transaction.d.ts.map +1 -0
  96. package/dist/send/sign_and_send_transaction.js +201 -0
  97. package/dist/send/sign_and_send_transaction.js.map +1 -0
  98. package/dist/send/wait_transaction.d.ts +42 -0
  99. package/dist/send/wait_transaction.d.ts.map +1 -0
  100. package/dist/send/wait_transaction.js +172 -0
  101. package/dist/send/wait_transaction.js.map +1 -0
  102. package/dist/udt.d.ts +108 -0
  103. package/dist/udt.d.ts.map +1 -0
  104. package/dist/udt.js +180 -0
  105. package/dist/udt.js.map +1 -0
  106. package/dist/utils/chain.d.ts +3 -0
  107. package/dist/utils/chain.d.ts.map +1 -0
  108. package/dist/utils/chain.js +2 -0
  109. package/dist/utils/chain.js.map +1 -0
  110. package/dist/utils/codec.d.ts +19 -0
  111. package/dist/utils/codec.d.ts.map +1 -0
  112. package/dist/utils/codec.js +69 -0
  113. package/dist/utils/codec.js.map +1 -0
  114. package/dist/utils/utils.d.ts +99 -0
  115. package/dist/utils/utils.d.ts.map +1 -0
  116. package/dist/utils/utils.js +130 -0
  117. package/dist/utils/utils.js.map +1 -0
  118. package/dist/utils/verified_client.d.ts +19 -0
  119. package/dist/utils/verified_client.d.ts.map +1 -0
  120. package/dist/utils/verified_client.js +92 -0
  121. package/dist/utils/verified_client.js.map +1 -0
  122. package/package.json +19 -26
  123. package/src/constants.ts +65 -181
  124. package/src/conversion/estimate.ts +155 -0
  125. package/src/conversion/maturity.ts +158 -0
  126. package/src/conversion/plans.ts +144 -0
  127. package/src/conversion/projection.ts +136 -0
  128. package/src/conversion/types.ts +302 -0
  129. package/src/conversion/withdrawal_ring.ts +122 -0
  130. package/src/dao.ts +196 -0
  131. package/src/index.ts +89 -3
  132. package/src/logic.ts +283 -0
  133. package/src/order/cells.ts +383 -0
  134. package/src/order/conversion.ts +162 -0
  135. package/src/order/fee.ts +30 -0
  136. package/src/order/fill.ts +83 -0
  137. package/src/order/info.ts +181 -0
  138. package/src/order/master.ts +42 -0
  139. package/src/order/matcher.ts +191 -0
  140. package/src/order/order.ts +288 -0
  141. package/src/order/order_data.ts +131 -0
  142. package/src/order/ratio.ts +127 -0
  143. package/src/order/relative.ts +109 -0
  144. package/src/owned_owner.ts +364 -0
  145. package/src/sdk.ts +542 -440
  146. package/src/send/sign_and_send_transaction.ts +256 -0
  147. package/src/send/wait_transaction.ts +227 -0
  148. package/src/udt.ts +249 -0
  149. package/src/utils/chain.ts +2 -0
  150. package/src/utils/codec.ts +78 -0
  151. package/src/utils/utils.ts +208 -0
  152. package/src/utils/verified_client.ts +136 -0
  153. package/dist/codec.d.ts +0 -3
  154. package/dist/codec.d.ts.map +0 -1
  155. package/dist/codec.js +0 -58
  156. package/dist/codec.js.map +0 -1
  157. package/src/codec.ts +0 -138
package/dist/sdk.d.ts CHANGED
@@ -1,51 +1,123 @@
1
1
  import { ccc } from "@ckb-ccc/core";
2
- import { CapacityManager, SmartTransaction, type ValueComponents } from "@ickb/utils";
3
- import { type LogicManager, type OwnedOwnerManager } from "@ickb/core";
4
- import { Info, OrderManager, Ratio, type OrderCell, type OrderGroup } from "@ickb/order";
5
- import { getConfig } from "./constants.js";
2
+ import type { AccountState, CompleteIckbTransactionOptions, ConversionTransactionContext, ConversionTransactionOptions, ConversionTransactionResult, SdkManagers, SystemState } from "./conversion/types.js";
3
+ import { type LockUpPolicy } from "./dao.js";
4
+ import type { IckbDepositCell } from "./logic.js";
5
+ import type { OrderGroup } from "./order/cells.js";
6
+ import type { SupportedChain } from "./utils/chain.js";
7
+ /**
8
+ * Input count up to which one own transaction sweeps liquid cells.
9
+ *
10
+ * @remarks A compaction target, not a validity bound: required funding and the fee may go
11
+ * past it. Counted rather than measured in bytes because a same-lock input costs a fixed
12
+ * 44 bytes (52 with an extra witness slot), so 1,000 inputs stay near 50 KB, far under the
13
+ * node's 512,000-byte limit, and near the one measured point (1,000 inputs: 44 KB, about
14
+ * 180 ms of local completion). A miner paying the bot adds about forty cellbase cells per
15
+ * turn, which this outpaces; a larger backlog takes several transactions.
16
+ */
17
+ export declare const SWEEP_INPUT_LIMIT = 1000;
18
+ /** What every own transaction collects along: the context's collectable positions. */
19
+ type CollectSteps = Pick<ConversionTransactionContext, "availableOrders" | "receipts" | "readyWithdrawals">;
20
+ /**
21
+ * The whole SDK, which the Node actors drive by relative import; the package barrel
22
+ * exposes the two conversion-workflow methods, and its assignment checks they agree.
23
+ */
6
24
  export declare class IckbSdk {
25
+ private readonly ickbUdt;
7
26
  private readonly ownedOwner;
8
27
  private readonly ickbLogic;
9
28
  private readonly order;
10
- private readonly capacity;
11
- private readonly bots;
12
- constructor(ownedOwner: OwnedOwnerManager, ickbLogic: LogicManager, order: OrderManager, capacity: CapacityManager, bots: ccc.Script[]);
13
- static from(...args: Parameters<typeof getConfig>): IckbSdk;
14
- static estimate(isCkb2Udt: boolean, amounts: ValueComponents, system: SystemState, options?: {
15
- fee?: ccc.Num;
16
- feeBase?: ccc.Num;
17
- }): {
18
- convertedAmount: ccc.FixedPoint;
19
- ckbFee: ccc.FixedPoint;
20
- info: Info;
21
- maturity: ccc.Num | undefined;
22
- };
23
- static maturity(o: OrderCell | {
24
- info: Info;
25
- amounts: ValueComponents;
26
- }, system: SystemState): bigint | undefined;
27
- request(tx: SmartTransaction, user: ccc.Signer | ccc.Script, info: Info, amounts: ValueComponents): Promise<void>;
28
- collect(tx: SmartTransaction, groups: OrderGroup[], options?: {
29
- isFulfilledOnly?: boolean;
30
- }): void;
31
- getL1State(client: ccc.Client, locks: ccc.Script[]): Promise<{
29
+ constructor({ ickbUdt, ownedOwner, ickbLogic, order }: SdkManagers);
30
+ /** Creates the SDK for one chain's deployment. */
31
+ static fromChain(chain: SupportedChain): IckbSdk;
32
+ /**
33
+ * Reads system, user-order, and account state at the sampled tip's parent, under the
34
+ * caller's withdrawal timing rules (`BOT_LOCK_UP` or `WALLET_LOCK_UP`) and, when given, a
35
+ * positive fee rate cap that replaces CCC's ceiling; a cap of zero or less throws.
36
+ *
37
+ * @remarks Every read goes through `verifiedClient` and the tip's parent is bounded by the
38
+ * policy's slack, so a caller passes a plain client. Every read is complete and uncapped: a large
39
+ * book or pool costs a slower read, never a partial or failed one. Each account lock is
40
+ * enumerated by one uncached unfiltered exact-lock scan and classified client-side.
41
+ */
42
+ getL1AccountState(plainClient: ccc.Client, locks: ccc.Script[], lockUp: LockUpPolicy, maxFeeRate?: ccc.NumLike): Promise<{
32
43
  system: SystemState;
33
- user: {
34
- orders: OrderGroup[];
35
- };
44
+ userOrders: OrderGroup[];
45
+ account: AccountState;
36
46
  }>;
37
- private getCkb;
47
+ /** Every Stack cell one lock owns, classified from a single exact-lock scan. */
48
+ private readLockCells;
49
+ /**
50
+ * Builds and completes one conversion transaction from a conversion context.
51
+ *
52
+ * @remarks
53
+ * Every branch returns a transaction funded from the signer's committed cells: the
54
+ * candidate plans (deposit counts, or prefixes of the greedy withdrawal selection with
55
+ * their rebuilt remainder order) are completed most direct first and the first fundable one
56
+ * wins, so a wallet short of CKB degrades to fewer direct actions plus a larger standing
57
+ * order rather than failing. Failure results are
58
+ * expected planning outcomes; when no plan can be funded the last completion error throws.
59
+ */
60
+ buildConversionTransaction(options: ConversionTransactionOptions): Promise<ConversionTransactionResult>;
61
+ private buildCollectOnlyConversion;
62
+ private buildCkbToIckbConversion;
63
+ private buildIckbToCkbConversion;
64
+ private completeConversion;
65
+ /**
66
+ * Adds the context's collect steps to a partial transaction: the withdrawal requests when
67
+ * given, then the collectable orders, the receipts, and the ready withdrawals.
68
+ *
69
+ * @remarks
70
+ * The result is still partial. Callers should use `completeTransaction` before
71
+ * signing and sending. The withdrawals move their deposit headers to the front of
72
+ * `headerDeps`, so the given transaction must not reference a header by position.
73
+ */
74
+ buildBaseTransaction(txLike: ccc.TransactionLike, steps: CollectSteps, withdrawalRequest?: {
75
+ deposits: IckbDepositCell[];
76
+ lock: ccc.Script;
77
+ }): ccc.Transaction;
78
+ /**
79
+ * Completes iCKB inputs, iCKB change, plain change, and the fee from the cells it is given.
80
+ *
81
+ * @remarks Completion never scans. `cells` are the signer's known liquid cells, plain
82
+ * CKB and iCKB, from the account state already read: the largest ones fund what the
83
+ * outputs need, the rest ride along as a sweep while the transaction has fewer than
84
+ * {@link SWEEP_INPUT_LIMIT} inputs, so every own transaction compacts the account.
85
+ * Ordinary change is always a plain cell; existing outputs
86
+ * are never reinterpreted or resized as fee change. This does not sign or send.
87
+ */
88
+ completeTransaction(txLike: ccc.TransactionLike, options: CompleteIckbTransactionOptions): Promise<ccc.Transaction>;
89
+ /** iCKB: what the outputs need first, then the sweep while the limit allows, then change. */
90
+ private completeIckb;
38
91
  }
39
- export interface SystemState {
40
- feeRate: ccc.Num;
41
- tip: ccc.ClientBlockHeader;
42
- exchangeRatio: Ratio;
43
- orderPool: OrderCell[];
44
- ckbAvailable: ccc.FixedPoint;
45
- ckbMaturing: CkbCumulative[];
46
- }
47
- export interface CkbCumulative {
48
- ckbCumulative: ccc.FixedPoint;
49
- maturity: ccc.Num;
92
+ /** Stable machine-readable SDK failures. */
93
+ export type IckbErrorCode = "insufficient_capacity" | "insufficient_ickb";
94
+ /** Typed SDK failure with a stable machine-readable code. */
95
+ export declare class IckbError extends Error {
96
+ /** Stable failure code for callers and observability. */
97
+ readonly code: IckbErrorCode;
98
+ /** Creates a typed SDK failure while preserving its cause. */
99
+ constructor(message: string, options: ErrorOptions & {
100
+ code: IckbErrorCode;
101
+ });
50
102
  }
103
+ /**
104
+ * Completes the first candidate that the real completer can fund.
105
+ *
106
+ * @remarks
107
+ * Only completion knows what a transaction costs once markers, remainder orders, change, and
108
+ * fee are in, so no count is computed up front: each candidate is built and completed in turn.
109
+ * Capacity, DAO output-limit and DAO header-index failures advance
110
+ * the walk; transport, scan, signer, and malformed-transaction errors propagate. Exhausting
111
+ * the candidates throws the last advancing failure.
112
+ */
113
+ export declare function completeFirstFundable<T>(candidates: Iterable<T>, build: (candidate: T) => ccc.Transaction, complete: (tx: ccc.Transaction) => Promise<ccc.Transaction>): Promise<{
114
+ candidate: T;
115
+ tx: ccc.Transaction;
116
+ }>;
117
+ /**
118
+ * A failure the walk advances past: the candidate costs more than the account funds, or
119
+ * needs more DAO outputs or deposit-header slots than one transaction has.
120
+ */
121
+ export declare function isFundabilityFailure(error: unknown): error is Error;
122
+ export {};
51
123
  //# sourceMappingURL=sdk.d.ts.map
package/dist/sdk.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"../src/","sources":["sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAEL,eAAe,EACf,gBAAgB,EAEhB,KAAK,eAAe,EAIrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C,qBAAa,OAAO;IAWhB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAJJ,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE;IASrC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO;IA+B3D,MAAM,CAAC,QAAQ,CACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QACd,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;KACnB,GACA;QACD,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;QACvB,IAAI,EAAE,IAAI,CAAC;QACX,QAAQ,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC;KAC/B;IAiCD,MAAM,CAAC,QAAQ,CACb,CAAC,EACG,SAAS,GACT;QACE,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,EAAE,eAAe,CAAC;KAC1B,EACL,MAAM,EAAE,WAAW,GAClB,MAAM,GAAG,SAAS;IAwFf,OAAO,CACX,EAAE,EAAE,gBAAgB,EACpB,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IAwBhB,OAAO,CACL,EAAE,EAAE,gBAAgB,EACpB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GACA,IAAI;IAmBD,UAAU,CACd,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE;YAAE,MAAM,EAAE,UAAU,EAAE,CAAA;SAAE,CAAA;KAAE,CAAC;YAoErD,MAAM;CA8HrB;AAKD,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;IAGjB,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAG3B,aAAa,EAAE,KAAK,CAAC;IAGrB,SAAS,EAAE,SAAS,EAAE,CAAC;IAGvB,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC;IAG7B,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAKD,MAAM,WAAW,aAAa;IAE5B,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAE9B,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;CACnB"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAOpC,OAAO,KAAK,EACV,YAAY,EACZ,8BAA8B,EAC9B,4BAA4B,EAE5B,4BAA4B,EAC5B,2BAA2B,EAC3B,WAAW,EACX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAML,KAAK,YAAY,EAGlB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAKtC,sFAAsF;AACtF,KAAK,YAAY,GAAG,IAAI,CACtB,4BAA4B,EAC5B,iBAAiB,GAAG,UAAU,GAAG,kBAAkB,CACpD,CAAC;AAEF;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAKjE;IAED,kDAAkD;IAClD,OAAc,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEtD;IAID;;;;;;;;;OASG;IACU,iBAAiB,CAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EACvB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,EACnB,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,GACvB,OAAO,CAAC;QACT,MAAM,EAAE,WAAW,CAAC;QACpB,UAAU,EAAE,UAAU,EAAE,CAAC;QACzB,OAAO,EAAE,YAAY,CAAC;KACvB,CAAC,CAgDD;IAED,gFAAgF;YAClE,aAAa;IA0B3B;;;;;;;;;;OAUG;IACU,0BAA0B,CACrC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAsBtC;YAEa,0BAA0B;YAuB1B,wBAAwB;YA+CxB,wBAAwB;YAmDxB,kBAAkB;IAmBhC;;;;;;;;OAQG;IACI,oBAAoB,CACzB,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,KAAK,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE;QAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAA;KAAE,GACpE,GAAG,CAAC,WAAW,CAmBjB;IAED;;;;;;;;;OASG;IACU,mBAAmB,CAC9B,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAyC1B;IAED,6FAA6F;YAC/E,YAAY;CAuB3B;AAyFD,4CAA4C;AAC5C,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAE1E,6DAA6D;AAC7D,qBAAa,SAAU,SAAQ,KAAK;IAClC,yDAAyD;IACzD,SAAgB,IAAI,EAAE,aAAa,CAAC;IAEpC,8DAA8D;IAC9D,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,EAI3E;CACF;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EACvB,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,WAAW,EACxC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAC1D,OAAO,CAAC;IAAE,SAAS,EAAE,CAAC,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAA;CAAE,CAAC,CAahD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAOnE"}