@fuel-ts/account 0.92.1 → 0.94.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 (87) hide show
  1. package/README.md +9 -29
  2. package/dist/account.d.ts +15 -4
  3. package/dist/account.d.ts.map +1 -1
  4. package/dist/configs.d.ts +0 -2
  5. package/dist/configs.d.ts.map +1 -1
  6. package/dist/configs.global.js +0 -2
  7. package/dist/configs.global.js.map +1 -1
  8. package/dist/configs.js +0 -6
  9. package/dist/configs.js.map +1 -1
  10. package/dist/configs.mjs +0 -4
  11. package/dist/configs.mjs.map +1 -1
  12. package/dist/connectors/fuel-connector.d.ts +24 -1
  13. package/dist/connectors/fuel-connector.d.ts.map +1 -1
  14. package/dist/connectors/fuel.d.ts +14 -1
  15. package/dist/connectors/fuel.d.ts.map +1 -1
  16. package/dist/connectors/types/connector-metadata.d.ts.map +1 -1
  17. package/dist/connectors/utils/promises.d.ts.map +1 -1
  18. package/dist/index.global.js +1645 -985
  19. package/dist/index.global.js.map +1 -1
  20. package/dist/index.js +1034 -673
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +771 -423
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/predicate/predicate.d.ts +15 -9
  25. package/dist/predicate/predicate.d.ts.map +1 -1
  26. package/dist/providers/__generated__/operations.d.ts +614 -1
  27. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  28. package/dist/providers/fuel-graphql-subscriber.d.ts +3 -3
  29. package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
  30. package/dist/providers/provider.d.ts +19 -47
  31. package/dist/providers/provider.d.ts.map +1 -1
  32. package/dist/providers/resource-cache.d.ts +14 -0
  33. package/dist/providers/resource-cache.d.ts.map +1 -0
  34. package/dist/providers/transaction-request/blob-transaction-request.d.ts +48 -0
  35. package/dist/providers/transaction-request/blob-transaction-request.d.ts.map +1 -0
  36. package/dist/providers/transaction-request/index.d.ts +1 -0
  37. package/dist/providers/transaction-request/index.d.ts.map +1 -1
  38. package/dist/providers/transaction-request/transaction-request.d.ts +4 -3
  39. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  40. package/dist/providers/transaction-request/types.d.ts +5 -2
  41. package/dist/providers/transaction-request/types.d.ts.map +1 -1
  42. package/dist/providers/transaction-request/utils.d.ts +9 -0
  43. package/dist/providers/transaction-request/utils.d.ts.map +1 -1
  44. package/dist/providers/transaction-response/transaction-response.d.ts +10 -5
  45. package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
  46. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +1 -1
  47. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
  48. package/dist/providers/transaction-summary/call.d.ts +4 -3
  49. package/dist/providers/transaction-summary/call.d.ts.map +1 -1
  50. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  51. package/dist/providers/transaction-summary/input.d.ts +6 -1
  52. package/dist/providers/transaction-summary/input.d.ts.map +1 -1
  53. package/dist/providers/transaction-summary/operations.d.ts +4 -2
  54. package/dist/providers/transaction-summary/operations.d.ts.map +1 -1
  55. package/dist/providers/transaction-summary/types.d.ts +5 -2
  56. package/dist/providers/transaction-summary/types.d.ts.map +1 -1
  57. package/dist/providers/utils/gas.d.ts +6 -0
  58. package/dist/providers/utils/gas.d.ts.map +1 -1
  59. package/dist/test-utils/launchNode.d.ts +0 -16
  60. package/dist/test-utils/launchNode.d.ts.map +1 -1
  61. package/dist/test-utils/setup-test-provider-and-wallets.d.ts.map +1 -1
  62. package/dist/test-utils/test-asset-id.d.ts +8 -0
  63. package/dist/test-utils/test-asset-id.d.ts.map +1 -0
  64. package/dist/test-utils/test-message.d.ts +4 -2
  65. package/dist/test-utils/test-message.d.ts.map +1 -1
  66. package/dist/test-utils/wallet-config.d.ts +3 -3
  67. package/dist/test-utils/wallet-config.d.ts.map +1 -1
  68. package/dist/test-utils.d.ts +1 -3
  69. package/dist/test-utils.d.ts.map +1 -1
  70. package/dist/test-utils.global.js +43613 -42984
  71. package/dist/test-utils.global.js.map +1 -1
  72. package/dist/test-utils.js +1560 -1271
  73. package/dist/test-utils.js.map +1 -1
  74. package/dist/test-utils.mjs +1282 -994
  75. package/dist/test-utils.mjs.map +1 -1
  76. package/dist/wallet/base-wallet-unlocked.d.ts +1 -2
  77. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  78. package/dist/wallet/keystore-wallet.d.ts.map +1 -1
  79. package/package.json +19 -21
  80. package/dist/providers/memory-cache.d.ts +0 -11
  81. package/dist/providers/memory-cache.d.ts.map +0 -1
  82. package/dist/test-utils/asset-id.d.ts +0 -8
  83. package/dist/test-utils/asset-id.d.ts.map +0 -1
  84. package/dist/test-utils/generateTestWallet.d.ts +0 -4
  85. package/dist/test-utils/generateTestWallet.d.ts.map +0 -1
  86. package/dist/test-utils/seedTestWallet.d.ts +0 -4
  87. package/dist/test-utils/seedTestWallet.d.ts.map +0 -1
@@ -3035,7 +3035,7 @@
3035
3035
  }
3036
3036
  return chk;
3037
3037
  }
3038
- function convert2(data, inBits, outBits, pad3) {
3038
+ function convert2(data, inBits, outBits, pad) {
3039
3039
  let value = 0;
3040
3040
  let bits = 0;
3041
3041
  const maxV = (1 << outBits) - 1;
@@ -3048,7 +3048,7 @@
3048
3048
  result.push(value >> bits & maxV);
3049
3049
  }
3050
3050
  }
3051
- if (pad3) {
3051
+ if (pad) {
3052
3052
  if (bits > 0) {
3053
3053
  result.push(value << outBits - bits & maxV);
3054
3054
  }
@@ -20390,9 +20390,9 @@ spurious results.`);
20390
20390
  }
20391
20391
  });
20392
20392
 
20393
- // ../../node_modules/.pnpm/@fuels+vm-asm@0.55.0/node_modules/@fuels/vm-asm/dist/node/index.cjs
20393
+ // ../../node_modules/.pnpm/@fuels+vm-asm@0.56.0/node_modules/@fuels/vm-asm/dist/node/index.cjs
20394
20394
  var require_node = __commonJS({
20395
- "../../node_modules/.pnpm/@fuels+vm-asm@0.55.0/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
20395
+ "../../node_modules/.pnpm/@fuels+vm-asm@0.56.0/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: () => {
@@ -20606,8 +20606,8 @@ spurious results.`);
20606
20606
  const ret3 = wasm$1.cb(dst);
20607
20607
  return Instruction.__wrap(ret3);
20608
20608
  }
20609
- function ldc(contract_id_addr, offset, len) {
20610
- const ret3 = wasm$1.ldc(contract_id_addr, offset, len);
20609
+ function ldc(contract_id_addr, offset, len, mode) {
20610
+ const ret3 = wasm$1.ldc(contract_id_addr, offset, len, mode);
20611
20611
  return Instruction.__wrap(ret3);
20612
20612
  }
20613
20613
  function log(a, b, c, d) {
@@ -20662,8 +20662,8 @@ spurious results.`);
20662
20662
  const ret3 = wasm$1.ecr1(dst_addr, sig_addr, msg_hash_addr);
20663
20663
  return Instruction.__wrap(ret3);
20664
20664
  }
20665
- function ed19(pub_key_addr, sig_addr, msg_hash_addr) {
20666
- const ret3 = wasm$1.ed19(pub_key_addr, sig_addr, msg_hash_addr);
20665
+ function ed19(pub_key_addr, sig_addr, msg_addr, msg_len) {
20666
+ const ret3 = wasm$1.ed19(pub_key_addr, sig_addr, msg_addr, msg_len);
20667
20667
  return Instruction.__wrap(ret3);
20668
20668
  }
20669
20669
  function k256(dst_addr, src_addr, len) {
@@ -20910,6 +20910,14 @@ 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) {
20914
+ const ret3 = wasm$1.bsiz(dst, blob_id_ptr);
20915
+ return Instruction.__wrap(ret3);
20916
+ }
20917
+ function bldd(dst_ptr, blob_id_ptr, offset, len) {
20918
+ const ret3 = wasm$1.bldd(dst_ptr, blob_id_ptr, offset, len);
20919
+ return Instruction.__wrap(ret3);
20920
+ }
20913
20921
  var cachedInt32Memory0 = null;
20914
20922
  function getInt32Memory0() {
20915
20923
  if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {
@@ -20921,6 +20929,369 @@ spurious results.`);
20921
20929
  ptr = ptr >>> 0;
20922
20930
  return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
20923
20931
  }
20932
+ var GMArgs = Object.freeze({
20933
+ /**
20934
+ *r" Get if caller is external.
20935
+ */
20936
+ IsCallerExternal: 1,
20937
+ "1": "IsCallerExternal",
20938
+ /**
20939
+ *r" Get caller's contract ID.
20940
+ */
20941
+ GetCaller: 2,
20942
+ "2": "GetCaller",
20943
+ /**
20944
+ *r" Get index of current predicate.
20945
+ */
20946
+ GetVerifyingPredicate: 3,
20947
+ "3": "GetVerifyingPredicate",
20948
+ /**
20949
+ *r" Get the Chain ID this VM is operating within
20950
+ */
20951
+ GetChainId: 4,
20952
+ "4": "GetChainId",
20953
+ /**
20954
+ *r" Get memory address where the transaction is located
20955
+ */
20956
+ TxStart: 5,
20957
+ "5": "TxStart",
20958
+ /**
20959
+ *r" Get memory address of base asset ID
20960
+ */
20961
+ BaseAssetId: 6,
20962
+ "6": "BaseAssetId"
20963
+ });
20964
+ var CompareMode = Object.freeze({
20965
+ /**
20966
+ * Equality (`==`)
20967
+ */
20968
+ EQ: 0,
20969
+ "0": "EQ",
20970
+ /**
20971
+ * Inequality (`!=`)
20972
+ */
20973
+ NE: 1,
20974
+ "1": "NE",
20975
+ /**
20976
+ * Less than (`<`)
20977
+ */
20978
+ LT: 2,
20979
+ "2": "LT",
20980
+ /**
20981
+ * Greater than (`>`)
20982
+ */
20983
+ GT: 3,
20984
+ "3": "GT",
20985
+ /**
20986
+ * Less than or equals (`>=`)
20987
+ */
20988
+ LTE: 4,
20989
+ "4": "LTE",
20990
+ /**
20991
+ * Greater than or equals (`>=`)
20992
+ */
20993
+ GTE: 5,
20994
+ "5": "GTE",
20995
+ /**
20996
+ * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
20997
+ */
20998
+ LZC: 6,
20999
+ "6": "LZC"
21000
+ });
21001
+ var PanicReason = Object.freeze({
21002
+ /**
21003
+ *r" The byte can't be mapped to any known `PanicReason`.
21004
+ */
21005
+ UnknownPanicReason: 0,
21006
+ "0": "UnknownPanicReason",
21007
+ /**
21008
+ *r" Found `RVRT` instruction.
21009
+ */
21010
+ Revert: 1,
21011
+ "1": "Revert",
21012
+ /**
21013
+ *r" Execution ran out of gas.
21014
+ */
21015
+ OutOfGas: 2,
21016
+ "2": "OutOfGas",
21017
+ /**
21018
+ *r" The transaction validity is violated.
21019
+ */
21020
+ TransactionValidity: 3,
21021
+ "3": "TransactionValidity",
21022
+ /**
21023
+ *r" Attempt to write outside interpreter memory boundaries.
21024
+ */
21025
+ MemoryOverflow: 4,
21026
+ "4": "MemoryOverflow",
21027
+ /**
21028
+ *r" Overflow while executing arithmetic operation.
21029
+ *r" These errors are ignored using the WRAPPING flag.
21030
+ */
21031
+ ArithmeticOverflow: 5,
21032
+ "5": "ArithmeticOverflow",
21033
+ /**
21034
+ *r" Designed contract was not found in the storage.
21035
+ */
21036
+ ContractNotFound: 6,
21037
+ "6": "ContractNotFound",
21038
+ /**
21039
+ *r" Memory ownership rules are violated.
21040
+ */
21041
+ MemoryOwnership: 7,
21042
+ "7": "MemoryOwnership",
21043
+ /**
21044
+ *r" The asset ID balance isn't enough for the instruction.
21045
+ */
21046
+ NotEnoughBalance: 8,
21047
+ "8": "NotEnoughBalance",
21048
+ /**
21049
+ *r" The interpreter is expected to be in internal context.
21050
+ */
21051
+ ExpectedInternalContext: 9,
21052
+ "9": "ExpectedInternalContext",
21053
+ /**
21054
+ *r" The queried asset ID was not found in the state.
21055
+ */
21056
+ AssetIdNotFound: 10,
21057
+ "10": "AssetIdNotFound",
21058
+ /**
21059
+ *r" The provided input is not found in the transaction.
21060
+ */
21061
+ InputNotFound: 11,
21062
+ "11": "InputNotFound",
21063
+ /**
21064
+ *r" The provided output is not found in the transaction.
21065
+ */
21066
+ OutputNotFound: 12,
21067
+ "12": "OutputNotFound",
21068
+ /**
21069
+ *r" The provided witness is not found in the transaction.
21070
+ */
21071
+ WitnessNotFound: 13,
21072
+ "13": "WitnessNotFound",
21073
+ /**
21074
+ *r" The transaction maturity is not valid for this request.
21075
+ */
21076
+ TransactionMaturity: 14,
21077
+ "14": "TransactionMaturity",
21078
+ /**
21079
+ *r" The metadata identifier is invalid.
21080
+ */
21081
+ InvalidMetadataIdentifier: 15,
21082
+ "15": "InvalidMetadataIdentifier",
21083
+ /**
21084
+ *r" The call structure is not valid.
21085
+ */
21086
+ MalformedCallStructure: 16,
21087
+ "16": "MalformedCallStructure",
21088
+ /**
21089
+ *r" The provided register does not allow write operations.
21090
+ */
21091
+ ReservedRegisterNotWritable: 17,
21092
+ "17": "ReservedRegisterNotWritable",
21093
+ /**
21094
+ *r" The execution resulted in an erroneous state of the interpreter.
21095
+ */
21096
+ InvalidFlags: 18,
21097
+ "18": "InvalidFlags",
21098
+ /**
21099
+ *r" The provided immediate value is not valid for this instruction.
21100
+ */
21101
+ InvalidImmediateValue: 19,
21102
+ "19": "InvalidImmediateValue",
21103
+ /**
21104
+ *r" The provided transaction input is not of type `Coin`.
21105
+ */
21106
+ ExpectedCoinInput: 20,
21107
+ "20": "ExpectedCoinInput",
21108
+ /**
21109
+ *r" `ECAL` instruction failed.
21110
+ */
21111
+ EcalError: 21,
21112
+ "21": "EcalError",
21113
+ /**
21114
+ *r" Two segments of the interpreter memory should not intersect for write operations.
21115
+ */
21116
+ MemoryWriteOverlap: 22,
21117
+ "22": "MemoryWriteOverlap",
21118
+ /**
21119
+ *r" The requested contract is not listed in the transaction inputs.
21120
+ */
21121
+ ContractNotInInputs: 23,
21122
+ "23": "ContractNotInInputs",
21123
+ /**
21124
+ *r" The internal asset ID balance overflowed with the provided instruction.
21125
+ */
21126
+ InternalBalanceOverflow: 24,
21127
+ "24": "InternalBalanceOverflow",
21128
+ /**
21129
+ *r" The maximum allowed contract size is violated.
21130
+ */
21131
+ ContractMaxSize: 25,
21132
+ "25": "ContractMaxSize",
21133
+ /**
21134
+ *r" This instruction expects the stack area to be unallocated for this call.
21135
+ */
21136
+ ExpectedUnallocatedStack: 26,
21137
+ "26": "ExpectedUnallocatedStack",
21138
+ /**
21139
+ *r" The maximum allowed number of static contracts was reached for this transaction.
21140
+ */
21141
+ MaxStaticContractsReached: 27,
21142
+ "27": "MaxStaticContractsReached",
21143
+ /**
21144
+ *r" The requested transfer amount cannot be zero.
21145
+ */
21146
+ TransferAmountCannotBeZero: 28,
21147
+ "28": "TransferAmountCannotBeZero",
21148
+ /**
21149
+ *r" The provided transaction output should be of type `Variable`.
21150
+ */
21151
+ ExpectedOutputVariable: 29,
21152
+ "29": "ExpectedOutputVariable",
21153
+ /**
21154
+ *r" The expected context of the stack parent is internal.
21155
+ */
21156
+ ExpectedParentInternalContext: 30,
21157
+ "30": "ExpectedParentInternalContext",
21158
+ /**
21159
+ *r" The predicate returned non `1`. The `1` means successful verification
21160
+ *r" of the predicate, all other values means unsuccessful.
21161
+ */
21162
+ PredicateReturnedNonOne: 31,
21163
+ "31": "PredicateReturnedNonOne",
21164
+ /**
21165
+ *r" The contract ID is already deployed and can't be overwritten.
21166
+ */
21167
+ ContractIdAlreadyDeployed: 32,
21168
+ "32": "ContractIdAlreadyDeployed",
21169
+ /**
21170
+ *r" The loaded contract mismatch expectations.
21171
+ */
21172
+ ContractMismatch: 33,
21173
+ "33": "ContractMismatch",
21174
+ /**
21175
+ *r" Attempting to send message data longer than `MAX_MESSAGE_DATA_LENGTH`
21176
+ */
21177
+ MessageDataTooLong: 34,
21178
+ "34": "MessageDataTooLong",
21179
+ /**
21180
+ *r" Mathematically invalid arguments where given to an arithmetic instruction.
21181
+ *r" For instance, division by zero produces this.
21182
+ *r" These errors are ignored using the UNSAFEMATH flag.
21183
+ */
21184
+ ArithmeticError: 35,
21185
+ "35": "ArithmeticError",
21186
+ /**
21187
+ *r" The contract instruction is not allowed in predicates.
21188
+ */
21189
+ ContractInstructionNotAllowed: 36,
21190
+ "36": "ContractInstructionNotAllowed",
21191
+ /**
21192
+ *r" Transfer of zero coins is not allowed.
21193
+ */
21194
+ TransferZeroCoins: 37,
21195
+ "37": "TransferZeroCoins",
21196
+ /**
21197
+ *r" Attempted to execute an invalid instruction
21198
+ */
21199
+ InvalidInstruction: 38,
21200
+ "38": "InvalidInstruction",
21201
+ /**
21202
+ *r" Memory outside $is..$ssp range is not executable
21203
+ */
21204
+ MemoryNotExecutable: 39,
21205
+ "39": "MemoryNotExecutable",
21206
+ /**
21207
+ *r" The policy is not set.
21208
+ */
21209
+ PolicyIsNotSet: 40,
21210
+ "40": "PolicyIsNotSet",
21211
+ /**
21212
+ *r" The policy is not found across policies.
21213
+ */
21214
+ PolicyNotFound: 41,
21215
+ "41": "PolicyNotFound",
21216
+ /**
21217
+ *r" Receipt context is full
21218
+ */
21219
+ TooManyReceipts: 42,
21220
+ "42": "TooManyReceipts",
21221
+ /**
21222
+ *r" Balance of a contract overflowed
21223
+ */
21224
+ BalanceOverflow: 43,
21225
+ "43": "BalanceOverflow",
21226
+ /**
21227
+ *r" Block height value is invalid, typically because it is too large
21228
+ */
21229
+ InvalidBlockHeight: 44,
21230
+ "44": "InvalidBlockHeight",
21231
+ /**
21232
+ *r" Attempt to use sequential memory instructions with too large slot count,
21233
+ *r" typically because it cannot fit into usize
21234
+ */
21235
+ TooManySlots: 45,
21236
+ "45": "TooManySlots",
21237
+ /**
21238
+ *r" Caller of this internal context is also expected to be internal,
21239
+ *r" i.e. $fp->$fp must be non-zero.
21240
+ */
21241
+ ExpectedNestedCaller: 46,
21242
+ "46": "ExpectedNestedCaller",
21243
+ /**
21244
+ *r" During memory growth, the stack overlapped with the heap
21245
+ */
21246
+ MemoryGrowthOverlap: 47,
21247
+ "47": "MemoryGrowthOverlap",
21248
+ /**
21249
+ *r" Attempting to read or write uninitialized memory.
21250
+ *r" Also occurs when boundary crosses from stack to heap.
21251
+ */
21252
+ UninitalizedMemoryAccess: 48,
21253
+ "48": "UninitalizedMemoryAccess",
21254
+ /**
21255
+ *r" Overriding consensus parameters is not allowed.
21256
+ */
21257
+ OverridingConsensusParameters: 49,
21258
+ "49": "OverridingConsensusParameters",
21259
+ /**
21260
+ *r" The storage doesn't know about the hash of the state transition bytecode.
21261
+ */
21262
+ UnknownStateTransactionBytecodeRoot: 50,
21263
+ "50": "UnknownStateTransactionBytecodeRoot",
21264
+ /**
21265
+ *r" Overriding the state transition bytecode is not allowed.
21266
+ */
21267
+ OverridingStateTransactionBytecode: 51,
21268
+ "51": "OverridingStateTransactionBytecode",
21269
+ /**
21270
+ *r" The bytecode is already uploaded and cannot be uploaded again.
21271
+ */
21272
+ BytecodeAlreadyUploaded: 52,
21273
+ "52": "BytecodeAlreadyUploaded",
21274
+ /**
21275
+ *r" The part of the bytecode is not sequentially connected to the previous parts.
21276
+ */
21277
+ ThePartIsNotSequentiallyConnected: 53,
21278
+ "53": "ThePartIsNotSequentiallyConnected",
21279
+ /**
21280
+ *r" The requested blob is not found.
21281
+ */
21282
+ BlobNotFound: 54,
21283
+ "54": "BlobNotFound",
21284
+ /**
21285
+ *r" The blob was already
21286
+ */
21287
+ BlobIdAlreadyUploaded: 55,
21288
+ "55": "BlobIdAlreadyUploaded",
21289
+ /**
21290
+ *r" Active gas costs do not define the cost for this instruction.
21291
+ */
21292
+ GasCostNotDefined: 56,
21293
+ "56": "GasCostNotDefined"
21294
+ });
20924
21295
  var GTFArgs2 = Object.freeze({
20925
21296
  /**
20926
21297
  *r" Set `$rA` to `tx.type`
@@ -21248,317 +21619,6 @@ spurious results.`);
21248
21619
  PolicyMaxFee: 1284,
21249
21620
  "1284": "PolicyMaxFee"
21250
21621
  });
21251
- var PanicReason = Object.freeze({
21252
- /**
21253
- *r" The byte can't be mapped to any known `PanicReason`.
21254
- */
21255
- UnknownPanicReason: 0,
21256
- "0": "UnknownPanicReason",
21257
- /**
21258
- *r" Found `RVRT` instruction.
21259
- */
21260
- Revert: 1,
21261
- "1": "Revert",
21262
- /**
21263
- *r" Execution ran out of gas.
21264
- */
21265
- OutOfGas: 2,
21266
- "2": "OutOfGas",
21267
- /**
21268
- *r" The transaction validity is violated.
21269
- */
21270
- TransactionValidity: 3,
21271
- "3": "TransactionValidity",
21272
- /**
21273
- *r" Attempt to write outside interpreter memory boundaries.
21274
- */
21275
- MemoryOverflow: 4,
21276
- "4": "MemoryOverflow",
21277
- /**
21278
- *r" Overflow while executing arithmetic operation.
21279
- *r" These errors are ignored using the WRAPPING flag.
21280
- */
21281
- ArithmeticOverflow: 5,
21282
- "5": "ArithmeticOverflow",
21283
- /**
21284
- *r" Designed contract was not found in the storage.
21285
- */
21286
- ContractNotFound: 6,
21287
- "6": "ContractNotFound",
21288
- /**
21289
- *r" Memory ownership rules are violated.
21290
- */
21291
- MemoryOwnership: 7,
21292
- "7": "MemoryOwnership",
21293
- /**
21294
- *r" The asset ID balance isn't enough for the instruction.
21295
- */
21296
- NotEnoughBalance: 8,
21297
- "8": "NotEnoughBalance",
21298
- /**
21299
- *r" The interpreter is expected to be in internal context.
21300
- */
21301
- ExpectedInternalContext: 9,
21302
- "9": "ExpectedInternalContext",
21303
- /**
21304
- *r" The queried asset ID was not found in the state.
21305
- */
21306
- AssetIdNotFound: 10,
21307
- "10": "AssetIdNotFound",
21308
- /**
21309
- *r" The provided input is not found in the transaction.
21310
- */
21311
- InputNotFound: 11,
21312
- "11": "InputNotFound",
21313
- /**
21314
- *r" The provided output is not found in the transaction.
21315
- */
21316
- OutputNotFound: 12,
21317
- "12": "OutputNotFound",
21318
- /**
21319
- *r" The provided witness is not found in the transaction.
21320
- */
21321
- WitnessNotFound: 13,
21322
- "13": "WitnessNotFound",
21323
- /**
21324
- *r" The transaction maturity is not valid for this request.
21325
- */
21326
- TransactionMaturity: 14,
21327
- "14": "TransactionMaturity",
21328
- /**
21329
- *r" The metadata identifier is invalid.
21330
- */
21331
- InvalidMetadataIdentifier: 15,
21332
- "15": "InvalidMetadataIdentifier",
21333
- /**
21334
- *r" The call structure is not valid.
21335
- */
21336
- MalformedCallStructure: 16,
21337
- "16": "MalformedCallStructure",
21338
- /**
21339
- *r" The provided register does not allow write operations.
21340
- */
21341
- ReservedRegisterNotWritable: 17,
21342
- "17": "ReservedRegisterNotWritable",
21343
- /**
21344
- *r" The execution resulted in an erroneous state of the interpreter.
21345
- */
21346
- InvalidFlags: 18,
21347
- "18": "InvalidFlags",
21348
- /**
21349
- *r" The provided immediate value is not valid for this instruction.
21350
- */
21351
- InvalidImmediateValue: 19,
21352
- "19": "InvalidImmediateValue",
21353
- /**
21354
- *r" The provided transaction input is not of type `Coin`.
21355
- */
21356
- ExpectedCoinInput: 20,
21357
- "20": "ExpectedCoinInput",
21358
- /**
21359
- *r" `ECAL` instruction failed.
21360
- */
21361
- EcalError: 21,
21362
- "21": "EcalError",
21363
- /**
21364
- *r" Two segments of the interpreter memory should not intersect for write operations.
21365
- */
21366
- MemoryWriteOverlap: 22,
21367
- "22": "MemoryWriteOverlap",
21368
- /**
21369
- *r" The requested contract is not listed in the transaction inputs.
21370
- */
21371
- ContractNotInInputs: 23,
21372
- "23": "ContractNotInInputs",
21373
- /**
21374
- *r" The internal asset ID balance overflowed with the provided instruction.
21375
- */
21376
- InternalBalanceOverflow: 24,
21377
- "24": "InternalBalanceOverflow",
21378
- /**
21379
- *r" The maximum allowed contract size is violated.
21380
- */
21381
- ContractMaxSize: 25,
21382
- "25": "ContractMaxSize",
21383
- /**
21384
- *r" This instruction expects the stack area to be unallocated for this call.
21385
- */
21386
- ExpectedUnallocatedStack: 26,
21387
- "26": "ExpectedUnallocatedStack",
21388
- /**
21389
- *r" The maximum allowed number of static contracts was reached for this transaction.
21390
- */
21391
- MaxStaticContractsReached: 27,
21392
- "27": "MaxStaticContractsReached",
21393
- /**
21394
- *r" The requested transfer amount cannot be zero.
21395
- */
21396
- TransferAmountCannotBeZero: 28,
21397
- "28": "TransferAmountCannotBeZero",
21398
- /**
21399
- *r" The provided transaction output should be of type `Variable`.
21400
- */
21401
- ExpectedOutputVariable: 29,
21402
- "29": "ExpectedOutputVariable",
21403
- /**
21404
- *r" The expected context of the stack parent is internal.
21405
- */
21406
- ExpectedParentInternalContext: 30,
21407
- "30": "ExpectedParentInternalContext",
21408
- /**
21409
- *r" The predicate returned non `1`. The `1` means successful verification
21410
- *r" of the predicate, all other values means unsuccessful.
21411
- */
21412
- PredicateReturnedNonOne: 31,
21413
- "31": "PredicateReturnedNonOne",
21414
- /**
21415
- *r" The contract ID is already deployed and can't be overwritten.
21416
- */
21417
- ContractIdAlreadyDeployed: 32,
21418
- "32": "ContractIdAlreadyDeployed",
21419
- /**
21420
- *r" The loaded contract mismatch expectations.
21421
- */
21422
- ContractMismatch: 33,
21423
- "33": "ContractMismatch",
21424
- /**
21425
- *r" Attempting to send message data longer than `MAX_MESSAGE_DATA_LENGTH`
21426
- */
21427
- MessageDataTooLong: 34,
21428
- "34": "MessageDataTooLong",
21429
- /**
21430
- *r" Mathematically invalid arguments where given to an arithmetic instruction.
21431
- *r" For instance, division by zero produces this.
21432
- *r" These errors are ignored using the UNSAFEMATH flag.
21433
- */
21434
- ArithmeticError: 35,
21435
- "35": "ArithmeticError",
21436
- /**
21437
- *r" The contract instruction is not allowed in predicates.
21438
- */
21439
- ContractInstructionNotAllowed: 36,
21440
- "36": "ContractInstructionNotAllowed",
21441
- /**
21442
- *r" Transfer of zero coins is not allowed.
21443
- */
21444
- TransferZeroCoins: 37,
21445
- "37": "TransferZeroCoins",
21446
- /**
21447
- *r" Attempted to execute an invalid instruction
21448
- */
21449
- InvalidInstruction: 38,
21450
- "38": "InvalidInstruction",
21451
- /**
21452
- *r" Memory outside $is..$ssp range is not executable
21453
- */
21454
- MemoryNotExecutable: 39,
21455
- "39": "MemoryNotExecutable",
21456
- /**
21457
- *r" The policy is not set.
21458
- */
21459
- PolicyIsNotSet: 40,
21460
- "40": "PolicyIsNotSet",
21461
- /**
21462
- *r" The policy is not found across policies.
21463
- */
21464
- PolicyNotFound: 41,
21465
- "41": "PolicyNotFound",
21466
- /**
21467
- *r" Receipt context is full
21468
- */
21469
- TooManyReceipts: 42,
21470
- "42": "TooManyReceipts",
21471
- /**
21472
- *r" Balance of a contract overflowed
21473
- */
21474
- BalanceOverflow: 43,
21475
- "43": "BalanceOverflow",
21476
- /**
21477
- *r" Block height value is invalid, typically because it is too large
21478
- */
21479
- InvalidBlockHeight: 44,
21480
- "44": "InvalidBlockHeight",
21481
- /**
21482
- *r" Attempt to use sequential memory instructions with too large slot count,
21483
- *r" typically because it cannot fit into usize
21484
- */
21485
- TooManySlots: 45,
21486
- "45": "TooManySlots",
21487
- /**
21488
- *r" Caller of this internal context is also expected to be internal,
21489
- *r" i.e. $fp->$fp must be non-zero.
21490
- */
21491
- ExpectedNestedCaller: 46,
21492
- "46": "ExpectedNestedCaller",
21493
- /**
21494
- *r" During memory growth, the stack overlapped with the heap
21495
- */
21496
- MemoryGrowthOverlap: 47,
21497
- "47": "MemoryGrowthOverlap",
21498
- /**
21499
- *r" Attempting to read or write uninitialized memory.
21500
- *r" Also occurs when boundary crosses from stack to heap.
21501
- */
21502
- UninitalizedMemoryAccess: 48,
21503
- "48": "UninitalizedMemoryAccess",
21504
- /**
21505
- *r" Overriding consensus parameters is not allowed.
21506
- */
21507
- OverridingConsensusParameters: 49,
21508
- "49": "OverridingConsensusParameters",
21509
- /**
21510
- *r" The storage doesn't know about the hash of the state transition bytecode.
21511
- */
21512
- UnknownStateTransactionBytecodeRoot: 50,
21513
- "50": "UnknownStateTransactionBytecodeRoot",
21514
- /**
21515
- *r" Overriding the state transition bytecode is not allowed.
21516
- */
21517
- OverridingStateTransactionBytecode: 51,
21518
- "51": "OverridingStateTransactionBytecode",
21519
- /**
21520
- *r" The bytecode is already uploaded and cannot be uploaded again.
21521
- */
21522
- BytecodeAlreadyUploaded: 52,
21523
- "52": "BytecodeAlreadyUploaded",
21524
- /**
21525
- *r" The part of the bytecode is not sequentially connected to the previous parts.
21526
- */
21527
- ThePartIsNotSequentiallyConnected: 53,
21528
- "53": "ThePartIsNotSequentiallyConnected"
21529
- });
21530
- var GMArgs = Object.freeze({
21531
- /**
21532
- *r" Get if caller is external.
21533
- */
21534
- IsCallerExternal: 1,
21535
- "1": "IsCallerExternal",
21536
- /**
21537
- *r" Get caller's contract ID.
21538
- */
21539
- GetCaller: 2,
21540
- "2": "GetCaller",
21541
- /**
21542
- *r" Get index of current predicate.
21543
- */
21544
- GetVerifyingPredicate: 3,
21545
- "3": "GetVerifyingPredicate",
21546
- /**
21547
- *r" Get the Chain ID this VM is operating within
21548
- */
21549
- GetChainId: 4,
21550
- "4": "GetChainId",
21551
- /**
21552
- *r" Get memory address where the transaction is located
21553
- */
21554
- TxStart: 5,
21555
- "5": "TxStart",
21556
- /**
21557
- *r" Get memory address of base asset ID
21558
- */
21559
- BaseAssetId: 6,
21560
- "6": "BaseAssetId"
21561
- });
21562
21622
  var MathOp = Object.freeze({
21563
21623
  /**
21564
21624
  * Add
@@ -21601,43 +21661,6 @@ spurious results.`);
21601
21661
  SHR: 7,
21602
21662
  "7": "SHR"
21603
21663
  });
21604
- var CompareMode = Object.freeze({
21605
- /**
21606
- * Equality (`==`)
21607
- */
21608
- EQ: 0,
21609
- "0": "EQ",
21610
- /**
21611
- * Inequality (`!=`)
21612
- */
21613
- NE: 1,
21614
- "1": "NE",
21615
- /**
21616
- * Less than (`<`)
21617
- */
21618
- LT: 2,
21619
- "2": "LT",
21620
- /**
21621
- * Greater than (`>`)
21622
- */
21623
- GT: 3,
21624
- "3": "GT",
21625
- /**
21626
- * Less than or equals (`>=`)
21627
- */
21628
- LTE: 4,
21629
- "4": "LTE",
21630
- /**
21631
- * Greater than or equals (`>=`)
21632
- */
21633
- GTE: 5,
21634
- "5": "GTE",
21635
- /**
21636
- * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
21637
- */
21638
- LZC: 6,
21639
- "6": "LZC"
21640
- });
21641
21664
  var ADDFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21642
21665
  }, unregister: () => {
21643
21666
  } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_add_free(ptr >>> 0));
@@ -21951,65 +21974,177 @@ spurious results.`);
21951
21974
  const ret3 = wasm$1.add_rc(this.__wbg_ptr);
21952
21975
  return RegId.__wrap(ret3);
21953
21976
  }
21954
- };
21955
- var BHEIFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21956
- }, unregister: () => {
21957
- } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bhei_free(ptr >>> 0));
21958
- var BHEI = class {
21959
- __destroy_into_raw() {
21960
- const ptr = this.__wbg_ptr;
21961
- this.__wbg_ptr = 0;
21962
- BHEIFinalization.unregister(this);
21963
- return ptr;
21964
- }
21965
- free() {
21966
- const ptr = this.__destroy_into_raw();
21967
- wasm$1.__wbg_bhei_free(ptr);
21968
- }
21977
+ };
21978
+ var BHEIFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21979
+ }, unregister: () => {
21980
+ } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bhei_free(ptr >>> 0));
21981
+ var BHEI = class {
21982
+ __destroy_into_raw() {
21983
+ const ptr = this.__wbg_ptr;
21984
+ this.__wbg_ptr = 0;
21985
+ BHEIFinalization.unregister(this);
21986
+ return ptr;
21987
+ }
21988
+ free() {
21989
+ const ptr = this.__destroy_into_raw();
21990
+ wasm$1.__wbg_bhei_free(ptr);
21991
+ }
21992
+ /**
21993
+ * Construct the instruction from its parts.
21994
+ * @param {RegId} dst
21995
+ */
21996
+ constructor(dst) {
21997
+ _assertClass(dst, RegId);
21998
+ var ptr0 = dst.__destroy_into_raw();
21999
+ const ret3 = wasm$1.aloc_new_typescript(ptr0);
22000
+ this.__wbg_ptr = ret3 >>> 0;
22001
+ return this;
22002
+ }
22003
+ /**
22004
+ * Access the ID for register A.
22005
+ * @returns {RegId}
22006
+ */
22007
+ ra() {
22008
+ const ret3 = wasm$1.aloc_ra(this.__wbg_ptr);
22009
+ return RegId.__wrap(ret3);
22010
+ }
22011
+ };
22012
+ var BHSHFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
22013
+ }, unregister: () => {
22014
+ } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bhsh_free(ptr >>> 0));
22015
+ var BHSH = class {
22016
+ __destroy_into_raw() {
22017
+ const ptr = this.__wbg_ptr;
22018
+ this.__wbg_ptr = 0;
22019
+ BHSHFinalization.unregister(this);
22020
+ return ptr;
22021
+ }
22022
+ free() {
22023
+ const ptr = this.__destroy_into_raw();
22024
+ wasm$1.__wbg_bhsh_free(ptr);
22025
+ }
22026
+ /**
22027
+ * Construct the instruction from its parts.
22028
+ * @param {RegId} dst
22029
+ * @param {RegId} heigth
22030
+ */
22031
+ constructor(dst, heigth) {
22032
+ _assertClass(dst, RegId);
22033
+ var ptr0 = dst.__destroy_into_raw();
22034
+ _assertClass(heigth, RegId);
22035
+ var ptr1 = heigth.__destroy_into_raw();
22036
+ const ret3 = wasm$1.bhsh_new_typescript(ptr0, ptr1);
22037
+ this.__wbg_ptr = ret3 >>> 0;
22038
+ return this;
22039
+ }
22040
+ /**
22041
+ * Access the ID for register A.
22042
+ * @returns {RegId}
22043
+ */
22044
+ ra() {
22045
+ const ret3 = wasm$1.add_ra(this.__wbg_ptr);
22046
+ return RegId.__wrap(ret3);
22047
+ }
22048
+ /**
22049
+ * Access the ID for register B.
22050
+ * @returns {RegId}
22051
+ */
22052
+ rb() {
22053
+ const ret3 = wasm$1.add_rb(this.__wbg_ptr);
22054
+ return RegId.__wrap(ret3);
22055
+ }
22056
+ };
22057
+ var BLDDFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
22058
+ }, unregister: () => {
22059
+ } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bldd_free(ptr >>> 0));
22060
+ var BLDD = class {
22061
+ __destroy_into_raw() {
22062
+ const ptr = this.__wbg_ptr;
22063
+ this.__wbg_ptr = 0;
22064
+ BLDDFinalization.unregister(this);
22065
+ return ptr;
22066
+ }
22067
+ free() {
22068
+ const ptr = this.__destroy_into_raw();
22069
+ wasm$1.__wbg_bldd_free(ptr);
22070
+ }
22071
+ /**
22072
+ * Construct the instruction from its parts.
22073
+ * @param {RegId} dst_ptr
22074
+ * @param {RegId} blob_id_ptr
22075
+ * @param {RegId} offset
22076
+ * @param {RegId} len
22077
+ */
22078
+ constructor(dst_ptr, blob_id_ptr, offset, len) {
22079
+ _assertClass(dst_ptr, RegId);
22080
+ var ptr0 = dst_ptr.__destroy_into_raw();
22081
+ _assertClass(blob_id_ptr, RegId);
22082
+ var ptr1 = blob_id_ptr.__destroy_into_raw();
22083
+ _assertClass(offset, RegId);
22084
+ var ptr2 = offset.__destroy_into_raw();
22085
+ _assertClass(len, RegId);
22086
+ var ptr3 = len.__destroy_into_raw();
22087
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
22088
+ this.__wbg_ptr = ret3 >>> 0;
22089
+ return this;
22090
+ }
22091
+ /**
22092
+ * Access the ID for register A.
22093
+ * @returns {RegId}
22094
+ */
22095
+ ra() {
22096
+ const ret3 = wasm$1.add_ra(this.__wbg_ptr);
22097
+ return RegId.__wrap(ret3);
22098
+ }
22099
+ /**
22100
+ * Access the ID for register B.
22101
+ * @returns {RegId}
22102
+ */
22103
+ rb() {
22104
+ const ret3 = wasm$1.add_rb(this.__wbg_ptr);
22105
+ return RegId.__wrap(ret3);
22106
+ }
22107
+ /**
22108
+ * Access the ID for register C.
22109
+ * @returns {RegId}
22110
+ */
22111
+ rc() {
22112
+ const ret3 = wasm$1.add_rc(this.__wbg_ptr);
22113
+ return RegId.__wrap(ret3);
22114
+ }
21969
22115
  /**
21970
- * Construct the instruction from its parts.
21971
- * @param {RegId} dst
21972
- */
21973
- constructor(dst) {
21974
- _assertClass(dst, RegId);
21975
- var ptr0 = dst.__destroy_into_raw();
21976
- const ret3 = wasm$1.aloc_new_typescript(ptr0);
21977
- this.__wbg_ptr = ret3 >>> 0;
21978
- return this;
21979
- }
21980
- /**
21981
- * Access the ID for register A.
22116
+ * Access the ID for register D.
21982
22117
  * @returns {RegId}
21983
22118
  */
21984
- ra() {
21985
- const ret3 = wasm$1.aloc_ra(this.__wbg_ptr);
22119
+ rd() {
22120
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
21986
22121
  return RegId.__wrap(ret3);
21987
22122
  }
21988
22123
  };
21989
- var BHSHFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
22124
+ var BSIZFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21990
22125
  }, unregister: () => {
21991
- } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bhsh_free(ptr >>> 0));
21992
- var BHSH = class {
22126
+ } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_bsiz_free(ptr >>> 0));
22127
+ var BSIZ = class {
21993
22128
  __destroy_into_raw() {
21994
22129
  const ptr = this.__wbg_ptr;
21995
22130
  this.__wbg_ptr = 0;
21996
- BHSHFinalization.unregister(this);
22131
+ BSIZFinalization.unregister(this);
21997
22132
  return ptr;
21998
22133
  }
21999
22134
  free() {
22000
22135
  const ptr = this.__destroy_into_raw();
22001
- wasm$1.__wbg_bhsh_free(ptr);
22136
+ wasm$1.__wbg_bsiz_free(ptr);
22002
22137
  }
22003
22138
  /**
22004
22139
  * Construct the instruction from its parts.
22005
22140
  * @param {RegId} dst
22006
- * @param {RegId} heigth
22141
+ * @param {RegId} blob_id_ptr
22007
22142
  */
22008
- constructor(dst, heigth) {
22143
+ constructor(dst, blob_id_ptr) {
22009
22144
  _assertClass(dst, RegId);
22010
22145
  var ptr0 = dst.__destroy_into_raw();
22011
- _assertClass(heigth, RegId);
22012
- var ptr1 = heigth.__destroy_into_raw();
22146
+ _assertClass(blob_id_ptr, RegId);
22147
+ var ptr1 = blob_id_ptr.__destroy_into_raw();
22013
22148
  const ret3 = wasm$1.bhsh_new_typescript(ptr0, ptr1);
22014
22149
  this.__wbg_ptr = ret3 >>> 0;
22015
22150
  return this;
@@ -22106,7 +22241,7 @@ spurious results.`);
22106
22241
  var ptr2 = asset_id_addr.__destroy_into_raw();
22107
22242
  _assertClass(fwd_gas, RegId);
22108
22243
  var ptr3 = fwd_gas.__destroy_into_raw();
22109
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
22244
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
22110
22245
  this.__wbg_ptr = ret3 >>> 0;
22111
22246
  return this;
22112
22247
  }
@@ -22139,7 +22274,7 @@ spurious results.`);
22139
22274
  * @returns {RegId}
22140
22275
  */
22141
22276
  rd() {
22142
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
22277
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
22143
22278
  return RegId.__wrap(ret3);
22144
22279
  }
22145
22280
  };
@@ -22207,7 +22342,7 @@ spurious results.`);
22207
22342
  var ptr2 = offset.__destroy_into_raw();
22208
22343
  _assertClass(len, RegId);
22209
22344
  var ptr3 = len.__destroy_into_raw();
22210
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
22345
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
22211
22346
  this.__wbg_ptr = ret3 >>> 0;
22212
22347
  return this;
22213
22348
  }
@@ -22240,7 +22375,7 @@ spurious results.`);
22240
22375
  * @returns {RegId}
22241
22376
  */
22242
22377
  rd() {
22243
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
22378
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
22244
22379
  return RegId.__wrap(ret3);
22245
22380
  }
22246
22381
  };
@@ -22714,7 +22849,7 @@ spurious results.`);
22714
22849
  var ptr2 = c.__destroy_into_raw();
22715
22850
  _assertClass(d, RegId);
22716
22851
  var ptr3 = d.__destroy_into_raw();
22717
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
22852
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
22718
22853
  this.__wbg_ptr = ret3 >>> 0;
22719
22854
  return this;
22720
22855
  }
@@ -22747,7 +22882,7 @@ spurious results.`);
22747
22882
  * @returns {RegId}
22748
22883
  */
22749
22884
  rd() {
22750
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
22885
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
22751
22886
  return RegId.__wrap(ret3);
22752
22887
  }
22753
22888
  };
@@ -22881,16 +23016,19 @@ spurious results.`);
22881
23016
  * Construct the instruction from its parts.
22882
23017
  * @param {RegId} pub_key_addr
22883
23018
  * @param {RegId} sig_addr
22884
- * @param {RegId} msg_hash_addr
23019
+ * @param {RegId} msg_addr
23020
+ * @param {RegId} msg_len
22885
23021
  */
22886
- constructor(pub_key_addr, sig_addr, msg_hash_addr) {
23022
+ constructor(pub_key_addr, sig_addr, msg_addr, msg_len) {
22887
23023
  _assertClass(pub_key_addr, RegId);
22888
23024
  var ptr0 = pub_key_addr.__destroy_into_raw();
22889
23025
  _assertClass(sig_addr, RegId);
22890
23026
  var ptr1 = sig_addr.__destroy_into_raw();
22891
- _assertClass(msg_hash_addr, RegId);
22892
- var ptr2 = msg_hash_addr.__destroy_into_raw();
22893
- const ret3 = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);
23027
+ _assertClass(msg_addr, RegId);
23028
+ var ptr2 = msg_addr.__destroy_into_raw();
23029
+ _assertClass(msg_len, RegId);
23030
+ var ptr3 = msg_len.__destroy_into_raw();
23031
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
22894
23032
  this.__wbg_ptr = ret3 >>> 0;
22895
23033
  return this;
22896
23034
  }
@@ -22918,6 +23056,14 @@ spurious results.`);
22918
23056
  const ret3 = wasm$1.add_rc(this.__wbg_ptr);
22919
23057
  return RegId.__wrap(ret3);
22920
23058
  }
23059
+ /**
23060
+ * Access the ID for register D.
23061
+ * @returns {RegId}
23062
+ */
23063
+ rd() {
23064
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
23065
+ return RegId.__wrap(ret3);
23066
+ }
22921
23067
  };
22922
23068
  var EQFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
22923
23069
  }, unregister: () => {
@@ -23698,7 +23844,7 @@ spurious results.`);
23698
23844
  var ptr2 = dynamic.__destroy_into_raw();
23699
23845
  _assertClass(fixed, Imm06);
23700
23846
  var ptr3 = fixed.__destroy_into_raw();
23701
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
23847
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
23702
23848
  this.__wbg_ptr = ret3 >>> 0;
23703
23849
  return this;
23704
23850
  }
@@ -23765,7 +23911,7 @@ spurious results.`);
23765
23911
  var ptr2 = dynamic.__destroy_into_raw();
23766
23912
  _assertClass(fixed, Imm06);
23767
23913
  var ptr3 = fixed.__destroy_into_raw();
23768
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
23914
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
23769
23915
  this.__wbg_ptr = ret3 >>> 0;
23770
23916
  return this;
23771
23917
  }
@@ -24146,15 +24292,18 @@ spurious results.`);
24146
24292
  * @param {RegId} contract_id_addr
24147
24293
  * @param {RegId} offset
24148
24294
  * @param {RegId} len
24295
+ * @param {Imm06} mode
24149
24296
  */
24150
- constructor(contract_id_addr, offset, len) {
24297
+ constructor(contract_id_addr, offset, len, mode) {
24151
24298
  _assertClass(contract_id_addr, RegId);
24152
24299
  var ptr0 = contract_id_addr.__destroy_into_raw();
24153
24300
  _assertClass(offset, RegId);
24154
24301
  var ptr1 = offset.__destroy_into_raw();
24155
24302
  _assertClass(len, RegId);
24156
24303
  var ptr2 = len.__destroy_into_raw();
24157
- const ret3 = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);
24304
+ _assertClass(mode, Imm06);
24305
+ var ptr3 = mode.__destroy_into_raw();
24306
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
24158
24307
  this.__wbg_ptr = ret3 >>> 0;
24159
24308
  return this;
24160
24309
  }
@@ -24182,6 +24331,14 @@ spurious results.`);
24182
24331
  const ret3 = wasm$1.add_rc(this.__wbg_ptr);
24183
24332
  return RegId.__wrap(ret3);
24184
24333
  }
24334
+ /**
24335
+ * Access the 6-bit immediate value.
24336
+ * @returns {Imm06}
24337
+ */
24338
+ imm06() {
24339
+ const ret3 = wasm$1.jneb_imm06(this.__wbg_ptr);
24340
+ return Imm06.__wrap(ret3);
24341
+ }
24185
24342
  };
24186
24343
  var LOGFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
24187
24344
  }, unregister: () => {
@@ -24213,7 +24370,7 @@ spurious results.`);
24213
24370
  var ptr2 = c.__destroy_into_raw();
24214
24371
  _assertClass(d, RegId);
24215
24372
  var ptr3 = d.__destroy_into_raw();
24216
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
24373
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
24217
24374
  this.__wbg_ptr = ret3 >>> 0;
24218
24375
  return this;
24219
24376
  }
@@ -24246,7 +24403,7 @@ spurious results.`);
24246
24403
  * @returns {RegId}
24247
24404
  */
24248
24405
  rd() {
24249
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
24406
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
24250
24407
  return RegId.__wrap(ret3);
24251
24408
  }
24252
24409
  };
@@ -24280,7 +24437,7 @@ spurious results.`);
24280
24437
  var ptr2 = addr.__destroy_into_raw();
24281
24438
  _assertClass(len, RegId);
24282
24439
  var ptr3 = len.__destroy_into_raw();
24283
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
24440
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
24284
24441
  this.__wbg_ptr = ret3 >>> 0;
24285
24442
  return this;
24286
24443
  }
@@ -24313,7 +24470,7 @@ spurious results.`);
24313
24470
  * @returns {RegId}
24314
24471
  */
24315
24472
  rd() {
24316
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
24473
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
24317
24474
  return RegId.__wrap(ret3);
24318
24475
  }
24319
24476
  };
@@ -24661,7 +24818,7 @@ spurious results.`);
24661
24818
  var ptr2 = rhs_addr.__destroy_into_raw();
24662
24819
  _assertClass(len, RegId);
24663
24820
  var ptr3 = len.__destroy_into_raw();
24664
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
24821
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
24665
24822
  this.__wbg_ptr = ret3 >>> 0;
24666
24823
  return this;
24667
24824
  }
@@ -24694,7 +24851,7 @@ spurious results.`);
24694
24851
  * @returns {RegId}
24695
24852
  */
24696
24853
  rd() {
24697
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
24854
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
24698
24855
  return RegId.__wrap(ret3);
24699
24856
  }
24700
24857
  };
@@ -24773,7 +24930,7 @@ spurious results.`);
24773
24930
  var ptr2 = mul_rhs.__destroy_into_raw();
24774
24931
  _assertClass(divisor, RegId);
24775
24932
  var ptr3 = divisor.__destroy_into_raw();
24776
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
24933
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
24777
24934
  this.__wbg_ptr = ret3 >>> 0;
24778
24935
  return this;
24779
24936
  }
@@ -24806,7 +24963,7 @@ spurious results.`);
24806
24963
  * @returns {RegId}
24807
24964
  */
24808
24965
  rd() {
24809
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
24966
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
24810
24967
  return RegId.__wrap(ret3);
24811
24968
  }
24812
24969
  };
@@ -26297,7 +26454,7 @@ spurious results.`);
26297
26454
  var ptr2 = data_len.__destroy_into_raw();
26298
26455
  _assertClass(coins, RegId);
26299
26456
  var ptr3 = coins.__destroy_into_raw();
26300
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
26457
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
26301
26458
  this.__wbg_ptr = ret3 >>> 0;
26302
26459
  return this;
26303
26460
  }
@@ -26330,7 +26487,7 @@ spurious results.`);
26330
26487
  * @returns {RegId}
26331
26488
  */
26332
26489
  rd() {
26333
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
26490
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
26334
26491
  return RegId.__wrap(ret3);
26335
26492
  }
26336
26493
  };
@@ -26532,7 +26689,7 @@ spurious results.`);
26532
26689
  var ptr2 = key_addr.__destroy_into_raw();
26533
26690
  _assertClass(lenq, RegId);
26534
26691
  var ptr3 = lenq.__destroy_into_raw();
26535
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
26692
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
26536
26693
  this.__wbg_ptr = ret3 >>> 0;
26537
26694
  return this;
26538
26695
  }
@@ -26565,7 +26722,7 @@ spurious results.`);
26565
26722
  * @returns {RegId}
26566
26723
  */
26567
26724
  rd() {
26568
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
26725
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
26569
26726
  return RegId.__wrap(ret3);
26570
26727
  }
26571
26728
  };
@@ -26823,7 +26980,7 @@ spurious results.`);
26823
26980
  var ptr2 = src_addr.__destroy_into_raw();
26824
26981
  _assertClass(lenq, RegId);
26825
26982
  var ptr3 = lenq.__destroy_into_raw();
26826
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
26983
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
26827
26984
  this.__wbg_ptr = ret3 >>> 0;
26828
26985
  return this;
26829
26986
  }
@@ -26856,7 +27013,7 @@ spurious results.`);
26856
27013
  * @returns {RegId}
26857
27014
  */
26858
27015
  rd() {
26859
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27016
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
26860
27017
  return RegId.__wrap(ret3);
26861
27018
  }
26862
27019
  };
@@ -26991,7 +27148,7 @@ spurious results.`);
26991
27148
  var ptr2 = amount.__destroy_into_raw();
26992
27149
  _assertClass(asset_id_addr, RegId);
26993
27150
  var ptr3 = asset_id_addr.__destroy_into_raw();
26994
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
27151
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
26995
27152
  this.__wbg_ptr = ret3 >>> 0;
26996
27153
  return this;
26997
27154
  }
@@ -27024,7 +27181,7 @@ spurious results.`);
27024
27181
  * @returns {RegId}
27025
27182
  */
27026
27183
  rd() {
27027
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27184
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27028
27185
  return RegId.__wrap(ret3);
27029
27186
  }
27030
27187
  };
@@ -27058,7 +27215,7 @@ spurious results.`);
27058
27215
  var ptr2 = add_rhs.__destroy_into_raw();
27059
27216
  _assertClass(modulo, RegId);
27060
27217
  var ptr3 = modulo.__destroy_into_raw();
27061
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
27218
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
27062
27219
  this.__wbg_ptr = ret3 >>> 0;
27063
27220
  return this;
27064
27221
  }
@@ -27091,7 +27248,7 @@ spurious results.`);
27091
27248
  * @returns {RegId}
27092
27249
  */
27093
27250
  rd() {
27094
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27251
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27095
27252
  return RegId.__wrap(ret3);
27096
27253
  }
27097
27254
  };
@@ -27313,7 +27470,7 @@ spurious results.`);
27313
27470
  var ptr2 = mul_rhs.__destroy_into_raw();
27314
27471
  _assertClass(divisor, RegId);
27315
27472
  var ptr3 = divisor.__destroy_into_raw();
27316
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
27473
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
27317
27474
  this.__wbg_ptr = ret3 >>> 0;
27318
27475
  return this;
27319
27476
  }
@@ -27346,7 +27503,7 @@ spurious results.`);
27346
27503
  * @returns {RegId}
27347
27504
  */
27348
27505
  rd() {
27349
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27506
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27350
27507
  return RegId.__wrap(ret3);
27351
27508
  }
27352
27509
  };
@@ -27474,7 +27631,7 @@ spurious results.`);
27474
27631
  var ptr2 = mul_rhs.__destroy_into_raw();
27475
27632
  _assertClass(modulo, RegId);
27476
27633
  var ptr3 = modulo.__destroy_into_raw();
27477
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
27634
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
27478
27635
  this.__wbg_ptr = ret3 >>> 0;
27479
27636
  return this;
27480
27637
  }
@@ -27507,7 +27664,7 @@ spurious results.`);
27507
27664
  * @returns {RegId}
27508
27665
  */
27509
27666
  rd() {
27510
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27667
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27511
27668
  return RegId.__wrap(ret3);
27512
27669
  }
27513
27670
  };
@@ -27635,7 +27792,7 @@ spurious results.`);
27635
27792
  var ptr2 = add_rhs.__destroy_into_raw();
27636
27793
  _assertClass(modulo, RegId);
27637
27794
  var ptr3 = modulo.__destroy_into_raw();
27638
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
27795
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
27639
27796
  this.__wbg_ptr = ret3 >>> 0;
27640
27797
  return this;
27641
27798
  }
@@ -27668,7 +27825,7 @@ spurious results.`);
27668
27825
  * @returns {RegId}
27669
27826
  */
27670
27827
  rd() {
27671
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
27828
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27672
27829
  return RegId.__wrap(ret3);
27673
27830
  }
27674
27831
  };
@@ -27890,7 +28047,7 @@ spurious results.`);
27890
28047
  var ptr2 = mul_rhs.__destroy_into_raw();
27891
28048
  _assertClass(divisor, RegId);
27892
28049
  var ptr3 = divisor.__destroy_into_raw();
27893
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
28050
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
27894
28051
  this.__wbg_ptr = ret3 >>> 0;
27895
28052
  return this;
27896
28053
  }
@@ -27923,7 +28080,7 @@ spurious results.`);
27923
28080
  * @returns {RegId}
27924
28081
  */
27925
28082
  rd() {
27926
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
28083
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
27927
28084
  return RegId.__wrap(ret3);
27928
28085
  }
27929
28086
  };
@@ -28051,7 +28208,7 @@ spurious results.`);
28051
28208
  var ptr2 = mul_rhs.__destroy_into_raw();
28052
28209
  _assertClass(modulo, RegId);
28053
28210
  var ptr3 = modulo.__destroy_into_raw();
28054
- const ret3 = wasm$1.call_new_typescript(ptr0, ptr1, ptr2, ptr3);
28211
+ const ret3 = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);
28055
28212
  this.__wbg_ptr = ret3 >>> 0;
28056
28213
  return this;
28057
28214
  }
@@ -28084,7 +28241,7 @@ spurious results.`);
28084
28241
  * @returns {RegId}
28085
28242
  */
28086
28243
  rd() {
28087
- const ret3 = wasm$1.call_rd(this.__wbg_ptr);
28244
+ const ret3 = wasm$1.bldd_rd(this.__wbg_ptr);
28088
28245
  return RegId.__wrap(ret3);
28089
28246
  }
28090
28247
  };
@@ -28380,7 +28537,7 @@ spurious results.`);
28380
28537
  }
28381
28538
  }
28382
28539
  function wasm(imports) {
28383
- return _loadWasmModule(1, null, "AGFzbQEAAAABQAtgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38Bf2AAAX9gAn9/AGABfwBgBX9/f39/AX9gA39/fwBgAABgAn5/AX8CGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cABQP7AfkBAQMKBgEFBQUBBQEBAQEBAQECBQICAQEDAgICAgUCAwMDAwMDAwIBBQEFAAMDAwMDAwMDAwMDAQABAQUFAQEBAQEBAQEBAQIBBQUFAwIBAAABAQEFAgIBAQYABgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGAwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEDBgADAQEBBwICAAIABgEEAwEDBQgBCQkDAwMFAQEBBgYGBgQEBAQEBAQEBAQEBAQEBAQEBAQGBwcCAgIDBwcACAADBAUBcAEHBwUDAQARBgkBfwFBgIDAAAsHxEvBBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlAHcaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUAORpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQAoIl9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMAOiJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzADsSY29tcGFyZWFyZ3NfdG9faW1tAEgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AKRVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AAORVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAKhJfX3diZ19tdWxhcmdzX2ZyZWUAeB5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMAOR5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMAPBJfX3diZ19kaXZhcmdzX2ZyZWUA1gEeX193YmdfZ2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAK0BIXBhbmljaW5zdHJ1Y3Rpb25fZXJyb3JfdHlwZXNjcmlwdABMF3BhbmljaW5zdHJ1Y3Rpb25fcmVhc29uAD4ccGFuaWNpbnN0cnVjdGlvbl9pbnN0cnVjdGlvbgA/DGdtX2Zyb21fYXJncwDJAQ1ndGZfZnJvbV9hcmdzAMEBB2dtX2FyZ3MAeQhndGZfYXJncwBaDndkY21fZnJvbV9hcmdzACYOd2RvcF9mcm9tX2FyZ3MAJg53ZG1sX2Zyb21fYXJncwAeDndkZHZfZnJvbV9hcmdzAL8BCXdkY21fYXJncwAZCXdxY21fYXJncwAaCXdkb3BfYXJncwAbCXdxb3BfYXJncwAcCXdkbWxfYXJncwAUCXdxbWxfYXJncwAVCXdkZHZfYXJncwBVCXdxZHZfYXJncwBWEF9fd2JnX2ltbTA2X2ZyZWUA1wEQX193YmdfaW1tMTJfZnJlZQDYARBfX3diZ19pbW0xOF9mcmVlANkBDl9fd2JnX2FkZF9mcmVlALgBD19fd2JnX25vb3BfZnJlZQBbEmFkZF9uZXdfdHlwZXNjcmlwdABPBmFkZF9yYQAWBmFkZF9yYgALBmFkZF9yYwAPA2FkZAC5AQNhbmQAewNkaXYAfAJlcQB9A2V4cAB+Amd0AH8CbHQAgAEEbWxvZwCBAQRtcm9vAIIBBG1vZF8AgwEFbW92ZV8ALANtdWwAhAEDbm90AC0Cb3IAhQEDc2xsAIYBA3NybACHAQNzdWIAiAEDeG9yAIkBBG1sZHYAXANyZXQArgEEcmV0ZAAuE2Fsb2NfbmV3X3R5cGVzY3JpcHQAVwdhbG9jX3JhAE4EYWxvYwCvAQNtY2wALwNtY3AAigEDbWVxAF0TYmhzaF9uZXdfdHlwZXNjcmlwdAAfBGJoc2gAMARiaGVpALABBGJ1cm4AMRNjYWxsX25ld190eXBlc2NyaXB0AE0HY2FsbF9yZAAXBGNhbGwAXgNjY3AAXwRjcm9vADIEY3NpegAzAmNiALEBA2xkYwCLAQNsb2cAYARsb2dkAGEEbWludAA0BHJ2cnQAsgEEc2N3cQCMAQNzcncAjQEEc3J3cQBiA3N3dwCOAQRzd3dxAGMCdHIAjwEDdHJvAGQEZWNrMQCQAQRlY3IxAJEBBGVkMTkAkgEEazI1NgCTAQRzMjU2AJQBBHRpbWUANRNub29wX25ld190eXBlc2NyaXB0AMYBBG5vb3AA2gEEZmxhZwCzAQNiYWwAlQEDam1wALQBA2puZQCWAQNzbW8AZRNhZGRpX25ld190eXBlc2NyaXB0AFAKYWRkaV9pbW0xMgAMBGFkZGkAlwEEYW5kaQCYAQRkaXZpAJkBBGV4cGkAmgEEbW9kaQCbAQRtdWxpAJwBA29yaQCdAQRzbGxpAJ4BBHNybGkAnwEEc3ViaQCgAQR4b3JpAKEBBGpuZWkAogECbGIAowECbHcApAECc2IApQECc3cApgEEbWNwaQCnARJndGZfbmV3X3R5cGVzY3JpcHQAwwEDZ3RmAKgBBG1jbGkAIBFnbV9uZXdfdHlwZXNjcmlwdAA2CGdtX2ltbTE4AAkCZ20AIQRtb3ZpACIEam56aQAjBGptcGYAJBNqbXBiX25ld190eXBlc2NyaXB0ABgEam1wYgAlBGpuemYAqQEEam56YgCqAQRqbmVmAGYKam5lYl9pbW0wNgAXBGpuZWIAZwJqaQBAE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0ACcEY2ZlaQBBBGNmc2kAQgNjZmUAtQEDY2ZzALYBBHBzaGwAQwRwc2hoAEQEcG9wbABFBHBvcGgARhN3ZGNtX25ld190eXBlc2NyaXB0AMABBHdkY20AaAR3cWNtAGkEd2RvcABqBHdxb3AAawR3ZG1sAGwEd3FtbABtBHdkZHYAbgR3cWR2AG8Ed2RtZABwBHdxbWQAcQR3ZGFtAHIEd3FhbQBzBHdkbW0AdAR3cW1tAHUEZWNhbAB2Fl9fd2JnX2luc3RydWN0aW9uX2ZyZWUAWRRpbnN0cnVjdGlvbl90b19ieXRlcwAKEGluc3RydWN0aW9uX3NpemUA7AERcmVnaWRfbmV3X2NoZWNrZWQAqwEJcmVnaWRfYmFsANsBCnJlZ2lkX2NnYXMA3AEJcmVnaWRfZXJyAN0BCnJlZ2lkX2ZsYWcA3gEIcmVnaWRfZnAA3wEKcmVnaWRfZ2dhcwDgAQhyZWdpZF9ocADhAQhyZWdpZF9pcwDiAQhyZWdpZF9vZgDjAQlyZWdpZF9vbmUA5AEIcmVnaWRfcGMA5QEJcmVnaWRfcmV0AOYBCnJlZ2lkX3JldGwA5wEIcmVnaWRfc3AA6AEJcmVnaWRfc3BwAOkBDnJlZ2lkX3dyaXRhYmxlAOoBCnJlZ2lkX3plcm8A6wEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA0wELcmVnaWRfdG9fdTgA1AETbW92aV9uZXdfdHlwZXNjcmlwdAAYE21jbGlfbmV3X3R5cGVzY3JpcHQAGBNqbnppX25ld190eXBlc2NyaXB0ABgTam1wZl9uZXdfdHlwZXNjcmlwdAAYEm5vdF9uZXdfdHlwZXNjcmlwdAAfE3JldGRfbmV3X3R5cGVzY3JpcHQAHxNtb3ZlX25ld190eXBlc2NyaXB0AB8SbWNsX25ld190eXBlc2NyaXB0AB8TYnVybl9uZXdfdHlwZXNjcmlwdAAfE2Nyb29fbmV3X3R5cGVzY3JpcHQAHxNjc2l6X25ld190eXBlc2NyaXB0AB8TbWludF9uZXdfdHlwZXNjcmlwdAAfE3RpbWVfbmV3X3R5cGVzY3JpcHQAHxJyZXRfbmV3X3R5cGVzY3JpcHQAVxNiaGVpX25ld190eXBlc2NyaXB0AFcRY2JfbmV3X3R5cGVzY3JpcHQAVxNydnJ0X25ld190eXBlc2NyaXB0AFcTZmxhZ19uZXdfdHlwZXNjcmlwdABXEmptcF9uZXdfdHlwZXNjcmlwdABXEmNmZV9uZXdfdHlwZXNjcmlwdABXEmNmc19uZXdfdHlwZXNjcmlwdABXE21sZHZfbmV3X3R5cGVzY3JpcHQATRJtZXFfbmV3X3R5cGVzY3JpcHQATRJjY3BfbmV3X3R5cGVzY3JpcHQATRJsb2dfbmV3X3R5cGVzY3JpcHQATRNsb2dkX25ld190eXBlc2NyaXB0AE0Tc3J3cV9uZXdfdHlwZXNjcmlwdABNE3N3d3FfbmV3X3R5cGVzY3JpcHQATRJ0cm9fbmV3X3R5cGVzY3JpcHQATRJzbW9fbmV3X3R5cGVzY3JpcHQATRNqbmVmX25ld190eXBlc2NyaXB0AE0Td2RtZF9uZXdfdHlwZXNjcmlwdABNE3dxbWRfbmV3X3R5cGVzY3JpcHQATRN3ZGFtX25ld190eXBlc2NyaXB0AE0Td3FhbV9uZXdfdHlwZXNjcmlwdABNE3dkbW1fbmV3X3R5cGVzY3JpcHQATRN3cW1tX25ld190eXBlc2NyaXB0AE0TZWNhbF9uZXdfdHlwZXNjcmlwdABNEmFuZF9uZXdfdHlwZXNjcmlwdABPEmRpdl9uZXdfdHlwZXNjcmlwdABPEWVxX25ld190eXBlc2NyaXB0AE8SZXhwX25ld190eXBlc2NyaXB0AE8RZ3RfbmV3X3R5cGVzY3JpcHQATxFsdF9uZXdfdHlwZXNjcmlwdABPE21sb2dfbmV3X3R5cGVzY3JpcHQATxNtcm9vX25ld190eXBlc2NyaXB0AE8SbW9kX25ld190eXBlc2NyaXB0AE8SbXVsX25ld190eXBlc2NyaXB0AE8Rb3JfbmV3X3R5cGVzY3JpcHQATxJzbGxfbmV3X3R5cGVzY3JpcHQATxJzcmxfbmV3X3R5cGVzY3JpcHQATxJzdWJfbmV3X3R5cGVzY3JpcHQATxJ4b3JfbmV3X3R5cGVzY3JpcHQATxJtY3BfbmV3X3R5cGVzY3JpcHQATxJsZGNfbmV3X3R5cGVzY3JpcHQATxNzY3dxX25ld190eXBlc2NyaXB0AE8Sc3J3X25ld190eXBlc2NyaXB0AE8Sc3d3X25ld190eXBlc2NyaXB0AE8RdHJfbmV3X3R5cGVzY3JpcHQATxNlY2sxX25ld190eXBlc2NyaXB0AE8TZWNyMV9uZXdfdHlwZXNjcmlwdABPE2VkMTlfbmV3X3R5cGVzY3JpcHQATxNrMjU2X25ld190eXBlc2NyaXB0AE8TczI1Nl9uZXdfdHlwZXNjcmlwdABPEmJhbF9uZXdfdHlwZXNjcmlwdABPEmpuZV9uZXdfdHlwZXNjcmlwdABPE2FuZGlfbmV3X3R5cGVzY3JpcHQAUBNkaXZpX25ld190eXBlc2NyaXB0AFATZXhwaV9uZXdfdHlwZXNjcmlwdABQE21vZGlfbmV3X3R5cGVzY3JpcHQAUBNtdWxpX25ld190eXBlc2NyaXB0AFASb3JpX25ld190eXBlc2NyaXB0AFATc2xsaV9uZXdfdHlwZXNjcmlwdABQE3NybGlfbmV3X3R5cGVzY3JpcHQAUBNzdWJpX25ld190eXBlc2NyaXB0AFATeG9yaV9uZXdfdHlwZXNjcmlwdABQE2puZWlfbmV3X3R5cGVzY3JpcHQAUBFsYl9uZXdfdHlwZXNjcmlwdABQEWx3X25ld190eXBlc2NyaXB0AFARc2JfbmV3X3R5cGVzY3JpcHQAUBFzd19uZXdfdHlwZXNjcmlwdABQE21jcGlfbmV3X3R5cGVzY3JpcHQAUBNqbnpmX25ld190eXBlc2NyaXB0AFATam56Yl9uZXdfdHlwZXNjcmlwdABQDndxY21fZnJvbV9hcmdzACYOd3FvcF9mcm9tX2FyZ3MAJh9fX3diZ19zZXRfbWF0aGFyZ3NfaW5kaXJlY3RfcmhzADseX193Ymdfc2V0X211bGFyZ3NfaW5kaXJlY3RfbGhzADseX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzADsRamlfbmV3X3R5cGVzY3JpcHQANxNjZnNpX25ld190eXBlc2NyaXB0ADcTcHNobF9uZXdfdHlwZXNjcmlwdAA3E3BzaGhfbmV3X3R5cGVzY3JpcHQANxNwb3BsX25ld190eXBlc2NyaXB0ADcTcG9waF9uZXdfdHlwZXNjcmlwdAA3E3dkbWxfbmV3X3R5cGVzY3JpcHQAwAETd3FtbF9uZXdfdHlwZXNjcmlwdADAAQ53cW1sX2Zyb21fYXJncwAeE3dxb3BfbmV3X3R5cGVzY3JpcHQAwAETd2Rkdl9uZXdfdHlwZXNjcmlwdADAARN3cWNtX25ld190eXBlc2NyaXB0AMABE3dkb3BfbmV3X3R5cGVzY3JpcHQAwAETd3Fkdl9uZXdfdHlwZXNjcmlwdADAARBfX3diZ19yZWdpZF9mcmVlANcBDndxZHZfZnJvbV9hcmdzAL8BEF9fd2JnX2ltbTI0X2ZyZWUA2QEPX193YmdfbW92aV9mcmVlALgBD19fd2JnX21sZHZfZnJlZQC4AQ9fX3diZ19mbGFnX2ZyZWUAuAEPX193YmdfZWNhbF9mcmVlALgBDl9fd2JnX2d0Zl9mcmVlALgBDl9fd2JnX3Nyd19mcmVlALgBDl9fd2JnX2Rpdl9mcmVlALgBD19fd2JnX3Njd3FfZnJlZQC4AQ5fX3diZ19leHBfZnJlZQC4AQZqbXBfcmEATg5fX3diZ19qbXBfZnJlZQC4AQ5fX3diZ19tdWxfZnJlZQC4AQ5fX3diZ19zcmxfZnJlZQC4AQ9fX3diZ19zd3dxX2ZyZWUAuAEOX193YmdfbWNwX2ZyZWUAuAENX193Ymdfc3dfZnJlZQC4AQ9fX3diZ19jZmVpX2ZyZWUAuAEPX193YmdfbG9nZF9mcmVlALgBDV9fd2JnX29yX2ZyZWUAuAEOX193YmdfbWVxX2ZyZWUAuAEPX193Ymdfd3FhbV9mcmVlALgBD19fd2JnX2puemJfZnJlZQC4AQ5fX3diZ19sZGNfZnJlZQC4AQ9fX3diZ19tY3BpX2ZyZWUAuAEPX193Ymdfam1wZl9mcmVlALgBDV9fd2JnX2xiX2ZyZWUAuAEPX193Ymdfd3FjbV9mcmVlALgBD19fd2JnX3dxb3BfZnJlZQC4AQ9fX3diZ19tcm9vX2ZyZWUAuAEPX193Ymdfd2RtbF9mcmVlALgBDV9fd2JnX3RyX2ZyZWUAuAEPX193Ymdfam5laV9mcmVlALgBD19fd2JnX2NhbGxfZnJlZQC4AQ9fX3diZ19hbmRpX2ZyZWUAuAEPX193YmdfYmhzaF9mcmVlALgBDl9fd2JnX3N3d19mcmVlALgBD19fd2JnX3N1YmlfZnJlZQC4AQ1fX3diZ19lcV9mcmVlALgBD19fd2JnX3dkbW1fZnJlZQC4AQ9fX3diZ19zbGxpX2ZyZWUAuAEOX193Ymdfam5lX2ZyZWUAuAEPX193YmdfbW92ZV9mcmVlALgBD19fd2JnX2RpdmlfZnJlZQC4AQ9fX3diZ19lY3IxX2ZyZWUAuAEKY2ZzaV9pbW0yNAAnD19fd2JnX2Nmc2lfZnJlZQC4AQ9fX3diZ19jc2l6X2ZyZWUAuAEPX193YmdfcmV0ZF9mcmVlALgBHl9fd2JnX2dldF9tdWxhcmdzX2luZGlyZWN0X2xocwA6B2ZsYWdfcmEATg9fX3diZ19iaGVpX2ZyZWUAuAEPX193YmdfbW9kaV9mcmVlALgBDV9fd2JnX2d0X2ZyZWUAuAEfX193YmdfZ2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwA6Dl9fd2JnX2NjcF9mcmVlALgBD19fd2JnX2VjazFfZnJlZQC4AQdiaGVpX3JhAE4OX193YmdfYW5kX2ZyZWUAuAEPX193YmdfazI1Nl9mcmVlALgBD19fd2JnX2Fsb2NfZnJlZQC4AQ1fX3diZ19sdF9mcmVlALgBDl9fd2JnX3Ntb19mcmVlALgBD19fd2JnX2puemZfZnJlZQC4AQ5fX3diZ19tY2xfZnJlZQC4AQZyZXRfcmEATg5fX3diZ19yZXRfZnJlZQC4AQ9fX3diZ19taW50X2ZyZWUAuAEPX193Ymdfd2RvcF9mcmVlALgBD19fd2JnX2Nyb29fZnJlZQC4AQ5fX3diZ190cm9fZnJlZQC4AQ9fX3diZ193cW1kX2ZyZWUAuAEPX193Ymdfd3Fkdl9mcmVlALgBD19fd2JnX2V4cGlfZnJlZQC4AQ9fX3diZ19zcndxX2ZyZWUAuAEPX193Ymdfd3FtbF9mcmVlALgBD19fd2JnX3dkbWRfZnJlZQC4AQ5fX3diZ19tb2RfZnJlZQC4AQ9fX3diZ19qbnppX2ZyZWUAuAEPX193YmdfYnVybl9mcmVlALgBB3J2cnRfcmEATg9fX3diZ19ydnJ0X2ZyZWUAuAEOX193Ymdfb3JpX2ZyZWUAuAEKcHNobF9pbW0yNAAnD19fd2JnX3BzaGxfZnJlZQC4AQ9fX3diZ19hZGRpX2ZyZWUAuAEOX193YmdfeG9yX2ZyZWUAuAENX193YmdfbHdfZnJlZQC4AQpwb3BsX2ltbTI0ACcPX193YmdfcG9wbF9mcmVlALgBDV9fd2JnX3NiX2ZyZWUAuAEPX193YmdfbXVsaV9mcmVlALgBDl9fd2JnX2xvZ19mcmVlALgBCGppX2ltbTI0ACcNX193YmdfamlfZnJlZQC4AQ9fX3diZ19tbG9nX2ZyZWUAuAEPX193YmdfbWNsaV9mcmVlALgBDl9fd2JnX3N1Yl9mcmVlALgBDl9fd2JnX3NsbF9mcmVlALgBDl9fd2JnX25vdF9mcmVlALgBD19fd2JnX2puZWJfZnJlZQC4AQ9fX3diZ19zcmxpX2ZyZWUAuAEPX193YmdfczI1Nl9mcmVlALgBDl9fd2JnX2JhbF9mcmVlALgBD19fd2JnX2ptcGJfZnJlZQC4AQZjZnNfcmEATg5fX3diZ19jZnNfZnJlZQC4AQZjZmVfcmEATg5fX3diZ19jZmVfZnJlZQC4AQ9fX3diZ193ZGFtX2ZyZWUAuAENX193YmdfZ21fZnJlZQC4AQ9fX3diZ193cW1tX2ZyZWUAuAEKcG9waF9pbW0yNAAnD19fd2JnX3BvcGhfZnJlZQC4AQ9fX3diZ193ZGR2X2ZyZWUAuAEPX193YmdfdGltZV9mcmVlALgBD19fd2JnX3hvcmlfZnJlZQC4AQVjYl9yYQBODV9fd2JnX2NiX2ZyZWUAuAEPX193Ymdfam5lZl9mcmVlALgBD19fd2JnX2VkMTlfZnJlZQC4AQ9fX3diZ193ZGNtX2ZyZWUAuAEKcHNoaF9pbW0yNAAnD19fd2JnX3BzaGhfZnJlZQC4ARNqbmViX25ld190eXBlc2NyaXB0AE0Kd3Fkdl9pbW0wNgAXCndxbWxfaW1tMDYAFwp3ZG1sX2ltbTA2ABcKd3FvcF9pbW0wNgAXCndkb3BfaW1tMDYAFwp3cWNtX2ltbTA2ABcKd2Rkdl9pbW0wNgAXCndkY21faW1tMDYAFwpqbmVmX2ltbTA2ABcHbW92aV9yYQAWB21sZHZfcmQAFwdtbGR2X3JjAA8HbWxkdl9yYgALB21sZHZfcmEAFgZndGZfcmIACwZndGZfcmEAFgZzcndfcmMADwZzcndfcmIACwZzcndfcmEAFgdlY2FsX3JjAA8HZWNhbF9yYgALB2VjYWxfcmEAFgdzY3dxX3JjAA8Hc2N3cV9yYgALB3Njd3FfcmEAFgZleHBfcmMADwZleHBfcmIACwZleHBfcmEAFgZtdWxfcmMADwZtdWxfcmIACwZtdWxfcmEAFgZzcmxfcmMADwZzcmxfcmIACwZzcmxfcmEAFgdzd3dxX3JkABcHc3d3cV9yYwAPB3N3d3FfcmIACwdzd3dxX3JhABYGbWNwX3JjAA8GbWNwX3JiAAsGbWNwX3JhABYIc3dfaW1tMTIADAVzd19yYgALBXN3X3JhABYJZ3RmX2ltbTEyAAwGZGl2X3JiAAsGZGl2X3JhABYHbG9nZF9yZAAXB2xvZ2RfcmMADwdsb2dkX3JiAAsHbG9nZF9yYQAWBW9yX3JjAA8Fb3JfcmIACwVvcl9yYQAWBm1lcV9yZAAXBm1lcV9yYwAPBm1lcV9yYgALBm1lcV9yYQAWB3dxYW1fcmQAFwd3cWFtX3JjAA8Hd3FhbV9yYgALB3dxYW1fcmEAFgpqbnpiX2ltbTEyAAwHam56Yl9yYgALB2puemJfcmEAFgZsZGNfcmMADwZsZGNfcmIACwZsZGNfcmEAFgptY3BpX2ltbTEyAAwHbWNwaV9yYgALB21jcGlfcmEAFgptb3ZpX2ltbTE4AAkHam1wZl9yYQAWCGxiX2ltbTEyAAwFbGJfcmIACwVsYl9yYQAWB3dxY21fcmMADwd3cWNtX3JiAAsHd3FjbV9yYQAWB3dxb3BfcmMADwd3cW9wX3JiAAsHd3FvcF9yYQAWB21yb29fcmMADwdtcm9vX3JiAAsHbXJvb19yYQAWB3dkbWxfcmMADwd3ZG1sX3JiAAsHd2RtbF9yYQAWBXRyX3JjAA8FdHJfcmIACwV0cl9yYQAWCmpuZWlfaW1tMTIADAdqbmVpX3JiAAsHam5laV9yYQAWB2VjYWxfcmQAFwZkaXZfcmMADwdjYWxsX3JiAAsHY2FsbF9yYQAWB2NhbGxfcmMADwdhbmRpX3JiAAsHYW5kaV9yYQAWB2Joc2hfcmIACwdiaHNoX3JhABYGc3d3X3JjAA8Gc3d3X3JiAAsGc3d3X3JhABYKc3ViaV9pbW0xMgAMB3N1YmlfcmIACwdzdWJpX3JhABYFZXFfcmMADwVlcV9yYgALBWVxX3JhABYHd2RtbV9yZAAXB3dkbW1fcmMADwd3ZG1tX3JiAAsHd2RtbV9yYQAWCnNsbGlfaW1tMTIADAdzbGxpX3JiAAsHc2xsaV9yYQAWBmpuZV9yYwAPBmpuZV9yYgALBmpuZV9yYQAWB21vdmVfcmIACwdtb3ZlX3JhABYKZGl2aV9pbW0xMgAMB2RpdmlfcmIACwdkaXZpX3JhABYHZWNyMV9yYwAPB2VjcjFfcmIACwdlY3IxX3JhABYHY3Npel9yYgALB2NzaXpfcmEAFgdyZXRkX3JiAAsHcmV0ZF9yYQAWCm1vZGlfaW1tMTIADAdtb2RpX3JiAAsHbW9kaV9yYQAWBWd0X3JjAA8FZ3RfcmIACwVndF9yYQAWE19fd2JnX21hdGhhcmdzX2ZyZWUAdwZjY3BfcmQAFwZjY3BfcmMADwZjY3BfcmIACwZjY3BfcmEAFgdlY2sxX3JjAA8HZWNrMV9yYgALB2VjazFfcmEAFgdrMjU2X3JjAA8HazI1Nl9yYgALB2syNTZfcmEAFgphbmRpX2ltbTEyAAwGYW5kX3JiAAsGYW5kX3JhABYFbHRfcmMADwVsdF9yYgALBWx0X3JhABYGc21vX3JkABcGc21vX3JjAA8Gc21vX3JiAAsGc21vX3JhABYKam56Zl9pbW0xMgAMB2puemZfcmIACwdqbnpmX3JhABYGbWNsX3JiAAsGbWNsX3JhABYHbWludF9yYgALB21pbnRfcmEAFgd3ZG9wX3JjAA8Hd2RvcF9yYgALB3dkb3BfcmEAFgdjcm9vX3JiAAsHY3Jvb19yYQAWBnRyb19yZAAXBnRyb19yYwAPBnRyb19yYgALBnRyb19yYQAWB3dxbWRfcmQAFwd3cW1kX3JjAA8Hd3FtZF9yYgALB3dxbWRfcmEAFgd3cWR2X3JjAA8Hd3Fkdl9yYgALB3dxZHZfcmEAFgpleHBpX2ltbTEyAAwHZXhwaV9yYgALB2V4cGlfcmEAFgdzcndxX3JkABcHc3J3cV9yYwAPB3Nyd3FfcmIACwdzcndxX3JhABYHd3FtbF9yYwAPB3dxbWxfcmIACwd3cW1sX3JhABYHd2RtZF9yZAAXB3dkbWRfcmMADwd3ZG1kX3JiAAsHd2RtZF9yYQAWBm1vZF9yYwAPBm1vZF9yYgALBm1vZF9yYQAWCmpuemlfaW1tMTgACQdqbnppX3JhABYHYnVybl9yYgALB2J1cm5fcmEAFglvcmlfaW1tMTIADAZvcmlfcmIACwZvcmlfcmEAFgZhbmRfcmMADwdhZGRpX3JiAAsHYWRkaV9yYQAWBnhvcl9yYwAPBnhvcl9yYgALBnhvcl9yYQAWCGx3X2ltbTEyAAwFbHdfcmIACwVsd19yYQAWCHNiX2ltbTEyAAwFc2JfcmIACwVzYl9yYQAWCm11bGlfaW1tMTIADAdtdWxpX3JiAAsHbXVsaV9yYQAWBmxvZ19yZAAXBmxvZ19yYwAPBmxvZ19yYgALBmxvZ19yYQAWB21sb2dfcmMADwdtbG9nX3JiAAsHbWxvZ19yYQAWCm1jbGlfaW1tMTgACQdtY2xpX3JhABYGc3ViX3JjAA8Gc3ViX3JiAAsGc3ViX3JhABYGc2xsX3JjAA8Gc2xsX3JiAAsGc2xsX3JhABYGbm90X3JiAAsGbm90X3JhABYHam5lYl9yYwAPB2puZWJfcmIACwdqbmViX3JhABYKc3JsaV9pbW0xMgAMB3NybGlfcmIACwdzcmxpX3JhABYHczI1Nl9yYwAPB3MyNTZfcmIACwdzMjU2X3JhABYGYmFsX3JjAA8GYmFsX3JiAAsGYmFsX3JhABYKam1wZl9pbW0xOAAJB2ptcGJfcmEAFgd3ZGFtX3JkABcHd2RhbV9yYwAPB3dkYW1fcmIACwd3ZGFtX3JhABYKam1wYl9pbW0xOAAJBWdtX3JhABYHd3FtbV9yZAAXB3dxbW1fcmMADwd3cW1tX3JiAAsHd3FtbV9yYQAWB3dkZHZfcmMADwd3ZGR2X3JiAAsHd2Rkdl9yYQAWB3RpbWVfcmIACwd0aW1lX3JhABYKeG9yaV9pbW0xMgAMB3hvcmlfcmIACwd4b3JpX3JhABYHam5lZl9yYwAPB2puZWZfcmIACwdqbmVmX3JhABYH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QQx2ELwBIAFBEGokAAtuAQJ/IwBBEGsiASQAIAFBCGogABBKIAEoAggiAC8AACAAQQJqLQAAQRB0chDVASEAIAEoAgwiAiACKAIAQQFrNgIAQQhBBBC6ASICIABBCHZBgB5xIABBGHZyOwEEIAJBADYCACABQRBqJAAgAgttAQF/IwBBMGsiASQAIAEgADoADyAAQf8BcUHAAE8EQCABQRxqQgE3AgAgAUECNgIUIAFB9IDAADYCECABQQI2AiwgASABQShqNgIYIAEgAUEPajYCKCABQRBqQYSBwAAQSQALIAFBMGokACAAC24BAX8jAEEwayIBJAAgASAAOwEOIABB//8DcUGAIE8EQCABQRxqQgE3AgAgAUECNgIUIAFBuIHAADYCECABQQM2AiwgASABQShqNgIYIAEgAUEOajYCKCABQRBqQciBwAAQSQALIAFBMGokACAAC10BA38jAEEQayIBJAAgAUEIaiAAEEogASgCCCIAQQJqLQAAIQIgAC8AACABKAIMIgMgAygCAEEBazYCACACQRB0chDVASIAQR52IABBDnZBPHFyELwBIAFBEGokAAsVACAAQYyCwABB/IHAAEGAgBAQ8gELFgAgAEHQgsAAQcCCwABBgICACBDyAQtMACADQf8BcSABQf8BcUEMdCAAQf8BcUESdHIiACACQf8BcUEGdHJyIgFBEHRBgID8B3EgAEEIdkGA/gNxIAFBgP4DcUEIdHJBCHZyC1UCAX8BfiMAQRBrIgIkACABEMQBIAJBCGogARBUIAIoAgxBADYCACABKQIAIQMgARAEIAAgA0IoiKdBAXE6AAEgACADQiCIp0EBcToAACACQRBqJAALEAAgACABIAIgA0HiABD0AQsQACAAIAEgAiADQeMAEPQBC08BA38jAEEQayIBJAAgAUEIaiAAEEogASgCCCIAQQJqLQAAIQIgAC8AACABKAIMIgMgAygCAEEBazYCACACQRB0chDIARC8ASABQRBqJAALVQEDfyMAQRBrIgEkACABQQhqIAAQSiABKAIIIgBBAmotAAAhAiAALwAAIAEoAgwiAyADKAIAQQFrNgIAIAJBEHRyENUBQRh2QT9xELwBIAFBEGokAAtSAQF/IAAQUSECIAEQUyEAQQhBBBC6ASIBIABBEHRBgID8B3EgACACQf8BcUESdHIiAEGA/gNxQQh0IABBCHZBgP4DcXJBCHZyrUIghjcCACABCxAAIAAgASACIANB3gAQ9QELEAAgACABIAIgA0HfABD1AQsQACAAIAEgAiADQeAAEPUBCxAAIAAgASACIANB4QAQ9QELUQIBfwF+IwBBEGsiAiQAIAEQxAEgAkEIaiABEFQgAigCDEEANgIAIAEpAgAhAyABEAQgACADQiiIPAABIAAgA0IgiKdBAXE6AAAgAkEQaiQACz4BAX8jAEEQayIEJAAgABBRIAEQUSACEFEgBEEIaiADEBMgBC0ACEEBcSAELQAJQQFxEHoQrAEgBEEQaiQAC0kBAX8gABBRIQAgARBRIQFBCEEEELoBIgIgAUH/AXFBDHQgAEESdHIiAEGA4ANxQQh0IABBCHZBgP4DcXJBCHatQiCGNwIAIAILDAAgACABQcsAEPYBCwwAIAAgAUHMABD2AQsMACAAIAFBzQAQ9gELDAAgACABQc4AEPYBCwwAIAAgAUHPABD2AQsMACAAIAFB0AAQ9gELPAEBfyMAQRBrIgQkACAAEFEgARBRIAIQUSAEQQhqIAMQHSAELQAIQQFxIAQtAAkQvgEQrAEgBEEQaiQAC0gAIAAQxAEgACgCAEF/RgRAEM4BAAsgAC8ABCAAQQZqLQAAQRB0chDVASIAQYD+A3FBCHQgAEEIdkGA/gNxIABBGHZychC7AQsLACAAIAFBBxD3AQs/AQJ/AkAgABBRIgBBGHENACAAQQdxIgJBB0YNAEEIQQQQugEiASAAQQV2QQFxrUIghiACrUIohoQ3AgALIAELCwAgACABQQgQ9wELPwAgAkEWdEGAgIAGcSABQf8BcUEMdCIBIAJB/AFxQQZ0ckGA/gNxQQh0IAEgAEESdHJBCHZBgP4DcXJBCHZyCwsAIAAgAUEKEPgBCwsAIAAgAUEMEPgBCwsAIAAgAUEUEPgBCwsAIAAgAUEWEPgBCwsAIAAgAUEZEPgBCwsAIAAgAUEbEPgBCwsAIAAgAUEeEPgBCwsAIAAgAUEfEPgBCwsAIAAgAUEkEPgBCwsAIAAgAUEyEPgBCz8AIAAQUSEAIAEQUyIBQRB0QYCA/AdxIABB/wFxQRJ0IAFyIgBBgP4DcUEIdCAAQQh2QYD+A3FyQQh2chCsAQtAAQF/IAAQUyEAQQhBBBC6ASIBIABBEHRBgID8B3EgAEEIdkGA/gNxIABBgP4DcUEIdHJBCHZyrUIghjcCACABCzgAIAJBEHRBgID8B3EgAUH/AXFBDHQiASACckGA/gNxQQh0IAEgAEESdHJBCHZBgP4DcXJBCHZyCzwBAn8jAEEQayIBJAAgABDEASABQQhqIAAQSyABKAIILQABIAEoAgwiAiACKAIAQQFrNgIAIAFBEGokAAs8AQJ/IwBBEGsiASQAIAAQxAEgAUEIaiAAEEsgASgCCC0AACABKAIMIgIgAigCAEEBazYCACABQRBqJAALOQEBfyMAQRBrIgIkACAAEMQBIAJBCGogABBUIAIoAgwgAigCCCABQQBHOgAAQQA2AgAgAkEQaiQACzkBAX8jAEEQayICJAAgABDEASACQQhqIAAQVCACKAIMIAIoAgggAUEARzoAAUEANgIAIAJBEGokAAs4AQJ/IwBBEGsiASQAIAAQxAEgAUEIaiAAEFQgASgCDEEANgIAIAAtAAQgABAEIAFBEGokAEEBcQs3AQJ/IwBBEGsiASQAIAFBCGogABBKIAEoAggtAAQgASgCDCICIAIoAgBBAWs2AgAgAUEQaiQACzcBAn8jAEEQayIBJAAgAUEIaiAAEEogASgCCCgCACABKAIMIgIgAigCAEEBazYCACABQRBqJAALCgAgAEHVABD5AQsKACAAQdYAEPkBCwoAIABB1wAQ+QELCgAgAEHaABD5AQsKACAAQdsAEPkBCwoAIABB3AAQ+QELCgAgAEHdABD5AQs5AAJAAn8gAkGAgMQARwRAQQEgACACIAEoAhARAwANARoLIAMNAUEACw8LIAAgA0EAIAEoAgwRAAALMQEBfyMAQRBrIgEkACABQQhqIAAQHSABLQAJIAEtAAhBBXRBIHFyELwBIAFBEGokAAuhAgEBfyMAQSBrIgIkACACQQE7ARwgAiABNgIYIAIgADYCFCACQbiGwAA2AhAgAkHoiMAANgIMIAJBDGoiACgCCCIBRQRAIwBBIGsiACQAIABBDGpCADcCACAAQQE2AgQgAEHoiMAANgIIIABBKzYCHCAAQZCIwAA2AhggACAAQRhqNgIAIABB2IjAABBJAAsgAUEMaigCACECAkACQCABKAIEDgIAAAELIAINAAsgAC0AECEBIAAtABEaQdiJwABB2InAACgCACIAQQFqNgIAAkAgAEEASA0AQaSNwAAtAABBAXENAEGkjcAAQQE6AABBoI3AAEGgjcAAKAIAQQFqNgIAQdSJwAAoAgBBAEgNAEGkjcAAQQA6AAAgAUUNAAALAAs1AQF/IAEQxAEgASgCACICQX9GBEAQzgEACyABIAJBAWo2AgAgACABNgIEIAAgAUEEajYCAAsxAQF/IAEoAgAiAkF/RwRAIAEgAkEBajYCACAAIAE2AgQgACABQQRqNgIADwsQzgEACzUBAX8gAEE2TwRAQeCCwABBGRDSAQALQQxBBBC6ASICIAA6AAggAiABNgIEIAJBADYCACACCzAAIAAQUSABEFEgAhBRIAMQURASIQBBCEEEELoBIgEgAK1C////B4NCIIY3AgAgAQstACAAEMQBIAAoAgBBf0YEQBDOAQALIAAvAAQgAEEGai0AAEEQdHIQyAEQvAELLAAgABBRIAEQUSACEFEQKyEAQQhBBBC6ASIBIACtQv///weDQiCGNwIAIAELLAAgABBRIAEQUSACEFIQOCEAQQhBBBC6ASIBIACtQv///weDQiCGNwIAIAELJQEBfwJAIAAEQCAAKAIADQEgAC0ABCAAEAQPCxDNAQALEM4BAAslAQF/AkAgAARAIAAoAgANASAALwEEIAAQBA8LEM0BAAsQzgEACyUBAX8CQCAABEAgACgCAA0BIAAoAgQgABAEDwsQzQEACxDOAQALKAAgASgCAEUEQCABQX82AgAgACABNgIEIAAgAUEEajYCAA8LEM4BAAspACADED0hAyAAEL0BIAEQvQEgAhC9ASADEMIBQQh0QeQAchDFARC7AQspACADED0hAyAAEL0BIAEQvQEgAhC9ASADEMIBQQh0QeUAchDFARC7AQslAQF/IAAQUSEAQQhBBBC6ASIBIABBAnRB/AFxrUIghjcCACABCyAAIABBAWsiAEEFTQRAIABBAWoPC0HggsAAQRkQ0gEACyABAX8gABDEASAAKAIABEAQzgEACyAAKAIEIAAQBBAECyMAIAIQBSECIAAQvQEgARC9ASACEDhBCHRBygByEMUBELsBCx4AAkAgAARAIAAoAgANASAAEAQPCxDNAQALEM4BAAsPACAAIAEgAiADQRIQ7gELDwAgACABIAIgA0EYEO4BCw8AIAAgASACIANBHBDuAQsPACAAIAEgAiADQR0Q7gELDwAgACABIAIgA0EiEO4BCw8AIAAgASACIANBIxDuAQsPACAAIAEgAiADQSgQ7gELDwAgACABIAIgA0EqEO4BCw8AIAAgASACIANBLBDuAQsPACAAIAEgAiADQTgQ7gELEAAgACABIAIgA0HTABDvAQsQACAAIAEgAiADQdQAEO8BCxAAIAAgASACIANB3gAQ7wELEAAgACABIAIgA0HfABDvAQsQACAAIAEgAiADQeAAEO8BCxAAIAAgASACIANB4QAQ7wELEAAgACABIAIgA0HiABDvAQsQACAAIAEgAiADQeMAEO8BCxAAIAAgASACIANB5AAQ7wELEAAgACABIAIgA0HlABDvAQsQACAAIAEgAiADQeYAEO4BCxAAIAAgASACIANB5wAQ7gELEAAgACABIAIgA0HoABDuAQsQACAAIAEgAiADQekAEO4BCxAAIAAgASACIANB6gAQ7gELEAAgACABIAIgA0HrABDuAQsQACAAIAEgAiADQewAEO4BCx0BAX8jAEEQayIBJAAgAUEIaiAAEB0gAUEQaiQACx0BAX8jAEEQayIBJAAgAUEIaiAAEBMgAUEQaiQACx8AIAEQWCEBIAAQvQEgARC3AUEIdEHMAHIQxQEQuwELGQAgACABIAJBIEEAIAQbQRBBACADG3IQEgsNACAAIAEgAkEBEPABCw0AIAAgASACQQIQ8AELDQAgACABIAJBAxDwAQsNACAAIAEgAkEEEPABCw0AIAAgASACQQUQ8AELDQAgACABIAJBBhDwAQsNACAAIAEgAkEHEPABCw0AIAAgASACQQgQ8AELDQAgACABIAJBCRDwAQsNACAAIAEgAkELEPABCw0AIAAgASACQQ0Q8AELDQAgACABIAJBDhDwAQsNACAAIAEgAkEPEPABCw0AIAAgASACQRAQ8AELDQAgACABIAJBERDwAQsNACAAIAEgAkEXEPABCw0AIAAgASACQSEQ8AELDQAgACABIAJBJhDwAQsNACAAIAEgAkEnEPABCw0AIAAgASACQSkQ8AELDQAgACABIAJBKxDwAQsNACAAIAEgAkEtEPABCw0AIAAgASACQS4Q8AELDQAgACABIAJBLxDwAQsNACAAIAEgAkEwEPABCw0AIAAgASACQTEQ8AELDQAgACABIAJBNRDwAQsNACAAIAEgAkE3EPABCw0AIAAgASACQTkQ8QELDQAgACABIAJBOhDxAQsNACAAIAEgAkE7EPEBCw0AIAAgASACQTwQ8QELDQAgACABIAJBPRDxAQsNACAAIAEgAkE+EPEBCw0AIAAgASACQT8Q8QELDgAgACABIAJBwAAQ8QELDgAgACABIAJBwQAQ8QELDgAgACABIAJBwgAQ8QELDgAgACABIAJBwwAQ8QELDgAgACABIAJBxAAQ8QELDgAgACABIAJBxQAQ8QELDgAgACABIAJBxgAQ8QELDgAgACABIAJBxwAQ8QELDgAgACABIAJByAAQ8QELDgAgACABIAJByQAQ8QELDgAgACABIAJBygAQ8QELDgAgACABIAJB0QAQ8QELDgAgACABIAJB0gAQ8QELGAEBfyAAQf8BcUE/TQR/IAAQvAEFQQALCx4BAX9BCEEEELoBIgEgAK1C////B4NCIIY3AgAgAQsbACAAEMQBIAAoAgBBf0YEQBDOAQALIAAtAAQLCQAgAEETEPMBCwkAIABBFRDzAQsJACAAQRoQ8wELCQAgAEEgEPMBCwkAIABBJRDzAQsJACAAQTQQ8wELCQAgAEE2EPMBCwoAIABB2AAQ8wELCgAgAEHZABDzAQsXACABQRB0QYCA/AdxIABBAnRB/AFxcgsXACAAEMQBIAAoAgAEQBDOAQALIAAQBAscACAAEL0BIAEQvQEgAhC9ARArQQh0EMUBELsBCxIAIAEgABDHASIABEAgAA8LAAsbAQF/QQhBBBC6ASIBIAA2AgQgAUEANgIAIAELGwEBf0EIQQQQugEiASAAOgAEIAFBADYCACABC24AIABB/wFxQcAATwRAIwBBMGsiACQAIABBIjYCDCAAQYCAwAA2AgggAEEcakIBNwIAIABBATYCFCAAQbCGwAA2AhAgAEEBNgIsIAAgAEEoajYCGCAAIABBCGo2AiggAEEQakG4gMAAEEkACyAACxQAIAAgASACQSBBACADGyAEchASCxgAIAAQUSABEFEgAhBRIAMQPRDCARCsAQsXACAAEFEgARBRIAIQUSADEFEQEhCsAQsTACAAEFEgARBRIAIQBRA4EKwBCxEAIAAgASACQSBBACADGxASCxMAIAAQUSABEFEgAhBSEDgQrAELDAAgAARADwsQzQEACxQBAX9BBEEBELoBIgEgADYAACABCxQBAX9BCEEEELoBIgBCADcCACAAC4ED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", imports);
28540
+ return _loadWasmModule(1, null, "AGFzbQEAAAABQAtgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38Bf2AAAX9gAn9/AGABfwBgBX9/f39/AX9gA39/fwBgAABgAn5/AX8CGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cABQP9AfsBAQMKBgEFBQUBBQEBAQEBAQECBQICAQMBAgICAgUCAwMDAwMDAwIBBQEFAAMDAwMDAwMDAwMDAwEAAQEFBQEBAQEBAQEBAQECAQUFBQMCAQAAAQEBBQICAQEGAAYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQMGAAMBAQEHAgIAAgAGAQQDAQMFCAEJCQMDAwUBAQEGBgYGBAQEBAQEBAQEBAQEBAQEBAQEBAYHBwICAgMHBwAIAAMEBQFwAQcHBQMBABEGCQF/AUGAgMAACwf4TM8FBm1lbW9yeQIAFl9fd2JnX2NvbXBhcmVhcmdzX2ZyZWUAexpfX3diZ19nZXRfY29tcGFyZWFyZ3NfbW9kZQA6Gl9fd2JnX3NldF9jb21wYXJlYXJnc19tb2RlACgiX193YmdfZ2V0X2NvbXBhcmVhcmdzX2luZGlyZWN0X3JocwA7Il9fd2JnX3NldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMAPBJjb21wYXJlYXJnc190b19pbW0ASRRjb21wYXJlYXJnc19mcm9tX2ltbQApFV9fd2JnX2dldF9tYXRoYXJnc19vcAA6FV9fd2JnX3NldF9tYXRoYXJnc19vcAAqEl9fd2JnX211bGFyZ3NfZnJlZQB8Hl9fd2JnX2dldF9tdWxhcmdzX2luZGlyZWN0X3JocwA6Hl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X3JocwA9El9fd2JnX2RpdmFyZ3NfZnJlZQDYAR5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMArwEhcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24APxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAEAMZ21fZnJvbV9hcmdzAMsBDWd0Zl9mcm9tX2FyZ3MAwwEHZ21fYXJncwB9CGd0Zl9hcmdzAFsOd2RjbV9mcm9tX2FyZ3MAJg53ZG9wX2Zyb21fYXJncwAmDndkbWxfZnJvbV9hcmdzAB4Od2Rkdl9mcm9tX2FyZ3MAwQEJd2RjbV9hcmdzABkJd3FjbV9hcmdzABoJd2RvcF9hcmdzABsJd3FvcF9hcmdzABwJd2RtbF9hcmdzABQJd3FtbF9hcmdzABUJd2Rkdl9hcmdzAFYJd3Fkdl9hcmdzAFcQX193YmdfaW1tMDZfZnJlZQDZARBfX3diZ19pbW0xMl9mcmVlANoBEF9fd2JnX2ltbTE4X2ZyZWUA2wEOX193YmdfYWRkX2ZyZWUAugEPX193Ymdfbm9vcF9mcmVlAFwSYWRkX25ld190eXBlc2NyaXB0AFAGYWRkX3JhABYGYWRkX3JiAAsGYWRkX3JjAA8DYWRkALsBA2FuZAB/A2RpdgCAAQJlcQCBAQNleHAAggECZ3QAgwECbHQAhAEEbWxvZwCFAQRtcm9vAIYBBG1vZF8AhwEFbW92ZV8ALANtdWwAiAEDbm90AC0Cb3IAiQEDc2xsAIoBA3NybACLAQNzdWIAjAEDeG9yAI0BBG1sZHYAXQNyZXQAsAEEcmV0ZAAuE2Fsb2NfbmV3X3R5cGVzY3JpcHQAWAdhbG9jX3JhAE8EYWxvYwCxAQNtY2wALwNtY3AAjgEDbWVxAF4TYmhzaF9uZXdfdHlwZXNjcmlwdAAfBGJoc2gAMARiaGVpALIBBGJ1cm4AMQRjYWxsAF8DY2NwAGAEY3JvbwAyBGNzaXoAMwJjYgCzAQNsZGMAYQNsb2cAYgRsb2dkAGMEbWludAA0BHJ2cnQAtAEEc2N3cQCPAQNzcncAkAEEc3J3cQBkA3N3dwCRAQRzd3dxAGUCdHIAkgEDdHJvAGYEZWNrMQCTAQRlY3IxAJQBBGVkMTkAZwRrMjU2AJUBBHMyNTYAlgEEdGltZQA1E25vb3BfbmV3X3R5cGVzY3JpcHQAyAEEbm9vcADcAQRmbGFnALUBA2JhbACXAQNqbXAAtgEDam5lAJgBA3NtbwBoE2FkZGlfbmV3X3R5cGVzY3JpcHQAUQphZGRpX2ltbTEyAAwEYWRkaQCZAQRhbmRpAJoBBGRpdmkAmwEEZXhwaQCcAQRtb2RpAJ0BBG11bGkAngEDb3JpAJ8BBHNsbGkAoAEEc3JsaQChAQRzdWJpAKIBBHhvcmkAowEEam5laQCkAQJsYgClAQJsdwCmAQJzYgCnAQJzdwCoAQRtY3BpAKkBEmd0Zl9uZXdfdHlwZXNjcmlwdADFAQNndGYAqgEEbWNsaQAgEWdtX25ld190eXBlc2NyaXB0ADYIZ21faW1tMTgACQJnbQAhBG1vdmkAIgRqbnppACMEam1wZgAkE2ptcGJfbmV3X3R5cGVzY3JpcHQAFwRqbXBiACUEam56ZgCrAQRqbnpiAKwBBGpuZWYAaQpqbmViX2ltbTA2ABgEam5lYgBqAmppAEETY2ZlaV9uZXdfdHlwZXNjcmlwdAA4CmNmZWlfaW1tMjQAJwRjZmVpAEIEY2ZzaQBDA2NmZQC3AQNjZnMAuAEEcHNobABEBHBzaGgARQRwb3BsAEYEcG9waABHE3dkY21fbmV3X3R5cGVzY3JpcHQAwgEEd2RjbQBrBHdxY20AbAR3ZG9wAG0Ed3FvcABuBHdkbWwAbwR3cW1sAHAEd2RkdgBxBHdxZHYAcgR3ZG1kAHMEd3FtZAB0BHdkYW0AdQR3cWFtAHYEd2RtbQB3BHdxbW0AeARlY2FsAHkEYnNpegA3E2JsZGRfbmV3X3R5cGVzY3JpcHQATgdibGRkX3JkABgEYmxkZAB6Fl9fd2JnX2luc3RydWN0aW9uX2ZyZWUAWhRpbnN0cnVjdGlvbl90b19ieXRlcwAKEGluc3RydWN0aW9uX3NpemUA7gERcmVnaWRfbmV3X2NoZWNrZWQArQEJcmVnaWRfYmFsAN0BCnJlZ2lkX2NnYXMA3gEJcmVnaWRfZXJyAN8BCnJlZ2lkX2ZsYWcA4AEIcmVnaWRfZnAA4QEKcmVnaWRfZ2dhcwDiAQhyZWdpZF9ocADjAQhyZWdpZF9pcwDkAQhyZWdpZF9vZgDlAQlyZWdpZF9vbmUA5gEIcmVnaWRfcGMA5wEJcmVnaWRfcmV0AOgBCnJlZ2lkX3JldGwA6QEIcmVnaWRfc3AA6gEJcmVnaWRfc3BwAOsBDnJlZ2lkX3dyaXRhYmxlAOwBCnJlZ2lkX3plcm8A7QEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA1QELcmVnaWRfdG9fdTgA1gETbW92aV9uZXdfdHlwZXNjcmlwdAAXE21jbGlfbmV3X3R5cGVzY3JpcHQAFxNqbnppX25ld190eXBlc2NyaXB0ABcTam1wZl9uZXdfdHlwZXNjcmlwdAAXEm5vdF9uZXdfdHlwZXNjcmlwdAAfE3JldGRfbmV3X3R5cGVzY3JpcHQAHxNtb3ZlX25ld190eXBlc2NyaXB0AB8SbWNsX25ld190eXBlc2NyaXB0AB8TYnVybl9uZXdfdHlwZXNjcmlwdAAfE2Nyb29fbmV3X3R5cGVzY3JpcHQAHxNjc2l6X25ld190eXBlc2NyaXB0AB8TbWludF9uZXdfdHlwZXNjcmlwdAAfE3RpbWVfbmV3X3R5cGVzY3JpcHQAHxNic2l6X25ld190eXBlc2NyaXB0AB8ScmV0X25ld190eXBlc2NyaXB0AFgTYmhlaV9uZXdfdHlwZXNjcmlwdABYEWNiX25ld190eXBlc2NyaXB0AFgTcnZydF9uZXdfdHlwZXNjcmlwdABYE2ZsYWdfbmV3X3R5cGVzY3JpcHQAWBJqbXBfbmV3X3R5cGVzY3JpcHQAWBJjZmVfbmV3X3R5cGVzY3JpcHQAWBJjZnNfbmV3X3R5cGVzY3JpcHQAWBNtbGR2X25ld190eXBlc2NyaXB0AE4SbWVxX25ld190eXBlc2NyaXB0AE4SY2NwX25ld190eXBlc2NyaXB0AE4SbG9nX25ld190eXBlc2NyaXB0AE4TbG9nZF9uZXdfdHlwZXNjcmlwdABOE3Nyd3FfbmV3X3R5cGVzY3JpcHQAThNzd3dxX25ld190eXBlc2NyaXB0AE4SdHJvX25ld190eXBlc2NyaXB0AE4TZWQxOV9uZXdfdHlwZXNjcmlwdABOEnNtb19uZXdfdHlwZXNjcmlwdABOEmxkY19uZXdfdHlwZXNjcmlwdABOE2puZWZfbmV3X3R5cGVzY3JpcHQAThN3ZG1kX25ld190eXBlc2NyaXB0AE4Td3FtZF9uZXdfdHlwZXNjcmlwdABOE3dkYW1fbmV3X3R5cGVzY3JpcHQAThN3cWFtX25ld190eXBlc2NyaXB0AE4Td2RtbV9uZXdfdHlwZXNjcmlwdABOE3dxbW1fbmV3X3R5cGVzY3JpcHQAThNlY2FsX25ld190eXBlc2NyaXB0AE4TY2FsbF9uZXdfdHlwZXNjcmlwdABOEmFuZF9uZXdfdHlwZXNjcmlwdABQEmRpdl9uZXdfdHlwZXNjcmlwdABQEWVxX25ld190eXBlc2NyaXB0AFASZXhwX25ld190eXBlc2NyaXB0AFARZ3RfbmV3X3R5cGVzY3JpcHQAUBFsdF9uZXdfdHlwZXNjcmlwdABQE21sb2dfbmV3X3R5cGVzY3JpcHQAUBNtcm9vX25ld190eXBlc2NyaXB0AFASbW9kX25ld190eXBlc2NyaXB0AFASbXVsX25ld190eXBlc2NyaXB0AFARb3JfbmV3X3R5cGVzY3JpcHQAUBJzbGxfbmV3X3R5cGVzY3JpcHQAUBJzcmxfbmV3X3R5cGVzY3JpcHQAUBJzdWJfbmV3X3R5cGVzY3JpcHQAUBJ4b3JfbmV3X3R5cGVzY3JpcHQAUBJtY3BfbmV3X3R5cGVzY3JpcHQAUBNzY3dxX25ld190eXBlc2NyaXB0AFASc3J3X25ld190eXBlc2NyaXB0AFASc3d3X25ld190eXBlc2NyaXB0AFARdHJfbmV3X3R5cGVzY3JpcHQAUBNlY2sxX25ld190eXBlc2NyaXB0AFATZWNyMV9uZXdfdHlwZXNjcmlwdABQE2syNTZfbmV3X3R5cGVzY3JpcHQAUBNzMjU2X25ld190eXBlc2NyaXB0AFASYmFsX25ld190eXBlc2NyaXB0AFASam5lX25ld190eXBlc2NyaXB0AFATYW5kaV9uZXdfdHlwZXNjcmlwdABRE2RpdmlfbmV3X3R5cGVzY3JpcHQAURNleHBpX25ld190eXBlc2NyaXB0AFETbW9kaV9uZXdfdHlwZXNjcmlwdABRE211bGlfbmV3X3R5cGVzY3JpcHQAURJvcmlfbmV3X3R5cGVzY3JpcHQAURNzbGxpX25ld190eXBlc2NyaXB0AFETc3JsaV9uZXdfdHlwZXNjcmlwdABRE3N1YmlfbmV3X3R5cGVzY3JpcHQAURN4b3JpX25ld190eXBlc2NyaXB0AFETam5laV9uZXdfdHlwZXNjcmlwdABREWxiX25ld190eXBlc2NyaXB0AFERbHdfbmV3X3R5cGVzY3JpcHQAURFzYl9uZXdfdHlwZXNjcmlwdABREXN3X25ld190eXBlc2NyaXB0AFETbWNwaV9uZXdfdHlwZXNjcmlwdABRE2puemZfbmV3X3R5cGVzY3JpcHQAURNqbnpiX25ld190eXBlc2NyaXB0AFEOd3FjbV9mcm9tX2FyZ3MAJg53cW9wX2Zyb21fYXJncwAmH19fd2JnX3NldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMAPB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9saHMAPB5fX3diZ19zZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAPBFqaV9uZXdfdHlwZXNjcmlwdAA4E2Nmc2lfbmV3X3R5cGVzY3JpcHQAOBNwc2hsX25ld190eXBlc2NyaXB0ADgTcHNoaF9uZXdfdHlwZXNjcmlwdAA4E3BvcGxfbmV3X3R5cGVzY3JpcHQAOBNwb3BoX25ld190eXBlc2NyaXB0ADgTd3FvcF9uZXdfdHlwZXNjcmlwdADCARN3ZG1sX25ld190eXBlc2NyaXB0AMIBE3dkZHZfbmV3X3R5cGVzY3JpcHQAwgETd2RvcF9uZXdfdHlwZXNjcmlwdADCARN3cW1sX25ld190eXBlc2NyaXB0AMIBDndxbWxfZnJvbV9hcmdzAB4Td3Fkdl9uZXdfdHlwZXNjcmlwdADCAQ53cWR2X2Zyb21fYXJncwDBARN3cWNtX25ld190eXBlc2NyaXB0AMIBEF9fd2JnX3JlZ2lkX2ZyZWUA2QEQX193YmdfaW1tMjRfZnJlZQDbAQ5fX3diZ19tdWxfZnJlZQC6AQZqbXBfcmEATw5fX3diZ19qbXBfZnJlZQC6AQZjZmVfcmEATw5fX3diZ19jZmVfZnJlZQC6AQ1fX3diZ19nbV9mcmVlALoBD19fd2JnX2puemlfZnJlZQC6AQ9fX3diZ193ZGNtX2ZyZWUAugEOX193Ymdfc3J3X2ZyZWUAugEPX193YmdfbG9nZF9mcmVlALoBDl9fd2JnX3NybF9mcmVlALoBD19fd2JnX2Nyb29fZnJlZQC6AQ9fX3diZ19yZXRkX2ZyZWUAugEPX193Ymdfd3FtbV9mcmVlALoBDV9fd2JnX3NiX2ZyZWUAugEPX193YmdfdGltZV9mcmVlALoBD19fd2JnX3dxbWxfZnJlZQC6AQ9fX3diZ19zdWJpX2ZyZWUAugEOX193Ymdfc3ViX2ZyZWUAugEOX193Ymdfbm90X2ZyZWUAugENX193YmdfbGJfZnJlZQC6AQ9fX3diZ193cWFtX2ZyZWUAugEPX193YmdfczI1Nl9mcmVlALoBBWNiX3JhAE8NX193YmdfY2JfZnJlZQC6AQ9fX3diZ19wb3BoX2ZyZWUAugEPX193YmdfZGl2aV9mcmVlALoBD19fd2JnX21vZGlfZnJlZQC6AQ5fX3diZ19zd3dfZnJlZQC6AQ5fX3diZ19ndGZfZnJlZQC6AQpwb3BoX2ltbTI0ACcNX193YmdfamlfZnJlZQC6AQ9fX3diZ19zcndxX2ZyZWUAugEPX193Ymdfam1wZl9mcmVlALoBD19fd2JnX2syNTZfZnJlZQC6AQ9fX3diZ193ZG9wX2ZyZWUAugEPX193YmdfYW5kaV9mcmVlALoBD19fd2JnX3NsbGlfZnJlZQC6AQ5fX3diZ19tb2RfZnJlZQC6AQpwb3BsX2ltbTI0ACcPX193YmdfcG9wbF9mcmVlALoBD19fd2JnX2Fsb2NfZnJlZQC6AQ9fX3diZ193ZG1kX2ZyZWUAugEPX193YmdfbWxkdl9mcmVlALoBDV9fd2JnX3N3X2ZyZWUAugEPX193Ymdfam5lYl9mcmVlALoBDl9fd2JnX3Ryb19mcmVlALoBDl9fd2JnX29yaV9mcmVlALoBDl9fd2JnX3NsbF9mcmVlALoBD19fd2JnX3dxZHZfZnJlZQC6AQ9fX3diZ193cW1kX2ZyZWUAugEOX193Ymdfam5lX2ZyZWUAugEPX193YmdfbWxvZ19mcmVlALoBD19fd2JnX21pbnRfZnJlZQC6AQ9fX3diZ193cWNtX2ZyZWUAugEPX193YmdfbXVsaV9mcmVlALoBHl9fd2JnX2dldF9tdWxhcmdzX2luZGlyZWN0X2xocwA7D19fd2JnX21jbGlfZnJlZQC6AQ9fX3diZ19qbmVpX2ZyZWUAugEPX193YmdfY3Npel9mcmVlALoBDV9fd2JnX3RyX2ZyZWUAugEPX193YmdfYmxkZF9mcmVlALoBD19fd2JnX2V4cGlfZnJlZQC6AQ9fX3diZ194b3JpX2ZyZWUAugENX193Ymdfb3JfZnJlZQC6AQ9fX3diZ19lY2sxX2ZyZWUAugEHYmhlaV9yYQBPD19fd2JnX2JoZWlfZnJlZQC6AQhqaV9pbW0yNAAnD19fd2JnX2Nmc2lfZnJlZQC6AQ5fX3diZ19tY2xfZnJlZQC6AQ9fX3diZ19qbnpmX2ZyZWUAugEPX193Ymdfc3d3cV9mcmVlALoBDV9fd2JnX2d0X2ZyZWUAugEPX193Ymdfam1wYl9mcmVlALoBDl9fd2JnX2Rpdl9mcmVlALoBD19fd2JnX2J1cm5fZnJlZQC6AR9fX3diZ19nZXRfbWF0aGFyZ3NfaW5kaXJlY3RfcmhzADsOX193YmdfeG9yX2ZyZWUAugEHcnZydF9yYQBPD19fd2JnX3J2cnRfZnJlZQC6AQZyZXRfcmEATw5fX3diZ19yZXRfZnJlZQC6AQ9fX3diZ193ZG1sX2ZyZWUAugEPX193YmdfY2FsbF9mcmVlALoBD19fd2JnX3dkbW1fZnJlZQC6AQ9fX3diZ19tY3BpX2ZyZWUAugEPX193YmdfYWRkaV9mcmVlALoBD19fd2JnX2puemJfZnJlZQC6AQ9fX3diZ19tcm9vX2ZyZWUAugEOX193YmdfZXhwX2ZyZWUAugEOX193YmdfYmFsX2ZyZWUAugEGY2ZzX3JhAE8OX193YmdfY2ZzX2ZyZWUAugEPX193YmdfZWQxOV9mcmVlALoBD19fd2JnX3NybGlfZnJlZQC6AQpwc2hsX2ltbTI0ACcPX193YmdfcHNobF9mcmVlALoBDl9fd2JnX21lcV9mcmVlALoBD19fd2JnX2Joc2hfZnJlZQC6AQ5fX3diZ19sZGNfZnJlZQC6AQ9fX3diZ19qbmVmX2ZyZWUAugEKcHNoaF9pbW0yNAAnD19fd2JnX3BzaGhfZnJlZQC6AQ9fX3diZ193ZGFtX2ZyZWUAugEOX193YmdfbWNwX2ZyZWUAugENX193YmdfbHRfZnJlZQC6AQ9fX3diZ193cW9wX2ZyZWUAugEOX193YmdfYW5kX2ZyZWUAugEPX193YmdfYnNpel9mcmVlALoBD19fd2JnX3dkZHZfZnJlZQC6AQ9fX3diZ19lY2FsX2ZyZWUAugEKY2ZzaV9pbW0yNAAnD19fd2JnX2NmZWlfZnJlZQC6AQ9fX3diZ19lY3IxX2ZyZWUAugEPX193YmdfbW92aV9mcmVlALoBB2ZsYWdfcmEATw9fX3diZ19mbGFnX2ZyZWUAugEPX193YmdfbW92ZV9mcmVlALoBD19fd2JnX3Njd3FfZnJlZQC6AQ1fX3diZ19lcV9mcmVlALoBDl9fd2JnX3Ntb19mcmVlALoBDl9fd2JnX2xvZ19mcmVlALoBDl9fd2JnX2NjcF9mcmVlALoBDV9fd2JnX2x3X2ZyZWUAugETam5lYl9uZXdfdHlwZXNjcmlwdABOCndxZHZfaW1tMDYAGAp3cW1sX2ltbTA2ABgKd2RtbF9pbW0wNgAYCndxb3BfaW1tMDYAGAp3ZG9wX2ltbTA2ABgKd3FjbV9pbW0wNgAYCndkZHZfaW1tMDYAGAp3ZGNtX2ltbTA2ABgKam5lZl9pbW0wNgAYCWxkY19pbW0wNgAYBm11bF9yYQAWB3dkY21fcmMADwd3ZGNtX3JiAAsHd2RjbV9yYQAWBnNyd19yYwAPBnNyd19yYgALBnNyd19yYQAWBm11bF9yYwAPBm11bF9yYgALB2xvZ2RfcmEAFgZzcmxfcmMADwZzcmxfcmIACwZzcmxfcmEAFgdsb2dkX3JiAAsHam56aV9yYQAWB3JldGRfcmIACwdyZXRkX3JhABYHd3FtbV9yZAAYB3dxbW1fcmMADwd3cW1tX3JiAAsHd3FtbV9yYQAWBXNiX3JiAAsFc2JfcmEAFgd0aW1lX3JiAAsHdGltZV9yYQAWB3dxbWxfcmMADwd3cW1sX3JiAAsHd3FtbF9yYQAWCnN1YmlfaW1tMTIADAdzdWJpX3JiAAsHc3ViaV9yYQAWBnN1Yl9yYwAPBnN1Yl9yYgALBnN1Yl9yYQAWBm5vdF9yYgALBm5vdF9yYQAWCHNiX2ltbTEyAAwFbGJfcmIACwVsYl9yYQAWB3dxYW1fcmQAGAd3cWFtX3JjAA8Hd3FhbV9yYgALB3dxYW1fcmEAFgdzMjU2X3JjAA8HczI1Nl9yYgALB3MyNTZfcmEAFghsYl9pbW0xMgAMB2RpdmlfcmIACwdkaXZpX3JhABYKbW9kaV9pbW0xMgAMB21vZGlfcmIACwdtb2RpX3JhABYGc3d3X3JjAA8Gc3d3X3JiAAsGc3d3X3JhABYJZ3RmX2ltbTEyAAwGZ3RmX3JiAAsGZ3RmX3JhABYHc3J3cV9yZAAYB3Nyd3FfcmMADwdzcndxX3JiAAsHc3J3cV9yYQAWCmpuemlfaW1tMTgACQdqbXBmX3JhABYHbG9nZF9yYwAPB2syNTZfcmIACwdrMjU2X3JhABYHd2RvcF9yYwAPB3dkb3BfcmIACwd3ZG9wX3JhABYKZGl2aV9pbW0xMgAMB2Nyb29fcmIACwdjcm9vX3JhABYKc2xsaV9pbW0xMgAMB3NsbGlfcmIACwdzbGxpX3JhABYGbW9kX3JjAA8GbW9kX3JiAAsGbW9kX3JhABYKYW5kaV9pbW0xMgAMB2FuZGlfcmIACwdhbmRpX3JhABYHd2RtZF9yZAAYB3dkbWRfcmMADwd3ZG1kX3JiAAsHd2RtZF9yYQAWB21sZHZfcmQAGAdtbGR2X3JjAA8HbWxkdl9yYgALB21sZHZfcmEAFghzd19pbW0xMgAMBXN3X3JiAAsFc3dfcmEAFgdrMjU2X3JjAA8Ham5lYl9yYgALB2puZWJfcmEAFgZ0cm9fcmQAGAZ0cm9fcmMADwZ0cm9fcmIACwZ0cm9fcmEAFglvcmlfaW1tMTIADAZvcmlfcmIACwZvcmlfcmEAFgZzbGxfcmMADwZzbGxfcmIACwZzbGxfcmEAFgd3cWR2X3JjAA8Hd3Fkdl9yYgALB3dxZHZfcmEAFgd3cW1kX3JkABgHd3FtZF9yYwAPB3dxbWRfcmIACwd3cW1kX3JhABYHam5lYl9yYwAPBmpuZV9yYgALBmpuZV9yYQAWB21sb2dfcmMADwdtbG9nX3JiAAsHbWxvZ19yYQAWB21pbnRfcmIACwdtaW50X3JhABYHd3FjbV9yYwAPB3dxY21fcmIACwd3cWNtX3JhABYKbXVsaV9pbW0xMgAMB211bGlfcmIACwdtdWxpX3JhABYKbWNsaV9pbW0xOAAJB21jbGlfcmEAFgpqbmVpX2ltbTEyAAwHam5laV9yYgALB2puZWlfcmEAFgdjc2l6X3JiAAsHY3Npel9yYQAWBXRyX3JjAA8FdHJfcmIACwV0cl9yYQAWB2xvZ2RfcmQAGAZqbmVfcmMADwdibGRkX3JiAAsHYmxkZF9yYQAWCmV4cGlfaW1tMTIADAdleHBpX3JiAAsHZXhwaV9yYQAWCnhvcmlfaW1tMTIADAd4b3JpX3JiAAsHeG9yaV9yYQAWBW9yX3JjAA8Fb3JfcmIACwVvcl9yYQAWB2VjazFfcmMADwdlY2sxX3JiAAsHZWNrMV9yYQAWBm1jbF9yYgALBm1jbF9yYQAWCmpuemZfaW1tMTIADAdqbnpmX3JiAAsHam56Zl9yYQAWB3N3d3FfcmQAGAdzd3dxX3JjAA8Hc3d3cV9yYgALB3N3d3FfcmEAFgVndF9yYwAPBWd0X3JiAAsFZ3RfcmEAFgpqbXBmX2ltbTE4AAkHam1wYl9yYQAWBmRpdl9yYwAPBmRpdl9yYgALBmRpdl9yYQAWB2J1cm5fcmIACwdidXJuX3JhABYTX193YmdfbWF0aGFyZ3NfZnJlZQB7Bnhvcl9yYwAPBnhvcl9yYgALBnhvcl9yYQAWB3dkbWxfcmMADwd3ZG1sX3JiAAsHd2RtbF9yYQAWB2NhbGxfcmQAGAdjYWxsX3JjAA8HY2FsbF9yYgALB2NhbGxfcmEAFgd3ZG1tX3JkABgHd2RtbV9yYwAPB3dkbW1fcmIACwd3ZG1tX3JhABYKbWNwaV9pbW0xMgAMB21jcGlfcmIACwdtY3BpX3JhABYHYmxkZF9yYwAPB2FkZGlfcmIACwdhZGRpX3JhABYKam56Yl9pbW0xMgAMB2puemJfcmIACwdqbnpiX3JhABYHbXJvb19yYwAPB21yb29fcmIACwdtcm9vX3JhABYGZXhwX3JjAA8GZXhwX3JiAAsGZXhwX3JhABYGYmFsX3JjAA8GYmFsX3JiAAsGYmFsX3JhABYHZWQxOV9yZAAYB2VkMTlfcmMADwdlZDE5X3JiAAsHZWQxOV9yYQAWCnNybGlfaW1tMTIADAdzcmxpX3JiAAsHc3JsaV9yYQAWBm1lcV9yZAAYBm1lcV9yYwAPBm1lcV9yYgALBm1lcV9yYQAWB2Joc2hfcmIACwdiaHNoX3JhABYGbGRjX3JjAA8GbGRjX3JiAAsGbGRjX3JhABYHam5lZl9yYwAPB2puZWZfcmIACwdqbmVmX3JhABYHd2RhbV9yZAAYB3dkYW1fcmMADwd3ZGFtX3JiAAsHd2RhbV9yYQAWBm1jcF9yYwAPBm1jcF9yYgALBm1jcF9yYQAWBWx0X3JjAA8FbHRfcmIACwVsdF9yYQAWB3dxb3BfcmMADwd3cW9wX3JiAAsHd3FvcF9yYQAWBmFuZF9yYwAPBmFuZF9yYgALBmFuZF9yYQAWB2JzaXpfcmIACwdic2l6X3JhABYHd2Rkdl9yYwAPB3dkZHZfcmIACwd3ZGR2X3JhABYHZWNhbF9yZAAYB2VjYWxfcmMADwdlY2FsX3JiAAsHZWNhbF9yYQAWB2VjcjFfcmMADwdlY3IxX3JiAAsHZWNyMV9yYQAWCm1vdmlfaW1tMTgA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NgIYIAIgADYCFCACQcCGwAA2AhAgAkHwiMAANgIMIAJBDGoiACgCCCIBRQRAIwBBIGsiACQAIABBDGpCADcCACAAQQE2AgQgAEHwiMAANgIIIABBKzYCHCAAQZiIwAA2AhggACAAQRhqNgIAIABB4IjAABBKAAsgAUEMaigCACECAkACQCABKAIEDgIAAAELIAINAAsgAC0AECEBIAAtABEaQeCJwABB4InAACgCACIAQQFqNgIAAkAgAEEASA0AQayNwAAtAABBAXENAEGsjcAAQQE6AABBqI3AAEGojcAAKAIAQQFqNgIAQdyJwAAoAgBBAEgNAEGsjcAAQQA6AAAgAUUNAAALAAs1AQF/IAEQxgEgASgCACICQX9GBEAQ0AEACyABIAJBAWo2AgAgACABNgIEIAAgAUEEajYCAAsxAQF/IAEoAgAiAkF/RwRAIAEgAkEBajYCACAAIAE2AgQgACABQQRqNgIADwsQ0AEACzUBAX8gAEE5TwRAQeCCwABBGRDUAQALQQxBBBC8ASICIAA6AAggAiABNgIEIAJBADYCACACCzAAIAAQUiABEFIgAhBSIAMQUhASIQBBCEEEELwBIgEgAK1C////B4NCIIY3AgAgAQstACAAEMYBIAAoAgBBf0YEQBDQAQALIAAvAAQgAEEGai0AAEEQdHIQygEQvQELLAAgABBSIAEQUiACEFIQKyEAQQhBBBC8ASIBIACtQv///weDQiCGNwIAIAELLAAgABBSIAEQUiACEFMQOSEAQQhBBBC8ASIBIACtQv///weDQiCGNwIAIAELJQEBfwJAIAAEQCAAKAIADQEgAC0ABCAAEAQPCxDPAQALENABAAslAQF/AkAgAARAIAAoAgANASAALwEEIAAQBA8LEM8BAAsQ0AEACyUBAX8CQCAABEAgACgCAA0BIAAoAgQgABAEDwsQzwEACxDQAQALKAAgASgCAEUEQCABQX82AgAgACABNgIEIAAgAUEEajYCAA8LENABAAspACADED4hAyAAEL8BIAEQvwEgAhC/ASADEMQBQQh0QeQAchDHARC+AQspACADED4hAyAAEL8BIAEQvwEgAhC/ASADEMQBQQh0QeUAchDHARC+AQslAQF/IAAQUiEAQQhBBBC8ASIBIABBAnRB/AFxrUIghjcCACABCyAAIABBAWsiAEEFTQRAIABBAWoPC0HggsAAQRkQ1AEACyABAX8gABDGASAAKAIABEAQ0AEACyAAKAIEIAAQBBAECyMAIAIQBSECIAAQvwEgARC/ASACEDlBCHRBygByEMcBEL4BCx4AAkAgAARAIAAoAgANASAAEAQPCxDPAQALENABAAsPACAAIAEgAiADQRIQ8AELDwAgACABIAIgA0EYEPABCw8AIAAgASACIANBHBDwAQsPACAAIAEgAiADQR0Q8AELDwAgACABIAIgA0EhEPEBCw8AIAAgASACIANBIhDwAQsPACAAIAEgAiADQSMQ8AELDwAgACABIAIgA0EoEPABCw8AIAAgASACIANBKhDwAQsPACAAIAEgAiADQSwQ8AELDwAgACABIAIgA0EvEPABCw8AIAAgASACIANBOBDwAQsQACAAIAEgAiADQdMAEPEBCxAAIAAgASACIANB1AAQ8QELEAAgACABIAIgA0HeABDxAQsQACAAIAEgAiADQd8AEPEBCxAAIAAgASACIANB4AAQ8QELEAAgACABIAIgA0HhABDxAQsQACAAIAEgAiADQeIAEPEBCxAAIAAgASACIANB4wAQ8QELEAAgACABIAIgA0HkABDxAQsQACAAIAEgAiADQeUAEPEBCxAAIAAgASACIANB5gAQ8AELEAAgACABIAIgA0HnABDwAQsQACAAIAEgAiADQegAEPABCxAAIAAgASACIANB6QAQ8AELEAAgACABIAIgA0HqABDwAQsQACAAIAEgAiADQesAEPABCxAAIAAgASACIANB7AAQ8AELEAAgACABIAIgA0HuABDwAQsdAQF/IwBBEGsiASQAIAFBCGogABAdIAFBEGokAAsdAQF/IwBBEGsiASQAIAFBCGogABATIAFBEGokAAsfACABEFkhASAAEL8BIAEQuQFBCHRBzAByEMcBEL4BCxkAIAAgASACQSBBACAEG0EQQQAgAxtyEBILDQAgACABIAJBARDyAQsNACAAIAEgAkECEPIBCw0AIAAgASACQQMQ8gELDQAgACABIAJBBBDyAQsNACAAIAEgAkEFEPIBCw0AIAAgASACQQYQ8gELDQAgACABIAJBBxDyAQsNACAAIAEgAkEIEPIBCw0AIAAgASACQQkQ8gELDQAgACABIAJBCxDyAQsNACAAIAEgAkENEPIBCw0AIAAgASACQQ4Q8gELDQAgACABIAJBDxDyAQsNACAAIAEgAkEQEPIBCw0AIAAgASACQREQ8gELDQAgACABIAJBFxDyAQsNACAAIAEgAkEmEPIBCw0AIAAgASACQScQ8gELDQAgACABIAJBKRDyAQsNACAAIAEgAkErEPIBCw0AIAAgASACQS0Q8gELDQAgACABIAJBLhDyAQsNACAAIAEgAkEwEPIBCw0AIAAgASACQTEQ8gELDQAgACABIAJBNRDyAQsNACAAIAEgAkE3EPIBCw0AIAAgASACQTkQ9AELDQAgACABIAJBOhD0AQsNACAAIAEgAkE7EPQBCw0AIAAgASACQTwQ9AELDQAgACABIAJBPRD0AQsNACAAIAEgAkE+EPQBCw0AIAAgASACQT8Q9AELDgAgACABIAJBwAAQ9AELDgAgACABIAJBwQAQ9AELDgAgACABIAJBwgAQ9AELDgAgACABIAJBwwAQ9AELDgAgACABIAJBxAAQ9AELDgAgACABIAJBxQAQ9AELDgAgACABIAJBxgAQ9AELDgAgACABIAJBxwAQ9AELDgAgACABIAJByAAQ9AELDgAgACABIAJByQAQ9AELDgAgACABIAJBygAQ9AELDgAgACABIAJB0QAQ9AELDgAgACABIAJB0gAQ9AELGAEBfyAAQf8BcUE/TQR/IAAQvQEFQQALCx4BAX9BCEEEELwBIgEgAK1C////B4NCIIY3AgAgAQsbACAAEMYBIAAoAgBBf0YEQBDQAQALIAAtAAQLCQAgAEETEPUBCwkAIABBFRD1AQsJACAAQRoQ9QELCQAgAEEgEPUBCwkAIABBJRD1AQsJACAAQTQQ9QELCQAgAEE2EPUBCwoAIABB2AAQ9QELCgAgAEHZABD1AQsXACABQRB0QYCA/AdxIABBAnRB/AFxcgsXACAAEMYBIAAoAgAEQBDQAQALIAAQBAscACAAEL8BIAEQvwEgAhC/ARArQQh0EMcBEL4BCxIAIAEgABDJASIABEAgAA8LAAsbAQF/QQhBBBC8ASIBIAA6AAQgAUEANgIAIAELGwEBf0EIQQQQvAEiASAANgIEIAFBADYCACABC24AIABB/wFxQcAATwRAIwBBMGsiACQAIABBIjYCDCAAQYCAwAA2AgggAEEcakIBNwIAIABBATYCFCAAQbiGwAA2AhAgAEEBNgIsIAAgAEEoajYCGCAAIABBCGo2AiggAEEQakG4gMAAEEoACyAACxQAIAAgASACQSBBACADGyAEchASCxgAIAAQUiABEFIgAhBSIAMQPhDEARCuAQsXACAAEFIgARBSIAIQUiADEFIQEhCuAQsTACAAEFIgARBSIAIQBRA5EK4BCxEAIAAgASACQSBBACADGxASCxMAIAAQUiABEFIgAhBTEDkQrgELDAAgAARADwsQzwEACxQBAX9BBEEBELwBIgEgADYAACABCxQBAX9BCEEEELwBIgBCADcCACAAC4EDAQV/Qa2NwAAtAAAaAn8gAEEJTwRAAkBBzf97QRAgACAAQRBNGyIAayABTQ0AIABBECABQQtqQXhxIAFBC0kbIgRqQQxqEAEiAkUNACACQQhrIQECQCAAQQFrIgMgAnFFBEAgASEADAELIAJBBGsiBSgCACIGQXhxIAIgA2pBACAAa3FBCGsiAiAAQQAgAiABa0EQTRtqIgAgAWsiAmshAyAGQQNxBEAgACADIAAoAgRBAXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACABIAJqIgMgAygCBEEBcjYCBCABIAIQBgwBCyABKAIAIQEgACADNgIEIAAgASACajYCAAsCQCAAKAIEIgFBA3FFDQAgAUF4cSICIARBEGpNDQAgACAEIAFBAXFyQQJyNgIEIAAgBGoiASACIARrIgRBA3I2AgQgACACaiICIAIoAgRBAXI2AgQgASAEEAYLIABBCGohAwsgAwwBCyABEAELCw0AIAAQ1wFBCnZBP3ELEAAgABBSIAEQWRC5ARCuAQsgACAAQsWAsKa9qOHJSzcDCCAAQpXM9oWR7LDtHzcDAAsLACABBEAgABAECwsLACAAIwBqJAAjAAsNAEHwiMAAQRsQ1AEACw4AQYuJwABBzwAQ1AEACwsAIAAxAAAgARADCwsAIAAzAQAgARADCwsAIAA1AgAgARADCwkAIAAgARAAAAsKACAAQT9xEL0BCwoAIAAQUkH/AXELBwAgAEEIdAsHACAAED4aCwcAIAAQUhoLBwAgABBTGgsHACAAEFQaCwoAQTMQxwEQvgELBwBBCxC9AQsHAEEKEL0BCwcAQQgQvQELBwBBDxC9AQsHAEEGEL0BCwcAQQkQvQELBwBBBxC9AQsHAEEMEL0BCwcAQQIQvQELBwBBARC9AQsHAEEDEL0BCwcAQQ0QvQELBwBBDhC9AQsHAEEFEL0BCwcAQQQQvQELBwBBEBC9AQsHAEEAEL0BCwQAQQQLAgALJAAgABC/ASABEL8BIAIQvwEgAxC/ARASQQh0IARyEMcBEL4BCyMAIAAQvwEgARC/ASACEL8BIAMQDRASQQh0IARyEMcBEL4BCx8AIAAQvwEgARC/ASACEL8BECtBCHQgA3IQxwEQvgELYgEBfyMAQTBrIgQkACAEIAA2AgwgACADTwRAIARBHGpCATcCACAEQQI2AhQgBCACNgIQIARBBDYCLCAEIARBKGo2AhggBCAEQQxqNgIoIARBEGogARBKAAsgBEEwaiQAIAALHgAgABC/ASABEL8BIAIQDhA5QQh0IANyEMcBEL4BCxsAIAAQvwEaIABBCnRBgPgDcSABchDHARC+AQtSAQJ/IwBBEGsiBSQAIAVBCGogAxATIAUtAAkhAyAFLQAIIQYgABC/ASABEL8BIAIQvwEgBkEBcSADQQFxEH5BCHQgBHIQxwEQvgEgBUEQaiQAC1ABAn8jAEEQayIFJAAgBUEIaiADEB0gBS0ACCEDIAUtAAkhBiAAEL8BIAEQvwEgAhC/ASADQQFxIAYQwAFBCHQgBHIQxwEQvgEgBUEQaiQAC0oAIAAQvwEaIAEQECIBQRB0QYCA/AdxIABBEnRBgIDwH3EgAXIiAEGA/gNxQQh0IABBCHZBgP4DcXJBCHZyQQh0IAJyEMcBEL4BC0kBAX8jAEEQayIDJAAgABDGASABIAJPBEBB4ILAAEEZENQBAAsgA0EIaiAAEFUgAygCDCADKAIIIAE6AAFBADYCACADQRBqJAALQgAgABC/ARogARC/ARogAEESdEGAgPAHcSABQQx0QYDgP3FyIgBBCHZBgP4DcSAAQYDgA3FBCHRyIAJyEMcBEL4BCzYAIAAQESIAQRB0QYCA/AdxIABBCHZBgP4DcSAAQYD+A3FBCHRyQQh2ckEIdCABchDHARC+AQsL5AkBAEGAgMAAC9oJQ2hlY2tSZWdJZCB3YXMgZ2l2ZW4gaW52YWxpZCBSZWdJZGZ1ZWwtYXNtL3NyYy9saWIucnMAAAAiABAAEwAAAG4AAAAiAAAAVmFsdWUgYGAgb3V0IG9mIHJhbmdlIGZvciA2LWJpdCBpbW1lZGlhdGUAAABIABAABwAAAE8AEAAiAAAAIgAQABMAAACuAwAAHAAAAGAgb3V0IG9mIHJhbmdlIGZvciAxMi1iaXQgaW1tZWRpYXRlAEgAEAAHAAAAlAAQACMAAAAiABAAEwAAALMDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDE4LWJpdCBpbW1lZGlhdGUASAAQAAcAAADYABAAIwAAACIAEAATAAAAuAMAABwAAABgIG91dCBvZiByYW5nZSBmb3IgMjQtYml0IGltbWVkaWF0ZQBIABAABwAAABwBEAAjAAAAIgAQABMAAAC9AwAAHAAAAGludmFsaWQgZW51bSB2YWx1ZSBwYXNzZWQAAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAACoAAAAqQAAAKoAAACrAAAArAAAAK0AAACwAAAAugAAALsAAABwBBAAAAAAAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OWNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEMEEAAcAAAAhAIAAB4AAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0ADsJcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkCBndhbHJ1cwYwLjIwLjMMd2FzbS1iaW5kZ2VuBjAuMi45Mg==", imports);
28384
28541
  }
28385
28542
  async function initWasm2() {
28386
28543
  return await __wbg_init(wasm());
@@ -28394,6 +28551,8 @@ spurious results.`);
28394
28551
  exports.BAL = BAL;
28395
28552
  exports.BHEI = BHEI;
28396
28553
  exports.BHSH = BHSH;
28554
+ exports.BLDD = BLDD;
28555
+ exports.BSIZ = BSIZ;
28397
28556
  exports.BURN = BURN;
28398
28557
  exports.CALL = CALL;
28399
28558
  exports.CB = CB;
@@ -28519,6 +28678,8 @@ spurious results.`);
28519
28678
  exports.bal = bal;
28520
28679
  exports.bhei = bhei;
28521
28680
  exports.bhsh = bhsh;
28681
+ exports.bldd = bldd;
28682
+ exports.bsiz = bsiz;
28522
28683
  exports.burn = burn;
28523
28684
  exports.call = call;
28524
28685
  exports.cb = cb;
@@ -28638,9 +28799,9 @@ spurious results.`);
28638
28799
  // ../versions/dist/index.mjs
28639
28800
  function getBuiltinVersions() {
28640
28801
  return {
28641
- FORC: "0.61.2",
28642
- FUEL_CORE: "0.31.0",
28643
- FUELS: "0.92.1"
28802
+ FORC: "0.63.1",
28803
+ FUEL_CORE: "0.33.0",
28804
+ FUELS: "0.94.0"
28644
28805
  };
28645
28806
  }
28646
28807
  function parseVersion(version) {
@@ -28711,6 +28872,10 @@ This unreleased fuel-core build may include features and updates not yet support
28711
28872
  ErrorCode2["INVALID_DATA"] = "invalid-data";
28712
28873
  ErrorCode2["FUNCTION_NOT_FOUND"] = "function-not-found";
28713
28874
  ErrorCode2["UNSUPPORTED_ENCODING_VERSION"] = "unsupported-encoding-version";
28875
+ ErrorCode2["TIMEOUT_EXCEEDED"] = "timeout-exceeded";
28876
+ ErrorCode2["CONFIG_FILE_NOT_FOUND"] = "config-file-not-found";
28877
+ ErrorCode2["CONFIG_FILE_ALREADY_EXISTS"] = "config-file-already-exists";
28878
+ ErrorCode2["WORKSPACE_NOT_DETECTED"] = "workspace-not-detected";
28714
28879
  ErrorCode2["INVALID_BECH32_ADDRESS"] = "invalid-bech32-address";
28715
28880
  ErrorCode2["INVALID_EVM_ADDRESS"] = "invalid-evm-address";
28716
28881
  ErrorCode2["INVALID_B256_ADDRESS"] = "invalid-b256-address";
@@ -28736,6 +28901,7 @@ This unreleased fuel-core build may include features and updates not yet support
28736
28901
  ErrorCode2["MISSING_REQUIRED_PARAMETER"] = "missing-required-parameter";
28737
28902
  ErrorCode2["INVALID_REQUEST"] = "invalid-request";
28738
28903
  ErrorCode2["INVALID_TRANSFER_AMOUNT"] = "invalid-transfer-amount";
28904
+ ErrorCode2["NOT_ENOUGH_FUNDS"] = "not-enough-funds";
28739
28905
  ErrorCode2["INVALID_CREDENTIALS"] = "invalid-credentials";
28740
28906
  ErrorCode2["HASHER_LOCKED"] = "hasher-locked";
28741
28907
  ErrorCode2["GAS_PRICE_TOO_LOW"] = "gas-price-too-low";
@@ -28747,11 +28913,16 @@ This unreleased fuel-core build may include features and updates not yet support
28747
28913
  ErrorCode2["INVALID_TRANSACTION_INPUT"] = "invalid-transaction-input";
28748
28914
  ErrorCode2["INVALID_TRANSACTION_OUTPUT"] = "invalid-transaction-output";
28749
28915
  ErrorCode2["INVALID_TRANSACTION_STATUS"] = "invalid-transaction-status";
28750
- ErrorCode2["INVALID_TRANSACTION_TYPE"] = "invalid-transaction-type";
28916
+ ErrorCode2["UNSUPPORTED_TRANSACTION_TYPE"] = "unsupported-transaction-type";
28751
28917
  ErrorCode2["TRANSACTION_ERROR"] = "transaction-error";
28752
28918
  ErrorCode2["INVALID_POLICY_TYPE"] = "invalid-policy-type";
28753
28919
  ErrorCode2["DUPLICATED_POLICY"] = "duplicated-policy";
28754
28920
  ErrorCode2["TRANSACTION_SQUEEZED_OUT"] = "transaction-squeezed-out";
28921
+ ErrorCode2["CONTRACT_SIZE_EXCEEDS_LIMIT"] = "contract-size-exceeds-limit";
28922
+ ErrorCode2["INVALID_CHUNK_SIZE_MULTIPLIER"] = "invalid-chunk-size-multiplier";
28923
+ ErrorCode2["MAX_INPUTS_EXCEEDED"] = "max-inputs-exceeded";
28924
+ ErrorCode2["FUNDS_TOO_LOW"] = "funds-too-low";
28925
+ ErrorCode2["MAX_OUTPUTS_EXCEEDED"] = "max-outputs-exceeded";
28755
28926
  ErrorCode2["INVALID_RECEIPT_TYPE"] = "invalid-receipt-type";
28756
28927
  ErrorCode2["INVALID_WORD_LIST"] = "invalid-word-list";
28757
28928
  ErrorCode2["INVALID_MNEMONIC"] = "invalid-mnemonic";
@@ -29334,6 +29505,9 @@ If you are attempting to transform a hex value, please make sure it is being pas
29334
29505
  function toUtf8String(bytes3) {
29335
29506
  return helper(getUtf8CodePoints(bytes3));
29336
29507
  }
29508
+ function assertUnreachable(_x) {
29509
+ throw new Error("Didn't expect to get here");
29510
+ }
29337
29511
 
29338
29512
  // ../../node_modules/.pnpm/@noble+hashes@1.3.3/node_modules/@noble/hashes/esm/_assert.js
29339
29513
  function number(n) {
@@ -29687,16 +29861,16 @@ If you are attempting to transform a hex value, please make sure it is being pas
29687
29861
  this.blockLen = this.iHash.blockLen;
29688
29862
  this.outputLen = this.iHash.outputLen;
29689
29863
  const blockLen = this.blockLen;
29690
- const pad3 = new Uint8Array(blockLen);
29691
- pad3.set(key.length > blockLen ? hash4.create().update(key).digest() : key);
29692
- for (let i = 0; i < pad3.length; i++)
29693
- pad3[i] ^= 54;
29694
- this.iHash.update(pad3);
29864
+ const pad = new Uint8Array(blockLen);
29865
+ pad.set(key.length > blockLen ? hash4.create().update(key).digest() : key);
29866
+ for (let i = 0; i < pad.length; i++)
29867
+ pad[i] ^= 54;
29868
+ this.iHash.update(pad);
29695
29869
  this.oHash = hash4.create();
29696
- for (let i = 0; i < pad3.length; i++)
29697
- pad3[i] ^= 54 ^ 92;
29698
- this.oHash.update(pad3);
29699
- pad3.fill(0);
29870
+ for (let i = 0; i < pad.length; i++)
29871
+ pad[i] ^= 54 ^ 92;
29872
+ this.oHash.update(pad);
29873
+ pad.fill(0);
29700
29874
  }
29701
29875
  update(buf) {
29702
29876
  exists(this);
@@ -30241,6 +30415,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
30241
30415
  var import_crypto3 = __toESM(__require("crypto"), 1);
30242
30416
  var import_crypto4 = __toESM(__require("crypto"), 1);
30243
30417
  var import_crypto5 = __require("crypto");
30418
+ var import_crypto6 = __require("crypto");
30244
30419
  var scrypt2 = (params) => {
30245
30420
  const { password, salt, n, p, r, dklen } = params;
30246
30421
  const derivedKey = scrypt(password, salt, { N: n, r, p, dkLen: dklen });
@@ -30354,6 +30529,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
30354
30529
  computeHMAC = func;
30355
30530
  };
30356
30531
  Object.freeze(computeHmac);
30532
+ var randomUUID = () => (0, import_crypto6.randomUUID)();
30357
30533
  var api = {
30358
30534
  bufferFromString,
30359
30535
  stringFromBuffer,
@@ -30367,7 +30543,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
30367
30543
  encryptJsonWalletData,
30368
30544
  computeHmac,
30369
30545
  pbkdf2: pbkdf22,
30370
- ripemd160: ripemd1602
30546
+ ripemd160: ripemd1602,
30547
+ randomUUID
30371
30548
  };
30372
30549
  var node_default = api;
30373
30550
  var {
@@ -30383,7 +30560,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
30383
30560
  encryptJsonWalletData: encryptJsonWalletData2,
30384
30561
  computeHmac: computeHmac2,
30385
30562
  pbkdf2: pbkdf222,
30386
- ripemd160: ripemd16022
30563
+ ripemd160: ripemd16022,
30564
+ randomUUID: randomUUID2
30387
30565
  } = node_default;
30388
30566
 
30389
30567
  // ../hasher/dist/index.mjs
@@ -30430,18 +30608,21 @@ If you are attempting to transform a hex value, please make sure it is being pas
30430
30608
  var RAW_SLICE_CODER_TYPE = "raw untyped slice";
30431
30609
  var BOOL_CODER_TYPE = "bool";
30432
30610
  var B256_CODER_TYPE = "b256";
30433
- var B512_CODER_TYPE = "struct B512";
30434
- var OPTION_CODER_TYPE = "enum Option";
30435
- var VEC_CODER_TYPE = "struct Vec";
30436
- var BYTES_CODER_TYPE = "struct Bytes";
30437
- var STD_STRING_CODER_TYPE = "struct String";
30611
+ var B512_CODER_TYPE = "struct std::b512::B512";
30612
+ var OPTION_CODER_TYPE = "enum std::option::Option";
30613
+ var VEC_CODER_TYPE = "struct std::vec::Vec";
30614
+ var BYTES_CODER_TYPE = "struct std::bytes::Bytes";
30615
+ var STD_STRING_CODER_TYPE = "struct std::string::String";
30438
30616
  var STR_SLICE_CODER_TYPE = "str";
30617
+ var VOID_TYPE = "()";
30618
+ var optionRegEx = /^enum (std::option::)?Option$/m;
30439
30619
  var stringRegEx = /str\[(?<length>[0-9]+)\]/;
30440
30620
  var arrayRegEx = /\[(?<item>[\w\s\\[\]]+);\s*(?<length>[0-9]+)\]/;
30441
- var structRegEx = /^struct (?<name>\w+)$/;
30442
- var enumRegEx = /^enum (?<name>\w+)$/;
30621
+ var structRegEx = /struct.+/;
30622
+ var enumRegEx = /^enum.+$/;
30443
30623
  var tupleRegEx = /^\((?<items>.*)\)$/;
30444
- var genericRegEx = /^generic (?<name>\w+)$/;
30624
+ var genericRegEx = /^generic.+$/;
30625
+ var fullNameRegExMatch = /([^\s]+)$/m;
30445
30626
  var ENCODING_V1 = "1";
30446
30627
  var WORD_SIZE = 8;
30447
30628
  var BYTES_32 = 32;
@@ -30695,16 +30876,11 @@ If you are attempting to transform a hex value, please make sure it is being pas
30695
30876
  this.coders = coders;
30696
30877
  this.#caseIndexCoder = caseIndexCoder;
30697
30878
  this.#encodedValueSize = encodedValueSize;
30698
- this.#shouldValidateLength = !(this.type === OPTION_CODER_TYPE || hasNestedOption(coders));
30879
+ this.#shouldValidateLength = !(optionRegEx.test(this.type) || hasNestedOption(coders));
30699
30880
  }
30700
- // We parse a native enum as an empty tuple, so we are looking for a tuple with no child coders.
30701
- // The '()' is enough but the child coders is a stricter check.
30881
+ // Checks that we're handling a native enum that is of type void.
30702
30882
  #isNativeEnum(coder) {
30703
- if (this.type !== OPTION_CODER_TYPE && coder.type === "()") {
30704
- const tupleCoder = coder;
30705
- return tupleCoder.coders.length === 0;
30706
- }
30707
- return false;
30883
+ return this.type !== OPTION_CODER_TYPE && coder.type === VOID_TYPE;
30708
30884
  }
30709
30885
  #encodeNativeEnum(value) {
30710
30886
  const valueCoder = this.coders[value];
@@ -31059,16 +31235,6 @@ If you are attempting to transform a hex value, please make sure it is being pas
31059
31235
  );
31060
31236
  }
31061
31237
  };
31062
- var findFunctionByName = (abi, name) => {
31063
- const fn = abi.functions.find((f2) => f2.name === name);
31064
- if (!fn) {
31065
- throw new FuelError(
31066
- ErrorCode.FUNCTION_NOT_FOUND,
31067
- `Function with name '${name}' doesn't exist in the ABI`
31068
- );
31069
- }
31070
- return fn;
31071
- };
31072
31238
  var findTypeById = (abi, typeId) => {
31073
31239
  const type3 = abi.types.find((t) => t.typeId === typeId);
31074
31240
  if (!type3) {
@@ -31079,7 +31245,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
31079
31245
  }
31080
31246
  return type3;
31081
31247
  };
31082
- var findNonEmptyInputs = (abi, inputs) => inputs.filter((input) => findTypeById(abi, input.type).type !== "()");
31248
+ var findNonVoidInputs = (abi, inputs) => inputs.filter((input) => findTypeById(abi, input.type).type !== VOID_TYPE);
31083
31249
  var findVectorBufferArgument = (components) => {
31084
31250
  const bufferComponent = components.find((c) => c.name === "buf");
31085
31251
  const bufferTypeArgument = bufferComponent?.originalTypeArguments?.[0];
@@ -31230,6 +31396,17 @@ If you are attempting to transform a hex value, please make sure it is being pas
31230
31396
  return `${typeArgumentsSignature}${componentsSignature}`;
31231
31397
  }
31232
31398
  };
31399
+ var VoidCoder = class extends Coder {
31400
+ constructor() {
31401
+ super("void", VOID_TYPE, 0);
31402
+ }
31403
+ encode(_value) {
31404
+ return new Uint8Array([]);
31405
+ }
31406
+ decode(_data, offset) {
31407
+ return [void 0, offset];
31408
+ }
31409
+ };
31233
31410
  function getCoders(components, options) {
31234
31411
  const { getCoder: getCoder2 } = options;
31235
31412
  return components.reduce((obj, component) => {
@@ -31263,6 +31440,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
31263
31440
  return new StdStringCoder();
31264
31441
  case STR_SLICE_CODER_TYPE:
31265
31442
  return new StrSliceCoder();
31443
+ case VOID_TYPE:
31444
+ return new VoidCoder();
31266
31445
  default:
31267
31446
  break;
31268
31447
  }
@@ -31291,19 +31470,20 @@ If you are attempting to transform a hex value, please make sure it is being pas
31291
31470
  const itemCoder = getCoder(argType, { encoding: ENCODING_V1 });
31292
31471
  return new VecCoder(itemCoder);
31293
31472
  }
31294
- const structMatch = structRegEx.exec(resolvedAbiType.type)?.groups;
31295
- if (structMatch) {
31473
+ const coderName = resolvedAbiType.type.match(fullNameRegExMatch)?.[0];
31474
+ const structMatch = structRegEx.test(resolvedAbiType.type);
31475
+ if (structMatch && coderName) {
31296
31476
  const coders = getCoders(components, { getCoder });
31297
- return new StructCoder(structMatch.name, coders);
31477
+ return new StructCoder(coderName, coders);
31298
31478
  }
31299
- const enumMatch = enumRegEx.exec(resolvedAbiType.type)?.groups;
31300
- if (enumMatch) {
31479
+ const enumMatch = enumRegEx.test(resolvedAbiType.type);
31480
+ if (enumMatch && coderName) {
31301
31481
  const coders = getCoders(components, { getCoder });
31302
31482
  const isOptionEnum = resolvedAbiType.type === OPTION_CODER_TYPE;
31303
31483
  if (isOptionEnum) {
31304
- return new OptionCoder(enumMatch.name, coders);
31484
+ return new OptionCoder(coderName, coders);
31305
31485
  }
31306
- return new EnumCoder(enumMatch.name, coders);
31486
+ return new EnumCoder(coderName, coders);
31307
31487
  }
31308
31488
  const tupleMatch = tupleRegEx.exec(resolvedAbiType.type)?.groups;
31309
31489
  if (tupleMatch) {
@@ -31340,6 +31520,24 @@ If you are attempting to transform a hex value, please make sure it is being pas
31340
31520
  return this.getCoder(abi, argument, options).decode(data, offset);
31341
31521
  }
31342
31522
  };
31523
+ var getFunctionInputs = (params) => {
31524
+ const { jsonAbi, inputs } = params;
31525
+ let isMandatory = false;
31526
+ return inputs.reduceRight((result, input) => {
31527
+ const type3 = findTypeById(jsonAbi, input.type);
31528
+ isMandatory = isMandatory || type3.type !== VOID_TYPE && !optionRegEx.test(type3.type);
31529
+ return [{ ...input, isOptional: !isMandatory }, ...result];
31530
+ }, []);
31531
+ };
31532
+ var padValuesWithUndefined = (values, inputs) => {
31533
+ if (values.length >= inputs.length) {
31534
+ return values;
31535
+ }
31536
+ const paddedValues = values.slice();
31537
+ paddedValues.length = inputs.length;
31538
+ paddedValues.fill(void 0, values.length);
31539
+ return paddedValues;
31540
+ };
31343
31541
  var FunctionFragment = class {
31344
31542
  signature;
31345
31543
  selector;
@@ -31348,14 +31546,16 @@ If you are attempting to transform a hex value, please make sure it is being pas
31348
31546
  name;
31349
31547
  jsonFn;
31350
31548
  attributes;
31351
- jsonAbi;
31352
- constructor(jsonAbi, name) {
31353
- this.jsonAbi = jsonAbi;
31354
- this.jsonFn = findFunctionByName(this.jsonAbi, name);
31355
- this.name = name;
31356
- this.signature = FunctionFragment.getSignature(this.jsonAbi, this.jsonFn);
31549
+ jsonAbiOld;
31550
+ jsonFnOld;
31551
+ constructor(jsonAbi, fn) {
31552
+ this.jsonFn = fn;
31553
+ this.jsonAbiOld = jsonAbi;
31554
+ this.jsonFnOld = jsonAbi.functions.find((f2) => f2.name === fn.name);
31555
+ this.name = fn.name;
31556
+ this.signature = FunctionFragment.getSignature(this.jsonAbiOld, this.jsonFnOld);
31357
31557
  this.selector = FunctionFragment.getFunctionSelector(this.signature);
31358
- this.selectorBytes = new StdStringCoder().encode(name);
31558
+ this.selectorBytes = new StdStringCoder().encode(this.name);
31359
31559
  this.encoding = getEncodingVersion(jsonAbi.encoding);
31360
31560
  this.attributes = this.jsonFn.attributes ?? [];
31361
31561
  }
@@ -31370,41 +31570,26 @@ If you are attempting to transform a hex value, please make sure it is being pas
31370
31570
  return bn(hashedFunctionSignature.slice(0, 10)).toHex(8);
31371
31571
  }
31372
31572
  encodeArguments(values) {
31373
- FunctionFragment.verifyArgsAndInputsAlign(values, this.jsonFn.inputs, this.jsonAbi);
31374
- const shallowCopyValues = values.slice();
31375
- const nonEmptyInputs = findNonEmptyInputs(this.jsonAbi, this.jsonFn.inputs);
31376
- if (Array.isArray(values) && nonEmptyInputs.length !== values.length) {
31377
- shallowCopyValues.length = this.jsonFn.inputs.length;
31378
- shallowCopyValues.fill(void 0, values.length);
31379
- }
31380
- const coders = nonEmptyInputs.map(
31381
- (t) => AbiCoder.getCoder(this.jsonAbi, t, {
31573
+ const inputs = getFunctionInputs({ jsonAbi: this.jsonAbiOld, inputs: this.jsonFnOld.inputs });
31574
+ const mandatoryInputLength = inputs.filter((i) => !i.isOptional).length;
31575
+ if (values.length < mandatoryInputLength) {
31576
+ throw new FuelError(
31577
+ ErrorCode.ABI_TYPES_AND_VALUES_MISMATCH,
31578
+ `Invalid number of arguments. Expected a minimum of ${mandatoryInputLength} arguments, received ${values.length}`
31579
+ );
31580
+ }
31581
+ const coders = this.jsonFnOld.inputs.map(
31582
+ (t) => AbiCoder.getCoder(this.jsonAbiOld, t, {
31382
31583
  encoding: this.encoding
31383
31584
  })
31384
31585
  );
31385
- return new TupleCoder(coders).encode(shallowCopyValues);
31386
- }
31387
- static verifyArgsAndInputsAlign(args, inputs, abi) {
31388
- if (args.length === inputs.length) {
31389
- return;
31390
- }
31391
- const inputTypes = inputs.map((input) => findTypeById(abi, input.type));
31392
- const optionalInputs = inputTypes.filter(
31393
- (x) => x.type === OPTION_CODER_TYPE || x.type === "()"
31394
- );
31395
- if (optionalInputs.length === inputTypes.length) {
31396
- return;
31397
- }
31398
- if (inputTypes.length - optionalInputs.length === args.length) {
31399
- return;
31400
- }
31401
- const errorMsg = `Mismatch between provided arguments and expected ABI inputs. Provided ${args.length} arguments, but expected ${inputs.length - optionalInputs.length} (excluding ${optionalInputs.length} optional inputs).`;
31402
- throw new FuelError(ErrorCode.ABI_TYPES_AND_VALUES_MISMATCH, errorMsg);
31586
+ const argumentValues = padValuesWithUndefined(values, this.jsonFn.inputs);
31587
+ return new TupleCoder(coders).encode(argumentValues);
31403
31588
  }
31404
31589
  decodeArguments(data) {
31405
31590
  const bytes3 = arrayify(data);
31406
- const nonEmptyInputs = findNonEmptyInputs(this.jsonAbi, this.jsonFn.inputs);
31407
- if (nonEmptyInputs.length === 0) {
31591
+ const nonVoidInputs = findNonVoidInputs(this.jsonAbiOld, this.jsonFnOld.inputs);
31592
+ if (nonVoidInputs.length === 0) {
31408
31593
  if (bytes3.length === 0) {
31409
31594
  return void 0;
31410
31595
  }
@@ -31413,20 +31598,20 @@ If you are attempting to transform a hex value, please make sure it is being pas
31413
31598
  `Types/values length mismatch during decode. ${JSON.stringify({
31414
31599
  count: {
31415
31600
  types: this.jsonFn.inputs.length,
31416
- nonEmptyInputs: nonEmptyInputs.length,
31601
+ nonVoidInputs: nonVoidInputs.length,
31417
31602
  values: bytes3.length
31418
31603
  },
31419
31604
  value: {
31420
31605
  args: this.jsonFn.inputs,
31421
- nonEmptyInputs,
31606
+ nonVoidInputs,
31422
31607
  values: bytes3
31423
31608
  }
31424
31609
  })}`
31425
31610
  );
31426
31611
  }
31427
- const result = nonEmptyInputs.reduce(
31612
+ const result = this.jsonFnOld.inputs.reduce(
31428
31613
  (obj, input) => {
31429
- const coder = AbiCoder.getCoder(this.jsonAbi, input, { encoding: this.encoding });
31614
+ const coder = AbiCoder.getCoder(this.jsonAbiOld, input, { encoding: this.encoding });
31430
31615
  const [decodedValue, decodedValueByteSize] = coder.decode(bytes3, obj.offset);
31431
31616
  return {
31432
31617
  decoded: [...obj.decoded, decodedValue],
@@ -31438,12 +31623,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
31438
31623
  return result.decoded;
31439
31624
  }
31440
31625
  decodeOutput(data) {
31441
- const outputAbiType = findTypeById(this.jsonAbi, this.jsonFn.output.type);
31442
- if (outputAbiType.type === "()") {
31443
- return [void 0, 0];
31444
- }
31445
31626
  const bytes3 = arrayify(data);
31446
- const coder = AbiCoder.getCoder(this.jsonAbi, this.jsonFn.output, {
31627
+ const coder = AbiCoder.getCoder(this.jsonAbiOld, this.jsonFnOld.output, {
31447
31628
  encoding: this.encoding
31448
31629
  });
31449
31630
  return coder.decode(bytes3, 0);
@@ -31455,19 +31636,119 @@ If you are attempting to transform a hex value, please make sure it is being pas
31455
31636
  */
31456
31637
  isReadOnly() {
31457
31638
  const storageAttribute = this.attributes.find((attr) => attr.name === "storage");
31458
- return !storageAttribute?.arguments.includes("write");
31639
+ return !storageAttribute?.arguments?.includes("write");
31459
31640
  }
31460
31641
  };
31642
+ var findTypeByConcreteId = (types, id) => types.find((x) => x.concreteTypeId === id);
31643
+ var findConcreteTypeById = (abi, id) => abi.concreteTypes.find((x) => x.concreteTypeId === id);
31644
+ function finsertTypeIdByConcreteTypeId(abi, types, id) {
31645
+ const concreteType = findConcreteTypeById(abi, id);
31646
+ if (concreteType.metadataTypeId !== void 0) {
31647
+ return concreteType.metadataTypeId;
31648
+ }
31649
+ const type3 = findTypeByConcreteId(types, id);
31650
+ if (type3) {
31651
+ return type3.typeId;
31652
+ }
31653
+ types.push({
31654
+ typeId: types.length,
31655
+ type: concreteType.type,
31656
+ components: parseComponents(concreteType.components),
31657
+ concreteTypeId: id,
31658
+ typeParameters: concreteType.typeParameters ?? null,
31659
+ originalConcreteTypeId: concreteType?.concreteTypeId
31660
+ });
31661
+ return types.length - 1;
31662
+ }
31663
+ function parseFunctionTypeArguments(abi, types, concreteType) {
31664
+ return concreteType.typeArguments?.map((cTypeId) => {
31665
+ const self = findConcreteTypeById(abi, cTypeId);
31666
+ const type3 = !isNaN(cTypeId) ? cTypeId : finsertTypeIdByConcreteTypeId(abi, types, cTypeId);
31667
+ return {
31668
+ name: "",
31669
+ type: type3,
31670
+ // originalTypeId: cTypeId,
31671
+ typeArguments: parseFunctionTypeArguments(abi, types, self)
31672
+ };
31673
+ }) ?? null;
31674
+ }
31675
+ function parseConcreteType(abi, types, concreteTypeId, name) {
31676
+ const type3 = finsertTypeIdByConcreteTypeId(abi, types, concreteTypeId);
31677
+ const concrete = findConcreteTypeById(abi, concreteTypeId);
31678
+ return {
31679
+ name: name ?? "",
31680
+ type: type3,
31681
+ // concreteTypeId,
31682
+ typeArguments: parseFunctionTypeArguments(abi, types, concrete)
31683
+ };
31684
+ }
31685
+ function parseComponents(abi, types, components) {
31686
+ return components?.map((component) => {
31687
+ const { typeId, name, typeArguments } = component;
31688
+ const type3 = !isNaN(typeId) ? typeId : finsertTypeIdByConcreteTypeId(abi, types, typeId);
31689
+ return {
31690
+ name,
31691
+ type: type3,
31692
+ // originalTypeId: typeId,
31693
+ typeArguments: parseComponents(abi, types, typeArguments)
31694
+ };
31695
+ }) ?? null;
31696
+ }
31697
+ function transpileAbi(abi) {
31698
+ if (!abi.specVersion) {
31699
+ return abi;
31700
+ }
31701
+ const types = [];
31702
+ abi.metadataTypes.forEach((m) => {
31703
+ const t = {
31704
+ typeId: m.metadataTypeId,
31705
+ type: m.type,
31706
+ components: m.components ?? (m.type === "()" ? [] : null),
31707
+ typeParameters: m.typeParameters ?? null
31708
+ };
31709
+ types.push(t);
31710
+ });
31711
+ types.forEach((t) => {
31712
+ t.components = parseComponents(abi, types, t.components);
31713
+ });
31714
+ const functions = abi.functions.map((fn) => {
31715
+ const inputs = fn.inputs.map(
31716
+ ({ concreteTypeId, name }) => parseConcreteType(abi, types, concreteTypeId, name)
31717
+ );
31718
+ const output3 = parseConcreteType(abi, types, fn.output, "");
31719
+ return { ...fn, inputs, output: output3 };
31720
+ });
31721
+ const configurables = abi.configurables.map((conf) => ({
31722
+ name: conf.name,
31723
+ configurableType: parseConcreteType(abi, types, conf.concreteTypeId),
31724
+ offset: conf.offset
31725
+ }));
31726
+ const loggedTypes = abi.loggedTypes.map((log) => ({
31727
+ logId: log.logId,
31728
+ loggedType: parseConcreteType(abi, types, log.concreteTypeId)
31729
+ }));
31730
+ const transpiled = {
31731
+ encoding: abi.encodingVersion,
31732
+ types,
31733
+ functions,
31734
+ loggedTypes,
31735
+ messagesTypes: abi.messagesTypes,
31736
+ configurables
31737
+ };
31738
+ return transpiled;
31739
+ }
31461
31740
  var Interface = class {
31462
31741
  functions;
31463
31742
  configurables;
31464
31743
  jsonAbi;
31465
31744
  encoding;
31745
+ jsonAbiOld;
31466
31746
  constructor(jsonAbi) {
31467
31747
  this.jsonAbi = jsonAbi;
31468
- this.encoding = getEncodingVersion(jsonAbi.encoding);
31748
+ this.encoding = getEncodingVersion(jsonAbi.encodingVersion);
31749
+ this.jsonAbiOld = transpileAbi(jsonAbi);
31469
31750
  this.functions = Object.fromEntries(
31470
- this.jsonAbi.functions.map((x) => [x.name, new FunctionFragment(this.jsonAbi, x.name)])
31751
+ this.jsonAbi.functions.map((fn) => [fn.name, new FunctionFragment(this.jsonAbiOld, fn)])
31471
31752
  );
31472
31753
  this.configurables = Object.fromEntries(this.jsonAbi.configurables.map((x) => [x.name, x]));
31473
31754
  }
@@ -31493,31 +31774,48 @@ If you are attempting to transform a hex value, please make sure it is being pas
31493
31774
  return fragment.decodeOutput(data);
31494
31775
  }
31495
31776
  decodeLog(data, logId) {
31496
- const loggedType = this.jsonAbi.loggedTypes.find((type3) => type3.logId === logId);
31777
+ const loggedType = this.jsonAbiOld.loggedTypes.find((type3) => type3.logId === logId);
31497
31778
  if (!loggedType) {
31498
31779
  throw new FuelError(
31499
31780
  ErrorCode.LOG_TYPE_NOT_FOUND,
31500
31781
  `Log type with logId '${logId}' doesn't exist in the ABI.`
31501
31782
  );
31502
31783
  }
31503
- return AbiCoder.decode(this.jsonAbi, loggedType.loggedType, arrayify(data), 0, {
31784
+ return AbiCoder.decode(this.jsonAbiOld, loggedType.loggedType, arrayify(data), 0, {
31504
31785
  encoding: this.encoding
31505
31786
  });
31506
31787
  }
31507
31788
  encodeConfigurable(name, value) {
31508
- const configurable = this.jsonAbi.configurables.find((c) => c.name === name);
31789
+ const configurable = this.jsonAbiOld.configurables.find((c) => c.name === name);
31509
31790
  if (!configurable) {
31510
31791
  throw new FuelError(
31511
31792
  ErrorCode.CONFIGURABLE_NOT_FOUND,
31512
31793
  `A configurable with the '${name}' was not found in the ABI.`
31513
31794
  );
31514
31795
  }
31515
- return AbiCoder.encode(this.jsonAbi, configurable.configurableType, value, {
31796
+ return AbiCoder.encode(this.jsonAbiOld, configurable.configurableType, value, {
31797
+ encoding: this.encoding
31798
+ });
31799
+ }
31800
+ encodeType(concreteTypeId, value) {
31801
+ const typeArg = parseConcreteType(
31802
+ this.jsonAbi,
31803
+ this.jsonAbiOld.types,
31804
+ concreteTypeId,
31805
+ ""
31806
+ );
31807
+ return AbiCoder.encode(this.jsonAbiOld, typeArg, value, {
31516
31808
  encoding: this.encoding
31517
31809
  });
31518
31810
  }
31519
- getTypeById(typeId) {
31520
- return findTypeById(this.jsonAbi, typeId);
31811
+ decodeType(concreteTypeId, data) {
31812
+ const typeArg = parseConcreteType(
31813
+ this.jsonAbi,
31814
+ this.jsonAbiOld.types,
31815
+ concreteTypeId,
31816
+ ""
31817
+ );
31818
+ return AbiCoder.decode(this.jsonAbiOld, typeArg, data, 0, { encoding: this.encoding });
31521
31819
  }
31522
31820
  };
31523
31821
 
@@ -31807,12 +32105,12 @@ If you are attempting to transform a hex value, please make sure it is being pas
31807
32105
  }
31808
32106
  };
31809
32107
 
31810
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_isPlaceholder.js
32108
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isPlaceholder.js
31811
32109
  function _isPlaceholder(a) {
31812
32110
  return a != null && typeof a === "object" && a["@@functional/placeholder"] === true;
31813
32111
  }
31814
32112
 
31815
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_curry1.js
32113
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry1.js
31816
32114
  function _curry1(fn) {
31817
32115
  return function f1(a) {
31818
32116
  if (arguments.length === 0 || _isPlaceholder(a)) {
@@ -31823,38 +32121,18 @@ If you are attempting to transform a hex value, please make sure it is being pas
31823
32121
  };
31824
32122
  }
31825
32123
 
31826
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_isArray.js
31827
- var isArray_default = Array.isArray || function _isArray(val) {
31828
- return val != null && val.length >= 0 && Object.prototype.toString.call(val) === "[object Array]";
31829
- };
31830
-
31831
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/type.js
32124
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/type.js
31832
32125
  var type = /* @__PURE__ */ _curry1(function type2(val) {
31833
32126
  return val === null ? "Null" : val === void 0 ? "Undefined" : Object.prototype.toString.call(val).slice(8, -1);
31834
32127
  });
31835
32128
  var type_default = type;
31836
32129
 
31837
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_toISOString.js
31838
- var pad = function pad2(n) {
31839
- return (n < 10 ? "0" : "") + n;
31840
- };
31841
- var _toISOString = typeof Date.prototype.toISOString === "function" ? function _toISOString2(d) {
31842
- return d.toISOString();
31843
- } : function _toISOString3(d) {
31844
- return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate()) + "T" + pad(d.getUTCHours()) + ":" + pad(d.getUTCMinutes()) + ":" + pad(d.getUTCSeconds()) + "." + (d.getUTCMilliseconds() / 1e3).toFixed(3).slice(2, 5) + "Z";
31845
- };
31846
-
31847
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_isInteger.js
31848
- var isInteger_default = Number.isInteger || function _isInteger(n) {
31849
- return n << 0 === n;
31850
- };
31851
-
31852
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_cloneRegExp.js
32130
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_cloneRegExp.js
31853
32131
  function _cloneRegExp(pattern) {
31854
32132
  return new RegExp(pattern.source, pattern.flags ? pattern.flags : (pattern.global ? "g" : "") + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : "") + (pattern.sticky ? "y" : "") + (pattern.unicode ? "u" : "") + (pattern.dotAll ? "s" : ""));
31855
32133
  }
31856
32134
 
31857
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/internal/_clone.js
32135
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_clone.js
31858
32136
  function _clone(value, deep, map) {
31859
32137
  map || (map = new _ObjectMap());
31860
32138
  if (_isPrimitive(value)) {
@@ -31877,7 +32155,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
31877
32155
  case "Object":
31878
32156
  return copy(Object.create(Object.getPrototypeOf(value)));
31879
32157
  case "Array":
31880
- return copy([]);
32158
+ return copy(Array(value.length));
31881
32159
  case "Date":
31882
32160
  return new Date(value.valueOf());
31883
32161
  case "RegExp":
@@ -31908,8 +32186,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
31908
32186
  this.length = 0;
31909
32187
  }
31910
32188
  _ObjectMap2.prototype.set = function(key, value) {
31911
- const hashedKey = this.hash(key);
31912
- let bucket = this.map[hashedKey];
32189
+ var hashedKey = this.hash(key);
32190
+ var bucket = this.map[hashedKey];
31913
32191
  if (!bucket) {
31914
32192
  this.map[hashedKey] = bucket = [];
31915
32193
  }
@@ -31917,7 +32195,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
31917
32195
  this.length += 1;
31918
32196
  };
31919
32197
  _ObjectMap2.prototype.hash = function(key) {
31920
- let hashedKey = [];
32198
+ var hashedKey = [];
31921
32199
  for (var value in key) {
31922
32200
  hashedKey.push(Object.prototype.toString.call(key[value]));
31923
32201
  }
@@ -31925,10 +32203,10 @@ If you are attempting to transform a hex value, please make sure it is being pas
31925
32203
  };
31926
32204
  _ObjectMap2.prototype.get = function(key) {
31927
32205
  if (this.length <= 180) {
31928
- for (const p in this.map) {
31929
- const bucket2 = this.map[p];
31930
- for (let i = 0; i < bucket2.length; i += 1) {
31931
- const element = bucket2[i];
32206
+ for (var p in this.map) {
32207
+ var bucket = this.map[p];
32208
+ for (var i = 0; i < bucket.length; i += 1) {
32209
+ var element = bucket[i];
31932
32210
  if (element[0] === key) {
31933
32211
  return element[1];
31934
32212
  }
@@ -31936,13 +32214,13 @@ If you are attempting to transform a hex value, please make sure it is being pas
31936
32214
  }
31937
32215
  return;
31938
32216
  }
31939
- const hashedKey = this.hash(key);
31940
- const bucket = this.map[hashedKey];
32217
+ var hashedKey = this.hash(key);
32218
+ var bucket = this.map[hashedKey];
31941
32219
  if (!bucket) {
31942
32220
  return;
31943
32221
  }
31944
- for (let i = 0; i < bucket.length; i += 1) {
31945
- const element = bucket[i];
32222
+ for (var i = 0; i < bucket.length; i += 1) {
32223
+ var element = bucket[i];
31946
32224
  if (element[0] === key) {
31947
32225
  return element[1];
31948
32226
  }
@@ -31951,15 +32229,12 @@ If you are attempting to transform a hex value, please make sure it is being pas
31951
32229
  return _ObjectMap2;
31952
32230
  }();
31953
32231
 
31954
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/clone.js
32232
+ // ../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/clone.js
31955
32233
  var clone = /* @__PURE__ */ _curry1(function clone2(value) {
31956
32234
  return value != null && typeof value.clone === "function" ? value.clone() : _clone(value, true);
31957
32235
  });
31958
32236
  var clone_default = clone;
31959
32237
 
31960
- // ../../node_modules/.pnpm/ramda@0.29.0/node_modules/ramda/es/trim.js
31961
- var hasProtoTrim = typeof String.prototype.trim === "function";
31962
-
31963
32238
  // src/providers/coin-quantity.ts
31964
32239
  var coinQuantityfy = (coinQuantityLike) => {
31965
32240
  let assetId;
@@ -32039,6 +32314,19 @@ If you are attempting to transform a hex value, please make sure it is being pas
32039
32314
  txIndex: new NumberCoder("u16", { padToWordSize: true })
32040
32315
  });
32041
32316
  }
32317
+ static decodeFromGqlScalar(value) {
32318
+ if (value.length !== 12) {
32319
+ throw new FuelError(
32320
+ ErrorCode.DECODE_ERROR,
32321
+ `Invalid TxPointer scalar string length ${value.length}. It must have length 12.`
32322
+ );
32323
+ }
32324
+ const [blockHeight, txIndex] = [value.substring(0, 8), value.substring(8)];
32325
+ return {
32326
+ blockHeight: parseInt(blockHeight, 16),
32327
+ txIndex: parseInt(txIndex, 16)
32328
+ };
32329
+ }
32042
32330
  };
32043
32331
  var InputType = /* @__PURE__ */ ((InputType2) => {
32044
32332
  InputType2[InputType2["Coin"] = 0] = "Coin";
@@ -32801,8 +33089,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
32801
33089
  }
32802
33090
  default: {
32803
33091
  throw new FuelError(
32804
- ErrorCode.INVALID_TRANSACTION_TYPE,
32805
- `Invalid transaction type: ${type3}`
33092
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
33093
+ `Unsupported transaction type: ${type3}`
32806
33094
  );
32807
33095
  }
32808
33096
  }
@@ -32828,8 +33116,8 @@ If you are attempting to transform a hex value, please make sure it is being pas
32828
33116
  }
32829
33117
  default: {
32830
33118
  throw new FuelError(
32831
- ErrorCode.INVALID_TRANSACTION_TYPE,
32832
- `Invalid transaction type: ${type3}`
33119
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
33120
+ `Unsupported transaction type: ${type3}`
32833
33121
  );
32834
33122
  }
32835
33123
  }
@@ -32872,6 +33160,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
32872
33160
  TransactionType2[TransactionType2["Mint"] = 2] = "Mint";
32873
33161
  TransactionType2[TransactionType2["Upgrade"] = 3] = "Upgrade";
32874
33162
  TransactionType2[TransactionType2["Upload"] = 4] = "Upload";
33163
+ TransactionType2[TransactionType2["Blob"] = 5] = "Blob";
32875
33164
  return TransactionType2;
32876
33165
  })(TransactionType || {});
32877
33166
  var TransactionScriptCoder = class extends Coder {
@@ -33196,6 +33485,65 @@ If you are attempting to transform a hex value, please make sure it is being pas
33196
33485
  ];
33197
33486
  }
33198
33487
  };
33488
+ var TransactionBlobCoder = class extends Coder {
33489
+ constructor() {
33490
+ super("TransactionBlob", "struct TransactionBlob", 0);
33491
+ }
33492
+ encode(value) {
33493
+ const parts = [];
33494
+ parts.push(new B256Coder().encode(value.blobId));
33495
+ parts.push(new NumberCoder("u16", { padToWordSize: true }).encode(value.witnessIndex));
33496
+ parts.push(new NumberCoder("u32", { padToWordSize: true }).encode(value.policyTypes));
33497
+ parts.push(new NumberCoder("u16", { padToWordSize: true }).encode(value.inputsCount));
33498
+ parts.push(new NumberCoder("u16", { padToWordSize: true }).encode(value.outputsCount));
33499
+ parts.push(new NumberCoder("u16", { padToWordSize: true }).encode(value.witnessesCount));
33500
+ parts.push(new PoliciesCoder().encode(value.policies));
33501
+ parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));
33502
+ parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));
33503
+ parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));
33504
+ return concat(parts);
33505
+ }
33506
+ decode(data, offset) {
33507
+ let decoded;
33508
+ let o = offset;
33509
+ [decoded, o] = new B256Coder().decode(data, o);
33510
+ const blobId = decoded;
33511
+ [decoded, o] = new NumberCoder("u16", { padToWordSize: true }).decode(data, o);
33512
+ const witnessIndex = decoded;
33513
+ [decoded, o] = new NumberCoder("u32", { padToWordSize: true }).decode(data, o);
33514
+ const policyTypes = decoded;
33515
+ [decoded, o] = new NumberCoder("u16", { padToWordSize: true }).decode(data, o);
33516
+ const inputsCount = decoded;
33517
+ [decoded, o] = new NumberCoder("u16", { padToWordSize: true }).decode(data, o);
33518
+ const outputsCount = decoded;
33519
+ [decoded, o] = new NumberCoder("u16", { padToWordSize: true }).decode(data, o);
33520
+ const witnessesCount = decoded;
33521
+ [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);
33522
+ const policies = decoded;
33523
+ [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);
33524
+ const inputs = decoded;
33525
+ [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);
33526
+ const outputs = decoded;
33527
+ [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);
33528
+ const witnesses = decoded;
33529
+ return [
33530
+ {
33531
+ type: 5,
33532
+ blobId,
33533
+ witnessIndex,
33534
+ policyTypes,
33535
+ inputsCount,
33536
+ outputsCount,
33537
+ witnessesCount,
33538
+ policies,
33539
+ inputs,
33540
+ outputs,
33541
+ witnesses
33542
+ },
33543
+ o
33544
+ ];
33545
+ }
33546
+ };
33199
33547
  var TransactionCoder = class extends Coder {
33200
33548
  constructor() {
33201
33549
  super("Transaction", "struct Transaction", 0);
@@ -33233,10 +33581,14 @@ If you are attempting to transform a hex value, please make sure it is being pas
33233
33581
  );
33234
33582
  break;
33235
33583
  }
33584
+ case 5: {
33585
+ parts.push(new TransactionBlobCoder().encode(value));
33586
+ break;
33587
+ }
33236
33588
  default: {
33237
33589
  throw new FuelError(
33238
- ErrorCode.INVALID_TRANSACTION_TYPE,
33239
- `Invalid transaction type: ${type3}`
33590
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
33591
+ `Unsupported transaction type: ${type3}`
33240
33592
  );
33241
33593
  }
33242
33594
  }
@@ -33268,10 +33620,14 @@ If you are attempting to transform a hex value, please make sure it is being pas
33268
33620
  [decoded, o] = new TransactionUploadCoder().decode(data, o);
33269
33621
  return [decoded, o];
33270
33622
  }
33623
+ case 5: {
33624
+ [decoded, o] = new TransactionBlobCoder().decode(data, o);
33625
+ return [decoded, o];
33626
+ }
33271
33627
  default: {
33272
33628
  throw new FuelError(
33273
- ErrorCode.INVALID_TRANSACTION_TYPE,
33274
- `Invalid transaction type: ${type3}`
33629
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
33630
+ `Unsupported transaction type: ${type3}`
33275
33631
  );
33276
33632
  }
33277
33633
  }
@@ -33402,10 +33758,10 @@ If you are attempting to transform a hex value, please make sure it is being pas
33402
33758
  sum += a.length;
33403
33759
  }
33404
33760
  const res = new Uint8Array(sum);
33405
- for (let i = 0, pad3 = 0; i < arrays.length; i++) {
33761
+ for (let i = 0, pad = 0; i < arrays.length; i++) {
33406
33762
  const a = arrays[i];
33407
- res.set(a, pad3);
33408
- pad3 += a.length;
33763
+ res.set(a, pad);
33764
+ pad += a.length;
33409
33765
  }
33410
33766
  return res;
33411
33767
  }
@@ -36684,14 +37040,6 @@ spurious results.`);
36684
37040
  var lib_default2 = gql;
36685
37041
 
36686
37042
  // src/providers/__generated__/operations.ts
36687
- var TransactionStatusSubscriptionFragmentDoc = lib_default2`
36688
- fragment transactionStatusSubscriptionFragment on TransactionStatus {
36689
- type: __typename
36690
- ... on SqueezedOutStatus {
36691
- reason
36692
- }
36693
- }
36694
- `;
36695
37043
  var SubmittedStatusFragmentDoc = lib_default2`
36696
37044
  fragment SubmittedStatusFragment on SubmittedStatus {
36697
37045
  type: __typename
@@ -36748,6 +37096,47 @@ spurious results.`);
36748
37096
  totalFee
36749
37097
  }
36750
37098
  ${ReceiptFragmentDoc}`;
37099
+ var MalleableTransactionFieldsFragmentDoc = lib_default2`
37100
+ fragment malleableTransactionFieldsFragment on Transaction {
37101
+ receiptsRoot
37102
+ inputs {
37103
+ type: __typename
37104
+ ... on InputCoin {
37105
+ txPointer
37106
+ }
37107
+ ... on InputContract {
37108
+ txPointer
37109
+ }
37110
+ }
37111
+ outputs {
37112
+ type: __typename
37113
+ ... on CoinOutput {
37114
+ to
37115
+ amount
37116
+ assetId
37117
+ }
37118
+ ... on ContractOutput {
37119
+ inputIndex
37120
+ balanceRoot
37121
+ stateRoot
37122
+ }
37123
+ ... on ChangeOutput {
37124
+ to
37125
+ amount
37126
+ assetId
37127
+ }
37128
+ ... on VariableOutput {
37129
+ to
37130
+ amount
37131
+ assetId
37132
+ }
37133
+ ... on ContractCreated {
37134
+ contract
37135
+ stateRoot
37136
+ }
37137
+ }
37138
+ }
37139
+ `;
36751
37140
  var FailureStatusFragmentDoc = lib_default2`
36752
37141
  fragment FailureStatusFragment on FailureStatus {
36753
37142
  type: __typename
@@ -36769,6 +37158,32 @@ spurious results.`);
36769
37158
  reason
36770
37159
  }
36771
37160
  `;
37161
+ var TransactionStatusSubscriptionFragmentDoc = lib_default2`
37162
+ fragment transactionStatusSubscriptionFragment on TransactionStatus {
37163
+ ... on SubmittedStatus {
37164
+ ...SubmittedStatusFragment
37165
+ }
37166
+ ... on SuccessStatus {
37167
+ ...SuccessStatusFragment
37168
+ transaction {
37169
+ ...malleableTransactionFieldsFragment
37170
+ }
37171
+ }
37172
+ ... on FailureStatus {
37173
+ ...FailureStatusFragment
37174
+ transaction {
37175
+ ...malleableTransactionFieldsFragment
37176
+ }
37177
+ }
37178
+ ... on SqueezedOutStatus {
37179
+ ...SqueezedOutStatusFragment
37180
+ }
37181
+ }
37182
+ ${SubmittedStatusFragmentDoc}
37183
+ ${SuccessStatusFragmentDoc}
37184
+ ${MalleableTransactionFieldsFragmentDoc}
37185
+ ${FailureStatusFragmentDoc}
37186
+ ${SqueezedOutStatusFragmentDoc}`;
36772
37187
  var TransactionStatusFragmentDoc = lib_default2`
36773
37188
  fragment transactionStatusFragment on TransactionStatus {
36774
37189
  ... on SubmittedStatus {
@@ -37109,6 +37524,12 @@ ${ReceiptFragmentDoc}`;
37109
37524
  alocDependentCost {
37110
37525
  ...DependentCostFragment
37111
37526
  }
37527
+ bldd {
37528
+ ...DependentCostFragment
37529
+ }
37530
+ bsiz {
37531
+ ...DependentCostFragment
37532
+ }
37112
37533
  cfe {
37113
37534
  ...DependentCostFragment
37114
37535
  }
@@ -37127,6 +37548,9 @@ ${ReceiptFragmentDoc}`;
37127
37548
  csiz {
37128
37549
  ...DependentCostFragment
37129
37550
  }
37551
+ ed19DependentCost {
37552
+ ...DependentCostFragment
37553
+ }
37130
37554
  k256 {
37131
37555
  ...DependentCostFragment
37132
37556
  }
@@ -37656,12 +38080,11 @@ ${MessageFragmentDoc}`;
37656
38080
 
37657
38081
  // src/providers/fuel-graphql-subscriber.ts
37658
38082
  var _FuelGraphqlSubscriber = class {
37659
- constructor(options) {
37660
- this.options = options;
38083
+ constructor(stream) {
38084
+ this.stream = stream;
37661
38085
  }
37662
- stream;
37663
- async setStream() {
37664
- const { url, query, variables, fetchFn } = this.options;
38086
+ static async create(options) {
38087
+ const { url, query, variables, fetchFn } = options;
37665
38088
  const response = await fetchFn(`${url}-sub`, {
37666
38089
  method: "POST",
37667
38090
  body: JSON.stringify({
@@ -37673,14 +38096,11 @@ ${MessageFragmentDoc}`;
37673
38096
  Accept: "text/event-stream"
37674
38097
  }
37675
38098
  });
37676
- this.stream = response.body.getReader();
38099
+ return new _FuelGraphqlSubscriber(response.body.getReader());
37677
38100
  }
37678
38101
  events = [];
37679
38102
  parsingLeftover = "";
37680
38103
  async next() {
37681
- if (!this.stream) {
37682
- await this.setStream();
37683
- }
37684
38104
  while (true) {
37685
38105
  if (this.events.length > 0) {
37686
38106
  const { data, errors } = this.events.shift();
@@ -37731,60 +38151,63 @@ ${MessageFragmentDoc}`;
37731
38151
  var FuelGraphqlSubscriber = _FuelGraphqlSubscriber;
37732
38152
  __publicField(FuelGraphqlSubscriber, "textDecoder", new TextDecoder());
37733
38153
 
37734
- // src/providers/memory-cache.ts
37735
- var cache = {};
37736
- var DEFAULT_TTL_IN_MS = 30 * 1e3;
37737
- var MemoryCache = class {
38154
+ // src/providers/resource-cache.ts
38155
+ var cache = /* @__PURE__ */ new Map();
38156
+ var ResourceCache = class {
37738
38157
  ttl;
37739
- constructor(ttlInMs = DEFAULT_TTL_IN_MS) {
37740
- this.ttl = ttlInMs;
37741
- if (typeof ttlInMs !== "number" || this.ttl <= 0) {
38158
+ constructor(ttl) {
38159
+ this.ttl = ttl;
38160
+ if (typeof ttl !== "number" || this.ttl <= 0) {
37742
38161
  throw new FuelError(
37743
38162
  ErrorCode.INVALID_TTL,
37744
38163
  `Invalid TTL: ${this.ttl}. Use a value greater than zero.`
37745
38164
  );
37746
38165
  }
37747
38166
  }
37748
- get(value, isAutoExpiring = true) {
37749
- const key = hexlify(value);
37750
- if (cache[key]) {
37751
- if (!isAutoExpiring || cache[key].expires > Date.now()) {
37752
- return cache[key].value;
37753
- }
37754
- this.del(value);
37755
- }
37756
- return void 0;
37757
- }
37758
- set(value) {
37759
- const expiresAt = Date.now() + this.ttl;
37760
- const key = hexlify(value);
37761
- cache[key] = {
37762
- expires: expiresAt,
37763
- value
38167
+ // Add resources to the cache
38168
+ set(transactionId, resources) {
38169
+ const currentTime = Date.now();
38170
+ const existingResources = cache.get(transactionId) || {
38171
+ utxos: /* @__PURE__ */ new Set(),
38172
+ messages: /* @__PURE__ */ new Set(),
38173
+ timestamp: currentTime
37764
38174
  };
37765
- return expiresAt;
38175
+ resources.utxos.forEach((utxo) => existingResources.utxos.add(hexlify(utxo)));
38176
+ resources.messages.forEach((message) => existingResources.messages.add(hexlify(message)));
38177
+ cache.set(transactionId, existingResources);
37766
38178
  }
37767
- getAllData() {
37768
- return Object.keys(cache).reduce((list, key) => {
37769
- const data = this.get(key, false);
37770
- if (data) {
37771
- list.push(data);
37772
- }
37773
- return list;
37774
- }, []);
38179
+ // Remove resources from the cache for a given transaction ID
38180
+ unset(transactionId) {
38181
+ cache.delete(transactionId);
37775
38182
  }
38183
+ // Get all cached resources and remove expired ones
37776
38184
  getActiveData() {
37777
- return Object.keys(cache).reduce((list, key) => {
37778
- const data = this.get(key);
37779
- if (data) {
37780
- list.push(data);
38185
+ const allResources = { utxos: [], messages: [] };
38186
+ const currentTime = Date.now();
38187
+ cache.forEach((resource, transactionId) => {
38188
+ if (currentTime - resource.timestamp < this.ttl) {
38189
+ allResources.utxos.push(...resource.utxos);
38190
+ allResources.messages.push(...resource.messages);
38191
+ } else {
38192
+ cache.delete(transactionId);
38193
+ }
38194
+ });
38195
+ return allResources;
38196
+ }
38197
+ // Check if a UTXO ID or message nonce is already cached and not expired
38198
+ isCached(key) {
38199
+ const currentTime = Date.now();
38200
+ for (const [transactionId, resourceData] of cache.entries()) {
38201
+ if (currentTime - resourceData.timestamp > this.ttl) {
38202
+ cache.delete(transactionId);
38203
+ } else if (resourceData.utxos.has(key) || resourceData.messages.has(key)) {
38204
+ return true;
37781
38205
  }
37782
- return list;
37783
- }, []);
38206
+ }
38207
+ return false;
37784
38208
  }
37785
- del(value) {
37786
- const key = hexlify(value);
37787
- delete cache[key];
38209
+ clear() {
38210
+ cache.clear();
37788
38211
  }
37789
38212
  };
37790
38213
 
@@ -37975,7 +38398,18 @@ ${MessageFragmentDoc}`;
37975
38398
  "TooManyReceipts",
37976
38399
  "BalanceOverflow",
37977
38400
  "InvalidBlockHeight",
37978
- "TooManySlots"
38401
+ "TooManySlots",
38402
+ "ExpectedNestedCaller",
38403
+ "MemoryGrowthOverlap",
38404
+ "UninitalizedMemoryAccess",
38405
+ "OverridingConsensusParameters",
38406
+ "UnknownStateTransactionBytecodeRoot",
38407
+ "OverridingStateTransactionBytecode",
38408
+ "BytecodeAlreadyUploaded",
38409
+ "ThePartIsNotSequentiallyConnected",
38410
+ "BlobIdAlreadyUploaded",
38411
+ "BlobNotFound",
38412
+ "GasCostNotDefined"
37979
38413
  ];
37980
38414
  var PANIC_DOC_URL = "https://docs.rs/fuel-asm/latest/fuel_asm/enum.PanicReason.html";
37981
38415
 
@@ -38328,6 +38762,15 @@ ${MessageFragmentDoc}`;
38328
38762
  }) {
38329
38763
  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
38330
38764
  }
38765
+ function calculateMetadataGasForTxBlob({
38766
+ gasCosts,
38767
+ txBytesSize,
38768
+ witnessBytesSize
38769
+ }) {
38770
+ const txId = resolveGasDependentCosts(txBytesSize, gasCosts.s256);
38771
+ const blobLen = resolveGasDependentCosts(witnessBytesSize, gasCosts.s256);
38772
+ return txId.add(blobLen);
38773
+ }
38331
38774
  var calculateGasFee = (params) => {
38332
38775
  const { gas, gasPrice, priceFactor, tip } = params;
38333
38776
  return gas.mul(gasPrice).div(priceFactor).add(bn(tip));
@@ -38887,7 +39330,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
38887
39330
  * @hidden
38888
39331
  */
38889
39332
  metadataGas(_gasCosts) {
38890
- throw new Error("Not implemented");
39333
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Not implemented");
38891
39334
  }
38892
39335
  /**
38893
39336
  * @hidden
@@ -38962,6 +39405,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
38962
39405
  };
38963
39406
  updateAssetInput(baseAssetId, bn(1e11));
38964
39407
  quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));
39408
+ return this;
38965
39409
  }
38966
39410
  /**
38967
39411
  * Retrieves an array of CoinQuantity for each coin output present in the transaction.
@@ -39008,6 +39452,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39008
39452
  }
39009
39453
  });
39010
39454
  }
39455
+ byteLength() {
39456
+ return this.toTransactionBytes().byteLength;
39457
+ }
39011
39458
  };
39012
39459
 
39013
39460
  // src/providers/transaction-request/hash-transaction.ts
@@ -39075,6 +39522,70 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39075
39522
  return sha2562(concatenatedData);
39076
39523
  }
39077
39524
 
39525
+ // src/providers/transaction-request/blob-transaction-request.ts
39526
+ var BlobTransactionRequest = class extends BaseTransactionRequest {
39527
+ static from(obj) {
39528
+ if (obj instanceof this) {
39529
+ return obj;
39530
+ }
39531
+ return new this(obj);
39532
+ }
39533
+ /** Type of the transaction */
39534
+ type = TransactionType.Blob;
39535
+ /** Blob ID */
39536
+ blobId;
39537
+ /** Witness index of contract bytecode to create */
39538
+ witnessIndex;
39539
+ /**
39540
+ * Creates an instance `BlobTransactionRequest`.
39541
+ *
39542
+ * @param blobTransactionRequestLike - The initial values for the instance
39543
+ */
39544
+ constructor({ witnessIndex, blobId, ...rest }) {
39545
+ super(rest);
39546
+ this.blobId = blobId;
39547
+ this.witnessIndex = witnessIndex ?? 0;
39548
+ }
39549
+ /**
39550
+ * Converts the transaction request to a `TransactionBlob`.
39551
+ *
39552
+ * @returns The transaction create object.
39553
+ */
39554
+ toTransaction() {
39555
+ const baseTransaction = this.getBaseTransaction();
39556
+ const { witnessIndex, blobId } = this;
39557
+ return {
39558
+ type: TransactionType.Blob,
39559
+ ...baseTransaction,
39560
+ blobId,
39561
+ witnessIndex
39562
+ };
39563
+ }
39564
+ /**
39565
+ * Gets the Transaction Request by hashing the transaction.
39566
+ *
39567
+ * @param chainId - The chain ID.
39568
+ *
39569
+ * @returns - A hash of the transaction, which is the transaction ID.
39570
+ */
39571
+ getTransactionId(chainId) {
39572
+ return hashTransaction(this, chainId);
39573
+ }
39574
+ /**
39575
+ * Calculates the metadata gas cost for a blob transaction.
39576
+ *
39577
+ * @param gasCosts - gas costs passed from the chain.
39578
+ * @returns metadata gas cost for the blob transaction.
39579
+ */
39580
+ metadataGas(gasCosts) {
39581
+ return calculateMetadataGasForTxBlob({
39582
+ gasCosts,
39583
+ txBytesSize: this.byteSize(),
39584
+ witnessBytesSize: this.witnesses[this.witnessIndex].length
39585
+ });
39586
+ }
39587
+ };
39588
+
39078
39589
  // src/providers/transaction-request/storage-slot.ts
39079
39590
  var getStorageValue = (value) => {
39080
39591
  const v = new Uint8Array(32);
@@ -39394,7 +39905,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39394
39905
 
39395
39906
  // src/providers/transaction-request/utils.ts
39396
39907
  var transactionRequestify = (obj) => {
39397
- if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
39908
+ if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest || obj instanceof BlobTransactionRequest) {
39398
39909
  return obj;
39399
39910
  }
39400
39911
  const { type: type3 } = obj;
@@ -39405,11 +39916,20 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39405
39916
  case TransactionType.Create: {
39406
39917
  return CreateTransactionRequest.from(obj);
39407
39918
  }
39919
+ case TransactionType.Blob: {
39920
+ return BlobTransactionRequest.from(obj);
39921
+ }
39408
39922
  default: {
39409
- throw new FuelError(ErrorCode.INVALID_TRANSACTION_TYPE, `Invalid transaction type: ${type3}.`);
39923
+ throw new FuelError(
39924
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
39925
+ `Unsupported transaction type: ${type3}.`
39926
+ );
39410
39927
  }
39411
39928
  }
39412
39929
  };
39930
+ var isTransactionTypeScript = (request) => request.type === TransactionType.Script;
39931
+ var isTransactionTypeCreate = (request) => request.type === TransactionType.Create;
39932
+ var isTransactionTypeBlob = (request) => request.type === TransactionType.Blob;
39413
39933
 
39414
39934
  // src/providers/transaction-summary/calculate-tx-fee-for-summary.ts
39415
39935
  var calculateTXFeeForSummary = (params) => {
@@ -39526,17 +40046,47 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39526
40046
  function getInputsCoinAndMessage(inputs) {
39527
40047
  return getInputsByTypes(inputs, [InputType.Coin, InputType.Message]);
39528
40048
  }
40049
+ function isInputCoin(input) {
40050
+ return input.type === InputType.Coin;
40051
+ }
39529
40052
  function getInputsContract(inputs) {
39530
40053
  return getInputsByType(inputs, InputType.Contract);
39531
40054
  }
39532
- function getInputFromAssetId(inputs, assetId) {
40055
+ function findCoinInput(inputs, assetId) {
39533
40056
  const coinInputs = getInputsCoin(inputs);
39534
- const messageInputs = getInputsMessage(inputs);
39535
- const coinInput = coinInputs.find((i) => i.assetId === assetId);
39536
- const messageInput = messageInputs.find(
39537
- (_) => assetId === "0x0000000000000000000000000000000000000000000000000000000000000000"
39538
- );
39539
- return coinInput || messageInput;
40057
+ return coinInputs.find((i) => i.assetId === assetId);
40058
+ }
40059
+ function aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetID) {
40060
+ const aggregated = /* @__PURE__ */ new Map();
40061
+ getInputsCoinAndMessage(inputs).forEach((input) => {
40062
+ const assetId = isInputCoin(input) ? input.assetId : baseAssetID;
40063
+ const owner = isInputCoin(input) ? input.owner : input.recipient;
40064
+ let ownersMap = aggregated.get(assetId);
40065
+ if (!ownersMap) {
40066
+ ownersMap = /* @__PURE__ */ new Map();
40067
+ aggregated.set(assetId, ownersMap);
40068
+ }
40069
+ let ownerBalance = ownersMap.get(owner);
40070
+ if (!ownerBalance) {
40071
+ ownerBalance = new BN(0);
40072
+ ownersMap.set(owner, ownerBalance);
40073
+ }
40074
+ ownersMap.set(owner, ownerBalance.add(input.amount));
40075
+ });
40076
+ return aggregated;
40077
+ }
40078
+ function findMessageInput(inputs) {
40079
+ return getInputsMessage(inputs)?.[0];
40080
+ }
40081
+ function getInputFromAssetId(inputs, assetId, isBaseAsset = false) {
40082
+ const coinInput = findCoinInput(inputs, assetId);
40083
+ if (coinInput) {
40084
+ return coinInput;
40085
+ }
40086
+ if (isBaseAsset) {
40087
+ return findMessageInput(inputs);
40088
+ }
40089
+ return void 0;
39540
40090
  }
39541
40091
  function getInputContractFromIndex(inputs, inputIndex) {
39542
40092
  if (inputIndex == null) {
@@ -39591,6 +40141,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39591
40141
  TransactionTypeName2["Script"] = "Script";
39592
40142
  TransactionTypeName2["Upgrade"] = "Upgrade";
39593
40143
  TransactionTypeName2["Upload"] = "Upload";
40144
+ TransactionTypeName2["Blob"] = "Blob";
39594
40145
  return TransactionTypeName2;
39595
40146
  })(TransactionTypeName || {});
39596
40147
  var TransactionStatus = /* @__PURE__ */ ((TransactionStatus2) => {
@@ -39636,10 +40187,12 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39636
40187
  return "Create" /* Create */;
39637
40188
  case TransactionType.Script:
39638
40189
  return "Script" /* Script */;
40190
+ case TransactionType.Blob:
40191
+ return "Blob" /* Blob */;
39639
40192
  default:
39640
40193
  throw new FuelError(
39641
- ErrorCode.INVALID_TRANSACTION_TYPE,
39642
- `Invalid transaction type: ${transactionType}.`
40194
+ ErrorCode.UNSUPPORTED_TRANSACTION_TYPE,
40195
+ `Unsupported transaction type: ${transactionType}.`
39643
40196
  );
39644
40197
  }
39645
40198
  }
@@ -39662,6 +40215,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39662
40215
  function isTypeUpload(transactionType) {
39663
40216
  return isType(transactionType, "Upload" /* Upload */);
39664
40217
  }
40218
+ function isTypeBlob(transactionType) {
40219
+ return isType(transactionType, "Blob" /* Blob */);
40220
+ }
39665
40221
  function hasSameAssetId(a) {
39666
40222
  return (b) => a.assetId === b.assetId;
39667
40223
  }
@@ -39671,41 +40227,51 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39671
40227
  function getReceiptsMessageOut(receipts) {
39672
40228
  return getReceiptsByType(receipts, ReceiptType.MessageOut);
39673
40229
  }
39674
- var mergeAssets = (op1, op2) => {
40230
+ function mergeAssets(op1, op2) {
39675
40231
  const assets1 = op1.assetsSent || [];
39676
40232
  const assets2 = op2.assetsSent || [];
39677
- const filteredAssets = assets2.filter(
39678
- (asset2) => !assets1.some((asset1) => asset1.assetId === asset2.assetId)
39679
- );
39680
- const mergedAssets = assets1.map((asset1) => {
39681
- const matchingAsset = assets2.find((asset2) => asset2.assetId === asset1.assetId);
39682
- if (!matchingAsset) {
39683
- return asset1;
40233
+ const assetMap = /* @__PURE__ */ new Map();
40234
+ assets1.forEach((asset) => {
40235
+ assetMap.set(asset.assetId, { ...asset });
40236
+ });
40237
+ assets2.forEach((asset) => {
40238
+ const existingAsset = assetMap.get(asset.assetId);
40239
+ if (existingAsset) {
40240
+ existingAsset.amount = bn(existingAsset.amount).add(asset.amount);
40241
+ } else {
40242
+ assetMap.set(asset.assetId, { ...asset });
39684
40243
  }
39685
- const mergedAmount = bn(asset1.amount).add(matchingAsset.amount);
39686
- return { ...asset1, amount: mergedAmount };
39687
40244
  });
39688
- return mergedAssets.concat(filteredAssets);
39689
- };
40245
+ return Array.from(assetMap.values());
40246
+ }
39690
40247
  function isSameOperation(a, b) {
39691
40248
  return a.name === b.name && a.from?.address === b.from?.address && a.to?.address === b.to?.address && a.from?.type === b.from?.type && a.to?.type === b.to?.type;
39692
40249
  }
40250
+ function mergeAssetsSent(existing, toAdd) {
40251
+ if (!toAdd.assetsSent?.length) {
40252
+ return existing.assetsSent;
40253
+ }
40254
+ return existing.assetsSent?.length ? mergeAssets(existing, toAdd) : toAdd.assetsSent;
40255
+ }
40256
+ function mergeCalls(existing, toAdd) {
40257
+ if (!toAdd.calls?.length) {
40258
+ return existing.calls;
40259
+ }
40260
+ return [...existing.calls || [], ...toAdd.calls];
40261
+ }
40262
+ function mergeOperations(existing, toAdd) {
40263
+ return {
40264
+ ...existing,
40265
+ assetsSent: mergeAssetsSent(existing, toAdd),
40266
+ calls: mergeCalls(existing, toAdd)
40267
+ };
40268
+ }
39693
40269
  function addOperation(operations, toAdd) {
39694
- const allOperations = [...operations];
39695
- const index = allOperations.findIndex((op) => isSameOperation(op, toAdd));
39696
- if (allOperations[index]) {
39697
- const existentOperation = { ...allOperations[index] };
39698
- if (toAdd.assetsSent?.length) {
39699
- existentOperation.assetsSent = existentOperation.assetsSent?.length ? mergeAssets(existentOperation, toAdd) : toAdd.assetsSent;
39700
- }
39701
- if (toAdd.calls?.length) {
39702
- existentOperation.calls = [...existentOperation.calls || [], ...toAdd.calls];
39703
- }
39704
- allOperations[index] = existentOperation;
39705
- } else {
39706
- allOperations.push(toAdd);
40270
+ const existingIndex = operations.findIndex((op) => isSameOperation(op, toAdd));
40271
+ if (existingIndex === -1) {
40272
+ return [...operations, toAdd];
39707
40273
  }
39708
- return allOperations;
40274
+ return operations.map((op, index) => index === existingIndex ? mergeOperations(op, toAdd) : op);
39709
40275
  }
39710
40276
  function getReceiptsTransferOut(receipts) {
39711
40277
  return getReceiptsByType(receipts, ReceiptType.TransferOut);
@@ -39718,7 +40284,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39718
40284
  const messageOutReceipts = getReceiptsMessageOut(receipts);
39719
40285
  const withdrawFromFuelOperations = messageOutReceipts.reduce(
39720
40286
  (prevWithdrawFromFuelOps, receipt) => {
39721
- const input = getInputFromAssetId(inputs, baseAssetId);
40287
+ const input = getInputFromAssetId(inputs, baseAssetId, true);
39722
40288
  if (input) {
39723
40289
  const inputAddress = getInputAccountAddress(input);
39724
40290
  const newWithdrawFromFuelOps = addOperation(prevWithdrawFromFuelOps, {
@@ -39747,65 +40313,80 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39747
40313
  );
39748
40314
  return withdrawFromFuelOperations;
39749
40315
  }
40316
+ function getContractCalls(contractInput, abiMap, receipt, rawPayload, maxInputs) {
40317
+ const abi = abiMap?.[contractInput.contractID];
40318
+ if (!abi) {
40319
+ return [];
40320
+ }
40321
+ return [
40322
+ getFunctionCall({
40323
+ abi,
40324
+ receipt,
40325
+ rawPayload,
40326
+ maxInputs
40327
+ })
40328
+ ];
40329
+ }
40330
+ function getAssetsSent(receipt) {
40331
+ return receipt.amount?.isZero() ? void 0 : [
40332
+ {
40333
+ amount: receipt.amount,
40334
+ assetId: receipt.assetId
40335
+ }
40336
+ ];
40337
+ }
40338
+ function processCallReceipt(receipt, contractInput, inputs, abiMap, rawPayload, maxInputs, baseAssetId) {
40339
+ const assetId = receipt.assetId === ZeroBytes32 ? baseAssetId : receipt.assetId;
40340
+ const input = getInputFromAssetId(inputs, assetId, assetId === baseAssetId);
40341
+ if (!input) {
40342
+ return [];
40343
+ }
40344
+ const inputAddress = getInputAccountAddress(input);
40345
+ const calls = getContractCalls(contractInput, abiMap, receipt, rawPayload, maxInputs);
40346
+ return [
40347
+ {
40348
+ name: "Contract call" /* contractCall */,
40349
+ from: {
40350
+ type: 1 /* account */,
40351
+ address: inputAddress
40352
+ },
40353
+ to: {
40354
+ type: 0 /* contract */,
40355
+ address: receipt.to
40356
+ },
40357
+ assetsSent: getAssetsSent(receipt),
40358
+ calls
40359
+ }
40360
+ ];
40361
+ }
39750
40362
  function getContractCallOperations({
39751
40363
  inputs,
39752
40364
  outputs,
39753
40365
  receipts,
39754
40366
  abiMap,
39755
40367
  rawPayload,
39756
- maxInputs
40368
+ maxInputs,
40369
+ baseAssetId
39757
40370
  }) {
39758
40371
  const contractCallReceipts = getReceiptsCall(receipts);
39759
40372
  const contractOutputs = getOutputsContract(outputs);
39760
- const contractCallOperations = contractOutputs.reduce((prevOutputCallOps, output3) => {
40373
+ return contractOutputs.flatMap((output3) => {
39761
40374
  const contractInput = getInputContractFromIndex(inputs, output3.inputIndex);
39762
- if (contractInput) {
39763
- const newCallOps = contractCallReceipts.reduce((prevContractCallOps, receipt) => {
39764
- if (receipt.to === contractInput.contractID) {
39765
- const input = getInputFromAssetId(inputs, receipt.assetId);
39766
- if (input) {
39767
- const inputAddress = getInputAccountAddress(input);
39768
- const calls = [];
39769
- const abi = abiMap?.[contractInput.contractID];
39770
- if (abi) {
39771
- calls.push(
39772
- getFunctionCall({
39773
- abi,
39774
- receipt,
39775
- rawPayload,
39776
- maxInputs
39777
- })
39778
- );
39779
- }
39780
- const newContractCallOps = addOperation(prevContractCallOps, {
39781
- name: "Contract call" /* contractCall */,
39782
- from: {
39783
- type: 1 /* account */,
39784
- address: inputAddress
39785
- },
39786
- to: {
39787
- type: 0 /* contract */,
39788
- address: receipt.to
39789
- },
39790
- // if no amount is forwarded to the contract, skip showing assetsSent
39791
- assetsSent: receipt.amount?.isZero() ? void 0 : [
39792
- {
39793
- amount: receipt.amount,
39794
- assetId: receipt.assetId
39795
- }
39796
- ],
39797
- calls
39798
- });
39799
- return newContractCallOps;
39800
- }
39801
- }
39802
- return prevContractCallOps;
39803
- }, prevOutputCallOps);
39804
- return newCallOps;
40375
+ if (!contractInput) {
40376
+ return [];
39805
40377
  }
39806
- return prevOutputCallOps;
39807
- }, []);
39808
- return contractCallOperations;
40378
+ return contractCallReceipts.filter((receipt) => receipt.to === contractInput.contractID).flatMap(
40379
+ (receipt) => processCallReceipt(
40380
+ receipt,
40381
+ contractInput,
40382
+ inputs,
40383
+ abiMap,
40384
+ rawPayload,
40385
+ maxInputs,
40386
+ baseAssetId
40387
+ )
40388
+ );
40389
+ });
39809
40390
  }
39810
40391
  function extractTransferOperationFromReceipt(receipt, contractInputs, changeOutputs) {
39811
40392
  const { to: toAddress, assetId, amount } = receipt;
@@ -39837,32 +40418,40 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39837
40418
  function getTransferOperations({
39838
40419
  inputs,
39839
40420
  outputs,
39840
- receipts
40421
+ receipts,
40422
+ baseAssetId
39841
40423
  }) {
39842
40424
  let operations = [];
39843
40425
  const coinOutputs = getOutputsCoin(outputs);
39844
40426
  const contractInputs = getInputsContract(inputs);
39845
40427
  const changeOutputs = getOutputsChange(outputs);
39846
- coinOutputs.forEach((output3) => {
39847
- const { amount, assetId, to } = output3;
39848
- const changeOutput = changeOutputs.find((change) => change.assetId === assetId);
39849
- if (changeOutput) {
40428
+ const aggregated = aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetId);
40429
+ coinOutputs.forEach(({ amount, assetId, to }) => {
40430
+ const txPayers = aggregated.get(assetId) || /* @__PURE__ */ new Map();
40431
+ let selectedPayer;
40432
+ let fallbackPayer;
40433
+ for (const [address, payedAmount] of txPayers) {
40434
+ if (!fallbackPayer) {
40435
+ fallbackPayer = address;
40436
+ }
40437
+ if (payedAmount.gte(amount)) {
40438
+ selectedPayer = address;
40439
+ break;
40440
+ }
40441
+ }
40442
+ selectedPayer = selectedPayer || fallbackPayer;
40443
+ if (selectedPayer) {
39850
40444
  operations = addOperation(operations, {
39851
40445
  name: "Transfer asset" /* transfer */,
39852
40446
  from: {
39853
40447
  type: 1 /* account */,
39854
- address: changeOutput.to
40448
+ address: selectedPayer
39855
40449
  },
39856
40450
  to: {
39857
40451
  type: 1 /* account */,
39858
40452
  address: to
39859
40453
  },
39860
- assetsSent: [
39861
- {
39862
- assetId,
39863
- amount
39864
- }
39865
- ]
40454
+ assetsSent: [{ assetId, amount }]
39866
40455
  });
39867
40456
  }
39868
40457
  });
@@ -39935,21 +40524,19 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39935
40524
  baseAssetId
39936
40525
  }) {
39937
40526
  if (isTypeCreate(transactionType)) {
39938
- return [
39939
- ...getContractCreatedOperations({ inputs, outputs }),
39940
- ...getTransferOperations({ inputs, outputs, receipts })
39941
- ];
40527
+ return [...getContractCreatedOperations({ inputs, outputs })];
39942
40528
  }
39943
40529
  if (isTypeScript(transactionType)) {
39944
40530
  return [
39945
- ...getTransferOperations({ inputs, outputs, receipts }),
40531
+ ...getTransferOperations({ inputs, outputs, receipts, baseAssetId }),
39946
40532
  ...getContractCallOperations({
39947
40533
  inputs,
39948
40534
  outputs,
39949
40535
  receipts,
39950
40536
  abiMap,
39951
40537
  rawPayload,
39952
- maxInputs
40538
+ maxInputs,
40539
+ baseAssetId
39953
40540
  }),
39954
40541
  ...getWithdrawFromFuelOperations({ inputs, receipts, baseAssetId })
39955
40542
  ];
@@ -40140,6 +40727,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40140
40727
  isTypeScript: isTypeScript(transaction.type),
40141
40728
  isTypeUpgrade: isTypeUpgrade(transaction.type),
40142
40729
  isTypeUpload: isTypeUpload(transaction.type),
40730
+ isTypeBlob: isTypeBlob(transaction.type),
40143
40731
  isStatusFailure,
40144
40732
  isStatusSuccess,
40145
40733
  isStatusPending,
@@ -40163,6 +40751,36 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40163
40751
  }
40164
40752
 
40165
40753
  // src/providers/transaction-response/transaction-response.ts
40754
+ function mapGqlOutputsToTxOutputs(outputs) {
40755
+ return outputs.map((o) => {
40756
+ const obj = "amount" in o ? { ...o, amount: bn(o.amount) } : o;
40757
+ switch (obj.type) {
40758
+ case "CoinOutput":
40759
+ return { ...obj, type: OutputType.Coin };
40760
+ case "ContractOutput":
40761
+ return {
40762
+ ...obj,
40763
+ type: OutputType.Contract,
40764
+ inputIndex: parseInt(obj.inputIndex, 10)
40765
+ };
40766
+ case "ChangeOutput":
40767
+ return {
40768
+ ...obj,
40769
+ type: OutputType.Change
40770
+ };
40771
+ case "VariableOutput":
40772
+ return { ...obj, type: OutputType.Variable };
40773
+ case "ContractCreated":
40774
+ return {
40775
+ ...obj,
40776
+ type: OutputType.ContractCreated,
40777
+ contractId: obj.contract
40778
+ };
40779
+ default:
40780
+ return assertUnreachable(obj);
40781
+ }
40782
+ });
40783
+ }
40166
40784
  var TransactionResponse = class {
40167
40785
  /** Transaction ID */
40168
40786
  id;
@@ -40172,17 +40790,20 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40172
40790
  gasUsed = bn(0);
40173
40791
  /** The graphql Transaction with receipts object. */
40174
40792
  gqlTransaction;
40793
+ request;
40794
+ status;
40175
40795
  abis;
40176
40796
  /**
40177
40797
  * Constructor for `TransactionResponse`.
40178
40798
  *
40179
- * @param id - The transaction ID.
40799
+ * @param tx - The transaction ID or TransactionRequest.
40180
40800
  * @param provider - The provider.
40181
40801
  */
40182
- constructor(id, provider, abis) {
40183
- this.id = id;
40802
+ constructor(tx, provider, abis) {
40803
+ this.id = typeof tx === "string" ? tx : tx.getTransactionId(provider.getChainId());
40184
40804
  this.provider = provider;
40185
40805
  this.abis = abis;
40806
+ this.request = typeof tx === "string" ? void 0 : tx;
40186
40807
  }
40187
40808
  /**
40188
40809
  * Async constructor for `TransactionResponse`. This method can be used to create
@@ -40197,6 +40818,54 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40197
40818
  await response.fetch();
40198
40819
  return response;
40199
40820
  }
40821
+ applyMalleableSubscriptionFields(transaction) {
40822
+ const status = this.status;
40823
+ if (!status) {
40824
+ return;
40825
+ }
40826
+ const tx = transaction;
40827
+ if (status.type === "SuccessStatus" || status.type === "FailureStatus") {
40828
+ tx.inputs = tx.inputs.map((input, idx) => {
40829
+ if ("txPointer" in input) {
40830
+ const correspondingInput = status.transaction.inputs?.[idx];
40831
+ return {
40832
+ ...input,
40833
+ txPointer: TxPointerCoder.decodeFromGqlScalar(correspondingInput.txPointer)
40834
+ };
40835
+ }
40836
+ return input;
40837
+ });
40838
+ tx.outputs = mapGqlOutputsToTxOutputs(status.transaction.outputs);
40839
+ if ("receiptsRoot" in status.transaction) {
40840
+ tx.receiptsRoot = status.transaction.receiptsRoot;
40841
+ }
40842
+ }
40843
+ }
40844
+ async getTransaction() {
40845
+ if (this.request) {
40846
+ const tx = this.request.toTransaction();
40847
+ this.applyMalleableSubscriptionFields(tx);
40848
+ return {
40849
+ tx,
40850
+ bytes: this.request.toTransactionBytes()
40851
+ };
40852
+ }
40853
+ const gqlTransaction = this.gqlTransaction ?? await this.fetch();
40854
+ return {
40855
+ tx: this.decodeTransaction(gqlTransaction),
40856
+ bytes: arrayify(gqlTransaction.rawPayload)
40857
+ };
40858
+ }
40859
+ getReceipts() {
40860
+ const status = this.status ?? this.gqlTransaction?.status;
40861
+ switch (status?.type) {
40862
+ case "SuccessStatus":
40863
+ case "FailureStatus":
40864
+ return status.receipts.map(processGqlReceipt);
40865
+ default:
40866
+ return [];
40867
+ }
40868
+ }
40200
40869
  /**
40201
40870
  * Fetch the transaction with receipts from the provider.
40202
40871
  *
@@ -40207,11 +40876,12 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40207
40876
  transactionId: this.id
40208
40877
  });
40209
40878
  if (!response.transaction) {
40210
- const subscription = this.provider.operations.statusChange({
40879
+ const subscription = await this.provider.operations.statusChange({
40211
40880
  transactionId: this.id
40212
40881
  });
40213
40882
  for await (const { statusChange } of subscription) {
40214
40883
  if (statusChange) {
40884
+ this.status = statusChange;
40215
40885
  break;
40216
40886
  }
40217
40887
  }
@@ -40240,28 +40910,17 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40240
40910
  * @returns
40241
40911
  */
40242
40912
  async getTransactionSummary(contractsAbiMap) {
40243
- let transaction = this.gqlTransaction;
40244
- if (!transaction) {
40245
- transaction = await this.fetch();
40246
- }
40247
- const decodedTransaction = this.decodeTransaction(
40248
- transaction
40249
- );
40250
- let txReceipts = [];
40251
- if (transaction?.status && "receipts" in transaction.status) {
40252
- txReceipts = transaction.status.receipts;
40253
- }
40254
- const receipts = txReceipts.map(processGqlReceipt) || [];
40913
+ const { tx: transaction, bytes: transactionBytes } = await this.getTransaction();
40255
40914
  const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
40256
40915
  const gasPrice = await this.provider.getLatestGasPrice();
40257
40916
  const maxInputs = this.provider.getChain().consensusParameters.txParameters.maxInputs;
40258
40917
  const baseAssetId = this.provider.getBaseAssetId();
40259
40918
  const transactionSummary = assembleTransactionSummary({
40260
40919
  id: this.id,
40261
- receipts,
40262
- transaction: decodedTransaction,
40263
- transactionBytes: arrayify(transaction.rawPayload),
40264
- gqlTransactionStatus: transaction.status,
40920
+ receipts: this.getReceipts(),
40921
+ transaction,
40922
+ transactionBytes,
40923
+ gqlTransactionStatus: this.status ?? this.gqlTransaction?.status,
40265
40924
  gasPerByte,
40266
40925
  gasPriceFactor,
40267
40926
  abiMap: contractsAbiMap,
@@ -40278,11 +40937,13 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40278
40937
  if (status && status !== "SubmittedStatus") {
40279
40938
  return;
40280
40939
  }
40281
- const subscription = this.provider.operations.statusChange({
40940
+ const subscription = await this.provider.operations.statusChange({
40282
40941
  transactionId: this.id
40283
40942
  });
40284
40943
  for await (const { statusChange } of subscription) {
40944
+ this.status = statusChange;
40285
40945
  if (statusChange.type === "SqueezedOutStatus") {
40946
+ this.unsetResourceCache();
40286
40947
  throw new FuelError(
40287
40948
  ErrorCode.TRANSACTION_SQUEEZED_OUT,
40288
40949
  `Transaction Squeezed Out with reason: ${statusChange.reason}`
@@ -40292,7 +40953,6 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40292
40953
  break;
40293
40954
  }
40294
40955
  }
40295
- await this.fetch();
40296
40956
  }
40297
40957
  /**
40298
40958
  * Assembles the result of a transaction by retrieving the transaction summary,
@@ -40309,7 +40969,6 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40309
40969
  async assembleResult(contractsAbiMap) {
40310
40970
  const transactionSummary = await this.getTransactionSummary(contractsAbiMap);
40311
40971
  const transactionResult = {
40312
- gqlTransaction: this.gqlTransaction,
40313
40972
  ...transactionSummary
40314
40973
  };
40315
40974
  let logs = [];
@@ -40321,9 +40980,11 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40321
40980
  );
40322
40981
  transactionResult.logs = logs;
40323
40982
  }
40324
- const { gqlTransaction, receipts } = transactionResult;
40325
- if (gqlTransaction.status?.type === "FailureStatus") {
40326
- const { reason } = gqlTransaction.status;
40983
+ const { receipts } = transactionResult;
40984
+ const status = this.status ?? this.gqlTransaction?.status;
40985
+ if (status?.type === "FailureStatus") {
40986
+ this.unsetResourceCache();
40987
+ const { reason } = status;
40327
40988
  throw extractTxError({
40328
40989
  receipts,
40329
40990
  statusReason: reason,
@@ -40349,6 +41010,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40349
41010
  async wait(contractsAbiMap) {
40350
41011
  return this.waitForResult(contractsAbiMap);
40351
41012
  }
41013
+ unsetResourceCache() {
41014
+ this.provider.cache?.unset(this.id);
41015
+ }
40352
41016
  };
40353
41017
 
40354
41018
  // src/providers/utils/auto-retry-fetch.ts
@@ -40387,24 +41051,11 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40387
41051
  };
40388
41052
  }
40389
41053
 
40390
- // src/providers/utils/merge-quantities.ts
40391
- var mergeQuantities = (...coinQuantities) => {
40392
- const resultMap = {};
40393
- function addToMap({ amount, assetId }) {
40394
- if (resultMap[assetId]) {
40395
- resultMap[assetId] = resultMap[assetId].add(amount);
40396
- } else {
40397
- resultMap[assetId] = amount;
40398
- }
40399
- }
40400
- coinQuantities.forEach((arr) => arr.forEach(addToMap));
40401
- return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
40402
- };
40403
-
40404
41054
  // src/providers/provider.ts
40405
41055
  var MAX_RETRIES = 10;
40406
41056
  var RESOURCES_PAGE_SIZE_LIMIT = 512;
40407
41057
  var BLOCKS_PAGE_SIZE_LIMIT = 5;
41058
+ var DEFAULT_RESOURCE_CACHE_TTL = 2e4;
40408
41059
  var processGqlChain = (chain) => {
40409
41060
  const { name, daHeight, consensusParameters, latestBlock } = chain;
40410
41061
  const {
@@ -40487,14 +41138,23 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40487
41138
  __publicField(this, "cache");
40488
41139
  __publicField(this, "options", {
40489
41140
  timeout: void 0,
40490
- cacheUtxo: void 0,
41141
+ resourceCacheTTL: void 0,
40491
41142
  fetch: void 0,
40492
41143
  retryOptions: void 0
40493
41144
  });
40494
41145
  this.options = { ...this.options, ...options };
40495
41146
  this.url = url;
40496
41147
  this.operations = this.createOperations();
40497
- this.cache = options.cacheUtxo ? new MemoryCache(options.cacheUtxo) : void 0;
41148
+ const { resourceCacheTTL } = this.options;
41149
+ if (isDefined(resourceCacheTTL)) {
41150
+ if (resourceCacheTTL !== -1) {
41151
+ this.cache = new ResourceCache(resourceCacheTTL);
41152
+ } else {
41153
+ this.cache = void 0;
41154
+ }
41155
+ } else {
41156
+ this.cache = new ResourceCache(DEFAULT_RESOURCE_CACHE_TTL);
41157
+ }
40498
41158
  }
40499
41159
  /** @hidden */
40500
41160
  static clearChainAndNodeCaches() {
@@ -40596,9 +41256,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40596
41256
  * @returns A promise that resolves to the Chain and NodeInfo.
40597
41257
  */
40598
41258
  async fetchChainAndNodeInfo() {
40599
- const chain = await this.fetchChain();
40600
41259
  const nodeInfo = await this.fetchNode();
40601
41260
  _Provider.ensureClientVersionIsSupported(nodeInfo);
41261
+ const chain = await this.fetchChain();
40602
41262
  return {
40603
41263
  chain,
40604
41264
  nodeInfo
@@ -40644,7 +41304,7 @@ Supported fuel-core version: ${supportedVersion}.`
40644
41304
  const opDefinition = query.definitions.find((x) => x.kind === "OperationDefinition");
40645
41305
  const isSubscription = opDefinition?.operation === "subscription";
40646
41306
  if (isSubscription) {
40647
- return new FuelGraphqlSubscriber({
41307
+ return FuelGraphqlSubscriber.create({
40648
41308
  url: this.url,
40649
41309
  query,
40650
41310
  fetchFn: (url, requestInit) => fetchFn(url, requestInit, this.options),
@@ -40725,6 +41385,21 @@ Supported fuel-core version: ${supportedVersion}.`
40725
41385
  } = this.getChain();
40726
41386
  return baseAssetId;
40727
41387
  }
41388
+ validateTransaction(tx, consensusParameters) {
41389
+ const { maxOutputs, maxInputs } = consensusParameters.txParameters;
41390
+ if (bn(tx.inputs.length).gt(maxInputs)) {
41391
+ throw new FuelError(
41392
+ ErrorCode.MAX_INPUTS_EXCEEDED,
41393
+ "The transaction exceeds the maximum allowed number of inputs."
41394
+ );
41395
+ }
41396
+ if (bn(tx.outputs.length).gt(maxOutputs)) {
41397
+ throw new FuelError(
41398
+ ErrorCode.MAX_OUTPUTS_EXCEEDED,
41399
+ "The transaction exceeds the maximum allowed number of outputs."
41400
+ );
41401
+ }
41402
+ }
40728
41403
  /**
40729
41404
  * Submits a transaction to the chain to be executed.
40730
41405
  *
@@ -40736,39 +41411,23 @@ Supported fuel-core version: ${supportedVersion}.`
40736
41411
  * @returns A promise that resolves to the transaction response object.
40737
41412
  */
40738
41413
  // #region Provider-sendTransaction
40739
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution = false } = {}) {
41414
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {
40740
41415
  const transactionRequest = transactionRequestify(transactionRequestLike);
40741
- __privateMethod(this, _cacheInputs, cacheInputs_fn).call(this, transactionRequest.inputs);
40742
41416
  if (estimateTxDependencies) {
40743
41417
  await this.estimateTxDependencies(transactionRequest);
40744
41418
  }
41419
+ const { consensusParameters } = this.getChain();
41420
+ this.validateTransaction(transactionRequest, consensusParameters);
40745
41421
  const encodedTransaction = hexlify(transactionRequest.toTransactionBytes());
40746
41422
  let abis;
40747
- if (transactionRequest.type === TransactionType.Script) {
41423
+ if (isTransactionTypeScript(transactionRequest)) {
40748
41424
  abis = transactionRequest.abis;
40749
41425
  }
40750
- if (awaitExecution) {
40751
- const subscription = this.operations.submitAndAwait({ encodedTransaction });
40752
- for await (const { submitAndAwait } of subscription) {
40753
- if (submitAndAwait.type === "SqueezedOutStatus") {
40754
- throw new FuelError(
40755
- ErrorCode.TRANSACTION_SQUEEZED_OUT,
40756
- `Transaction Squeezed Out with reason: ${submitAndAwait.reason}`
40757
- );
40758
- }
40759
- if (submitAndAwait.type !== "SubmittedStatus") {
40760
- break;
40761
- }
40762
- }
40763
- const transactionId2 = transactionRequest.getTransactionId(this.getChainId());
40764
- const response = new TransactionResponse(transactionId2, this, abis);
40765
- await response.fetch();
40766
- return response;
40767
- }
40768
41426
  const {
40769
41427
  submit: { id: transactionId }
40770
41428
  } = await this.operations.submit({ encodedTransaction });
40771
- return new TransactionResponse(transactionId, this, abis);
41429
+ __privateMethod(this, _cacheInputs, cacheInputs_fn).call(this, transactionRequest.inputs, transactionId);
41430
+ return new TransactionResponse(transactionRequest, this, abis);
40772
41431
  }
40773
41432
  /**
40774
41433
  * Executes a transaction without actually submitting it to the chain.
@@ -40837,7 +41496,7 @@ Supported fuel-core version: ${supportedVersion}.`
40837
41496
  * @returns A promise that resolves to the estimate transaction dependencies.
40838
41497
  */
40839
41498
  async estimateTxDependencies(transactionRequest) {
40840
- if (transactionRequest.type === TransactionType.Create) {
41499
+ if (isTransactionTypeCreate(transactionRequest)) {
40841
41500
  return {
40842
41501
  receipts: [],
40843
41502
  outputVariables: 0,
@@ -40859,7 +41518,7 @@ Supported fuel-core version: ${supportedVersion}.`
40859
41518
  dryRunStatus = status;
40860
41519
  const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
40861
41520
  const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
40862
- if (hasMissingOutputs) {
41521
+ if (hasMissingOutputs && isTransactionTypeScript(transactionRequest)) {
40863
41522
  outputVariables += missingOutputVariables.length;
40864
41523
  transactionRequest.addVariableOutputs(missingOutputVariables.length);
40865
41524
  missingOutputContractIds.forEach(({ contractId }) => {
@@ -40901,7 +41560,7 @@ Supported fuel-core version: ${supportedVersion}.`
40901
41560
  const allRequests = clone_default(transactionRequests);
40902
41561
  const serializedTransactionsMap = /* @__PURE__ */ new Map();
40903
41562
  allRequests.forEach((req, index) => {
40904
- if (req.type === TransactionType.Script) {
41563
+ if (isTransactionTypeScript(req)) {
40905
41564
  serializedTransactionsMap.set(index, hexlify(req.toTransactionBytes()));
40906
41565
  }
40907
41566
  });
@@ -40927,7 +41586,7 @@ Supported fuel-core version: ${supportedVersion}.`
40927
41586
  );
40928
41587
  const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
40929
41588
  const request = allRequests[requestIdx];
40930
- if (hasMissingOutputs && request?.type === TransactionType.Script) {
41589
+ if (hasMissingOutputs && isTransactionTypeScript(request)) {
40931
41590
  result.outputVariables += missingOutputVariables.length;
40932
41591
  request.addVariableOutputs(missingOutputVariables.length);
40933
41592
  missingOutputContractIds.forEach(({ contractId }) => {
@@ -40991,7 +41650,7 @@ Supported fuel-core version: ${supportedVersion}.`
40991
41650
  tip: transactionRequest.tip
40992
41651
  }).add(1);
40993
41652
  let gasLimit = bn(0);
40994
- if (transactionRequest.type === TransactionType.Script) {
41653
+ if (isTransactionTypeScript(transactionRequest)) {
40995
41654
  gasLimit = transactionRequest.gasLimit;
40996
41655
  if (transactionRequest.gasLimit.eq(0)) {
40997
41656
  transactionRequest.gasLimit = minGas;
@@ -41046,6 +41705,8 @@ Supported fuel-core version: ${supportedVersion}.`
41046
41705
  return { receipts: callResult[0].receipts };
41047
41706
  }
41048
41707
  /**
41708
+ * @hidden
41709
+ *
41049
41710
  * Returns a transaction cost to enable user
41050
41711
  * to set gasLimit and also reserve balance amounts
41051
41712
  * on the transaction.
@@ -41055,23 +41716,16 @@ Supported fuel-core version: ${supportedVersion}.`
41055
41716
  *
41056
41717
  * @returns A promise that resolves to the transaction cost object.
41057
41718
  */
41058
- async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
41719
+ async getTransactionCost(transactionRequestLike, { signatureCallback } = {}) {
41059
41720
  const txRequestClone = clone_default(transactionRequestify(transactionRequestLike));
41060
- const isScriptTransaction = txRequestClone.type === TransactionType.Script;
41061
- const baseAssetId = this.getBaseAssetId();
41062
41721
  const updateMaxFee = txRequestClone.maxFee.eq(0);
41063
- const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
41064
- const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
41065
- txRequestClone.fundWithFakeUtxos(allQuantities, baseAssetId, resourcesOwner?.address);
41722
+ const isScriptTransaction = isTransactionTypeScript(txRequestClone);
41066
41723
  if (isScriptTransaction) {
41067
41724
  txRequestClone.gasLimit = bn(0);
41068
41725
  }
41069
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
41070
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
41071
- }
41072
41726
  const signedRequest = clone_default(txRequestClone);
41073
41727
  let addedSignatures = 0;
41074
- if (signatureCallback && isScriptTransaction) {
41728
+ if (signatureCallback && isTransactionTypeScript(signedRequest)) {
41075
41729
  const lengthBefore = signedRequest.witnesses.length;
41076
41730
  await signatureCallback(signedRequest);
41077
41731
  addedSignatures = signedRequest.witnesses.length - lengthBefore;
@@ -41104,7 +41758,6 @@ Supported fuel-core version: ${supportedVersion}.`
41104
41758
  }));
41105
41759
  }
41106
41760
  return {
41107
- requiredQuantities: allQuantities,
41108
41761
  receipts,
41109
41762
  gasUsed,
41110
41763
  gasPrice,
@@ -41120,34 +41773,6 @@ Supported fuel-core version: ${supportedVersion}.`
41120
41773
  updateMaxFee
41121
41774
  };
41122
41775
  }
41123
- /**
41124
- * Get the required quantities and associated resources for a transaction.
41125
- *
41126
- * @param owner - address to add resources from.
41127
- * @param transactionRequestLike - transaction request to populate resources for.
41128
- * @param quantitiesToContract - quantities for the contract (optional).
41129
- *
41130
- * @returns a promise resolving to the required quantities for the transaction.
41131
- */
41132
- async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
41133
- const ownerAddress = Address.fromAddressOrString(owner);
41134
- const transactionRequest = transactionRequestify(clone_default(transactionRequestLike));
41135
- const transactionCost = await this.getTransactionCost(transactionRequest, {
41136
- quantitiesToContract
41137
- });
41138
- transactionRequest.addResources(
41139
- await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
41140
- );
41141
- const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
41142
- quantitiesToContract
41143
- });
41144
- const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
41145
- return {
41146
- resources,
41147
- requiredQuantities,
41148
- ...txCost
41149
- };
41150
- }
41151
41776
  /**
41152
41777
  * Returns coins for the given owner.
41153
41778
  *
@@ -41196,10 +41821,9 @@ Supported fuel-core version: ${supportedVersion}.`
41196
41821
  utxos: excludedIds?.utxos?.map((id) => hexlify(id)) || []
41197
41822
  };
41198
41823
  if (this.cache) {
41199
- const uniqueUtxos = new Set(
41200
- excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => hexlify(id)))
41201
- );
41202
- excludeInput.utxos = Array.from(uniqueUtxos);
41824
+ const cached = this.cache.getActiveData();
41825
+ excludeInput.messages.push(...cached.messages);
41826
+ excludeInput.utxos.push(...cached.utxos);
41203
41827
  }
41204
41828
  const coinsQuery = {
41205
41829
  owner: ownerAddress.toB256(),
@@ -41684,15 +42308,22 @@ Supported fuel-core version: ${supportedVersion}.`
41684
42308
  };
41685
42309
  var Provider = _Provider;
41686
42310
  _cacheInputs = new WeakSet();
41687
- cacheInputs_fn = function(inputs) {
42311
+ cacheInputs_fn = function(inputs, transactionId) {
41688
42312
  if (!this.cache) {
41689
42313
  return;
41690
42314
  }
41691
- inputs.forEach((input) => {
41692
- if (input.type === InputType.Coin) {
41693
- this.cache?.set(input.id);
41694
- }
41695
- });
42315
+ const inputsToCache = inputs.reduce(
42316
+ (acc, input) => {
42317
+ if (input.type === InputType.Coin) {
42318
+ acc.utxos.push(input.id);
42319
+ } else if (input.type === InputType.Message) {
42320
+ acc.messages.push(input.nonce);
42321
+ }
42322
+ return acc;
42323
+ },
42324
+ { utxos: [], messages: [] }
42325
+ );
42326
+ this.cache.set(transactionId, inputsToCache);
41696
42327
  };
41697
42328
  /** @hidden */
41698
42329
  __publicField(Provider, "chainInfoCache", {});
@@ -41745,7 +42376,6 @@ Supported fuel-core version: ${supportedVersion}.`
41745
42376
  baseAssetId
41746
42377
  });
41747
42378
  return {
41748
- gqlTransaction,
41749
42379
  ...transactionInfo
41750
42380
  };
41751
42381
  }
@@ -41759,6 +42389,7 @@ Supported fuel-core version: ${supportedVersion}.`
41759
42389
  const gasPrice = await provider.getLatestGasPrice();
41760
42390
  const baseAssetId = provider.getBaseAssetId();
41761
42391
  const transactionSummary = assembleTransactionSummary({
42392
+ id: transactionRequest.getTransactionId(provider.getChainId()),
41762
42393
  receipts,
41763
42394
  transaction,
41764
42395
  transactionBytes,
@@ -41811,7 +42442,6 @@ Supported fuel-core version: ${supportedVersion}.`
41811
42442
  baseAssetId
41812
42443
  });
41813
42444
  const output3 = {
41814
- gqlTransaction,
41815
42445
  ...transactionSummary
41816
42446
  };
41817
42447
  return output3;
@@ -41947,6 +42577,20 @@ Supported fuel-core version: ${supportedVersion}.`
41947
42577
  ];
41948
42578
  var assets = resolveIconPaths(rawAssets, fuelAssetsBaseUrl);
41949
42579
 
42580
+ // src/providers/utils/merge-quantities.ts
42581
+ var mergeQuantities = (...coinQuantities) => {
42582
+ const resultMap = {};
42583
+ function addToMap({ amount, assetId }) {
42584
+ if (resultMap[assetId]) {
42585
+ resultMap[assetId] = resultMap[assetId].add(amount);
42586
+ } else {
42587
+ resultMap[assetId] = amount;
42588
+ }
42589
+ }
42590
+ coinQuantities.forEach((arr) => arr.forEach(addToMap));
42591
+ return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
42592
+ };
42593
+
41950
42594
  // src/utils/formatTransferToContractScriptData.ts
41951
42595
  var asm = __toESM(require_node());
41952
42596
  var formatTransferToContractScriptData = (params) => {
@@ -41981,7 +42625,7 @@ Supported fuel-core version: ${supportedVersion}.`
41981
42625
  };
41982
42626
 
41983
42627
  // src/account.ts
41984
- var MAX_FUNDING_ATTEMPTS = 2;
42628
+ var MAX_FUNDING_ATTEMPTS = 5;
41985
42629
  var Account = class extends AbstractAccount {
41986
42630
  /**
41987
42631
  * The address associated with the account.
@@ -42094,7 +42738,7 @@ Supported fuel-core version: ${supportedVersion}.`
42094
42738
  * @returns A promise that resolves to the funded transaction request.
42095
42739
  */
42096
42740
  async fund(request, params) {
42097
- const { addedSignatures, estimatedPredicates, requiredQuantities, updateMaxFee } = params;
42741
+ const { addedSignatures, estimatedPredicates, requiredQuantities, updateMaxFee, gasPrice } = params;
42098
42742
  const fee = request.maxFee;
42099
42743
  const baseAssetId = this.provider.getBaseAssetId();
42100
42744
  const requiredInBaseAsset = requiredQuantities.find((quantity) => quantity.assetId === baseAssetId)?.amount || bn(0);
@@ -42142,10 +42786,12 @@ Supported fuel-core version: ${supportedVersion}.`
42142
42786
  );
42143
42787
  }
42144
42788
  if (!updateMaxFee) {
42789
+ needsToBeFunded = false;
42145
42790
  break;
42146
42791
  }
42147
42792
  const { maxFee: newFee } = await this.provider.estimateTxGasAndFee({
42148
- transactionRequest: requestToReestimate2
42793
+ transactionRequest: requestToReestimate2,
42794
+ gasPrice
42149
42795
  });
42150
42796
  const totalBaseAssetOnInputs = getAssetAmountInRequestInputs(
42151
42797
  request.inputs,
@@ -42165,6 +42811,12 @@ Supported fuel-core version: ${supportedVersion}.`
42165
42811
  }
42166
42812
  fundingAttempts += 1;
42167
42813
  }
42814
+ if (needsToBeFunded) {
42815
+ throw new FuelError(
42816
+ ErrorCode.NOT_ENOUGH_FUNDS,
42817
+ `The account ${this.address} does not have enough base asset funds to cover the transaction execution.`
42818
+ );
42819
+ }
42168
42820
  request.updatePredicateGasUsed(estimatedPredicates);
42169
42821
  const requestToReestimate = clone_default(request);
42170
42822
  if (addedSignatures) {
@@ -42284,9 +42936,8 @@ Supported fuel-core version: ${supportedVersion}.`
42284
42936
  scriptData
42285
42937
  });
42286
42938
  request.addContractInputAndOutput(contractAddress);
42287
- const txCost = await this.provider.getTransactionCost(request, {
42288
- resourcesOwner: this,
42289
- quantitiesToContract: [{ amount: bn(amount), assetId: String(assetIdToTransfer) }]
42939
+ const txCost = await this.getTransactionCost(request, {
42940
+ quantities: [{ amount: bn(amount), assetId: String(assetIdToTransfer) }]
42290
42941
  });
42291
42942
  request = this.validateGasLimitAndMaxFee({
42292
42943
  transactionRequest: request,
@@ -42321,8 +42972,8 @@ Supported fuel-core version: ${supportedVersion}.`
42321
42972
  const params = { script, ...txParams };
42322
42973
  const baseAssetId = this.provider.getBaseAssetId();
42323
42974
  let request = new ScriptTransactionRequest(params);
42324
- const quantitiesToContract = [{ amount: bn(amount), assetId: baseAssetId }];
42325
- const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
42975
+ const quantities = [{ amount: bn(amount), assetId: baseAssetId }];
42976
+ const txCost = await this.getTransactionCost(request, { quantities });
42326
42977
  request = this.validateGasLimitAndMaxFee({
42327
42978
  transactionRequest: request,
42328
42979
  gasUsed: txCost.gasUsed,
@@ -42332,6 +42983,58 @@ Supported fuel-core version: ${supportedVersion}.`
42332
42983
  await this.fund(request, txCost);
42333
42984
  return this.sendTransaction(request);
42334
42985
  }
42986
+ /**
42987
+ * Returns a transaction cost to enable user
42988
+ * to set gasLimit and also reserve balance amounts
42989
+ * on the transaction.
42990
+ *
42991
+ * @param transactionRequestLike - The transaction request object.
42992
+ * @param transactionCostParams - The transaction cost parameters (optional).
42993
+ *
42994
+ * @returns A promise that resolves to the transaction cost object.
42995
+ */
42996
+ async getTransactionCost(transactionRequestLike, { signatureCallback, quantities = [] } = {}) {
42997
+ const txRequestClone = clone_default(transactionRequestify(transactionRequestLike));
42998
+ const baseAssetId = this.provider.getBaseAssetId();
42999
+ const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
43000
+ const requiredQuantities = mergeQuantities(coinOutputsQuantities, quantities);
43001
+ const transactionFeeForDryRun = [{ assetId: baseAssetId, amount: bn("100000000000000000") }];
43002
+ const findAssetInput = (assetId) => txRequestClone.inputs.find((input) => {
43003
+ if ("assetId" in input) {
43004
+ return input.assetId === assetId;
43005
+ }
43006
+ if ("recipient" in input) {
43007
+ return baseAssetId === assetId;
43008
+ }
43009
+ return false;
43010
+ });
43011
+ const updateAssetInput = (assetId, quantity) => {
43012
+ const assetInput = findAssetInput(assetId);
43013
+ const usedQuantity = quantity;
43014
+ if (assetInput && "amount" in assetInput) {
43015
+ assetInput.amount = usedQuantity;
43016
+ } else {
43017
+ txRequestClone.addResources(
43018
+ this.generateFakeResources([
43019
+ {
43020
+ amount: quantity,
43021
+ assetId
43022
+ }
43023
+ ])
43024
+ );
43025
+ }
43026
+ };
43027
+ mergeQuantities(requiredQuantities, transactionFeeForDryRun).forEach(
43028
+ ({ amount, assetId }) => updateAssetInput(assetId, amount)
43029
+ );
43030
+ const txCost = await this.provider.getTransactionCost(txRequestClone, {
43031
+ signatureCallback
43032
+ });
43033
+ return {
43034
+ ...txCost,
43035
+ requiredQuantities
43036
+ };
43037
+ }
42335
43038
  /**
42336
43039
  * Sign a message from the account via the connector.
42337
43040
  *
@@ -42368,7 +43071,7 @@ Supported fuel-core version: ${supportedVersion}.`
42368
43071
  * @param sendTransactionParams - The provider send transaction parameters (optional).
42369
43072
  * @returns A promise that resolves to the transaction response.
42370
43073
  */
42371
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
43074
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {
42372
43075
  if (this._connector) {
42373
43076
  return this.provider.getTransactionResponse(
42374
43077
  await this._connector.sendTransaction(this.address.toString(), transactionRequestLike)
@@ -42379,7 +43082,6 @@ Supported fuel-core version: ${supportedVersion}.`
42379
43082
  await this.provider.estimateTxDependencies(transactionRequest);
42380
43083
  }
42381
43084
  return this.provider.sendTransaction(transactionRequest, {
42382
- awaitExecution,
42383
43085
  estimateTxDependencies: false
42384
43086
  });
42385
43087
  }
@@ -42424,9 +43126,7 @@ Supported fuel-core version: ${supportedVersion}.`
42424
43126
  /** @hidden * */
42425
43127
  async estimateAndFundTransaction(transactionRequest, txParams) {
42426
43128
  let request = transactionRequest;
42427
- const txCost = await this.provider.getTransactionCost(request, {
42428
- resourcesOwner: this
42429
- });
43129
+ const txCost = await this.getTransactionCost(request);
42430
43130
  request = this.validateGasLimitAndMaxFee({
42431
43131
  transactionRequest: request,
42432
43132
  gasUsed: txCost.gasUsed,
@@ -42525,10 +43225,10 @@ Supported fuel-core version: ${supportedVersion}.`
42525
43225
  sum += a.length;
42526
43226
  }
42527
43227
  const res = new Uint8Array(sum);
42528
- for (let i = 0, pad3 = 0; i < arrays.length; i++) {
43228
+ for (let i = 0, pad = 0; i < arrays.length; i++) {
42529
43229
  const a = arrays[i];
42530
- res.set(a, pad3);
42531
- pad3 += a.length;
43230
+ res.set(a, pad);
43231
+ pad += a.length;
42532
43232
  }
42533
43233
  return res;
42534
43234
  }
@@ -42820,16 +43520,16 @@ Supported fuel-core version: ${supportedVersion}.`
42820
43520
  this.blockLen = this.iHash.blockLen;
42821
43521
  this.outputLen = this.iHash.outputLen;
42822
43522
  const blockLen = this.blockLen;
42823
- const pad3 = new Uint8Array(blockLen);
42824
- pad3.set(key.length > blockLen ? hash4.create().update(key).digest() : key);
42825
- for (let i = 0; i < pad3.length; i++)
42826
- pad3[i] ^= 54;
42827
- this.iHash.update(pad3);
43523
+ const pad = new Uint8Array(blockLen);
43524
+ pad.set(key.length > blockLen ? hash4.create().update(key).digest() : key);
43525
+ for (let i = 0; i < pad.length; i++)
43526
+ pad[i] ^= 54;
43527
+ this.iHash.update(pad);
42828
43528
  this.oHash = hash4.create();
42829
- for (let i = 0; i < pad3.length; i++)
42830
- pad3[i] ^= 54 ^ 92;
42831
- this.oHash.update(pad3);
42832
- pad3.fill(0);
43529
+ for (let i = 0; i < pad.length; i++)
43530
+ pad[i] ^= 54 ^ 92;
43531
+ this.oHash.update(pad);
43532
+ pad.fill(0);
42833
43533
  }
42834
43534
  update(buf) {
42835
43535
  exists2(this);
@@ -44248,53 +44948,6 @@ Supported fuel-core version: ${supportedVersion}.`
44248
44948
  }
44249
44949
  };
44250
44950
 
44251
- // ../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-node/stringify.js
44252
- var byteToHex = [];
44253
- for (let i = 0; i < 256; ++i) {
44254
- byteToHex.push((i + 256).toString(16).slice(1));
44255
- }
44256
- function unsafeStringify(arr, offset = 0) {
44257
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
44258
- }
44259
-
44260
- // ../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-node/rng.js
44261
- var import_node_crypto = __toESM(__require("crypto"));
44262
- var rnds8Pool = new Uint8Array(256);
44263
- var poolPtr = rnds8Pool.length;
44264
- function rng() {
44265
- if (poolPtr > rnds8Pool.length - 16) {
44266
- import_node_crypto.default.randomFillSync(rnds8Pool);
44267
- poolPtr = 0;
44268
- }
44269
- return rnds8Pool.slice(poolPtr, poolPtr += 16);
44270
- }
44271
-
44272
- // ../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-node/native.js
44273
- var import_node_crypto2 = __toESM(__require("crypto"));
44274
- var native_default = {
44275
- randomUUID: import_node_crypto2.default.randomUUID
44276
- };
44277
-
44278
- // ../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-node/v4.js
44279
- function v4(options, buf, offset) {
44280
- if (native_default.randomUUID && !buf && !options) {
44281
- return native_default.randomUUID();
44282
- }
44283
- options = options || {};
44284
- const rnds = options.random || (options.rng || rng)();
44285
- rnds[6] = rnds[6] & 15 | 64;
44286
- rnds[8] = rnds[8] & 63 | 128;
44287
- if (buf) {
44288
- offset = offset || 0;
44289
- for (let i = 0; i < 16; ++i) {
44290
- buf[offset + i] = rnds[i];
44291
- }
44292
- return buf;
44293
- }
44294
- return unsafeStringify(rnds);
44295
- }
44296
- var v4_default = v4;
44297
-
44298
44951
  // src/wallet/keystore-wallet.ts
44299
44952
  var DEFAULT_KDF_PARAMS_LOG_N = 13;
44300
44953
  var DEFAULT_KDF_PARAMS_R = 8;
@@ -44325,7 +44978,7 @@ Supported fuel-core version: ${supportedVersion}.`
44325
44978
  const macHashUint8Array = keccak2562(data);
44326
44979
  const mac = stringFromBuffer2(macHashUint8Array, "hex");
44327
44980
  const keystore = {
44328
- id: v4_default(),
44981
+ id: randomUUID2(),
44329
44982
  version: 3,
44330
44983
  address: removeHexPrefix(ownerAddress.toHexString()),
44331
44984
  crypto: {
@@ -44454,17 +45107,16 @@ Supported fuel-core version: ${supportedVersion}.`
44454
45107
  *
44455
45108
  * @param transactionRequestLike - The transaction request to send.
44456
45109
  * @param estimateTxDependencies - Whether to estimate the transaction dependencies.
44457
- * @param awaitExecution - Whether to wait for the transaction to be executed.
44458
45110
  * @returns A promise that resolves to the TransactionResponse object.
44459
45111
  */
44460
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
45112
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = false } = {}) {
44461
45113
  const transactionRequest = transactionRequestify(transactionRequestLike);
44462
45114
  if (estimateTxDependencies) {
44463
45115
  await this.provider.estimateTxDependencies(transactionRequest);
44464
45116
  }
44465
45117
  return this.provider.sendTransaction(
44466
45118
  await this.populateTransactionWitnessesSignature(transactionRequest),
44467
- { awaitExecution, estimateTxDependencies: false }
45119
+ { estimateTxDependencies: false }
44468
45120
  );
44469
45121
  }
44470
45122
  /**
@@ -47675,14 +48327,14 @@ Supported fuel-core version: ${supportedVersion}.`
47675
48327
  * @param bytecode - The bytecode of the predicate.
47676
48328
  * @param abi - The JSON ABI of the predicate.
47677
48329
  * @param provider - The provider used to interact with the blockchain.
47678
- * @param inputData - The predicate input data (optional).
48330
+ * @param data - The predicate input data (optional).
47679
48331
  * @param configurableConstants - Optional configurable constants for the predicate.
47680
48332
  */
47681
48333
  constructor({
47682
48334
  bytecode,
47683
48335
  abi,
47684
48336
  provider,
47685
- inputData,
48337
+ data,
47686
48338
  configurableConstants
47687
48339
  }) {
47688
48340
  const { predicateBytes, predicateInterface } = Predicate.processPredicateData(
@@ -47694,8 +48346,8 @@ Supported fuel-core version: ${supportedVersion}.`
47694
48346
  super(address, provider);
47695
48347
  this.bytes = predicateBytes;
47696
48348
  this.interface = predicateInterface;
47697
- if (inputData !== void 0 && inputData.length > 0) {
47698
- this.predicateData = inputData;
48349
+ if (data !== void 0 && data.length > 0) {
48350
+ this.predicateData = data;
47699
48351
  }
47700
48352
  }
47701
48353
  /**
@@ -47822,16 +48474,23 @@ Supported fuel-core version: ${supportedVersion}.`
47822
48474
  const mutatedBytes = bytes3;
47823
48475
  try {
47824
48476
  if (!abiInterface) {
47825
- throw new Error(
48477
+ throw new FuelError(
48478
+ ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
47826
48479
  "Cannot validate configurable constants because the Predicate was instantiated without a JSON ABI"
47827
48480
  );
47828
48481
  }
47829
48482
  if (Object.keys(abiInterface.configurables).length === 0) {
47830
- throw new Error("Predicate has no configurable constants to be set");
48483
+ throw new FuelError(
48484
+ ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
48485
+ "Predicate has no configurable constants to be set"
48486
+ );
47831
48487
  }
47832
48488
  Object.entries(configurableConstants).forEach(([key, value]) => {
47833
48489
  if (!abiInterface?.configurables[key]) {
47834
- throw new Error(`No configurable constant named '${key}' found in the Predicate`);
48490
+ throw new FuelError(
48491
+ ErrorCode.CONFIGURABLE_NOT_FOUND,
48492
+ `No configurable constant named '${key}' found in the Predicate`
48493
+ );
47835
48494
  }
47836
48495
  const { offset } = abiInterface.configurables[key];
47837
48496
  const encoded = abiInterface.encodeConfigurable(key, value);
@@ -47943,7 +48602,7 @@ Supported fuel-core version: ${supportedVersion}.`
47943
48602
  * @returns Always true.
47944
48603
  */
47945
48604
  async ping() {
47946
- throw new Error("Method not implemented.");
48605
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47947
48606
  }
47948
48607
  /**
47949
48608
  * Should return the current version of the connector
@@ -47952,7 +48611,7 @@ Supported fuel-core version: ${supportedVersion}.`
47952
48611
  * @returns boolean - connection status.
47953
48612
  */
47954
48613
  async version() {
47955
- throw new Error("Method not implemented.");
48614
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47956
48615
  }
47957
48616
  /**
47958
48617
  * Should return true if the connector is connected
@@ -47961,7 +48620,7 @@ Supported fuel-core version: ${supportedVersion}.`
47961
48620
  * @returns The connection status.
47962
48621
  */
47963
48622
  async isConnected() {
47964
- throw new Error("Method not implemented.");
48623
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47965
48624
  }
47966
48625
  /**
47967
48626
  * Should return all the accounts authorized for the
@@ -47970,7 +48629,7 @@ Supported fuel-core version: ${supportedVersion}.`
47970
48629
  * @returns The accounts addresses strings
47971
48630
  */
47972
48631
  async accounts() {
47973
- throw new Error("Method not implemented.");
48632
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47974
48633
  }
47975
48634
  /**
47976
48635
  * Should start the connection process and return
@@ -47982,7 +48641,7 @@ Supported fuel-core version: ${supportedVersion}.`
47982
48641
  * @returns boolean - connection status.
47983
48642
  */
47984
48643
  async connect() {
47985
- throw new Error("Method not implemented.");
48644
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47986
48645
  }
47987
48646
  /**
47988
48647
  * Should disconnect the current connection and
@@ -47992,7 +48651,7 @@ Supported fuel-core version: ${supportedVersion}.`
47992
48651
  * @returns The connection status.
47993
48652
  */
47994
48653
  async disconnect() {
47995
- throw new Error("Method not implemented.");
48654
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
47996
48655
  }
47997
48656
  /**
47998
48657
  * Should start the sign message process and return
@@ -48004,7 +48663,7 @@ Supported fuel-core version: ${supportedVersion}.`
48004
48663
  * @returns Message signature
48005
48664
  */
48006
48665
  async signMessage(_address, _message) {
48007
- throw new Error("Method not implemented.");
48666
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48008
48667
  }
48009
48668
  /**
48010
48669
  * Should start the sign transaction process and return
@@ -48016,7 +48675,7 @@ Supported fuel-core version: ${supportedVersion}.`
48016
48675
  * @returns Transaction signature
48017
48676
  */
48018
48677
  async signTransaction(_address, _transaction) {
48019
- throw new Error("Method not implemented.");
48678
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48020
48679
  }
48021
48680
  /**
48022
48681
  * Should start the send transaction process and return
@@ -48032,7 +48691,7 @@ Supported fuel-core version: ${supportedVersion}.`
48032
48691
  * @returns The transaction id
48033
48692
  */
48034
48693
  async sendTransaction(_address, _transaction) {
48035
- throw new Error("Method not implemented.");
48694
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48036
48695
  }
48037
48696
  /**
48038
48697
  * Should return the current account selected inside the connector, if the account
@@ -48043,7 +48702,7 @@ Supported fuel-core version: ${supportedVersion}.`
48043
48702
  * @returns The current account selected otherwise null.
48044
48703
  */
48045
48704
  async currentAccount() {
48046
- throw new Error("Method not implemented.");
48705
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48047
48706
  }
48048
48707
  /**
48049
48708
  * Should add the assets metadata to the connector and return true if the asset
@@ -48057,7 +48716,7 @@ Supported fuel-core version: ${supportedVersion}.`
48057
48716
  * @returns True if the asset was added successfully
48058
48717
  */
48059
48718
  async addAssets(_assets) {
48060
- throw new Error("Method not implemented.");
48719
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48061
48720
  }
48062
48721
  /**
48063
48722
  * Should add the asset metadata to the connector and return true if the asset
@@ -48071,7 +48730,7 @@ Supported fuel-core version: ${supportedVersion}.`
48071
48730
  * @returns True if the asset was added successfully
48072
48731
  */
48073
48732
  async addAsset(_asset) {
48074
- throw new Error("Method not implemented.");
48733
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48075
48734
  }
48076
48735
  /**
48077
48736
  * Should return all the assets added to the connector. If a connection is already established.
@@ -48079,7 +48738,7 @@ Supported fuel-core version: ${supportedVersion}.`
48079
48738
  * @returns Array of assets metadata from the connector vinculated to the all accounts from a specific Wallet.
48080
48739
  */
48081
48740
  async assets() {
48082
- throw new Error("Method not implemented.");
48741
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48083
48742
  }
48084
48743
  /**
48085
48744
  * Should start the add network process and return true if the network was added successfully.
@@ -48090,7 +48749,7 @@ Supported fuel-core version: ${supportedVersion}.`
48090
48749
  * @returns Return true if the network was added successfully
48091
48750
  */
48092
48751
  async addNetwork(_networkUrl) {
48093
- throw new Error("Method not implemented.");
48752
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48094
48753
  }
48095
48754
  /**
48096
48755
  * Should start the select network process and return true if the network has change successfully.
@@ -48101,7 +48760,7 @@ Supported fuel-core version: ${supportedVersion}.`
48101
48760
  * @returns Return true if the network was added successfully
48102
48761
  */
48103
48762
  async selectNetwork(_network) {
48104
- throw new Error("Method not implemented.");
48763
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48105
48764
  }
48106
48765
  /**
48107
48766
  * Should return all the networks available from the connector. If the connection is already established.
@@ -48109,7 +48768,7 @@ Supported fuel-core version: ${supportedVersion}.`
48109
48768
  * @returns Return all the networks added to the connector.
48110
48769
  */
48111
48770
  async networks() {
48112
- throw new Error("Method not implemented.");
48771
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48113
48772
  }
48114
48773
  /**
48115
48774
  * Should return the current network selected inside the connector. Even if the connection is not established.
@@ -48117,7 +48776,7 @@ Supported fuel-core version: ${supportedVersion}.`
48117
48776
  * @returns Return the current network selected inside the connector.
48118
48777
  */
48119
48778
  async currentNetwork() {
48120
- throw new Error("Method not implemented.");
48779
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48121
48780
  }
48122
48781
  /**
48123
48782
  * Should add the ABI to the connector and return true if the ABI was added successfully.
@@ -48127,7 +48786,7 @@ Supported fuel-core version: ${supportedVersion}.`
48127
48786
  * @returns Return true if the ABI was added successfully.
48128
48787
  */
48129
48788
  async addABI(_contractId, _abi) {
48130
- throw new Error("Method not implemented.");
48789
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48131
48790
  }
48132
48791
  /**
48133
48792
  * Should return the ABI from the connector vinculated to the all accounts from a specific Wallet.
@@ -48136,7 +48795,7 @@ Supported fuel-core version: ${supportedVersion}.`
48136
48795
  * @returns The ABI if it exists, otherwise return null.
48137
48796
  */
48138
48797
  async getABI(_id) {
48139
- throw new Error("Method not implemented.");
48798
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48140
48799
  }
48141
48800
  /**
48142
48801
  * Should return true if the abi exists in the connector vinculated to the all accounts from a specific Wallet.
@@ -48145,7 +48804,7 @@ Supported fuel-core version: ${supportedVersion}.`
48145
48804
  * @returns Returns true if the abi exists or false if not.
48146
48805
  */
48147
48806
  async hasABI(_id) {
48148
- throw new Error("Method not implemented.");
48807
+ throw new FuelError(FuelError.CODES.NOT_IMPLEMENTED, "Method not implemented.");
48149
48808
  }
48150
48809
  /**
48151
48810
  * Event listener for the connector.
@@ -48200,7 +48859,7 @@ Supported fuel-core version: ${supportedVersion}.`
48200
48859
  async function withTimeout(promise, timeout = 1050) {
48201
48860
  const timeoutPromise = new Promise((resolve, reject) => {
48202
48861
  setTimeout(() => {
48203
- reject(new Error("Promise timed out"));
48862
+ reject(new FuelError(FuelError.CODES.TIMEOUT_EXCEEDED, "Promise timed out"));
48204
48863
  }, timeout);
48205
48864
  });
48206
48865
  return Promise.race([timeoutPromise, promise]);
@@ -48287,7 +48946,8 @@ Supported fuel-core version: ${supportedVersion}.`
48287
48946
  const hasConnector = await this.hasConnector();
48288
48947
  await this.pingConnector();
48289
48948
  if (!this._currentConnector || !hasConnector) {
48290
- throw new Error(
48949
+ throw new FuelError(
48950
+ ErrorCode.MISSING_CONNECTOR,
48291
48951
  `No connector selected for calling ${method}. Use hasConnector before executing other methods.`
48292
48952
  );
48293
48953
  }
@@ -48351,7 +49011,7 @@ Supported fuel-core version: ${supportedVersion}.`
48351
49011
  cacheTime: PING_CACHE_TIME
48352
49012
  })();
48353
49013
  } catch {
48354
- throw new Error("Current connector is not available.");
49014
+ throw new FuelError(ErrorCode.INVALID_PROVIDER, "Current connector is not available.");
48355
49015
  }
48356
49016
  }
48357
49017
  /**