@inco/js 0.1.35 → 0.1.37

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 (108) hide show
  1. package/README.md +20 -0
  2. package/dist/binary.js +32 -47
  3. package/dist/chain.js +7 -11
  4. package/dist/encryption/encryption.js +54 -62
  5. package/dist/encryption/index.cjs +24706 -0
  6. package/dist/encryption/index.js +2 -18
  7. package/dist/encryption/index.mjs +25787 -0
  8. package/dist/fhevm/fhe-environment.js +6 -9
  9. package/dist/fhevm/fhevm.js +34 -40
  10. package/dist/fhevm/index.cjs +87 -0
  11. package/dist/fhevm/index.js +2 -18
  12. package/dist/fhevm/index.mjs +90 -0
  13. package/dist/fhevm/reencrypt.js +33 -37
  14. package/dist/fhevm/tfhe.js +79 -87
  15. package/dist/fhevm/types.js +13 -16
  16. package/dist/generated/abis/addTwo.js +2 -5
  17. package/dist/generated/abis/inco-fhevm.js +47 -50
  18. package/dist/generated/abis/index.cjs +12493 -0
  19. package/dist/generated/abis/index.js +3 -19
  20. package/dist/generated/abis/index.mjs +12496 -0
  21. package/dist/generated/abis/lightning.d.ts +1361 -115
  22. package/dist/generated/abis/lightning.js +1043 -140
  23. package/dist/generated/es/cosmos/ics23/v1/proofs_pb.js +22 -25
  24. package/dist/generated/es/cosmos/msg/v1/msg_pb.js +6 -9
  25. package/dist/generated/es/cosmos_proto/cosmos_pb.js +18 -21
  26. package/dist/generated/es/google/api/annotations_pb.js +6 -9
  27. package/dist/generated/es/google/api/http_pb.js +6 -9
  28. package/dist/generated/es/inco/fhe/v1/events_pb.js +7 -10
  29. package/dist/generated/es/inco/fhe/v1/genesis_pb.js +12 -15
  30. package/dist/generated/es/inco/fhe/v1/query_pb.js +25 -28
  31. package/dist/generated/es/inco/fhe/v1/tx_pb.js +25 -28
  32. package/dist/generated/es/inco/fhe/v1/types_pb.js +19 -22
  33. package/dist/generated/es/inco/kms/lite/v1/kms_service_pb.js +11 -14
  34. package/dist/generated/es/inco/kms/lite/v1/types_pb.js +10 -13
  35. package/dist/generated/es/inco/preflight/v1/genesis_pb.js +6 -9
  36. package/dist/generated/es/inco/preflight/v1/query_pb.js +11 -14
  37. package/dist/generated/es/inco/preflight/v1/tx_pb.js +13 -16
  38. package/dist/generated/es/inco/preflight/v1/types_pb.js +8 -11
  39. package/dist/generated/es/kms/base_pb.js +35 -38
  40. package/dist/generated/es/sf/ethereum/type/v2/type_pb.js +43 -46
  41. package/dist/generated/fhe-environments.js +2 -5
  42. package/dist/generated/lightning.d.ts +21 -0
  43. package/dist/generated/lightning.js +24 -5
  44. package/dist/generated/local-node.js +2 -5
  45. package/dist/generated/ts/amino/amino.js +2 -5
  46. package/dist/generated/ts/cometbft/abci/v1/types.js +547 -563
  47. package/dist/generated/ts/cometbft/crypto/v1/keys.js +7 -10
  48. package/dist/generated/ts/cometbft/crypto/v1/proof.js +33 -36
  49. package/dist/generated/ts/cometbft/types/v1/params.js +95 -98
  50. package/dist/generated/ts/cometbft/types/v1/validator.js +40 -45
  51. package/dist/generated/ts/cosmos/app/v1alpha1/module.js +25 -28
  52. package/dist/generated/ts/cosmos/msg/v1/msg.js +2 -5
  53. package/dist/generated/ts/cosmos_proto/cosmos.js +15 -20
  54. package/dist/generated/ts/gogoproto/gogo.js +2 -5
  55. package/dist/generated/ts/google/api/annotations.js +2 -5
  56. package/dist/generated/ts/google/api/http.js +30 -33
  57. package/dist/generated/ts/google/protobuf/descriptor.js +468 -506
  58. package/dist/generated/ts/google/protobuf/duration.js +7 -10
  59. package/dist/generated/ts/google/protobuf/timestamp.js +7 -10
  60. package/dist/generated/ts/google/protobuf/wrappers.js +39 -42
  61. package/dist/generated/ts/inco/abci/v1/types.js +13 -16
  62. package/dist/generated/ts/inco/fhe/module/v1/module.js +7 -10
  63. package/dist/generated/ts/inco/fhe/v1/events.js +32 -35
  64. package/dist/generated/ts/inco/fhe/v1/genesis.js +127 -130
  65. package/dist/generated/ts/inco/fhe/v1/query.js +160 -163
  66. package/dist/generated/ts/inco/fhe/v1/tx.js +150 -153
  67. package/dist/generated/ts/inco/fhe/v1/types.js +70 -75
  68. package/dist/generated/ts/inco/originchain/module/v1/module.js +7 -10
  69. package/dist/generated/ts/inco/originchain/v1/abci.js +34 -37
  70. package/dist/generated/ts/inco/originchain/v1/events.js +11 -14
  71. package/dist/generated/ts/inco/originchain/v1/genesis.js +13 -16
  72. package/dist/generated/ts/inco/originchain/v1/query.js +41 -44
  73. package/dist/generated/ts/inco/originchain/v1/tx.js +24 -27
  74. package/dist/generated/ts/inco/originchain/v1/types.js +11 -14
  75. package/dist/generated/ts/inco/preflight/module/v1/module.js +7 -10
  76. package/dist/generated/ts/inco/preflight/v1/genesis.js +27 -30
  77. package/dist/generated/ts/inco/preflight/v1/query.js +41 -44
  78. package/dist/generated/ts/inco/preflight/v1/tx.js +53 -56
  79. package/dist/generated/ts/inco/preflight/v1/types.js +38 -41
  80. package/dist/handle.js +26 -33
  81. package/dist/index.cjs +24883 -0
  82. package/dist/index.js +6 -22
  83. package/dist/index.mjs +25964 -0
  84. package/dist/l1/client.js +19 -23
  85. package/dist/l1/index.js +3 -19
  86. package/dist/l1/preflight.js +13 -16
  87. package/dist/lite/deployments.js +9 -13
  88. package/dist/lite/ecies.js +37 -48
  89. package/dist/lite/hadu.js +21 -26
  90. package/dist/lite/index.cjs +52789 -0
  91. package/dist/lite/index.js +7 -23
  92. package/dist/lite/index.mjs +71691 -0
  93. package/dist/lite/lightning.js +31 -35
  94. package/dist/lite/reencrypt.d.ts +4 -4
  95. package/dist/lite/reencrypt.js +33 -44
  96. package/dist/local/index.cjs +24479 -0
  97. package/dist/local/index.js +2 -18
  98. package/dist/local/index.mjs +42864 -0
  99. package/dist/local/local-node.js +21 -25
  100. package/dist/reencryption/eip712.js +18 -21
  101. package/dist/reencryption/index.cjs +24681 -0
  102. package/dist/reencryption/index.js +3 -19
  103. package/dist/reencryption/index.mjs +24684 -0
  104. package/dist/reencryption/types.d.ts +6 -1
  105. package/dist/reencryption/types.js +1 -2
  106. package/dist/schema.js +6 -10
  107. package/dist/viem.js +7 -11
  108. package/package.json +1 -1
@@ -1,28 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TfheSerializationHeader = exports.TfheSerialisationTypeName = exports.FheUintTypeName = exports.ProvenCompactCiphertextListTypeName = exports.SerializationHeader = exports.ENCRYPTION_TYPES = exports.SERIALIZED_SIZE_LIMIT_CRS = exports.SERIALIZED_SIZE_LIMIT_PK = exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT = void 0;
4
- exports.getTfheEncryptor = getTfheEncryptor;
5
- exports.createEncryptedInput = createEncryptedInput;
6
- exports.addPlaintextInput = addPlaintextInput;
7
- exports.getTfheDecryptor = getTfheDecryptor;
8
- exports.decodeTfheSerializationHeader = decodeTfheSerializationHeader;
9
- const bincode_ts_1 = require("bincode-ts");
10
- const effect_1 = require("effect");
11
- const node_tfhe_1 = require("node-tfhe");
12
- const viem_1 = require("viem");
13
- const binary_1 = require("../binary");
14
- const encryption_1 = require("../encryption/encryption");
15
- const handle_1 = require("../handle");
16
- const schema_1 = require("../schema");
17
- const types_1 = require("./types");
1
+ import { Decoder, RustType } from 'bincode-ts';
2
+ import { Schema } from 'effect';
3
+ import { CompactCiphertextList, CompactPkePublicParams, FheBool, FheTypes, FheUint256, FheUint64, ProvenCompactCiphertextList, set_server_key, TfheClientKey, TfheCompactPublicKey, TfheServerKey, ZkComputeLoad, } from 'node-tfhe';
4
+ import { isAddress } from 'viem';
5
+ import { asBytes32, bytesFromHexString, bytesToBigInt, bytesToHex } from '../binary';
6
+ import { encryptionSchemes, getEncryptionSchemeName, } from '../encryption/encryption';
7
+ import { computeHandle, computePrehandle, HANDLE_VERSION, handleTypes } from '../handle';
8
+ import { parse } from '../schema';
9
+ import { getHandleTypeFromFheType } from './types';
18
10
  // This code pulled and modifier from fhevmjs which currently is a relatively poor dependency to extend since it does
19
11
  // not expose types correctly and does not export various modules
20
12
  // Handed down on a stone tablet from: https://github.com/zama-ai/fhevm-backend/blob/5a70c19a90671cfa4901413db9e162a65c4cf17a/fhevm-engine/fhevm-engine-common/src/utils.rs#L6-L7
21
13
  // We use fhevm-backend in KMS and compute services
22
- exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT = BigInt(1024 * 1024 * 512);
23
- exports.SERIALIZED_SIZE_LIMIT_PK = BigInt(1024 * 1024 * 512);
24
- exports.SERIALIZED_SIZE_LIMIT_CRS = BigInt(1024 * 1024 * 512);
25
- exports.ENCRYPTION_TYPES = {
14
+ export const SERIALIZED_SIZE_LIMIT_CIPHERTEXT = BigInt(1024 * 1024 * 512);
15
+ export const SERIALIZED_SIZE_LIMIT_PK = BigInt(1024 * 1024 * 512);
16
+ export const SERIALIZED_SIZE_LIMIT_CRS = BigInt(1024 * 1024 * 512);
17
+ export const ENCRYPTION_TYPES = {
26
18
  1: 0, // ebool takes 2 encrypted bits
27
19
  4: 1,
28
20
  8: 2,
@@ -36,43 +28,43 @@ exports.ENCRYPTION_TYPES = {
36
28
  1024: 10,
37
29
  2048: 11,
38
30
  };
39
- function getTfheEncryptor(args) {
40
- const publicKey = node_tfhe_1.TfheCompactPublicKey.safe_deserialize(args.publicKey, exports.SERIALIZED_SIZE_LIMIT_PK);
41
- const publicParams = node_tfhe_1.CompactPkePublicParams.safe_deserialize(args.crs2048, exports.SERIALIZED_SIZE_LIMIT_CRS);
31
+ export function getTfheEncryptor(args) {
32
+ const publicKey = TfheCompactPublicKey.safe_deserialize(args.publicKey, SERIALIZED_SIZE_LIMIT_PK);
33
+ const publicParams = CompactPkePublicParams.safe_deserialize(args.crs2048, SERIALIZED_SIZE_LIMIT_CRS);
42
34
  return async ({ context, plaintext, }) => {
43
- if (plaintext.scheme !== encryption_1.encryptionSchemes.tfhe) {
44
- throw new Error(`Plaintext with scheme ${(0, encryption_1.getEncryptionSchemeName)(plaintext.scheme)} cannot be encrypted with TFHE`);
35
+ if (plaintext.scheme !== encryptionSchemes.tfhe) {
36
+ throw new Error(`Plaintext with scheme ${getEncryptionSchemeName(plaintext.scheme)} cannot be encrypted with TFHE`);
45
37
  }
46
38
  const { aclAddress, userAddress, contractAddress, hostChainId } = context;
47
39
  const input = createEncryptedInput(aclAddress, hostChainId, publicKey, { 2048: { publicParams } })(userAddress, contractAddress);
48
40
  const encInput = await addPlaintextInput(input, plaintext).encrypt();
49
41
  // FIXME: support multi-valued ciphertext properly
50
42
  const prehandle = encInput.prehandles[0];
51
- const handle = (0, handle_1.computeHandle)({ prehandle, context });
43
+ const handle = computeHandle({ prehandle, context });
52
44
  return {
53
45
  context,
54
46
  // The '0x' prefix is required for bytes32 for correct json parsing in foundry, but avoided in ciphertext to avoid bytes-based encoding
55
47
  // we may need
56
- prehandle: (0, binary_1.asBytes32)(prehandle),
57
- handle: (0, binary_1.asBytes32)(handle),
48
+ prehandle: asBytes32(prehandle),
49
+ handle: asBytes32(handle),
58
50
  ciphertext: {
59
51
  scheme: plaintext.scheme,
60
52
  type: plaintext.type,
61
- value: (0, binary_1.bytesToHex)(encInput.ciphertext),
53
+ value: bytesToHex(encInput.ciphertext),
62
54
  },
63
55
  };
64
56
  };
65
57
  }
66
- function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey, publicParams) {
58
+ export function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey, publicParams) {
67
59
  return (userAddress, contractAddress) => {
68
- if (!(0, viem_1.isAddress)(contractAddress)) {
60
+ if (!isAddress(contractAddress)) {
69
61
  throw new Error('Contract address is not a valid address.');
70
62
  }
71
- if (!(0, viem_1.isAddress)(userAddress)) {
63
+ if (!isAddress(userAddress)) {
72
64
  throw new Error('User address is not a valid address.');
73
65
  }
74
66
  const bits = [];
75
- const builder = node_tfhe_1.CompactCiphertextList.builder(tfheCompactPublicKey);
67
+ const builder = CompactCiphertextList.builder(tfheCompactPublicKey);
76
68
  const checkLimit = (added) => {
77
69
  if (bits.reduce((acc, val) => acc + Math.max(2, val), 0) + added > 2048) {
78
70
  throw Error('Packing more than 2048 bits in a single input ciphertext is unsupported');
@@ -147,7 +139,7 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
147
139
  return this;
148
140
  },
149
141
  addAddress(value) {
150
- if (!(0, viem_1.isAddress)(value)) {
142
+ if (!isAddress(value)) {
151
143
  throw new Error('The value must be a valid address.');
152
144
  }
153
145
  checkLimit(160);
@@ -165,7 +157,7 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
165
157
  addBytes64(value) {
166
158
  if (value.length !== 64)
167
159
  throw Error('Incorrect length of input Uint8Array, should be 64 for an ebytes64');
168
- const bigIntValue = (0, binary_1.bytesToBigInt)(value);
160
+ const bigIntValue = bytesToBigInt(value);
169
161
  checkEncryptedValue(bigIntValue, 512);
170
162
  checkLimit(512);
171
163
  builder.push_u512(bigIntValue);
@@ -175,7 +167,7 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
175
167
  addBytes128(value) {
176
168
  if (value.length !== 128)
177
169
  throw Error('Incorrect length of input Uint8Array, should be 128 for an ebytes128');
178
- const bigIntValue = (0, binary_1.bytesToBigInt)(value);
170
+ const bigIntValue = bytesToBigInt(value);
179
171
  checkEncryptedValue(bigIntValue, 1024);
180
172
  checkLimit(1024);
181
173
  builder.push_u1024(bigIntValue);
@@ -185,7 +177,7 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
185
177
  addBytes256(value) {
186
178
  if (value.length !== 256)
187
179
  throw Error('Incorrect length of input Uint8Array, should be 256 for an ebytes256');
188
- const bigIntValue = (0, binary_1.bytesToBigInt)(value);
180
+ const bigIntValue = bytesToBigInt(value);
189
181
  checkEncryptedValue(bigIntValue, 2048);
190
182
  checkLimit(2048);
191
183
  builder.push_u2048(bigIntValue);
@@ -206,26 +198,26 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
206
198
  throw new Error(`Too many bits in provided values. Maximum is ${ppTypes[ppTypes.length - 1]}.`);
207
199
  }
208
200
  const pp = publicParams[closestPP].publicParams;
209
- const buffContract = (0, binary_1.bytesFromHexString)(contractAddress);
210
- const buffUser = (0, binary_1.bytesFromHexString)(userAddress);
211
- const buffAcl = (0, binary_1.bytesFromHexString)(aclContractAddress);
212
- const buffChainId = (0, binary_1.bytesFromHexString)(chainId.toString(16));
201
+ const buffContract = bytesFromHexString(contractAddress);
202
+ const buffUser = bytesFromHexString(userAddress);
203
+ const buffAcl = bytesFromHexString(aclContractAddress);
204
+ const buffChainId = bytesFromHexString(chainId.toString(16));
213
205
  const auxData = new Uint8Array(buffContract.length + buffUser.length + buffAcl.length + 32);
214
206
  auxData.set(buffContract, 0);
215
207
  auxData.set(buffUser, 20);
216
208
  auxData.set(buffAcl, 40);
217
209
  auxData.set(buffChainId, auxData.length - buffChainId.length);
218
- const encrypted = builder.build_with_proof_packed(pp, auxData, node_tfhe_1.ZkComputeLoad.Proof);
219
- const ciphertext = Buffer.from(encrypted.safe_serialize(exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT));
210
+ const encrypted = builder.build_with_proof_packed(pp, auxData, ZkComputeLoad.Proof);
211
+ const ciphertext = Buffer.from(encrypted.safe_serialize(SERIALIZED_SIZE_LIMIT_CIPHERTEXT));
220
212
  // These prehandles have the expected layout expected by verifyCiphertext
221
213
  // including type and version metadata
222
214
  const prehandles = [];
223
215
  for (let i = 0; i < encrypted.len(); i++) {
224
- const handleType = (0, types_1.getHandleTypeFromFheType)(encrypted.get_kind_of(i));
225
- prehandles[i] = (0, handle_1.computePrehandle)({
216
+ const handleType = getHandleTypeFromFheType(encrypted.get_kind_of(i));
217
+ prehandles[i] = computePrehandle({
226
218
  ciphertext,
227
219
  handleType: handleType,
228
- handleVersion: handle_1.HANDLE_VERSION,
220
+ handleVersion: HANDLE_VERSION,
229
221
  indexHandle: i,
230
222
  });
231
223
  }
@@ -237,31 +229,31 @@ function createEncryptedInput(aclContractAddress, chainId, tfheCompactPublicKey,
237
229
  };
238
230
  };
239
231
  }
240
- function addPlaintextInput(input, plaintext) {
232
+ export function addPlaintextInput(input, plaintext) {
241
233
  switch (plaintext.type) {
242
- case handle_1.handleTypes.ebool:
234
+ case handleTypes.ebool:
243
235
  return input.addBool(plaintext.value);
244
- case handle_1.handleTypes.euint64:
236
+ case handleTypes.euint64:
245
237
  return input.add64(plaintext.value);
246
- case handle_1.handleTypes.euint256:
238
+ case handleTypes.euint256:
247
239
  return input.add256(plaintext.value);
248
240
  }
249
241
  }
250
242
  // Decryption...
251
- function getTfheDecryptor({ cks }) {
252
- const clientKey = node_tfhe_1.TfheClientKey.safe_deserialize(cks, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
253
- const serverKey = node_tfhe_1.TfheServerKey.new(clientKey);
254
- (0, node_tfhe_1.set_server_key)(serverKey);
243
+ export function getTfheDecryptor({ cks }) {
244
+ const clientKey = TfheClientKey.safe_deserialize(cks, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
245
+ const serverKey = TfheServerKey.new(clientKey);
246
+ set_server_key(serverKey);
255
247
  return async ({ scheme, type, value, }) => {
256
- if (scheme !== encryption_1.encryptionSchemes.tfhe) {
257
- throw new Error(`Ciphertext with scheme ${(0, encryption_1.getEncryptionSchemeName)(scheme)} cannot be decrypted with TFHE`);
248
+ if (scheme !== encryptionSchemes.tfhe) {
249
+ throw new Error(`Ciphertext with scheme ${getEncryptionSchemeName(scheme)} cannot be decrypted with TFHE`);
258
250
  }
259
251
  const handleType = type;
260
- const ctBuf = (0, binary_1.bytesFromHexString)(value);
252
+ const ctBuf = bytesFromHexString(value);
261
253
  const header = decodeTfheSerializationHeader(ctBuf);
262
254
  // For now just support a singleton ciphertext list
263
- if (header.name === exports.ProvenCompactCiphertextListTypeName) {
264
- const encrypted = node_tfhe_1.ProvenCompactCiphertextList.safe_deserialize(ctBuf, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
255
+ if (header.name === ProvenCompactCiphertextListTypeName) {
256
+ const encrypted = ProvenCompactCiphertextList.safe_deserialize(ctBuf, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
265
257
  const decrypted = encrypted.expand_without_verification();
266
258
  const kind = decrypted.get_kind_of(0);
267
259
  return fromCiphertextList(decrypted, clientKey);
@@ -270,30 +262,30 @@ function getTfheDecryptor({ cks }) {
270
262
  if (!decryptor) {
271
263
  throw new Error(`Unsupported handle type: ${handleType}`);
272
264
  }
273
- const encrypted = decryptor.safe_deserialize(ctBuf, exports.SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
265
+ const encrypted = decryptor.safe_deserialize(ctBuf, SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
274
266
  const decrypted = encrypted.decrypt(clientKey);
275
267
  // First assign to unnarrowed plaintext to avoid concealing type
276
- const plaintext = { scheme: encryption_1.encryptionSchemes.tfhe, type: handleType, value: decrypted };
268
+ const plaintext = { scheme: encryptionSchemes.tfhe, type: handleType, value: decrypted };
277
269
  return plaintext;
278
270
  };
279
271
  }
280
272
  function fromCiphertextList(decrypted, clientKey) {
281
273
  const kind = decrypted.get_kind_of(0);
282
- const scheme = encryption_1.encryptionSchemes.tfhe;
274
+ const scheme = encryptionSchemes.tfhe;
283
275
  switch (kind) {
284
- case node_tfhe_1.FheTypes.Bool:
285
- return { scheme, type: handle_1.handleTypes.ebool, value: decrypted.get_bool(0).decrypt(clientKey) };
286
- case node_tfhe_1.FheTypes.Uint64:
287
- return { scheme, type: handle_1.handleTypes.euint64, value: decrypted.get_uint64(0).decrypt(clientKey) };
288
- case node_tfhe_1.FheTypes.Uint256:
289
- return { scheme, type: handle_1.handleTypes.euint256, value: decrypted.get_uint256(0).decrypt(clientKey) };
276
+ case FheTypes.Bool:
277
+ return { scheme, type: handleTypes.ebool, value: decrypted.get_bool(0).decrypt(clientKey) };
278
+ case FheTypes.Uint64:
279
+ return { scheme, type: handleTypes.euint64, value: decrypted.get_uint64(0).decrypt(clientKey) };
280
+ case FheTypes.Uint256:
281
+ return { scheme, type: handleTypes.euint256, value: decrypted.get_uint256(0).decrypt(clientKey) };
290
282
  }
291
283
  throw new Error(`Unsupported kind: ${kind}`);
292
284
  }
293
285
  const decryptionClasses = {
294
- [handle_1.handleTypes.ebool]: node_tfhe_1.FheBool,
295
- [handle_1.handleTypes.euint64]: node_tfhe_1.FheUint64,
296
- [handle_1.handleTypes.euint256]: node_tfhe_1.FheUint256,
286
+ [handleTypes.ebool]: FheBool,
287
+ [handleTypes.euint64]: FheUint64,
288
+ [handleTypes.euint256]: FheUint256,
297
289
  };
298
290
  var VersioningMode;
299
291
  (function (VersioningMode) {
@@ -306,27 +298,27 @@ var VersioningMode;
306
298
  // versioning_mode: SerializationVersioningMode,
307
299
  // name: Cow<'static, str>,
308
300
  // }
309
- exports.SerializationHeader = bincode_ts_1.RustType.Struct([
310
- ['header_version', bincode_ts_1.RustType.Str],
301
+ export const SerializationHeader = RustType.Struct([
302
+ ['header_version', RustType.Str],
311
303
  [
312
304
  'versioning_mode',
313
- bincode_ts_1.RustType.Enum({ [VersioningMode.Versioned]: bincode_ts_1.RustType.Str, [VersioningMode.Unversioned]: bincode_ts_1.RustType.Str }),
305
+ RustType.Enum({ [VersioningMode.Versioned]: RustType.Str, [VersioningMode.Unversioned]: RustType.Str }),
314
306
  ],
315
- ['name', bincode_ts_1.RustType.Str],
307
+ ['name', RustType.Str],
316
308
  ]);
317
309
  // Output schema (note we currently strip the versioning_mode field because we do not care about it, only the name
318
- exports.ProvenCompactCiphertextListTypeName = 'high_level_api::ProvenCompactCiphertextList';
319
- exports.FheUintTypeName = 'high_level_api::FheUint';
320
- exports.TfheSerialisationTypeName = effect_1.Schema.Literal(exports.ProvenCompactCiphertextListTypeName, exports.FheUintTypeName);
321
- exports.TfheSerializationHeader = effect_1.Schema.Struct({
322
- header_version: effect_1.Schema.String,
310
+ export const ProvenCompactCiphertextListTypeName = 'high_level_api::ProvenCompactCiphertextList';
311
+ export const FheUintTypeName = 'high_level_api::FheUint';
312
+ export const TfheSerialisationTypeName = Schema.Literal(ProvenCompactCiphertextListTypeName, FheUintTypeName);
313
+ export const TfheSerializationHeader = Schema.Struct({
314
+ header_version: Schema.String,
323
315
  // For now, we will accept any string to avoid having to define an exhaustive union above
324
- name: effect_1.Schema.Union(exports.TfheSerialisationTypeName, effect_1.Schema.String),
316
+ name: Schema.Union(TfheSerialisationTypeName, Schema.String),
325
317
  });
326
318
  // Decode a serialisation header from a ciphertext or other bincode-serialised data from tfhe-rs
327
- function decodeTfheSerializationHeader(buffer) {
328
- const decoder = new bincode_ts_1.Decoder();
329
- const decoded = decoder.load(Uint8Array.from(buffer).buffer).decodeAs(exports.SerializationHeader);
330
- return (0, schema_1.parse)(exports.TfheSerializationHeader, decoded);
319
+ export function decodeTfheSerializationHeader(buffer) {
320
+ const decoder = new Decoder();
321
+ const decoded = decoder.load(Uint8Array.from(buffer).buffer).decodeAs(SerializationHeader);
322
+ return parse(TfheSerializationHeader, decoded);
331
323
  }
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maGV2bS90ZmhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlHQSw0Q0FvQ0M7QUFFRCxvREFpTEM7QUFFRCw4Q0FTQztBQUlELDRDQWlDQztBQTBERCxzRUFJQztBQXRhRCwyQ0FBK0M7QUFDL0MsbUNBQWdDO0FBQ2hDLHlDQWNtQjtBQUNuQiwrQkFBaUM7QUFDakMsc0NBQXFGO0FBQ3JGLHlEQVlrQztBQUNsQyxzQ0FBeUY7QUFDekYsc0NBQWtDO0FBQ2xDLG1DQUFtRDtBQUVuRCxxSEFBcUg7QUFDckgsbUVBQW1FO0FBRW5FLGlMQUFpTDtBQUNqTCxtREFBbUQ7QUFDdEMsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUM3RCxRQUFBLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELFFBQUEseUJBQXlCLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFrQnRELFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsQ0FBQyxFQUFFLENBQUMsRUFBRSwrQkFBK0I7SUFDckMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQztJQUNKLEVBQUUsRUFBRSxDQUFDO0lBQ0wsRUFBRSxFQUFFLENBQUM7SUFDTCxFQUFFLEVBQUUsQ0FBQztJQUNMLEdBQUcsRUFBRSxDQUFDO0lBQ04sR0FBRyxFQUFFLENBQUM7SUFDTixHQUFHLEVBQUUsQ0FBQztJQUNOLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLEVBQUU7SUFDUixJQUFJLEVBQUUsRUFBRTtDQUNULENBQUM7QUF1QkYsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBdUI7SUFDdEQsTUFBTSxTQUFTLEdBQUcsZ0NBQW9CLENBQUMsZ0JBQWdC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
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maGV2bS90ZmhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUNMLHFCQUFxQixFQUVyQixzQkFBc0IsRUFDdEIsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULDJCQUEyQixFQUMzQixjQUFjLEVBQ2QsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JGLE9BQU8sRUFHTCxpQkFBaUIsRUFHakIsdUJBQXVCLEdBTXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRW5ELHFIQUFxSDtBQUNySCxtRUFBbUU7QUFFbkUsaUxBQWlMO0FBQ2pMLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUMxRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztB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
@@ -1,22 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHandleTypeFromFheType = getHandleTypeFromFheType;
4
- const node_tfhe_1 = require("node-tfhe");
5
- const handle_1 = require("../handle");
1
+ import { FheTypes } from 'node-tfhe';
2
+ import { handleTypes } from '../handle';
6
3
  // To HandleType
7
4
  // FIXME: how did you arrive at this?
8
5
  const fheTypeToHandleType = Object.freeze({
9
- [node_tfhe_1.FheTypes.Bool]: handle_1.handleTypes.ebool,
10
- [node_tfhe_1.FheTypes.Uint4]: handle_1.handleTypes.euint4,
11
- [node_tfhe_1.FheTypes.Uint8]: handle_1.handleTypes.euint8,
12
- [node_tfhe_1.FheTypes.Uint16]: handle_1.handleTypes.euint16,
13
- [node_tfhe_1.FheTypes.Uint32]: handle_1.handleTypes.euint32,
14
- [node_tfhe_1.FheTypes.Uint64]: handle_1.handleTypes.euint64,
15
- [node_tfhe_1.FheTypes.Uint128]: handle_1.handleTypes.euint128,
16
- [node_tfhe_1.FheTypes.Uint160]: handle_1.handleTypes.euint160,
17
- [node_tfhe_1.FheTypes.Uint256]: handle_1.handleTypes.euint256,
6
+ [FheTypes.Bool]: handleTypes.ebool,
7
+ [FheTypes.Uint4]: handleTypes.euint4,
8
+ [FheTypes.Uint8]: handleTypes.euint8,
9
+ [FheTypes.Uint16]: handleTypes.euint16,
10
+ [FheTypes.Uint32]: handleTypes.euint32,
11
+ [FheTypes.Uint64]: handleTypes.euint64,
12
+ [FheTypes.Uint128]: handleTypes.euint128,
13
+ [FheTypes.Uint160]: handleTypes.euint160,
14
+ [FheTypes.Uint256]: handleTypes.euint256,
18
15
  });
19
- function getHandleTypeFromFheType(fheType) {
16
+ export function getHandleTypeFromFheType(fheType) {
20
17
  if (!fheType) {
21
18
  throw new Error('FHE type is required');
22
19
  }
@@ -26,4 +23,4 @@ function getHandleTypeFromFheType(fheType) {
26
23
  }
27
24
  return handleType;
28
25
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsNERBU0M7QUExQkQseUNBQXFDO0FBQ3JDLHNDQUFpRDtBQUVqRCxnQkFBZ0I7QUFDaEIscUNBQXFDO0FBQ3JDLE1BQU0sbUJBQW1CLEdBQXVDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQyxvQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLG9CQUFXLENBQUMsS0FBSztJQUNsQyxDQUFDLG9CQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxNQUFNO0lBQ3BDLENBQUMsb0JBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBVyxDQUFDLE1BQU07SUFDcEMsQ0FBQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLG9CQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLG9CQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxPQUFPO0lBQ3RDLENBQUMsb0JBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxvQkFBVyxDQUFDLE9BQU87SUFDdEMsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLG9CQUFXLENBQUMsUUFBUTtJQUN4QyxDQUFDLG9CQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQVcsQ0FBQyxRQUFRO0lBQ3hDLENBQUMsb0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxvQkFBVyxDQUFDLFFBQVE7Q0FDekMsQ0FBQyxDQUFDO0FBRUgsU0FBZ0Isd0JBQXdCLENBQUMsT0FBNkI7SUFDcEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIn0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmhldm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQVcsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpELGdCQUFnQjtBQUNoQixxQ0FBcUM7QUFDckMsTUFBTSxtQkFBbUIsR0FBdUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1RSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSztJQUNsQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTTtJQUNwQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTTtJQUNwQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUTtJQUN4QyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUTtJQUN4QyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUTtDQUN6QyxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsT0FBNkI7SUFDcEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIn0=
@@ -1,10 +1,7 @@
1
- "use strict";
2
1
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
2
  // AddTwo
4
3
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.addTwoAbi = void 0;
7
- exports.addTwoAbi = [
4
+ export const addTwoAbi = [
8
5
  {
9
6
  type: 'constructor',
10
7
  inputs: [
@@ -59,4 +56,4 @@ exports.addTwoAbi = [
59
56
  stateMutability: 'view',
60
57
  },
61
58
  ];
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkVHdvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9hYmlzL2FkZFR3by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0tBQXNLO0FBQ3RLLFNBQVM7QUFDVCxzS0FBc0s7OztBQUV6SixRQUFBLFNBQVMsR0FBRztJQUN2QjtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFlBQVksRUFBRSx3QkFBd0I7Z0JBQ3RDLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0Y7UUFDRCxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLGVBQWUsRUFBRSxZQUFZO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDekUsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFO1lBQ1AsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN0RCxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ3hEO1FBQ0QsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEVBQUUsY0FBYztRQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDbEUsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdEQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM1RCxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQ25EO1FBQ0QsSUFBSSxFQUFFLFVBQVU7UUFDaEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtRQUNsQixPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakUsZUFBZSxFQUFFLE1BQU07S0FDeEI7Q0FDTyxDQUFBIn0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkVHdvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9hYmlzL2FkZFR3by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzS0FBc0s7QUFDdEssU0FBUztBQUNULHNLQUFzSztBQUV0SyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkI7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixNQUFNLEVBQUU7WUFDTjtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixZQUFZLEVBQUUsd0JBQXdCO2dCQUN0QyxJQUFJLEVBQUUsU0FBUzthQUNoQjtTQUNGO1FBQ0QsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxlQUFlLEVBQUUsWUFBWTtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3pFLElBQUksRUFBRSxXQUFXO1FBQ2pCLE9BQU8sRUFBRTtZQUNQLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdEQsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUN4RDtRQUNELGVBQWUsRUFBRSxZQUFZO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDbEUsSUFBSSxFQUFFLGNBQWM7UUFDcEIsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLGVBQWUsRUFBRSxZQUFZO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUU7WUFDTixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3RELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDNUQsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUNuRDtRQUNELElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsZUFBZSxFQUFFLFlBQVk7S0FDOUI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7UUFDbEIsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2pFLGVBQWUsRUFBRSxNQUFNO0tBQ3hCO0NBQ08sQ0FBQSJ9