@bsv/sdk 1.9.1 → 1.9.3

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 (44) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/kvstore/GlobalKVStore.js +116 -98
  3. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  4. package/dist/cjs/src/kvstore/types.js.map +1 -1
  5. package/dist/cjs/src/overlay-tools/index.js +1 -0
  6. package/dist/cjs/src/overlay-tools/index.js.map +1 -1
  7. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +55 -0
  8. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  9. package/dist/cjs/src/registry/RegistryClient.js +144 -25
  10. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  11. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  12. package/dist/esm/src/kvstore/GlobalKVStore.js +117 -99
  13. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  14. package/dist/esm/src/kvstore/types.js.map +1 -1
  15. package/dist/esm/src/overlay-tools/index.js +1 -0
  16. package/dist/esm/src/overlay-tools/index.js.map +1 -1
  17. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js +48 -0
  18. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  19. package/dist/esm/src/registry/RegistryClient.js +148 -26
  20. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  21. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  22. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  23. package/dist/types/src/kvstore/types.d.ts +2 -0
  24. package/dist/types/src/kvstore/types.d.ts.map +1 -1
  25. package/dist/types/src/overlay-tools/index.d.ts +1 -0
  26. package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
  27. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts +14 -0
  28. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts.map +1 -0
  29. package/dist/types/src/registry/RegistryClient.d.ts +31 -5
  30. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  31. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  32. package/dist/umd/bundle.js +3 -3
  33. package/dist/umd/bundle.js.map +1 -1
  34. package/docs/reference/kvstore.md +9 -0
  35. package/docs/reference/overlay-tools.md +32 -0
  36. package/docs/reference/registry.md +34 -9
  37. package/package.json +1 -1
  38. package/src/kvstore/GlobalKVStore.ts +134 -114
  39. package/src/kvstore/__tests/GlobalKVStore.test.ts +11 -1
  40. package/src/kvstore/types.ts +2 -0
  41. package/src/overlay-tools/index.ts +1 -0
  42. package/src/overlay-tools/withDoubleSpendRetry.ts +71 -0
  43. package/src/registry/RegistryClient.ts +180 -36
  44. package/src/registry/__tests/RegistryClient.test.ts +211 -54
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.9.1",
3
+ "version": "1.9.3",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -48,6 +48,7 @@ const DEFAULT_CONFIG = {
48
48
  topics: ['tm_kvstore'],
49
49
  networkPreset: 'mainnet',
50
50
  acceptDelayedBroadcast: false,
51
+ overlayBroadcast: false,
51
52
  tokenSetDescription: '',
52
53
  tokenUpdateDescription: '',
53
54
  tokenRemovalDescription: '' // Will be set dynamically
@@ -129,10 +130,7 @@ class GlobalKVStore {
129
130
  const tokenAmount = options.tokenAmount ?? this.config.tokenAmount;
130
131
  const tags = options.tags ?? [];
131
132
  try {
132
- // Check for existing token to spend
133
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
134
- const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
135
- // Create PushDrop locking script
133
+ // Create PushDrop locking script (reusable across retries)
136
134
  const pushdrop = new index_js_2.PushDrop(this.wallet, this.config.originator);
137
135
  const lockingScriptFields = [
138
136
  Utils.toArray(JSON.stringify(protocolID), 'utf8'),
@@ -145,70 +143,79 @@ class GlobalKVStore {
145
143
  lockingScriptFields.push(Utils.toArray(JSON.stringify(tags), 'utf8'));
146
144
  }
147
145
  const lockingScript = await pushdrop.lock(lockingScriptFields, protocolID ?? this.config.protocolID, Utils.toUTF8(Utils.toArray(key, 'utf8')), 'anyone', true);
148
- let inputs = [];
149
- let inputBEEF;
150
- if (existingToken != null) {
151
- inputs = [{
152
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
153
- unlockingScriptLength: 74,
154
- inputDescription: 'Previous KVStore token'
155
- }];
156
- inputBEEF = existingToken.beef;
157
- }
158
- if (inputs.length > 0) {
159
- // Update existing token
160
- const { signableTransaction } = await this.wallet.createAction({
161
- description: tokenUpdateDescription,
162
- inputBEEF: inputBEEF?.toBinary(),
163
- inputs,
164
- outputs: [{
165
- satoshis: tokenAmount ?? this.config.tokenAmount,
166
- lockingScript: lockingScript.toHex(),
167
- outputDescription: 'KVStore token'
168
- }],
169
- options: {
170
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
171
- randomizeOutputs: false
146
+ // Wrap entire operation in double-spend retry, including overlay query
147
+ const outpoint = await (0, index_js_1.withDoubleSpendRetry)(async () => {
148
+ // Re-query overlay on each attempt to get fresh token state
149
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
150
+ const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
151
+ if (existingToken != null) {
152
+ // Update existing token
153
+ const inputs = [{
154
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
155
+ unlockingScriptLength: 74,
156
+ inputDescription: 'Previous KVStore token'
157
+ }];
158
+ const inputBEEF = existingToken.beef;
159
+ const { signableTransaction } = await this.wallet.createAction({
160
+ description: tokenUpdateDescription,
161
+ inputBEEF: inputBEEF.toBinary(),
162
+ inputs,
163
+ outputs: [{
164
+ satoshis: tokenAmount ?? this.config.tokenAmount,
165
+ lockingScript: lockingScript.toHex(),
166
+ outputDescription: 'KVStore token'
167
+ }],
168
+ options: {
169
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
170
+ noSend: this.config.overlayBroadcast,
171
+ randomizeOutputs: false
172
+ }
173
+ }, this.config.originator);
174
+ if (signableTransaction == null) {
175
+ throw new Error('Unable to create update transaction');
172
176
  }
173
- }, this.config.originator);
174
- if (signableTransaction == null) {
175
- throw new Error('Unable to create update transaction');
176
- }
177
- const tx = Transaction_js_1.default.fromAtomicBEEF(signableTransaction.tx);
178
- const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
179
- const unlockingScript = await unlocker.sign(tx, 0);
180
- const { tx: finalTx } = await this.wallet.signAction({
181
- reference: signableTransaction.reference,
182
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
183
- }, this.config.originator);
184
- if (finalTx == null) {
185
- throw new Error('Unable to finalize update transaction');
177
+ const tx = Transaction_js_1.default.fromAtomicBEEF(signableTransaction.tx);
178
+ const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
179
+ const unlockingScript = await unlocker.sign(tx, 0);
180
+ const { tx: finalTx } = await this.wallet.signAction({
181
+ reference: signableTransaction.reference,
182
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
183
+ options: {
184
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
185
+ noSend: this.config.overlayBroadcast
186
+ }
187
+ }, this.config.originator);
188
+ if (finalTx == null) {
189
+ throw new Error('Unable to finalize update transaction');
190
+ }
191
+ const transaction = Transaction_js_1.default.fromAtomicBEEF(finalTx);
192
+ await this.submitToOverlay(transaction);
193
+ return `${transaction.id('hex')}.0`;
186
194
  }
187
- const transaction = Transaction_js_1.default.fromAtomicBEEF(finalTx);
188
- await this.submitToOverlay(transaction);
189
- return `${transaction.id('hex')}.0`;
190
- }
191
- else {
192
- // Create new token
193
- const { tx } = await this.wallet.createAction({
194
- description: tokenSetDescription,
195
- outputs: [{
196
- satoshis: tokenAmount ?? this.config.tokenAmount,
197
- lockingScript: lockingScript.toHex(),
198
- outputDescription: 'KVStore token'
199
- }],
200
- options: {
201
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
202
- randomizeOutputs: false
195
+ else {
196
+ // Create new token
197
+ const { tx } = await this.wallet.createAction({
198
+ description: tokenSetDescription,
199
+ outputs: [{
200
+ satoshis: tokenAmount ?? this.config.tokenAmount,
201
+ lockingScript: lockingScript.toHex(),
202
+ outputDescription: 'KVStore token'
203
+ }],
204
+ options: {
205
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
206
+ noSend: this.config.overlayBroadcast,
207
+ randomizeOutputs: false
208
+ }
209
+ }, this.config.originator);
210
+ if (tx == null) {
211
+ throw new Error('Failed to create transaction');
203
212
  }
204
- }, this.config.originator);
205
- if (tx == null) {
206
- throw new Error('Failed to create transaction');
213
+ const transaction = Transaction_js_1.default.fromAtomicBEEF(tx);
214
+ await this.submitToOverlay(transaction);
215
+ return `${transaction.id('hex')}.0`;
207
216
  }
208
- const transaction = Transaction_js_1.default.fromAtomicBEEF(tx);
209
- await this.submitToOverlay(transaction);
210
- return `${transaction.id('hex')}.0`;
211
- }
217
+ }, this.topicBroadcaster);
218
+ return outpoint;
212
219
  }
213
220
  finally {
214
221
  if (lockQueue.length > 0) {
@@ -237,42 +244,53 @@ class GlobalKVStore {
237
244
  const protocolID = options.protocolID ?? this.config.protocolID;
238
245
  const tokenRemovalDescription = (options.tokenRemovalDescription != null && options.tokenRemovalDescription !== '') ? options.tokenRemovalDescription : `Remove KVStore value for ${key}`;
239
246
  try {
240
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
241
- if (existingEntries.length === 0 || existingEntries[0].token == null) {
242
- throw new Error('The item did not exist, no item was deleted.');
243
- }
244
- const existingToken = existingEntries[0].token;
245
- const inputs = [{
246
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
247
- unlockingScriptLength: 74,
248
- inputDescription: 'KVStore token to remove'
249
- }];
250
247
  const pushdrop = new index_js_2.PushDrop(this.wallet, this.config.originator);
251
- const { signableTransaction } = await this.wallet.createAction({
252
- description: tokenRemovalDescription,
253
- inputBEEF: existingToken.beef.toBinary(),
254
- inputs,
255
- outputs,
256
- options: {
257
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast
248
+ // Remove token with double-spend retry
249
+ const txid = await (0, index_js_1.withDoubleSpendRetry)(async () => {
250
+ // Re-query overlay on each attempt to get fresh token state
251
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
252
+ if (existingEntries.length === 0 || existingEntries[0].token == null) {
253
+ throw new Error('The item did not exist, no item was deleted.');
258
254
  }
259
- }, this.config.originator);
260
- if (signableTransaction == null) {
261
- throw new Error('Unable to create removal transaction');
262
- }
263
- const tx = Transaction_js_1.default.fromAtomicBEEF(signableTransaction.tx);
264
- const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
265
- const unlockingScript = await unlocker.sign(tx, 0);
266
- const { tx: finalTx } = await this.wallet.signAction({
267
- reference: signableTransaction.reference,
268
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
269
- }, this.config.originator);
270
- if (finalTx == null) {
271
- throw new Error('Unable to finalize removal transaction');
272
- }
273
- const transaction = Transaction_js_1.default.fromAtomicBEEF(finalTx);
274
- await this.submitToOverlay(transaction);
275
- return transaction.id('hex');
255
+ const existingToken = existingEntries[0].token;
256
+ const inputs = [{
257
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
258
+ unlockingScriptLength: 74,
259
+ inputDescription: 'KVStore token to remove'
260
+ }];
261
+ const { signableTransaction } = await this.wallet.createAction({
262
+ description: tokenRemovalDescription,
263
+ inputBEEF: existingToken.beef.toBinary(),
264
+ inputs,
265
+ outputs,
266
+ options: {
267
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
268
+ randomizeOutputs: false,
269
+ noSend: this.config.overlayBroadcast
270
+ }
271
+ }, this.config.originator);
272
+ if (signableTransaction == null) {
273
+ throw new Error('Unable to create removal transaction');
274
+ }
275
+ const tx = Transaction_js_1.default.fromAtomicBEEF(signableTransaction.tx);
276
+ const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
277
+ const unlockingScript = await unlocker.sign(tx, 0);
278
+ const { tx: finalTx } = await this.wallet.signAction({
279
+ reference: signableTransaction.reference,
280
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
281
+ options: {
282
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
283
+ noSend: this.config.overlayBroadcast
284
+ }
285
+ }, this.config.originator);
286
+ if (finalTx == null) {
287
+ throw new Error('Unable to finalize removal transaction');
288
+ }
289
+ const transaction = Transaction_js_1.default.fromAtomicBEEF(finalTx);
290
+ await this.submitToOverlay(transaction);
291
+ return transaction.id('hex');
292
+ }, this.topicBroadcaster);
293
+ return txid;
276
294
  }
277
295
  finally {
278
296
  if (lockQueue.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":";;;AAoHa,QAAA,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":";;;AAsHa,QAAA,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.SHIPCast = exports.SHIPBroadcaster = exports.TopicBroadcaster = exports.LookupResolver = exports.OverlayAdminTokenTemplate = void 0;
21
21
  __exportStar(require("./LookupResolver.js"), exports);
22
22
  __exportStar(require("./SHIPBroadcaster.js"), exports);
23
+ __exportStar(require("./withDoubleSpendRetry.js"), exports);
23
24
  var OverlayAdminTokenTemplate_js_1 = require("./OverlayAdminTokenTemplate.js");
24
25
  Object.defineProperty(exports, "OverlayAdminTokenTemplate", { enumerable: true, get: function () { return __importDefault(OverlayAdminTokenTemplate_js_1).default; } });
25
26
  var LookupResolver_js_1 = require("./LookupResolver.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,uDAAoC;AACpC,+EAAqF;AAA5E,0JAAA,OAAO,OAA6B;AAC7C,yDAA+D;AAAtD,oIAAA,OAAO,OAAkB;AAElC,6DAA6D;AAC7D,2DAAkE;AAAzD,uIAAA,OAAO,OAAoB;AACpC,sDAAsD;AACtD,2DAAiE;AAAxD,sIAAA,OAAO,OAAmB;AACnC,2DAA0D;AAAjD,+HAAA,OAAO,OAAY"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,uDAAoC;AACpC,4DAAyC;AACzC,+EAAqF;AAA5E,0JAAA,OAAO,OAA6B;AAC7C,yDAA+D;AAAtD,oIAAA,OAAO,OAAkB;AAElC,6DAA6D;AAC7D,2DAAkE;AAAzD,uIAAA,OAAO,OAAoB;AACpC,sDAAsD;AACtD,2DAAiE;AAAxD,sIAAA,OAAO,OAAmB;AACnC,2DAA0D;AAAjD,+HAAA,OAAO,OAAY"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.withDoubleSpendRetry = void 0;
7
+ const Transaction_js_1 = __importDefault(require("../transaction/Transaction.js"));
8
+ /**
9
+ * Maximum number of retry attempts for double-spend resolution
10
+ */
11
+ const MAX_DOUBLE_SPEND_RETRIES = 5;
12
+ /**
13
+ * Executes an operation with automatic retry logic for double-spend errors.
14
+ * When a double-spend is detected, broadcasts the competing transaction to
15
+ * update the overlay with missing state, then retries the operation.
16
+ *
17
+ * @param operation - The async operation to execute (e.g., createAction + signAction)
18
+ * @param broadcaster - The TopicBroadcaster to use for syncing missing state
19
+ * @param maxRetries - Maximum number of retry attempts (default: MAX_DOUBLE_SPEND_RETRIES)
20
+ * @returns The result of the successful operation
21
+ * @throws If max retries exceeded or non-double-spend error occurs
22
+ */
23
+ async function withDoubleSpendRetry(operation, broadcaster, maxRetries = MAX_DOUBLE_SPEND_RETRIES) {
24
+ let attempts = 0;
25
+ while (attempts < maxRetries) {
26
+ attempts++;
27
+ try {
28
+ return await operation();
29
+ }
30
+ catch (error) {
31
+ // Only handle double-spend errors on non-final attempts
32
+ if (attempts < maxRetries && error.name === 'WERR_REVIEW_ACTIONS') {
33
+ const reviewError = error;
34
+ // Check if any action in the batch has a double-spend
35
+ const doubleSpendResult = reviewError.reviewActionResults.find((result) => result.status === 'doubleSpend');
36
+ if (doubleSpendResult?.competingBeef != null &&
37
+ doubleSpendResult?.competingTxs != null &&
38
+ doubleSpendResult?.competingTxs.length > 0) {
39
+ const competingTx = Transaction_js_1.default.fromBEEF(doubleSpendResult.competingBeef, doubleSpendResult.competingTxs[0]);
40
+ // Recursively handle double-spend errors during broadcast
41
+ // The broadcast itself might fail if the competing tx depends on another missing tx
42
+ await withDoubleSpendRetry(async () => await broadcaster.broadcast(competingTx), broadcaster, maxRetries - attempts // Reduce max retries based on attempts already used
43
+ );
44
+ continue;
45
+ }
46
+ }
47
+ // Non-double-spend error or max retries exceeded - rethrow
48
+ throw error;
49
+ }
50
+ }
51
+ // This should never be reached, but TypeScript requires it
52
+ throw new Error('Unexpected end of retry loop');
53
+ }
54
+ exports.withDoubleSpendRetry = withDoubleSpendRetry;
55
+ //# sourceMappingURL=withDoubleSpendRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withDoubleSpendRetry.js","sourceRoot":"","sources":["../../../../src/overlay-tools/withDoubleSpendRetry.ts"],"names":[],"mappings":";;;;;;AAAA,mFAAuD;AAKvD;;GAEG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,oBAAoB,CACxC,SAA2B,EAC3B,WAA6B,EAC7B,aAAqB,wBAAwB;IAE7C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,OAAO,QAAQ,GAAG,UAAU,EAAE;QAC5B,QAAQ,EAAE,CAAA;QAEV,IAAI;YACF,OAAO,MAAM,SAAS,EAAE,CAAA;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,wDAAwD;YACxD,IAAI,QAAQ,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE;gBACjE,MAAM,WAAW,GAAG,KAA4B,CAAA;gBAEhD,sDAAsD;gBACtD,MAAM,iBAAiB,GAAG,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAC5D,CAAC,MAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CAChE,CAAA;gBAED,IAAI,iBAAiB,EAAE,aAAa,IAAI,IAAI;oBAC1C,iBAAiB,EAAE,YAAY,IAAI,IAAI;oBACvC,iBAAiB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,WAAW,GAAG,wBAAW,CAAC,QAAQ,CACtC,iBAAiB,CAAC,aAAa,EAC/B,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAClC,CAAA;oBAED,0DAA0D;oBAC1D,oFAAoF;oBACpF,MAAM,oBAAoB,CACxB,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,EACpD,WAAW,EACX,UAAU,GAAG,QAAQ,CAAC,oDAAoD;qBAC3E,CAAA;oBAED,SAAQ;iBACT;aACF;YAED,2DAA2D;YAC3D,MAAM,KAAK,CAAA;SACZ;KACF;IAED,2DAA2D;IAC3D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;AACjD,CAAC;AAjDD,oDAiDC"}