@fuel-ts/account 0.96.0 → 0.97.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 (41) hide show
  1. package/dist/account.d.ts +6 -0
  2. package/dist/account.d.ts.map +1 -1
  3. package/dist/connectors/fuel.d.ts.map +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.global.js +639 -310
  7. package/dist/index.global.js.map +1 -1
  8. package/dist/index.js +661 -331
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.mjs +666 -338
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/predicate/predicate.d.ts +16 -11
  13. package/dist/predicate/predicate.d.ts.map +1 -1
  14. package/dist/providers/__generated__/operations.d.ts +108 -126
  15. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  16. package/dist/providers/provider.d.ts +15 -11
  17. package/dist/providers/provider.d.ts.map +1 -1
  18. package/dist/providers/transaction-request/blob-transaction-request.d.ts +2 -2
  19. package/dist/providers/transaction-request/blob-transaction-request.d.ts.map +1 -1
  20. package/dist/providers/transaction-summary/get-transaction-summary.d.ts +3 -2
  21. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  22. package/dist/providers/transaction-summary/types.d.ts +38 -8
  23. package/dist/providers/transaction-summary/types.d.ts.map +1 -1
  24. package/dist/providers/utils/handle-gql-error-message.d.ts +2 -1
  25. package/dist/providers/utils/handle-gql-error-message.d.ts.map +1 -1
  26. package/dist/providers/utils/receipts.d.ts.map +1 -1
  27. package/dist/providers/utils/validate-pagination-args.d.ts +9 -0
  28. package/dist/providers/utils/validate-pagination-args.d.ts.map +1 -0
  29. package/dist/test-utils.global.js +376 -248
  30. package/dist/test-utils.global.js.map +1 -1
  31. package/dist/test-utils.js +339 -221
  32. package/dist/test-utils.js.map +1 -1
  33. package/dist/test-utils.mjs +350 -232
  34. package/dist/test-utils.mjs.map +1 -1
  35. package/dist/utils/deployScriptOrPredicate.d.ts +14 -0
  36. package/dist/utils/deployScriptOrPredicate.d.ts.map +1 -0
  37. package/dist/utils/formatTransferToContractScriptData.d.ts +7 -7
  38. package/dist/utils/formatTransferToContractScriptData.d.ts.map +1 -1
  39. package/dist/utils/predicate-script-loader-instructions.d.ts +9 -0
  40. package/dist/utils/predicate-script-loader-instructions.d.ts.map +1 -0
  41. package/package.json +17 -17
@@ -989,7 +989,7 @@
989
989
  }
990
990
  return this._strip();
991
991
  };
992
- BN2.prototype.sub = function sub(num) {
992
+ BN2.prototype.sub = function sub2(num) {
993
993
  return this.clone().isub(num);
994
994
  };
995
995
  function smallMulTo(self, num, out) {
@@ -2803,7 +2803,7 @@
2803
2803
  }
2804
2804
  return res;
2805
2805
  };
2806
- Red.prototype.sub = function sub(a, b) {
2806
+ Red.prototype.sub = function sub2(a, b) {
2807
2807
  this._verify2(a, b);
2808
2808
  var res = a.sub(b);
2809
2809
  if (res.cmpn(0) < 0) {
@@ -20390,9 +20390,9 @@ spurious results.`);
20390
20390
  }
20391
20391
  });
20392
20392
 
20393
- // ../../node_modules/.pnpm/@fuels+vm-asm@0.58.0/node_modules/@fuels/vm-asm/dist/node/index.cjs
20393
+ // ../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs
20394
20394
  var require_node = __commonJS({
20395
- "../../node_modules/.pnpm/@fuels+vm-asm@0.58.0/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
20395
+ "../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
20396
20396
  "use strict";
20397
20397
  var wasm$1;
20398
20398
  var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
@@ -20514,7 +20514,7 @@ spurious results.`);
20514
20514
  const ret3 = wasm$1.mod_(dst, lhs, rhs);
20515
20515
  return Instruction.__wrap(ret3);
20516
20516
  }
20517
- function move_(dst, src) {
20517
+ function move_2(dst, src) {
20518
20518
  const ret3 = wasm$1.move_(dst, src);
20519
20519
  return Instruction.__wrap(ret3);
20520
20520
  }
@@ -20538,7 +20538,7 @@ spurious results.`);
20538
20538
  const ret3 = wasm$1.srl(dst, lhs, rhs);
20539
20539
  return Instruction.__wrap(ret3);
20540
20540
  }
20541
- function sub(dst, lhs, rhs) {
20541
+ function sub2(dst, lhs, rhs) {
20542
20542
  const ret3 = wasm$1.sub(dst, lhs, rhs);
20543
20543
  return Instruction.__wrap(ret3);
20544
20544
  }
@@ -20606,7 +20606,7 @@ spurious results.`);
20606
20606
  const ret3 = wasm$1.cb(dst);
20607
20607
  return Instruction.__wrap(ret3);
20608
20608
  }
20609
- function ldc(src_addr, offset, len, mode) {
20609
+ function ldc2(src_addr, offset, len, mode) {
20610
20610
  const ret3 = wasm$1.ldc(src_addr, offset, len, mode);
20611
20611
  return Instruction.__wrap(ret3);
20612
20612
  }
@@ -20690,7 +20690,7 @@ spurious results.`);
20690
20690
  const ret3 = wasm$1.bal(dst, asset_id_addr, contract_id_addr);
20691
20691
  return Instruction.__wrap(ret3);
20692
20692
  }
20693
- function jmp(abs_target) {
20693
+ function jmp2(abs_target) {
20694
20694
  const ret3 = wasm$1.jmp(abs_target);
20695
20695
  return Instruction.__wrap(ret3);
20696
20696
  }
@@ -20702,7 +20702,7 @@ spurious results.`);
20702
20702
  const ret3 = wasm$1.smo(recipient_addr, data_addr, data_len, coins);
20703
20703
  return Instruction.__wrap(ret3);
20704
20704
  }
20705
- function addi2(dst, lhs, rhs) {
20705
+ function addi3(dst, lhs, rhs) {
20706
20706
  const ret3 = wasm$1.addi(dst, lhs, rhs);
20707
20707
  return Instruction.__wrap(ret3);
20708
20708
  }
@@ -20710,7 +20710,7 @@ spurious results.`);
20710
20710
  const ret3 = wasm$1.andi(dst, lhs, rhs);
20711
20711
  return Instruction.__wrap(ret3);
20712
20712
  }
20713
- function divi(dst, lhs, rhs) {
20713
+ function divi2(dst, lhs, rhs) {
20714
20714
  const ret3 = wasm$1.divi(dst, lhs, rhs);
20715
20715
  return Instruction.__wrap(ret3);
20716
20716
  }
@@ -20754,7 +20754,7 @@ spurious results.`);
20754
20754
  const ret3 = wasm$1.lb(dst, addr, offset);
20755
20755
  return Instruction.__wrap(ret3);
20756
20756
  }
20757
- function lw2(dst, addr, offset) {
20757
+ function lw3(dst, addr, offset) {
20758
20758
  const ret3 = wasm$1.lw(dst, addr, offset);
20759
20759
  return Instruction.__wrap(ret3);
20760
20760
  }
@@ -20910,7 +20910,7 @@ spurious results.`);
20910
20910
  const ret3 = wasm$1.ecal(a, b, c, d);
20911
20911
  return Instruction.__wrap(ret3);
20912
20912
  }
20913
- function bsiz(dst, blob_id_ptr) {
20913
+ function bsiz2(dst, blob_id_ptr) {
20914
20914
  const ret3 = wasm$1.bsiz(dst, blob_id_ptr);
20915
20915
  return Instruction.__wrap(ret3);
20916
20916
  }
@@ -20929,75 +20929,6 @@ spurious results.`);
20929
20929
  ptr = ptr >>> 0;
20930
20930
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
20931
20931
  }
20932
- var CompareMode = Object.freeze({
20933
- /**
20934
- * Equality (`==`)
20935
- */
20936
- EQ: 0,
20937
- "0": "EQ",
20938
- /**
20939
- * Inequality (`!=`)
20940
- */
20941
- NE: 1,
20942
- "1": "NE",
20943
- /**
20944
- * Less than (`<`)
20945
- */
20946
- LT: 2,
20947
- "2": "LT",
20948
- /**
20949
- * Greater than (`>`)
20950
- */
20951
- GT: 3,
20952
- "3": "GT",
20953
- /**
20954
- * Less than or equals (`>=`)
20955
- */
20956
- LTE: 4,
20957
- "4": "LTE",
20958
- /**
20959
- * Greater than or equals (`>=`)
20960
- */
20961
- GTE: 5,
20962
- "5": "GTE",
20963
- /**
20964
- * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
20965
- */
20966
- LZC: 6,
20967
- "6": "LZC"
20968
- });
20969
- var GMArgs = Object.freeze({
20970
- /**
20971
- *r" Get if caller is external.
20972
- */
20973
- IsCallerExternal: 1,
20974
- "1": "IsCallerExternal",
20975
- /**
20976
- *r" Get caller's contract ID.
20977
- */
20978
- GetCaller: 2,
20979
- "2": "GetCaller",
20980
- /**
20981
- *r" Get index of current predicate.
20982
- */
20983
- GetVerifyingPredicate: 3,
20984
- "3": "GetVerifyingPredicate",
20985
- /**
20986
- *r" Get the Chain ID this VM is operating within
20987
- */
20988
- GetChainId: 4,
20989
- "4": "GetChainId",
20990
- /**
20991
- *r" Get memory address where the transaction is located
20992
- */
20993
- TxStart: 5,
20994
- "5": "TxStart",
20995
- /**
20996
- *r" Get memory address of base asset ID
20997
- */
20998
- BaseAssetId: 6,
20999
- "6": "BaseAssetId"
21000
- });
21001
20932
  var GTFArgs2 = Object.freeze({
21002
20933
  /**
21003
20934
  *r" Set `$rA` to `tx.type`
@@ -21325,47 +21256,42 @@ spurious results.`);
21325
21256
  PolicyMaxFee: 1284,
21326
21257
  "1284": "PolicyMaxFee"
21327
21258
  });
21328
- var MathOp = Object.freeze({
21329
- /**
21330
- * Add
21331
- */
21332
- ADD: 0,
21333
- "0": "ADD",
21259
+ var CompareMode = Object.freeze({
21334
21260
  /**
21335
- * Subtract
21261
+ * Equality (`==`)
21336
21262
  */
21337
- SUB: 1,
21338
- "1": "SUB",
21263
+ EQ: 0,
21264
+ "0": "EQ",
21339
21265
  /**
21340
- * Invert bits (discards rhs)
21266
+ * Inequality (`!=`)
21341
21267
  */
21342
- NOT: 2,
21343
- "2": "NOT",
21268
+ NE: 1,
21269
+ "1": "NE",
21344
21270
  /**
21345
- * Bitwise or
21271
+ * Less than (`<`)
21346
21272
  */
21347
- OR: 3,
21348
- "3": "OR",
21273
+ LT: 2,
21274
+ "2": "LT",
21349
21275
  /**
21350
- * Bitwise exclusive or
21276
+ * Greater than (`>`)
21351
21277
  */
21352
- XOR: 4,
21353
- "4": "XOR",
21278
+ GT: 3,
21279
+ "3": "GT",
21354
21280
  /**
21355
- * Bitwise and
21281
+ * Less than or equals (`>=`)
21356
21282
  */
21357
- AND: 5,
21358
- "5": "AND",
21283
+ LTE: 4,
21284
+ "4": "LTE",
21359
21285
  /**
21360
- * Shift left
21286
+ * Greater than or equals (`>=`)
21361
21287
  */
21362
- SHL: 6,
21363
- "6": "SHL",
21288
+ GTE: 5,
21289
+ "5": "GTE",
21364
21290
  /**
21365
- * Shift right
21291
+ * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
21366
21292
  */
21367
- SHR: 7,
21368
- "7": "SHR"
21293
+ LZC: 6,
21294
+ "6": "LZC"
21369
21295
  });
21370
21296
  var PanicReason = Object.freeze({
21371
21297
  /**
@@ -21661,6 +21587,80 @@ spurious results.`);
21661
21587
  GasCostNotDefined: 56,
21662
21588
  "56": "GasCostNotDefined"
21663
21589
  });
21590
+ var MathOp = Object.freeze({
21591
+ /**
21592
+ * Add
21593
+ */
21594
+ ADD: 0,
21595
+ "0": "ADD",
21596
+ /**
21597
+ * Subtract
21598
+ */
21599
+ SUB: 1,
21600
+ "1": "SUB",
21601
+ /**
21602
+ * Invert bits (discards rhs)
21603
+ */
21604
+ NOT: 2,
21605
+ "2": "NOT",
21606
+ /**
21607
+ * Bitwise or
21608
+ */
21609
+ OR: 3,
21610
+ "3": "OR",
21611
+ /**
21612
+ * Bitwise exclusive or
21613
+ */
21614
+ XOR: 4,
21615
+ "4": "XOR",
21616
+ /**
21617
+ * Bitwise and
21618
+ */
21619
+ AND: 5,
21620
+ "5": "AND",
21621
+ /**
21622
+ * Shift left
21623
+ */
21624
+ SHL: 6,
21625
+ "6": "SHL",
21626
+ /**
21627
+ * Shift right
21628
+ */
21629
+ SHR: 7,
21630
+ "7": "SHR"
21631
+ });
21632
+ var GMArgs = Object.freeze({
21633
+ /**
21634
+ *r" Get if caller is external.
21635
+ */
21636
+ IsCallerExternal: 1,
21637
+ "1": "IsCallerExternal",
21638
+ /**
21639
+ *r" Get caller's contract ID.
21640
+ */
21641
+ GetCaller: 2,
21642
+ "2": "GetCaller",
21643
+ /**
21644
+ *r" Get index of current predicate.
21645
+ */
21646
+ GetVerifyingPredicate: 3,
21647
+ "3": "GetVerifyingPredicate",
21648
+ /**
21649
+ *r" Get the Chain ID this VM is operating within
21650
+ */
21651
+ GetChainId: 4,
21652
+ "4": "GetChainId",
21653
+ /**
21654
+ *r" Get memory address where the transaction is located
21655
+ */
21656
+ TxStart: 5,
21657
+ "5": "TxStart",
21658
+ /**
21659
+ *r" Get memory address of base asset ID
21660
+ */
21661
+ BaseAssetId: 6,
21662
+ "6": "BaseAssetId"
21663
+ });
21664
21664
  var ADDFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21665
21665
  }, unregister: () => {
21666
21666
  } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_add_free(ptr >>> 0, 1));
@@ -28658,7 +28658,7 @@ spurious results.`);
28658
28658
  }
28659
28659
  }
28660
28660
  function wasm(imports) {
28661
- return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3RpbWVfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgPX193YmdfcG9wbF9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puemJfZnJlZQAYDl9fd2JnX3Nyd19mcmVlABgPX193Ymdfd3FtbF9mcmVlABgPX193YmdfazI1Nl9mcmVlABgNX193YmdfbGJfZnJlZQAYD19fd2JnX2puZWJfZnJlZQAYD19fd2JnX3JldGRfZnJlZQAYD19fd2JnX2V4cGlfZnJlZQAYD19fd2JnX3N3d3FfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgOX193YmdfbGRjX2ZyZWUAGA9fX3diZ19tbG9nX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA1fX3diZ19lcV9mcmVlABgPX193YmdfbWNsaV9mcmVlABgPX193YmdfeG9yaV9mcmVlABgPX193YmdfYW5kaV9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193Ymdfc3ViaV9mcmVlABgNX193Ymdfb3JfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX3dkbWRfZnJlZQAYDV9fd2JnX2dtX2ZyZWUAGA5fX3diZ19zcmxfZnJlZQAYD19fd2JnX3NybGlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX3dkYW1fZnJlZQAYD19fd2JnX21vZGlfZnJlZQAYD19fd2JnX3dxYW1fZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2Nmc19mcmVlABgPX193Ymdfam5laV9mcmVlABgPX193YmdfczI1Nl9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbW9kX2ZyZWUAGA9fX3diZ19zY3dxX2ZyZWUAGA5fX3diZ19hbmRfZnJlZQAYDl9fd2JnX3Ryb19mcmVlABgPX193Ymdfc3J3cV9mcmVlABgPX193YmdfcG9waF9mcmVlABgOX193Ymdfc3d3X2ZyZWUAGA9fX3diZ193ZGR2X2ZyZWUAGA5fX3diZ19tY3BfZnJlZQAYDV9fd2JnX3NiX2ZyZWUAGA9fX3diZ19lY2FsX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYD19fd2JnX2Fsb2NfZnJlZQAYD19fd2JnX2puemZfZnJlZQAYD19fd2JnX2NhbGxfZnJlZQAYD19fd2JnX3J2cnRfZnJlZQAYD19fd2JnX3dxbW1fZnJlZQAYD19fd2JnX21vdmlfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX2JoZWlfZnJlZQAYDl9fd2JnX2NmZV9mcmVlABgPX193Ymdfc2xsaV9mcmVlABgPX193YmdfbWludF9mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfZGl2X2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ193cWR2X2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA5fX3diZ19iYWxfZnJlZQAYDl9fd2JnX2V4cF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA9fX3diZ19qbmVmX2ZyZWUAGA9fX3diZ19tb3ZlX2ZyZWUAGA9fX3diZ19jZnNpX2ZyZWUAGA5fX3diZ19jY3BfZnJlZQAYD19fd2JnX2VkMTlfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYWRkaV9mcmVlABgOX193YmdfcmV0X2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193Ymdfd2RvcF9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfd3FjbV9mcmVlABgNX193YmdfY2JfZnJlZQAYD19fd2JnX2J1cm5fZnJlZQAYD19fd2JnX3dkbW1fZnJlZQAYDl9fd2JnX2d0Zl9mcmVlABgNX193Ymdfc3dfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ19jc2l6X2ZyZWUAGA1fX3diZ19ndF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA9fX3diZ19jZmVpX2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA5fX3diZ19tZXFfZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21yb29fZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX3RyX2ZyZWUAGA5fX3diZ194b3JfZnJlZQAYDV9fd2JnX2x3X2ZyZWUAGA5fX3diZ19sb2dfZnJlZQAYD19fd2JnX2ptcGZfZnJlZQAYDl9fd2JnX25vdF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGcLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBnCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAg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bmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
28661
+ return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3dkb3BfZnJlZQAYDl9fd2JnX21vZF9mcmVlABgPX193Ymdfd3Fkdl9mcmVlABgNX193Ymdfc2JfZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfbG9nX2ZyZWUAGA9fX3diZ193cWFtX2ZyZWUAGA9fX3diZ193cW1sX2ZyZWUAGA5fX3diZ19ub3RfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX2puZWlfZnJlZQAYD19fd2JnX3N1YmlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX2NzaXpfZnJlZQAYD19fd2JnX3Nyd3FfZnJlZQAYD19fd2JnX3NsbGlfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX3MyNTZfZnJlZQAYDl9fd2JnX3hvcl9mcmVlABgOX193YmdfY2ZlX2ZyZWUAGA1fX3diZ19ndF9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193YmdfbWNsaV9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puZWZfZnJlZQAYDV9fd2JnX3N3X2ZyZWUAGA9fX3diZ19zcmxpX2ZyZWUAGA9fX3diZ19idXJuX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA9fX3diZ19ydnJ0X2ZyZWUAGA9fX3diZ194b3JpX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA1fX3diZ19sYl9mcmVlABgNX193YmdfZ21fZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX2VxX2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193YmdfZWQxOV9mcmVlABgPX193YmdfY2ZlaV9mcmVlABgPX193YmdfY2ZzaV9mcmVlABgPX193Ymdfam56Yl9mcmVlABgPX193YmdfYWxvY19mcmVlABgOX193Ymdfc3JsX2ZyZWUAGA9fX3diZ19tcm9vX2ZyZWUAGA5fX3diZ19jZnNfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYmhlaV9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfam5lYl9mcmVlABgPX193Ymdfd3FtbV9mcmVlABgPX193YmdfcG9waF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfZXhwaV9mcmVlABgPX193YmdfYWRkaV9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbGRjX2ZyZWUAGA5fX3diZ19kaXZfZnJlZQAYD19fd2JnX3dkZHZfZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ193ZGFtX2ZyZWUAGA9fX3diZ19jYWxsX2ZyZWUAGA1fX3diZ19sd19mcmVlABgPX193YmdfZWNhbF9mcmVlABgPX193YmdfbWxvZ19mcmVlABgPX193YmdfcmV0ZF9mcmVlABgPX193YmdfdGltZV9mcmVlABgOX193YmdfZ3RmX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYDV9fd2JnX29yX2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA9fX3diZ19qbnpmX2ZyZWUAGA5fX3diZ190cm9fZnJlZQAYDl9fd2JnX21jcF9mcmVlABgPX193YmdfbWludF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA1fX3diZ19jYl9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgOX193Ymdfc3J3X2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA9fX3diZ19qbXBmX2ZyZWUAGA9fX3diZ19rMjU2X2ZyZWUAGA5fX3diZ19yZXRfZnJlZQAYD19fd2JnX3Njd3FfZnJlZQAYDl9fd2JnX21lcV9mcmVlABgPX193Ymdfc3d3cV9mcmVlABgOX193YmdfYmFsX2ZyZWUAGA9fX3diZ19tb3ZpX2ZyZWUAGA9fX3diZ193ZG1kX2ZyZWUAGA9fX3diZ19wb3BsX2ZyZWUAGA9fX3diZ193ZG1tX2ZyZWUAGA5fX3diZ19leHBfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ193cWNtX2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ19tb2RpX2ZyZWUAGA1fX3diZ190cl9mcmVlABgPX193YmdfYW5kaV9mcmVlABgOX193YmdfY2NwX2ZyZWUAGA5fX3diZ19zd3dfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21vdmVfZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2FuZF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGgLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBoCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAg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bmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
28662
28662
  }
28663
28663
  async function initWasm2() {
28664
28664
  return await __wbg_init(wasm());
@@ -28792,7 +28792,7 @@ spurious results.`);
28792
28792
  exports.XOR = XOR;
28793
28793
  exports.XORI = XORI;
28794
28794
  exports.add = add;
28795
- exports.addi = addi2;
28795
+ exports.addi = addi3;
28796
28796
  exports.aloc = aloc;
28797
28797
  exports.and = and;
28798
28798
  exports.andi = andi;
@@ -28800,7 +28800,7 @@ spurious results.`);
28800
28800
  exports.bhei = bhei;
28801
28801
  exports.bhsh = bhsh;
28802
28802
  exports.bldd = bldd;
28803
- exports.bsiz = bsiz;
28803
+ exports.bsiz = bsiz2;
28804
28804
  exports.burn = burn;
28805
28805
  exports.call = call;
28806
28806
  exports.cb = cb;
@@ -28812,7 +28812,7 @@ spurious results.`);
28812
28812
  exports.croo = croo;
28813
28813
  exports.csiz = csiz;
28814
28814
  exports.div = div;
28815
- exports.divi = divi;
28815
+ exports.divi = divi2;
28816
28816
  exports.ecal = ecal;
28817
28817
  exports.eck1 = eck1;
28818
28818
  exports.ecr1 = ecr1;
@@ -28829,7 +28829,7 @@ spurious results.`);
28829
28829
  exports.initSync = initSync;
28830
28830
  exports.initWasm = initWasm2;
28831
28831
  exports.ji = ji;
28832
- exports.jmp = jmp;
28832
+ exports.jmp = jmp2;
28833
28833
  exports.jmpb = jmpb;
28834
28834
  exports.jmpf = jmpf;
28835
28835
  exports.jne = jne;
@@ -28841,11 +28841,11 @@ spurious results.`);
28841
28841
  exports.jnzi = jnzi;
28842
28842
  exports.k256 = k256;
28843
28843
  exports.lb = lb;
28844
- exports.ldc = ldc;
28844
+ exports.ldc = ldc2;
28845
28845
  exports.log = log;
28846
28846
  exports.logd = logd;
28847
28847
  exports.lt = lt;
28848
- exports.lw = lw2;
28848
+ exports.lw = lw3;
28849
28849
  exports.mcl = mcl;
28850
28850
  exports.mcli = mcli;
28851
28851
  exports.mcp = mcp;
@@ -28856,7 +28856,7 @@ spurious results.`);
28856
28856
  exports.mlog = mlog;
28857
28857
  exports.mod_ = mod_;
28858
28858
  exports.modi = modi;
28859
- exports.move_ = move_;
28859
+ exports.move_ = move_2;
28860
28860
  exports.movi = movi;
28861
28861
  exports.mroo = mroo;
28862
28862
  exports.mul = mul;
@@ -28882,7 +28882,7 @@ spurious results.`);
28882
28882
  exports.srli = srli;
28883
28883
  exports.srw = srw;
28884
28884
  exports.srwq = srwq;
28885
- exports.sub = sub;
28885
+ exports.sub = sub2;
28886
28886
  exports.subi = subi;
28887
28887
  exports.sw = sw;
28888
28888
  exports.sww = sww;
@@ -28920,9 +28920,9 @@ spurious results.`);
28920
28920
  // ../versions/dist/index.mjs
28921
28921
  function getBuiltinVersions() {
28922
28922
  return {
28923
- FORC: "0.65.2",
28924
- FUEL_CORE: "0.38.0",
28925
- FUELS: "0.96.0"
28923
+ FORC: "0.66.4",
28924
+ FUEL_CORE: "0.40.0",
28925
+ FUELS: "0.97.0"
28926
28926
  };
28927
28927
  }
28928
28928
  function parseVersion(version) {
@@ -29045,6 +29045,7 @@ This unreleased fuel-core build may include features and updates not yet support
29045
29045
  ErrorCode2["MAX_INPUTS_EXCEEDED"] = "max-inputs-exceeded";
29046
29046
  ErrorCode2["FUNDS_TOO_LOW"] = "funds-too-low";
29047
29047
  ErrorCode2["MAX_OUTPUTS_EXCEEDED"] = "max-outputs-exceeded";
29048
+ ErrorCode2["MAX_COINS_REACHED"] = "max-coins-reached";
29048
29049
  ErrorCode2["INVALID_RECEIPT_TYPE"] = "invalid-receipt-type";
29049
29050
  ErrorCode2["INVALID_WORD_LIST"] = "invalid-word-list";
29050
29051
  ErrorCode2["INVALID_MNEMONIC"] = "invalid-mnemonic";
@@ -29300,6 +29301,9 @@ This unreleased fuel-core build may include features and updates not yet support
29300
29301
  maxU64() {
29301
29302
  return this.gte(this.MAX_U64) ? new BN(this.MAX_U64) : this;
29302
29303
  }
29304
+ max(num) {
29305
+ return this.gte(num) ? new BN(num) : this;
29306
+ }
29303
29307
  normalizeZeroToOne() {
29304
29308
  return this.isZero() ? new BN(1) : this;
29305
29309
  }
@@ -29310,6 +29314,10 @@ This unreleased fuel-core build may include features and updates not yet support
29310
29314
  const valueToParse = value === "." ? "0." : value;
29311
29315
  const [valueUnits = "0", valueDecimals = "0"] = valueToParse.split(".");
29312
29316
  const length = valueDecimals.length;
29317
+ if (units === 0) {
29318
+ const valueWithoutDecimals = valueToParse.replace(",", "").split(".")[0];
29319
+ return bn(valueWithoutDecimals);
29320
+ }
29313
29321
  if (length > units) {
29314
29322
  throw new FuelError(
29315
29323
  ErrorCode.CONVERTING_FAILED,
@@ -30755,6 +30763,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
30755
30763
  var BYTES_32 = 32;
30756
30764
  var UTXO_ID_LEN = BYTES_32 + 2;
30757
30765
  var ASSET_ID_LEN = BYTES_32;
30766
+ var CONTRACT_ID_LEN = BYTES_32;
30758
30767
  var ADDRESS_LEN = BYTES_32;
30759
30768
  var NONCE_LEN = BYTES_32;
30760
30769
  var TX_LEN = WORD_SIZE * 4;
@@ -32257,7 +32266,10 @@ If you are attempting to transform a hex value, please make sure it is being pas
32257
32266
  /** @hidden */
32258
32267
  static toChecksum(address) {
32259
32268
  if (!isB256(address)) {
32260
- throw new Error("Invalid B256 Address");
32269
+ throw new FuelError(
32270
+ FuelError.CODES.INVALID_B256_ADDRESS,
32271
+ `Invalid B256 Address: ${address}.`
32272
+ );
32261
32273
  }
32262
32274
  const addressHex = hexlify(address).toLowerCase().slice(2);
32263
32275
  const checksum = sha256(addressHex);
@@ -37146,9 +37158,6 @@ spurious results.`);
37146
37158
  var SuccessStatusFragmentDoc = lib_default2`
37147
37159
  fragment SuccessStatusFragment on SuccessStatus {
37148
37160
  type: __typename
37149
- block {
37150
- id
37151
- }
37152
37161
  time
37153
37162
  programState {
37154
37163
  returnType
@@ -37161,6 +37170,14 @@ spurious results.`);
37161
37170
  totalFee
37162
37171
  }
37163
37172
  ${ReceiptFragmentDoc}`;
37173
+ var SuccessStatusWithBlockIdFragmentDoc = lib_default2`
37174
+ fragment SuccessStatusWithBlockIdFragment on SuccessStatus {
37175
+ ...SuccessStatusFragment
37176
+ block {
37177
+ id
37178
+ }
37179
+ }
37180
+ ${SuccessStatusFragmentDoc}`;
37164
37181
  var MalleableTransactionFieldsFragmentDoc = lib_default2`
37165
37182
  fragment malleableTransactionFieldsFragment on Transaction {
37166
37183
  receiptsRoot
@@ -37205,9 +37222,6 @@ spurious results.`);
37205
37222
  var FailureStatusFragmentDoc = lib_default2`
37206
37223
  fragment FailureStatusFragment on FailureStatus {
37207
37224
  type: __typename
37208
- block {
37209
- id
37210
- }
37211
37225
  totalGas
37212
37226
  totalFee
37213
37227
  time
@@ -37217,6 +37231,14 @@ spurious results.`);
37217
37231
  }
37218
37232
  }
37219
37233
  ${ReceiptFragmentDoc}`;
37234
+ var FailureStatusWithBlockIdFragmentDoc = lib_default2`
37235
+ fragment FailureStatusWithBlockIdFragment on FailureStatus {
37236
+ ...FailureStatusFragment
37237
+ block {
37238
+ id
37239
+ }
37240
+ }
37241
+ ${FailureStatusFragmentDoc}`;
37220
37242
  var SqueezedOutStatusFragmentDoc = lib_default2`
37221
37243
  fragment SqueezedOutStatusFragment on SqueezedOutStatus {
37222
37244
  type: __typename
@@ -37229,13 +37251,13 @@ spurious results.`);
37229
37251
  ...SubmittedStatusFragment
37230
37252
  }
37231
37253
  ... on SuccessStatus {
37232
- ...SuccessStatusFragment
37254
+ ...SuccessStatusWithBlockIdFragment
37233
37255
  transaction {
37234
37256
  ...malleableTransactionFieldsFragment
37235
37257
  }
37236
37258
  }
37237
37259
  ... on FailureStatus {
37238
- ...FailureStatusFragment
37260
+ ...FailureStatusWithBlockIdFragment
37239
37261
  transaction {
37240
37262
  ...malleableTransactionFieldsFragment
37241
37263
  }
@@ -37245,9 +37267,9 @@ spurious results.`);
37245
37267
  }
37246
37268
  }
37247
37269
  ${SubmittedStatusFragmentDoc}
37248
- ${SuccessStatusFragmentDoc}
37270
+ ${SuccessStatusWithBlockIdFragmentDoc}
37249
37271
  ${MalleableTransactionFieldsFragmentDoc}
37250
- ${FailureStatusFragmentDoc}
37272
+ ${FailureStatusWithBlockIdFragmentDoc}
37251
37273
  ${SqueezedOutStatusFragmentDoc}`;
37252
37274
  var TransactionStatusFragmentDoc = lib_default2`
37253
37275
  fragment transactionStatusFragment on TransactionStatus {
@@ -37277,6 +37299,12 @@ ${SqueezedOutStatusFragmentDoc}`;
37277
37299
  }
37278
37300
  }
37279
37301
  ${TransactionStatusFragmentDoc}`;
37302
+ var TransactionRawPayloadFragmentDoc = lib_default2`
37303
+ fragment transactionRawPayloadFragment on Transaction {
37304
+ id
37305
+ rawPayload
37306
+ }
37307
+ `;
37280
37308
  var InputEstimatePredicatesFragmentDoc = lib_default2`
37281
37309
  fragment inputEstimatePredicatesFragment on Input {
37282
37310
  ... on InputCoin {
@@ -37364,7 +37392,6 @@ ${ReceiptFragmentDoc}`;
37364
37392
  fragment coinFragment on Coin {
37365
37393
  type: __typename
37366
37394
  utxoId
37367
- owner
37368
37395
  amount
37369
37396
  assetId
37370
37397
  blockCreated
@@ -37388,10 +37415,15 @@ ${ReceiptFragmentDoc}`;
37388
37415
  sender
37389
37416
  recipient
37390
37417
  data
37391
- nonce
37392
37418
  daHeight
37393
37419
  }
37394
37420
  `;
37421
+ var GetMessageFragmentDoc = lib_default2`
37422
+ fragment getMessageFragment on Message {
37423
+ ...messageFragment
37424
+ nonce
37425
+ }
37426
+ ${MessageFragmentDoc}`;
37395
37427
  var MessageProofFragmentDoc = lib_default2`
37396
37428
  fragment messageProofFragment on MessageProof {
37397
37429
  messageProof {
@@ -37436,7 +37468,6 @@ ${ReceiptFragmentDoc}`;
37436
37468
  }
37437
37469
  sender
37438
37470
  recipient
37439
- nonce
37440
37471
  amount
37441
37472
  data
37442
37473
  }
@@ -37583,12 +37614,6 @@ ${GasCostsFragmentDoc}`;
37583
37614
  blockHeight
37584
37615
  failure
37585
37616
  }
37586
- }
37587
- `;
37588
- var TransactionRawPayloadFragmentDoc = lib_default2`
37589
- fragment transactionRawPayload on Transaction {
37590
- id
37591
- rawPayload
37592
37617
  }
37593
37618
  `;
37594
37619
  var GetVersionDocument = lib_default2`
@@ -37633,16 +37658,34 @@ ${NodeInfoFragmentDoc}`;
37633
37658
  var GetTransactionWithReceiptsDocument = lib_default2`
37634
37659
  query getTransactionWithReceipts($transactionId: TransactionId!) {
37635
37660
  transaction(id: $transactionId) {
37636
- ...transactionFragment
37661
+ id
37662
+ rawPayload
37663
+ status {
37664
+ ... on SubmittedStatus {
37665
+ ...SubmittedStatusFragment
37666
+ }
37667
+ ... on SuccessStatus {
37668
+ ...SuccessStatusWithBlockIdFragment
37669
+ }
37670
+ ... on FailureStatus {
37671
+ ...FailureStatusWithBlockIdFragment
37672
+ }
37673
+ ... on SqueezedOutStatus {
37674
+ ...SqueezedOutStatusFragment
37675
+ }
37676
+ }
37637
37677
  }
37638
37678
  }
37639
- ${TransactionFragmentDoc}`;
37679
+ ${SubmittedStatusFragmentDoc}
37680
+ ${SuccessStatusWithBlockIdFragmentDoc}
37681
+ ${FailureStatusWithBlockIdFragmentDoc}
37682
+ ${SqueezedOutStatusFragmentDoc}`;
37640
37683
  var GetTransactionsDocument = lib_default2`
37641
37684
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
37642
37685
  transactions(after: $after, before: $before, first: $first, last: $last) {
37643
37686
  edges {
37644
37687
  node {
37645
- ...transactionFragment
37688
+ rawPayload
37646
37689
  }
37647
37690
  }
37648
37691
  pageInfo {
@@ -37650,8 +37693,7 @@ ${NodeInfoFragmentDoc}`;
37650
37693
  }
37651
37694
  }
37652
37695
  }
37653
- ${TransactionFragmentDoc}
37654
- ${PageInfoFragmentDoc}`;
37696
+ ${PageInfoFragmentDoc}`;
37655
37697
  var GetTransactionsByOwnerDocument = lib_default2`
37656
37698
  query getTransactionsByOwner($owner: Address!, $after: String, $before: String, $first: Int, $last: Int) {
37657
37699
  transactionsByOwner(
@@ -37710,7 +37752,7 @@ ${TransactionFragmentDoc}`;
37710
37752
  block(id: $blockId, height: $blockHeight) {
37711
37753
  ...blockFragment
37712
37754
  transactions {
37713
- ...transactionRawPayload
37755
+ ...transactionRawPayloadFragment
37714
37756
  }
37715
37757
  }
37716
37758
  }
@@ -37735,6 +37777,7 @@ ${BlockFragmentDoc}`;
37735
37777
  query getCoin($coinId: UtxoId!) {
37736
37778
  coin(utxoId: $coinId) {
37737
37779
  ...coinFragment
37780
+ owner
37738
37781
  }
37739
37782
  }
37740
37783
  ${CoinFragmentDoc}`;
@@ -37843,13 +37886,13 @@ ${MessageCoinFragmentDoc}`;
37843
37886
  }
37844
37887
  edges {
37845
37888
  node {
37846
- ...messageFragment
37889
+ ...getMessageFragment
37847
37890
  }
37848
37891
  }
37849
37892
  }
37850
37893
  }
37851
37894
  ${PageInfoFragmentDoc}
37852
- ${MessageFragmentDoc}`;
37895
+ ${GetMessageFragmentDoc}`;
37853
37896
  var GetMessageProofDocument = lib_default2`
37854
37897
  query getMessageProof($transactionId: TransactionId!, $nonce: Nonce!, $commitBlockId: BlockId, $commitBlockHeight: U32) {
37855
37898
  messageProof(
@@ -37920,6 +37963,17 @@ ${MessageFragmentDoc}`;
37920
37963
  transaction(id: $transactionId) {
37921
37964
  id
37922
37965
  }
37966
+ }
37967
+ `;
37968
+ var GetConsensusParametersVersionDocument = lib_default2`
37969
+ query getConsensusParametersVersion {
37970
+ chain {
37971
+ latestBlock {
37972
+ header {
37973
+ consensusParametersVersion
37974
+ }
37975
+ }
37976
+ }
37923
37977
  }
37924
37978
  `;
37925
37979
  var SubmitAndAwaitDocument = lib_default2`
@@ -38041,6 +38095,9 @@ ${MessageFragmentDoc}`;
38041
38095
  isUserAccount(variables, options) {
38042
38096
  return requester(IsUserAccountDocument, variables, options);
38043
38097
  },
38098
+ getConsensusParametersVersion(variables, options) {
38099
+ return requester(GetConsensusParametersVersionDocument, variables, options);
38100
+ },
38044
38101
  submitAndAwait(variables, options) {
38045
38102
  return requester(SubmitAndAwaitDocument, variables, options);
38046
38103
  },
@@ -38414,9 +38471,11 @@ ${MessageFragmentDoc}`;
38414
38471
  const { receiptType } = receipt;
38415
38472
  switch (receiptType) {
38416
38473
  case "CALL" /* Call */: {
38474
+ const id = hexOrZero(receipt.id || receipt.contractId);
38417
38475
  const callReceipt = {
38418
38476
  type: ReceiptType.Call,
38419
- from: hexOrZero(receipt.id || receipt.contractId),
38477
+ id,
38478
+ from: id,
38420
38479
  to: hexOrZero(receipt?.to),
38421
38480
  amount: bn(receipt.amount),
38422
38481
  assetId: hexOrZero(receipt.assetId),
@@ -38473,24 +38532,36 @@ ${MessageFragmentDoc}`;
38473
38532
  return revertReceipt;
38474
38533
  }
38475
38534
  case "LOG" /* Log */: {
38535
+ const ra = bn(receipt.ra);
38536
+ const rb = bn(receipt.rb);
38537
+ const rc = bn(receipt.rc);
38538
+ const rd = bn(receipt.rd);
38476
38539
  const logReceipt = {
38477
38540
  type: ReceiptType.Log,
38478
38541
  id: hexOrZero(receipt.id || receipt.contractId),
38479
- val0: bn(receipt.ra),
38480
- val1: bn(receipt.rb),
38481
- val2: bn(receipt.rc),
38482
- val3: bn(receipt.rd),
38542
+ ra,
38543
+ rb,
38544
+ rc,
38545
+ rd,
38546
+ val0: ra,
38547
+ val1: rb,
38548
+ val2: rc,
38549
+ val3: rd,
38483
38550
  pc: bn(receipt.pc),
38484
38551
  is: bn(receipt.is)
38485
38552
  };
38486
38553
  return logReceipt;
38487
38554
  }
38488
38555
  case "LOG_DATA" /* LogData */: {
38556
+ const ra = bn(receipt.ra);
38557
+ const rb = bn(receipt.rb);
38489
38558
  const logDataReceipt = {
38490
38559
  type: ReceiptType.LogData,
38491
38560
  id: hexOrZero(receipt.id || receipt.contractId),
38492
- val0: bn(receipt.ra),
38493
- val1: bn(receipt.rb),
38561
+ ra,
38562
+ rb,
38563
+ val0: ra,
38564
+ val1: rb,
38494
38565
  ptr: bn(receipt.ptr),
38495
38566
  len: bn(receipt.len),
38496
38567
  digest: hexOrZero(receipt.digest),
@@ -38501,9 +38572,11 @@ ${MessageFragmentDoc}`;
38501
38572
  return logDataReceipt;
38502
38573
  }
38503
38574
  case "TRANSFER" /* Transfer */: {
38575
+ const id = hexOrZero(receipt.id || receipt.contractId);
38504
38576
  const transferReceipt = {
38505
38577
  type: ReceiptType.Transfer,
38506
- from: hexOrZero(receipt.id || receipt.contractId),
38578
+ id,
38579
+ from: id,
38507
38580
  to: hexOrZero(receipt.toAddress || receipt?.to),
38508
38581
  amount: bn(receipt.amount),
38509
38582
  assetId: hexOrZero(receipt.assetId),
@@ -38513,9 +38586,11 @@ ${MessageFragmentDoc}`;
38513
38586
  return transferReceipt;
38514
38587
  }
38515
38588
  case "TRANSFER_OUT" /* TransferOut */: {
38589
+ const id = hexOrZero(receipt.id || receipt.contractId);
38516
38590
  const transferOutReceipt = {
38517
38591
  type: ReceiptType.TransferOut,
38518
- from: hexOrZero(receipt.id || receipt.contractId),
38592
+ id,
38593
+ from: id,
38519
38594
  to: hexOrZero(receipt.toAddress || receipt.to),
38520
38595
  amount: bn(receipt.amount),
38521
38596
  assetId: hexOrZero(receipt.assetId),
@@ -39555,7 +39630,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39555
39630
  type = TransactionType.Blob;
39556
39631
  /** Blob ID */
39557
39632
  blobId;
39558
- /** Witness index of contract bytecode to create */
39633
+ /** Witness index of the bytecode to create */
39559
39634
  witnessIndex;
39560
39635
  /**
39561
39636
  * Creates an instance `BlobTransactionRequest`.
@@ -40882,14 +40957,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40882
40957
  switch (gqlTransactionStatus.type) {
40883
40958
  case "SuccessStatus":
40884
40959
  time = gqlTransactionStatus.time;
40885
- blockId = gqlTransactionStatus.block.id;
40960
+ blockId = gqlTransactionStatus.block?.id;
40886
40961
  isStatusSuccess = true;
40887
40962
  totalFee = bn(gqlTransactionStatus.totalFee);
40888
40963
  totalGas = bn(gqlTransactionStatus.totalGas);
40889
40964
  break;
40890
40965
  case "FailureStatus":
40891
40966
  time = gqlTransactionStatus.time;
40892
- blockId = gqlTransactionStatus.block.id;
40967
+ blockId = gqlTransactionStatus.block?.id;
40893
40968
  isStatusFailure = true;
40894
40969
  totalFee = bn(gqlTransactionStatus.totalFee);
40895
40970
  totalGas = bn(gqlTransactionStatus.totalGas);
@@ -41198,8 +41273,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41198
41273
  const subscription = this.submitTxSubscription ?? await this.provider.operations.statusChange({
41199
41274
  transactionId: this.id
41200
41275
  });
41201
- for await (const sub of subscription) {
41202
- const statusChange = "statusChange" in sub ? sub.statusChange : sub.submitAndAwaitStatus;
41276
+ for await (const sub2 of subscription) {
41277
+ const statusChange = "statusChange" in sub2 ? sub2.statusChange : sub2.submitAndAwaitStatus;
41203
41278
  this.status = statusChange;
41204
41279
  if (statusChange.type === "SqueezedOutStatus") {
41205
41280
  this.unsetResourceCache();
@@ -41320,17 +41395,59 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41320
41395
  {},
41321
41396
  rawError
41322
41397
  );
41398
+ case "max number of coins is reached while trying to fit the target" /* MAX_COINS_REACHED */:
41399
+ throw new FuelError(
41400
+ ErrorCode.MAX_COINS_REACHED,
41401
+ "The account retrieving coins has exceeded the maximum number of coins per asset. Please consider combining your coins into a single UTXO.",
41402
+ {},
41403
+ rawError
41404
+ );
41323
41405
  default:
41324
41406
  throw new FuelError(ErrorCode.INVALID_REQUEST, errorMessage);
41325
41407
  }
41326
41408
  };
41327
41409
 
41410
+ // src/providers/utils/validate-pagination-args.ts
41411
+ var validatePaginationArgs = (params) => {
41412
+ const { paginationLimit, inputArgs = {} } = params;
41413
+ const { first, last, after, before } = inputArgs;
41414
+ if (after && before) {
41415
+ throw new FuelError(
41416
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41417
+ 'Pagination arguments "after" and "before" cannot be used together'
41418
+ );
41419
+ }
41420
+ if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
41421
+ throw new FuelError(
41422
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41423
+ `Pagination limit for this query cannot exceed ${paginationLimit} items`
41424
+ );
41425
+ }
41426
+ if (first && before) {
41427
+ throw new FuelError(
41428
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41429
+ 'The use of pagination argument "first" with "before" is not supported'
41430
+ );
41431
+ }
41432
+ if (last && after) {
41433
+ throw new FuelError(
41434
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41435
+ 'The use of pagination argument "last" with "after" is not supported'
41436
+ );
41437
+ }
41438
+ if (!first && !last) {
41439
+ inputArgs.first = paginationLimit;
41440
+ }
41441
+ return inputArgs;
41442
+ };
41443
+
41328
41444
  // src/providers/provider.ts
41329
41445
  var MAX_RETRIES = 10;
41330
41446
  var RESOURCES_PAGE_SIZE_LIMIT = 512;
41331
41447
  var TRANSACTIONS_PAGE_SIZE_LIMIT = 60;
41332
41448
  var BLOCKS_PAGE_SIZE_LIMIT = 5;
41333
41449
  var DEFAULT_RESOURCE_CACHE_TTL = 2e4;
41450
+ var GAS_USED_MODIFIER = 1.2;
41334
41451
  var processGqlChain = (chain) => {
41335
41452
  const { name, daHeight, consensusParameters } = chain;
41336
41453
  const {
@@ -41406,6 +41523,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41406
41523
  __publicField(this, "url");
41407
41524
  /** @hidden */
41408
41525
  __publicField(this, "urlWithoutAuth");
41526
+ /** @hidden */
41527
+ __publicField(this, "consensusParametersTimestamp");
41409
41528
  __publicField(this, "options", {
41410
41529
  timeout: void 0,
41411
41530
  resourceCacheTTL: void 0,
@@ -41558,16 +41677,19 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41558
41677
  }
41559
41678
  /**
41560
41679
  * Return the chain and node information.
41561
- *
41680
+ * @param ignoreCache - If true, ignores the cache and re-fetch configs.
41562
41681
  * @returns A promise that resolves to the Chain and NodeInfo.
41563
41682
  */
41564
- async fetchChainAndNodeInfo() {
41683
+ async fetchChainAndNodeInfo(ignoreCache = false) {
41565
41684
  let nodeInfo;
41566
41685
  let chain;
41567
41686
  try {
41687
+ if (ignoreCache) {
41688
+ throw new Error(`Jumps to the catch block andre-fetch`);
41689
+ }
41568
41690
  nodeInfo = this.getNode();
41569
41691
  chain = this.getChain();
41570
- } catch (error) {
41692
+ } catch (_err) {
41571
41693
  const data = await this.operations.getChainAndNodeInfo();
41572
41694
  nodeInfo = {
41573
41695
  maxDepth: bn(data.nodeInfo.maxDepth),
@@ -41580,6 +41702,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41580
41702
  chain = processGqlChain(data.chain);
41581
41703
  _Provider.chainInfoCache[this.urlWithoutAuth] = chain;
41582
41704
  _Provider.nodeInfoCache[this.urlWithoutAuth] = nodeInfo;
41705
+ this.consensusParametersTimestamp = Date.now();
41583
41706
  }
41584
41707
  return {
41585
41708
  chain,
@@ -41729,18 +41852,25 @@ Supported fuel-core version: ${supportedVersion}.`
41729
41852
  } = this.getChain();
41730
41853
  return baseAssetId;
41731
41854
  }
41732
- validateTransaction(tx, consensusParameters) {
41733
- const { maxOutputs, maxInputs } = consensusParameters.txParameters;
41855
+ /**
41856
+ * @hidden
41857
+ */
41858
+ validateTransaction(tx) {
41859
+ const {
41860
+ consensusParameters: {
41861
+ txParameters: { maxInputs, maxOutputs }
41862
+ }
41863
+ } = this.getChain();
41734
41864
  if (bn(tx.inputs.length).gt(maxInputs)) {
41735
41865
  throw new FuelError(
41736
41866
  ErrorCode.MAX_INPUTS_EXCEEDED,
41737
- "The transaction exceeds the maximum allowed number of inputs."
41867
+ `The transaction exceeds the maximum allowed number of inputs. Tx inputs: ${tx.inputs.length}, max inputs: ${maxInputs}`
41738
41868
  );
41739
41869
  }
41740
41870
  if (bn(tx.outputs.length).gt(maxOutputs)) {
41741
41871
  throw new FuelError(
41742
41872
  ErrorCode.MAX_OUTPUTS_EXCEEDED,
41743
- "The transaction exceeds the maximum allowed number of outputs."
41873
+ `The transaction exceeds the maximum allowed number of outputs. Tx outputs: ${tx.outputs.length}, max outputs: ${maxOutputs}`
41744
41874
  );
41745
41875
  }
41746
41876
  }
@@ -41759,8 +41889,7 @@ Supported fuel-core version: ${supportedVersion}.`
41759
41889
  if (estimateTxDependencies) {
41760
41890
  await this.estimateTxDependencies(transactionRequest);
41761
41891
  }
41762
- const { consensusParameters } = this.getChain();
41763
- this.validateTransaction(transactionRequest, consensusParameters);
41892
+ this.validateTransaction(transactionRequest);
41764
41893
  const encodedTransaction = hexlify(transactionRequest.toTransactionBytes());
41765
41894
  let abis;
41766
41895
  if (isTransactionTypeScript(transactionRequest)) {
@@ -41848,6 +41977,7 @@ Supported fuel-core version: ${supportedVersion}.`
41848
41977
  const missingContractIds = [];
41849
41978
  let outputVariables = 0;
41850
41979
  let dryRunStatus;
41980
+ this.validateTransaction(transactionRequest);
41851
41981
  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
41852
41982
  const {
41853
41983
  dryRun: [{ receipts: rawReceipts, status }]
@@ -41970,6 +42100,27 @@ Supported fuel-core version: ${supportedVersion}.`
41970
42100
  });
41971
42101
  return results;
41972
42102
  }
42103
+ async autoRefetchConfigs() {
42104
+ const now = Date.now();
42105
+ const diff = now - (this.consensusParametersTimestamp ?? 0);
42106
+ if (diff < 6e4) {
42107
+ return;
42108
+ }
42109
+ const chainInfo = this.getChain();
42110
+ const {
42111
+ consensusParameters: { version: previous }
42112
+ } = chainInfo;
42113
+ const {
42114
+ chain: {
42115
+ latestBlock: {
42116
+ header: { consensusParametersVersion: current }
42117
+ }
42118
+ }
42119
+ } = await this.operations.getConsensusParametersVersion();
42120
+ if (previous !== current) {
42121
+ await this.fetchChainAndNodeInfo(true);
42122
+ }
42123
+ }
41973
42124
  /**
41974
42125
  * Estimates the transaction gas and fee based on the provided transaction request.
41975
42126
  * @param transactionRequest - The transaction request object.
@@ -41978,6 +42129,7 @@ Supported fuel-core version: ${supportedVersion}.`
41978
42129
  async estimateTxGasAndFee(params) {
41979
42130
  const { transactionRequest } = params;
41980
42131
  let { gasPrice } = params;
42132
+ await this.autoRefetchConfigs();
41981
42133
  const chainInfo = this.getChain();
41982
42134
  const { gasPriceFactor, maxGasPerTx } = this.getGasConfig();
41983
42135
  const minGas = transactionRequest.calculateMinGas(chainInfo);
@@ -42091,7 +42243,9 @@ Supported fuel-core version: ${supportedVersion}.`
42091
42243
  if (dryRunStatus && "reason" in dryRunStatus) {
42092
42244
  throw this.extractDryRunError(txRequestClone, receipts, dryRunStatus);
42093
42245
  }
42094
- gasUsed = getGasUsedFromReceipts(receipts);
42246
+ const { maxGasPerTx } = this.getGasConfig();
42247
+ const pristineGasUsed = getGasUsedFromReceipts(receipts);
42248
+ gasUsed = bn(pristineGasUsed.muln(GAS_USED_MODIFIER)).max(maxGasPerTx.sub(minGas));
42095
42249
  txRequestClone.gasLimit = gasUsed;
42096
42250
  ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
42097
42251
  transactionRequest: txRequestClone,
@@ -42128,7 +42282,7 @@ Supported fuel-core version: ${supportedVersion}.`
42128
42282
  const {
42129
42283
  coins: { edges, pageInfo }
42130
42284
  } = await this.operations.getCoins({
42131
- ...this.validatePaginationArgs({
42285
+ ...validatePaginationArgs({
42132
42286
  paginationLimit: RESOURCES_PAGE_SIZE_LIMIT,
42133
42287
  inputArgs: paginationArgs
42134
42288
  }),
@@ -42138,7 +42292,7 @@ Supported fuel-core version: ${supportedVersion}.`
42138
42292
  id: node.utxoId,
42139
42293
  assetId: node.assetId,
42140
42294
  amount: bn(node.amount),
42141
- owner: Address.fromAddressOrString(node.owner),
42295
+ owner: ownerAddress,
42142
42296
  blockCreated: bn(node.blockCreated),
42143
42297
  txCreatedIdx: bn(node.txCreatedIdx)
42144
42298
  }));
@@ -42192,7 +42346,7 @@ Supported fuel-core version: ${supportedVersion}.`
42192
42346
  id: coin.utxoId,
42193
42347
  amount: bn(coin.amount),
42194
42348
  assetId: coin.assetId,
42195
- owner: Address.fromAddressOrString(coin.owner),
42349
+ owner: ownerAddress,
42196
42350
  blockCreated: bn(coin.blockCreated),
42197
42351
  txCreatedIdx: bn(coin.txCreatedIdx)
42198
42352
  };
@@ -42267,7 +42421,7 @@ Supported fuel-core version: ${supportedVersion}.`
42267
42421
  const {
42268
42422
  blocks: { edges, pageInfo }
42269
42423
  } = await this.operations.getBlocks({
42270
- ...this.validatePaginationArgs({
42424
+ ...validatePaginationArgs({
42271
42425
  paginationLimit: BLOCKS_PAGE_SIZE_LIMIT,
42272
42426
  inputArgs: params
42273
42427
  })
@@ -42362,7 +42516,7 @@ Supported fuel-core version: ${supportedVersion}.`
42362
42516
  const {
42363
42517
  transactions: { edges, pageInfo }
42364
42518
  } = await this.operations.getTransactions({
42365
- ...this.validatePaginationArgs({
42519
+ ...validatePaginationArgs({
42366
42520
  inputArgs: paginationArgs,
42367
42521
  paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
42368
42522
  })
@@ -42457,7 +42611,7 @@ Supported fuel-core version: ${supportedVersion}.`
42457
42611
  const {
42458
42612
  messages: { edges, pageInfo }
42459
42613
  } = await this.operations.getMessages({
42460
- ...this.validatePaginationArgs({
42614
+ ...validatePaginationArgs({
42461
42615
  inputArgs: paginationArgs,
42462
42616
  paginationLimit: RESOURCES_PAGE_SIZE_LIMIT
42463
42617
  }),
@@ -42681,13 +42835,13 @@ Supported fuel-core version: ${supportedVersion}.`
42681
42835
  messageId: InputMessageCoder.getMessageId({
42682
42836
  sender: rawMessage.sender,
42683
42837
  recipient: rawMessage.recipient,
42684
- nonce: rawMessage.nonce,
42838
+ nonce,
42685
42839
  amount: bn(rawMessage.amount),
42686
42840
  data: rawMessage.data
42687
42841
  }),
42688
42842
  sender: Address.fromAddressOrString(rawMessage.sender),
42689
42843
  recipient: Address.fromAddressOrString(rawMessage.recipient),
42690
- nonce: rawMessage.nonce,
42844
+ nonce,
42691
42845
  amount: bn(rawMessage.amount),
42692
42846
  data: InputMessageCoder.decodeData(rawMessage.data),
42693
42847
  daHeight: bn(rawMessage.daHeight)
@@ -42709,41 +42863,6 @@ Supported fuel-core version: ${supportedVersion}.`
42709
42863
  }
42710
42864
  return relayedTransactionStatus;
42711
42865
  }
42712
- /**
42713
- * @hidden
42714
- */
42715
- validatePaginationArgs(params) {
42716
- const { paginationLimit, inputArgs = {} } = params;
42717
- const { first, last, after, before } = inputArgs;
42718
- if (after && before) {
42719
- throw new FuelError(
42720
- ErrorCode.INVALID_INPUT_PARAMETERS,
42721
- 'Pagination arguments "after" and "before" cannot be used together'
42722
- );
42723
- }
42724
- if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
42725
- throw new FuelError(
42726
- ErrorCode.INVALID_INPUT_PARAMETERS,
42727
- `Pagination limit for this query cannot exceed ${paginationLimit} items`
42728
- );
42729
- }
42730
- if (first && before) {
42731
- throw new FuelError(
42732
- ErrorCode.INVALID_INPUT_PARAMETERS,
42733
- 'The use of pagination argument "first" with "before" is not supported'
42734
- );
42735
- }
42736
- if (last && after) {
42737
- throw new FuelError(
42738
- ErrorCode.INVALID_INPUT_PARAMETERS,
42739
- 'The use of pagination argument "last" with "after" is not supported'
42740
- );
42741
- }
42742
- if (!first && !last) {
42743
- inputArgs.first = paginationLimit;
42744
- }
42745
- return inputArgs;
42746
- }
42747
42866
  /**
42748
42867
  * @hidden
42749
42868
  */
@@ -42864,7 +42983,15 @@ Supported fuel-core version: ${supportedVersion}.`
42864
42983
  }
42865
42984
  async function getTransactionsSummaries(params) {
42866
42985
  const { filters, provider, abiMap } = params;
42867
- const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
42986
+ const { owner, ...inputArgs } = filters;
42987
+ const validPaginationParams = validatePaginationArgs({
42988
+ inputArgs,
42989
+ paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
42990
+ });
42991
+ const { transactionsByOwner } = await provider.operations.getTransactionsByOwner({
42992
+ ...validPaginationParams,
42993
+ owner
42994
+ });
42868
42995
  const { edges, pageInfo } = transactionsByOwner;
42869
42996
  const {
42870
42997
  consensusParameters: {
@@ -43584,34 +43711,42 @@ Supported fuel-core version: ${supportedVersion}.`
43584
43711
 
43585
43712
  // src/utils/formatTransferToContractScriptData.ts
43586
43713
  var asm = __toESM(require_node());
43587
- var formatTransferToContractScriptData = (params) => {
43588
- const { assetId, amountToTransfer, hexlifiedContractId } = params;
43714
+ var formatTransferToContractScriptData = (transferParams) => {
43589
43715
  const numberCoder = new BigNumberCoder("u64");
43590
- const encoded = numberCoder.encode(new BN(amountToTransfer).toNumber());
43591
- const scriptData = Uint8Array.from([
43592
- ...arrayify(hexlifiedContractId),
43593
- ...encoded,
43594
- ...arrayify(assetId)
43595
- ]);
43596
- return scriptData;
43716
+ return transferParams.reduce((acc, transferParam) => {
43717
+ const { assetId, amount, contractId } = transferParam;
43718
+ const encoded = numberCoder.encode(new BN(amount).toNumber());
43719
+ const scriptData = concat([
43720
+ Address.fromAddressOrString(contractId).toBytes(),
43721
+ encoded,
43722
+ arrayify(assetId)
43723
+ ]);
43724
+ return concat([acc, scriptData]);
43725
+ }, new Uint8Array());
43597
43726
  };
43598
- var assembleTransferToContractScript = async (params) => {
43599
- const scriptData = formatTransferToContractScriptData(params);
43727
+ var assembleTransferToContractScript = async (transferParams) => {
43728
+ const scriptData = formatTransferToContractScriptData(transferParams);
43600
43729
  await asm.initWasm();
43601
- const gtf2 = asm.gtf(16, 0, asm.GTFArgs.ScriptData);
43602
- const addi2 = asm.addi(17, 16, 32);
43603
- const lw2 = asm.lw(18, 17, 0);
43604
- const addi22 = asm.addi(19, 17, 8);
43605
- const tr2 = asm.tr(16, 18, 19);
43606
- const ret2 = asm.ret(1);
43607
- const script = Uint8Array.from([
43608
- ...gtf2.to_bytes(),
43609
- ...addi2.to_bytes(),
43610
- ...lw2.to_bytes(),
43611
- ...addi22.to_bytes(),
43612
- ...tr2.to_bytes(),
43613
- ...ret2.to_bytes()
43614
- ]);
43730
+ let script = new Uint8Array();
43731
+ transferParams.forEach((_, i) => {
43732
+ const offset = (CONTRACT_ID_LEN + WORD_SIZE + ASSET_ID_LEN) * i;
43733
+ script = concat([
43734
+ script,
43735
+ // Load ScriptData into register 0x10.
43736
+ asm.gtf(16, 0, asm.GTFArgs.ScriptData).to_bytes(),
43737
+ // Add the offset to 0x10 so it will point to the current contract ID, store in 0x11.
43738
+ asm.addi(17, 16, offset).to_bytes(),
43739
+ // Add CONTRACT_ID_LEN to 0x11 to point to the amount in the ScriptData, store in 0x12.
43740
+ asm.addi(18, 17, CONTRACT_ID_LEN).to_bytes(),
43741
+ // Load word to the amount at 0x12 into register 0x13.
43742
+ asm.lw(19, 18, 0).to_bytes(),
43743
+ // Add WORD_SIZE to 0x12 to point to the asset ID in the ScriptData, store in 0x14.
43744
+ asm.addi(20, 18, WORD_SIZE).to_bytes(),
43745
+ // Perform the transfer using contract ID in 0x11, amount in 0x13, and asset ID in 0x14.
43746
+ asm.tr(17, 19, 20).to_bytes()
43747
+ ]);
43748
+ });
43749
+ script = concat([script, asm.ret(1).to_bytes()]);
43615
43750
  return { script, scriptData };
43616
43751
  };
43617
43752
 
@@ -43808,6 +43943,7 @@ Supported fuel-core version: ${supportedVersion}.`
43808
43943
  `The account ${this.address} does not have enough base asset funds to cover the transaction execution.`
43809
43944
  );
43810
43945
  }
43946
+ this.provider.validateTransaction(request);
43811
43947
  request.updatePredicateGasUsed(estimatedPredicates);
43812
43948
  const requestToReestimate = clone_default(request);
43813
43949
  if (addedSignatures) {
@@ -43908,35 +44044,35 @@ Supported fuel-core version: ${supportedVersion}.`
43908
44044
  * @returns A promise that resolves to the transaction response.
43909
44045
  */
43910
44046
  async transferToContract(contractId, amount, assetId, txParams = {}) {
43911
- if (bn(amount).lte(0)) {
43912
- throw new FuelError(
43913
- ErrorCode.INVALID_TRANSFER_AMOUNT,
43914
- "Transfer amount must be a positive number."
43915
- );
43916
- }
43917
- const contractAddress = Address.fromAddressOrString(contractId);
43918
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
43919
- const { script, scriptData } = await assembleTransferToContractScript({
43920
- hexlifiedContractId: contractAddress.toB256(),
43921
- amountToTransfer: bn(amount),
43922
- assetId: assetIdToTransfer
43923
- });
44047
+ return this.batchTransferToContracts([{ amount, assetId, contractId }], txParams);
44048
+ }
44049
+ async batchTransferToContracts(contractTransferParams, txParams = {}) {
43924
44050
  let request = new ScriptTransactionRequest({
43925
- ...txParams,
43926
- script,
43927
- scriptData
43928
- });
43929
- request.addContractInputAndOutput(contractAddress);
43930
- const txCost = await this.getTransactionCost(request, {
43931
- quantities: [{ amount: bn(amount), assetId: String(assetIdToTransfer) }]
44051
+ ...txParams
43932
44052
  });
43933
- request = this.validateGasLimitAndMaxFee({
43934
- transactionRequest: request,
43935
- gasUsed: txCost.gasUsed,
43936
- maxFee: txCost.maxFee,
43937
- txParams
44053
+ const quantities = [];
44054
+ const transferParams = contractTransferParams.map((transferParam) => {
44055
+ const amount = bn(transferParam.amount);
44056
+ const contractAddress = Address.fromAddressOrString(transferParam.contractId);
44057
+ const assetId = transferParam.assetId ? hexlify(transferParam.assetId) : this.provider.getBaseAssetId();
44058
+ if (amount.lte(0)) {
44059
+ throw new FuelError(
44060
+ ErrorCode.INVALID_TRANSFER_AMOUNT,
44061
+ "Transfer amount must be a positive number."
44062
+ );
44063
+ }
44064
+ request.addContractInputAndOutput(contractAddress);
44065
+ quantities.push({ amount, assetId });
44066
+ return {
44067
+ amount,
44068
+ contractId: contractAddress.toB256(),
44069
+ assetId
44070
+ };
43938
44071
  });
43939
- await this.fund(request, txCost);
44072
+ const { script, scriptData } = await assembleTransferToContractScript(transferParams);
44073
+ request.script = script;
44074
+ request.scriptData = scriptData;
44075
+ request = await this.estimateAndFundTransaction(request, txParams, { quantities });
43940
44076
  return this.sendTransaction(request);
43941
44077
  }
43942
44078
  /**
@@ -44115,9 +44251,9 @@ Supported fuel-core version: ${supportedVersion}.`
44115
44251
  }
44116
44252
  }
44117
44253
  /** @hidden * */
44118
- async estimateAndFundTransaction(transactionRequest, txParams) {
44254
+ async estimateAndFundTransaction(transactionRequest, txParams, costParams) {
44119
44255
  let request = transactionRequest;
44120
- const txCost = await this.getTransactionCost(request);
44256
+ const txCost = await this.getTransactionCost(request, costParams);
44121
44257
  request = this.validateGasLimitAndMaxFee({
44122
44258
  transactionRequest: request,
44123
44259
  gasUsed: txCost.gasUsed,
@@ -48942,6 +49078,208 @@ Supported fuel-core version: ${supportedVersion}.`
48942
49078
  var StorageAbstract = class {
48943
49079
  };
48944
49080
 
49081
+ // src/utils/predicate-script-loader-instructions.ts
49082
+ var asm2 = __toESM(require_node());
49083
+ var BLOB_ID_SIZE = 32;
49084
+ var REG_ADDRESS_OF_DATA_AFTER_CODE = 16;
49085
+ var REG_START_OF_LOADED_CODE = 17;
49086
+ var REG_GENERAL_USE = 18;
49087
+ var WORD_SIZE2 = 8;
49088
+ function getDataOffset(binary) {
49089
+ const OFFSET_INDEX = 8;
49090
+ const dataView = new DataView(binary.buffer, OFFSET_INDEX, 8);
49091
+ const dataOffset = dataView.getBigUint64(0, false);
49092
+ return Number(dataOffset);
49093
+ }
49094
+ function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
49095
+ const { RegId, Instruction } = asm2;
49096
+ const REG_PC = RegId.pc().to_u8();
49097
+ const REG_SP = RegId.sp().to_u8();
49098
+ const REG_IS = RegId.is().to_u8();
49099
+ const getInstructions = (numOfInstructions2) => [
49100
+ // 1. Load the blob content into memory
49101
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49102
+ asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
49103
+ // hold the address of the blob ID.
49104
+ asm2.addi(
49105
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49106
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49107
+ numOfInstructions2 * Instruction.size()
49108
+ ),
49109
+ // The code is going to be loaded from the current value of SP onwards, save
49110
+ // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
49111
+ asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
49112
+ // REG_GENERAL_USE to hold the size of the blob.
49113
+ asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
49114
+ // Push the blob contents onto the stack.
49115
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
49116
+ // Move on to the data section length
49117
+ asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, BLOB_ID_SIZE),
49118
+ // load the size of the data section into REG_GENERAL_USE
49119
+ asm2.lw(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE, 0),
49120
+ // after we have read the length of the data section, we move the pointer to the actual
49121
+ // data by skipping WORD_SIZE bytes.
49122
+ asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, WORD_SIZE2),
49123
+ // load the data section of the executable
49124
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 2),
49125
+ // Jump into the memory where the contract is loaded.
49126
+ // What follows is called _jmp_mem by the sway compiler.
49127
+ // Subtract the address contained in IS because jmp will add it back.
49128
+ asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
49129
+ // jmp will multiply by 4, so we need to divide to cancel that out.
49130
+ asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
49131
+ // Jump to the start of the contract we loaded.
49132
+ asm2.jmp(REG_START_OF_LOADED_CODE)
49133
+ ];
49134
+ const getInstructionsNoDataSection = (numOfInstructions2) => [
49135
+ // 1. Load the blob content into memory
49136
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49137
+ // 1. Load the blob content into memory
49138
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49139
+ asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
49140
+ // hold the address of the blob ID.
49141
+ asm2.addi(
49142
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49143
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49144
+ numOfInstructions2 * Instruction.size()
49145
+ ),
49146
+ // The code is going to be loaded from the current value of SP onwards, save
49147
+ // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
49148
+ asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
49149
+ // REG_GENERAL_USE to hold the size of the blob.
49150
+ asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
49151
+ // Push the blob contents onto the stack.
49152
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
49153
+ // Jump into the memory where the contract is loaded.
49154
+ // What follows is called _jmp_mem by the sway compiler.
49155
+ // Subtract the address contained in IS because jmp will add it back.
49156
+ asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
49157
+ // jmp will multiply by 4, so we need to divide to cancel that out.
49158
+ asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
49159
+ // Jump to the start of the contract we loaded.
49160
+ asm2.jmp(REG_START_OF_LOADED_CODE)
49161
+ ];
49162
+ const offset = getDataOffset(originalBinary);
49163
+ if (originalBinary.length < offset) {
49164
+ throw new Error(
49165
+ `Data section offset is out of bounds, offset: ${offset}, binary length: ${originalBinary.length}`
49166
+ );
49167
+ }
49168
+ const dataSection = originalBinary.slice(offset);
49169
+ if (dataSection.length > 0) {
49170
+ const numOfInstructions2 = getInstructions(0).length;
49171
+ if (numOfInstructions2 > 65535) {
49172
+ throw new Error("Too many instructions, exceeding u16::MAX.");
49173
+ }
49174
+ const instructionBytes2 = new Uint8Array(
49175
+ getInstructions(numOfInstructions2).flatMap(
49176
+ (instruction) => Array.from(instruction.to_bytes())
49177
+ )
49178
+ );
49179
+ const blobBytes2 = new Uint8Array(blobId);
49180
+ const dataSectionLenBytes = new Uint8Array(8);
49181
+ const dataView = new DataView(dataSectionLenBytes.buffer);
49182
+ dataView.setBigUint64(0, BigInt(dataSection.length), false);
49183
+ const loaderBytecode2 = new Uint8Array([
49184
+ ...instructionBytes2,
49185
+ ...blobBytes2,
49186
+ ...dataSectionLenBytes
49187
+ ]);
49188
+ return {
49189
+ loaderBytecode: concat([loaderBytecode2, dataSection]),
49190
+ blobOffset: loaderBytecode2.length
49191
+ };
49192
+ }
49193
+ const numOfInstructions = getInstructionsNoDataSection(0).length;
49194
+ if (numOfInstructions > 65535) {
49195
+ throw new Error("Too many instructions, exceeding u16::MAX.");
49196
+ }
49197
+ const instructionBytes = new Uint8Array(
49198
+ getInstructionsNoDataSection(numOfInstructions).flatMap(
49199
+ (instruction) => Array.from(instruction.to_bytes())
49200
+ )
49201
+ );
49202
+ const blobBytes = new Uint8Array(blobId);
49203
+ const loaderBytecode = new Uint8Array([...instructionBytes, ...blobBytes]);
49204
+ return { loaderBytecode };
49205
+ }
49206
+
49207
+ // src/utils/deployScriptOrPredicate.ts
49208
+ async function fundBlobTx(deployer, blobTxRequest) {
49209
+ let totalCost = bn(0);
49210
+ const chainInfo = deployer.provider.getChain();
49211
+ const gasPrice = await deployer.provider.estimateGasPrice(10);
49212
+ const priceFactor = chainInfo.consensusParameters.feeParameters.gasPriceFactor;
49213
+ const minGas = blobTxRequest.calculateMinGas(chainInfo);
49214
+ const minFee = calculateGasFee({
49215
+ gasPrice,
49216
+ gas: minGas,
49217
+ priceFactor,
49218
+ tip: blobTxRequest.tip
49219
+ }).add(1);
49220
+ totalCost = totalCost.add(minFee);
49221
+ if (totalCost.gt(await deployer.getBalance())) {
49222
+ throw new FuelError(ErrorCode.FUNDS_TOO_LOW, "Insufficient balance to deploy predicate.");
49223
+ }
49224
+ const txCost = await deployer.getTransactionCost(blobTxRequest);
49225
+ blobTxRequest.maxFee = txCost.maxFee;
49226
+ return deployer.fund(blobTxRequest, txCost);
49227
+ }
49228
+ function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
49229
+ const { configurables: readOnlyConfigurables } = jsonAbi;
49230
+ const configurables = [];
49231
+ readOnlyConfigurables.forEach((config) => {
49232
+ configurables.push({ ...config, offset: config.offset - configurableOffsetDiff });
49233
+ });
49234
+ return { ...jsonAbi, configurables };
49235
+ }
49236
+ async function deployScriptOrPredicate({
49237
+ deployer,
49238
+ bytecode,
49239
+ abi,
49240
+ loaderInstanceCallback
49241
+ }) {
49242
+ const dataSectionOffset = getDataOffset(arrayify(bytecode));
49243
+ const byteCodeWithoutDataSection = bytecode.slice(0, dataSectionOffset);
49244
+ const blobId = hash2(byteCodeWithoutDataSection);
49245
+ const blobTxRequest = new BlobTransactionRequest({
49246
+ blobId,
49247
+ witnessIndex: 0,
49248
+ witnesses: [byteCodeWithoutDataSection]
49249
+ });
49250
+ const { loaderBytecode, blobOffset } = getPredicateScriptLoaderInstructions(
49251
+ arrayify(bytecode),
49252
+ arrayify(blobId)
49253
+ );
49254
+ const configurableOffsetDiff = byteCodeWithoutDataSection.length - (blobOffset || 0);
49255
+ const newAbi = adjustConfigurableOffsets(abi, configurableOffsetDiff);
49256
+ const blobExists = (await deployer.provider.getBlobs([blobId])).length > 0;
49257
+ const loaderInstance = loaderInstanceCallback(loaderBytecode, newAbi);
49258
+ if (blobExists) {
49259
+ return {
49260
+ waitForResult: () => Promise.resolve(loaderInstance),
49261
+ blobId
49262
+ };
49263
+ }
49264
+ const fundedBlobRequest = await fundBlobTx(deployer, blobTxRequest);
49265
+ const waitForResult = async () => {
49266
+ try {
49267
+ const blobTx = await deployer.sendTransaction(fundedBlobRequest);
49268
+ const result = await blobTx.waitForResult();
49269
+ if (result.status !== "success" /* success */) {
49270
+ throw new Error();
49271
+ }
49272
+ } catch (err) {
49273
+ throw new FuelError(ErrorCode.TRANSACTION_FAILED, "Failed to deploy predicate chunk");
49274
+ }
49275
+ return loaderInstance;
49276
+ };
49277
+ return {
49278
+ waitForResult,
49279
+ blobId
49280
+ };
49281
+ }
49282
+
48945
49283
  // ../merkle/dist/index.mjs
48946
49284
  var EMPTY = "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
48947
49285
  var Node = class {
@@ -49010,17 +49348,10 @@ Supported fuel-core version: ${supportedVersion}.`
49010
49348
  };
49011
49349
 
49012
49350
  // src/predicate/predicate.ts
49013
- function getDataOffset(binary) {
49014
- const buffer = binary.buffer.slice(binary.byteOffset + 8, binary.byteOffset + 16);
49015
- const dataView = new DataView(buffer);
49016
- const dataOffset = dataView.getBigUint64(0, false);
49017
- return Number(dataOffset);
49018
- }
49019
49351
  var Predicate = class extends Account {
49020
49352
  bytes;
49021
49353
  predicateData = [];
49022
49354
  interface;
49023
- loaderBytecode = "";
49024
49355
  /**
49025
49356
  * Creates an instance of the Predicate class.
49026
49357
  *
@@ -49035,13 +49366,7 @@ Supported fuel-core version: ${supportedVersion}.`
49035
49366
  abi,
49036
49367
  provider,
49037
49368
  data,
49038
- configurableConstants,
49039
- /**
49040
- * TODO: Implement a getBytes method within the Predicate class. This method should return the loaderBytecode if it is set.
49041
- * The getBytes method should be used in all places where we use this.bytes.
49042
- * Note: Do not set loaderBytecode to a default string here; it should remain undefined when not provided.
49043
- */
49044
- loaderBytecode = ""
49369
+ configurableConstants
49045
49370
  }) {
49046
49371
  const { predicateBytes, predicateInterface } = Predicate.processPredicateData(
49047
49372
  bytecode,
@@ -49052,7 +49377,6 @@ Supported fuel-core version: ${supportedVersion}.`
49052
49377
  super(address, provider);
49053
49378
  this.bytes = predicateBytes;
49054
49379
  this.interface = predicateInterface;
49055
- this.loaderBytecode = loaderBytecode;
49056
49380
  if (data !== void 0 && data.length > 0) {
49057
49381
  this.predicateData = data;
49058
49382
  }
@@ -49115,15 +49439,12 @@ Supported fuel-core version: ${supportedVersion}.`
49115
49439
  */
49116
49440
  static processPredicateData(bytes2, jsonAbi, configurableConstants) {
49117
49441
  let predicateBytes = arrayify(bytes2);
49118
- let abiInterface;
49119
- if (jsonAbi) {
49120
- abiInterface = new Interface(jsonAbi);
49121
- if (abiInterface.functions.main === void 0) {
49122
- throw new FuelError(
49123
- ErrorCode.ABI_MAIN_METHOD_MISSING,
49124
- 'Cannot use ABI without "main" function.'
49125
- );
49126
- }
49442
+ const abiInterface = new Interface(jsonAbi);
49443
+ if (abiInterface.functions.main === void 0) {
49444
+ throw new FuelError(
49445
+ ErrorCode.ABI_MAIN_METHOD_MISSING,
49446
+ 'Cannot use ABI without "main" function.'
49447
+ );
49127
49448
  }
49128
49449
  if (configurableConstants && Object.keys(configurableConstants).length) {
49129
49450
  predicateBytes = Predicate.setConfigurableConstants(
@@ -49177,15 +49498,9 @@ Supported fuel-core version: ${supportedVersion}.`
49177
49498
  * @param abiInterface - The ABI interface of the predicate.
49178
49499
  * @returns The mutated bytes with the configurable constants set.
49179
49500
  */
49180
- static setConfigurableConstants(bytes2, configurableConstants, abiInterface, loaderBytecode) {
49501
+ static setConfigurableConstants(bytes2, configurableConstants, abiInterface) {
49181
49502
  const mutatedBytes = bytes2;
49182
49503
  try {
49183
- if (!abiInterface) {
49184
- throw new FuelError(
49185
- ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
49186
- "Cannot validate configurable constants because the Predicate was instantiated without a JSON ABI"
49187
- );
49188
- }
49189
49504
  if (Object.keys(abiInterface.configurables).length === 0) {
49190
49505
  throw new FuelError(
49191
49506
  ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
@@ -49203,15 +49518,6 @@ Supported fuel-core version: ${supportedVersion}.`
49203
49518
  const encoded = abiInterface.encodeConfigurable(key, value);
49204
49519
  mutatedBytes.set(encoded, offset);
49205
49520
  });
49206
- if (loaderBytecode) {
49207
- const offset = getDataOffset(bytes2);
49208
- const dataSection = mutatedBytes.slice(offset);
49209
- const dataSectionLen = dataSection.length;
49210
- const dataSectionLenBytes = new Uint8Array(8);
49211
- const dataSectionLenDataView = new DataView(dataSectionLenBytes.buffer);
49212
- dataSectionLenDataView.setBigUint64(0, BigInt(dataSectionLen), false);
49213
- mutatedBytes.set(concat([loaderBytecode, dataSectionLenBytes, dataSection]));
49214
- }
49215
49521
  } catch (err) {
49216
49522
  throw new FuelError(
49217
49523
  ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
@@ -49242,6 +49548,28 @@ Supported fuel-core version: ${supportedVersion}.`
49242
49548
  }
49243
49549
  return index;
49244
49550
  }
49551
+ /**
49552
+ *
49553
+ * @param account - The account used to pay the deployment costs.
49554
+ * @returns The _blobId_ and a _waitForResult_ callback that returns the deployed predicate
49555
+ * once the blob deployment transaction finishes.
49556
+ *
49557
+ * The returned loader predicate will have the same configurable constants
49558
+ * as the original predicate which was used to generate the loader predicate.
49559
+ */
49560
+ async deploy(account) {
49561
+ return deployScriptOrPredicate({
49562
+ deployer: account,
49563
+ abi: this.interface.jsonAbi,
49564
+ bytecode: this.bytes,
49565
+ loaderInstanceCallback: (loaderBytecode, newAbi) => new Predicate({
49566
+ bytecode: loaderBytecode,
49567
+ abi: newAbi,
49568
+ provider: this.provider,
49569
+ data: this.predicateData
49570
+ })
49571
+ });
49572
+ }
49245
49573
  };
49246
49574
 
49247
49575
  // src/connectors/fuel-connector.ts
@@ -49607,8 +49935,9 @@ Supported fuel-core version: ${supportedVersion}.`
49607
49935
  }
49608
49936
  async initialize() {
49609
49937
  try {
49610
- await this.setDefaultConnector();
49938
+ const connectResponse = this.setDefaultConnector();
49611
49939
  this._targetUnsubscribe = this.setupConnectorListener();
49940
+ await connectResponse;
49612
49941
  } catch (error) {
49613
49942
  throw new FuelError(ErrorCode.INVALID_PROVIDER, "Error initializing Fuel Connector");
49614
49943
  }