@trufnetwork/sdk-js 0.5.6 → 0.5.7

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.
@@ -207,25 +207,31 @@ function parseAttestationRow(row, idx) {
207
207
  let requestTxId;
208
208
  let attestationHash;
209
209
  let requester;
210
+ let dataProvider;
211
+ let streamId;
210
212
  let createdHeight;
211
213
  let signedHeight;
212
214
  let encryptSig;
213
215
  if (Array.isArray(row)) {
214
- if (row.length < 6) {
216
+ if (row.length < 8) {
215
217
  throw new Error(
216
- `Row ${idx}: expected 6 columns, got ${row.length}`
218
+ `Row ${idx}: expected 8 columns, got ${row.length}`
217
219
  );
218
220
  }
219
221
  requestTxId = row[0];
220
222
  attestationHash = decodeBytea(row[1], idx, "attestation_hash");
221
223
  requester = decodeBytea(row[2], idx, "requester");
222
- createdHeight = parseInt(row[3], 10);
223
- signedHeight = row[4] !== null ? parseInt(row[4], 10) : null;
224
- encryptSig = row[5];
224
+ dataProvider = row[3];
225
+ streamId = row[4];
226
+ createdHeight = parseInt(row[5], 10);
227
+ signedHeight = row[6] !== null ? parseInt(row[6], 10) : null;
228
+ encryptSig = row[7];
225
229
  } else {
226
230
  requestTxId = row.request_tx_id;
227
231
  attestationHash = decodeBytea(row.attestation_hash, idx, "attestation_hash");
228
232
  requester = decodeBytea(row.requester, idx, "requester");
233
+ dataProvider = row.data_provider;
234
+ streamId = row.stream_id;
229
235
  createdHeight = parseInt(row.created_height, 10);
230
236
  signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;
231
237
  encryptSig = row.encrypt_sig;
@@ -234,6 +240,8 @@ function parseAttestationRow(row, idx) {
234
240
  requestTxId,
235
241
  attestationHash,
236
242
  requester,
243
+ dataProvider,
244
+ streamId,
237
245
  createdHeight,
238
246
  signedHeight,
239
247
  encryptSig
@@ -294,6 +302,8 @@ if (import_meta.vitest) {
294
302
  "tx123",
295
303
  Buffer.from([1, 2, 3]).toString("base64"),
296
304
  Buffer.from([4, 5, 6]).toString("base64"),
305
+ "0x4710a8d8f0d845da110086812a32de6d90d7ff5c",
306
+ "stai0000000000000000000000000000",
297
307
  "100",
298
308
  "200",
299
309
  true
@@ -302,6 +312,8 @@ if (import_meta.vitest) {
302
312
  expect(metadata.requestTxId).toBe("tx123");
303
313
  expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);
304
314
  expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);
315
+ expect(metadata.dataProvider).toBe("0x4710a8d8f0d845da110086812a32de6d90d7ff5c");
316
+ expect(metadata.streamId).toBe("stai0000000000000000000000000000");
305
317
  expect(metadata.createdHeight).toBe(100);
306
318
  expect(metadata.signedHeight).toBe(200);
307
319
  expect(metadata.encryptSig).toBe(true);
@@ -311,6 +323,8 @@ if (import_meta.vitest) {
311
323
  request_tx_id: "tx456",
312
324
  attestation_hash: Buffer.from([7, 8, 9]).toString("base64"),
313
325
  requester: Buffer.from([10, 11, 12]).toString("base64"),
326
+ data_provider: "0x1234567890123456789012345678901234567890",
327
+ stream_id: "stbx0000000000000000000000000000",
314
328
  created_height: "300",
315
329
  signed_height: null,
316
330
  encrypt_sig: false
@@ -319,6 +333,8 @@ if (import_meta.vitest) {
319
333
  expect(metadata.requestTxId).toBe("tx456");
320
334
  expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);
321
335
  expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);
336
+ expect(metadata.dataProvider).toBe("0x1234567890123456789012345678901234567890");
337
+ expect(metadata.streamId).toBe("stbx0000000000000000000000000000");
322
338
  expect(metadata.createdHeight).toBe(300);
323
339
  expect(metadata.signedHeight).toBe(null);
324
340
  expect(metadata.encryptSig).toBe(false);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/attestationAction.ts"],
4
- "sourcesContent": ["/**\n * Attestation action implementation\n *\n * This module provides methods for requesting, retrieving, and listing attestations.\n * Attestations are cryptographically signed proofs of query results that can be\n * consumed by smart contracts and external applications.\n */\n\nimport { Types, Utils } from '@trufnetwork/kwil-js';\nimport { Action } from './action';\nimport {\n RequestAttestationInput,\n RequestAttestationResult,\n GetSignedAttestationInput,\n SignedAttestationResult,\n ListAttestationsInput,\n AttestationMetadata,\n validateAttestationRequest,\n validateListAttestationsInput,\n} from '../types/attestation';\nimport { encodeActionArgs } from '../util/AttestationEncoding';\n\n/**\n * AttestationAction provides methods for working with data attestations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be used in smart contracts.\n *\n * @example\n * ```typescript\n * const client = new NodeTNClient({ ... });\n * const attestationAction = client.loadAttestationAction();\n *\n * // Request an attestation\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [dataProvider, streamId, fromTime, toTime, null, false],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n *\n * // Wait for signing (1-2 blocks)\n * await new Promise(resolve => setTimeout(resolve, 10000));\n *\n * // Retrieve signed attestation\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: result.requestTxId,\n * });\n * ```\n */\nexport class AttestationAction extends Action {\n /**\n * Request a signed attestation of query results\n *\n * This submits a transaction requesting that validators execute a query\n * and sign the results. The leader validator will sign the attestation\n * asynchronously (typically 1-2 blocks later).\n *\n * @param input - Attestation request parameters\n * @returns Promise resolving to request result with transaction ID\n * @throws Error if validation fails or transaction fails\n *\n * @example\n * ```typescript\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [\n * \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * \"stai0000000000000000000000000000\",\n * Math.floor(Date.now() / 1000) - 86400, // 1 day ago\n * Math.floor(Date.now() / 1000),\n * null,\n * false,\n * ],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n * console.log(`Request TX ID: ${result.requestTxId}`);\n * ```\n */\n async requestAttestation(\n input: RequestAttestationInput\n ): Promise<RequestAttestationResult> {\n // Validate input\n validateAttestationRequest(input);\n\n // Encode arguments\n const argsBytes = encodeActionArgs(input.args);\n\n // Prepare named parameters for request_attestation action\n // Note: maxFee must be a string with NUMERIC type to encode as NUMERIC(788,0) for wei amounts\n const params: Types.NamedParams[] = [{\n $data_provider: input.dataProvider,\n $stream_id: input.streamId,\n $action_name: input.actionName,\n $args_bytes: argsBytes,\n $encrypt_sig: input.encryptSig,\n $max_fee: input.maxFee.toString(),\n }];\n\n // Specify types - maxFee needs NUMERIC(78,0) for large wei amounts\n const types = {\n $max_fee: Utils.DataType.Numeric(78, 0),\n };\n\n // Execute request_attestation action\n const result = await this.executeWithNamedParams('request_attestation', params, types);\n\n // Check for errors\n if (!result.data?.tx_hash) {\n throw new Error(\n 'Failed to request attestation: no transaction hash returned'\n );\n }\n\n // Return the 64-char hex tx_hash\n return {\n requestTxId: result.data.tx_hash,\n };\n }\n\n /**\n * Retrieve a complete signed attestation payload\n *\n * This fetches the signed attestation payload for a given request transaction ID.\n * The attestation must have been signed by the leader validator first.\n *\n * If the attestation is not yet signed, this will throw an error. Clients should\n * poll with exponential backoff or wait for 1-2 blocks after requesting.\n *\n * @param input - Request transaction ID\n * @returns Promise resolving to signed attestation payload\n * @throws Error if attestation not found or not yet signed\n *\n * @example\n * ```typescript\n * // Poll for signature\n * for (let i = 0; i < 15; i++) {\n * try {\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: \"0x123...\",\n * });\n * console.log(`Payload: ${Buffer.from(signed.payload).toString('hex')}`);\n * break;\n * } catch (e) {\n * await new Promise(resolve => setTimeout(resolve, 2000));\n * }\n * }\n * ```\n */\n async getSignedAttestation(\n input: GetSignedAttestationInput\n ): Promise<SignedAttestationResult> {\n // Validate and normalize input\n const trimmed = input.requestTxId?.trim() || '';\n if (trimmed === '') {\n throw new Error('request_tx_id is required');\n }\n\n // Strip optional \"0x\" prefix and lowercase for normalization\n const normalizedRequestTxId = trimmed.startsWith('0x')\n ? trimmed.slice(2).toLowerCase()\n : trimmed.toLowerCase();\n\n // Call get_signed_attestation view action\n const result = await this.call<Array<{ payload: string | Uint8Array }>>(\n 'get_signed_attestation',\n { $request_tx_id: normalizedRequestTxId }\n );\n\n // Extract the right value from Either, or throw if Left\n const data = result.throw();\n\n // The action returns an array of rows - extract the first row\n if (!data || !Array.isArray(data) || data.length === 0) {\n throw new Error('No attestation found for request_tx_id - may not exist or is not yet signed');\n }\n\n const row = data[0];\n if (!row || !row.payload) {\n throw new Error('No payload in attestation row');\n }\n\n // Decode base64 to bytes\n let payloadBytes: Uint8Array;\n const payloadValue = row.payload;\n\n if (typeof payloadValue === 'string') {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n payloadBytes = new Uint8Array(Buffer.from(payloadValue, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(payloadValue);\n payloadBytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n payloadBytes[i] = binaryString.charCodeAt(i);\n }\n }\n } else if (payloadValue instanceof Uint8Array) {\n // Already decoded\n payloadBytes = payloadValue;\n } else {\n throw new Error(`Unexpected payload type: ${typeof payloadValue}`);\n }\n\n return {\n payload: payloadBytes,\n };\n }\n\n /**\n * List attestation metadata with optional filtering\n *\n * This returns metadata for attestations, optionally filtered by requester address or request transaction ID.\n * Supports pagination and sorting.\n *\n * @param input - Filter and pagination parameters\n * @returns Promise resolving to array of attestation metadata\n * @throws Error if parameters are invalid\n *\n * @example\n * ```typescript\n * // List my recent attestations\n * const myAddress = new Uint8Array(Buffer.from(wallet.address.slice(2), 'hex'));\n * const attestations = await attestationAction.listAttestations({\n * requester: myAddress,\n * limit: 10,\n * offset: 0,\n * orderBy: \"created_height desc\",\n * });\n *\n * attestations.forEach(att => {\n * console.log(`TX: ${att.requestTxId}, Height: ${att.createdHeight}`);\n * });\n * ```\n */\n async listAttestations(\n input: ListAttestationsInput\n ): Promise<AttestationMetadata[]> {\n // Validate input\n validateListAttestationsInput(input);\n\n // Set defaults\n const limit = input.limit ?? 5000;\n const offset = input.offset ?? 0;\n\n // Prepare parameters for list_attestations view action\n // Note: Empty Uint8Array represents BYTEA NULL (handled by kwil-js 0.9.10+)\n const params: Types.NamedParams = {\n $requester: input.requester ?? new Uint8Array(0),\n $request_tx_id: input.requestTxId ?? null,\n $limit: limit,\n $offset: offset,\n $order_by: input.orderBy ?? null,\n };\n\n // Call list_attestations view action\n const result = await this.call<any[]>('list_attestations', params);\n\n // Check for errors\n if (result.isLeft()) {\n throw new Error(\n `Failed to list attestations: HTTP status ${result.value}`\n );\n }\n\n // Extract the right value from Either\n // Note: result.value might be a getter function, so call it if needed\n const rightValue = typeof result.value === 'function' ? result.value() : result.value;\n const rows = Array.isArray(rightValue) ? rightValue : [];\n\n // If no rows, return empty array\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // Parse rows into AttestationMetadata\n return rows.map((row: any, idx: number) => parseAttestationRow(row, idx));\n }\n}\n\n/**\n * Parse a single row from list_attestations result into AttestationMetadata\n *\n * Expected columns (in order):\n * 0. request_tx_id (TEXT)\n * 1. attestation_hash (BYTEA)\n * 2. requester (BYTEA)\n * 3. created_height (INT8)\n * 4. signed_height (INT8, nullable)\n * 5. encrypt_sig (BOOLEAN)\n */\nfunction parseAttestationRow(row: any, idx: number): AttestationMetadata {\n // kwil-js returns rows as objects with column names as keys\n // or as arrays depending on the query format\n let requestTxId: string;\n let attestationHash: Uint8Array;\n let requester: Uint8Array;\n let createdHeight: number;\n let signedHeight: number | null;\n let encryptSig: boolean;\n\n // Handle both array and object formats\n if (Array.isArray(row)) {\n // Array format: [col0, col1, col2, ...]\n if (row.length < 6) {\n throw new Error(\n `Row ${idx}: expected 6 columns, got ${row.length}`\n );\n }\n\n requestTxId = row[0];\n attestationHash = decodeBytea(row[1], idx, 'attestation_hash');\n requester = decodeBytea(row[2], idx, 'requester');\n createdHeight = parseInt(row[3], 10);\n signedHeight = row[4] !== null ? parseInt(row[4], 10) : null;\n encryptSig = row[5];\n } else {\n // Object format: { request_tx_id: ..., attestation_hash: ..., ... }\n requestTxId = row.request_tx_id;\n attestationHash = decodeBytea(row.attestation_hash, idx, 'attestation_hash');\n requester = decodeBytea(row.requester, idx, 'requester');\n createdHeight = parseInt(row.created_height, 10);\n signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;\n encryptSig = row.encrypt_sig;\n }\n\n return {\n requestTxId,\n attestationHash,\n requester,\n createdHeight,\n signedHeight,\n encryptSig,\n };\n}\n\n/**\n * Decode a BYTEA column from base64\n */\nfunction decodeBytea(value: any, rowIdx: number, colName: string): Uint8Array {\n if (value === null || value === undefined) {\n throw new Error(`Row ${rowIdx}: ${colName} is null or undefined`);\n }\n\n // If already Uint8Array, return as-is\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // If string, decode from base64\n if (typeof value === 'string') {\n try {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(value);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n } catch (err) {\n throw new Error(\n `Row ${rowIdx}: failed to decode ${colName} as base64: ${err}`\n );\n }\n }\n\n throw new Error(\n `Row ${rowIdx}: expected ${colName} to be string or Uint8Array, got ${typeof value}`\n );\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('decodeBytea', () => {\n it('should decode base64 string', () => {\n const base64 = Buffer.from([1, 2, 3, 4]).toString('base64');\n const decoded = decodeBytea(base64, 0, 'test');\n expect(Array.from(decoded)).toEqual([1, 2, 3, 4]);\n });\n\n it('should return Uint8Array as-is', () => {\n const bytes = new Uint8Array([1, 2, 3, 4]);\n const decoded = decodeBytea(bytes, 0, 'test');\n expect(decoded).toBe(bytes);\n });\n\n it('should throw on null', () => {\n expect(() => decodeBytea(null, 0, 'test')).toThrow('null or undefined');\n });\n\n it('should throw on invalid type', () => {\n expect(() => decodeBytea(123, 0, 'test')).toThrow('expected test to be string or Uint8Array');\n });\n });\n\n describe('parseAttestationRow', () => {\n it('should parse array format row', () => {\n const row = [\n 'tx123',\n Buffer.from([1, 2, 3]).toString('base64'),\n Buffer.from([4, 5, 6]).toString('base64'),\n '100',\n '200',\n true,\n ];\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx123');\n expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);\n expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);\n expect(metadata.createdHeight).toBe(100);\n expect(metadata.signedHeight).toBe(200);\n expect(metadata.encryptSig).toBe(true);\n });\n\n it('should parse object format row', () => {\n const row = {\n request_tx_id: 'tx456',\n attestation_hash: Buffer.from([7, 8, 9]).toString('base64'),\n requester: Buffer.from([10, 11, 12]).toString('base64'),\n created_height: '300',\n signed_height: null,\n encrypt_sig: false,\n };\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx456');\n expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);\n expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);\n expect(metadata.createdHeight).toBe(300);\n expect(metadata.signedHeight).toBe(null);\n expect(metadata.encryptSig).toBe(false);\n });\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Attestation action implementation\n *\n * This module provides methods for requesting, retrieving, and listing attestations.\n * Attestations are cryptographically signed proofs of query results that can be\n * consumed by smart contracts and external applications.\n */\n\nimport { Types, Utils } from '@trufnetwork/kwil-js';\nimport { Action } from './action';\nimport {\n RequestAttestationInput,\n RequestAttestationResult,\n GetSignedAttestationInput,\n SignedAttestationResult,\n ListAttestationsInput,\n AttestationMetadata,\n validateAttestationRequest,\n validateListAttestationsInput,\n} from '../types/attestation';\nimport { encodeActionArgs } from '../util/AttestationEncoding';\n\n/**\n * AttestationAction provides methods for working with data attestations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be used in smart contracts.\n *\n * @example\n * ```typescript\n * const client = new NodeTNClient({ ... });\n * const attestationAction = client.loadAttestationAction();\n *\n * // Request an attestation\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [dataProvider, streamId, fromTime, toTime, null, false],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n *\n * // Wait for signing (1-2 blocks)\n * await new Promise(resolve => setTimeout(resolve, 10000));\n *\n * // Retrieve signed attestation\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: result.requestTxId,\n * });\n * ```\n */\nexport class AttestationAction extends Action {\n /**\n * Request a signed attestation of query results\n *\n * This submits a transaction requesting that validators execute a query\n * and sign the results. The leader validator will sign the attestation\n * asynchronously (typically 1-2 blocks later).\n *\n * @param input - Attestation request parameters\n * @returns Promise resolving to request result with transaction ID\n * @throws Error if validation fails or transaction fails\n *\n * @example\n * ```typescript\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [\n * \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * \"stai0000000000000000000000000000\",\n * Math.floor(Date.now() / 1000) - 86400, // 1 day ago\n * Math.floor(Date.now() / 1000),\n * null,\n * false,\n * ],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n * console.log(`Request TX ID: ${result.requestTxId}`);\n * ```\n */\n async requestAttestation(\n input: RequestAttestationInput\n ): Promise<RequestAttestationResult> {\n // Validate input\n validateAttestationRequest(input);\n\n // Encode arguments\n const argsBytes = encodeActionArgs(input.args);\n\n // Prepare named parameters for request_attestation action\n // Note: maxFee must be a string with NUMERIC type to encode as NUMERIC(788,0) for wei amounts\n const params: Types.NamedParams[] = [{\n $data_provider: input.dataProvider,\n $stream_id: input.streamId,\n $action_name: input.actionName,\n $args_bytes: argsBytes,\n $encrypt_sig: input.encryptSig,\n $max_fee: input.maxFee.toString(),\n }];\n\n // Specify types - maxFee needs NUMERIC(78,0) for large wei amounts\n const types = {\n $max_fee: Utils.DataType.Numeric(78, 0),\n };\n\n // Execute request_attestation action\n const result = await this.executeWithNamedParams('request_attestation', params, types);\n\n // Check for errors\n if (!result.data?.tx_hash) {\n throw new Error(\n 'Failed to request attestation: no transaction hash returned'\n );\n }\n\n // Return the 64-char hex tx_hash\n return {\n requestTxId: result.data.tx_hash,\n };\n }\n\n /**\n * Retrieve a complete signed attestation payload\n *\n * This fetches the signed attestation payload for a given request transaction ID.\n * The attestation must have been signed by the leader validator first.\n *\n * If the attestation is not yet signed, this will throw an error. Clients should\n * poll with exponential backoff or wait for 1-2 blocks after requesting.\n *\n * @param input - Request transaction ID\n * @returns Promise resolving to signed attestation payload\n * @throws Error if attestation not found or not yet signed\n *\n * @example\n * ```typescript\n * // Poll for signature\n * for (let i = 0; i < 15; i++) {\n * try {\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: \"0x123...\",\n * });\n * console.log(`Payload: ${Buffer.from(signed.payload).toString('hex')}`);\n * break;\n * } catch (e) {\n * await new Promise(resolve => setTimeout(resolve, 2000));\n * }\n * }\n * ```\n */\n async getSignedAttestation(\n input: GetSignedAttestationInput\n ): Promise<SignedAttestationResult> {\n // Validate and normalize input\n const trimmed = input.requestTxId?.trim() || '';\n if (trimmed === '') {\n throw new Error('request_tx_id is required');\n }\n\n // Strip optional \"0x\" prefix and lowercase for normalization\n const normalizedRequestTxId = trimmed.startsWith('0x')\n ? trimmed.slice(2).toLowerCase()\n : trimmed.toLowerCase();\n\n // Call get_signed_attestation view action\n const result = await this.call<Array<{ payload: string | Uint8Array }>>(\n 'get_signed_attestation',\n { $request_tx_id: normalizedRequestTxId }\n );\n\n // Extract the right value from Either, or throw if Left\n const data = result.throw();\n\n // The action returns an array of rows - extract the first row\n if (!data || !Array.isArray(data) || data.length === 0) {\n throw new Error('No attestation found for request_tx_id - may not exist or is not yet signed');\n }\n\n const row = data[0];\n if (!row || !row.payload) {\n throw new Error('No payload in attestation row');\n }\n\n // Decode base64 to bytes\n let payloadBytes: Uint8Array;\n const payloadValue = row.payload;\n\n if (typeof payloadValue === 'string') {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n payloadBytes = new Uint8Array(Buffer.from(payloadValue, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(payloadValue);\n payloadBytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n payloadBytes[i] = binaryString.charCodeAt(i);\n }\n }\n } else if (payloadValue instanceof Uint8Array) {\n // Already decoded\n payloadBytes = payloadValue;\n } else {\n throw new Error(`Unexpected payload type: ${typeof payloadValue}`);\n }\n\n return {\n payload: payloadBytes,\n };\n }\n\n /**\n * List attestation metadata with optional filtering\n *\n * This returns metadata for attestations, optionally filtered by requester address or request transaction ID.\n * Supports pagination and sorting.\n *\n * @param input - Filter and pagination parameters\n * @returns Promise resolving to array of attestation metadata\n * @throws Error if parameters are invalid\n *\n * @example\n * ```typescript\n * // List my recent attestations\n * const myAddress = new Uint8Array(Buffer.from(wallet.address.slice(2), 'hex'));\n * const attestations = await attestationAction.listAttestations({\n * requester: myAddress,\n * limit: 10,\n * offset: 0,\n * orderBy: \"created_height desc\",\n * });\n *\n * attestations.forEach(att => {\n * console.log(`TX: ${att.requestTxId}, Height: ${att.createdHeight}`);\n * });\n * ```\n */\n async listAttestations(\n input: ListAttestationsInput\n ): Promise<AttestationMetadata[]> {\n // Validate input\n validateListAttestationsInput(input);\n\n // Set defaults\n const limit = input.limit ?? 5000;\n const offset = input.offset ?? 0;\n\n // Prepare parameters for list_attestations view action\n // Note: Empty Uint8Array represents BYTEA NULL (handled by kwil-js 0.9.10+)\n const params: Types.NamedParams = {\n $requester: input.requester ?? new Uint8Array(0),\n $request_tx_id: input.requestTxId ?? null,\n $limit: limit,\n $offset: offset,\n $order_by: input.orderBy ?? null,\n };\n\n // Call list_attestations view action\n const result = await this.call<any[]>('list_attestations', params);\n\n // Check for errors\n if (result.isLeft()) {\n throw new Error(\n `Failed to list attestations: HTTP status ${result.value}`\n );\n }\n\n // Extract the right value from Either\n // Note: result.value might be a getter function, so call it if needed\n const rightValue = typeof result.value === 'function' ? result.value() : result.value;\n const rows = Array.isArray(rightValue) ? rightValue : [];\n\n // If no rows, return empty array\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // Parse rows into AttestationMetadata\n return rows.map((row: any, idx: number) => parseAttestationRow(row, idx));\n }\n}\n\n/**\n * Parse a single row from list_attestations result into AttestationMetadata\n *\n * Expected columns (in order):\n * 0. request_tx_id (TEXT)\n * 1. attestation_hash (BYTEA)\n * 2. requester (BYTEA)\n * 3. data_provider (TEXT)\n * 4. stream_id (TEXT)\n * 5. created_height (INT8)\n * 6. signed_height (INT8, nullable)\n * 7. encrypt_sig (BOOLEAN)\n */\nfunction parseAttestationRow(row: any, idx: number): AttestationMetadata {\n // kwil-js returns rows as objects with column names as keys\n // or as arrays depending on the query format\n let requestTxId: string;\n let attestationHash: Uint8Array;\n let requester: Uint8Array;\n let dataProvider: string;\n let streamId: string;\n let createdHeight: number;\n let signedHeight: number | null;\n let encryptSig: boolean;\n\n // Handle both array and object formats\n if (Array.isArray(row)) {\n // Array format: [col0, col1, col2, ...]\n if (row.length < 8) {\n throw new Error(\n `Row ${idx}: expected 8 columns, got ${row.length}`\n );\n }\n\n requestTxId = row[0];\n attestationHash = decodeBytea(row[1], idx, 'attestation_hash');\n requester = decodeBytea(row[2], idx, 'requester');\n dataProvider = row[3];\n streamId = row[4];\n createdHeight = parseInt(row[5], 10);\n signedHeight = row[6] !== null ? parseInt(row[6], 10) : null;\n encryptSig = row[7];\n } else {\n // Object format: { request_tx_id: ..., attestation_hash: ..., ... }\n requestTxId = row.request_tx_id;\n attestationHash = decodeBytea(row.attestation_hash, idx, 'attestation_hash');\n requester = decodeBytea(row.requester, idx, 'requester');\n dataProvider = row.data_provider;\n streamId = row.stream_id;\n createdHeight = parseInt(row.created_height, 10);\n signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;\n encryptSig = row.encrypt_sig;\n }\n\n return {\n requestTxId,\n attestationHash,\n requester,\n dataProvider,\n streamId,\n createdHeight,\n signedHeight,\n encryptSig,\n };\n}\n\n/**\n * Decode a BYTEA column from base64\n */\nfunction decodeBytea(value: any, rowIdx: number, colName: string): Uint8Array {\n if (value === null || value === undefined) {\n throw new Error(`Row ${rowIdx}: ${colName} is null or undefined`);\n }\n\n // If already Uint8Array, return as-is\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // If string, decode from base64\n if (typeof value === 'string') {\n try {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(value);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n } catch (err) {\n throw new Error(\n `Row ${rowIdx}: failed to decode ${colName} as base64: ${err}`\n );\n }\n }\n\n throw new Error(\n `Row ${rowIdx}: expected ${colName} to be string or Uint8Array, got ${typeof value}`\n );\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('decodeBytea', () => {\n it('should decode base64 string', () => {\n const base64 = Buffer.from([1, 2, 3, 4]).toString('base64');\n const decoded = decodeBytea(base64, 0, 'test');\n expect(Array.from(decoded)).toEqual([1, 2, 3, 4]);\n });\n\n it('should return Uint8Array as-is', () => {\n const bytes = new Uint8Array([1, 2, 3, 4]);\n const decoded = decodeBytea(bytes, 0, 'test');\n expect(decoded).toBe(bytes);\n });\n\n it('should throw on null', () => {\n expect(() => decodeBytea(null, 0, 'test')).toThrow('null or undefined');\n });\n\n it('should throw on invalid type', () => {\n expect(() => decodeBytea(123, 0, 'test')).toThrow('expected test to be string or Uint8Array');\n });\n });\n\n describe('parseAttestationRow', () => {\n it('should parse array format row', () => {\n const row = [\n 'tx123',\n Buffer.from([1, 2, 3]).toString('base64'),\n Buffer.from([4, 5, 6]).toString('base64'),\n '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n 'stai0000000000000000000000000000',\n '100',\n '200',\n true,\n ];\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx123');\n expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);\n expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);\n expect(metadata.dataProvider).toBe('0x4710a8d8f0d845da110086812a32de6d90d7ff5c');\n expect(metadata.streamId).toBe('stai0000000000000000000000000000');\n expect(metadata.createdHeight).toBe(100);\n expect(metadata.signedHeight).toBe(200);\n expect(metadata.encryptSig).toBe(true);\n });\n\n it('should parse object format row', () => {\n const row = {\n request_tx_id: 'tx456',\n attestation_hash: Buffer.from([7, 8, 9]).toString('base64'),\n requester: Buffer.from([10, 11, 12]).toString('base64'),\n data_provider: '0x1234567890123456789012345678901234567890',\n stream_id: 'stbx0000000000000000000000000000',\n created_height: '300',\n signed_height: null,\n encrypt_sig: false,\n };\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx456');\n expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);\n expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);\n expect(metadata.dataProvider).toBe('0x1234567890123456789012345678901234567890');\n expect(metadata.streamId).toBe('stbx0000000000000000000000000000');\n expect(metadata.createdHeight).toBe(300);\n expect(metadata.signedHeight).toBe(null);\n expect(metadata.encryptSig).toBe(false);\n });\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/attestation.ts"],
4
- "sourcesContent": ["/**\n * Type definitions for attestation operations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be consumed by smart contracts and\n * external applications.\n */\n\n/**\n * Input parameters for requesting an attestation\n */\nexport interface RequestAttestationInput {\n /**\n * Data provider address (0x-prefixed, 42 characters)\n * Example: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\"\n */\n dataProvider: string;\n\n /**\n * Stream ID (32 characters)\n * Example: \"stai0000000000000000000000000000\"\n */\n streamId: string;\n\n /**\n * Action name to attest (must be in allowlist)\n * Example: \"get_record\", \"get_index\"\n */\n actionName: string;\n\n /**\n * Action arguments (will be encoded)\n * Must match the signature of the action\n */\n args: any[];\n\n /**\n * Whether to encrypt the signature (must be false in MVP)\n * Future: ECIES encryption to requester's public key\n */\n encryptSig: boolean;\n\n /**\n * Maximum fee willing to pay (in wei, as NUMERIC(78,0))\n * Accepts number, string, or bigint for large values (up to 40 TRUF = 40e18 wei)\n * Transaction will abort if actual fee exceeds this\n * Accepts number, string, or bigint for large values\n */\n maxFee: number | string | bigint;\n}\n\n/**\n * Result of requesting an attestation\n */\nexport interface RequestAttestationResult {\n /**\n * Transaction ID for this attestation request\n * Use this to retrieve the signed attestation later\n */\n requestTxId: string;\n}\n\n/**\n * Input parameters for retrieving a signed attestation\n */\nexport interface GetSignedAttestationInput {\n /**\n * Transaction ID from request_attestation\n */\n requestTxId: string;\n}\n\n/**\n * Result of retrieving a signed attestation\n */\nexport interface SignedAttestationResult {\n /**\n * Complete attestation payload: canonical (8 fields) + signature\n *\n * Format: version | algo | height | provider | stream | action | args | result | signature\n *\n * This payload can be passed to EVM contracts for verification\n */\n payload: Uint8Array;\n}\n\n/**\n * Input parameters for listing attestations\n */\nexport interface ListAttestationsInput {\n /**\n * Optional: Filter by requester address (20 bytes)\n * If provided, only returns attestations requested by this address\n */\n requester?: Uint8Array;\n\n /**\n * Optional: Filter by request transaction ID\n * If provided, only returns attestations matching this transaction ID\n */\n requestTxId?: string;\n\n /**\n * Optional: Maximum number of results (1-5000, default 5000)\n */\n limit?: number;\n\n /**\n * Optional: Pagination offset (default 0)\n */\n offset?: number;\n\n /**\n * Optional: Sort order\n *\n * Allowed values:\n * - \"created_height asc\"\n * - \"created_height desc\"\n * - \"signed_height asc\"\n * - \"signed_height desc\"\n *\n * Case-insensitive\n */\n orderBy?: string;\n}\n\n/**\n * Metadata for a single attestation\n */\nexport interface AttestationMetadata {\n /**\n * Transaction ID for this attestation request\n */\n requestTxId: string;\n\n /**\n * Attestation hash (identifies this attestation)\n */\n attestationHash: Uint8Array;\n\n /**\n * Address of the requester (20 bytes)\n */\n requester: Uint8Array;\n\n /**\n * Block height when attestation was created\n */\n createdHeight: number;\n\n /**\n * Block height when attestation was signed (null if not yet signed)\n */\n signedHeight: number | null;\n\n /**\n * Whether signature is encrypted\n */\n encryptSig: boolean;\n}\n\n/**\n * Validates attestation request input\n *\n * @param input - The attestation request to validate\n * @throws Error if validation fails\n */\nexport function validateAttestationRequest(input: RequestAttestationInput): void {\n // Data provider validation\n if (input.dataProvider.length !== 42) {\n throw new Error(\n `data_provider must be 0x-prefixed 40 hex characters, got ${input.dataProvider.length} chars`\n );\n }\n\n if (!input.dataProvider.startsWith('0x')) {\n throw new Error('data_provider must start with 0x prefix');\n }\n\n // Validate hex after 0x prefix\n const hex = input.dataProvider.slice(2);\n if (!/^[0-9a-fA-F]{40}$/.test(hex)) {\n throw new Error('data_provider must contain valid hex characters after 0x prefix');\n }\n\n // Stream ID validation\n if (input.streamId.length !== 32) {\n throw new Error(`stream_id must be 32 characters, got ${input.streamId.length}`);\n }\n\n // Action name validation\n if (!input.actionName || input.actionName.trim() === '') {\n throw new Error('action_name cannot be empty');\n }\n\n // Encryption validation\n if (input.encryptSig) {\n throw new Error('encryption not implemented in MVP');\n }\n\n // Fee validation - handle number, string, or bigint\n const maxFeeNum = typeof input.maxFee === 'bigint'\n ? input.maxFee\n : typeof input.maxFee === 'string'\n ? BigInt(input.maxFee)\n : BigInt(Math.floor(input.maxFee));\n\n if (maxFeeNum < 0n) {\n throw new Error(`max_fee must be non-negative, got ${input.maxFee}`);\n }\n}\n\n/**\n * Whitelist of valid orderBy values (lowercase canonical form)\n */\nconst VALID_ORDER_BY_VALUES = [\n 'created_height asc',\n 'created_height desc',\n 'signed_height asc',\n 'signed_height desc',\n];\n\n/**\n * Validates orderBy parameter (case-insensitive)\n *\n * @param orderBy - The orderBy value to validate\n * @returns true if valid, false otherwise\n */\nexport function isValidOrderBy(orderBy: string): boolean {\n // Normalize to lowercase for case-insensitive comparison\n const normalized = orderBy.trim().toLowerCase();\n return VALID_ORDER_BY_VALUES.includes(normalized);\n}\n\n/**\n * Validates list attestations input\n *\n * @param input - The list attestations input to validate\n * @throws Error if validation fails\n */\nexport function validateListAttestationsInput(input: ListAttestationsInput): void {\n // Validate limit\n if (input.limit !== undefined) {\n if (input.limit < 1 || input.limit > 5000) {\n throw new Error('limit must be between 1 and 5000');\n }\n }\n\n // Validate offset\n if (input.offset !== undefined) {\n if (input.offset < 0) {\n throw new Error('offset must be non-negative');\n }\n }\n\n // Validate requester length\n if (input.requester !== undefined) {\n if (input.requester.length !== 20) {\n throw new Error('requester must be exactly 20 bytes');\n }\n }\n\n // Validate orderBy\n if (input.orderBy !== undefined) {\n if (!isValidOrderBy(input.orderBy)) {\n throw new Error(\n `Invalid orderBy value. Must be one of: ${VALID_ORDER_BY_VALUES.slice(0, 4).join(', ')}`\n );\n }\n }\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('validateAttestationRequest', () => {\n it('should accept valid input', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000000,\n })\n ).not.toThrow();\n });\n\n it('should reject invalid data_provider length', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xinvalid',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must be 0x-prefixed 40 hex characters');\n });\n\n it('should reject data_provider without 0x prefix', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '4710a8d8f0d845da110086812a32de6d90d7ff5c00',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must start with 0x prefix');\n });\n\n it('should reject data_provider with invalid hex', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xGGGGa8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must contain valid hex characters');\n });\n\n it('should reject short stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'short',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject long stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai00000000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject empty action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: '',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject whitespace-only action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: ' ',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject encryptSig=true', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: true,\n maxFee: 1000,\n })\n ).toThrow('encryption not implemented in MVP');\n });\n\n it('should reject negative maxFee', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: -1,\n })\n ).toThrow('max_fee must be non-negative');\n });\n });\n\n describe('isValidOrderBy', () => {\n it('should accept valid lowercase orderBy', () => {\n expect(isValidOrderBy('created_height asc')).toBe(true);\n expect(isValidOrderBy('created_height desc')).toBe(true);\n expect(isValidOrderBy('signed_height asc')).toBe(true);\n expect(isValidOrderBy('signed_height desc')).toBe(true);\n });\n\n it('should accept valid uppercase orderBy', () => {\n expect(isValidOrderBy('created_height ASC')).toBe(true);\n expect(isValidOrderBy('created_height DESC')).toBe(true);\n expect(isValidOrderBy('signed_height ASC')).toBe(true);\n expect(isValidOrderBy('signed_height DESC')).toBe(true);\n });\n\n it('should accept mixed case and trim whitespace', () => {\n expect(isValidOrderBy(' created_height ASC ')).toBe(true);\n expect(isValidOrderBy('Created_Height Desc')).toBe(true);\n expect(isValidOrderBy('SIGNED_HEIGHT asc')).toBe(true);\n expect(isValidOrderBy(' signed_height DESC ')).toBe(true);\n });\n\n it('should reject invalid orderBy', () => {\n expect(isValidOrderBy('invalid')).toBe(false);\n expect(isValidOrderBy('created_height')).toBe(false);\n expect(isValidOrderBy('created_height ascending')).toBe(false);\n expect(isValidOrderBy('')).toBe(false);\n });\n });\n\n describe('validateListAttestationsInput', () => {\n it('should accept valid input with all fields', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(20),\n limit: 100,\n offset: 0,\n orderBy: 'created_height desc',\n })\n ).not.toThrow();\n });\n\n it('should accept valid input with no optional fields', () => {\n expect(() => validateListAttestationsInput({})).not.toThrow();\n });\n\n it('should reject limit < 1', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 0,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject limit > 5000', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 5001,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject negative offset', () => {\n expect(() =>\n validateListAttestationsInput({\n offset: -1,\n })\n ).toThrow('offset must be non-negative');\n });\n\n it('should reject requester != 20 bytes (too long)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(21),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject requester != 20 bytes (too short)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(19),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject invalid orderBy', () => {\n expect(() =>\n validateListAttestationsInput({\n orderBy: 'invalid',\n })\n ).toThrow('Invalid orderBy value');\n });\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Type definitions for attestation operations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be consumed by smart contracts and\n * external applications.\n */\n\n/**\n * Input parameters for requesting an attestation\n */\nexport interface RequestAttestationInput {\n /**\n * Data provider address (0x-prefixed, 42 characters)\n * Example: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\"\n */\n dataProvider: string;\n\n /**\n * Stream ID (32 characters)\n * Example: \"stai0000000000000000000000000000\"\n */\n streamId: string;\n\n /**\n * Action name to attest (must be in allowlist)\n * Example: \"get_record\", \"get_index\"\n */\n actionName: string;\n\n /**\n * Action arguments (will be encoded)\n * Must match the signature of the action\n */\n args: any[];\n\n /**\n * Whether to encrypt the signature (must be false in MVP)\n * Future: ECIES encryption to requester's public key\n */\n encryptSig: boolean;\n\n /**\n * Maximum fee willing to pay (in wei, as NUMERIC(78,0))\n * Accepts number, string, or bigint for large values (up to 40 TRUF = 40e18 wei)\n * Transaction will abort if actual fee exceeds this\n * Accepts number, string, or bigint for large values\n */\n maxFee: number | string | bigint;\n}\n\n/**\n * Result of requesting an attestation\n */\nexport interface RequestAttestationResult {\n /**\n * Transaction ID for this attestation request\n * Use this to retrieve the signed attestation later\n */\n requestTxId: string;\n}\n\n/**\n * Input parameters for retrieving a signed attestation\n */\nexport interface GetSignedAttestationInput {\n /**\n * Transaction ID from request_attestation\n */\n requestTxId: string;\n}\n\n/**\n * Result of retrieving a signed attestation\n */\nexport interface SignedAttestationResult {\n /**\n * Complete attestation payload: canonical (8 fields) + signature\n *\n * Format: version | algo | height | provider | stream | action | args | result | signature\n *\n * This payload can be passed to EVM contracts for verification\n */\n payload: Uint8Array;\n}\n\n/**\n * Input parameters for listing attestations\n */\nexport interface ListAttestationsInput {\n /**\n * Optional: Filter by requester address (20 bytes)\n * If provided, only returns attestations requested by this address\n */\n requester?: Uint8Array;\n\n /**\n * Optional: Filter by request transaction ID\n * If provided, only returns attestations matching this transaction ID\n */\n requestTxId?: string;\n\n /**\n * Optional: Maximum number of results (1-5000, default 5000)\n */\n limit?: number;\n\n /**\n * Optional: Pagination offset (default 0)\n */\n offset?: number;\n\n /**\n * Optional: Sort order\n *\n * Allowed values:\n * - \"created_height asc\"\n * - \"created_height desc\"\n * - \"signed_height asc\"\n * - \"signed_height desc\"\n *\n * Case-insensitive\n */\n orderBy?: string;\n}\n\n/**\n * Metadata for a single attestation\n */\nexport interface AttestationMetadata {\n /**\n * Transaction ID for this attestation request\n */\n requestTxId: string;\n\n /**\n * Attestation hash (identifies this attestation)\n */\n attestationHash: Uint8Array;\n\n /**\n * Address of the requester (20 bytes)\n */\n requester: Uint8Array;\n\n /**\n * Data provider address\n */\n dataProvider: string;\n\n /**\n * Stream ID\n */\n streamId: string;\n\n /**\n * Block height when attestation was created\n */\n createdHeight: number;\n\n /**\n * Block height when attestation was signed (null if not yet signed)\n */\n signedHeight: number | null;\n\n /**\n * Whether signature is encrypted\n */\n encryptSig: boolean;\n}\n\n/**\n * Validates attestation request input\n *\n * @param input - The attestation request to validate\n * @throws Error if validation fails\n */\nexport function validateAttestationRequest(input: RequestAttestationInput): void {\n // Data provider validation\n if (input.dataProvider.length !== 42) {\n throw new Error(\n `data_provider must be 0x-prefixed 40 hex characters, got ${input.dataProvider.length} chars`\n );\n }\n\n if (!input.dataProvider.startsWith('0x')) {\n throw new Error('data_provider must start with 0x prefix');\n }\n\n // Validate hex after 0x prefix\n const hex = input.dataProvider.slice(2);\n if (!/^[0-9a-fA-F]{40}$/.test(hex)) {\n throw new Error('data_provider must contain valid hex characters after 0x prefix');\n }\n\n // Stream ID validation\n if (input.streamId.length !== 32) {\n throw new Error(`stream_id must be 32 characters, got ${input.streamId.length}`);\n }\n\n // Action name validation\n if (!input.actionName || input.actionName.trim() === '') {\n throw new Error('action_name cannot be empty');\n }\n\n // Encryption validation\n if (input.encryptSig) {\n throw new Error('encryption not implemented in MVP');\n }\n\n // Fee validation - handle number, string, or bigint\n const maxFeeNum = typeof input.maxFee === 'bigint'\n ? input.maxFee\n : typeof input.maxFee === 'string'\n ? BigInt(input.maxFee)\n : BigInt(Math.floor(input.maxFee));\n\n if (maxFeeNum < 0n) {\n throw new Error(`max_fee must be non-negative, got ${input.maxFee}`);\n }\n}\n\n/**\n * Whitelist of valid orderBy values (lowercase canonical form)\n */\nconst VALID_ORDER_BY_VALUES = [\n 'created_height asc',\n 'created_height desc',\n 'signed_height asc',\n 'signed_height desc',\n];\n\n/**\n * Validates orderBy parameter (case-insensitive)\n *\n * @param orderBy - The orderBy value to validate\n * @returns true if valid, false otherwise\n */\nexport function isValidOrderBy(orderBy: string): boolean {\n // Normalize to lowercase for case-insensitive comparison\n const normalized = orderBy.trim().toLowerCase();\n return VALID_ORDER_BY_VALUES.includes(normalized);\n}\n\n/**\n * Validates list attestations input\n *\n * @param input - The list attestations input to validate\n * @throws Error if validation fails\n */\nexport function validateListAttestationsInput(input: ListAttestationsInput): void {\n // Validate limit\n if (input.limit !== undefined) {\n if (input.limit < 1 || input.limit > 5000) {\n throw new Error('limit must be between 1 and 5000');\n }\n }\n\n // Validate offset\n if (input.offset !== undefined) {\n if (input.offset < 0) {\n throw new Error('offset must be non-negative');\n }\n }\n\n // Validate requester length\n if (input.requester !== undefined) {\n if (input.requester.length !== 20) {\n throw new Error('requester must be exactly 20 bytes');\n }\n }\n\n // Validate orderBy\n if (input.orderBy !== undefined) {\n if (!isValidOrderBy(input.orderBy)) {\n throw new Error(\n `Invalid orderBy value. Must be one of: ${VALID_ORDER_BY_VALUES.slice(0, 4).join(', ')}`\n );\n }\n }\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('validateAttestationRequest', () => {\n it('should accept valid input', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000000,\n })\n ).not.toThrow();\n });\n\n it('should reject invalid data_provider length', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xinvalid',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must be 0x-prefixed 40 hex characters');\n });\n\n it('should reject data_provider without 0x prefix', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '4710a8d8f0d845da110086812a32de6d90d7ff5c00',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must start with 0x prefix');\n });\n\n it('should reject data_provider with invalid hex', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xGGGGa8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must contain valid hex characters');\n });\n\n it('should reject short stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'short',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject long stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai00000000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject empty action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: '',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject whitespace-only action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: ' ',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject encryptSig=true', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: true,\n maxFee: 1000,\n })\n ).toThrow('encryption not implemented in MVP');\n });\n\n it('should reject negative maxFee', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: -1,\n })\n ).toThrow('max_fee must be non-negative');\n });\n });\n\n describe('isValidOrderBy', () => {\n it('should accept valid lowercase orderBy', () => {\n expect(isValidOrderBy('created_height asc')).toBe(true);\n expect(isValidOrderBy('created_height desc')).toBe(true);\n expect(isValidOrderBy('signed_height asc')).toBe(true);\n expect(isValidOrderBy('signed_height desc')).toBe(true);\n });\n\n it('should accept valid uppercase orderBy', () => {\n expect(isValidOrderBy('created_height ASC')).toBe(true);\n expect(isValidOrderBy('created_height DESC')).toBe(true);\n expect(isValidOrderBy('signed_height ASC')).toBe(true);\n expect(isValidOrderBy('signed_height DESC')).toBe(true);\n });\n\n it('should accept mixed case and trim whitespace', () => {\n expect(isValidOrderBy(' created_height ASC ')).toBe(true);\n expect(isValidOrderBy('Created_Height Desc')).toBe(true);\n expect(isValidOrderBy('SIGNED_HEIGHT asc')).toBe(true);\n expect(isValidOrderBy(' signed_height DESC ')).toBe(true);\n });\n\n it('should reject invalid orderBy', () => {\n expect(isValidOrderBy('invalid')).toBe(false);\n expect(isValidOrderBy('created_height')).toBe(false);\n expect(isValidOrderBy('created_height ascending')).toBe(false);\n expect(isValidOrderBy('')).toBe(false);\n });\n });\n\n describe('validateListAttestationsInput', () => {\n it('should accept valid input with all fields', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(20),\n limit: 100,\n offset: 0,\n orderBy: 'created_height desc',\n })\n ).not.toThrow();\n });\n\n it('should accept valid input with no optional fields', () => {\n expect(() => validateListAttestationsInput({})).not.toThrow();\n });\n\n it('should reject limit < 1', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 0,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject limit > 5000', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 5001,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject negative offset', () => {\n expect(() =>\n validateListAttestationsInput({\n offset: -1,\n })\n ).toThrow('offset must be non-negative');\n });\n\n it('should reject requester != 20 bytes (too long)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(21),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject requester != 20 bytes (too short)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(19),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject invalid orderBy', () => {\n expect(() =>\n validateListAttestationsInput({\n orderBy: 'invalid',\n })\n ).toThrow('Invalid orderBy value');\n });\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -185,25 +185,31 @@ function parseAttestationRow(row, idx) {
185
185
  let requestTxId;
186
186
  let attestationHash;
187
187
  let requester;
188
+ let dataProvider;
189
+ let streamId;
188
190
  let createdHeight;
189
191
  let signedHeight;
190
192
  let encryptSig;
191
193
  if (Array.isArray(row)) {
192
- if (row.length < 6) {
194
+ if (row.length < 8) {
193
195
  throw new Error(
194
- `Row ${idx}: expected 6 columns, got ${row.length}`
196
+ `Row ${idx}: expected 8 columns, got ${row.length}`
195
197
  );
196
198
  }
197
199
  requestTxId = row[0];
198
200
  attestationHash = decodeBytea(row[1], idx, "attestation_hash");
199
201
  requester = decodeBytea(row[2], idx, "requester");
200
- createdHeight = parseInt(row[3], 10);
201
- signedHeight = row[4] !== null ? parseInt(row[4], 10) : null;
202
- encryptSig = row[5];
202
+ dataProvider = row[3];
203
+ streamId = row[4];
204
+ createdHeight = parseInt(row[5], 10);
205
+ signedHeight = row[6] !== null ? parseInt(row[6], 10) : null;
206
+ encryptSig = row[7];
203
207
  } else {
204
208
  requestTxId = row.request_tx_id;
205
209
  attestationHash = decodeBytea(row.attestation_hash, idx, "attestation_hash");
206
210
  requester = decodeBytea(row.requester, idx, "requester");
211
+ dataProvider = row.data_provider;
212
+ streamId = row.stream_id;
207
213
  createdHeight = parseInt(row.created_height, 10);
208
214
  signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;
209
215
  encryptSig = row.encrypt_sig;
@@ -212,6 +218,8 @@ function parseAttestationRow(row, idx) {
212
218
  requestTxId,
213
219
  attestationHash,
214
220
  requester,
221
+ dataProvider,
222
+ streamId,
215
223
  createdHeight,
216
224
  signedHeight,
217
225
  encryptSig
@@ -272,6 +280,8 @@ if (import.meta.vitest) {
272
280
  "tx123",
273
281
  Buffer.from([1, 2, 3]).toString("base64"),
274
282
  Buffer.from([4, 5, 6]).toString("base64"),
283
+ "0x4710a8d8f0d845da110086812a32de6d90d7ff5c",
284
+ "stai0000000000000000000000000000",
275
285
  "100",
276
286
  "200",
277
287
  true
@@ -280,6 +290,8 @@ if (import.meta.vitest) {
280
290
  expect(metadata.requestTxId).toBe("tx123");
281
291
  expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);
282
292
  expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);
293
+ expect(metadata.dataProvider).toBe("0x4710a8d8f0d845da110086812a32de6d90d7ff5c");
294
+ expect(metadata.streamId).toBe("stai0000000000000000000000000000");
283
295
  expect(metadata.createdHeight).toBe(100);
284
296
  expect(metadata.signedHeight).toBe(200);
285
297
  expect(metadata.encryptSig).toBe(true);
@@ -289,6 +301,8 @@ if (import.meta.vitest) {
289
301
  request_tx_id: "tx456",
290
302
  attestation_hash: Buffer.from([7, 8, 9]).toString("base64"),
291
303
  requester: Buffer.from([10, 11, 12]).toString("base64"),
304
+ data_provider: "0x1234567890123456789012345678901234567890",
305
+ stream_id: "stbx0000000000000000000000000000",
292
306
  created_height: "300",
293
307
  signed_height: null,
294
308
  encrypt_sig: false
@@ -297,6 +311,8 @@ if (import.meta.vitest) {
297
311
  expect(metadata.requestTxId).toBe("tx456");
298
312
  expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);
299
313
  expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);
314
+ expect(metadata.dataProvider).toBe("0x1234567890123456789012345678901234567890");
315
+ expect(metadata.streamId).toBe("stbx0000000000000000000000000000");
300
316
  expect(metadata.createdHeight).toBe(300);
301
317
  expect(metadata.signedHeight).toBe(null);
302
318
  expect(metadata.encryptSig).toBe(false);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/attestationAction.ts"],
4
- "sourcesContent": ["/**\n * Attestation action implementation\n *\n * This module provides methods for requesting, retrieving, and listing attestations.\n * Attestations are cryptographically signed proofs of query results that can be\n * consumed by smart contracts and external applications.\n */\n\nimport { Types, Utils } from '@trufnetwork/kwil-js';\nimport { Action } from './action';\nimport {\n RequestAttestationInput,\n RequestAttestationResult,\n GetSignedAttestationInput,\n SignedAttestationResult,\n ListAttestationsInput,\n AttestationMetadata,\n validateAttestationRequest,\n validateListAttestationsInput,\n} from '../types/attestation';\nimport { encodeActionArgs } from '../util/AttestationEncoding';\n\n/**\n * AttestationAction provides methods for working with data attestations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be used in smart contracts.\n *\n * @example\n * ```typescript\n * const client = new NodeTNClient({ ... });\n * const attestationAction = client.loadAttestationAction();\n *\n * // Request an attestation\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [dataProvider, streamId, fromTime, toTime, null, false],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n *\n * // Wait for signing (1-2 blocks)\n * await new Promise(resolve => setTimeout(resolve, 10000));\n *\n * // Retrieve signed attestation\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: result.requestTxId,\n * });\n * ```\n */\nexport class AttestationAction extends Action {\n /**\n * Request a signed attestation of query results\n *\n * This submits a transaction requesting that validators execute a query\n * and sign the results. The leader validator will sign the attestation\n * asynchronously (typically 1-2 blocks later).\n *\n * @param input - Attestation request parameters\n * @returns Promise resolving to request result with transaction ID\n * @throws Error if validation fails or transaction fails\n *\n * @example\n * ```typescript\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [\n * \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * \"stai0000000000000000000000000000\",\n * Math.floor(Date.now() / 1000) - 86400, // 1 day ago\n * Math.floor(Date.now() / 1000),\n * null,\n * false,\n * ],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n * console.log(`Request TX ID: ${result.requestTxId}`);\n * ```\n */\n async requestAttestation(\n input: RequestAttestationInput\n ): Promise<RequestAttestationResult> {\n // Validate input\n validateAttestationRequest(input);\n\n // Encode arguments\n const argsBytes = encodeActionArgs(input.args);\n\n // Prepare named parameters for request_attestation action\n // Note: maxFee must be a string with NUMERIC type to encode as NUMERIC(788,0) for wei amounts\n const params: Types.NamedParams[] = [{\n $data_provider: input.dataProvider,\n $stream_id: input.streamId,\n $action_name: input.actionName,\n $args_bytes: argsBytes,\n $encrypt_sig: input.encryptSig,\n $max_fee: input.maxFee.toString(),\n }];\n\n // Specify types - maxFee needs NUMERIC(78,0) for large wei amounts\n const types = {\n $max_fee: Utils.DataType.Numeric(78, 0),\n };\n\n // Execute request_attestation action\n const result = await this.executeWithNamedParams('request_attestation', params, types);\n\n // Check for errors\n if (!result.data?.tx_hash) {\n throw new Error(\n 'Failed to request attestation: no transaction hash returned'\n );\n }\n\n // Return the 64-char hex tx_hash\n return {\n requestTxId: result.data.tx_hash,\n };\n }\n\n /**\n * Retrieve a complete signed attestation payload\n *\n * This fetches the signed attestation payload for a given request transaction ID.\n * The attestation must have been signed by the leader validator first.\n *\n * If the attestation is not yet signed, this will throw an error. Clients should\n * poll with exponential backoff or wait for 1-2 blocks after requesting.\n *\n * @param input - Request transaction ID\n * @returns Promise resolving to signed attestation payload\n * @throws Error if attestation not found or not yet signed\n *\n * @example\n * ```typescript\n * // Poll for signature\n * for (let i = 0; i < 15; i++) {\n * try {\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: \"0x123...\",\n * });\n * console.log(`Payload: ${Buffer.from(signed.payload).toString('hex')}`);\n * break;\n * } catch (e) {\n * await new Promise(resolve => setTimeout(resolve, 2000));\n * }\n * }\n * ```\n */\n async getSignedAttestation(\n input: GetSignedAttestationInput\n ): Promise<SignedAttestationResult> {\n // Validate and normalize input\n const trimmed = input.requestTxId?.trim() || '';\n if (trimmed === '') {\n throw new Error('request_tx_id is required');\n }\n\n // Strip optional \"0x\" prefix and lowercase for normalization\n const normalizedRequestTxId = trimmed.startsWith('0x')\n ? trimmed.slice(2).toLowerCase()\n : trimmed.toLowerCase();\n\n // Call get_signed_attestation view action\n const result = await this.call<Array<{ payload: string | Uint8Array }>>(\n 'get_signed_attestation',\n { $request_tx_id: normalizedRequestTxId }\n );\n\n // Extract the right value from Either, or throw if Left\n const data = result.throw();\n\n // The action returns an array of rows - extract the first row\n if (!data || !Array.isArray(data) || data.length === 0) {\n throw new Error('No attestation found for request_tx_id - may not exist or is not yet signed');\n }\n\n const row = data[0];\n if (!row || !row.payload) {\n throw new Error('No payload in attestation row');\n }\n\n // Decode base64 to bytes\n let payloadBytes: Uint8Array;\n const payloadValue = row.payload;\n\n if (typeof payloadValue === 'string') {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n payloadBytes = new Uint8Array(Buffer.from(payloadValue, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(payloadValue);\n payloadBytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n payloadBytes[i] = binaryString.charCodeAt(i);\n }\n }\n } else if (payloadValue instanceof Uint8Array) {\n // Already decoded\n payloadBytes = payloadValue;\n } else {\n throw new Error(`Unexpected payload type: ${typeof payloadValue}`);\n }\n\n return {\n payload: payloadBytes,\n };\n }\n\n /**\n * List attestation metadata with optional filtering\n *\n * This returns metadata for attestations, optionally filtered by requester address or request transaction ID.\n * Supports pagination and sorting.\n *\n * @param input - Filter and pagination parameters\n * @returns Promise resolving to array of attestation metadata\n * @throws Error if parameters are invalid\n *\n * @example\n * ```typescript\n * // List my recent attestations\n * const myAddress = new Uint8Array(Buffer.from(wallet.address.slice(2), 'hex'));\n * const attestations = await attestationAction.listAttestations({\n * requester: myAddress,\n * limit: 10,\n * offset: 0,\n * orderBy: \"created_height desc\",\n * });\n *\n * attestations.forEach(att => {\n * console.log(`TX: ${att.requestTxId}, Height: ${att.createdHeight}`);\n * });\n * ```\n */\n async listAttestations(\n input: ListAttestationsInput\n ): Promise<AttestationMetadata[]> {\n // Validate input\n validateListAttestationsInput(input);\n\n // Set defaults\n const limit = input.limit ?? 5000;\n const offset = input.offset ?? 0;\n\n // Prepare parameters for list_attestations view action\n // Note: Empty Uint8Array represents BYTEA NULL (handled by kwil-js 0.9.10+)\n const params: Types.NamedParams = {\n $requester: input.requester ?? new Uint8Array(0),\n $request_tx_id: input.requestTxId ?? null,\n $limit: limit,\n $offset: offset,\n $order_by: input.orderBy ?? null,\n };\n\n // Call list_attestations view action\n const result = await this.call<any[]>('list_attestations', params);\n\n // Check for errors\n if (result.isLeft()) {\n throw new Error(\n `Failed to list attestations: HTTP status ${result.value}`\n );\n }\n\n // Extract the right value from Either\n // Note: result.value might be a getter function, so call it if needed\n const rightValue = typeof result.value === 'function' ? result.value() : result.value;\n const rows = Array.isArray(rightValue) ? rightValue : [];\n\n // If no rows, return empty array\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // Parse rows into AttestationMetadata\n return rows.map((row: any, idx: number) => parseAttestationRow(row, idx));\n }\n}\n\n/**\n * Parse a single row from list_attestations result into AttestationMetadata\n *\n * Expected columns (in order):\n * 0. request_tx_id (TEXT)\n * 1. attestation_hash (BYTEA)\n * 2. requester (BYTEA)\n * 3. created_height (INT8)\n * 4. signed_height (INT8, nullable)\n * 5. encrypt_sig (BOOLEAN)\n */\nfunction parseAttestationRow(row: any, idx: number): AttestationMetadata {\n // kwil-js returns rows as objects with column names as keys\n // or as arrays depending on the query format\n let requestTxId: string;\n let attestationHash: Uint8Array;\n let requester: Uint8Array;\n let createdHeight: number;\n let signedHeight: number | null;\n let encryptSig: boolean;\n\n // Handle both array and object formats\n if (Array.isArray(row)) {\n // Array format: [col0, col1, col2, ...]\n if (row.length < 6) {\n throw new Error(\n `Row ${idx}: expected 6 columns, got ${row.length}`\n );\n }\n\n requestTxId = row[0];\n attestationHash = decodeBytea(row[1], idx, 'attestation_hash');\n requester = decodeBytea(row[2], idx, 'requester');\n createdHeight = parseInt(row[3], 10);\n signedHeight = row[4] !== null ? parseInt(row[4], 10) : null;\n encryptSig = row[5];\n } else {\n // Object format: { request_tx_id: ..., attestation_hash: ..., ... }\n requestTxId = row.request_tx_id;\n attestationHash = decodeBytea(row.attestation_hash, idx, 'attestation_hash');\n requester = decodeBytea(row.requester, idx, 'requester');\n createdHeight = parseInt(row.created_height, 10);\n signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;\n encryptSig = row.encrypt_sig;\n }\n\n return {\n requestTxId,\n attestationHash,\n requester,\n createdHeight,\n signedHeight,\n encryptSig,\n };\n}\n\n/**\n * Decode a BYTEA column from base64\n */\nfunction decodeBytea(value: any, rowIdx: number, colName: string): Uint8Array {\n if (value === null || value === undefined) {\n throw new Error(`Row ${rowIdx}: ${colName} is null or undefined`);\n }\n\n // If already Uint8Array, return as-is\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // If string, decode from base64\n if (typeof value === 'string') {\n try {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(value);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n } catch (err) {\n throw new Error(\n `Row ${rowIdx}: failed to decode ${colName} as base64: ${err}`\n );\n }\n }\n\n throw new Error(\n `Row ${rowIdx}: expected ${colName} to be string or Uint8Array, got ${typeof value}`\n );\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('decodeBytea', () => {\n it('should decode base64 string', () => {\n const base64 = Buffer.from([1, 2, 3, 4]).toString('base64');\n const decoded = decodeBytea(base64, 0, 'test');\n expect(Array.from(decoded)).toEqual([1, 2, 3, 4]);\n });\n\n it('should return Uint8Array as-is', () => {\n const bytes = new Uint8Array([1, 2, 3, 4]);\n const decoded = decodeBytea(bytes, 0, 'test');\n expect(decoded).toBe(bytes);\n });\n\n it('should throw on null', () => {\n expect(() => decodeBytea(null, 0, 'test')).toThrow('null or undefined');\n });\n\n it('should throw on invalid type', () => {\n expect(() => decodeBytea(123, 0, 'test')).toThrow('expected test to be string or Uint8Array');\n });\n });\n\n describe('parseAttestationRow', () => {\n it('should parse array format row', () => {\n const row = [\n 'tx123',\n Buffer.from([1, 2, 3]).toString('base64'),\n Buffer.from([4, 5, 6]).toString('base64'),\n '100',\n '200',\n true,\n ];\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx123');\n expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);\n expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);\n expect(metadata.createdHeight).toBe(100);\n expect(metadata.signedHeight).toBe(200);\n expect(metadata.encryptSig).toBe(true);\n });\n\n it('should parse object format row', () => {\n const row = {\n request_tx_id: 'tx456',\n attestation_hash: Buffer.from([7, 8, 9]).toString('base64'),\n requester: Buffer.from([10, 11, 12]).toString('base64'),\n created_height: '300',\n signed_height: null,\n encrypt_sig: false,\n };\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx456');\n expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);\n expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);\n expect(metadata.createdHeight).toBe(300);\n expect(metadata.signedHeight).toBe(null);\n expect(metadata.encryptSig).toBe(false);\n });\n });\n}\n"],
5
- "mappings": ";AAQA,SAAgB,aAAa;AAC7B,SAAS,cAAc;AACvB;AAAA,EAOE;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB;AAgC1B,IAAM,oBAAN,cAAgC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgC5C,MAAM,mBACJ,OACmC;AAEnC,+BAA2B,KAAK;AAGhC,UAAM,YAAY,iBAAiB,MAAM,IAAI;AAI7C,UAAM,SAA8B,CAAC;AAAA,MACnC,gBAAgB,MAAM;AAAA,MACtB,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,aAAa;AAAA,MACb,cAAc,MAAM;AAAA,MACpB,UAAU,MAAM,OAAO,SAAS;AAAA,IAClC,CAAC;AAGD,UAAM,QAAQ;AAAA,MACZ,UAAU,MAAM,SAAS,QAAQ,IAAI,CAAC;AAAA,IACxC;AAGA,UAAM,SAAS,MAAM,KAAK,uBAAuB,uBAAuB,QAAQ,KAAK;AAGrF,QAAI,CAAC,OAAO,MAAM,SAAS;AACzB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,aAAa,OAAO,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BA,MAAM,qBACJ,OACkC;AAElC,UAAM,UAAU,MAAM,aAAa,KAAK,KAAK;AAC7C,QAAI,YAAY,IAAI;AAClB,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAGA,UAAM,wBAAwB,QAAQ,WAAW,IAAI,IACjD,QAAQ,MAAM,CAAC,EAAE,YAAY,IAC7B,QAAQ,YAAY;AAGxB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,EAAE,gBAAgB,sBAAsB;AAAA,IAC1C;AAGA,UAAM,OAAO,OAAO,MAAM;AAG1B,QAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AACtD,YAAM,IAAI,MAAM,6EAA6E;AAAA,IAC/F;AAEA,UAAM,MAAM,KAAK,CAAC;AAClB,QAAI,CAAC,OAAO,CAAC,IAAI,SAAS;AACxB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAGA,QAAI;AACJ,UAAM,eAAe,IAAI;AAEzB,QAAI,OAAO,iBAAiB,UAAU;AAEpC,UAAI,OAAO,WAAW,aAAa;AACjC,uBAAe,IAAI,WAAW,OAAO,KAAK,cAAc,QAAQ,CAAC;AAAA,MACnE,OAAO;AAEL,cAAM,eAAe,KAAK,YAAY;AACtC,uBAAe,IAAI,WAAW,aAAa,MAAM;AACjD,iBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,uBAAa,CAAC,IAAI,aAAa,WAAW,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,IACF,WAAW,wBAAwB,YAAY;AAE7C,qBAAe;AAAA,IACjB,OAAO;AACL,YAAM,IAAI,MAAM,4BAA4B,OAAO,YAAY,EAAE;AAAA,IACnE;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BA,MAAM,iBACJ,OACgC;AAEhC,kCAA8B,KAAK;AAGnC,UAAM,QAAQ,MAAM,SAAS;AAC7B,UAAM,SAAS,MAAM,UAAU;AAI/B,UAAM,SAA4B;AAAA,MAChC,YAAY,MAAM,aAAa,IAAI,WAAW,CAAC;AAAA,MAC/C,gBAAgB,MAAM,eAAe;AAAA,MACrC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW,MAAM,WAAW;AAAA,IAC9B;AAGA,UAAM,SAAS,MAAM,KAAK,KAAY,qBAAqB,MAAM;AAGjE,QAAI,OAAO,OAAO,GAAG;AACnB,YAAM,IAAI;AAAA,QACR,4CAA4C,OAAO,KAAK;AAAA,MAC1D;AAAA,IACF;AAIA,UAAM,aAAa,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,IAAI,OAAO;AAChF,UAAM,OAAO,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC;AAGvD,QAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,aAAO,CAAC;AAAA,IACV;AAGA,WAAO,KAAK,IAAI,CAAC,KAAU,QAAgB,oBAAoB,KAAK,GAAG,CAAC;AAAA,EAC1E;AACF;AAaA,SAAS,oBAAoB,KAAU,KAAkC;AAGvE,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAGJ,MAAI,MAAM,QAAQ,GAAG,GAAG;AAEtB,QAAI,IAAI,SAAS,GAAG;AAClB,YAAM,IAAI;AAAA,QACR,OAAO,GAAG,6BAA6B,IAAI,MAAM;AAAA,MACnD;AAAA,IACF;AAEA,kBAAc,IAAI,CAAC;AACnB,sBAAkB,YAAY,IAAI,CAAC,GAAG,KAAK,kBAAkB;AAC7D,gBAAY,YAAY,IAAI,CAAC,GAAG,KAAK,WAAW;AAChD,oBAAgB,SAAS,IAAI,CAAC,GAAG,EAAE;AACnC,mBAAe,IAAI,CAAC,MAAM,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI;AACxD,iBAAa,IAAI,CAAC;AAAA,EACpB,OAAO;AAEL,kBAAc,IAAI;AAClB,sBAAkB,YAAY,IAAI,kBAAkB,KAAK,kBAAkB;AAC3E,gBAAY,YAAY,IAAI,WAAW,KAAK,WAAW;AACvD,oBAAgB,SAAS,IAAI,gBAAgB,EAAE;AAC/C,mBAAe,IAAI,kBAAkB,OAAO,SAAS,IAAI,eAAe,EAAE,IAAI;AAC9E,iBAAa,IAAI;AAAA,EACnB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAKA,SAAS,YAAY,OAAY,QAAgB,SAA6B;AAC5E,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,UAAM,IAAI,MAAM,OAAO,MAAM,KAAK,OAAO,uBAAuB;AAAA,EAClE;AAGA,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI;AAEF,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,IAAI,WAAW,OAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,MACpD,OAAO;AAEL,cAAM,eAAe,KAAK,KAAK;AAC/B,cAAM,QAAQ,IAAI,WAAW,aAAa,MAAM;AAChD,iBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,gBAAM,CAAC,IAAI,aAAa,WAAW,CAAC;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,IAAI;AAAA,QACR,OAAO,MAAM,sBAAsB,OAAO,eAAe,GAAG;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,OAAO,MAAM,cAAc,OAAO,oCAAoC,OAAO,KAAK;AAAA,EACpF;AACF;AAGA,IAAI,YAAY,QAAQ;AACtB,QAAM,EAAE,UAAU,IAAI,OAAO,IAAI,YAAY;AAE7C,WAAS,eAAe,MAAM;AAC5B,OAAG,+BAA+B,MAAM;AACtC,YAAM,SAAS,OAAO,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,QAAQ;AAC1D,YAAM,UAAU,YAAY,QAAQ,GAAG,MAAM;AAC7C,aAAO,MAAM,KAAK,OAAO,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,IAClD,CAAC;AAED,OAAG,kCAAkC,MAAM;AACzC,YAAM,QAAQ,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACzC,YAAM,UAAU,YAAY,OAAO,GAAG,MAAM;AAC5C,aAAO,OAAO,EAAE,KAAK,KAAK;AAAA,IAC5B,CAAC;AAED,OAAG,wBAAwB,MAAM;AAC/B,aAAO,MAAM,YAAY,MAAM,GAAG,MAAM,CAAC,EAAE,QAAQ,mBAAmB;AAAA,IACxE,CAAC;AAED,OAAG,gCAAgC,MAAM;AACvC,aAAO,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,EAAE,QAAQ,0CAA0C;AAAA,IAC9F,CAAC;AAAA,EACH,CAAC;AAED,WAAS,uBAAuB,MAAM;AACpC,OAAG,iCAAiC,MAAM;AACxC,YAAM,MAAM;AAAA,QACV;AAAA,QACA,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,QAAQ;AAAA,QACxC,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,QAAQ;AAAA,QACxC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,YAAM,WAAW,oBAAoB,KAAK,CAAC;AAE3C,aAAO,SAAS,WAAW,EAAE,KAAK,OAAO;AACzC,aAAO,MAAM,KAAK,SAAS,eAAe,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9D,aAAO,MAAM,KAAK,SAAS,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;AACxD,aAAO,SAAS,aAAa,EAAE,KAAK,GAAG;AACvC,aAAO,SAAS,YAAY,EAAE,KAAK,GAAG;AACtC,aAAO,SAAS,UAAU,EAAE,KAAK,IAAI;AAAA,IACvC,CAAC;AAED,OAAG,kCAAkC,MAAM;AACzC,YAAM,MAAM;AAAA,QACV,eAAe;AAAA,QACf,kBAAkB,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS,QAAQ;AAAA,QAC1D,WAAW,OAAO,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,SAAS,QAAQ;AAAA,QACtD,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa;AAAA,MACf;AAEA,YAAM,WAAW,oBAAoB,KAAK,CAAC;AAE3C,aAAO,SAAS,WAAW,EAAE,KAAK,OAAO;AACzC,aAAO,MAAM,KAAK,SAAS,eAAe,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9D,aAAO,MAAM,KAAK,SAAS,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3D,aAAO,SAAS,aAAa,EAAE,KAAK,GAAG;AACvC,aAAO,SAAS,YAAY,EAAE,KAAK,IAAI;AACvC,aAAO,SAAS,UAAU,EAAE,KAAK,KAAK;AAAA,IACxC,CAAC;AAAA,EACH,CAAC;AACH;",
4
+ "sourcesContent": ["/**\n * Attestation action implementation\n *\n * This module provides methods for requesting, retrieving, and listing attestations.\n * Attestations are cryptographically signed proofs of query results that can be\n * consumed by smart contracts and external applications.\n */\n\nimport { Types, Utils } from '@trufnetwork/kwil-js';\nimport { Action } from './action';\nimport {\n RequestAttestationInput,\n RequestAttestationResult,\n GetSignedAttestationInput,\n SignedAttestationResult,\n ListAttestationsInput,\n AttestationMetadata,\n validateAttestationRequest,\n validateListAttestationsInput,\n} from '../types/attestation';\nimport { encodeActionArgs } from '../util/AttestationEncoding';\n\n/**\n * AttestationAction provides methods for working with data attestations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be used in smart contracts.\n *\n * @example\n * ```typescript\n * const client = new NodeTNClient({ ... });\n * const attestationAction = client.loadAttestationAction();\n *\n * // Request an attestation\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [dataProvider, streamId, fromTime, toTime, null, false],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n *\n * // Wait for signing (1-2 blocks)\n * await new Promise(resolve => setTimeout(resolve, 10000));\n *\n * // Retrieve signed attestation\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: result.requestTxId,\n * });\n * ```\n */\nexport class AttestationAction extends Action {\n /**\n * Request a signed attestation of query results\n *\n * This submits a transaction requesting that validators execute a query\n * and sign the results. The leader validator will sign the attestation\n * asynchronously (typically 1-2 blocks later).\n *\n * @param input - Attestation request parameters\n * @returns Promise resolving to request result with transaction ID\n * @throws Error if validation fails or transaction fails\n *\n * @example\n * ```typescript\n * const result = await attestationAction.requestAttestation({\n * dataProvider: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * streamId: \"stai0000000000000000000000000000\",\n * actionName: \"get_record\",\n * args: [\n * \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\",\n * \"stai0000000000000000000000000000\",\n * Math.floor(Date.now() / 1000) - 86400, // 1 day ago\n * Math.floor(Date.now() / 1000),\n * null,\n * false,\n * ],\n * encryptSig: false,\n * maxFee: 1000000,\n * });\n * console.log(`Request TX ID: ${result.requestTxId}`);\n * ```\n */\n async requestAttestation(\n input: RequestAttestationInput\n ): Promise<RequestAttestationResult> {\n // Validate input\n validateAttestationRequest(input);\n\n // Encode arguments\n const argsBytes = encodeActionArgs(input.args);\n\n // Prepare named parameters for request_attestation action\n // Note: maxFee must be a string with NUMERIC type to encode as NUMERIC(788,0) for wei amounts\n const params: Types.NamedParams[] = [{\n $data_provider: input.dataProvider,\n $stream_id: input.streamId,\n $action_name: input.actionName,\n $args_bytes: argsBytes,\n $encrypt_sig: input.encryptSig,\n $max_fee: input.maxFee.toString(),\n }];\n\n // Specify types - maxFee needs NUMERIC(78,0) for large wei amounts\n const types = {\n $max_fee: Utils.DataType.Numeric(78, 0),\n };\n\n // Execute request_attestation action\n const result = await this.executeWithNamedParams('request_attestation', params, types);\n\n // Check for errors\n if (!result.data?.tx_hash) {\n throw new Error(\n 'Failed to request attestation: no transaction hash returned'\n );\n }\n\n // Return the 64-char hex tx_hash\n return {\n requestTxId: result.data.tx_hash,\n };\n }\n\n /**\n * Retrieve a complete signed attestation payload\n *\n * This fetches the signed attestation payload for a given request transaction ID.\n * The attestation must have been signed by the leader validator first.\n *\n * If the attestation is not yet signed, this will throw an error. Clients should\n * poll with exponential backoff or wait for 1-2 blocks after requesting.\n *\n * @param input - Request transaction ID\n * @returns Promise resolving to signed attestation payload\n * @throws Error if attestation not found or not yet signed\n *\n * @example\n * ```typescript\n * // Poll for signature\n * for (let i = 0; i < 15; i++) {\n * try {\n * const signed = await attestationAction.getSignedAttestation({\n * requestTxId: \"0x123...\",\n * });\n * console.log(`Payload: ${Buffer.from(signed.payload).toString('hex')}`);\n * break;\n * } catch (e) {\n * await new Promise(resolve => setTimeout(resolve, 2000));\n * }\n * }\n * ```\n */\n async getSignedAttestation(\n input: GetSignedAttestationInput\n ): Promise<SignedAttestationResult> {\n // Validate and normalize input\n const trimmed = input.requestTxId?.trim() || '';\n if (trimmed === '') {\n throw new Error('request_tx_id is required');\n }\n\n // Strip optional \"0x\" prefix and lowercase for normalization\n const normalizedRequestTxId = trimmed.startsWith('0x')\n ? trimmed.slice(2).toLowerCase()\n : trimmed.toLowerCase();\n\n // Call get_signed_attestation view action\n const result = await this.call<Array<{ payload: string | Uint8Array }>>(\n 'get_signed_attestation',\n { $request_tx_id: normalizedRequestTxId }\n );\n\n // Extract the right value from Either, or throw if Left\n const data = result.throw();\n\n // The action returns an array of rows - extract the first row\n if (!data || !Array.isArray(data) || data.length === 0) {\n throw new Error('No attestation found for request_tx_id - may not exist or is not yet signed');\n }\n\n const row = data[0];\n if (!row || !row.payload) {\n throw new Error('No payload in attestation row');\n }\n\n // Decode base64 to bytes\n let payloadBytes: Uint8Array;\n const payloadValue = row.payload;\n\n if (typeof payloadValue === 'string') {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n payloadBytes = new Uint8Array(Buffer.from(payloadValue, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(payloadValue);\n payloadBytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n payloadBytes[i] = binaryString.charCodeAt(i);\n }\n }\n } else if (payloadValue instanceof Uint8Array) {\n // Already decoded\n payloadBytes = payloadValue;\n } else {\n throw new Error(`Unexpected payload type: ${typeof payloadValue}`);\n }\n\n return {\n payload: payloadBytes,\n };\n }\n\n /**\n * List attestation metadata with optional filtering\n *\n * This returns metadata for attestations, optionally filtered by requester address or request transaction ID.\n * Supports pagination and sorting.\n *\n * @param input - Filter and pagination parameters\n * @returns Promise resolving to array of attestation metadata\n * @throws Error if parameters are invalid\n *\n * @example\n * ```typescript\n * // List my recent attestations\n * const myAddress = new Uint8Array(Buffer.from(wallet.address.slice(2), 'hex'));\n * const attestations = await attestationAction.listAttestations({\n * requester: myAddress,\n * limit: 10,\n * offset: 0,\n * orderBy: \"created_height desc\",\n * });\n *\n * attestations.forEach(att => {\n * console.log(`TX: ${att.requestTxId}, Height: ${att.createdHeight}`);\n * });\n * ```\n */\n async listAttestations(\n input: ListAttestationsInput\n ): Promise<AttestationMetadata[]> {\n // Validate input\n validateListAttestationsInput(input);\n\n // Set defaults\n const limit = input.limit ?? 5000;\n const offset = input.offset ?? 0;\n\n // Prepare parameters for list_attestations view action\n // Note: Empty Uint8Array represents BYTEA NULL (handled by kwil-js 0.9.10+)\n const params: Types.NamedParams = {\n $requester: input.requester ?? new Uint8Array(0),\n $request_tx_id: input.requestTxId ?? null,\n $limit: limit,\n $offset: offset,\n $order_by: input.orderBy ?? null,\n };\n\n // Call list_attestations view action\n const result = await this.call<any[]>('list_attestations', params);\n\n // Check for errors\n if (result.isLeft()) {\n throw new Error(\n `Failed to list attestations: HTTP status ${result.value}`\n );\n }\n\n // Extract the right value from Either\n // Note: result.value might be a getter function, so call it if needed\n const rightValue = typeof result.value === 'function' ? result.value() : result.value;\n const rows = Array.isArray(rightValue) ? rightValue : [];\n\n // If no rows, return empty array\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // Parse rows into AttestationMetadata\n return rows.map((row: any, idx: number) => parseAttestationRow(row, idx));\n }\n}\n\n/**\n * Parse a single row from list_attestations result into AttestationMetadata\n *\n * Expected columns (in order):\n * 0. request_tx_id (TEXT)\n * 1. attestation_hash (BYTEA)\n * 2. requester (BYTEA)\n * 3. data_provider (TEXT)\n * 4. stream_id (TEXT)\n * 5. created_height (INT8)\n * 6. signed_height (INT8, nullable)\n * 7. encrypt_sig (BOOLEAN)\n */\nfunction parseAttestationRow(row: any, idx: number): AttestationMetadata {\n // kwil-js returns rows as objects with column names as keys\n // or as arrays depending on the query format\n let requestTxId: string;\n let attestationHash: Uint8Array;\n let requester: Uint8Array;\n let dataProvider: string;\n let streamId: string;\n let createdHeight: number;\n let signedHeight: number | null;\n let encryptSig: boolean;\n\n // Handle both array and object formats\n if (Array.isArray(row)) {\n // Array format: [col0, col1, col2, ...]\n if (row.length < 8) {\n throw new Error(\n `Row ${idx}: expected 8 columns, got ${row.length}`\n );\n }\n\n requestTxId = row[0];\n attestationHash = decodeBytea(row[1], idx, 'attestation_hash');\n requester = decodeBytea(row[2], idx, 'requester');\n dataProvider = row[3];\n streamId = row[4];\n createdHeight = parseInt(row[5], 10);\n signedHeight = row[6] !== null ? parseInt(row[6], 10) : null;\n encryptSig = row[7];\n } else {\n // Object format: { request_tx_id: ..., attestation_hash: ..., ... }\n requestTxId = row.request_tx_id;\n attestationHash = decodeBytea(row.attestation_hash, idx, 'attestation_hash');\n requester = decodeBytea(row.requester, idx, 'requester');\n dataProvider = row.data_provider;\n streamId = row.stream_id;\n createdHeight = parseInt(row.created_height, 10);\n signedHeight = row.signed_height !== null ? parseInt(row.signed_height, 10) : null;\n encryptSig = row.encrypt_sig;\n }\n\n return {\n requestTxId,\n attestationHash,\n requester,\n dataProvider,\n streamId,\n createdHeight,\n signedHeight,\n encryptSig,\n };\n}\n\n/**\n * Decode a BYTEA column from base64\n */\nfunction decodeBytea(value: any, rowIdx: number, colName: string): Uint8Array {\n if (value === null || value === undefined) {\n throw new Error(`Row ${rowIdx}: ${colName} is null or undefined`);\n }\n\n // If already Uint8Array, return as-is\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // If string, decode from base64\n if (typeof value === 'string') {\n try {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n } else {\n // Browser environment\n const binaryString = atob(value);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n } catch (err) {\n throw new Error(\n `Row ${rowIdx}: failed to decode ${colName} as base64: ${err}`\n );\n }\n }\n\n throw new Error(\n `Row ${rowIdx}: expected ${colName} to be string or Uint8Array, got ${typeof value}`\n );\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('decodeBytea', () => {\n it('should decode base64 string', () => {\n const base64 = Buffer.from([1, 2, 3, 4]).toString('base64');\n const decoded = decodeBytea(base64, 0, 'test');\n expect(Array.from(decoded)).toEqual([1, 2, 3, 4]);\n });\n\n it('should return Uint8Array as-is', () => {\n const bytes = new Uint8Array([1, 2, 3, 4]);\n const decoded = decodeBytea(bytes, 0, 'test');\n expect(decoded).toBe(bytes);\n });\n\n it('should throw on null', () => {\n expect(() => decodeBytea(null, 0, 'test')).toThrow('null or undefined');\n });\n\n it('should throw on invalid type', () => {\n expect(() => decodeBytea(123, 0, 'test')).toThrow('expected test to be string or Uint8Array');\n });\n });\n\n describe('parseAttestationRow', () => {\n it('should parse array format row', () => {\n const row = [\n 'tx123',\n Buffer.from([1, 2, 3]).toString('base64'),\n Buffer.from([4, 5, 6]).toString('base64'),\n '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n 'stai0000000000000000000000000000',\n '100',\n '200',\n true,\n ];\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx123');\n expect(Array.from(metadata.attestationHash)).toEqual([1, 2, 3]);\n expect(Array.from(metadata.requester)).toEqual([4, 5, 6]);\n expect(metadata.dataProvider).toBe('0x4710a8d8f0d845da110086812a32de6d90d7ff5c');\n expect(metadata.streamId).toBe('stai0000000000000000000000000000');\n expect(metadata.createdHeight).toBe(100);\n expect(metadata.signedHeight).toBe(200);\n expect(metadata.encryptSig).toBe(true);\n });\n\n it('should parse object format row', () => {\n const row = {\n request_tx_id: 'tx456',\n attestation_hash: Buffer.from([7, 8, 9]).toString('base64'),\n requester: Buffer.from([10, 11, 12]).toString('base64'),\n data_provider: '0x1234567890123456789012345678901234567890',\n stream_id: 'stbx0000000000000000000000000000',\n created_height: '300',\n signed_height: null,\n encrypt_sig: false,\n };\n\n const metadata = parseAttestationRow(row, 0);\n\n expect(metadata.requestTxId).toBe('tx456');\n expect(Array.from(metadata.attestationHash)).toEqual([7, 8, 9]);\n expect(Array.from(metadata.requester)).toEqual([10, 11, 12]);\n expect(metadata.dataProvider).toBe('0x1234567890123456789012345678901234567890');\n expect(metadata.streamId).toBe('stbx0000000000000000000000000000');\n expect(metadata.createdHeight).toBe(300);\n expect(metadata.signedHeight).toBe(null);\n expect(metadata.encryptSig).toBe(false);\n });\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/attestation.ts"],
4
- "sourcesContent": ["/**\n * Type definitions for attestation operations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be consumed by smart contracts and\n * external applications.\n */\n\n/**\n * Input parameters for requesting an attestation\n */\nexport interface RequestAttestationInput {\n /**\n * Data provider address (0x-prefixed, 42 characters)\n * Example: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\"\n */\n dataProvider: string;\n\n /**\n * Stream ID (32 characters)\n * Example: \"stai0000000000000000000000000000\"\n */\n streamId: string;\n\n /**\n * Action name to attest (must be in allowlist)\n * Example: \"get_record\", \"get_index\"\n */\n actionName: string;\n\n /**\n * Action arguments (will be encoded)\n * Must match the signature of the action\n */\n args: any[];\n\n /**\n * Whether to encrypt the signature (must be false in MVP)\n * Future: ECIES encryption to requester's public key\n */\n encryptSig: boolean;\n\n /**\n * Maximum fee willing to pay (in wei, as NUMERIC(78,0))\n * Accepts number, string, or bigint for large values (up to 40 TRUF = 40e18 wei)\n * Transaction will abort if actual fee exceeds this\n * Accepts number, string, or bigint for large values\n */\n maxFee: number | string | bigint;\n}\n\n/**\n * Result of requesting an attestation\n */\nexport interface RequestAttestationResult {\n /**\n * Transaction ID for this attestation request\n * Use this to retrieve the signed attestation later\n */\n requestTxId: string;\n}\n\n/**\n * Input parameters for retrieving a signed attestation\n */\nexport interface GetSignedAttestationInput {\n /**\n * Transaction ID from request_attestation\n */\n requestTxId: string;\n}\n\n/**\n * Result of retrieving a signed attestation\n */\nexport interface SignedAttestationResult {\n /**\n * Complete attestation payload: canonical (8 fields) + signature\n *\n * Format: version | algo | height | provider | stream | action | args | result | signature\n *\n * This payload can be passed to EVM contracts for verification\n */\n payload: Uint8Array;\n}\n\n/**\n * Input parameters for listing attestations\n */\nexport interface ListAttestationsInput {\n /**\n * Optional: Filter by requester address (20 bytes)\n * If provided, only returns attestations requested by this address\n */\n requester?: Uint8Array;\n\n /**\n * Optional: Filter by request transaction ID\n * If provided, only returns attestations matching this transaction ID\n */\n requestTxId?: string;\n\n /**\n * Optional: Maximum number of results (1-5000, default 5000)\n */\n limit?: number;\n\n /**\n * Optional: Pagination offset (default 0)\n */\n offset?: number;\n\n /**\n * Optional: Sort order\n *\n * Allowed values:\n * - \"created_height asc\"\n * - \"created_height desc\"\n * - \"signed_height asc\"\n * - \"signed_height desc\"\n *\n * Case-insensitive\n */\n orderBy?: string;\n}\n\n/**\n * Metadata for a single attestation\n */\nexport interface AttestationMetadata {\n /**\n * Transaction ID for this attestation request\n */\n requestTxId: string;\n\n /**\n * Attestation hash (identifies this attestation)\n */\n attestationHash: Uint8Array;\n\n /**\n * Address of the requester (20 bytes)\n */\n requester: Uint8Array;\n\n /**\n * Block height when attestation was created\n */\n createdHeight: number;\n\n /**\n * Block height when attestation was signed (null if not yet signed)\n */\n signedHeight: number | null;\n\n /**\n * Whether signature is encrypted\n */\n encryptSig: boolean;\n}\n\n/**\n * Validates attestation request input\n *\n * @param input - The attestation request to validate\n * @throws Error if validation fails\n */\nexport function validateAttestationRequest(input: RequestAttestationInput): void {\n // Data provider validation\n if (input.dataProvider.length !== 42) {\n throw new Error(\n `data_provider must be 0x-prefixed 40 hex characters, got ${input.dataProvider.length} chars`\n );\n }\n\n if (!input.dataProvider.startsWith('0x')) {\n throw new Error('data_provider must start with 0x prefix');\n }\n\n // Validate hex after 0x prefix\n const hex = input.dataProvider.slice(2);\n if (!/^[0-9a-fA-F]{40}$/.test(hex)) {\n throw new Error('data_provider must contain valid hex characters after 0x prefix');\n }\n\n // Stream ID validation\n if (input.streamId.length !== 32) {\n throw new Error(`stream_id must be 32 characters, got ${input.streamId.length}`);\n }\n\n // Action name validation\n if (!input.actionName || input.actionName.trim() === '') {\n throw new Error('action_name cannot be empty');\n }\n\n // Encryption validation\n if (input.encryptSig) {\n throw new Error('encryption not implemented in MVP');\n }\n\n // Fee validation - handle number, string, or bigint\n const maxFeeNum = typeof input.maxFee === 'bigint'\n ? input.maxFee\n : typeof input.maxFee === 'string'\n ? BigInt(input.maxFee)\n : BigInt(Math.floor(input.maxFee));\n\n if (maxFeeNum < 0n) {\n throw new Error(`max_fee must be non-negative, got ${input.maxFee}`);\n }\n}\n\n/**\n * Whitelist of valid orderBy values (lowercase canonical form)\n */\nconst VALID_ORDER_BY_VALUES = [\n 'created_height asc',\n 'created_height desc',\n 'signed_height asc',\n 'signed_height desc',\n];\n\n/**\n * Validates orderBy parameter (case-insensitive)\n *\n * @param orderBy - The orderBy value to validate\n * @returns true if valid, false otherwise\n */\nexport function isValidOrderBy(orderBy: string): boolean {\n // Normalize to lowercase for case-insensitive comparison\n const normalized = orderBy.trim().toLowerCase();\n return VALID_ORDER_BY_VALUES.includes(normalized);\n}\n\n/**\n * Validates list attestations input\n *\n * @param input - The list attestations input to validate\n * @throws Error if validation fails\n */\nexport function validateListAttestationsInput(input: ListAttestationsInput): void {\n // Validate limit\n if (input.limit !== undefined) {\n if (input.limit < 1 || input.limit > 5000) {\n throw new Error('limit must be between 1 and 5000');\n }\n }\n\n // Validate offset\n if (input.offset !== undefined) {\n if (input.offset < 0) {\n throw new Error('offset must be non-negative');\n }\n }\n\n // Validate requester length\n if (input.requester !== undefined) {\n if (input.requester.length !== 20) {\n throw new Error('requester must be exactly 20 bytes');\n }\n }\n\n // Validate orderBy\n if (input.orderBy !== undefined) {\n if (!isValidOrderBy(input.orderBy)) {\n throw new Error(\n `Invalid orderBy value. Must be one of: ${VALID_ORDER_BY_VALUES.slice(0, 4).join(', ')}`\n );\n }\n }\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('validateAttestationRequest', () => {\n it('should accept valid input', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000000,\n })\n ).not.toThrow();\n });\n\n it('should reject invalid data_provider length', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xinvalid',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must be 0x-prefixed 40 hex characters');\n });\n\n it('should reject data_provider without 0x prefix', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '4710a8d8f0d845da110086812a32de6d90d7ff5c00',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must start with 0x prefix');\n });\n\n it('should reject data_provider with invalid hex', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xGGGGa8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must contain valid hex characters');\n });\n\n it('should reject short stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'short',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject long stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai00000000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject empty action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: '',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject whitespace-only action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: ' ',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject encryptSig=true', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: true,\n maxFee: 1000,\n })\n ).toThrow('encryption not implemented in MVP');\n });\n\n it('should reject negative maxFee', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: -1,\n })\n ).toThrow('max_fee must be non-negative');\n });\n });\n\n describe('isValidOrderBy', () => {\n it('should accept valid lowercase orderBy', () => {\n expect(isValidOrderBy('created_height asc')).toBe(true);\n expect(isValidOrderBy('created_height desc')).toBe(true);\n expect(isValidOrderBy('signed_height asc')).toBe(true);\n expect(isValidOrderBy('signed_height desc')).toBe(true);\n });\n\n it('should accept valid uppercase orderBy', () => {\n expect(isValidOrderBy('created_height ASC')).toBe(true);\n expect(isValidOrderBy('created_height DESC')).toBe(true);\n expect(isValidOrderBy('signed_height ASC')).toBe(true);\n expect(isValidOrderBy('signed_height DESC')).toBe(true);\n });\n\n it('should accept mixed case and trim whitespace', () => {\n expect(isValidOrderBy(' created_height ASC ')).toBe(true);\n expect(isValidOrderBy('Created_Height Desc')).toBe(true);\n expect(isValidOrderBy('SIGNED_HEIGHT asc')).toBe(true);\n expect(isValidOrderBy(' signed_height DESC ')).toBe(true);\n });\n\n it('should reject invalid orderBy', () => {\n expect(isValidOrderBy('invalid')).toBe(false);\n expect(isValidOrderBy('created_height')).toBe(false);\n expect(isValidOrderBy('created_height ascending')).toBe(false);\n expect(isValidOrderBy('')).toBe(false);\n });\n });\n\n describe('validateListAttestationsInput', () => {\n it('should accept valid input with all fields', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(20),\n limit: 100,\n offset: 0,\n orderBy: 'created_height desc',\n })\n ).not.toThrow();\n });\n\n it('should accept valid input with no optional fields', () => {\n expect(() => validateListAttestationsInput({})).not.toThrow();\n });\n\n it('should reject limit < 1', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 0,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject limit > 5000', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 5001,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject negative offset', () => {\n expect(() =>\n validateListAttestationsInput({\n offset: -1,\n })\n ).toThrow('offset must be non-negative');\n });\n\n it('should reject requester != 20 bytes (too long)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(21),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject requester != 20 bytes (too short)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(19),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject invalid orderBy', () => {\n expect(() =>\n validateListAttestationsInput({\n orderBy: 'invalid',\n })\n ).toThrow('Invalid orderBy value');\n });\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Type definitions for attestation operations\n *\n * Attestations enable validators to cryptographically sign query results,\n * providing verifiable proofs that can be consumed by smart contracts and\n * external applications.\n */\n\n/**\n * Input parameters for requesting an attestation\n */\nexport interface RequestAttestationInput {\n /**\n * Data provider address (0x-prefixed, 42 characters)\n * Example: \"0x4710a8d8f0d845da110086812a32de6d90d7ff5c\"\n */\n dataProvider: string;\n\n /**\n * Stream ID (32 characters)\n * Example: \"stai0000000000000000000000000000\"\n */\n streamId: string;\n\n /**\n * Action name to attest (must be in allowlist)\n * Example: \"get_record\", \"get_index\"\n */\n actionName: string;\n\n /**\n * Action arguments (will be encoded)\n * Must match the signature of the action\n */\n args: any[];\n\n /**\n * Whether to encrypt the signature (must be false in MVP)\n * Future: ECIES encryption to requester's public key\n */\n encryptSig: boolean;\n\n /**\n * Maximum fee willing to pay (in wei, as NUMERIC(78,0))\n * Accepts number, string, or bigint for large values (up to 40 TRUF = 40e18 wei)\n * Transaction will abort if actual fee exceeds this\n * Accepts number, string, or bigint for large values\n */\n maxFee: number | string | bigint;\n}\n\n/**\n * Result of requesting an attestation\n */\nexport interface RequestAttestationResult {\n /**\n * Transaction ID for this attestation request\n * Use this to retrieve the signed attestation later\n */\n requestTxId: string;\n}\n\n/**\n * Input parameters for retrieving a signed attestation\n */\nexport interface GetSignedAttestationInput {\n /**\n * Transaction ID from request_attestation\n */\n requestTxId: string;\n}\n\n/**\n * Result of retrieving a signed attestation\n */\nexport interface SignedAttestationResult {\n /**\n * Complete attestation payload: canonical (8 fields) + signature\n *\n * Format: version | algo | height | provider | stream | action | args | result | signature\n *\n * This payload can be passed to EVM contracts for verification\n */\n payload: Uint8Array;\n}\n\n/**\n * Input parameters for listing attestations\n */\nexport interface ListAttestationsInput {\n /**\n * Optional: Filter by requester address (20 bytes)\n * If provided, only returns attestations requested by this address\n */\n requester?: Uint8Array;\n\n /**\n * Optional: Filter by request transaction ID\n * If provided, only returns attestations matching this transaction ID\n */\n requestTxId?: string;\n\n /**\n * Optional: Maximum number of results (1-5000, default 5000)\n */\n limit?: number;\n\n /**\n * Optional: Pagination offset (default 0)\n */\n offset?: number;\n\n /**\n * Optional: Sort order\n *\n * Allowed values:\n * - \"created_height asc\"\n * - \"created_height desc\"\n * - \"signed_height asc\"\n * - \"signed_height desc\"\n *\n * Case-insensitive\n */\n orderBy?: string;\n}\n\n/**\n * Metadata for a single attestation\n */\nexport interface AttestationMetadata {\n /**\n * Transaction ID for this attestation request\n */\n requestTxId: string;\n\n /**\n * Attestation hash (identifies this attestation)\n */\n attestationHash: Uint8Array;\n\n /**\n * Address of the requester (20 bytes)\n */\n requester: Uint8Array;\n\n /**\n * Data provider address\n */\n dataProvider: string;\n\n /**\n * Stream ID\n */\n streamId: string;\n\n /**\n * Block height when attestation was created\n */\n createdHeight: number;\n\n /**\n * Block height when attestation was signed (null if not yet signed)\n */\n signedHeight: number | null;\n\n /**\n * Whether signature is encrypted\n */\n encryptSig: boolean;\n}\n\n/**\n * Validates attestation request input\n *\n * @param input - The attestation request to validate\n * @throws Error if validation fails\n */\nexport function validateAttestationRequest(input: RequestAttestationInput): void {\n // Data provider validation\n if (input.dataProvider.length !== 42) {\n throw new Error(\n `data_provider must be 0x-prefixed 40 hex characters, got ${input.dataProvider.length} chars`\n );\n }\n\n if (!input.dataProvider.startsWith('0x')) {\n throw new Error('data_provider must start with 0x prefix');\n }\n\n // Validate hex after 0x prefix\n const hex = input.dataProvider.slice(2);\n if (!/^[0-9a-fA-F]{40}$/.test(hex)) {\n throw new Error('data_provider must contain valid hex characters after 0x prefix');\n }\n\n // Stream ID validation\n if (input.streamId.length !== 32) {\n throw new Error(`stream_id must be 32 characters, got ${input.streamId.length}`);\n }\n\n // Action name validation\n if (!input.actionName || input.actionName.trim() === '') {\n throw new Error('action_name cannot be empty');\n }\n\n // Encryption validation\n if (input.encryptSig) {\n throw new Error('encryption not implemented in MVP');\n }\n\n // Fee validation - handle number, string, or bigint\n const maxFeeNum = typeof input.maxFee === 'bigint'\n ? input.maxFee\n : typeof input.maxFee === 'string'\n ? BigInt(input.maxFee)\n : BigInt(Math.floor(input.maxFee));\n\n if (maxFeeNum < 0n) {\n throw new Error(`max_fee must be non-negative, got ${input.maxFee}`);\n }\n}\n\n/**\n * Whitelist of valid orderBy values (lowercase canonical form)\n */\nconst VALID_ORDER_BY_VALUES = [\n 'created_height asc',\n 'created_height desc',\n 'signed_height asc',\n 'signed_height desc',\n];\n\n/**\n * Validates orderBy parameter (case-insensitive)\n *\n * @param orderBy - The orderBy value to validate\n * @returns true if valid, false otherwise\n */\nexport function isValidOrderBy(orderBy: string): boolean {\n // Normalize to lowercase for case-insensitive comparison\n const normalized = orderBy.trim().toLowerCase();\n return VALID_ORDER_BY_VALUES.includes(normalized);\n}\n\n/**\n * Validates list attestations input\n *\n * @param input - The list attestations input to validate\n * @throws Error if validation fails\n */\nexport function validateListAttestationsInput(input: ListAttestationsInput): void {\n // Validate limit\n if (input.limit !== undefined) {\n if (input.limit < 1 || input.limit > 5000) {\n throw new Error('limit must be between 1 and 5000');\n }\n }\n\n // Validate offset\n if (input.offset !== undefined) {\n if (input.offset < 0) {\n throw new Error('offset must be non-negative');\n }\n }\n\n // Validate requester length\n if (input.requester !== undefined) {\n if (input.requester.length !== 20) {\n throw new Error('requester must be exactly 20 bytes');\n }\n }\n\n // Validate orderBy\n if (input.orderBy !== undefined) {\n if (!isValidOrderBy(input.orderBy)) {\n throw new Error(\n `Invalid orderBy value. Must be one of: ${VALID_ORDER_BY_VALUES.slice(0, 4).join(', ')}`\n );\n }\n }\n}\n\n// Inline unit tests\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n\n describe('validateAttestationRequest', () => {\n it('should accept valid input', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000000,\n })\n ).not.toThrow();\n });\n\n it('should reject invalid data_provider length', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xinvalid',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must be 0x-prefixed 40 hex characters');\n });\n\n it('should reject data_provider without 0x prefix', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '4710a8d8f0d845da110086812a32de6d90d7ff5c00',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must start with 0x prefix');\n });\n\n it('should reject data_provider with invalid hex', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0xGGGGa8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('data_provider must contain valid hex characters');\n });\n\n it('should reject short stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'short',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject long stream_id', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai00000000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('stream_id must be 32 characters');\n });\n\n it('should reject empty action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: '',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject whitespace-only action_name', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: ' ',\n args: [],\n encryptSig: false,\n maxFee: 1000,\n })\n ).toThrow('action_name cannot be empty');\n });\n\n it('should reject encryptSig=true', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: true,\n maxFee: 1000,\n })\n ).toThrow('encryption not implemented in MVP');\n });\n\n it('should reject negative maxFee', () => {\n expect(() =>\n validateAttestationRequest({\n dataProvider: '0x4710a8d8f0d845da110086812a32de6d90d7ff5c',\n streamId: 'stai0000000000000000000000000000',\n actionName: 'get_record',\n args: [],\n encryptSig: false,\n maxFee: -1,\n })\n ).toThrow('max_fee must be non-negative');\n });\n });\n\n describe('isValidOrderBy', () => {\n it('should accept valid lowercase orderBy', () => {\n expect(isValidOrderBy('created_height asc')).toBe(true);\n expect(isValidOrderBy('created_height desc')).toBe(true);\n expect(isValidOrderBy('signed_height asc')).toBe(true);\n expect(isValidOrderBy('signed_height desc')).toBe(true);\n });\n\n it('should accept valid uppercase orderBy', () => {\n expect(isValidOrderBy('created_height ASC')).toBe(true);\n expect(isValidOrderBy('created_height DESC')).toBe(true);\n expect(isValidOrderBy('signed_height ASC')).toBe(true);\n expect(isValidOrderBy('signed_height DESC')).toBe(true);\n });\n\n it('should accept mixed case and trim whitespace', () => {\n expect(isValidOrderBy(' created_height ASC ')).toBe(true);\n expect(isValidOrderBy('Created_Height Desc')).toBe(true);\n expect(isValidOrderBy('SIGNED_HEIGHT asc')).toBe(true);\n expect(isValidOrderBy(' signed_height DESC ')).toBe(true);\n });\n\n it('should reject invalid orderBy', () => {\n expect(isValidOrderBy('invalid')).toBe(false);\n expect(isValidOrderBy('created_height')).toBe(false);\n expect(isValidOrderBy('created_height ascending')).toBe(false);\n expect(isValidOrderBy('')).toBe(false);\n });\n });\n\n describe('validateListAttestationsInput', () => {\n it('should accept valid input with all fields', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(20),\n limit: 100,\n offset: 0,\n orderBy: 'created_height desc',\n })\n ).not.toThrow();\n });\n\n it('should accept valid input with no optional fields', () => {\n expect(() => validateListAttestationsInput({})).not.toThrow();\n });\n\n it('should reject limit < 1', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 0,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject limit > 5000', () => {\n expect(() =>\n validateListAttestationsInput({\n limit: 5001,\n })\n ).toThrow('limit must be between 1 and 5000');\n });\n\n it('should reject negative offset', () => {\n expect(() =>\n validateListAttestationsInput({\n offset: -1,\n })\n ).toThrow('offset must be non-negative');\n });\n\n it('should reject requester != 20 bytes (too long)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(21),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject requester != 20 bytes (too short)', () => {\n expect(() =>\n validateListAttestationsInput({\n requester: new Uint8Array(19),\n })\n ).toThrow('requester must be exactly 20 bytes');\n });\n\n it('should reject invalid orderBy', () => {\n expect(() =>\n validateListAttestationsInput({\n orderBy: 'invalid',\n })\n ).toThrow('Invalid orderBy value');\n });\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/config.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/enums.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/database.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/network.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/payload.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/types.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/signature.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/action.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/kwilSigner.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/message.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/resreq.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/tx.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/axios/index.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/api.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/txQuery.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/auth.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/jsonrpc.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/client.d.ts","../node_modules/@trufnetwork/kwil-js/dist/funder/funding_types.d.ts","../node_modules/@trufnetwork/kwil-js/dist/funder/funder.d.ts","../node_modules/@trufnetwork/kwil-js/dist/auth/auth.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/kwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/node/nodeKwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/web/webKwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/dbid.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/parameterEncoding.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/kwilEncoding.d.ts","../node_modules/@trufnetwork/kwil-js/dist/index.d.ts","../src/types/other.ts","../node_modules/crypto-hash/index.d.ts","../node_modules/monads-io/dist/types.d.ts","../node_modules/monads-io/dist/either.d.ts","../node_modules/monads-io/dist/maybe.d.ts","../node_modules/monads-io/dist/convert.d.ts","../node_modules/monads-io/dist/either.exports.d.ts","../node_modules/monads-io/dist/maybe.exports.d.ts","../node_modules/monads-io/dist/identity.d.ts","../node_modules/monads-io/dist/identity.exports.d.ts","../node_modules/monads-io/dist/runtime.d.ts","../node_modules/monads-io/dist/errors.d.ts","../node_modules/monads-io/dist/index.d.ts","../node_modules/monads-io/index.d.ts","../src/util/StreamId.ts","../node_modules/ethers/lib.esm/_version.d.ts","../node_modules/ethers/lib.esm/utils/base58.d.ts","../node_modules/ethers/lib.esm/utils/data.d.ts","../node_modules/ethers/lib.esm/utils/base64.d.ts","../node_modules/ethers/lib.esm/address/address.d.ts","../node_modules/ethers/lib.esm/address/contract-address.d.ts","../node_modules/ethers/lib.esm/address/checks.d.ts","../node_modules/ethers/lib.esm/address/index.d.ts","../node_modules/ethers/lib.esm/crypto/hmac.d.ts","../node_modules/ethers/lib.esm/crypto/keccak.d.ts","../node_modules/ethers/lib.esm/crypto/ripemd160.d.ts","../node_modules/ethers/lib.esm/crypto/pbkdf2.d.ts","../node_modules/ethers/lib.esm/crypto/random.d.ts","../node_modules/ethers/lib.esm/crypto/scrypt.d.ts","../node_modules/ethers/lib.esm/crypto/sha2.d.ts","../node_modules/ethers/lib.esm/crypto/signature.d.ts","../node_modules/ethers/lib.esm/crypto/signing-key.d.ts","../node_modules/ethers/lib.esm/crypto/index.d.ts","../node_modules/ethers/lib.esm/utils/maths.d.ts","../node_modules/ethers/lib.esm/transaction/accesslist.d.ts","../node_modules/ethers/lib.esm/transaction/authorization.d.ts","../node_modules/ethers/lib.esm/transaction/address.d.ts","../node_modules/ethers/lib.esm/transaction/transaction.d.ts","../node_modules/ethers/lib.esm/transaction/index.d.ts","../node_modules/ethers/lib.esm/providers/contracts.d.ts","../node_modules/ethers/lib.esm/utils/fetch.d.ts","../node_modules/ethers/lib.esm/providers/plugins-network.d.ts","../node_modules/ethers/lib.esm/providers/network.d.ts","../node_modules/ethers/lib.esm/providers/formatting.d.ts","../node_modules/ethers/lib.esm/providers/provider.d.ts","../node_modules/ethers/lib.esm/providers/ens-resolver.d.ts","../node_modules/ethers/lib.esm/providers/abstract-provider.d.ts","../node_modules/ethers/lib.esm/hash/authorization.d.ts","../node_modules/ethers/lib.esm/hash/id.d.ts","../node_modules/ethers/lib.esm/hash/namehash.d.ts","../node_modules/ethers/lib.esm/hash/message.d.ts","../node_modules/ethers/lib.esm/hash/solidity.d.ts","../node_modules/ethers/lib.esm/hash/typed-data.d.ts","../node_modules/ethers/lib.esm/hash/index.d.ts","../node_modules/ethers/lib.esm/providers/signer.d.ts","../node_modules/ethers/lib.esm/providers/abstract-signer.d.ts","../node_modules/ethers/lib.esm/providers/community.d.ts","../node_modules/ethers/lib.esm/providers/provider-jsonrpc.d.ts","../node_modules/ethers/lib.esm/providers/provider-socket.d.ts","../node_modules/ethers/lib.esm/providers/provider-websocket.d.ts","../node_modules/ethers/lib.esm/providers/default-provider.d.ts","../node_modules/ethers/lib.esm/providers/signer-noncemanager.d.ts","../node_modules/ethers/lib.esm/providers/provider-fallback.d.ts","../node_modules/ethers/lib.esm/providers/provider-browser.d.ts","../node_modules/ethers/lib.esm/providers/provider-alchemy.d.ts","../node_modules/ethers/lib.esm/providers/provider-blockscout.d.ts","../node_modules/ethers/lib.esm/providers/provider-ankr.d.ts","../node_modules/ethers/lib.esm/providers/provider-cloudflare.d.ts","../node_modules/ethers/lib.esm/providers/provider-chainstack.d.ts","../node_modules/ethers/lib.esm/contract/types.d.ts","../node_modules/ethers/lib.esm/contract/wrappers.d.ts","../node_modules/ethers/lib.esm/contract/contract.d.ts","../node_modules/ethers/lib.esm/contract/factory.d.ts","../node_modules/ethers/lib.esm/contract/index.d.ts","../node_modules/ethers/lib.esm/providers/provider-etherscan.d.ts","../node_modules/ethers/lib.esm/providers/provider-infura.d.ts","../node_modules/ethers/lib.esm/providers/provider-pocket.d.ts","../node_modules/ethers/lib.esm/providers/provider-quicknode.d.ts","../node_modules/ethers/lib.esm/providers/provider-ipcsocket.d.ts","../node_modules/ethers/lib.esm/providers/index.d.ts","../node_modules/ethers/lib.esm/utils/errors.d.ts","../node_modules/ethers/lib.esm/utils/events.d.ts","../node_modules/ethers/lib.esm/utils/fixednumber.d.ts","../node_modules/ethers/lib.esm/utils/properties.d.ts","../node_modules/ethers/lib.esm/utils/rlp-decode.d.ts","../node_modules/ethers/lib.esm/utils/rlp.d.ts","../node_modules/ethers/lib.esm/utils/rlp-encode.d.ts","../node_modules/ethers/lib.esm/utils/units.d.ts","../node_modules/ethers/lib.esm/utils/utf8.d.ts","../node_modules/ethers/lib.esm/utils/uuid.d.ts","../node_modules/ethers/lib.esm/utils/index.d.ts","../node_modules/ethers/lib.esm/abi/coders/abstract-coder.d.ts","../node_modules/ethers/lib.esm/abi/fragments.d.ts","../node_modules/ethers/lib.esm/abi/abi-coder.d.ts","../node_modules/ethers/lib.esm/abi/bytes32.d.ts","../node_modules/ethers/lib.esm/abi/typed.d.ts","../node_modules/ethers/lib.esm/abi/interface.d.ts","../node_modules/ethers/lib.esm/abi/index.d.ts","../node_modules/ethers/lib.esm/constants/addresses.d.ts","../node_modules/ethers/lib.esm/constants/hashes.d.ts","../node_modules/ethers/lib.esm/constants/numbers.d.ts","../node_modules/ethers/lib.esm/constants/strings.d.ts","../node_modules/ethers/lib.esm/constants/index.d.ts","../node_modules/ethers/lib.esm/wallet/base-wallet.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist-owl.d.ts","../node_modules/ethers/lib.esm/wordlists/lang-en.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist-owla.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlists.d.ts","../node_modules/ethers/lib.esm/wordlists/index.d.ts","../node_modules/ethers/lib.esm/wallet/mnemonic.d.ts","../node_modules/ethers/lib.esm/wallet/hdwallet.d.ts","../node_modules/ethers/lib.esm/wallet/json-crowdsale.d.ts","../node_modules/ethers/lib.esm/wallet/json-keystore.d.ts","../node_modules/ethers/lib.esm/wallet/wallet.d.ts","../node_modules/ethers/lib.esm/wallet/index.d.ts","../node_modules/ethers/lib.esm/ethers.d.ts","../node_modules/ethers/lib.esm/index.d.ts","../node_modules/monads-io/either.d.ts","../src/util/EthereumAddress.ts","../src/types/stream.ts","../src/types/cache.ts","../src/util/head.ts","../src/util/visibility.ts","../src/util/cacheMetadataParser.ts","../src/util/cacheValidation.ts","../src/contracts-api/contractValues.ts","../src/contracts-api/action.ts","../src/contracts-api/composedAction.ts","../src/contracts-api/deployStream.ts","../src/contracts-api/deleteStream.ts","../src/contracts-api/primitiveAction.ts","../src/client/listStreams.ts","../src/types/transaction.ts","../src/client/getLastTransactions.ts","../src/types/role.ts","../src/contracts-api/roleManagement.ts","../src/types/attestation.ts","../src/util/AttestationEncoding.ts","../src/contracts-api/attestationAction.ts","../src/contracts-api/transactionAction.ts","../src/client/client.ts","../src/internal.ts","../src/client/browserClient.ts","../src/index.browser.ts","../src/index.common.ts","../src/client/nodeClient.ts","../src/index.node.ts","../src/index.ts","../node_modules/@vitest/pretty-format/dist/index.d.ts","../node_modules/@vitest/utils/dist/types.d.ts","../node_modules/@vitest/utils/dist/helpers.d.ts","../node_modules/tinyrainbow/dist/index-c1cfc5e9.d.ts","../node_modules/tinyrainbow/dist/node.d.ts","../node_modules/@vitest/utils/dist/index.d.ts","../node_modules/@vitest/runner/dist/tasks-3ZnPj1LR.d.ts","../node_modules/@vitest/utils/dist/types-Bxe-2Udy.d.ts","../node_modules/@vitest/utils/dist/diff.d.ts","../node_modules/@vitest/runner/dist/types.d.ts","../node_modules/@vitest/utils/dist/error.d.ts","../node_modules/@vitest/runner/dist/index.d.ts","../node_modules/vitest/dist/chunks/environment.LoooBwUu.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/rollup/dist/rollup.d.ts","../node_modules/rollup/dist/parseAst.d.ts","../node_modules/vite/types/hmrPayload.d.ts","../node_modules/vite/types/customEvent.d.ts","../node_modules/vite/types/hot.d.ts","../node_modules/vite/dist/node/types.d-aGj9QkWt.d.ts","../node_modules/vite/node_modules/esbuild/lib/main.d.ts","../node_modules/source-map-js/source-map.d.ts","../node_modules/postcss/lib/previous-map.d.ts","../node_modules/postcss/lib/input.d.ts","../node_modules/postcss/lib/css-syntax-error.d.ts","../node_modules/postcss/lib/declaration.d.ts","../node_modules/postcss/lib/root.d.ts","../node_modules/postcss/lib/warning.d.ts","../node_modules/postcss/lib/lazy-result.d.ts","../node_modules/postcss/lib/no-work-result.d.ts","../node_modules/postcss/lib/processor.d.ts","../node_modules/postcss/lib/result.d.ts","../node_modules/postcss/lib/document.d.ts","../node_modules/postcss/lib/rule.d.ts","../node_modules/postcss/lib/node.d.ts","../node_modules/postcss/lib/comment.d.ts","../node_modules/postcss/lib/container.d.ts","../node_modules/postcss/lib/at-rule.d.ts","../node_modules/postcss/lib/list.d.ts","../node_modules/postcss/lib/postcss.d.ts","../node_modules/postcss/lib/postcss.d.mts","../node_modules/vite/dist/node/runtime.d.ts","../node_modules/vite/types/importGlob.d.ts","../node_modules/vite/types/metadata.d.ts","../node_modules/vite/dist/node/index.d.ts","../node_modules/@vitest/snapshot/dist/environment-Ddx0EDtY.d.ts","../node_modules/@vitest/snapshot/dist/rawSnapshot-CPNkto81.d.ts","../node_modules/@vitest/snapshot/dist/index.d.ts","../node_modules/@vitest/snapshot/dist/environment.d.ts","../node_modules/vitest/dist/chunks/config.Cy0C388Z.d.ts","../node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","../node_modules/vite-node/dist/index-z0R8hVRu.d.ts","../node_modules/vite-node/dist/index.d.ts","../node_modules/@vitest/utils/dist/source-map.d.ts","../node_modules/vite-node/dist/client.d.ts","../node_modules/vite-node/dist/server.d.ts","../node_modules/@vitest/runner/dist/utils.d.ts","../node_modules/tinybench/dist/index.d.ts","../node_modules/vitest/dist/chunks/benchmark.geERunq4.d.ts","../node_modules/@vitest/snapshot/dist/manager.d.ts","../node_modules/vitest/dist/chunks/reporters.nr4dxCkA.d.ts","../node_modules/vitest/dist/chunks/worker.tN5KGIih.d.ts","../node_modules/vitest/dist/chunks/worker.B9FxPCaC.d.ts","../node_modules/vitest/dist/chunks/vite.CzKp4x9w.d.ts","../node_modules/@vitest/expect/dist/chai.d.cts","../node_modules/@vitest/expect/dist/index.d.ts","../node_modules/@vitest/expect/index.d.ts","../node_modules/@vitest/spy/dist/index.d.ts","../node_modules/@vitest/mocker/dist/types-DZOqTgiN.d.ts","../node_modules/@vitest/mocker/dist/index.d.ts","../node_modules/vitest/dist/chunks/mocker.cRtM890J.d.ts","../node_modules/vitest/dist/chunks/suite.B2jumIFP.d.ts","../node_modules/expect-type/dist/utils.d.ts","../node_modules/expect-type/dist/overloads.d.ts","../node_modules/expect-type/dist/branding.d.ts","../node_modules/expect-type/dist/messages.d.ts","../node_modules/expect-type/dist/index.d.ts","../node_modules/vitest/dist/index.d.ts","../src/contracts-api/cache.integration.test.ts","../src/contracts-api/composedAction.test.ts","../src/types/cache.test.ts","../src/util/cacheMetadataParser.test.ts","../src/util/cacheValidation.test.ts","../node_modules/vitest/importMeta.d.ts"],"fileIdsList":[[82,140,147,148],[82,83,85,87,91,92,93,140,149,150,151,152],[140],[83,88,89,90,92,140,151],[82,83,84,85,87,89,90,91,92,93,140,150,153,155,156],[82,83,89,90,91,92,140,157],[83,84,86,87,88,140],[83,87,88,140],[83,86,140],[83,84,85,87,91,93,140,150,151],[87,88,140],[83,86,87,88,140],[83,87,140],[83,84,85,87,140],[83,93,140],[83,90,92,93,140,154,157],[82,83,84,85,86,87,88,89,90,91,92,93,140,150,151,153,154,157,158,159,160,161,162],[83,85,86,87,140],[83,84,86,87,89,140],[86,140],[94,140],[97,140],[98,103,131,140],[99,110,111,118,128,139,140],[99,100,110,118,140],[101,140],[102,103,111,119,140],[103,128,136,140],[104,106,110,118,140],[105,140],[106,107,140],[110,140],[108,110,140],[110,111,112,128,139,140],[110,111,112,125,128,131,140],[140,144],[106,110,113,118,128,139,140],[110,111,113,114,118,128,136,139,140],[113,115,128,136,139,140],[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146],[110,116,140],[117,139,140,144],[106,110,118,128,140],[119,140],[120,140],[97,121,140],[122,138,140,144],[123,140],[124,140],[110,125,126,140],[125,127,140,142],[98,110,128,129,130,131,140],[98,128,130,140],[128,129,140],[131,140],[132,140],[97,128,140],[110,134,135,140],[134,135,140],[103,118,128,136,140],[137,140],[118,138,140],[98,113,124,139,140],[103,140],[128,140,141],[117,140,142],[140,143],[98,103,110,112,121,128,139,140,142,144],[128,140,145],[140,317,318,321],[140,378],[140,381],[140,318,319,321,322,323],[140,318],[140,318,319,321],[140,318,319],[140,358],[140,313,358,359],[140,313,358],[140,313,320],[140,314],[140,313,314,315,317],[140,313],[140,254,255,256],[140,254],[140,256,257,258,259,260],[140,254,255,256,257,259],[140,186,254,255],[140,186],[140,183,184,185],[140,262,263,264,265],[140,186,208,233,234,243,254,261],[140,186,233,234,235,243,254,261],[140,233,234,235,236],[140,234,243,261],[140,208,233,235,243,254,261],[140,187,188,189,190,191,192,193,194,195],[140,194,196,254],[140,179,186,196,202,217,237,243,254,261,266,273,279],[140,186,196,254],[140,211,212,213,214,215,216],[140,196],[140,196,254],[140,280],[140,186,206,207,208,209,254],[140,202,208,217,218],[140,208],[140,206,210,223],[140,208,210,254],[140,196,202],[140,203,205,206,207,208,209,210,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,238,239,240,241,242],[140,202,205,254],[140,204,208],[140,206,210,220,221,254],[140,206,221],[140,205,206,208,210,237],[140,206,210],[140,206,210,220,221,223,254],[118,140,147,206,221,222],[140,202,206,208,210,217,218,219,254],[140,206,208,210,221],[140,206,221,222],[140,186,196,202,203,206,207,254],[140,208,217,218,219],[140,186,202,203,208,217],[140,202],[140,196,197,198,199,200,201],[140,196,202,254],[140,181],[140,204,243],[140,180,181,182,197,204,244,245,246,247,248,249,250,251,252,253],[140,249],[140,248,250],[140,196,202,217,243],[140,196,243,254,267,273,274],[140,267,274,275,276,277,278],[140,254,273],[140,196,243,267,275],[140,268,269,270,271,272],[140,269],[140,268],[140,385,386],[140,385,386,387,388],[140,385,387],[140,385],[140,167,168],[140,166],[140,167,169],[140,172],[140,166,170,171,173,174,175],[140,168,169],[140,170],[140,176],[140,349],[140,347,349],[140,338,346,347,348,350,352],[140,336],[140,339,344,349,352],[140,335,352],[140,339,340,343,344,345,352],[140,339,340,341,343,344,352],[140,336,337,338,339,340,344,345,346,348,349,350,352],[140,352],[140,334,336,337,338,339,340,341,343,344,345,346,347,348,349,350,351],[140,334,352],[140,339,341,342,344,345,352],[140,343,352],[140,344,345,349,352],[140,337,347],[140,327,356],[140,326,327],[140,316],[140,363,364],[140,363],[140,357,363,364,376],[110,111,113,114,115,118,128,136,139,140,145,147,327,328,329,330,331,332,333,353,354,355,356],[140,329,330,331,332],[140,329,330,331],[140,329],[140,330],[140,327],[140,324,369,370,390],[140,313,324,360,361,390],[140,382],[111,128,140,313,318,324,325,357,360,362,365,366,367,368,371,372,376,377,390],[140,324,369,370,371,390],[140,357,373],[140,144,374],[140,324,325,360,362,365,390],[111,128,140,144,313,318,321,324,325,357,360,361,362,365,366,367,368,369,370,371,372,373,374,375,376,377,379,380,382,383,384,389,390],[140,390],[140,163,306],[140,163,178,283,284,290,291,292,293,294,295,296,298,299,300,303,304],[140,163,297,306],[140,163,178,283,284,306],[140,163,164,177,178,283,284,285,286,287,288,289,290],[140,163,291,301,302],[140,178,283,284,285,291,390],[140,178,283,292,390],[140,163,164,178,283,284,291],[140,163,178,284],[140,163,178,290],[140,163,284,290,291],[140,163,283,291,299],[140,163,297],[140,306,307],[140,178,283,284,287,290,291,292,295,299,300,301,303,305],[140,306,310],[140,306,307,310],[140,178,283,284,287,290,291,292,293,294,295,299,300,301,302,303,305],[140,285,390],[140,283],[140,178,283],[140,163,281],[140,281,282],[140,165,177],[140,285,288,390],[140,285],[140,289,390],[140,177]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5b13031422671cc22ea7b36fcf708776c9f3d8b3233c6df3a0ab759621729f54","impliedFormat":1},{"version":"f4305022b9b58daf6eac0a1b8f2568ddcd96e958afcfc3b9530e90460b3f6bf2","impliedFormat":1},{"version":"3067543c7ce1d809da78a425b3b7a874147432841477434a508b2ae38f3febe8","impliedFormat":1},{"version":"a47bcbc4f32cd38ddefd0d31c0314d0a5656dfba4ddd9431f825e7193966aacd","impliedFormat":1},{"version":"c226c777447b786754a7c4d5cf0c497a514b66141bdc98ae90b58c6f5f636e55","impliedFormat":1},{"version":"4bf65ba8b5bd21d54f8d7017968c4dc7f8b500c87f9944148ea9eaf74d13721d","impliedFormat":1},{"version":"8dc867a8ce7fb326d8f9586e67e35a862cc11908e902530f7ebb62e57976ad86","impliedFormat":1},{"version":"8f3282db99633148e96329c63c6145722967245308e4ca287df3c3b7d5d56026","impliedFormat":1},{"version":"c0b0ba5f9772afc819467c32c3f46d2eda0b6c4592d6103412cb26d35e82e993","impliedFormat":1},{"version":"d8e9e16514bd9b8297c3d193e0dc1a2ff7517f036f0846204f76a0377d47bcde","impliedFormat":1},{"version":"412c99d8217c9866a720ec75b2fe0e3ef615bc61f170f48508e4e401bae561ff","impliedFormat":1},{"version":"d9dbc8875024f2677126c5169806bbd417c8f54327b1500a13a581c8f360c538","impliedFormat":1},{"version":"9004b6757fde33f153c3a7694c15b017531a0261fafb99e0542a8a6f61be1708","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"32465ea19404cb188e84cf08c6b1f6b12d739140436402cdbc184a3fd20a7d81","affectsGlobalScope":true,"impliedFormat":1},{"version":"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89","impliedFormat":1},{"version":"da5afd11bfce6e59d63f28fcf1ce25cd099188de33c08f9fad297186713fb17c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f2d8573577ad731813e4358b913b667923a94e6456f645918fba11134040d13","impliedFormat":1},{"version":"fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49","impliedFormat":1},{"version":"815c751d4afee4651d61edf6204187372a55ca8e0126a906986b4859ec51f192","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8a67dc9edddace374b1a96852ab5bbb87b631d439a928e6df326587d1f4fe9f0","impliedFormat":1},{"version":"fbcf2c3cde728761b05dbf8e7a9b8be1f5514dc324c6f83b87ba5c0668119b98","impliedFormat":1},{"version":"7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","impliedFormat":1},{"version":"16bbaee4dd96ec8b67026329a4f5fdef6313e42a5c305ddeb498c3d65fb557b8","impliedFormat":1},{"version":"37a36483218b24a50be2548a71557603e01ce38154c9f3f635c6c8275abd9fb1","impliedFormat":1},{"version":"c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4","impliedFormat":1},{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d30c9292ff36b2af594109d4413f34b952b1258c50b0361a3db1f7d94ec1e193","affectsGlobalScope":true,"impliedFormat":1},{"version":"d617229425b25df2046a9c1e321dd1b50825abc8e3b38048453345483f8601e1","impliedFormat":1},{"version":"badd4f5fe0cca51915ef597852d07598ca490f6d1d9d68d505a159f18cde792d","impliedFormat":1},{"version":"2d510ba9ab3fd294bc60f6a6dea2c8eb5942676bce2916ea72b52b975e788abb","impliedFormat":1},{"version":"e6d2e297c73016fc98095238b25428591d129481c50eb1b6e575d35f3f8c621e","impliedFormat":1},{"version":"e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","impliedFormat":1},{"version":"7e5307e29dfd5d5b827203b85cb665d8d5bf932a6c6f393457da8e9ed1906761","impliedFormat":1},{"version":"e492737de7f023b47ff14ca54b9635ba3dcd64816ed3316c9f3a784cf5897173","affectsGlobalScope":true,"impliedFormat":1},{"version":"40798238bc2e17ee787a815dbce4f2c89c161e5ad2fde062fb50454c093fa433","impliedFormat":1},{"version":"30b15efd2b52c7e5f0f7c1e360afc43f487a2cffad5c01756f06eb323eee3efd","impliedFormat":1},{"version":"323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c","impliedFormat":1},{"version":"e7391fb34deecd321ae15af659cbfb0b9abc995c5ed4b3d703ba768e44b89670","affectsGlobalScope":true,"impliedFormat":1},{"version":"0900d10c17bae29648b266c0ae7cef0c95ebb2a1d81541b833833ed0996ac85a","affectsGlobalScope":true,"impliedFormat":1},{"version":"58520d6ae3a339cd22ffc528b50b21e4e8f5247a87913eb1c697c1af62eb0395","impliedFormat":1},{"version":"186614c0f9ca0ec3cfa988f1dc01c6f392a798710072ff4bdf20ce56e09a6dfd","impliedFormat":1},{"version":"2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","impliedFormat":1},{"version":"6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","impliedFormat":1},{"version":"48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","impliedFormat":1},{"version":"6e4b2642721462bf62d19593770659f268a6ca1e9fd15543747efb3ac471cee3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"8258e69a3b0de494ea55eeea7a4d3216ac112c12006c74dfd381c0d5e42a2607","impliedFormat":1},{"version":"cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","impliedFormat":1},{"version":"4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf","impliedFormat":1},{"version":"6fa3d3f427475a5d21fed826d6457e7f9ee3a0abeb3124fc41f385f112368d2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b85e57e102a1df14980b46d745c9fe8e16a9b0a69a98fb1a2c558c9137ab30d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","impliedFormat":1},{"version":"e5ce801ce5e85d7281807d8a65a21ee9767c122c87da262891582b4afead5ec0","impliedFormat":1},{"version":"76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","impliedFormat":1},{"version":"c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02","impliedFormat":1},{"version":"057d7f56aacd575a6240838d2684d34a340acde815f84190ea5e9afd611aeee6","affectsGlobalScope":true,"impliedFormat":1},{"version":"40ed27386f21a739bd0d2e2cfed563760588f2aeaa7ad149c1bf1454a7ec743a","affectsGlobalScope":true,"impliedFormat":1},{"version":"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","impliedFormat":1},{"version":"6244a29671c12a54fc5b1393dde60bac655bd778d84758a4db847f684d4da3a5","impliedFormat":1},{"version":"8bc733ffd630d49d495663bfecf590281c8f5412b33657430ab471b558206705","impliedFormat":1},{"version":"171c1840775746917e7b813c9df0fc0b84876f96623a6cfef3b3de7ea816b8c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"872201e32a629152e8bc7118e8977ac37a1a62ab6756c2ac3e6b53859f0a8fa1","impliedFormat":1},{"version":"d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","impliedFormat":1},{"version":"9eabbed4ee6e767a46b7b8cf92c92582fececcb8a8a58993efecd1b64fbd710f","impliedFormat":1},{"version":"ad10c3ee8fb00beacd77766ef76ed7d38a33005cd14d686c205812b43e988d68","impliedFormat":1},{"version":"c77e98f9940135457b5a12081418c52b47e0715b2abfb39661416e02c4c230b7","impliedFormat":1},{"version":"f9c8d7c051db78b71456926ab62b7d1a6320dcb33cec321614dfb5fe71379f9a","impliedFormat":1},{"version":"1ead640861cb88cda68781bb48857561ccf3dc29c1d910ddfd7210a64a59a8d6","impliedFormat":1},{"version":"06a9c1725ac0d79f625c185ea35a4283f37b138d9d4b7637962b4e5aa4f84196","impliedFormat":1},{"version":"44fb4b41f9891fd3b88e75aa31c766da599ec87e4c47385392fdf108780bcd67","impliedFormat":1},{"version":"bc61e949f7eb6ce4d266be816d6b8227483a0c01b32ca5918006d87d6701b0ad","impliedFormat":1},{"version":"f36d5d82f630f8ac27cce2fdaacc17b4eb58f2486b3af0ffedd36f80e932fc56","impliedFormat":1},{"version":"cd9d72081d4fbbeb75316681280cd5a730b3085c647b7095b13a8b41a99ab783","impliedFormat":1},{"version":"a0a2a4807d5a5293f6a8f30583240e9a5f4b0dc883a9db96d6d5c8feeb5ce4ac","impliedFormat":1},{"version":"f9380932ce1ad0107c2d53f5d424cdbb0377d3784c9458c3f4c3bff490890d80","impliedFormat":1},{"version":"7eabe0262b38886126647a4c0db8b21f7b5402d5a1834b612ff4349296b55f8c","impliedFormat":1},{"version":"c0325ff5049d2925e23cc9522212cbf09eabf355f79576d1445006822629a783","impliedFormat":1},{"version":"709eff8d7ebcc8d3ea407a64665b409dc8c5690d6531b80d6168de19fcd65f86","impliedFormat":1},{"version":"1327ebffd1c29b5973c7d76db45d0fce2fd3328ca68d737638b0deaa1fd11e7a","signature":"30450bb3a48f42ca7109fa47055b302d6777657c54db7a5346983900ff75ce97"},{"version":"1549eea3c3193d5efed4ee6861c68911c086bc42f6d1807bb5802c0e219abfc8","impliedFormat":99},{"version":"b506aaed3a8eb1ea7a2892c15ca062693649678bf275ed3b89847702fdeb422d","impliedFormat":1},{"version":"d6e343b259a8893b4394e5de83643436c79464c06b7506dce4c8513172ca9894","impliedFormat":1},{"version":"a9ddb2cb36a5e0e994996eac07ec6fdc7b5b5955422d2c7b02963e63329d16e8","impliedFormat":1},{"version":"e894438a039cbe28ba3e5417605100259311dd23ccc6632c2338e6b26188b532","impliedFormat":1},{"version":"f310f01e32fbf3c19d9f5c80e46352b5c8ba2b7ca84e91b20b1baeb0ee2f0f1d","impliedFormat":1},{"version":"d6f2a78a33a38ae98ac44153156e24823b202601b64a2d14b2d7c55a73f572d9","impliedFormat":1},{"version":"15540632f8e07d4b306b395274949097c1514b59209d657b5616a1b6aea11430","impliedFormat":1},{"version":"24d4202775844cc4507684d3e5eeffe883a37467b0ecb36366876bc5c7b3528e","impliedFormat":1},{"version":"bc736bc5c67f32af387397e557cb9e26ac298a3f7483f2b6ce1584c554d25f0a","impliedFormat":1},{"version":"5096f4cf6f96c3bb77bd63ce62f31cea35e63e09539d522062f3eff9e699e153","impliedFormat":1},{"version":"38988179442dfae57eeafc65398ca6d6c3f056566bf1ed2a44bb4809cfad73d5","impliedFormat":1},{"version":"01979b1a1e352b2349793ce0bad475ce2fea5a7c81d21b0caa36ed3745b428f1","impliedFormat":1},{"version":"17b9272b084dc20020ca084c895afe5b203d17f532b22609ece0b87e0aaf0012","signature":"d184d2d4ef321978fa5320d94a4193fdcae49e0ca32c08ba54a5cb6b0368b035"},{"version":"cbd8f7cbc0832353a1db0c80ffe50f4d623bcf992faac71b4aef9e0aa6f4f33e","impliedFormat":99},{"version":"643b5be3fb728581cdb973f3937606d4925a5270d367a38366e4ddc6b30ba688","impliedFormat":99},{"version":"f7b9aaeace9a3837c47fad74de94ba117751951904a6cb6f6a2340ca3a5052d2","impliedFormat":99},{"version":"b59a8f409202638d6530f1e9746035717925f196f8350ef188535d6b6f07ac30","impliedFormat":99},{"version":"10752162e9a90e7f4e6f92d096706911e209f5e6026bb0fe788b9979bf0c807b","impliedFormat":99},{"version":"91010341cfcb3809686aefe12ceaa794087fcd0c7d4d72fc81d567535c51f7b9","impliedFormat":99},{"version":"a5fa720bdcd335d6f01999c7f4c93fb00447782db3c2fad005cc775b1b37b684","impliedFormat":99},{"version":"c8657b2bf39dbb8bbe8223ca66b76e33c83a649c7655fd7042b50b50cf805c96","impliedFormat":99},{"version":"18282a2d197d5d3b187d6cfe784b0bfeb36dc3caed79d24705c284506c6a7937","impliedFormat":99},{"version":"bc7f372120474ef5e195f4c5627aa9136af9dfc52c3e81f5404641f3eb921b20","impliedFormat":99},{"version":"c897edb7e0074c2cb1a118ad1f144d4095a76e13023c1c9d31499a97f0943c6d","impliedFormat":99},{"version":"5123f400963c1ae260ba78bd27826dd5ada91cc3df088a913fb709906c2f0fed","impliedFormat":99},{"version":"f6c69d4211c1c0dc144101b7d564eec8992315a5b652108ab44e617fdfb64a9f","impliedFormat":99},{"version":"3a0b914cd5a33a695925999bc0e20988f625ff92224224a60356531cc248324b","impliedFormat":99},{"version":"3b9ef4448417e777778007a2abbfb171fbb400c4012560331330c89a8fd08599","impliedFormat":99},{"version":"fb9a7e5a2473dc818630a3a9a02a48906ccb7d1ee6becbbbbeca31f85b84e74f","impliedFormat":99},{"version":"80ae4448e40828f253d49dd0cba14ddaa948c4988d54d6bbd558015c4727f1f7","impliedFormat":99},{"version":"36ccd9bc1c33bf3cce297133d37acfc376d89ea0aff3111cf1792498ae5732d4","impliedFormat":99},{"version":"66ef9bd718776792705d01be029559b4f13c7978727dc364318fde5645d26abc","impliedFormat":99},{"version":"a5bb15e8903456dedd2a0c6c7f29b520b75a02fc44b36248fbac98e8b3106f2e","impliedFormat":99},{"version":"7087a77f8804d330429778346f2adf8418a4641b159f621938604aa20386887a","impliedFormat":99},{"version":"6d2e4114ccd05fb0cd657cfb73419eeb7e1464446aabfe4e652d4ad460c1fd1a","impliedFormat":99},{"version":"a52173b00ca45c107162f9f5501af38362ef8c587e76e5813f1aeb1f54772aec","impliedFormat":99},{"version":"8478f046870fe3053785d1fdb8fc3d4972437fbb230771841eb3945edda1cdce","impliedFormat":99},{"version":"8827ca3cd0a35d4a2da2b460620586a68dc0681b19f08559bc382f453ae0a915","impliedFormat":99},{"version":"5c56eea87bcede67b8df6a08185aaa023080fe74f21e7d262e5e0c5885ea6747","impliedFormat":99},{"version":"2a6140dea5f4014fbf2c301bcefcac865d9b5354ccc09865b309ec25b170eb24","impliedFormat":99},{"version":"62fbeac38ecc6d7b5ffe8b9c10c60a519963c8bc5a06d7260446a45fe920c01f","impliedFormat":99},{"version":"782f6c7ba1fa143a493e014cc02186c0cf19ce12189bcba7745c614e17e11a38","impliedFormat":99},{"version":"ba28b11eba525914120dda140fc01e3db951591724287eef1a6d061ee0a13ea0","impliedFormat":99},{"version":"6cdb8c1473687522f8ef65e1620bb8d703a02f4c570c662bd99ebf442ec9c3ff","impliedFormat":99},{"version":"799e4c2b1aae2c8531a20544168c528c7994f13bbce20f4813e30cde1ca72cb9","impliedFormat":99},{"version":"804a7dbd4c64f201d927b23b8563affa0325ec4bd3eeab339933cc85fcbbe4c1","impliedFormat":99},{"version":"c0a7ac0e0b21d67124311e0a70138df950cfa22360ae582c5d7b95a9a31f3436","impliedFormat":99},{"version":"c39a02bcdde4e5cf742febb47995c209f651249aa3f339d8981b47eb157dbc7f","impliedFormat":99},{"version":"3b63f1706adba31dd86669c3745ce127e1d80b83b1376942a5ae3653089b526f","impliedFormat":99},{"version":"d93c86ac706e8a3eb5c4fd2c3965d793c192438b44b21f94a422029d037113cd","impliedFormat":99},{"version":"c775b9469b2cbb895386691568a08c5f07e011d79531c79cb65f89355d324339","impliedFormat":99},{"version":"f8b830bc7cf2ebcadb5381cb0965e9e2e5e1006a96d5569729fc8eae99f1e02b","impliedFormat":99},{"version":"6465f2a53c52cb1cf228a7eeab54e3380b8971fed677deb08fa082e72854e24c","impliedFormat":99},{"version":"ea19638a70714d118d84c50b79220be781a8a95c62b79e1b695f6ea3c8f9306e","impliedFormat":99},{"version":"74965fc49475caca96b090c472f2c3e2085e3be05ce34639e9aabeccd5fb71aa","impliedFormat":99},{"version":"9640153ef1838657c1de17d486d9755fb714407156ec0be12acd132db4732c7f","impliedFormat":99},{"version":"b21157929842b9593200c73299fffde810be1b6c2554437e319db0025ecd53ae","impliedFormat":99},{"version":"cb929086d0d062bb948a1726e87c604db6387d885a846838a4da40e006c51deb","impliedFormat":99},{"version":"cb2e0b454aed00d0109fa243d681650916750a960736755edb673d4c2fc495dc","impliedFormat":99},{"version":"2a5c6f30ace32a85b24dec0f03525ed0a40190104be5876bd9107f92cca0166b","impliedFormat":99},{"version":"4d752856defdcbb39e2915429f85a92aac94406eb1bdef2855b908dde5bc013b","impliedFormat":99},{"version":"515caaccdd09e635befbfd45f023015a42d375e0536c9786412cf4dab847ff65","impliedFormat":99},{"version":"6cde23545d1e8d78b222c594e0a66de065311e0c6b0e3989feffb5c7f6b66560","impliedFormat":99},{"version":"a025111523c3c2c24484c1af1bfcab340490817de7e4b247b700ca7ee203a5cc","impliedFormat":99},{"version":"d7781fc81737645eeef3b7107c6796f95fb4791cb1a908b1f0254117b2536477","impliedFormat":99},{"version":"156d4829532c7d26f824ab7bb26b1eced1bfaf5711d426e95357004c43f40d98","impliedFormat":99},{"version":"2d9a0ac7d80da8b003ac92445f47891c3acdca1517fb0a0ca3006e2d71e1d2ab","impliedFormat":99},{"version":"5c62b984997b2e15f2d2ae0f0202121738db19901dc2bad5fe6a7a2d6af871d3","impliedFormat":99},{"version":"8c04e9d03324f465d5fb381371c06799cd06234f2aa83bdf4318cb9728132b80","impliedFormat":99},{"version":"616102e59c37f0f84d209b865f84fb186a29bb0bf112bd975be097113f854b89","impliedFormat":99},{"version":"a14590df3ef464f8a9dff9514df70c7aeff05c999f447e761ec13b8158a6cab0","impliedFormat":99},{"version":"98cbb6e3aa1b6610e7234ff6afa723b9cb52caf19ecb67cf1d96b04aa72b8f88","impliedFormat":99},{"version":"4bd91244643feda6c0f2fb50f58ee3c2e6af29dd473dc5fb70bb1cbd2eade134","impliedFormat":99},{"version":"f9575d2a80566ba8d17d2260526ffb81907386aa7cb21508888fb2e967911dca","impliedFormat":99},{"version":"d388e40b946609b83a5df1a1d12a0ea77168ee2407f28eac6958d6638a3fbf69","impliedFormat":99},{"version":"83e8adc1946281f15747109c98bd6af5ce3853f3693263419707510b704b70e5","impliedFormat":99},{"version":"64fb32566d6ac361bdff2fafb937b67ee96b0f4b0ea835c2164620ec2ad8ea09","impliedFormat":99},{"version":"678b6be72cdcec74f602d366fef05ba709aa60816d4abf2a4faff64a68cdfc1f","impliedFormat":99},{"version":"b0b8ac2d71ea2251f4f513c7d644db07a46446a6e4bccbcc23ccbefbe9ac3ac4","impliedFormat":99},{"version":"c7cae4f5befd90da675906c456cc35244edad7cdcedb51fb8f94d576f2b52e5e","impliedFormat":99},{"version":"a00e19c6ad43bfc4daf759038e309b797b59cc532d68f4556083022ed1d4b134","impliedFormat":99},{"version":"c4e720b6dd8053526bedd57807a9914e45bb2ffbda801145a086b93cf1cda6d5","impliedFormat":99},{"version":"1dc465a4431aaa00bb80452b26aa7e7ec33aca666e4256c271bdf04f18fef54d","impliedFormat":99},{"version":"ea5916d20a81cc0fd49bd783fce0837b690f2d39e456d979bc4b912cb89ceefc","impliedFormat":99},{"version":"dccc0a4cbe7cbabcf629ef783d3226ed28649f1215eb577a2e2cdb1129347a37","impliedFormat":99},{"version":"add54a06a7a910f6ed0195282144d58f24e375b7d16bd4a5c5b9d91bb4b5e184","impliedFormat":99},{"version":"dc03aa8332b32c2d7cd0f4f72b4a8cc61bbc2806eb18fa841ec3de56b8e806a6","impliedFormat":99},{"version":"dd56e1c623e5b14260b6d817f4f26d6cc63c77f5bf55321306d118617fc20c7d","impliedFormat":99},{"version":"d4cb93b91ab77070c8baebdcc5c951954ee219900795cc7e34aaef6be0081a2b","impliedFormat":99},{"version":"93ff68f1f2b1be14e488d472820e2cbc3c1744e4b55aea9a12288f612e8cf56f","impliedFormat":99},{"version":"7e4d2c8b02fc2529a60bd495322092644b5cf2f391b10bea4bcae8efea227c32","impliedFormat":99},{"version":"219b5d42961185874397f62f12d64e74e0825d260054984e0248010de538015e","impliedFormat":99},{"version":"27b5570022c0f24a093c0718de58a4f2d2b4124df0f7ff9b9786874c84c8af27","impliedFormat":99},{"version":"ad37fb454bd70dd332bb8b5047fbc0cf00ddfc48972d969a8530ab44998b7e70","impliedFormat":99},{"version":"265bdbd67761e88d8be1d91a21ec53bb8915e769a71bdc3f0e1e48fdda0a4c6e","impliedFormat":99},{"version":"817e174de32fb2f0d55d835c184c1248877c639885fcaed66bab759ff8be1b59","impliedFormat":99},{"version":"ea76d1231ea876a2a352eae09d90ae6ef20126052e0adfdc691437d624ebcc47","impliedFormat":99},{"version":"0961671995b68a718e081179cfa23c89410b97031880cf0fea203f702193385a","impliedFormat":99},{"version":"b6592f9a1102da83ba752d678e5e94af9443bf1ab70666f2f756ba1a85b8adfc","impliedFormat":99},{"version":"d1c933acc6c2847d38c7a29c3d154ef5a6b51e2ad728f682e47717524683e563","impliedFormat":99},{"version":"44380b6f061bbb7d7b81b3d9973c9a18b176e456eee4316a56c9e2932df77bfd","impliedFormat":99},{"version":"e558775330d82e3a2e16a2442c1332572f3cb269a545de3952ed226473e4ccdd","impliedFormat":99},{"version":"32d5ec19fbe22a610e11aa721d9947c1249e59a5b8e68f864d954f68795982d1","impliedFormat":99},{"version":"e1fa85a34e9710a03fb4e68a8b318b50cde979325a874a311c0429be2e9a6380","impliedFormat":99},{"version":"998c9ae7ae683f16a68d9204b8dea071377d886ed649f7da777dce408ede67b7","impliedFormat":99},{"version":"e02fe9a276b87b4c10c56cbcee81f8c6437d21a0a68eeb705e23105c3620677e","impliedFormat":99},{"version":"d56bc539844eceaaae11714c214add744ace0227da77c91e62d8c3cd0ee78964","impliedFormat":99},{"version":"9199f6ead2ae205b4a0efe8b427706b7b9856f2fb51587ca25e9161cfee2b163","impliedFormat":99},{"version":"120a62730ef5b8b61b4a82005c421506d0bf4f5a2fbe84b88149c79c894900da","impliedFormat":99},{"version":"3ca2a4b5f57c480c798f8310b3d3c10dc24fa73d5618889a27835eb80f783fa3","impliedFormat":99},{"version":"faf92d569360b567c70c11b08aadd997fb2ca1847687f370eaea8eda19f807f2","impliedFormat":99},{"version":"38e878406954753d87c2b0db8b5146da5abb86c44139526cba2046cc70fbd1d4","impliedFormat":99},{"version":"c500d215a2e0490d77f0f926507adac154bfc5cfcb855ffdbe2c600e67fbf36f","impliedFormat":99},{"version":"6a22003e006988f31654d8bf884208ff753d64bcb980a89e4c5eb933bf446d09","impliedFormat":99},{"version":"3a8493e70ee5fc14e8e9a028e5e3b1df79acbd4bc4ded50725d2ad4927a9c101","impliedFormat":99},{"version":"7f02dfc714a76c78325cdfbc138b57531103490dc9d88affdb3f4a54fdd879a0","impliedFormat":99},{"version":"d3fcf2df688ce5c6d8b90d8c9057b505042342ce97e2dccd26f02a185a7bb8d3","impliedFormat":1},{"version":"4f2fd8612d69a167ff721a17766c06b69823bed7da629a4c2a177e230c4f6b30","signature":"05f0c8697e687c5b3e96af1382b1d608e108ffb0e125ec1a9179cf95e02a44e2"},{"version":"7d579493039821f48578885946a980f647bb6c1c6d38676dd3f7abff5cbd3c78","signature":"26b2c7090775b17cfcdad541205e2300b5cbb85972f2ea98f68df6c0220e2591"},{"version":"0b6045971be17f729eaa401d18c825034a2e79736ecf46593b0d78c4574ff9bd","signature":"51f8d1c5df4f346b1f5b068e7198bf5bf3309fbc06bc7f7243de40526ce8f67e"},{"version":"9a20dddd78d81631f2fcedd841bbae67e3ab12173a4df0fa900bac9f563a8976","signature":"a84fd056d513809fd4ee2e1e86db3416ad8a3bda66b1799c3b1ef79021f40106"},{"version":"97d5a77f9d052422b6aeaaed289fb4d6cab645e0a57ff1057f6edd84438c0e63","signature":"07cb0985f6d65d8370ed158dfd67afc75c3c3f97fd7f0bb91cef4dfa28949b8f"},{"version":"6d4a122c3f1116043805da81a5d21e30665a0a25f381a61c5690044161a83a96","signature":"39f4c967c0e421b1357608b1a5f2cacbab9526c18d04c672485b9d5098307b49"},{"version":"c50d3747a44242b8f06a8a8756e57351fc20fba85f516a3142f953529b7b8f86","signature":"950ae5cba7fa369188708ff25f6b5c11ba2a54a4c2cb68e87e7ce49a6eb0b5ae"},{"version":"5807fe77f8264c43e5c9ad7c00043a490afb82d540e99ac04062589d17a2b47f","signature":"4ece736eebbeb0689b6e12ab7230ec54d089cc47d6df225b3dcb52d0d692c938"},{"version":"610b2cf0096c101d91d090543cb6006861c094b9a99e6460647e1e123f35c374","signature":"7a82fedd02336e5803ade3d821d47bafbf59d0bc0228a446f55aae8927bff0b7"},{"version":"18a6c46bfd7106816681317a3892d0a747dea636b02815ea91e02324aea37a16","signature":"e1edfd0da2263b3b5ad0f3f84ddfdb8abbfcf550435e13035fe05b95b9d09c34"},{"version":"e1c91acca116aaa79183506706509720be1a06ad128f5780e26ecbf389185128","signature":"be0bbed2d521e60f52d3129e2f5946d35a9ae6a839936dc5df631e808f249217"},{"version":"679456a413c3036c2e9e6604b86d04d16fb26316dfc99a8a236cc6befc7976fd","signature":"158f02583285a918e113df7e7bad88c3021d2a3f583b213cd59180acf0116ffb"},{"version":"5554deec1f4ab2af8938de8877c0840734c5f777f25ab5906a13e522750b792a","signature":"1d0dd47e22021e412bd20fbabd46cecc93bde4c4366e114749cca3f88dc3acaf"},{"version":"b96995e200a88c9852b16171cc3bce082bc71723ac5726b4e835bd0be952568c","signature":"ad844f8565c1b9dc6fc2c3b9d64a71643e925b8e3cf1711f5769577d65449d2d"},{"version":"39b176fc0e11efd7146a4b40e8a0db2041cd0bf2787e297caeb987e1810a8621","signature":"b539f9b318fa29264ee8feaa38e7fda71bba167cd9a04e507eee058877c27e5b"},{"version":"aaf293f3badeb976c06193066bfaa2b27074f09d43777485a80d540738e1ef4a","signature":"992118ee66627dc9f38760caddaeb1b2b05c402c90b95a7c2f3c40e67c830cb1"},{"version":"3299fcd7318fb534ee9f7e087392e4629f8536aef580f455381e812356526b57","signature":"3487e2a701208382447462ef7f65d2c76ef6937ed378c46da6d83cd37a0748bb"},{"version":"41fa04b2e0d005aa93c76dc6478a198db487544ffc980eb3fd3be4536ed76edd","signature":"55608c9f95d294cb8054fd3aba967c05acaf37f8498ddafff9d487f9608bf2ca"},{"version":"4eef142eb0be69e45a5adbeaebb1dc9b0d74e4c4c7e3b3f8258f524eca2152db","signature":"7d90a229c3fedf0111a442fe775324b5fe67b1aba58c23427efc783805b42cfd"},{"version":"209ce133487ed5c01680c37e312baeac924275d44b3bad52dd5078f88e32ec6c","signature":"61b4ac221713ef68ae0904ecbcfcf8ebd14f0743ee559439081d645d9e4ff4b7"},{"version":"63282e4059c491b7be4f2c3f2a709060c54cc2f32926eae555b5acae1a6f9239","signature":"0270af397c4c6bcac96b273e7b2125b61233e7bf0582d2192c5b47ade767c51a"},{"version":"6bc2d79c956f6b227213e4fa27a55161b996c13a7a0caf5c88efe4d9c0d9533c","signature":"aea120584abb4c22ce8a435529da51474c05683a036381a8e6ebac574232c038"},{"version":"c90e2c394a060132bd8c1105b0817a402cc19adaecc8520e086547b64fd2c195","signature":"7e5692b499a3c831b9d920b9083300abf9c71057d7510ee28672522d2f244053"},{"version":"e6e287d075ee902957100300582c11582e22d6965d90f6c078a2241ccb8bb01d","signature":"2456efc4268be474e87530bea85794b3b84574f2058a007b355d59e8e332f693"},{"version":"8ed621fe85bcf7d6055d8b1c51c84147d609cd909863d99b7a2866d0e866c78c","signature":"8dee9e478b53ca3f7a5a774cd543bf4555b904cff46b3f1c79ba595078ca4704"},{"version":"b103346516f3f2cfaf280ca00860219182d8f56387e22ef7517316bb3d731bc2","signature":"ed6c5babb90739a8e0a24a38c2faaf430205a2a68e6d7093d5e1d741c966d2c1"},{"version":"f6fc5414f67cfbdd8b0680883366238104824d2ffa3fab061a15e16e14f7632d","signature":"e04750852bc523c8dd3356cac8ddf26f1b5a63cc25d9137d9429460d2ffa064a"},{"version":"798f5bd2f7df18335c970f864575ad6a97a6a7a2d0024d2f16e16412d1881abd","signature":"958faeab9fba845f89d0282b377725e965df3cd7cde70f6e927fe0a9fdda6282"},{"version":"24bf1347b4775a9e4193dc031dcfa203fd2db3338dfc3626f77296ff2b9b4ba5","signature":"2d03c92ad4bef1d8c4416c7c8f430b344d5713301e890b8d73b0c9580abe6eee"},{"version":"fffdc96d69a88767af857b3aab28fb88cc2b576e8c5e5458d0eeb363fdd12d3e","signature":"159bef27d3b175042b7b18d0e1d3b1ef9cd05e5b809a81e3f9fdae4d81e5bb3b"},{"version":"d2e64a6f25013b099e83bfadb2c388d7bef3e8f3fdb25528225bbc841e7e7e3a","impliedFormat":99},{"version":"369ba5259e66ca8c7d35e3234f7a2a0863a770fdb8266505747c65cf346a0804","impliedFormat":99},{"version":"64d984f55025daf604f670b7dfd090ea765f2098aee871174ef2ee3e94479098","impliedFormat":99},{"version":"f147b6710441cf3ec3234adf63b0593ce5e8c9b692959d21d3babc8454bcf743","impliedFormat":99},{"version":"e96d5373a66c2cfbbc7e6642cf274055aa2c7ff6bd37be7480c66faf9804db6d","impliedFormat":99},{"version":"02bcdd7a76c5c1c485cbf05626d24c86ac8f9a1d8dc31f8924108bbaa4cf3ba9","impliedFormat":99},{"version":"c874ab6feac6e0fdf9142727c9a876065777a5392f14b0bbcf869b1e69eb46b5","impliedFormat":99},{"version":"7c553fc9e34773ddbaabe0fa1367d4b109101d0868a008f11042bee24b5a925d","impliedFormat":99},{"version":"9962ce696fbdce2421d883ca4b062a54f982496625437ae4d3633376c5ad4a80","impliedFormat":99},{"version":"e3ea467c4a7f743f3548c9ed61300591965b1d12c08c8bb9aaff8a002ba95fce","impliedFormat":99},{"version":"4c17183a07a63bea2653fbfc0a942b027160ddbee823024789a415f9589de327","impliedFormat":99},{"version":"3e2203c892297ea44b87470fde51b3d48cfe3eeb6901995de429539462894464","impliedFormat":99},{"version":"c84bf7a4abc5e7fdf45971a71b25b0e0d34ccd5e720a866dd78bb71d60d41a3f","impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"6cd8f2410e4cf6d7870f018b38dcf1ac4771f06b363b5d71831d924cda3c488d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","impliedFormat":1},{"version":"6222e987b58abfe92597e1273ad7233626285bc2d78409d4a7b113d81a83496b","impliedFormat":1},{"version":"cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","impliedFormat":1},{"version":"8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87","impliedFormat":99},{"version":"bacf2c84cf448b2cd02c717ad46c3d7fd530e0c91282888c923ad64810a4d511","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","impliedFormat":99},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","impliedFormat":1},{"version":"257b83faa134d971c738a6b9e4c47e59bb7b23274719d92197580dd662bfafc3","impliedFormat":99},{"version":"e01ea380015ed698c3c0e2ccd0db72f3fc3ef1abc4519f122aa1c1a8d419a505","impliedFormat":99},{"version":"5ada1f8a9580c0f7478fe03ae3e07e958f0b79bdfb9dd50eeb98c1324f40011b","impliedFormat":99},{"version":"a8301dc90b4bd9fba333226ee0f1681aeeff1bd90233a8f647e687cb4b7d3521","impliedFormat":99},{"version":"e3225dc0bec183183509d290f641786245e6652bc3dce755f7ef404060693c35","impliedFormat":99},{"version":"09a03870ed8c55d7453bc9ad684df88965f2f770f987481ca71b8a09be5205bc","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"2cdd50ddc49e2d608ee848fc4ab0db9a2716624fabb4209c7c683d87e54d79c5","impliedFormat":99},{"version":"e431d664338b8470abb1750d699c7dfcebb1a25434559ef85bb96f1e82de5972","impliedFormat":99},{"version":"2c4254139d037c3caca66ce291c1308c1b5092cfcb151eb25980db932dd3b01a","impliedFormat":99},{"version":"970ae00ed018cb96352dc3f37355ef9c2d9f8aa94d7174ccd6d0ed855e462097","impliedFormat":99},{"version":"d2f8dee457ef7660b604226d471d55d927c3051766bdd80353553837492635c3","impliedFormat":99},{"version":"110a503289a2ef76141ffff3ffceb9a1c3662c32748eb9f6777a2bd0866d6fb1","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"310e6b62c493ce991624169a1c1904015769d947be88dc67e00adc7ebebcfa87","impliedFormat":99},{"version":"62fefda288160bf6e435b21cc03d3fbac11193d8d3bd0e82d86623cca7691c29","impliedFormat":99},{"version":"fcc46a8bcbf9bef21023bba1995160a25f0bc590ca3563ec44c315b4f4c1b18a","impliedFormat":99},{"version":"0309a01650023994ed96edbd675ea4fdc3779a823ce716ad876cc77afb792b62","impliedFormat":99},{"version":"f13d7beeea58e219daef3a40e0dc4f2bd7d9581ac04cedec236102a12dfd2090","impliedFormat":99},{"version":"669573548930fb7d0a0761b827e203dc623581e21febf0be80fb02414f217d74","impliedFormat":99},{"version":"48c411efce1848d1ed55de41d7deb93cbf7c04080912fd87aa517ed25ef42639","affectsGlobalScope":true,"impliedFormat":1},{"version":"a094636c05f3e75cb072684dd42cd25a4c1324bec4a866706c85c04cecd49613","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"9a3e2c85ec1ab7a0874a19814cc73c691b716282cb727914093089c5a8475955","impliedFormat":99},{"version":"cbdc781d2429935c9c42acd680f2a53a9f633e8de03290ec6ea818e4f7bff19a","impliedFormat":99},{"version":"9f6d9f5dd710922f82f69abf9a324e28122b5f31ae6f6ce78427716db30a377e","impliedFormat":99},{"version":"ac2414a284bdecfd6ab7b87578744ab056cd04dd574b17853cd76830ef5b72f2","impliedFormat":99},{"version":"c3f921bbc9d2e65bd503a56fbc66da910e68467baedb0b9db0cc939e1876c0d7","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"0cc99fbb161d78729d71fad66c6c363e3095862d6277160f29fa960744b785c6","affectsGlobalScope":true,"impliedFormat":99},{"version":"74428cf29233a4b252a21e458bc53ace78903b86426b6bdd1ccbe3048cc5771a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"90391c3d678cd0ede5f8cb1176469412edd5c07ed98ddad9cdf3f73061eac139","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5809603016fca24249829d608cf586786449a38ab21220435bb3a5382ed568a7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ba5b888a4b04d12569e9be2a520df3d73e4a76c03403179038132477c9bf627b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a7f6bd7f7abeaa50c2e029e3fa7526b990eba47e69d4cfec3e08a2b41fc22ba9","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"13d43666c55b9153815a92c4d3f807833df3491ebe4009cd46c3879b9a3f5d1a","affectsGlobalScope":true,"impliedFormat":99}],"root":[164,178,[283,312],[391,395]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99},"referencedMap":[[149,1],[153,2],[82,3],[156,4],[157,5],[158,6],[159,6],[89,7],[151,8],[84,9],[83,3],[152,10],[90,11],[91,12],[85,13],[86,14],[92,3],[88,13],[93,8],[150,15],[155,16],[154,3],[163,17],[160,3],[162,18],[161,19],[87,20],[326,3],[94,21],[95,21],[97,22],[98,23],[99,24],[100,25],[101,26],[102,27],[103,28],[104,29],[105,30],[106,31],[107,31],[109,32],[108,33],[110,32],[111,34],[112,35],[96,36],[146,3],[113,37],[114,38],[115,39],[147,40],[116,41],[117,42],[118,43],[119,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,50],[127,51],[128,52],[130,53],[129,54],[131,55],[132,56],[133,57],[134,58],[135,59],[136,60],[137,61],[138,62],[139,63],[140,64],[141,65],[142,66],[143,67],[144,68],[145,69],[377,3],[378,70],[379,71],[382,72],[381,3],[313,3],[324,73],[319,74],[322,75],[369,76],[358,3],[361,77],[360,78],[372,78],[359,79],[380,3],[321,80],[323,80],[315,81],[318,82],[366,81],[320,83],[314,3],[148,3],[165,3],[179,3],[257,84],[258,85],[255,85],[256,3],[261,86],[260,87],[259,88],[183,3],[185,89],[184,85],[186,90],[262,3],[263,3],[266,91],[264,3],[265,3],[235,92],[236,93],[237,94],[233,95],[234,96],[187,85],[196,97],[188,85],[190,85],[191,3],[189,85],[192,85],[193,85],[194,85],[195,98],[280,99],[211,100],[212,3],[217,101],[214,102],[213,3],[215,3],[216,103],[281,104],[210,105],[219,106],[220,3],[203,107],[224,108],[209,109],[207,110],[243,111],[206,112],[205,113],[228,114],[230,114],[229,114],[227,115],[232,114],[231,115],[238,116],[226,117],[239,118],[242,119],[221,120],[240,114],[241,114],[222,121],[223,122],[208,123],[225,124],[218,125],[198,126],[200,103],[199,126],[202,127],[201,128],[180,85],[182,129],[181,3],[244,130],[245,3],[204,3],[246,85],[254,131],[197,129],[247,3],[248,85],[250,132],[249,133],[251,85],[252,85],[253,85],[267,134],[275,135],[279,136],[276,3],[277,103],[274,137],[278,138],[273,139],[270,140],[269,141],[271,140],[268,3],[272,141],[387,142],[389,143],[388,144],[386,145],[385,3],[169,146],[167,147],[170,148],[175,3],[172,147],[173,149],[176,150],[168,147],[171,151],[174,147],[166,3],[282,152],[177,153],[350,154],[348,155],[349,156],[337,157],[338,155],[345,158],[336,159],[341,160],[351,3],[342,161],[347,162],[353,163],[352,164],[335,165],[343,166],[344,167],[339,168],[346,154],[340,169],[328,170],[327,171],[334,3],[370,3],[316,3],[317,172],[80,3],[81,3],[13,3],[15,3],[14,3],[2,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[3,3],[24,3],[25,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[59,3],[58,3],[60,3],[61,3],[10,3],[62,3],[63,3],[64,3],[11,3],[65,3],[66,3],[67,3],[68,3],[69,3],[1,3],[70,3],[71,3],[12,3],[75,3],[73,3],[78,3],[77,3],[72,3],[76,3],[74,3],[79,3],[367,173],[364,174],[365,173],[368,175],[363,3],[357,176],[354,177],[332,178],[333,3],[330,179],[329,3],[331,180],[355,3],[356,181],[371,182],[362,183],[325,3],[383,184],[373,185],[384,186],[376,187],[375,188],[374,189],[390,190],[396,191],[307,192],[305,193],[298,194],[296,195],[310,192],[291,196],[303,197],[391,198],[392,199],[292,200],[290,3],[294,201],[293,202],[295,203],[300,204],[304,205],[308,206],[309,207],[311,208],[312,209],[306,210],[301,3],[393,211],[285,3],[164,3],[299,212],[284,213],[297,3],[302,214],[283,215],[178,216],[394,217],[288,218],[395,219],[289,218],[286,220],[287,3]],"latestChangedDtsFile":"./types/util/cacheValidation.test.d.ts","version":"5.9.3"}
1
+ {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/config.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/enums.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/database.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/network.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/payload.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/types.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/signature.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/action.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/kwilSigner.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/message.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/resreq.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/tx.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/axios/index.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/api.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/txQuery.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/auth.d.ts","../node_modules/@trufnetwork/kwil-js/dist/core/jsonrpc.d.ts","../node_modules/@trufnetwork/kwil-js/dist/api_client/client.d.ts","../node_modules/@trufnetwork/kwil-js/dist/funder/funding_types.d.ts","../node_modules/@trufnetwork/kwil-js/dist/funder/funder.d.ts","../node_modules/@trufnetwork/kwil-js/dist/auth/auth.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/kwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/node/nodeKwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/client/web/webKwil.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/dbid.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/parameterEncoding.d.ts","../node_modules/@trufnetwork/kwil-js/dist/utils/kwilEncoding.d.ts","../node_modules/@trufnetwork/kwil-js/dist/index.d.ts","../src/types/other.ts","../node_modules/crypto-hash/index.d.ts","../node_modules/monads-io/dist/types.d.ts","../node_modules/monads-io/dist/either.d.ts","../node_modules/monads-io/dist/maybe.d.ts","../node_modules/monads-io/dist/convert.d.ts","../node_modules/monads-io/dist/either.exports.d.ts","../node_modules/monads-io/dist/maybe.exports.d.ts","../node_modules/monads-io/dist/identity.d.ts","../node_modules/monads-io/dist/identity.exports.d.ts","../node_modules/monads-io/dist/runtime.d.ts","../node_modules/monads-io/dist/errors.d.ts","../node_modules/monads-io/dist/index.d.ts","../node_modules/monads-io/index.d.ts","../src/util/StreamId.ts","../node_modules/ethers/lib.esm/_version.d.ts","../node_modules/ethers/lib.esm/utils/base58.d.ts","../node_modules/ethers/lib.esm/utils/data.d.ts","../node_modules/ethers/lib.esm/utils/base64.d.ts","../node_modules/ethers/lib.esm/address/address.d.ts","../node_modules/ethers/lib.esm/address/contract-address.d.ts","../node_modules/ethers/lib.esm/address/checks.d.ts","../node_modules/ethers/lib.esm/address/index.d.ts","../node_modules/ethers/lib.esm/crypto/hmac.d.ts","../node_modules/ethers/lib.esm/crypto/keccak.d.ts","../node_modules/ethers/lib.esm/crypto/ripemd160.d.ts","../node_modules/ethers/lib.esm/crypto/pbkdf2.d.ts","../node_modules/ethers/lib.esm/crypto/random.d.ts","../node_modules/ethers/lib.esm/crypto/scrypt.d.ts","../node_modules/ethers/lib.esm/crypto/sha2.d.ts","../node_modules/ethers/lib.esm/crypto/signature.d.ts","../node_modules/ethers/lib.esm/crypto/signing-key.d.ts","../node_modules/ethers/lib.esm/crypto/index.d.ts","../node_modules/ethers/lib.esm/utils/maths.d.ts","../node_modules/ethers/lib.esm/transaction/accesslist.d.ts","../node_modules/ethers/lib.esm/transaction/authorization.d.ts","../node_modules/ethers/lib.esm/transaction/address.d.ts","../node_modules/ethers/lib.esm/transaction/transaction.d.ts","../node_modules/ethers/lib.esm/transaction/index.d.ts","../node_modules/ethers/lib.esm/providers/contracts.d.ts","../node_modules/ethers/lib.esm/utils/fetch.d.ts","../node_modules/ethers/lib.esm/providers/plugins-network.d.ts","../node_modules/ethers/lib.esm/providers/network.d.ts","../node_modules/ethers/lib.esm/providers/formatting.d.ts","../node_modules/ethers/lib.esm/providers/provider.d.ts","../node_modules/ethers/lib.esm/providers/ens-resolver.d.ts","../node_modules/ethers/lib.esm/providers/abstract-provider.d.ts","../node_modules/ethers/lib.esm/hash/authorization.d.ts","../node_modules/ethers/lib.esm/hash/id.d.ts","../node_modules/ethers/lib.esm/hash/namehash.d.ts","../node_modules/ethers/lib.esm/hash/message.d.ts","../node_modules/ethers/lib.esm/hash/solidity.d.ts","../node_modules/ethers/lib.esm/hash/typed-data.d.ts","../node_modules/ethers/lib.esm/hash/index.d.ts","../node_modules/ethers/lib.esm/providers/signer.d.ts","../node_modules/ethers/lib.esm/providers/abstract-signer.d.ts","../node_modules/ethers/lib.esm/providers/community.d.ts","../node_modules/ethers/lib.esm/providers/provider-jsonrpc.d.ts","../node_modules/ethers/lib.esm/providers/provider-socket.d.ts","../node_modules/ethers/lib.esm/providers/provider-websocket.d.ts","../node_modules/ethers/lib.esm/providers/default-provider.d.ts","../node_modules/ethers/lib.esm/providers/signer-noncemanager.d.ts","../node_modules/ethers/lib.esm/providers/provider-fallback.d.ts","../node_modules/ethers/lib.esm/providers/provider-browser.d.ts","../node_modules/ethers/lib.esm/providers/provider-alchemy.d.ts","../node_modules/ethers/lib.esm/providers/provider-blockscout.d.ts","../node_modules/ethers/lib.esm/providers/provider-ankr.d.ts","../node_modules/ethers/lib.esm/providers/provider-cloudflare.d.ts","../node_modules/ethers/lib.esm/providers/provider-chainstack.d.ts","../node_modules/ethers/lib.esm/contract/types.d.ts","../node_modules/ethers/lib.esm/contract/wrappers.d.ts","../node_modules/ethers/lib.esm/contract/contract.d.ts","../node_modules/ethers/lib.esm/contract/factory.d.ts","../node_modules/ethers/lib.esm/contract/index.d.ts","../node_modules/ethers/lib.esm/providers/provider-etherscan.d.ts","../node_modules/ethers/lib.esm/providers/provider-infura.d.ts","../node_modules/ethers/lib.esm/providers/provider-pocket.d.ts","../node_modules/ethers/lib.esm/providers/provider-quicknode.d.ts","../node_modules/ethers/lib.esm/providers/provider-ipcsocket.d.ts","../node_modules/ethers/lib.esm/providers/index.d.ts","../node_modules/ethers/lib.esm/utils/errors.d.ts","../node_modules/ethers/lib.esm/utils/events.d.ts","../node_modules/ethers/lib.esm/utils/fixednumber.d.ts","../node_modules/ethers/lib.esm/utils/properties.d.ts","../node_modules/ethers/lib.esm/utils/rlp-decode.d.ts","../node_modules/ethers/lib.esm/utils/rlp.d.ts","../node_modules/ethers/lib.esm/utils/rlp-encode.d.ts","../node_modules/ethers/lib.esm/utils/units.d.ts","../node_modules/ethers/lib.esm/utils/utf8.d.ts","../node_modules/ethers/lib.esm/utils/uuid.d.ts","../node_modules/ethers/lib.esm/utils/index.d.ts","../node_modules/ethers/lib.esm/abi/coders/abstract-coder.d.ts","../node_modules/ethers/lib.esm/abi/fragments.d.ts","../node_modules/ethers/lib.esm/abi/abi-coder.d.ts","../node_modules/ethers/lib.esm/abi/bytes32.d.ts","../node_modules/ethers/lib.esm/abi/typed.d.ts","../node_modules/ethers/lib.esm/abi/interface.d.ts","../node_modules/ethers/lib.esm/abi/index.d.ts","../node_modules/ethers/lib.esm/constants/addresses.d.ts","../node_modules/ethers/lib.esm/constants/hashes.d.ts","../node_modules/ethers/lib.esm/constants/numbers.d.ts","../node_modules/ethers/lib.esm/constants/strings.d.ts","../node_modules/ethers/lib.esm/constants/index.d.ts","../node_modules/ethers/lib.esm/wallet/base-wallet.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist-owl.d.ts","../node_modules/ethers/lib.esm/wordlists/lang-en.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlist-owla.d.ts","../node_modules/ethers/lib.esm/wordlists/wordlists.d.ts","../node_modules/ethers/lib.esm/wordlists/index.d.ts","../node_modules/ethers/lib.esm/wallet/mnemonic.d.ts","../node_modules/ethers/lib.esm/wallet/hdwallet.d.ts","../node_modules/ethers/lib.esm/wallet/json-crowdsale.d.ts","../node_modules/ethers/lib.esm/wallet/json-keystore.d.ts","../node_modules/ethers/lib.esm/wallet/wallet.d.ts","../node_modules/ethers/lib.esm/wallet/index.d.ts","../node_modules/ethers/lib.esm/ethers.d.ts","../node_modules/ethers/lib.esm/index.d.ts","../node_modules/monads-io/either.d.ts","../src/util/EthereumAddress.ts","../src/types/stream.ts","../src/types/cache.ts","../src/util/head.ts","../src/util/visibility.ts","../src/util/cacheMetadataParser.ts","../src/util/cacheValidation.ts","../src/contracts-api/contractValues.ts","../src/contracts-api/action.ts","../src/contracts-api/composedAction.ts","../src/contracts-api/deployStream.ts","../src/contracts-api/deleteStream.ts","../src/contracts-api/primitiveAction.ts","../src/client/listStreams.ts","../src/types/transaction.ts","../src/client/getLastTransactions.ts","../src/types/role.ts","../src/contracts-api/roleManagement.ts","../src/types/attestation.ts","../src/util/AttestationEncoding.ts","../src/contracts-api/attestationAction.ts","../src/contracts-api/transactionAction.ts","../src/client/client.ts","../src/internal.ts","../src/client/browserClient.ts","../src/index.browser.ts","../src/index.common.ts","../src/client/nodeClient.ts","../src/index.node.ts","../src/index.ts","../node_modules/@vitest/pretty-format/dist/index.d.ts","../node_modules/@vitest/utils/dist/types.d.ts","../node_modules/@vitest/utils/dist/helpers.d.ts","../node_modules/tinyrainbow/dist/index-c1cfc5e9.d.ts","../node_modules/tinyrainbow/dist/node.d.ts","../node_modules/@vitest/utils/dist/index.d.ts","../node_modules/@vitest/runner/dist/tasks-3ZnPj1LR.d.ts","../node_modules/@vitest/utils/dist/types-Bxe-2Udy.d.ts","../node_modules/@vitest/utils/dist/diff.d.ts","../node_modules/@vitest/runner/dist/types.d.ts","../node_modules/@vitest/utils/dist/error.d.ts","../node_modules/@vitest/runner/dist/index.d.ts","../node_modules/vitest/dist/chunks/environment.LoooBwUu.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/rollup/dist/rollup.d.ts","../node_modules/rollup/dist/parseAst.d.ts","../node_modules/vite/types/hmrPayload.d.ts","../node_modules/vite/types/customEvent.d.ts","../node_modules/vite/types/hot.d.ts","../node_modules/vite/dist/node/types.d-aGj9QkWt.d.ts","../node_modules/vite/node_modules/esbuild/lib/main.d.ts","../node_modules/source-map-js/source-map.d.ts","../node_modules/postcss/lib/previous-map.d.ts","../node_modules/postcss/lib/input.d.ts","../node_modules/postcss/lib/css-syntax-error.d.ts","../node_modules/postcss/lib/declaration.d.ts","../node_modules/postcss/lib/root.d.ts","../node_modules/postcss/lib/warning.d.ts","../node_modules/postcss/lib/lazy-result.d.ts","../node_modules/postcss/lib/no-work-result.d.ts","../node_modules/postcss/lib/processor.d.ts","../node_modules/postcss/lib/result.d.ts","../node_modules/postcss/lib/document.d.ts","../node_modules/postcss/lib/rule.d.ts","../node_modules/postcss/lib/node.d.ts","../node_modules/postcss/lib/comment.d.ts","../node_modules/postcss/lib/container.d.ts","../node_modules/postcss/lib/at-rule.d.ts","../node_modules/postcss/lib/list.d.ts","../node_modules/postcss/lib/postcss.d.ts","../node_modules/postcss/lib/postcss.d.mts","../node_modules/vite/dist/node/runtime.d.ts","../node_modules/vite/types/importGlob.d.ts","../node_modules/vite/types/metadata.d.ts","../node_modules/vite/dist/node/index.d.ts","../node_modules/@vitest/snapshot/dist/environment-Ddx0EDtY.d.ts","../node_modules/@vitest/snapshot/dist/rawSnapshot-CPNkto81.d.ts","../node_modules/@vitest/snapshot/dist/index.d.ts","../node_modules/@vitest/snapshot/dist/environment.d.ts","../node_modules/vitest/dist/chunks/config.Cy0C388Z.d.ts","../node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","../node_modules/vite-node/dist/index-z0R8hVRu.d.ts","../node_modules/vite-node/dist/index.d.ts","../node_modules/@vitest/utils/dist/source-map.d.ts","../node_modules/vite-node/dist/client.d.ts","../node_modules/vite-node/dist/server.d.ts","../node_modules/@vitest/runner/dist/utils.d.ts","../node_modules/tinybench/dist/index.d.ts","../node_modules/vitest/dist/chunks/benchmark.geERunq4.d.ts","../node_modules/@vitest/snapshot/dist/manager.d.ts","../node_modules/vitest/dist/chunks/reporters.nr4dxCkA.d.ts","../node_modules/vitest/dist/chunks/worker.tN5KGIih.d.ts","../node_modules/vitest/dist/chunks/worker.B9FxPCaC.d.ts","../node_modules/vitest/dist/chunks/vite.CzKp4x9w.d.ts","../node_modules/@vitest/expect/dist/chai.d.cts","../node_modules/@vitest/expect/dist/index.d.ts","../node_modules/@vitest/expect/index.d.ts","../node_modules/@vitest/spy/dist/index.d.ts","../node_modules/@vitest/mocker/dist/types-DZOqTgiN.d.ts","../node_modules/@vitest/mocker/dist/index.d.ts","../node_modules/vitest/dist/chunks/mocker.cRtM890J.d.ts","../node_modules/vitest/dist/chunks/suite.B2jumIFP.d.ts","../node_modules/expect-type/dist/utils.d.ts","../node_modules/expect-type/dist/overloads.d.ts","../node_modules/expect-type/dist/branding.d.ts","../node_modules/expect-type/dist/messages.d.ts","../node_modules/expect-type/dist/index.d.ts","../node_modules/vitest/dist/index.d.ts","../src/contracts-api/cache.integration.test.ts","../src/contracts-api/composedAction.test.ts","../src/types/cache.test.ts","../src/util/cacheMetadataParser.test.ts","../src/util/cacheValidation.test.ts","../node_modules/vitest/importMeta.d.ts"],"fileIdsList":[[82,140,147,148],[82,83,85,87,91,92,93,140,149,150,151,152],[140],[83,88,89,90,92,140,151],[82,83,84,85,87,89,90,91,92,93,140,150,153,155,156],[82,83,89,90,91,92,140,157],[83,84,86,87,88,140],[83,87,88,140],[83,86,140],[83,84,85,87,91,93,140,150,151],[87,88,140],[83,86,87,88,140],[83,87,140],[83,84,85,87,140],[83,93,140],[83,90,92,93,140,154,157],[82,83,84,85,86,87,88,89,90,91,92,93,140,150,151,153,154,157,158,159,160,161,162],[83,85,86,87,140],[83,84,86,87,89,140],[86,140],[94,140],[97,140],[98,103,131,140],[99,110,111,118,128,139,140],[99,100,110,118,140],[101,140],[102,103,111,119,140],[103,128,136,140],[104,106,110,118,140],[105,140],[106,107,140],[110,140],[108,110,140],[110,111,112,128,139,140],[110,111,112,125,128,131,140],[140,144],[106,110,113,118,128,139,140],[110,111,113,114,118,128,136,139,140],[113,115,128,136,139,140],[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146],[110,116,140],[117,139,140,144],[106,110,118,128,140],[119,140],[120,140],[97,121,140],[122,138,140,144],[123,140],[124,140],[110,125,126,140],[125,127,140,142],[98,110,128,129,130,131,140],[98,128,130,140],[128,129,140],[131,140],[132,140],[97,128,140],[110,134,135,140],[134,135,140],[103,118,128,136,140],[137,140],[118,138,140],[98,113,124,139,140],[103,140],[128,140,141],[117,140,142],[140,143],[98,103,110,112,121,128,139,140,142,144],[128,140,145],[140,317,318,321],[140,378],[140,381],[140,318,319,321,322,323],[140,318],[140,318,319,321],[140,318,319],[140,358],[140,313,358,359],[140,313,358],[140,313,320],[140,314],[140,313,314,315,317],[140,313],[140,254,255,256],[140,254],[140,256,257,258,259,260],[140,254,255,256,257,259],[140,186,254,255],[140,186],[140,183,184,185],[140,262,263,264,265],[140,186,208,233,234,243,254,261],[140,186,233,234,235,243,254,261],[140,233,234,235,236],[140,234,243,261],[140,208,233,235,243,254,261],[140,187,188,189,190,191,192,193,194,195],[140,194,196,254],[140,179,186,196,202,217,237,243,254,261,266,273,279],[140,186,196,254],[140,211,212,213,214,215,216],[140,196],[140,196,254],[140,280],[140,186,206,207,208,209,254],[140,202,208,217,218],[140,208],[140,206,210,223],[140,208,210,254],[140,196,202],[140,203,205,206,207,208,209,210,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,238,239,240,241,242],[140,202,205,254],[140,204,208],[140,206,210,220,221,254],[140,206,221],[140,205,206,208,210,237],[140,206,210],[140,206,210,220,221,223,254],[118,140,147,206,221,222],[140,202,206,208,210,217,218,219,254],[140,206,208,210,221],[140,206,221,222],[140,186,196,202,203,206,207,254],[140,208,217,218,219],[140,186,202,203,208,217],[140,202],[140,196,197,198,199,200,201],[140,196,202,254],[140,181],[140,204,243],[140,180,181,182,197,204,244,245,246,247,248,249,250,251,252,253],[140,249],[140,248,250],[140,196,202,217,243],[140,196,243,254,267,273,274],[140,267,274,275,276,277,278],[140,254,273],[140,196,243,267,275],[140,268,269,270,271,272],[140,269],[140,268],[140,385,386],[140,385,386,387,388],[140,385,387],[140,385],[140,167,168],[140,166],[140,167,169],[140,172],[140,166,170,171,173,174,175],[140,168,169],[140,170],[140,176],[140,349],[140,347,349],[140,338,346,347,348,350,352],[140,336],[140,339,344,349,352],[140,335,352],[140,339,340,343,344,345,352],[140,339,340,341,343,344,352],[140,336,337,338,339,340,344,345,346,348,349,350,352],[140,352],[140,334,336,337,338,339,340,341,343,344,345,346,347,348,349,350,351],[140,334,352],[140,339,341,342,344,345,352],[140,343,352],[140,344,345,349,352],[140,337,347],[140,327,356],[140,326,327],[140,316],[140,363,364],[140,363],[140,357,363,364,376],[110,111,113,114,115,118,128,136,139,140,145,147,327,328,329,330,331,332,333,353,354,355,356],[140,329,330,331,332],[140,329,330,331],[140,329],[140,330],[140,327],[140,324,369,370,390],[140,313,324,360,361,390],[140,382],[111,128,140,313,318,324,325,357,360,362,365,366,367,368,371,372,376,377,390],[140,324,369,370,371,390],[140,357,373],[140,144,374],[140,324,325,360,362,365,390],[111,128,140,144,313,318,321,324,325,357,360,361,362,365,366,367,368,369,370,371,372,373,374,375,376,377,379,380,382,383,384,389,390],[140,390],[140,163,306],[140,163,178,283,284,290,291,292,293,294,295,296,298,299,300,303,304],[140,163,297,306],[140,163,178,283,284,306],[140,163,164,177,178,283,284,285,286,287,288,289,290],[140,163,291,301,302],[140,178,283,284,285,291,390],[140,178,283,292,390],[140,163,164,178,283,284,291],[140,163,178,284],[140,163,178,290],[140,163,284,290,291],[140,163,283,291,299],[140,163,297],[140,306,307],[140,178,283,284,287,290,291,292,295,299,300,301,303,305],[140,306,310],[140,306,307,310],[140,178,283,284,287,290,291,292,293,294,295,299,300,301,302,303,305],[140,285,390],[140,283],[140,178,283],[140,163,281],[140,281,282],[140,165,177],[140,285,288,390],[140,285],[140,289,390],[140,177]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5b13031422671cc22ea7b36fcf708776c9f3d8b3233c6df3a0ab759621729f54","impliedFormat":1},{"version":"f4305022b9b58daf6eac0a1b8f2568ddcd96e958afcfc3b9530e90460b3f6bf2","impliedFormat":1},{"version":"3067543c7ce1d809da78a425b3b7a874147432841477434a508b2ae38f3febe8","impliedFormat":1},{"version":"a47bcbc4f32cd38ddefd0d31c0314d0a5656dfba4ddd9431f825e7193966aacd","impliedFormat":1},{"version":"c226c777447b786754a7c4d5cf0c497a514b66141bdc98ae90b58c6f5f636e55","impliedFormat":1},{"version":"4bf65ba8b5bd21d54f8d7017968c4dc7f8b500c87f9944148ea9eaf74d13721d","impliedFormat":1},{"version":"8dc867a8ce7fb326d8f9586e67e35a862cc11908e902530f7ebb62e57976ad86","impliedFormat":1},{"version":"8f3282db99633148e96329c63c6145722967245308e4ca287df3c3b7d5d56026","impliedFormat":1},{"version":"c0b0ba5f9772afc819467c32c3f46d2eda0b6c4592d6103412cb26d35e82e993","impliedFormat":1},{"version":"d8e9e16514bd9b8297c3d193e0dc1a2ff7517f036f0846204f76a0377d47bcde","impliedFormat":1},{"version":"412c99d8217c9866a720ec75b2fe0e3ef615bc61f170f48508e4e401bae561ff","impliedFormat":1},{"version":"d9dbc8875024f2677126c5169806bbd417c8f54327b1500a13a581c8f360c538","impliedFormat":1},{"version":"9004b6757fde33f153c3a7694c15b017531a0261fafb99e0542a8a6f61be1708","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"32465ea19404cb188e84cf08c6b1f6b12d739140436402cdbc184a3fd20a7d81","affectsGlobalScope":true,"impliedFormat":1},{"version":"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89","impliedFormat":1},{"version":"da5afd11bfce6e59d63f28fcf1ce25cd099188de33c08f9fad297186713fb17c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f2d8573577ad731813e4358b913b667923a94e6456f645918fba11134040d13","impliedFormat":1},{"version":"fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49","impliedFormat":1},{"version":"815c751d4afee4651d61edf6204187372a55ca8e0126a906986b4859ec51f192","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8a67dc9edddace374b1a96852ab5bbb87b631d439a928e6df326587d1f4fe9f0","impliedFormat":1},{"version":"fbcf2c3cde728761b05dbf8e7a9b8be1f5514dc324c6f83b87ba5c0668119b98","impliedFormat":1},{"version":"7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","impliedFormat":1},{"version":"16bbaee4dd96ec8b67026329a4f5fdef6313e42a5c305ddeb498c3d65fb557b8","impliedFormat":1},{"version":"37a36483218b24a50be2548a71557603e01ce38154c9f3f635c6c8275abd9fb1","impliedFormat":1},{"version":"c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4","impliedFormat":1},{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d30c9292ff36b2af594109d4413f34b952b1258c50b0361a3db1f7d94ec1e193","affectsGlobalScope":true,"impliedFormat":1},{"version":"d617229425b25df2046a9c1e321dd1b50825abc8e3b38048453345483f8601e1","impliedFormat":1},{"version":"badd4f5fe0cca51915ef597852d07598ca490f6d1d9d68d505a159f18cde792d","impliedFormat":1},{"version":"2d510ba9ab3fd294bc60f6a6dea2c8eb5942676bce2916ea72b52b975e788abb","impliedFormat":1},{"version":"e6d2e297c73016fc98095238b25428591d129481c50eb1b6e575d35f3f8c621e","impliedFormat":1},{"version":"e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","impliedFormat":1},{"version":"7e5307e29dfd5d5b827203b85cb665d8d5bf932a6c6f393457da8e9ed1906761","impliedFormat":1},{"version":"e492737de7f023b47ff14ca54b9635ba3dcd64816ed3316c9f3a784cf5897173","affectsGlobalScope":true,"impliedFormat":1},{"version":"40798238bc2e17ee787a815dbce4f2c89c161e5ad2fde062fb50454c093fa433","impliedFormat":1},{"version":"30b15efd2b52c7e5f0f7c1e360afc43f487a2cffad5c01756f06eb323eee3efd","impliedFormat":1},{"version":"323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c","impliedFormat":1},{"version":"e7391fb34deecd321ae15af659cbfb0b9abc995c5ed4b3d703ba768e44b89670","affectsGlobalScope":true,"impliedFormat":1},{"version":"0900d10c17bae29648b266c0ae7cef0c95ebb2a1d81541b833833ed0996ac85a","affectsGlobalScope":true,"impliedFormat":1},{"version":"58520d6ae3a339cd22ffc528b50b21e4e8f5247a87913eb1c697c1af62eb0395","impliedFormat":1},{"version":"186614c0f9ca0ec3cfa988f1dc01c6f392a798710072ff4bdf20ce56e09a6dfd","impliedFormat":1},{"version":"2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","impliedFormat":1},{"version":"6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","impliedFormat":1},{"version":"48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","impliedFormat":1},{"version":"6e4b2642721462bf62d19593770659f268a6ca1e9fd15543747efb3ac471cee3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"8258e69a3b0de494ea55eeea7a4d3216ac112c12006c74dfd381c0d5e42a2607","impliedFormat":1},{"version":"cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","impliedFormat":1},{"version":"4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf","impliedFormat":1},{"version":"6fa3d3f427475a5d21fed826d6457e7f9ee3a0abeb3124fc41f385f112368d2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b85e57e102a1df14980b46d745c9fe8e16a9b0a69a98fb1a2c558c9137ab30d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","impliedFormat":1},{"version":"e5ce801ce5e85d7281807d8a65a21ee9767c122c87da262891582b4afead5ec0","impliedFormat":1},{"version":"76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","impliedFormat":1},{"version":"c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02","impliedFormat":1},{"version":"057d7f56aacd575a6240838d2684d34a340acde815f84190ea5e9afd611aeee6","affectsGlobalScope":true,"impliedFormat":1},{"version":"40ed27386f21a739bd0d2e2cfed563760588f2aeaa7ad149c1bf1454a7ec743a","affectsGlobalScope":true,"impliedFormat":1},{"version":"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","impliedFormat":1},{"version":"6244a29671c12a54fc5b1393dde60bac655bd778d84758a4db847f684d4da3a5","impliedFormat":1},{"version":"8bc733ffd630d49d495663bfecf590281c8f5412b33657430ab471b558206705","impliedFormat":1},{"version":"171c1840775746917e7b813c9df0fc0b84876f96623a6cfef3b3de7ea816b8c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"872201e32a629152e8bc7118e8977ac37a1a62ab6756c2ac3e6b53859f0a8fa1","impliedFormat":1},{"version":"d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","impliedFormat":1},{"version":"9eabbed4ee6e767a46b7b8cf92c92582fececcb8a8a58993efecd1b64fbd710f","impliedFormat":1},{"version":"ad10c3ee8fb00beacd77766ef76ed7d38a33005cd14d686c205812b43e988d68","impliedFormat":1},{"version":"c77e98f9940135457b5a12081418c52b47e0715b2abfb39661416e02c4c230b7","impliedFormat":1},{"version":"f9c8d7c051db78b71456926ab62b7d1a6320dcb33cec321614dfb5fe71379f9a","impliedFormat":1},{"version":"1ead640861cb88cda68781bb48857561ccf3dc29c1d910ddfd7210a64a59a8d6","impliedFormat":1},{"version":"06a9c1725ac0d79f625c185ea35a4283f37b138d9d4b7637962b4e5aa4f84196","impliedFormat":1},{"version":"44fb4b41f9891fd3b88e75aa31c766da599ec87e4c47385392fdf108780bcd67","impliedFormat":1},{"version":"bc61e949f7eb6ce4d266be816d6b8227483a0c01b32ca5918006d87d6701b0ad","impliedFormat":1},{"version":"f36d5d82f630f8ac27cce2fdaacc17b4eb58f2486b3af0ffedd36f80e932fc56","impliedFormat":1},{"version":"cd9d72081d4fbbeb75316681280cd5a730b3085c647b7095b13a8b41a99ab783","impliedFormat":1},{"version":"a0a2a4807d5a5293f6a8f30583240e9a5f4b0dc883a9db96d6d5c8feeb5ce4ac","impliedFormat":1},{"version":"f9380932ce1ad0107c2d53f5d424cdbb0377d3784c9458c3f4c3bff490890d80","impliedFormat":1},{"version":"7eabe0262b38886126647a4c0db8b21f7b5402d5a1834b612ff4349296b55f8c","impliedFormat":1},{"version":"c0325ff5049d2925e23cc9522212cbf09eabf355f79576d1445006822629a783","impliedFormat":1},{"version":"709eff8d7ebcc8d3ea407a64665b409dc8c5690d6531b80d6168de19fcd65f86","impliedFormat":1},{"version":"1327ebffd1c29b5973c7d76db45d0fce2fd3328ca68d737638b0deaa1fd11e7a","signature":"30450bb3a48f42ca7109fa47055b302d6777657c54db7a5346983900ff75ce97"},{"version":"1549eea3c3193d5efed4ee6861c68911c086bc42f6d1807bb5802c0e219abfc8","impliedFormat":99},{"version":"b506aaed3a8eb1ea7a2892c15ca062693649678bf275ed3b89847702fdeb422d","impliedFormat":1},{"version":"d6e343b259a8893b4394e5de83643436c79464c06b7506dce4c8513172ca9894","impliedFormat":1},{"version":"a9ddb2cb36a5e0e994996eac07ec6fdc7b5b5955422d2c7b02963e63329d16e8","impliedFormat":1},{"version":"e894438a039cbe28ba3e5417605100259311dd23ccc6632c2338e6b26188b532","impliedFormat":1},{"version":"f310f01e32fbf3c19d9f5c80e46352b5c8ba2b7ca84e91b20b1baeb0ee2f0f1d","impliedFormat":1},{"version":"d6f2a78a33a38ae98ac44153156e24823b202601b64a2d14b2d7c55a73f572d9","impliedFormat":1},{"version":"15540632f8e07d4b306b395274949097c1514b59209d657b5616a1b6aea11430","impliedFormat":1},{"version":"24d4202775844cc4507684d3e5eeffe883a37467b0ecb36366876bc5c7b3528e","impliedFormat":1},{"version":"bc736bc5c67f32af387397e557cb9e26ac298a3f7483f2b6ce1584c554d25f0a","impliedFormat":1},{"version":"5096f4cf6f96c3bb77bd63ce62f31cea35e63e09539d522062f3eff9e699e153","impliedFormat":1},{"version":"38988179442dfae57eeafc65398ca6d6c3f056566bf1ed2a44bb4809cfad73d5","impliedFormat":1},{"version":"01979b1a1e352b2349793ce0bad475ce2fea5a7c81d21b0caa36ed3745b428f1","impliedFormat":1},{"version":"17b9272b084dc20020ca084c895afe5b203d17f532b22609ece0b87e0aaf0012","signature":"d184d2d4ef321978fa5320d94a4193fdcae49e0ca32c08ba54a5cb6b0368b035"},{"version":"cbd8f7cbc0832353a1db0c80ffe50f4d623bcf992faac71b4aef9e0aa6f4f33e","impliedFormat":99},{"version":"643b5be3fb728581cdb973f3937606d4925a5270d367a38366e4ddc6b30ba688","impliedFormat":99},{"version":"f7b9aaeace9a3837c47fad74de94ba117751951904a6cb6f6a2340ca3a5052d2","impliedFormat":99},{"version":"b59a8f409202638d6530f1e9746035717925f196f8350ef188535d6b6f07ac30","impliedFormat":99},{"version":"10752162e9a90e7f4e6f92d096706911e209f5e6026bb0fe788b9979bf0c807b","impliedFormat":99},{"version":"91010341cfcb3809686aefe12ceaa794087fcd0c7d4d72fc81d567535c51f7b9","impliedFormat":99},{"version":"a5fa720bdcd335d6f01999c7f4c93fb00447782db3c2fad005cc775b1b37b684","impliedFormat":99},{"version":"c8657b2bf39dbb8bbe8223ca66b76e33c83a649c7655fd7042b50b50cf805c96","impliedFormat":99},{"version":"18282a2d197d5d3b187d6cfe784b0bfeb36dc3caed79d24705c284506c6a7937","impliedFormat":99},{"version":"bc7f372120474ef5e195f4c5627aa9136af9dfc52c3e81f5404641f3eb921b20","impliedFormat":99},{"version":"c897edb7e0074c2cb1a118ad1f144d4095a76e13023c1c9d31499a97f0943c6d","impliedFormat":99},{"version":"5123f400963c1ae260ba78bd27826dd5ada91cc3df088a913fb709906c2f0fed","impliedFormat":99},{"version":"f6c69d4211c1c0dc144101b7d564eec8992315a5b652108ab44e617fdfb64a9f","impliedFormat":99},{"version":"3a0b914cd5a33a695925999bc0e20988f625ff92224224a60356531cc248324b","impliedFormat":99},{"version":"3b9ef4448417e777778007a2abbfb171fbb400c4012560331330c89a8fd08599","impliedFormat":99},{"version":"fb9a7e5a2473dc818630a3a9a02a48906ccb7d1ee6becbbbbeca31f85b84e74f","impliedFormat":99},{"version":"80ae4448e40828f253d49dd0cba14ddaa948c4988d54d6bbd558015c4727f1f7","impliedFormat":99},{"version":"36ccd9bc1c33bf3cce297133d37acfc376d89ea0aff3111cf1792498ae5732d4","impliedFormat":99},{"version":"66ef9bd718776792705d01be029559b4f13c7978727dc364318fde5645d26abc","impliedFormat":99},{"version":"a5bb15e8903456dedd2a0c6c7f29b520b75a02fc44b36248fbac98e8b3106f2e","impliedFormat":99},{"version":"7087a77f8804d330429778346f2adf8418a4641b159f621938604aa20386887a","impliedFormat":99},{"version":"6d2e4114ccd05fb0cd657cfb73419eeb7e1464446aabfe4e652d4ad460c1fd1a","impliedFormat":99},{"version":"a52173b00ca45c107162f9f5501af38362ef8c587e76e5813f1aeb1f54772aec","impliedFormat":99},{"version":"8478f046870fe3053785d1fdb8fc3d4972437fbb230771841eb3945edda1cdce","impliedFormat":99},{"version":"8827ca3cd0a35d4a2da2b460620586a68dc0681b19f08559bc382f453ae0a915","impliedFormat":99},{"version":"5c56eea87bcede67b8df6a08185aaa023080fe74f21e7d262e5e0c5885ea6747","impliedFormat":99},{"version":"2a6140dea5f4014fbf2c301bcefcac865d9b5354ccc09865b309ec25b170eb24","impliedFormat":99},{"version":"62fbeac38ecc6d7b5ffe8b9c10c60a519963c8bc5a06d7260446a45fe920c01f","impliedFormat":99},{"version":"782f6c7ba1fa143a493e014cc02186c0cf19ce12189bcba7745c614e17e11a38","impliedFormat":99},{"version":"ba28b11eba525914120dda140fc01e3db951591724287eef1a6d061ee0a13ea0","impliedFormat":99},{"version":"6cdb8c1473687522f8ef65e1620bb8d703a02f4c570c662bd99ebf442ec9c3ff","impliedFormat":99},{"version":"799e4c2b1aae2c8531a20544168c528c7994f13bbce20f4813e30cde1ca72cb9","impliedFormat":99},{"version":"804a7dbd4c64f201d927b23b8563affa0325ec4bd3eeab339933cc85fcbbe4c1","impliedFormat":99},{"version":"c0a7ac0e0b21d67124311e0a70138df950cfa22360ae582c5d7b95a9a31f3436","impliedFormat":99},{"version":"c39a02bcdde4e5cf742febb47995c209f651249aa3f339d8981b47eb157dbc7f","impliedFormat":99},{"version":"3b63f1706adba31dd86669c3745ce127e1d80b83b1376942a5ae3653089b526f","impliedFormat":99},{"version":"d93c86ac706e8a3eb5c4fd2c3965d793c192438b44b21f94a422029d037113cd","impliedFormat":99},{"version":"c775b9469b2cbb895386691568a08c5f07e011d79531c79cb65f89355d324339","impliedFormat":99},{"version":"f8b830bc7cf2ebcadb5381cb0965e9e2e5e1006a96d5569729fc8eae99f1e02b","impliedFormat":99},{"version":"6465f2a53c52cb1cf228a7eeab54e3380b8971fed677deb08fa082e72854e24c","impliedFormat":99},{"version":"ea19638a70714d118d84c50b79220be781a8a95c62b79e1b695f6ea3c8f9306e","impliedFormat":99},{"version":"74965fc49475caca96b090c472f2c3e2085e3be05ce34639e9aabeccd5fb71aa","impliedFormat":99},{"version":"9640153ef1838657c1de17d486d9755fb714407156ec0be12acd132db4732c7f","impliedFormat":99},{"version":"b21157929842b9593200c73299fffde810be1b6c2554437e319db0025ecd53ae","impliedFormat":99},{"version":"cb929086d0d062bb948a1726e87c604db6387d885a846838a4da40e006c51deb","impliedFormat":99},{"version":"cb2e0b454aed00d0109fa243d681650916750a960736755edb673d4c2fc495dc","impliedFormat":99},{"version":"2a5c6f30ace32a85b24dec0f03525ed0a40190104be5876bd9107f92cca0166b","impliedFormat":99},{"version":"4d752856defdcbb39e2915429f85a92aac94406eb1bdef2855b908dde5bc013b","impliedFormat":99},{"version":"515caaccdd09e635befbfd45f023015a42d375e0536c9786412cf4dab847ff65","impliedFormat":99},{"version":"6cde23545d1e8d78b222c594e0a66de065311e0c6b0e3989feffb5c7f6b66560","impliedFormat":99},{"version":"a025111523c3c2c24484c1af1bfcab340490817de7e4b247b700ca7ee203a5cc","impliedFormat":99},{"version":"d7781fc81737645eeef3b7107c6796f95fb4791cb1a908b1f0254117b2536477","impliedFormat":99},{"version":"156d4829532c7d26f824ab7bb26b1eced1bfaf5711d426e95357004c43f40d98","impliedFormat":99},{"version":"2d9a0ac7d80da8b003ac92445f47891c3acdca1517fb0a0ca3006e2d71e1d2ab","impliedFormat":99},{"version":"5c62b984997b2e15f2d2ae0f0202121738db19901dc2bad5fe6a7a2d6af871d3","impliedFormat":99},{"version":"8c04e9d03324f465d5fb381371c06799cd06234f2aa83bdf4318cb9728132b80","impliedFormat":99},{"version":"616102e59c37f0f84d209b865f84fb186a29bb0bf112bd975be097113f854b89","impliedFormat":99},{"version":"a14590df3ef464f8a9dff9514df70c7aeff05c999f447e761ec13b8158a6cab0","impliedFormat":99},{"version":"98cbb6e3aa1b6610e7234ff6afa723b9cb52caf19ecb67cf1d96b04aa72b8f88","impliedFormat":99},{"version":"4bd91244643feda6c0f2fb50f58ee3c2e6af29dd473dc5fb70bb1cbd2eade134","impliedFormat":99},{"version":"f9575d2a80566ba8d17d2260526ffb81907386aa7cb21508888fb2e967911dca","impliedFormat":99},{"version":"d388e40b946609b83a5df1a1d12a0ea77168ee2407f28eac6958d6638a3fbf69","impliedFormat":99},{"version":"83e8adc1946281f15747109c98bd6af5ce3853f3693263419707510b704b70e5","impliedFormat":99},{"version":"64fb32566d6ac361bdff2fafb937b67ee96b0f4b0ea835c2164620ec2ad8ea09","impliedFormat":99},{"version":"678b6be72cdcec74f602d366fef05ba709aa60816d4abf2a4faff64a68cdfc1f","impliedFormat":99},{"version":"b0b8ac2d71ea2251f4f513c7d644db07a46446a6e4bccbcc23ccbefbe9ac3ac4","impliedFormat":99},{"version":"c7cae4f5befd90da675906c456cc35244edad7cdcedb51fb8f94d576f2b52e5e","impliedFormat":99},{"version":"a00e19c6ad43bfc4daf759038e309b797b59cc532d68f4556083022ed1d4b134","impliedFormat":99},{"version":"c4e720b6dd8053526bedd57807a9914e45bb2ffbda801145a086b93cf1cda6d5","impliedFormat":99},{"version":"1dc465a4431aaa00bb80452b26aa7e7ec33aca666e4256c271bdf04f18fef54d","impliedFormat":99},{"version":"ea5916d20a81cc0fd49bd783fce0837b690f2d39e456d979bc4b912cb89ceefc","impliedFormat":99},{"version":"dccc0a4cbe7cbabcf629ef783d3226ed28649f1215eb577a2e2cdb1129347a37","impliedFormat":99},{"version":"add54a06a7a910f6ed0195282144d58f24e375b7d16bd4a5c5b9d91bb4b5e184","impliedFormat":99},{"version":"dc03aa8332b32c2d7cd0f4f72b4a8cc61bbc2806eb18fa841ec3de56b8e806a6","impliedFormat":99},{"version":"dd56e1c623e5b14260b6d817f4f26d6cc63c77f5bf55321306d118617fc20c7d","impliedFormat":99},{"version":"d4cb93b91ab77070c8baebdcc5c951954ee219900795cc7e34aaef6be0081a2b","impliedFormat":99},{"version":"93ff68f1f2b1be14e488d472820e2cbc3c1744e4b55aea9a12288f612e8cf56f","impliedFormat":99},{"version":"7e4d2c8b02fc2529a60bd495322092644b5cf2f391b10bea4bcae8efea227c32","impliedFormat":99},{"version":"219b5d42961185874397f62f12d64e74e0825d260054984e0248010de538015e","impliedFormat":99},{"version":"27b5570022c0f24a093c0718de58a4f2d2b4124df0f7ff9b9786874c84c8af27","impliedFormat":99},{"version":"ad37fb454bd70dd332bb8b5047fbc0cf00ddfc48972d969a8530ab44998b7e70","impliedFormat":99},{"version":"265bdbd67761e88d8be1d91a21ec53bb8915e769a71bdc3f0e1e48fdda0a4c6e","impliedFormat":99},{"version":"817e174de32fb2f0d55d835c184c1248877c639885fcaed66bab759ff8be1b59","impliedFormat":99},{"version":"ea76d1231ea876a2a352eae09d90ae6ef20126052e0adfdc691437d624ebcc47","impliedFormat":99},{"version":"0961671995b68a718e081179cfa23c89410b97031880cf0fea203f702193385a","impliedFormat":99},{"version":"b6592f9a1102da83ba752d678e5e94af9443bf1ab70666f2f756ba1a85b8adfc","impliedFormat":99},{"version":"d1c933acc6c2847d38c7a29c3d154ef5a6b51e2ad728f682e47717524683e563","impliedFormat":99},{"version":"44380b6f061bbb7d7b81b3d9973c9a18b176e456eee4316a56c9e2932df77bfd","impliedFormat":99},{"version":"e558775330d82e3a2e16a2442c1332572f3cb269a545de3952ed226473e4ccdd","impliedFormat":99},{"version":"32d5ec19fbe22a610e11aa721d9947c1249e59a5b8e68f864d954f68795982d1","impliedFormat":99},{"version":"e1fa85a34e9710a03fb4e68a8b318b50cde979325a874a311c0429be2e9a6380","impliedFormat":99},{"version":"998c9ae7ae683f16a68d9204b8dea071377d886ed649f7da777dce408ede67b7","impliedFormat":99},{"version":"e02fe9a276b87b4c10c56cbcee81f8c6437d21a0a68eeb705e23105c3620677e","impliedFormat":99},{"version":"d56bc539844eceaaae11714c214add744ace0227da77c91e62d8c3cd0ee78964","impliedFormat":99},{"version":"9199f6ead2ae205b4a0efe8b427706b7b9856f2fb51587ca25e9161cfee2b163","impliedFormat":99},{"version":"120a62730ef5b8b61b4a82005c421506d0bf4f5a2fbe84b88149c79c894900da","impliedFormat":99},{"version":"3ca2a4b5f57c480c798f8310b3d3c10dc24fa73d5618889a27835eb80f783fa3","impliedFormat":99},{"version":"faf92d569360b567c70c11b08aadd997fb2ca1847687f370eaea8eda19f807f2","impliedFormat":99},{"version":"38e878406954753d87c2b0db8b5146da5abb86c44139526cba2046cc70fbd1d4","impliedFormat":99},{"version":"c500d215a2e0490d77f0f926507adac154bfc5cfcb855ffdbe2c600e67fbf36f","impliedFormat":99},{"version":"6a22003e006988f31654d8bf884208ff753d64bcb980a89e4c5eb933bf446d09","impliedFormat":99},{"version":"3a8493e70ee5fc14e8e9a028e5e3b1df79acbd4bc4ded50725d2ad4927a9c101","impliedFormat":99},{"version":"7f02dfc714a76c78325cdfbc138b57531103490dc9d88affdb3f4a54fdd879a0","impliedFormat":99},{"version":"d3fcf2df688ce5c6d8b90d8c9057b505042342ce97e2dccd26f02a185a7bb8d3","impliedFormat":1},{"version":"4f2fd8612d69a167ff721a17766c06b69823bed7da629a4c2a177e230c4f6b30","signature":"05f0c8697e687c5b3e96af1382b1d608e108ffb0e125ec1a9179cf95e02a44e2"},{"version":"7d579493039821f48578885946a980f647bb6c1c6d38676dd3f7abff5cbd3c78","signature":"26b2c7090775b17cfcdad541205e2300b5cbb85972f2ea98f68df6c0220e2591"},{"version":"0b6045971be17f729eaa401d18c825034a2e79736ecf46593b0d78c4574ff9bd","signature":"51f8d1c5df4f346b1f5b068e7198bf5bf3309fbc06bc7f7243de40526ce8f67e"},{"version":"9a20dddd78d81631f2fcedd841bbae67e3ab12173a4df0fa900bac9f563a8976","signature":"a84fd056d513809fd4ee2e1e86db3416ad8a3bda66b1799c3b1ef79021f40106"},{"version":"97d5a77f9d052422b6aeaaed289fb4d6cab645e0a57ff1057f6edd84438c0e63","signature":"07cb0985f6d65d8370ed158dfd67afc75c3c3f97fd7f0bb91cef4dfa28949b8f"},{"version":"6d4a122c3f1116043805da81a5d21e30665a0a25f381a61c5690044161a83a96","signature":"39f4c967c0e421b1357608b1a5f2cacbab9526c18d04c672485b9d5098307b49"},{"version":"c50d3747a44242b8f06a8a8756e57351fc20fba85f516a3142f953529b7b8f86","signature":"950ae5cba7fa369188708ff25f6b5c11ba2a54a4c2cb68e87e7ce49a6eb0b5ae"},{"version":"5807fe77f8264c43e5c9ad7c00043a490afb82d540e99ac04062589d17a2b47f","signature":"4ece736eebbeb0689b6e12ab7230ec54d089cc47d6df225b3dcb52d0d692c938"},{"version":"610b2cf0096c101d91d090543cb6006861c094b9a99e6460647e1e123f35c374","signature":"7a82fedd02336e5803ade3d821d47bafbf59d0bc0228a446f55aae8927bff0b7"},{"version":"18a6c46bfd7106816681317a3892d0a747dea636b02815ea91e02324aea37a16","signature":"e1edfd0da2263b3b5ad0f3f84ddfdb8abbfcf550435e13035fe05b95b9d09c34"},{"version":"e1c91acca116aaa79183506706509720be1a06ad128f5780e26ecbf389185128","signature":"be0bbed2d521e60f52d3129e2f5946d35a9ae6a839936dc5df631e808f249217"},{"version":"679456a413c3036c2e9e6604b86d04d16fb26316dfc99a8a236cc6befc7976fd","signature":"158f02583285a918e113df7e7bad88c3021d2a3f583b213cd59180acf0116ffb"},{"version":"5554deec1f4ab2af8938de8877c0840734c5f777f25ab5906a13e522750b792a","signature":"1d0dd47e22021e412bd20fbabd46cecc93bde4c4366e114749cca3f88dc3acaf"},{"version":"b96995e200a88c9852b16171cc3bce082bc71723ac5726b4e835bd0be952568c","signature":"ad844f8565c1b9dc6fc2c3b9d64a71643e925b8e3cf1711f5769577d65449d2d"},{"version":"39b176fc0e11efd7146a4b40e8a0db2041cd0bf2787e297caeb987e1810a8621","signature":"b539f9b318fa29264ee8feaa38e7fda71bba167cd9a04e507eee058877c27e5b"},{"version":"aaf293f3badeb976c06193066bfaa2b27074f09d43777485a80d540738e1ef4a","signature":"992118ee66627dc9f38760caddaeb1b2b05c402c90b95a7c2f3c40e67c830cb1"},{"version":"3299fcd7318fb534ee9f7e087392e4629f8536aef580f455381e812356526b57","signature":"3487e2a701208382447462ef7f65d2c76ef6937ed378c46da6d83cd37a0748bb"},{"version":"41fa04b2e0d005aa93c76dc6478a198db487544ffc980eb3fd3be4536ed76edd","signature":"55608c9f95d294cb8054fd3aba967c05acaf37f8498ddafff9d487f9608bf2ca"},{"version":"e337610f4b29f32a91c3f07d64d257e9d996d70f1cc47fbc6c4e14e9381782f7","signature":"ba17ad2e0f62ec4e313494659558b18f93fc268d04db9dd532910d4d1534e114"},{"version":"209ce133487ed5c01680c37e312baeac924275d44b3bad52dd5078f88e32ec6c","signature":"61b4ac221713ef68ae0904ecbcfcf8ebd14f0743ee559439081d645d9e4ff4b7"},{"version":"22e10dc751bf530f9ca6fac312b5d6f7f01ae586fe38f1e390f33b548bccb925","signature":"0270af397c4c6bcac96b273e7b2125b61233e7bf0582d2192c5b47ade767c51a"},{"version":"6bc2d79c956f6b227213e4fa27a55161b996c13a7a0caf5c88efe4d9c0d9533c","signature":"aea120584abb4c22ce8a435529da51474c05683a036381a8e6ebac574232c038"},{"version":"c90e2c394a060132bd8c1105b0817a402cc19adaecc8520e086547b64fd2c195","signature":"7e5692b499a3c831b9d920b9083300abf9c71057d7510ee28672522d2f244053"},{"version":"e6e287d075ee902957100300582c11582e22d6965d90f6c078a2241ccb8bb01d","signature":"2456efc4268be474e87530bea85794b3b84574f2058a007b355d59e8e332f693"},{"version":"8ed621fe85bcf7d6055d8b1c51c84147d609cd909863d99b7a2866d0e866c78c","signature":"8dee9e478b53ca3f7a5a774cd543bf4555b904cff46b3f1c79ba595078ca4704"},{"version":"b103346516f3f2cfaf280ca00860219182d8f56387e22ef7517316bb3d731bc2","signature":"ed6c5babb90739a8e0a24a38c2faaf430205a2a68e6d7093d5e1d741c966d2c1"},{"version":"f6fc5414f67cfbdd8b0680883366238104824d2ffa3fab061a15e16e14f7632d","signature":"e04750852bc523c8dd3356cac8ddf26f1b5a63cc25d9137d9429460d2ffa064a"},{"version":"798f5bd2f7df18335c970f864575ad6a97a6a7a2d0024d2f16e16412d1881abd","signature":"958faeab9fba845f89d0282b377725e965df3cd7cde70f6e927fe0a9fdda6282"},{"version":"24bf1347b4775a9e4193dc031dcfa203fd2db3338dfc3626f77296ff2b9b4ba5","signature":"2d03c92ad4bef1d8c4416c7c8f430b344d5713301e890b8d73b0c9580abe6eee"},{"version":"fffdc96d69a88767af857b3aab28fb88cc2b576e8c5e5458d0eeb363fdd12d3e","signature":"159bef27d3b175042b7b18d0e1d3b1ef9cd05e5b809a81e3f9fdae4d81e5bb3b"},{"version":"d2e64a6f25013b099e83bfadb2c388d7bef3e8f3fdb25528225bbc841e7e7e3a","impliedFormat":99},{"version":"369ba5259e66ca8c7d35e3234f7a2a0863a770fdb8266505747c65cf346a0804","impliedFormat":99},{"version":"64d984f55025daf604f670b7dfd090ea765f2098aee871174ef2ee3e94479098","impliedFormat":99},{"version":"f147b6710441cf3ec3234adf63b0593ce5e8c9b692959d21d3babc8454bcf743","impliedFormat":99},{"version":"e96d5373a66c2cfbbc7e6642cf274055aa2c7ff6bd37be7480c66faf9804db6d","impliedFormat":99},{"version":"02bcdd7a76c5c1c485cbf05626d24c86ac8f9a1d8dc31f8924108bbaa4cf3ba9","impliedFormat":99},{"version":"c874ab6feac6e0fdf9142727c9a876065777a5392f14b0bbcf869b1e69eb46b5","impliedFormat":99},{"version":"7c553fc9e34773ddbaabe0fa1367d4b109101d0868a008f11042bee24b5a925d","impliedFormat":99},{"version":"9962ce696fbdce2421d883ca4b062a54f982496625437ae4d3633376c5ad4a80","impliedFormat":99},{"version":"e3ea467c4a7f743f3548c9ed61300591965b1d12c08c8bb9aaff8a002ba95fce","impliedFormat":99},{"version":"4c17183a07a63bea2653fbfc0a942b027160ddbee823024789a415f9589de327","impliedFormat":99},{"version":"3e2203c892297ea44b87470fde51b3d48cfe3eeb6901995de429539462894464","impliedFormat":99},{"version":"c84bf7a4abc5e7fdf45971a71b25b0e0d34ccd5e720a866dd78bb71d60d41a3f","impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"6cd8f2410e4cf6d7870f018b38dcf1ac4771f06b363b5d71831d924cda3c488d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","impliedFormat":1},{"version":"6222e987b58abfe92597e1273ad7233626285bc2d78409d4a7b113d81a83496b","impliedFormat":1},{"version":"cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","impliedFormat":1},{"version":"8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87","impliedFormat":99},{"version":"bacf2c84cf448b2cd02c717ad46c3d7fd530e0c91282888c923ad64810a4d511","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","impliedFormat":99},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","impliedFormat":1},{"version":"257b83faa134d971c738a6b9e4c47e59bb7b23274719d92197580dd662bfafc3","impliedFormat":99},{"version":"e01ea380015ed698c3c0e2ccd0db72f3fc3ef1abc4519f122aa1c1a8d419a505","impliedFormat":99},{"version":"5ada1f8a9580c0f7478fe03ae3e07e958f0b79bdfb9dd50eeb98c1324f40011b","impliedFormat":99},{"version":"a8301dc90b4bd9fba333226ee0f1681aeeff1bd90233a8f647e687cb4b7d3521","impliedFormat":99},{"version":"e3225dc0bec183183509d290f641786245e6652bc3dce755f7ef404060693c35","impliedFormat":99},{"version":"09a03870ed8c55d7453bc9ad684df88965f2f770f987481ca71b8a09be5205bc","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"2cdd50ddc49e2d608ee848fc4ab0db9a2716624fabb4209c7c683d87e54d79c5","impliedFormat":99},{"version":"e431d664338b8470abb1750d699c7dfcebb1a25434559ef85bb96f1e82de5972","impliedFormat":99},{"version":"2c4254139d037c3caca66ce291c1308c1b5092cfcb151eb25980db932dd3b01a","impliedFormat":99},{"version":"970ae00ed018cb96352dc3f37355ef9c2d9f8aa94d7174ccd6d0ed855e462097","impliedFormat":99},{"version":"d2f8dee457ef7660b604226d471d55d927c3051766bdd80353553837492635c3","impliedFormat":99},{"version":"110a503289a2ef76141ffff3ffceb9a1c3662c32748eb9f6777a2bd0866d6fb1","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"310e6b62c493ce991624169a1c1904015769d947be88dc67e00adc7ebebcfa87","impliedFormat":99},{"version":"62fefda288160bf6e435b21cc03d3fbac11193d8d3bd0e82d86623cca7691c29","impliedFormat":99},{"version":"fcc46a8bcbf9bef21023bba1995160a25f0bc590ca3563ec44c315b4f4c1b18a","impliedFormat":99},{"version":"0309a01650023994ed96edbd675ea4fdc3779a823ce716ad876cc77afb792b62","impliedFormat":99},{"version":"f13d7beeea58e219daef3a40e0dc4f2bd7d9581ac04cedec236102a12dfd2090","impliedFormat":99},{"version":"669573548930fb7d0a0761b827e203dc623581e21febf0be80fb02414f217d74","impliedFormat":99},{"version":"48c411efce1848d1ed55de41d7deb93cbf7c04080912fd87aa517ed25ef42639","affectsGlobalScope":true,"impliedFormat":1},{"version":"a094636c05f3e75cb072684dd42cd25a4c1324bec4a866706c85c04cecd49613","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"9a3e2c85ec1ab7a0874a19814cc73c691b716282cb727914093089c5a8475955","impliedFormat":99},{"version":"cbdc781d2429935c9c42acd680f2a53a9f633e8de03290ec6ea818e4f7bff19a","impliedFormat":99},{"version":"9f6d9f5dd710922f82f69abf9a324e28122b5f31ae6f6ce78427716db30a377e","impliedFormat":99},{"version":"ac2414a284bdecfd6ab7b87578744ab056cd04dd574b17853cd76830ef5b72f2","impliedFormat":99},{"version":"c3f921bbc9d2e65bd503a56fbc66da910e68467baedb0b9db0cc939e1876c0d7","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"0cc99fbb161d78729d71fad66c6c363e3095862d6277160f29fa960744b785c6","affectsGlobalScope":true,"impliedFormat":99},{"version":"74428cf29233a4b252a21e458bc53ace78903b86426b6bdd1ccbe3048cc5771a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"90391c3d678cd0ede5f8cb1176469412edd5c07ed98ddad9cdf3f73061eac139","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5809603016fca24249829d608cf586786449a38ab21220435bb3a5382ed568a7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ba5b888a4b04d12569e9be2a520df3d73e4a76c03403179038132477c9bf627b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a7f6bd7f7abeaa50c2e029e3fa7526b990eba47e69d4cfec3e08a2b41fc22ba9","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"13d43666c55b9153815a92c4d3f807833df3491ebe4009cd46c3879b9a3f5d1a","affectsGlobalScope":true,"impliedFormat":99}],"root":[164,178,[283,312],[391,395]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./types","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99},"referencedMap":[[149,1],[153,2],[82,3],[156,4],[157,5],[158,6],[159,6],[89,7],[151,8],[84,9],[83,3],[152,10],[90,11],[91,12],[85,13],[86,14],[92,3],[88,13],[93,8],[150,15],[155,16],[154,3],[163,17],[160,3],[162,18],[161,19],[87,20],[326,3],[94,21],[95,21],[97,22],[98,23],[99,24],[100,25],[101,26],[102,27],[103,28],[104,29],[105,30],[106,31],[107,31],[109,32],[108,33],[110,32],[111,34],[112,35],[96,36],[146,3],[113,37],[114,38],[115,39],[147,40],[116,41],[117,42],[118,43],[119,44],[120,45],[121,46],[122,47],[123,48],[124,49],[125,50],[126,50],[127,51],[128,52],[130,53],[129,54],[131,55],[132,56],[133,57],[134,58],[135,59],[136,60],[137,61],[138,62],[139,63],[140,64],[141,65],[142,66],[143,67],[144,68],[145,69],[377,3],[378,70],[379,71],[382,72],[381,3],[313,3],[324,73],[319,74],[322,75],[369,76],[358,3],[361,77],[360,78],[372,78],[359,79],[380,3],[321,80],[323,80],[315,81],[318,82],[366,81],[320,83],[314,3],[148,3],[165,3],[179,3],[257,84],[258,85],[255,85],[256,3],[261,86],[260,87],[259,88],[183,3],[185,89],[184,85],[186,90],[262,3],[263,3],[266,91],[264,3],[265,3],[235,92],[236,93],[237,94],[233,95],[234,96],[187,85],[196,97],[188,85],[190,85],[191,3],[189,85],[192,85],[193,85],[194,85],[195,98],[280,99],[211,100],[212,3],[217,101],[214,102],[213,3],[215,3],[216,103],[281,104],[210,105],[219,106],[220,3],[203,107],[224,108],[209,109],[207,110],[243,111],[206,112],[205,113],[228,114],[230,114],[229,114],[227,115],[232,114],[231,115],[238,116],[226,117],[239,118],[242,119],[221,120],[240,114],[241,114],[222,121],[223,122],[208,123],[225,124],[218,125],[198,126],[200,103],[199,126],[202,127],[201,128],[180,85],[182,129],[181,3],[244,130],[245,3],[204,3],[246,85],[254,131],[197,129],[247,3],[248,85],[250,132],[249,133],[251,85],[252,85],[253,85],[267,134],[275,135],[279,136],[276,3],[277,103],[274,137],[278,138],[273,139],[270,140],[269,141],[271,140],[268,3],[272,141],[387,142],[389,143],[388,144],[386,145],[385,3],[169,146],[167,147],[170,148],[175,3],[172,147],[173,149],[176,150],[168,147],[171,151],[174,147],[166,3],[282,152],[177,153],[350,154],[348,155],[349,156],[337,157],[338,155],[345,158],[336,159],[341,160],[351,3],[342,161],[347,162],[353,163],[352,164],[335,165],[343,166],[344,167],[339,168],[346,154],[340,169],[328,170],[327,171],[334,3],[370,3],[316,3],[317,172],[80,3],[81,3],[13,3],[15,3],[14,3],[2,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[3,3],[24,3],[25,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[59,3],[58,3],[60,3],[61,3],[10,3],[62,3],[63,3],[64,3],[11,3],[65,3],[66,3],[67,3],[68,3],[69,3],[1,3],[70,3],[71,3],[12,3],[75,3],[73,3],[78,3],[77,3],[72,3],[76,3],[74,3],[79,3],[367,173],[364,174],[365,173],[368,175],[363,3],[357,176],[354,177],[332,178],[333,3],[330,179],[329,3],[331,180],[355,3],[356,181],[371,182],[362,183],[325,3],[383,184],[373,185],[384,186],[376,187],[375,188],[374,189],[390,190],[396,191],[307,192],[305,193],[298,194],[296,195],[310,192],[291,196],[303,197],[391,198],[392,199],[292,200],[290,3],[294,201],[293,202],[295,203],[300,204],[304,205],[308,206],[309,207],[311,208],[312,209],[306,210],[301,3],[393,211],[285,3],[164,3],[299,212],[284,213],[297,3],[302,214],[283,215],[178,216],[394,217],[288,218],[395,219],[289,218],[286,220],[287,3]],"latestChangedDtsFile":"./types/util/cacheValidation.test.d.ts","version":"5.9.3"}
@@ -125,6 +125,14 @@ export interface AttestationMetadata {
125
125
  * Address of the requester (20 bytes)
126
126
  */
127
127
  requester: Uint8Array;
128
+ /**
129
+ * Data provider address
130
+ */
131
+ dataProvider: string;
132
+ /**
133
+ * Stream ID
134
+ */
135
+ streamId: string;
128
136
  /**
129
137
  * Block height when attestation was created
130
138
  */
@@ -1 +1 @@
1
- {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/types/attestation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,IAAI,EAAE,GAAG,EAAE,CAAC;IAEZ;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,EAAE,UAAU,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC;IAEtB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CA2C/E;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CA8BhF"}
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/types/attestation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,IAAI,EAAE,GAAG,EAAE,CAAC;IAEZ;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,EAAE,UAAU,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CA2C/E;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CA8BhF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trufnetwork/sdk-js",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "TRUF.NETWORK SDK for JavaScript/TypeScript",
5
5
  "type": "module",
6
6
  "keywords": [