diff --git a/packages/core/src/modules/proofs/repository/ProofRecord.ts b/packages/core/src/modules/proofs/repository/ProofRecord.ts index bf03ad2bf6..54cb12538e 100644 --- a/packages/core/src/modules/proofs/repository/ProofRecord.ts +++ b/packages/core/src/modules/proofs/repository/ProofRecord.ts @@ -1,6 +1,5 @@ import type { TagsBase } from '../../../storage/BaseRecord' import type { AutoAcceptProof } from '../models/ProofAutoAcceptType' -import type { ProofProtocolVersion } from '../models/ProofProtocolVersion' import type { ProofState } from '../models/ProofState' import { AriesFrameworkError } from '../../../error' @@ -10,7 +9,7 @@ import { uuid } from '../../../utils/uuid' export interface ProofRecordProps { id?: string createdAt?: Date - protocolVersion: ProofProtocolVersion + protocolVersion: string isVerified?: boolean state: ProofState connectionId?: string @@ -34,7 +33,7 @@ export type DefaultProofTags = { export class ProofRecord extends BaseRecord { public connectionId?: string public threadId!: string - public protocolVersion!: ProofProtocolVersion + public protocolVersion!: string public parentThreadId?: string public isVerified?: boolean public state!: ProofState diff --git a/packages/core/src/storage/migration/StorageUpdateService.ts b/packages/core/src/storage/migration/StorageUpdateService.ts index 2c8991d319..eef16af7ff 100644 --- a/packages/core/src/storage/migration/StorageUpdateService.ts +++ b/packages/core/src/storage/migration/StorageUpdateService.ts @@ -1,9 +1,11 @@ import type { AgentContext } from '../../agent' import type { VersionString } from '../../utils/version' +import type { UpdateToVersion } from './updates' import { InjectionSymbols } from '../../constants' import { Logger } from '../../logger' import { injectable, inject } from '../../plugins' +import { isFirstVersionEqualToSecond, isFirstVersionHigherThanSecond, parseVersionString } from '../../utils/version' import { StorageVersionRecord } from './repository/StorageVersionRecord' import { StorageVersionRepository } from './repository/StorageVersionRepository' @@ -24,10 +26,14 @@ export class StorageUpdateService { this.storageVersionRepository = storageVersionRepository } - public async isUpToDate(agentContext: AgentContext) { - const currentStorageVersion = await this.getCurrentStorageVersion(agentContext) + public async isUpToDate(agentContext: AgentContext, updateToVersion?: UpdateToVersion) { + const currentStorageVersion = parseVersionString(await this.getCurrentStorageVersion(agentContext)) - const isUpToDate = CURRENT_FRAMEWORK_STORAGE_VERSION === currentStorageVersion + const compareToVersion = parseVersionString(updateToVersion ?? CURRENT_FRAMEWORK_STORAGE_VERSION) + + const isUpToDate = + isFirstVersionEqualToSecond(currentStorageVersion, compareToVersion) || + isFirstVersionHigherThanSecond(currentStorageVersion, compareToVersion) return isUpToDate } @@ -65,7 +71,7 @@ export class StorageUpdateService { * Retrieve the update record, creating it if it doesn't exist already. * * The storageVersion will be set to the INITIAL_STORAGE_VERSION if it doesn't exist yet, - * as we can assume the wallet was created before the udpate record existed + * as we can assume the wallet was created before the update record existed */ public async getStorageVersionRecord(agentContext: AgentContext) { let storageVersionRecord = await this.storageVersionRepository.findById( diff --git a/packages/core/src/storage/migration/UpdateAssistant.ts b/packages/core/src/storage/migration/UpdateAssistant.ts index 8cf30b461b..b5ce6f4e89 100644 --- a/packages/core/src/storage/migration/UpdateAssistant.ts +++ b/packages/core/src/storage/migration/UpdateAssistant.ts @@ -1,11 +1,11 @@ import type { BaseAgent } from '../../agent/BaseAgent' import type { FileSystem } from '../FileSystem' -import type { UpdateConfig } from './updates' +import type { UpdateConfig, UpdateToVersion } from './updates' import { InjectionSymbols } from '../../constants' import { AriesFrameworkError } from '../../error' import { isIndyError } from '../../utils/indyError' -import { isFirstVersionHigherThanSecond, parseVersionString } from '../../utils/version' +import { isFirstVersionEqualToSecond, isFirstVersionHigherThanSecond, parseVersionString } from '../../utils/version' import { WalletError } from '../../wallet/error/WalletError' import { StorageUpdateService } from './StorageUpdateService' @@ -43,8 +43,8 @@ export class UpdateAssistant { } } - public async isUpToDate() { - return this.storageUpdateService.isUpToDate(this.agent.context) + public async isUpToDate(updateToVersion?: UpdateToVersion) { + return this.storageUpdateService.isUpToDate(this.agent.context, updateToVersion) } public async getCurrentAgentStorageVersion() { @@ -55,18 +55,34 @@ export class UpdateAssistant { return CURRENT_FRAMEWORK_STORAGE_VERSION } - public async getNeededUpdates() { + public async getNeededUpdates(toVersion?: UpdateToVersion) { const currentStorageVersion = parseVersionString( await this.storageUpdateService.getCurrentStorageVersion(this.agent.context) ) + const parsedToVersion = toVersion ? parseVersionString(toVersion) : undefined + + // If the current storage version is higher or equal to the toVersion, we can't update, so return empty array + if ( + parsedToVersion && + (isFirstVersionHigherThanSecond(currentStorageVersion, parsedToVersion) || + isFirstVersionEqualToSecond(currentStorageVersion, parsedToVersion)) + ) { + return [] + } + // Filter updates. We don't want older updates we already applied // or aren't needed because the wallet was created after the update script was made const neededUpdates = supportedUpdates.filter((update) => { - const toVersion = parseVersionString(update.toVersion) + const updateToVersion = parseVersionString(update.toVersion) + + // If the update toVersion is higher than the wanted toVersion, we skip the update + if (parsedToVersion && isFirstVersionHigherThanSecond(updateToVersion, parsedToVersion)) { + return false + } // if an update toVersion is higher than currentStorageVersion we want to to include the update - return isFirstVersionHigherThanSecond(toVersion, currentStorageVersion) + return isFirstVersionHigherThanSecond(updateToVersion, currentStorageVersion) }) // The current storage version is too old to update @@ -79,15 +95,38 @@ export class UpdateAssistant { ) } + const lastUpdateToVersion = neededUpdates.length > 0 ? neededUpdates[neededUpdates.length - 1].toVersion : undefined + if (toVersion && lastUpdateToVersion && lastUpdateToVersion !== toVersion) { + throw new AriesFrameworkError( + `No update found for toVersion ${toVersion}. Make sure the toVersion is a valid version you can update to` + ) + } + return neededUpdates } - public async update() { + public async update(updateToVersion?: UpdateToVersion) { const updateIdentifier = Date.now().toString() try { this.agent.config.logger.info(`Starting update of agent storage with updateIdentifier ${updateIdentifier}`) - const neededUpdates = await this.getNeededUpdates() + const neededUpdates = await this.getNeededUpdates(updateToVersion) + + const currentStorageVersion = parseVersionString( + await this.storageUpdateService.getCurrentStorageVersion(this.agent.context) + ) + const parsedToVersion = updateToVersion ? parseVersionString(updateToVersion) : undefined + + // If the current storage version is higher or equal to the toVersion, we can't update. + if ( + parsedToVersion && + (isFirstVersionHigherThanSecond(currentStorageVersion, parsedToVersion) || + isFirstVersionEqualToSecond(currentStorageVersion, parsedToVersion)) + ) { + throw new StorageUpdateError( + `Can't update to version ${updateToVersion} because it is lower or equal to the current agent storage version ${currentStorageVersion[0]}.${currentStorageVersion[1]}}` + ) + } if (neededUpdates.length == 0) { this.agent.config.logger.info('No update needed. Agent storage is up to date.') @@ -96,6 +135,7 @@ export class UpdateAssistant { const fromVersion = neededUpdates[0].fromVersion const toVersion = neededUpdates[neededUpdates.length - 1].toVersion + this.agent.config.logger.info( `Starting update process. Total of ${neededUpdates.length} update(s) will be applied to update the agent storage from version ${fromVersion} to version ${toVersion}` ) diff --git a/packages/core/src/storage/migration/__tests__/0.1.test.ts b/packages/core/src/storage/migration/__tests__/0.1.test.ts index fc2b3fb047..139b73024a 100644 --- a/packages/core/src/storage/migration/__tests__/0.1.test.ts +++ b/packages/core/src/storage/migration/__tests__/0.1.test.ts @@ -1,5 +1,4 @@ import type { FileSystem } from '../../../../src' -import type { DidInfo, DidConfig } from '../../../wallet' import type { V0_1ToV0_2UpdateConfig } from '../updates/0.1-0.2' import { unlinkSync, readFileSync } from 'fs' @@ -11,7 +10,6 @@ import { agentDependencies as dependencies } from '../../../../tests/helpers' import { InjectionSymbols } from '../../../constants' import { DependencyManager } from '../../../plugins' import * as uuid from '../../../utils/uuid' -import { IndyWallet } from '../../../wallet/IndyWallet' import { UpdateAssistant } from '../UpdateAssistant' const backupDate = new Date('2022-01-21T22:50:20.522Z') @@ -31,19 +29,6 @@ const mediationRoleUpdateStrategies: V0_1ToV0_2UpdateConfig['mediationRoleUpdate ] describe('UpdateAssistant | v0.1 - v0.2', () => { - let createDidSpy: jest.SpyInstance, [didConfig?: DidConfig | undefined]> - - beforeAll(async () => { - // We need to mock did generation to create a consistent mediator routing record across sessions - createDidSpy = jest - .spyOn(IndyWallet.prototype, 'createDid') - .mockImplementation(async () => ({ did: 'mock-did', verkey: 'ocxwFbXouLkzuTCyyjFg1bPGK3nM6aPv1pZ6fn5RNgD' })) - }) - - afterAll(async () => { - createDidSpy.mockReset() - }) - it(`should correctly update the role in the mediation record`, async () => { const aliceMediationRecordsString = readFileSync( path.join(__dirname, '__fixtures__/alice-4-mediators-0.1.json'), @@ -77,7 +62,7 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { // is opened as an existing wallet instead of a new wallet storageService.records = JSON.parse(aliceMediationRecordsString) - expect(await updateAssistant.getNeededUpdates()).toEqual([ + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([ { fromVersion: '0.1', toVersion: '0.2', @@ -85,10 +70,13 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { }, ]) - await updateAssistant.update() + await updateAssistant.update('0.2') - expect(await updateAssistant.isUpToDate()).toBe(true) - expect(await updateAssistant.getNeededUpdates()).toEqual([]) + expect(await updateAssistant.isUpToDate('0.2')).toBe(true) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([]) + + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD expect(storageService.records).toMatchSnapshot(mediationRoleUpdateStrategy) // Need to remove backupFiles after each run so we don't get IOErrors @@ -136,8 +124,8 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { // is opened as an existing wallet instead of a new wallet storageService.records = JSON.parse(aliceCredentialRecordsString) - expect(await updateAssistant.isUpToDate()).toBe(false) - expect(await updateAssistant.getNeededUpdates()).toEqual([ + expect(await updateAssistant.isUpToDate('0.2')).toBe(false) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([ { fromVersion: '0.1', toVersion: '0.2', @@ -145,10 +133,13 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { }, ]) - await updateAssistant.update() + await updateAssistant.update('0.2') + + expect(await updateAssistant.isUpToDate('0.2')).toBe(true) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([]) - expect(await updateAssistant.isUpToDate()).toBe(true) - expect(await updateAssistant.getNeededUpdates()).toEqual([]) + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD expect(storageService.records).toMatchSnapshot() // Need to remove backupFiles after each run so we don't get IOErrors @@ -185,18 +176,34 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { const fileSystem = agent.injectionContainer.resolve(InjectionSymbols.FileSystem) - // We need to manually initialize the wallet as we're using the in memory wallet service - // When we call agent.initialize() it will create the wallet and store the current framework - // version in the in memory storage service. We need to manually set the records between initializing - // the wallet and calling agent.initialize() - await agent.wallet.initialize(walletConfig) + const updateAssistant = new UpdateAssistant(agent, { + v0_1ToV0_2: { + mediationRoleUpdateStrategy: 'doNotChange', + }, + }) + + await updateAssistant.initialize() // Set storage after initialization. This mimics as if this wallet // is opened as an existing wallet instead of a new wallet storageService.records = JSON.parse(aliceCredentialRecordsString) - await agent.initialize() + expect(await updateAssistant.isUpToDate('0.2')).toBe(false) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([ + { + fromVersion: '0.1', + toVersion: '0.2', + doUpdate: expect.any(Function), + }, + ]) + + await updateAssistant.update('0.2') + + expect(await updateAssistant.isUpToDate('0.2')).toBe(true) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([]) + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD expect(storageService.records).toMatchSnapshot() // Need to remove backupFiles after each run so we don't get IOErrors @@ -237,18 +244,34 @@ describe('UpdateAssistant | v0.1 - v0.2', () => { const fileSystem = agent.injectionContainer.resolve(InjectionSymbols.FileSystem) - // We need to manually initialize the wallet as we're using the in memory wallet service - // When we call agent.initialize() it will create the wallet and store the current framework - // version in the in memory storage service. We need to manually set the records between initializing - // the wallet and calling agent.initialize() - await agent.wallet.initialize(walletConfig) + const updateAssistant = new UpdateAssistant(agent, { + v0_1ToV0_2: { + mediationRoleUpdateStrategy: 'doNotChange', + }, + }) + + await updateAssistant.initialize() // Set storage after initialization. This mimics as if this wallet // is opened as an existing wallet instead of a new wallet storageService.records = JSON.parse(aliceConnectionRecordsString) - await agent.initialize() + expect(await updateAssistant.isUpToDate('0.2')).toBe(false) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([ + { + fromVersion: '0.1', + toVersion: '0.2', + doUpdate: expect.any(Function), + }, + ]) + + await updateAssistant.update('0.2') + + expect(await updateAssistant.isUpToDate('0.2')).toBe(true) + expect(await updateAssistant.getNeededUpdates('0.2')).toEqual([]) + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD expect(storageService.records).toMatchSnapshot() // Need to remove backupFiles after each run so we don't get IOErrors diff --git a/packages/core/src/storage/migration/__tests__/0.2.test.ts b/packages/core/src/storage/migration/__tests__/0.2.test.ts new file mode 100644 index 0000000000..3003a203ab --- /dev/null +++ b/packages/core/src/storage/migration/__tests__/0.2.test.ts @@ -0,0 +1,144 @@ +import type { FileSystem } from '../../../storage/FileSystem' + +import { unlinkSync, readFileSync } from 'fs' +import path from 'path' + +import { InMemoryStorageService } from '../../../../../../tests/InMemoryStorageService' +import { Agent } from '../../../../src' +import { agentDependencies } from '../../../../tests/helpers' +import { InjectionSymbols } from '../../../constants' +import { DependencyManager } from '../../../plugins' +import * as uuid from '../../../utils/uuid' +import { UpdateAssistant } from '../UpdateAssistant' + +const backupDate = new Date('2022-01-21T22:50:20.522Z') +jest.useFakeTimers().setSystemTime(backupDate) +const backupIdentifier = backupDate.getTime() + +const walletConfig = { + id: `Wallet: 0.2 Update`, + key: `Key: 0.2 Update`, +} + +describe('UpdateAssistant | v0.2 - v0.3', () => { + it(`should correctly update proof records and create didcomm records`, async () => { + // We need to mock the uuid generation to make sure we generate consistent uuids for the new records created. + let uuidCounter = 1 + const uuidSpy = jest.spyOn(uuid, 'uuid').mockImplementation(() => `${uuidCounter++}-4e4f-41d9-94c4-f49351b811f1`) + + const aliceCredentialRecordsString = readFileSync( + path.join(__dirname, '__fixtures__/alice-4-proofs-0.2.json'), + 'utf8' + ) + + const dependencyManager = new DependencyManager() + const storageService = new InMemoryStorageService() + dependencyManager.registerInstance(InjectionSymbols.StorageService, storageService) + + const agent = new Agent( + { + config: { + label: 'Test Agent', + walletConfig, + }, + dependencies: agentDependencies, + }, + dependencyManager + ) + + const fileSystem = agent.injectionContainer.resolve(InjectionSymbols.FileSystem) + + const updateAssistant = new UpdateAssistant(agent, { + v0_1ToV0_2: { + mediationRoleUpdateStrategy: 'doNotChange', + }, + }) + + await updateAssistant.initialize() + + // Set storage after initialization. This mimics as if this wallet + // is opened as an existing wallet instead of a new wallet + storageService.records = JSON.parse(aliceCredentialRecordsString) + + expect(await updateAssistant.isUpToDate()).toBe(false) + expect(await updateAssistant.getNeededUpdates()).toEqual([ + { + fromVersion: '0.2', + toVersion: '0.3', + doUpdate: expect.any(Function), + }, + ]) + + await updateAssistant.update() + + expect(await updateAssistant.isUpToDate()).toBe(true) + expect(await updateAssistant.getNeededUpdates()).toEqual([]) + + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD + expect(storageService.records).toMatchSnapshot() + + // Need to remove backupFiles after each run so we don't get IOErrors + const backupPath = `${fileSystem.basePath}/afj/migration/backup/${backupIdentifier}` + unlinkSync(backupPath) + + await agent.shutdown() + await agent.wallet.delete() + + uuidSpy.mockReset() + }) + + it(`should correctly update the proofs records and create didcomm records with auto update`, async () => { + // We need to mock the uuid generation to make sure we generate consistent uuids for the new records created. + let uuidCounter = 1 + const uuidSpy = jest.spyOn(uuid, 'uuid').mockImplementation(() => `${uuidCounter++}-4e4f-41d9-94c4-f49351b811f1`) + + const aliceCredentialRecordsString = readFileSync( + path.join(__dirname, '__fixtures__/alice-4-proofs-0.2.json'), + 'utf8' + ) + + const dependencyManager = new DependencyManager() + const storageService = new InMemoryStorageService() + dependencyManager.registerInstance(InjectionSymbols.StorageService, storageService) + + const agent = new Agent( + { + config: { + label: 'Test Agent', + walletConfig, + autoUpdateStorageOnStartup: true, + }, + dependencies: agentDependencies, + }, + dependencyManager + ) + + const fileSystem = agent.injectionContainer.resolve(InjectionSymbols.FileSystem) + + // We need to manually initialize the wallet as we're using the in memory wallet service + // When we call agent.initialize() it will create the wallet and store the current framework + // version in the in memory storage service. We need to manually set the records between initializing + // the wallet and calling agent.initialize() + await agent.wallet.initialize(walletConfig) + + // Set storage after initialization. This mimics as if this wallet + // is opened as an existing wallet instead of a new wallet + storageService.records = JSON.parse(aliceCredentialRecordsString) + + await agent.initialize() + + // MEDIATOR_ROUTING_RECORD recipientKeys will be different every time, and is not what we're testing here + delete storageService.records.MEDIATOR_ROUTING_RECORD + expect(storageService.records).toMatchSnapshot() + + // Need to remove backupFiles after each run so we don't get IOErrors + const backupPath = `${fileSystem.basePath}/afj/migration/backup/${backupIdentifier}` + unlinkSync(backupPath) + + await agent.shutdown() + await agent.wallet.delete() + + uuidSpy.mockReset() + }) +}) diff --git a/packages/core/src/storage/migration/__tests__/UpdateAssistant.test.ts b/packages/core/src/storage/migration/__tests__/UpdateAssistant.test.ts index ec4545d05e..d1677a5648 100644 --- a/packages/core/src/storage/migration/__tests__/UpdateAssistant.test.ts +++ b/packages/core/src/storage/migration/__tests__/UpdateAssistant.test.ts @@ -6,6 +6,7 @@ import { Agent } from '../../../agent/Agent' import { InjectionSymbols } from '../../../constants' import { DependencyManager } from '../../../plugins' import { UpdateAssistant } from '../UpdateAssistant' +import { CURRENT_FRAMEWORK_STORAGE_VERSION } from '../updates' const agentOptions = getAgentOptions('UpdateAssistant') @@ -54,17 +55,30 @@ describe('UpdateAssistant', () => { it('should return true when a new wallet is created', async () => { expect(await updateAssistant.isUpToDate()).toBe(true) }) + + it('should return true for a lower version than current storage', async () => { + expect(await updateAssistant.isUpToDate('0.2')).toBe(true) + }) + + it('should return true for current agent storage version', async () => { + expect(await updateAssistant.isUpToDate('0.3')).toBe(true) + }) + + it('should return false for a higher version than current storage', async () => { + // @ts-expect-error isUpToDate only allows existing versions to be passed, 100.100 is not a valid version (yet) + expect(await updateAssistant.isUpToDate('100.100')).toBe(false) + }) }) describe('UpdateAssistant.frameworkStorageVersion', () => { - it('should return 0.2', async () => { - expect(UpdateAssistant.frameworkStorageVersion).toBe('0.2') + it(`should return ${CURRENT_FRAMEWORK_STORAGE_VERSION}`, async () => { + expect(UpdateAssistant.frameworkStorageVersion).toBe(CURRENT_FRAMEWORK_STORAGE_VERSION) }) }) describe('getCurrentAgentStorageVersion()', () => { - it('should return 0.2 when a new wallet is created', async () => { - expect(await updateAssistant.getCurrentAgentStorageVersion()).toBe('0.2') + it(`should return ${CURRENT_FRAMEWORK_STORAGE_VERSION} when a new wallet is created`, async () => { + expect(await updateAssistant.getCurrentAgentStorageVersion()).toBe(CURRENT_FRAMEWORK_STORAGE_VERSION) }) }) }) diff --git a/packages/core/src/storage/migration/__tests__/__fixtures__/alice-4-proofs-0.2.json b/packages/core/src/storage/migration/__tests__/__fixtures__/alice-4-proofs-0.2.json new file mode 100644 index 0000000000..3a479abd31 --- /dev/null +++ b/packages/core/src/storage/migration/__tests__/__fixtures__/alice-4-proofs-0.2.json @@ -0,0 +1,235 @@ +{ + "STORAGE_VERSION_RECORD_ID": { + "value": { + "metadata": {}, + "id": "STORAGE_VERSION_RECORD_ID", + "createdAt": "2022-09-08T19:35:53.872Z", + "storageVersion": "0.2" + }, + "id": "STORAGE_VERSION_RECORD_ID", + "type": "StorageVersionRecord", + "tags": {} + }, + "72c96cd1-1f26-4bf3-8a00-5c00926859a8": { + "value": { + "metadata": {}, + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-09-08T19:36:06.208Z", + "proposalMessage": { + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "presentation_proposal": { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": [ + { + "name": "name", + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "value": "Alice" + } + ], + "predicates": [] + } + }, + "isVerified": true, + "requestMessage": { + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "request_presentations~attach": [ + { + "@id": "libindy-request-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319" + } + } + ], + "~thread": { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5" + } + }, + "presentationMessage": { + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "presentations~attach": [ + { + "@id": "libindy-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19" + } + } + ], + "~thread": { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5" + } + }, + "state": "done", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5" + }, + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "type": "ProofRecord", + "tags": { + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "state": "done" + } + }, + "ea840186-3c77-45f4-a2e6-349811ad8994": { + "value": { + "metadata": {}, + "isVerified": true, + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "createdAt": "2022-09-08T19:36:06.261Z", + "requestMessage": { + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "request_presentations~attach": [ + { + "@id": "libindy-request-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==" + } + } + ] + }, + "presentationMessage": { + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "presentations~attach": [ + { + "@id": "libindy-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==" + } + } + ], + "~thread": { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82" + } + }, + "state": "done", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82" + }, + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "type": "ProofRecord", + "tags": { + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "state": "done" + } + }, + "ec02ba64-63e3-46bc-b2a4-9d549d642d30": { + "value": { + "metadata": {}, + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-09-08T19:36:06.208Z", + "proposalMessage": { + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "presentation_proposal": { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": [ + { + "name": "name", + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "value": "Alice" + } + ], + "predicates": [] + } + }, + "requestMessage": { + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "request_presentations~attach": [ + { + "@id": "libindy-request-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319" + } + } + ], + "~thread": { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5" + } + }, + "presentationMessage": { + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "presentations~attach": [ + { + "@id": "libindy-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19" + } + } + ], + "~thread": { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5" + } + }, + "state": "done", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5" + }, + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "type": "ProofRecord", + "tags": { + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "state": "done" + } + }, + "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e": { + "value": { + "metadata": {}, + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "createdAt": "2022-09-08T19:36:06.261Z", + "requestMessage": { + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "request_presentations~attach": [ + { + "@id": "libindy-request-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==" + } + } + ] + }, + "presentationMessage": { + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "presentations~attach": [ + { + "@id": "libindy-presentation-0", + "mime-type": "application/json", + "data": { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==" + } + } + ], + "~thread": { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82" + } + }, + "state": "done", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82" + }, + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "type": "ProofRecord", + "tags": { + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "state": "done" + } + } +} diff --git a/packages/core/src/storage/migration/__tests__/__snapshots__/0.1.test.ts.snap b/packages/core/src/storage/migration/__tests__/__snapshots__/0.1.test.ts.snap index 838bdd61b0..927b02b255 100644 --- a/packages/core/src/storage/migration/__tests__/__snapshots__/0.1.test.ts.snap +++ b/packages/core/src/storage/migration/__tests__/__snapshots__/0.1.test.ts.snap @@ -1273,20 +1273,6 @@ Object { "threadId": "0b2f1133-ced9-49f1-83a1-eb6ba1c24cdf", }, }, - "MEDIATOR_ROUTING_RECORD": Object { - "id": "MEDIATOR_ROUTING_RECORD", - "tags": Object {}, - "type": "MediatorRoutingRecord", - "value": Object { - "_tags": Object {}, - "createdAt": "2022-01-21T22:50:20.522Z", - "id": "MEDIATOR_ROUTING_RECORD", - "metadata": Object {}, - "routingKeys": Array [ - "ocxwFbXouLkzuTCyyjFg1bPGK3nM6aPv1pZ6fn5RNgD", - ], - }, - }, "STORAGE_VERSION_RECORD_ID": Object { "id": "STORAGE_VERSION_RECORD_ID", "tags": Object {}, @@ -2975,20 +2961,6 @@ Object { "role": "receiver", }, }, - "MEDIATOR_ROUTING_RECORD": Object { - "id": "MEDIATOR_ROUTING_RECORD", - "tags": Object {}, - "type": "MediatorRoutingRecord", - "value": Object { - "_tags": Object {}, - "createdAt": "2022-01-21T22:50:20.522Z", - "id": "MEDIATOR_ROUTING_RECORD", - "metadata": Object {}, - "routingKeys": Array [ - "ocxwFbXouLkzuTCyyjFg1bPGK3nM6aPv1pZ6fn5RNgD", - ], - }, - }, "STORAGE_VERSION_RECORD_ID": Object { "id": "STORAGE_VERSION_RECORD_ID", "tags": Object {}, diff --git a/packages/core/src/storage/migration/__tests__/__snapshots__/0.2.test.ts.snap b/packages/core/src/storage/migration/__tests__/__snapshots__/0.2.test.ts.snap new file mode 100644 index 0000000000..47b6988932 --- /dev/null +++ b/packages/core/src/storage/migration/__tests__/__snapshots__/0.2.test.ts.snap @@ -0,0 +1,953 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`UpdateAssistant | v0.2 - v0.3 should correctly update proof records and create didcomm records 1`] = ` +Object { + "1-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "1-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "messageName": "propose-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/propose-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "1-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "presentation_proposal": Object { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": Array [ + Object { + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "name": "name", + "value": "Alice", + }, + ], + "predicates": Array [], + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "10-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "10-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "messageId": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "10-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "2-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "2-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "2-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "3-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "3-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "4185f336-f307-4022-a27d-78d1271586f6", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "3-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e": Object { + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.261Z", + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "4-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "4-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "messageId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "4-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==", + }, + "mime-type": "application/json", + }, + ], + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "5-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "5-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "messageId": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "5-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "6-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "6-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "messageName": "propose-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/propose-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "6-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "presentation_proposal": Object { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": Array [ + Object { + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "name": "name", + "value": "Alice", + }, + ], + "predicates": Array [], + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "7-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "7-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "7-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "72c96cd1-1f26-4bf3-8a00-5c00926859a8": Object { + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.208Z", + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "isVerified": true, + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "8-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "8-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "4185f336-f307-4022-a27d-78d1271586f6", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "8-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "9-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "9-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "messageId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "9-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==", + }, + "mime-type": "application/json", + }, + ], + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "STORAGE_VERSION_RECORD_ID": Object { + "id": "STORAGE_VERSION_RECORD_ID", + "tags": Object {}, + "type": "StorageVersionRecord", + "value": Object { + "createdAt": "2022-09-08T19:35:53.872Z", + "id": "STORAGE_VERSION_RECORD_ID", + "metadata": Object {}, + "storageVersion": "0.3", + }, + }, + "ea840186-3c77-45f4-a2e6-349811ad8994": Object { + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.261Z", + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "isVerified": true, + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "ec02ba64-63e3-46bc-b2a4-9d549d642d30": Object { + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.208Z", + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, +} +`; + +exports[`UpdateAssistant | v0.2 - v0.3 should correctly update the proofs records and create didcomm records with auto update 1`] = ` +Object { + "1-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "1-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "messageName": "propose-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/propose-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "1-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "presentation_proposal": Object { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": Array [ + Object { + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "name": "name", + "value": "Alice", + }, + ], + "predicates": Array [], + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "10-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "10-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "messageId": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "10-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "2-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "2-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "2-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "3-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "3-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "messageId": "4185f336-f307-4022-a27d-78d1271586f6", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "3-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e": Object { + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.261Z", + "id": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "4-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "4-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "messageId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "4-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==", + }, + "mime-type": "application/json", + }, + ], + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "5-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "5-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "messageId": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ea840186-3c77-45f4-a2e6-349811ad8994", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "5-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2481ce81-560b-4ce6-a22b-ee4b6ed369e8", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI5MDg5MzE2Mjc0ODc5NTI4MjMzNDA1MTY0NTgwOTM1OTIxMjIwMjMyMzg5ODE0NjE4OTc3ODA3MjA0MDg4OTQ0ODkzNDc1OTE5NTE4Mjc0NDEwNTU3OTU3NjEwNjYzOTAxMTcwODM1NDM2Nzk1NDU4NDU1Mjg3NzEwOTk3NTk3OTA1OTM3NTYyODIyNjg5NTE3MjAyNzQ4NTUxODgzODQ5NjY3MjYwNTA3NjU0NDM5OTk0MjczNDQ0MTU5NTQyMzg3MzI0OTM5OTAzMDcyMDc2MjQ4Njg1MTgyMjA4NTA0OTkyOTg5MTk0NzUwMDgyODU1MTc1NDE1OTIzMjU3MzA0MTQ0NjYxMDc5MDU2NzExMTg3NzMzMDE3NDQ1MTEyOTQyNDAyMTEzNDg0NjM5MTMxMDY2MDc3ODE2NzQzMzY3OTMzMDI3MjY3MTQ3MDIxMTkxODQ0NTQzMzI5NzUzMTA1NTA3MDk0Mzc5OTA5OTYzNjcxMTQ4NzM3Mjk3NDA2MzUxMzk0NTcwNTM3Nzk0NDg1Njc1ODc3MDU5OTI2NTc3MDU4MzY1NTA0MDQwNjAzNDIxMDI3NDYyOTY0OTExNTc5MDAyNjg2NDAzMjMyOTc3OTU0ODM1Nzc2NzQwMDI3NDIxNjI0MTUzNDQ4NzYyODAxODM3OTU3MTQ3NzM0MDkxNDk3NjMwMjA3MTY3MzUzMjAwMTM5ODE4MDg1NjgwMDIzMTc1MDEyNzM4Mjk1NzIwODU2OTMwNDYxMzIxMDQ4NTIxMjQ0ODQ5MjQ5Njc5MDMwMzI0NDcyNjYyOTQxNjc5NDU3OTk3NzQ4NiIsImUiOiI0NTE0MTczNzExODM2MzMzOTk0NjA3MTMwNjQ5MjA0NjEyNzU2Njk1MDI4ODA2NTY0NzI4MzE3OTExNzYxNDA0NTE5Nzk0NjA3NDk4Njg5NjgyOTYxODk3MDc4MDcwMzQ5Nzk0MzUzMDQ1MTY3MTUyMTk2OTU4NTU0NTI5MzgxNjY3MDE5MDA2OSIsInYiOiI1MzM4NDg2NDY2MjE4MTg2ODg3MTUwNzY4NTQ0OTQyMTEyMDcyOTQ1MzczMDQ1MDAzNTk0MTk0MzAxMDA5NDUzMzk5MjMxMDM5NjExMjU4NTE3MTgzODUyMDc4NjI0NjMyMDExNDE2MzI3Mjc1MTM3Nzc1MTAxNjgxODcwMzI4MjY3MTE4MjExNjEwNzAwNDc2MjA5NzMwMTIwODI2NzMyMTkwMDg0ODkyOTc2NTEwMTgxODE2MTkzMzM5MTk0MjE5MDIxOTQ1OTI1NTg4NjEzODEwMjE1Nzg1NDk1NDk0NjQ0NzIwMDM4MjMwMTg1MDUyMDAxMTMxNjE3MjQwMDIyNjQzOTYxNTkwOTU5ODE3ODMxMzg2Mzc5NDQ1MzI2Mzg4NzYzNjQ5MDYxODk4Nzk1ODcwMjE2NTkxMDI3NDkwMzAwMjA0OTc1NzM0NDgyNDM1ODE4MjgwMTQxNzA0MzA0MjMzNDE5NTMyNjc1Mzk3MDE3MTc1MTE3ODI5NDUzNjAxNDM2OTM2MDM3NDMyMzg4OTYyMjMwOTAyNTk1MjE3MTA3MzkxOTMwOTA3NDI4NDQyNDg4ODE2NjQ4NTI4OTkyNjUwMzY0NjIyNDA2MTA5MDUxOTczMjYyOTM3MzYyMTg5NDcwNTUyNDQ2MjAzNTMzNTQzNTY4NjY5MzAwODY0MzQyMzQwMDgwNjg5Mjg5MjI0OTg1MjU4MjU5MTk1Nzc5NTA3MzgwMDI1ODcwNDk0MDIwNDkyMTE2MDExOTA3NjI0NjI0ODg1ODk5NjMxOTk4ODMwNjg4NTY2OTQ5OTgyNjI5Mjg2Mzk2MjIzNDc2NDE1ODM2Nzg3MDA2Mzg5Nzc0MjYxMzk5NjUxMTY3NTYwNzcyMDc5NjkzMDA1NzMwOTQzNTIzNjAwNzM4Mjc4MzA4NDE2MjA5NzQzNzA1ODQ1MzUxNjQzMDUyMTY1MTcyNTg5NTMwMTU0MTU3NjE2OTYzMDg5NjM4ODg4NDc0NDg3MDA3NjY0NTA2ODk5NTE1OTE5MDAxNzIyMDEyNzczMzU3MDc4MjI4OTIzMDMzNTA1NDQ2MzAxOTQxNzA2OTc2NTY3Mzg5NDk3MzgxMDI2NjIyNDEzNTYyODc5MjM0MTM0NTI5Nzk4NzY2ODY0Nzk1OTQ3NzY1ODcwNDgwMTIyNDk0ODE0MzU0MDQ3MzE2ODY0ODczODMzNDgyNDU5NTc1NTQxNDI4NTE0MTciLCJtIjp7Im1hc3Rlcl9zZWNyZXQiOiIxNjE3NTE3NzgwNjcyMjkxNDYzNTc4ODc1NDk1NTkxODgyOTA3ODYzNTk0NzgyMzk4NjczMTIwMDg2OTEwMjA3NzczODk0ODYyNzQxOTIxMzk2OTE2MDUxNDk2NjYzMjIxNDA5MzA3NjA4NTczMDg1ODExMzAyNTYxNDcyMzgxMjY1NjE4MzQyNzc1NTY5MjQ4OTQ3NzY4Mjc3OTQzMzIxMjcyMTY1MjEyMDAxNDI0NDAwMyJ9LCJtMiI6IjE1MDQ5MTk3MTU3NDcyNjQ0MDMzMzE4OTAxNTc5MDYyNTk5NzA2NzU5MzcwMDk1MTk3NzI1NTE3MTM4OTAyMzcwNDUwMTQ5NDk2NjU0MTEzMzA5NTQ4MTc4MDM3NDU1NjY3Njk2NDA0MDY1ODI5MTUzNDYzNDczNzgzMTk5ODA3MjEzNjg5NDE3MTM2NDI4NDg5NzUwNjUzNTc5MjU0NDY0ODk0OTM4MDkyODY2NTUzNjU5In0sImdlX3Byb29mcyI6W119LCJub25fcmV2b2NfcHJvb2YiOm51bGx9XSwiYWdncmVnYXRlZF9wcm9vZiI6eyJjX2hhc2giOiIzNjk4Mjk3ODU5OTY5Nzg3MjI5MTA5NDY2OTIwMDA3ODEwNDA2ODQ3NTI2MDE2NjgxMTIwNDE4OTQ1NDk0NzcwODQyNjI3MjA2MjEyNCIsImNfbGlzdCI6W1syLDIwOCwzLDUzLDIyOSwxMzksMTAyLDUxLDI0MCwxOTUsMTM1LDExNSwxNzYsMTcyLDE4NCw5OSwxMDksMTU2LDgzLDUyLDIxNSwyMjMsODQsMjU1LDY2LDIyNiwyMjMsMTA1LDExMSwyMjEsMTgwLDk1LDEyMiwxMzMsMjIyLDI3LDM5LDk5LDcwLDEzLDM3LDI0LDI1NSwxMTQsMjM1LDEwOSwxODMsNTEsMjEzLDE5MCwyMjYsMTI2LDExOCwyLDIyMCw3OCw0OSw5LDI0MCw1NSwxNzksMTQ3LDUxLDIwMSwyMTMsMjEzLDEzMCw0LDE4MCwxMDMsMTk1LDgsMjYsMTE4LDE0LDEzMCwxOCwxMzMsMTg3LDYyLDMsOTcsMjEwLDEwMiwxMiwxNjIsNzksMTg0LDU1LDIzMiwyMTksMjIwLDE3NSwyNTUsMTY5LDE5NywxMjMsMTI3LDE2MCwyNSwxNTEsMTg3LDg3LDE5MSwxMDksMTk4LDQ0LDcxLDM4LDUwLDEwNCwyNiwyMTYsMTgwLDIxOCwxNDUsMTAsNzYsMTgwLDE1Nyw5OCwyMzQsNzcsMTY5LDE1MSw2OCwxNzAsMTg5LDE1LDIxNyw5OCwyMzUsMTI0LDE2NywyMzYsMjUzLDExMiwyNDQsMTg5LDk1LDE3OCw2MCw3MiwyMjgsMjIzLDcwLDI3LDYwLDIzNiwyMTIsOTcsMjA1LDIyLDI1MCwzNCwyNDYsMTIyLDM0LDgsMjU1LDIyLDEyNywxNTEsMjQyLDE4MCwxNzEsMTIxLDIyNywzMiwxMDMsNTEsMTcwLDIzNCwyMDYsMjAsMTAyLDIwNCwxMTYsMTk5LDAsMTE5LDExNSwxODAsMjA3LDE2LDQzLDU5LDI0MiwxNzksMTksMTk5LDQ4LDEyNyw5LDYzLDg4LDIxLDAsMjE1LDE3NCw0NywxNzcsMjMyLDE4MiwyNTMsMjQ5LDI0OCwxMTgsMTk2LDI1NCwxMzksMTIsMjksMSw0OCwxMDUsMzMsNCwyMDgsMTA2LDIzNSwyNDcsMjEwLDExMiwyMTAsMTA2LDE5OSwxOTgsNDcsOCwyMzYsNTIsOSw2NywxMjgsMjQwLDI1NCwyMzIsMjEwLDQsMjM5LDE4MywzOSwxOTMsMjQyLDMyLDEzMywxOTQsMTQ4LDk4LDExMSw3NywxNTUsMjA1LDE3OCwxOTcsMTRdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6eyJzdWJfcHJvb2ZfaW5kZXgiOjAsInJhdyI6IkFsaWNlIiwiZW5jb2RlZCI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In19LCJzZWxmX2F0dGVzdGVkX2F0dHJzIjp7fSwidW5yZXZlYWxlZF9hdHRycyI6e30sInByZWRpY2F0ZXMiOnt9fSwiaWRlbnRpZmllcnMiOlt7InNjaGVtYV9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6Mjp0ZXN0LXNjaGVtYS00ZTk0YzJlNC00ZjQ3LTRmZjMtYTg4OC02ZjY0ZGE2YTkyZGM6MS4wIiwiY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyIsInJldl9yZWdfaWQiOm51bGwsInRpbWVzdGFtcCI6bnVsbH1dfQ==", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "6-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "6-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "messageName": "propose-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/propose-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "6-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "00cdd404-82fc-431d-9c18-fb643636d2a5", + "@type": "https://didcomm.org/present-proof/1.0/propose-presentation", + "presentation_proposal": Object { + "@type": "https://didcomm.org/present-proof/1.0/presentation-preview", + "attributes": Array [ + Object { + "cred_def_id": "7yW6SoTjHNhD3zYgm4PbK8:3:CL:472319:TAG", + "name": "name", + "value": "Alice", + }, + ], + "predicates": Array [], + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "7-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "7-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "7-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "2862b25d-396c-46d7-ad09-f48ff4ea6db6", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjQwMzU1MDc0MDYxMTU0MzEwMzA5NzMyMiIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7IjBmZWExODk3LTQzMTEtNDhmMi1hMmMyLTM4NzRlOTkzYWVmMCI6eyJuYW1lIjoibmFtZSIsInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiI3eVc2U29UakhOaEQzellnbTRQYks4OjM6Q0w6NDcyMzE5OlRBRyJ9XX19LCJyZXF1ZXN0ZWRfcHJlZGljYXRlcyI6e319", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "72c96cd1-1f26-4bf3-8a00-5c00926859a8": Object { + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.208Z", + "id": "72c96cd1-1f26-4bf3-8a00-5c00926859a8", + "isVerified": true, + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "8-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "8-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "messageId": "4185f336-f307-4022-a27d-78d1271586f6", + "messageName": "presentation", + "messageType": "https://didcomm.org/present-proof/1.0/presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "sender", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "8-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "4185f336-f307-4022-a27d-78d1271586f6", + "@type": "https://didcomm.org/present-proof/1.0/presentation", + "presentations~attach": Array [ + Object { + "@id": "libindy-presentation-0", + "data": Object { + "base64": "eyJwcm9vZiI6eyJwcm9vZnMiOlt7InByaW1hcnlfcHJvb2YiOnsiZXFfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsibmFtZSI6IjI3MDM0NjQwMDI0MTE3MzMxMDMzMDYzMTI4MDQ0MDA0MzE4MjE4NDg2ODE2OTMxNTIwODg2NDA1NTM1NjU5OTM0NDE3NDM4NzgxNTA3In0sImFfcHJpbWUiOiI1MjE1MTkyMzYwMDA2NTg5OTUyMjM1MTYwNjkxMzU1OTc4MjA2NDUzODA3NDUzNTk5OTE5OTkzNzM1NTczNzA1OTA2OTY5MTAwMjIzOTM4MjMyMzE5NDE1Njk1NTMzNjQ4MDMzNzc3NzI4NTE3NzI4Mjk4NDU1OTI0NjQ1NTU1NjQyNjE1NTQ3NTI0MDc0MTAyOTQyNjg4NzQwNDcwMjg4MDAyNTgwMjI4OTg4MDk4MDk0NjQxODc5NjkxNzQwMTY2OTc0MzA2OTczNjQ2MDA3ODg3NTU1NDU2NjM3NTUyODk2NjkxNDc3NDg2MDM1MTIxMjU0NDY0NzA2MDY0Mzg2NzA1MzU0MDk3MDcxNDc5OTkwMzIwNzIxMzQ4MjM1NTQ2NjI5OTcxNzAyNzgwNjUwNTgyMDQ3MzMxOTIwNjE5OTIzODg4NjU1NjI0NjYzMDE4NTAzMDUzOTQ4OTEyNzk4MDE1ODA2Mzk5MTAxNTg3MzAzNTgwNzkyMzQ3OTU2NjE1MDgzODczNDQ5MTM0MjEyOTE2MDY3MTExMjM4MjQzMjM1MTk5OTk1MTUzNjIyMTM1NjA4Nzg5OTc2MTk2NTkzMTczNTU4NTA0NDYxODA0MTk5MzY3MTkwODY2MDY5MTk1MDE5MjA4NjQyMzAwNzE5NjAzMDk5MzI1MjA0Njg4MzkwMjc2NTM5NjQxMDk0Mjc4NTY2NTUzOTU1Mzg4NDAwMDUyNzEyNzk0MjUwODgxODg3NDIzMDM5NTgyMjM5MjQ4NTk0NjYyMDYzMDA0ODI2MzE5NDQxNTUwNzEyNDA3MTQ4NDc4Njc1MCIsImUiOiIxNTk2OTcwODg4Njk3NTIwMjIzMzA3ODgyOTM5MzI5OTY0NTM3NjA4Mzc3NjQ0MTc2MjIyODczMjc2MTc0Mjg5ODkzNjgyNDAzODg0NzkzOTk1NDIwMjQ2MTEzNDk5NjMxNDAyMTQxMzQ0OTYxOTg3NDAyNjAxNDc4NTQ3NjEwNjI5MTgzNzc2NDQiLCJ2IjoiOTE0NzEwNTI1NDAwMDA2MDgzNTMwMTMzOTIxMjQyNTQwMzI5ODAzNjI4MjgyMDA0MDAzMTY1ODIyMjMyOTM0NDYxODAyMjQ4MDk4OTU5MzY1MTY2ODA3MjEwODgzNzIyNjIyMzA1ODQyNjM4NzM4NjIzNzM5NzYwNjEzODc5NDcwOTU5NDkyNjg1ODY5MTY4NTQyMDU1MjAyNzcxMDYxODI4MDEwMTAzNDY3Nzk2MDA5NDIzMTc4NzU2NDQ5OTk3NDQzODk5NDkyMDEyMTE0OTYyMDk5MDgwMDg1MzAxMjUyMDU1NDk0MDUzMTM4MzU4NDE0MjM0MDg5MzQyNDY2Nzg0MTA4ODkwMjA2NjY0NDI1NDE1ODYzNDA5NTI1MjI3NDY0NTg1OTU0MzQ3OTk2OTIwNTU0NTg5Nzc3OTA1MzMzMDMxMzAzMzEzNTI1OTY3NDg3NzAyMDQxODEwNzA3ODQ1OTAyMTAyODAxMTM0NDk3ODAxNjQyNTgwNzQyNjg0Njk5OTk3ODM2NTY0NzM2NDE5NDc0NzM1Mzg2ODkzMTQwMDA4ODIzNjIzMjA1MDA5MzE3NjgzNTIyNjI5NzkwMDY1NDExNDE5MzY3MTc3MTgwMTQ3MDk3ODkwNTkxNDM4NTkyMjQyNzA1MTg5NDM4NDE2MjA4MTA0MjczNjI3MjUyNzc2NzY1NjI0NjExMjk3NjQzODA5NzIwMjcxMDUzOTY1MzM4MTA5Njk1MTM4NjA3NTA0NzExMDc0NDY0ODU5Mzc5MzUxNTI1ODY4NzgyMjk2MzIzNDIwMzIwMTAwMzQ4MDA5MDMyMzIxOTM2ODMzNDk0Nzc2NDUxMjQ0NzMzNTQxMzI3Mzc4MTc3OTYwMTMzOTg2NzE4NTA2NTk0MzE2MjMyMzEwMTk5NjE2NjQ4NzI3MjU0MTUwNjg2MjA4OTQ1MTM3Mzg5MTI5Mjg4NzUyNzE3MjA5NjI3ODcyNjE3NTM3MjEwMDk2NTU2MTkzMzgxMzUwNTgzMDM1NjI5OTg3MjE5MTk3OTQ4OTEyNDI3NzI0MTA1ODE2NzA0NDkyOTMzNzQyMjcxOTQ5NTk1ODAwOTUyMDA5NDczNzQ2OTM5ODU0Mzg0NDI4MzY0MjE0NjUyNjI4MDgyOTQwOTMzODcwNTE1MjE4NTc1MzY4NDgwMjM4OTM2MTc0NDM5NzExNTUzNDI3NDEwNzA2NTgxMTkzMzg2NDM2ODEyIiwibSI6eyJtYXN0ZXJfc2VjcmV0IjoiNDU1NjIzMDY3NjQ4NDQ0NTEzODAyNzM4ODkxODAyMTkxNDg1MzY0NzMzMDkxMTIwMjM5MDg1ODY0NTQxMzU5Njg0MDgyMDczNTgzNDMzMjM4MzU2Njg2MTgwNzI1MzIyMjU2MzgwMjYxNzYyMTc5MTg3MDU3Mjk4Nzg3NzEzNDcyODY5MjE5NDI1ODgyNTEyNzI0ODk4NjkzMDk3OTkwODI4MDIzMjUwNTkyMTAwNDI5OSJ9LCJtMiI6IjEyMjUwNjAyNjEwOTE0Njk5NDEzNDk3MjEyOTYwNTA3OTQ1MDkwOTk1OTMwNjYyMDMyOTA2NTIxNDUxNjI0MDUxMTk2MTg3MjIxNjgxNzEzMDc1OTg0MDY5MjY5MTY3MDQ5ODExMDc3NDk1NTM2MDg4OTE0NTc3MDk2NTgwNjMwODIzNDQyMTk4Nzk5Nzg4NzIyNDIzMzg4MDIyNjE5MzM4MzA2MjM3NTQ2MzI5OTI4MDEifSwiZ2VfcHJvb2ZzIjpbXX0sIm5vbl9yZXZvY19wcm9vZiI6bnVsbH1dLCJhZ2dyZWdhdGVkX3Byb29mIjp7ImNfaGFzaCI6IjU4Njg3MDc5MDA2NTc0OTY1OTA5ODk2MDc5OTU0NTA2NDM2ODg0NzMxOTIxMjk0NDA5NDYxNzI5NjkzMTI4MDM1OTcxMjAwMjY5NzgzIiwiY19saXN0IjpbWzEsMTU3LDMxLDExMiwxNjQsMjA1LDIyNCw3NiwzMiwyMTIsMTczLDc3LDIxNyw2MiwxNzMsMTc3LDQsMTU5LDE0OSwyMzMsMTE3LDEwNCw5MiwxMzgsMzUsMjYsNDgsODUsMjQwLDIzNCw0MywxOTYsNTksMTE0LDI0MiwxNTMsNDAsMTg3LDIzOSwxMDAsMTcwLDIsMzYsMTA3LDIyOSwzNywxMTEsNjAsOTIsOSwxMTcsMjM4LDE0MCwyNDMsMywyNDIsMjM0LDE1MiwxNjYsNiwxNjEsMTM0LDIyMiwxNjMsNDMsNjIsMTIsODEsMjUzLDE3NiwxMjUsMjQsOCw5MiwxMywyMjIsMTcxLDIzMywxODIsMjE1LDIyLDIzNCw5NSwxMTIsMTIyLDEwMiwxNTIsMTA2LDE4Miw0LDIxOSw1NiwxMDEsMTQ3LDIyNywyNDYsMTE1LDY0LDE4Myw0LDY3LDEyNCwxNDAsMTY2LDEzOCwxNCwyNCw1MSwxODUsMTk5LDEwOSwyLDUxLDE5MCwxODEsMjQ3LDYxLDE5MCw4NSwyNDcsMjE3LDIyLDE2NCwxOTIsMjM1LDE4NywxNDgsMjYsMTA5LDI1MywxMTYsMjQxLDY1LDEzNiw0MSwyMjUsMjI5LDE3OCwxMjUsNzksMjQ2LDUzLDQ0LDE5MiwxNDEsMjQzLDE4NCwxNTEsMTIsOSwxMDQsMjE5LDE2Miw3MSw3Miw3LDg5LDgzLDgsMjI1LDEzLDQ4LDEzMywyNDcsMTg3LDExNCw4NSw3Nyw1OSw5OSw3MCw2OSw3MSwxMzMsMTY5LDExMSwxMTAsNzksNDQsMTc0LDIzLDEwMywxNjYsNjksNSwxNDcsNjYsNzcsMTYzLDExMiw0MiwxOTksMTQyLDE0LDIyLDE1MSwyNDgsMzMsMzQsMTk4LDE1NiwyMCwyMzEsMjA0LDcwLDgyLDI1MywxMzgsMTMxLDQyLDIwNSwzMywxMDksMjMyLDE3LDEwNiw2OSw3Miw2MCwyMTAsMjMyLDExMywxMjQsNzYsMTgxLDIwOCwwLDE4NiwyNTEsMTQzLDExMyw0NSwxNzEsMTAsNDMsMTUsMzAsMjA4LDkzLDYsMTY4LDEwNiwyMDMsNDgsMjUwLDIxOSw5LDE3LDEwNCwzNSw1OCwxNTksMTgwLDExMyw2NiwxMzYsNjJdXX19LCJyZXF1ZXN0ZWRfcHJvb2YiOnsicmV2ZWFsZWRfYXR0cnMiOnsiMGZlYTE4OTctNDMxMS00OGYyLWEyYzItMzg3NGU5OTNhZWYwIjp7InN1Yl9wcm9vZl9pbmRleCI6MCwicmF3IjoiQWxpY2UiLCJlbmNvZGVkIjoiMjcwMzQ2NDAwMjQxMTczMzEwMzMwNjMxMjgwNDQwMDQzMTgyMTg0ODY4MTY5MzE1MjA4ODY0MDU1MzU2NTk5MzQ0MTc0Mzg3ODE1MDcifX0sInNlbGZfYXR0ZXN0ZWRfYXR0cnMiOnt9LCJ1bnJldmVhbGVkX2F0dHJzIjp7fSwicHJlZGljYXRlcyI6e319LCJpZGVudGlmaWVycyI6W3sic2NoZW1hX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODoyOnRlc3Qtc2NoZW1hLTRlOTRjMmU0LTRmNDctNGZmMy1hODg4LTZmNjRkYTZhOTJkYzoxLjAiLCJjcmVkX2RlZl9pZCI6Ijd5VzZTb1RqSE5oRDN6WWdtNFBiSzg6MzpDTDo0NzIzMTk6VEFHIiwicmV2X3JlZ19pZCI6bnVsbCwidGltZXN0YW1wIjpudWxsfV19", + }, + "mime-type": "application/json", + }, + ], + "~thread": Object { + "thid": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, + "metadata": Object {}, + "role": "sender", + }, + }, + "9-4e4f-41d9-94c4-f49351b811f1": Object { + "id": "9-4e4f-41d9-94c4-f49351b811f1", + "tags": Object { + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "messageId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "messageName": "request-presentation", + "messageType": "https://didcomm.org/present-proof/1.0/request-presentation", + "protocolMajorVersion": "1", + "protocolMinorVersion": "0", + "protocolName": "present-proof", + "role": "receiver", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "DidCommMessageRecord", + "value": Object { + "_tags": Object {}, + "associatedRecordId": "3d5d7ad4-f0aa-4b1b-8c2c-780ee383564e", + "createdAt": "2022-01-21T22:50:20.522Z", + "id": "9-4e4f-41d9-94c4-f49351b811f1", + "message": Object { + "@id": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + "@type": "https://didcomm.org/present-proof/1.0/request-presentation", + "request_presentations~attach": Array [ + Object { + "@id": "libindy-request-presentation-0", + "data": Object { + "base64": "eyJuYW1lIjoicHJvb2YtcmVxdWVzdCIsInZlcnNpb24iOiIxLjAiLCJub25jZSI6IjUyODExNDc1NTIxNzg3NzExMjI1Mzc0NSIsInJlcXVlc3RlZF9hdHRyaWJ1dGVzIjp7Im5hbWUiOnsibmFtZSI6Im5hbWUiLCJyZXN0cmljdGlvbnMiOlt7ImNyZWRfZGVmX2lkIjoiN3lXNlNvVGpITmhEM3pZZ200UGJLODozOkNMOjQ3MjMxOTpUQUcifV19fSwicmVxdWVzdGVkX3ByZWRpY2F0ZXMiOnt9fQ==", + }, + "mime-type": "application/json", + }, + ], + }, + "metadata": Object {}, + "role": "receiver", + }, + }, + "STORAGE_VERSION_RECORD_ID": Object { + "id": "STORAGE_VERSION_RECORD_ID", + "tags": Object {}, + "type": "StorageVersionRecord", + "value": Object { + "createdAt": "2022-09-08T19:35:53.872Z", + "id": "STORAGE_VERSION_RECORD_ID", + "metadata": Object {}, + "storageVersion": "0.3", + }, + }, + "ea840186-3c77-45f4-a2e6-349811ad8994": Object { + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.261Z", + "id": "ea840186-3c77-45f4-a2e6-349811ad8994", + "isVerified": true, + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "7fcfc074-43ac-43cc-92b9-76afceeebe82", + }, + }, + "ec02ba64-63e3-46bc-b2a4-9d549d642d30": Object { + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "tags": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "parentThreadId": undefined, + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + "type": "ProofRecord", + "value": Object { + "connectionId": "946f660f-bfa6-4a98-a801-ebde5da95e2c", + "createdAt": "2022-09-08T19:36:06.208Z", + "id": "ec02ba64-63e3-46bc-b2a4-9d549d642d30", + "metadata": Object {}, + "protocolVersion": "v1", + "state": "done", + "threadId": "00cdd404-82fc-431d-9c18-fb643636d2a5", + }, + }, +} +`; diff --git a/packages/core/src/storage/migration/updates.ts b/packages/core/src/storage/migration/updates.ts index 86d9ef5b71..d079287e61 100644 --- a/packages/core/src/storage/migration/updates.ts +++ b/packages/core/src/storage/migration/updates.ts @@ -3,6 +3,7 @@ import type { VersionString } from '../../utils/version' import type { V0_1ToV0_2UpdateConfig } from './updates/0.1-0.2' import { updateV0_1ToV0_2 } from './updates/0.1-0.2' +import { updateV0_2ToV0_3 } from './updates/0.2-0.3' export const INITIAL_STORAGE_VERSION = '0.1' @@ -22,13 +23,24 @@ export const DEFAULT_UPDATE_CONFIG: UpdateConfig = { }, } -export const supportedUpdates: Update[] = [ +export const supportedUpdates = [ { fromVersion: '0.1', toVersion: '0.2', doUpdate: updateV0_1ToV0_2, }, -] + { + fromVersion: '0.2', + toVersion: '0.3', + doUpdate: updateV0_2ToV0_3, + }, +] as const // Current version is last toVersion from the supported updates -export const CURRENT_FRAMEWORK_STORAGE_VERSION = supportedUpdates[supportedUpdates.length - 1].toVersion +export const CURRENT_FRAMEWORK_STORAGE_VERSION = supportedUpdates[supportedUpdates.length - 1].toVersion as LastItem< + typeof supportedUpdates +>['toVersion'] + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +type LastItem = T extends readonly [...infer _, infer U] ? U : T[0] | undefined +export type UpdateToVersion = typeof supportedUpdates[number]['toVersion'] diff --git a/packages/core/src/storage/migration/updates/0.2-0.3/__tests__/proof.test.ts b/packages/core/src/storage/migration/updates/0.2-0.3/__tests__/proof.test.ts new file mode 100644 index 0000000000..b3026f8bf2 --- /dev/null +++ b/packages/core/src/storage/migration/updates/0.2-0.3/__tests__/proof.test.ts @@ -0,0 +1,310 @@ +import { getAgentConfig, getAgentContext, mockFunction } from '../../../../../../tests/helpers' +import { Agent } from '../../../../../agent/Agent' +import { ProofRecord, ProofState } from '../../../../../modules/proofs' +import { ProofRepository } from '../../../../../modules/proofs/repository/ProofRepository' +import { JsonTransformer } from '../../../../../utils' +import { DidCommMessageRole } from '../../../../didcomm' +import { DidCommMessageRepository } from '../../../../didcomm/DidCommMessageRepository' +import * as testModule from '../proof' + +const agentConfig = getAgentConfig('Migration ProofRecord 0.2-0.3') +const agentContext = getAgentContext() + +jest.mock('../../../../../modules/proofs/repository/ProofRepository') +const ProofRepositoryMock = ProofRepository as jest.Mock +const proofRepository = new ProofRepositoryMock() + +jest.mock('../../../../didcomm/DidCommMessageRepository') +const DidCommMessageRepositoryMock = DidCommMessageRepository as jest.Mock +const didCommMessageRepository = new DidCommMessageRepositoryMock() + +jest.mock('../../../../../agent/Agent', () => { + return { + Agent: jest.fn(() => ({ + config: agentConfig, + context: agentContext, + dependencyManager: { + resolve: jest.fn((token) => (token === ProofRepositoryMock ? proofRepository : didCommMessageRepository)), + }, + })), + } +}) + +// Mock typed object +const AgentMock = Agent as jest.Mock + +describe('0.2-0.3 | Proof', () => { + let agent: Agent + + beforeEach(() => { + agent = new AgentMock() + }) + + afterEach(() => { + mockFunction(didCommMessageRepository.save).mockReset() + }) + + describe('migrateProofRecordToV0_3()', () => { + it('should fetch all records and apply the needed updates ', async () => { + const records: ProofRecord[] = [getProof({})] + + mockFunction(proofRepository.getAll).mockResolvedValue(records) + + await testModule.migrateProofRecordToV0_3(agent) + + expect(proofRepository.getAll).toHaveBeenCalledTimes(1) + expect(proofRepository.update).toHaveBeenCalledTimes(records.length) + + const updatedRecord = mockFunction(proofRepository.update).mock.calls[0][1] + + // Check first object is transformed correctly + expect(updatedRecord.toJSON()).toMatchObject({ + protocolVersion: 'v1', + }) + }) + }) + + describe('migrateInternalProofRecordProperties()', () => { + it('should set the protocol version to v1 if not set on the record', async () => { + const proofRecord = getProof({}) + + await testModule.migrateInternalProofRecordProperties(agent, proofRecord) + + expect(proofRecord).toMatchObject({ + protocolVersion: 'v1', + }) + }) + + it('should not set the protocol version if a value is already set', async () => { + const proofRecord = getProof({ + protocolVersion: 'v2', + }) + + await testModule.migrateInternalProofRecordProperties(agent, proofRecord) + + expect(proofRecord).toMatchObject({ + protocolVersion: 'v2', + }) + }) + }) + + describe('moveDidCommMessages()', () => { + it('should move the proposalMessage, requestMessage and presentationMessage to the didCommMessageRepository', async () => { + const proposalMessage = { '@type': 'ProposalMessage' } + const requestMessage = { '@type': 'RequestMessage' } + const presentationMessage = { '@type': 'ProofMessage' } + + const proofRecord = getProof({ + id: 'theProofId', + state: ProofState.Done, + proposalMessage, + requestMessage, + presentationMessage, + }) + + await testModule.moveDidCommMessages(agent, proofRecord) + + expect(didCommMessageRepository.save).toHaveBeenCalledTimes(3) + const [[, proposalMessageRecord], [, requestMessageRecord], [, presentationMessageRecord]] = mockFunction( + didCommMessageRepository.save + ).mock.calls + + expect(proposalMessageRecord).toMatchObject({ + role: DidCommMessageRole.Sender, + associatedRecordId: 'theProofId', + message: proposalMessage, + }) + + expect(requestMessageRecord).toMatchObject({ + role: DidCommMessageRole.Receiver, + associatedRecordId: 'theProofId', + message: requestMessage, + }) + + expect(presentationMessageRecord).toMatchObject({ + role: DidCommMessageRole.Sender, + associatedRecordId: 'theProofId', + message: presentationMessage, + }) + + expect(proofRecord.toJSON()).toEqual({ + _tags: {}, + protocolVersion: undefined, + id: 'theProofId', + state: ProofState.Done, + metadata: {}, + isVerified: undefined, + }) + }) + + it('should only move the messages which exist in the record', async () => { + const proposalMessage = { '@type': 'ProposalMessage' } + + const proofRecord = getProof({ + id: 'theProofId', + state: ProofState.Done, + proposalMessage, + isVerified: true, + }) + + await testModule.moveDidCommMessages(agent, proofRecord) + + expect(didCommMessageRepository.save).toHaveBeenCalledTimes(1) + const [[, proposalMessageRecord]] = mockFunction(didCommMessageRepository.save).mock.calls + + expect(proposalMessageRecord).toMatchObject({ + role: DidCommMessageRole.Receiver, + associatedRecordId: 'theProofId', + message: proposalMessage, + }) + + expect(proofRecord.toJSON()).toEqual({ + _tags: {}, + protocolVersion: undefined, + id: 'theProofId', + state: ProofState.Done, + metadata: {}, + isVerified: true, + presentationMessage: undefined, + requestMessage: undefined, + }) + }) + + it('should determine the correct DidCommMessageRole for each message', async () => { + const proposalMessage = { '@type': 'ProposalMessage' } + const requestMessage = { '@type': 'RequestMessage' } + const presentationMessage = { '@type': 'ProofMessage' } + + const proofRecord = getProof({ + id: 'theProofId', + state: ProofState.Done, + proposalMessage, + requestMessage, + presentationMessage, + }) + + await testModule.moveDidCommMessages(agent, proofRecord) + + expect(didCommMessageRepository.save).toHaveBeenCalledTimes(3) + const [[, proposalMessageRecord], [, requestMessageRecord], [, presentationMessageRecord]] = mockFunction( + didCommMessageRepository.save + ).mock.calls + + expect(proposalMessageRecord).toMatchObject({ + role: DidCommMessageRole.Sender, + associatedRecordId: 'theProofId', + message: proposalMessage, + }) + + expect(requestMessageRecord).toMatchObject({ + role: DidCommMessageRole.Receiver, + associatedRecordId: 'theProofId', + message: requestMessage, + }) + + expect(presentationMessageRecord).toMatchObject({ + role: DidCommMessageRole.Sender, + associatedRecordId: 'theProofId', + message: presentationMessage, + }) + + expect(proofRecord.toJSON()).toEqual({ + _tags: {}, + metadata: {}, + protocolVersion: undefined, + id: 'theProofId', + state: ProofState.Done, + }) + }) + }) + + describe('getProofRole', () => { + it('should return ProofRole.Verifier if isVerified is set', () => { + expect( + testModule.getProofRole( + getProof({ + isVerified: true, + }) + ) + ).toBe(testModule.ProofRole.Verifier) + + expect( + testModule.getProofRole( + getProof({ + isVerified: false, + }) + ) + ).toBe(testModule.ProofRole.Verifier) + }) + + it('should return ProofRole.Prover if state is Done and isVerified is not set', () => { + const proofRecord = getProof({ + state: ProofState.Done, + }) + + expect(testModule.getProofRole(proofRecord)).toBe(testModule.ProofRole.Prover) + }) + + it('should return ProofRole.Prover if the value is a prover state', () => { + const holderStates = [ + ProofState.Declined, + ProofState.ProposalSent, + ProofState.RequestReceived, + ProofState.PresentationSent, + ] + + for (const holderState of holderStates) { + expect( + testModule.getProofRole( + getProof({ + state: holderState, + }) + ) + ).toBe(testModule.ProofRole.Prover) + } + }) + + it('should return ProofRole.Verifier if the state is not a prover state, isVerified is not set and the state is not Done', () => { + expect( + testModule.getProofRole( + getProof({ + state: ProofState.PresentationReceived, + }) + ) + ).toBe(testModule.ProofRole.Verifier) + }) + }) +}) + +function getProof({ + protocolVersion, + proposalMessage, + requestMessage, + presentationMessage, + state, + isVerified, + id, +}: { + protocolVersion?: string + /* eslint-disable @typescript-eslint/no-explicit-any */ + proposalMessage?: any + requestMessage?: any + presentationMessage?: any + /* eslint-enable @typescript-eslint/no-explicit-any */ + state?: ProofState + isVerified?: boolean + id?: string +}) { + return JsonTransformer.fromJSON( + { + protocolVersion, + proposalMessage, + requestMessage, + presentationMessage, + state, + isVerified, + id, + }, + ProofRecord + ) +} diff --git a/packages/core/src/storage/migration/updates/0.2-0.3/index.ts b/packages/core/src/storage/migration/updates/0.2-0.3/index.ts new file mode 100644 index 0000000000..562ddba1db --- /dev/null +++ b/packages/core/src/storage/migration/updates/0.2-0.3/index.ts @@ -0,0 +1,7 @@ +import type { BaseAgent } from '../../../../agent/BaseAgent' + +import { migrateProofRecordToV0_3 } from './proof' + +export async function updateV0_2ToV0_3(agent: Agent): Promise { + await migrateProofRecordToV0_3(agent) +} diff --git a/packages/core/src/storage/migration/updates/0.2-0.3/proof.ts b/packages/core/src/storage/migration/updates/0.2-0.3/proof.ts new file mode 100644 index 0000000000..71a9f10cc3 --- /dev/null +++ b/packages/core/src/storage/migration/updates/0.2-0.3/proof.ts @@ -0,0 +1,162 @@ +import type { BaseAgent } from '../../../../agent/BaseAgent' +import type { ProofRecord } from '../../../../modules/proofs' +import type { JsonObject } from '../../../../types' + +import { ProofState } from '../../../../modules/proofs/models' +import { ProofRepository } from '../../../../modules/proofs/repository/ProofRepository' +import { DidCommMessageRepository, DidCommMessageRecord, DidCommMessageRole } from '../../../didcomm' + +/** + * Migrates the {@link ProofRecord} to 0.3 compatible format. It fetches all records from storage + * and applies the needed updates to the records. After a record has been transformed, it is updated + * in storage and the next record will be transformed. + * + * The following transformations are applied: + * - {@link migrateInternalProofRecordProperties} + * - {@link moveDidCommMessages} + */ +export async function migrateProofRecordToV0_3(agent: Agent) { + agent.config.logger.info('Migrating proof records to storage version 0.3') + const proofRepository = agent.dependencyManager.resolve(ProofRepository) + + agent.config.logger.debug(`Fetching all proof records from storage`) + const allProofs = await proofRepository.getAll(agent.context) + + agent.config.logger.debug(`Found a total of ${allProofs.length} proof records to update.`) + for (const proofRecord of allProofs) { + agent.config.logger.debug(`Migrating proof record with id ${proofRecord.id} to storage version 0.3`) + + await migrateInternalProofRecordProperties(agent, proofRecord) + await moveDidCommMessages(agent, proofRecord) + + await proofRepository.update(agent.context, proofRecord) + + agent.config.logger.debug(`Successfully migrated proof record with id ${proofRecord.id} to storage version 0.3`) + } +} + +export enum ProofRole { + Verifier, + Prover, +} + +const proverProofStates = [ + ProofState.Declined, + ProofState.ProposalSent, + ProofState.RequestReceived, + ProofState.PresentationSent, + ProofState.Done, +] + +const didCommMessageRoleMapping = { + [ProofRole.Verifier]: { + proposalMessage: DidCommMessageRole.Receiver, + requestMessage: DidCommMessageRole.Sender, + presentationMessage: DidCommMessageRole.Receiver, + }, + [ProofRole.Prover]: { + proposalMessage: DidCommMessageRole.Sender, + requestMessage: DidCommMessageRole.Receiver, + presentationMessage: DidCommMessageRole.Sender, + }, +} + +const proofRecordMessageKeys = ['proposalMessage', 'requestMessage', 'presentationMessage'] as const + +export function getProofRole(proofRecord: ProofRecord) { + // Proofs will only have an isVerified value when a presentation is verified, meaning we're the verifier + if (proofRecord.isVerified !== undefined) { + return ProofRole.Verifier + } + // If proofRecord.isVerified doesn't have any value, and we're also not in state done it means we're the prover. + else if (proofRecord.state === ProofState.Done) { + return ProofRole.Prover + } + // For these states we know for certain that we're the prover + else if (proverProofStates.includes(proofRecord.state)) { + return ProofRole.Prover + } + + // For all other states we can be certain we're the verifier + return ProofRole.Verifier +} + +/** + * With the addition of support for different protocol versions the proof record now stores the protocol version. + * + * The following 0.2.0 proof record structure (unrelated keys omitted): + * + * ```json + * { + * } + * ``` + * + * Will be transformed into the following 0.3.0 structure (unrelated keys omitted): + * + * ```json + * { + * "protocolVersion: "v1" + * } + * ``` + */ +export async function migrateInternalProofRecordProperties( + agent: Agent, + proofRecord: ProofRecord +) { + agent.config.logger.debug(`Migrating internal proof record ${proofRecord.id} properties to storage version 0.3`) + + if (!proofRecord.protocolVersion) { + agent.config.logger.debug(`Setting protocolVersion to v1`) + proofRecord.protocolVersion = 'v1' + } + + agent.config.logger.debug( + `Successfully migrated internal proof record ${proofRecord.id} properties to storage version 0.3` + ) +} + +/** + * In 0.3.0 the v1 didcomm messages have been moved out of the proof record into separate record using the DidCommMessageRepository. + * This migration scripts extracts all message (proposalMessage, requestMessage, presentationMessage) and moves + * them into the DidCommMessageRepository. + */ +export async function moveDidCommMessages(agent: Agent, proofRecord: ProofRecord) { + agent.config.logger.debug( + `Moving didcomm messages from proof record with id ${proofRecord.id} to DidCommMessageRecord` + ) + const didCommMessageRepository = agent.dependencyManager.resolve(DidCommMessageRepository) + + for (const messageKey of proofRecordMessageKeys) { + agent.config.logger.debug( + `Starting move of ${messageKey} from proof record with id ${proofRecord.id} to DIDCommMessageRecord` + ) + const proofRecordJson = proofRecord as unknown as JsonObject + const message = proofRecordJson[messageKey] as JsonObject | undefined + + if (message) { + const proofRole = getProofRole(proofRecord) + const didCommMessageRole = didCommMessageRoleMapping[proofRole][messageKey] + + const didCommMessageRecord = new DidCommMessageRecord({ + role: didCommMessageRole, + associatedRecordId: proofRecord.id, + message, + }) + await didCommMessageRepository.save(agent.context, didCommMessageRecord) + + agent.config.logger.debug( + `Successfully moved ${messageKey} from proof record with id ${proofRecord.id} to DIDCommMessageRecord` + ) + + delete proofRecordJson[messageKey] + } else { + agent.config.logger.debug( + `Proof record with id ${proofRecord.id} does not have a ${messageKey}. Not creating a DIDCommMessageRecord` + ) + } + } + + agent.config.logger.debug( + `Successfully moved didcomm messages from proof record with id ${proofRecord.id} to DIDCommMessageRecord` + ) +} diff --git a/packages/core/src/utils/__tests__/version.test.ts b/packages/core/src/utils/__tests__/version.test.ts index 408bca1ee4..d9fdcdedb8 100644 --- a/packages/core/src/utils/__tests__/version.test.ts +++ b/packages/core/src/utils/__tests__/version.test.ts @@ -1,4 +1,4 @@ -import { isFirstVersionHigherThanSecond, parseVersionString } from '../version' +import { isFirstVersionEqualToSecond, isFirstVersionHigherThanSecond, parseVersionString } from '../version' describe('version', () => { describe('parseVersionString()', () => { @@ -35,4 +35,31 @@ describe('version', () => { expect(isFirstVersionHigherThanSecond([2, 10], [2, 10])).toBe(false) }) }) + + describe('isFirstVersionEqualToSecond()', () => { + it('returns false if the major version digit of the first version is lower than the second', () => { + expect(isFirstVersionEqualToSecond([2, 0], [1, 0])).toBe(false) + expect(isFirstVersionEqualToSecond([2, 1], [1, 10])).toBe(false) + }) + + it('returns false if the major version digit of the first version is higher than the second', () => { + expect(isFirstVersionEqualToSecond([1, 0], [2, 0])).toBe(false) + expect(isFirstVersionEqualToSecond([1, 10], [2, 1])).toBe(false) + }) + + it('returns false if the major version digit of both versions are equal, but the minor version of the first version is lower', () => { + expect(isFirstVersionEqualToSecond([1, 10], [1, 0])).toBe(false) + expect(isFirstVersionEqualToSecond([2, 11], [2, 10])).toBe(false) + }) + + it('returns false if the major version digit of both versions are equal, but the minor version of the second version is lower', () => { + expect(isFirstVersionEqualToSecond([1, 0], [1, 10])).toBe(false) + expect(isFirstVersionEqualToSecond([2, 10], [2, 11])).toBe(false) + }) + + it('returns true if the major and minor version digit of both versions are equal', () => { + expect(isFirstVersionEqualToSecond([1, 0], [1, 0])).toBe(true) + expect(isFirstVersionEqualToSecond([2, 10], [2, 10])).toBe(true) + }) + }) }) diff --git a/packages/core/src/utils/version.ts b/packages/core/src/utils/version.ts index 58a3f10a77..33ae345f99 100644 --- a/packages/core/src/utils/version.ts +++ b/packages/core/src/utils/version.ts @@ -8,6 +8,10 @@ export function isFirstVersionHigherThanSecond(first: Version, second: Version) return first[0] > second[0] || (first[0] == second[0] && first[1] > second[1]) } +export function isFirstVersionEqualToSecond(first: Version, second: Version) { + return first[0] === second[0] && first[1] === second[1] +} + export type VersionString = `${number}.${number}` export type MajorVersion = number export type MinorVersion = number