@verana-labs/vs-agent-sdk 1.12.0-dev.2 → 1.12.0-dev.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -46
- package/build/agent/VsAgent.d.ts +6 -0
- package/build/agent/VsAgent.js +25 -13
- package/build/agent/VsAgent.js.map +1 -1
- package/build/agent/createVsAgent.d.ts +1 -0
- package/build/agent/createVsAgent.js +1 -0
- package/build/agent/createVsAgent.js.map +1 -1
- package/build/blockchain/IndexerWebSocketService.d.ts +15 -13
- package/build/blockchain/IndexerWebSocketService.js +207 -103
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +33 -11
- package/build/blockchain/VeranaChainService.js +246 -55
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaHelpers.js +3 -2
- package/build/blockchain/VeranaHelpers.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.d.ts +9 -5
- package/build/blockchain/VeranaIndexerService.js +41 -23
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/IndexerHandlerRegistry.d.ts +5 -3
- package/build/blockchain/handlers/IndexerHandlerRegistry.js +6 -0
- package/build/blockchain/handlers/IndexerHandlerRegistry.js.map +1 -1
- package/build/blockchain/handlers/defaultHandlers.d.ts +4 -1
- package/build/blockchain/handlers/defaultHandlers.js +76 -44
- package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
- package/build/blockchain/handlers/stateMutations.d.ts +17 -4
- package/build/blockchain/handlers/stateMutations.js +229 -31
- package/build/blockchain/handlers/stateMutations.js.map +1 -1
- package/build/blockchain/indexerSync.d.ts +10 -0
- package/build/blockchain/indexerSync.js +34 -0
- package/build/blockchain/indexerSync.js.map +1 -0
- package/build/blockchain/types.d.ts +291 -49
- package/build/blockchain/types.js +27 -1
- package/build/blockchain/types.js.map +1 -1
- package/build/credentials/FullTailsFileService.d.ts +4 -4
- package/build/credentials/FullTailsFileService.js +78 -71
- package/build/credentials/FullTailsFileService.js.map +1 -1
- package/build/did/adminApiService.d.ts +2 -0
- package/build/did/adminApiService.js +17 -0
- package/build/did/adminApiService.js.map +1 -0
- package/build/did/migrateWebVhVersionTime.d.ts +9 -0
- package/build/did/migrateWebVhVersionTime.js +191 -0
- package/build/did/migrateWebVhVersionTime.js.map +1 -0
- package/build/events/VsAgentEvents.d.ts +16 -2
- package/build/events/VsAgentEvents.js +2 -0
- package/build/events/VsAgentEvents.js.map +1 -1
- package/build/events/VtFlowEvents.d.ts +3 -0
- package/build/events/VtFlowEvents.js +35 -0
- package/build/events/VtFlowEvents.js.map +1 -0
- package/build/events/index.d.ts +1 -0
- package/build/events/index.js +1 -0
- package/build/events/index.js.map +1 -1
- package/build/index.d.ts +4 -4
- package/build/index.js +9 -6
- package/build/index.js.map +1 -1
- package/build/plugins/setupBaseDidComm.d.ts +3 -1
- package/build/plugins/setupBaseDidComm.js +3 -1
- package/build/plugins/setupBaseDidComm.js.map +1 -1
- package/build/types.d.ts +2 -0
- package/build/types.js +3 -1
- package/build/types.js.map +1 -1
- package/build/utils/trustCredentialStore.js +2 -0
- package/build/utils/trustCredentialStore.js.map +1 -1
- package/build/utils/util.d.ts +5 -1
- package/build/utils/util.js +17 -5
- package/build/utils/util.js.map +1 -1
- package/build/vtFlow/VtFlowOrchestrator.d.ts +41 -0
- package/build/vtFlow/VtFlowOrchestrator.js +285 -0
- package/build/vtFlow/VtFlowOrchestrator.js.map +1 -0
- package/build/vtFlow/assertVerifiableService.d.ts +8 -0
- package/build/vtFlow/assertVerifiableService.js +28 -0
- package/build/vtFlow/assertVerifiableService.js.map +1 -0
- package/build/vtFlow/credentialDigest.d.ts +3 -0
- package/build/vtFlow/credentialDigest.js +23 -0
- package/build/vtFlow/credentialDigest.js.map +1 -0
- package/build/vtFlow/index.d.ts +2 -0
- package/build/vtFlow/index.js +19 -0
- package/build/vtFlow/index.js.map +1 -0
- package/package.json +16 -12
|
@@ -5,116 +5,148 @@ exports.buildDefaultIndexerHandlerRegistry = buildDefaultIndexerHandlerRegistry;
|
|
|
5
5
|
const IndexerHandlerRegistry_1 = require("./IndexerHandlerRegistry");
|
|
6
6
|
const stateMutations_1 = require("./stateMutations");
|
|
7
7
|
/**
|
|
8
|
-
* Default
|
|
8
|
+
* Default business reactions for indexer events emitted by the Verana blockchain.
|
|
9
|
+
*
|
|
10
|
+
* State-sync bookkeeping is handled separately by `applyStateMutation` and always runs, so these
|
|
11
|
+
* handlers can be overridden/disabled by application developers without breaking the sync state.
|
|
9
12
|
*/
|
|
10
13
|
exports.defaultHandlers = [
|
|
11
14
|
{
|
|
12
|
-
msg: '
|
|
15
|
+
msg: 'CreateNewEcosystem',
|
|
13
16
|
handle: async (activity, ctx) => {
|
|
14
|
-
(
|
|
15
|
-
ctx.agent.config.logger.info(`[IndexerWS] CreateNewTrustRegistry entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
17
|
+
ctx.agent.config.logger.info(`[IndexerWS] CreateNewEcosystem entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
16
18
|
},
|
|
17
19
|
},
|
|
18
20
|
{
|
|
19
|
-
msg: '
|
|
21
|
+
msg: 'UpdateEcosystem',
|
|
20
22
|
handle: async (activity, ctx) => {
|
|
21
|
-
(
|
|
22
|
-
ctx.agent.config.logger.info(`[IndexerWS] UpdateTrustRegistry entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
23
|
+
ctx.agent.config.logger.info(`[IndexerWS] UpdateEcosystem entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
23
24
|
},
|
|
24
25
|
},
|
|
25
26
|
{
|
|
26
27
|
msg: 'AddGovernanceFrameworkDocument',
|
|
27
28
|
handle: async (activity, ctx) => {
|
|
28
|
-
(
|
|
29
|
-
ctx.agent.config.logger.info(`[IndexerWS] AddGovernanceFrameworkDocument entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
29
|
+
ctx.agent.config.logger.info(`[IndexerWS] AddGovernanceFrameworkDocument entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
msg: 'IncreaseActiveGFVersion',
|
|
34
34
|
handle: async (activity, ctx) => {
|
|
35
|
-
(
|
|
36
|
-
ctx.agent.config.logger.info(`[IndexerWS] IncreaseActiveGFVersion entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
35
|
+
ctx.agent.config.logger.info(`[IndexerWS] IncreaseActiveGFVersion entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
37
36
|
},
|
|
38
37
|
},
|
|
39
38
|
{
|
|
40
39
|
msg: 'CreateNewCredentialSchema',
|
|
41
40
|
handle: async (activity, ctx) => {
|
|
42
|
-
(
|
|
43
|
-
ctx.agent.config.logger.info(`[IndexerWS] CreateNewCredentialSchema entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
41
|
+
ctx.agent.config.logger.info(`[IndexerWS] CreateNewCredentialSchema entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
44
42
|
await (0, stateMutations_1.publishVtjscIfOwner)(ctx.state, ctx.agent, String(activity.entity_id));
|
|
45
43
|
},
|
|
46
44
|
},
|
|
47
45
|
{
|
|
48
46
|
msg: 'UpdateCredentialSchema',
|
|
49
47
|
handle: async (activity, ctx) => {
|
|
50
|
-
(
|
|
51
|
-
ctx.agent.config.logger.info(`[IndexerWS] UpdateCredentialSchema entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
48
|
+
ctx.agent.config.logger.info(`[IndexerWS] UpdateCredentialSchema entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
52
49
|
},
|
|
53
50
|
},
|
|
54
51
|
{
|
|
55
52
|
msg: 'ArchiveCredentialSchema',
|
|
56
53
|
handle: async (activity, ctx) => {
|
|
57
|
-
(
|
|
58
|
-
ctx.agent.config.logger.info(`[IndexerWS] ArchiveCredentialSchema entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
54
|
+
ctx.agent.config.logger.info(`[IndexerWS] ArchiveCredentialSchema entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
59
55
|
},
|
|
60
56
|
},
|
|
61
57
|
{
|
|
62
|
-
msg: '
|
|
58
|
+
msg: 'StartParticipantOP',
|
|
63
59
|
handle: async (activity, ctx) => {
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
ctx.agent.config.logger.info(`[IndexerWS] StartParticipantOP entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
61
|
+
await (0, stateMutations_1.startParticipantOPAutoFlow)(ctx.agent, activity);
|
|
66
62
|
},
|
|
67
63
|
},
|
|
68
64
|
{
|
|
69
|
-
msg: '
|
|
65
|
+
msg: 'RenewParticipantOP',
|
|
70
66
|
handle: async (activity, ctx) => {
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
ctx.agent.config.logger.info(`[IndexerWS] RenewParticipantOP entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
68
|
+
await (0, stateMutations_1.startParticipantOPAutoFlow)(ctx.agent, activity);
|
|
73
69
|
},
|
|
74
70
|
},
|
|
75
71
|
{
|
|
76
|
-
msg: '
|
|
72
|
+
msg: 'SetParticipantOPToValidated',
|
|
77
73
|
handle: async (activity, ctx) => {
|
|
78
|
-
|
|
79
|
-
ctx.agent
|
|
74
|
+
ctx.agent.config.logger.info(`[IndexerWS] SetParticipantOPToValidated participant=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
75
|
+
await (0, stateMutations_1.markVtFlowRecordsValidated)(ctx.agent, String(activity.entity_id));
|
|
80
76
|
},
|
|
81
77
|
},
|
|
82
78
|
{
|
|
83
|
-
msg: '
|
|
79
|
+
msg: 'SetParticipantEffectiveUntil',
|
|
84
80
|
handle: async (activity, ctx) => {
|
|
85
|
-
|
|
86
|
-
(0, stateMutations_1.upsertPermission)(ctx.state, activity, {
|
|
87
|
-
effectiveUntil: String((_a = activity.changes['effective_until']) !== null && _a !== void 0 ? _a : ''),
|
|
88
|
-
});
|
|
89
|
-
ctx.agent.config.logger.info(`[IndexerWS] AdjustPermission entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
81
|
+
ctx.agent.config.logger.info(`[IndexerWS] SetParticipantEffectiveUntil entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
90
82
|
},
|
|
91
83
|
},
|
|
92
84
|
{
|
|
93
|
-
msg: '
|
|
85
|
+
msg: 'RevokeParticipant',
|
|
94
86
|
handle: async (activity, ctx) => {
|
|
95
|
-
|
|
96
|
-
ctx.agent
|
|
87
|
+
ctx.agent.config.logger.info(`[IndexerWS] RevokeParticipant entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
88
|
+
await (0, stateMutations_1.removeHolderTrustCredentialIfRevoked)(ctx.agent, String(activity.entity_id));
|
|
89
|
+
await (0, stateMutations_1.setVtFlowRecordsParticipantRevoked)(ctx.agent, String(activity.entity_id));
|
|
97
90
|
},
|
|
98
91
|
},
|
|
99
92
|
{
|
|
100
|
-
msg: '
|
|
93
|
+
msg: 'SlashParticipantTrustDeposit',
|
|
101
94
|
handle: async (activity, ctx) => {
|
|
102
|
-
|
|
103
|
-
ctx.agent
|
|
95
|
+
ctx.agent.config.logger.info(`[IndexerWS] SlashParticipantTrustDeposit participant=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
96
|
+
await (0, stateMutations_1.removeHolderTrustCredentialIfRevoked)(ctx.agent, String(activity.entity_id));
|
|
97
|
+
await (0, stateMutations_1.setVtFlowRecordsParticipantSlashed)(ctx.agent, String(activity.entity_id));
|
|
104
98
|
},
|
|
105
99
|
},
|
|
106
100
|
{
|
|
107
|
-
msg: '
|
|
101
|
+
msg: 'RepayParticipantSlashedTrustDeposit',
|
|
108
102
|
handle: async (activity, ctx) => {
|
|
109
|
-
|
|
110
|
-
ctx.agent.config.logger.info(`[IndexerWS] RepayPermissionSlashedTrustDeposit entity=${activity.entity_id} block=${ctx.block_height}`);
|
|
103
|
+
ctx.agent.config.logger.info(`[IndexerWS] RepayParticipantSlashedTrustDeposit entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
111
104
|
},
|
|
112
105
|
},
|
|
113
106
|
{
|
|
114
|
-
msg: '
|
|
107
|
+
msg: 'CancelParticipantOPLastRequest',
|
|
115
108
|
handle: async (activity, ctx) => {
|
|
116
|
-
|
|
117
|
-
ctx.agent
|
|
109
|
+
ctx.agent.config.logger.info(`[IndexerWS] CancelParticipantOPLastRequest participant=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
110
|
+
await (0, stateMutations_1.terminateVtFlowRecordsByApplicant)(ctx.agent, String(activity.entity_id));
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
msg: 'CreateNewCorporation',
|
|
115
|
+
handle: async (activity, ctx) => {
|
|
116
|
+
ctx.agent.config.logger.info(`[IndexerWS] CreateNewCorporation entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
msg: 'UpdateCorporation',
|
|
121
|
+
handle: async (activity, ctx) => {
|
|
122
|
+
ctx.agent.config.logger.info(`[IndexerWS] UpdateCorporation entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
123
|
+
if (activity.changes['did'] != null) {
|
|
124
|
+
ctx.agent.config.logger.warn(`[IndexerWS] Corporation ${activity.entity_id} was updated; if its DID rotated, per-DID indexer subscriptions may need to be re-established`);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
msg: 'ArchiveEcosystem',
|
|
130
|
+
handle: async (activity, ctx) => {
|
|
131
|
+
ctx.agent.config.logger.info(`[IndexerWS] ArchiveEcosystem entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
msg: 'CreateRootParticipant',
|
|
136
|
+
handle: async (activity, ctx) => {
|
|
137
|
+
ctx.agent.config.logger.info(`[IndexerWS] CreateRootParticipant entity=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
msg: 'SelfCreateParticipant',
|
|
142
|
+
handle: async (activity, ctx) => {
|
|
143
|
+
ctx.agent.config.logger.info(`[IndexerWS] SelfCreateParticipant participant=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
msg: 'TriggerResolver',
|
|
148
|
+
handle: async (activity, ctx) => {
|
|
149
|
+
ctx.agent.config.logger.info(`[IndexerWS] TriggerResolver participant=${activity.entity_id} block=${ctx.blockHeight}`);
|
|
118
150
|
},
|
|
119
151
|
},
|
|
120
152
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultHandlers.js","sourceRoot":"","sources":["../../../src/blockchain/handlers/defaultHandlers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"defaultHandlers.js","sourceRoot":"","sources":["../../../src/blockchain/handlers/defaultHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
|
+
import { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { VtFlowRecord, VtFlowService } from '@verana-labs/credo-ts-didcomm-vt-flow';
|
|
1
3
|
import { VsAgent } from '../../agent/VsAgent';
|
|
4
|
+
import { VeranaIndexerService } from '../VeranaIndexerService';
|
|
2
5
|
import { IndexerActivity, VeranaSyncState } from '../types';
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
6
|
+
export declare function applyStateMutation(state: VeranaSyncState, activity: IndexerActivity): void;
|
|
7
|
+
export declare function upsertEcosystem(state: VeranaSyncState, activity: IndexerActivity): void;
|
|
8
|
+
export declare function bumpActiveVersion(state: VeranaSyncState, activity: IndexerActivity): void;
|
|
5
9
|
export declare function upsertCredentialSchema(state: VeranaSyncState, activity: IndexerActivity): void;
|
|
6
|
-
export declare function
|
|
7
|
-
|
|
10
|
+
export declare function upsertParticipant(state: VeranaSyncState, activity: IndexerActivity, overrides?: {
|
|
11
|
+
opState?: string;
|
|
8
12
|
revoked?: boolean;
|
|
9
13
|
slashed?: boolean;
|
|
10
14
|
effectiveUntil?: string;
|
|
11
15
|
}): void;
|
|
16
|
+
export declare function reconcileVtFlowRecordsForParticipant(agent: VsAgent, participantId: string, reconcile: (record: VtFlowRecord, service: VtFlowService, agentContext: AgentContext) => Promise<string | null>, errorLabel: string): Promise<void>;
|
|
17
|
+
export declare function markVtFlowRecordsValidated(agent: VsAgent, participantId: string): Promise<void>;
|
|
18
|
+
export declare function setVtFlowRecordsParticipantRevoked(agent: VsAgent, participantId: string): Promise<void>;
|
|
19
|
+
export declare function setVtFlowRecordsParticipantSlashed(agent: VsAgent, participantId: string): Promise<void>;
|
|
20
|
+
/** VSA-VTI-FLOW-OP-REVOKE: a revoked/slashed HOLDER's credential is gone; drop its linked VP and stored VTC. */
|
|
21
|
+
export declare function removeHolderTrustCredentialIfRevoked(agent: VsAgent, participantId: string): Promise<void>;
|
|
22
|
+
export declare function terminateVtFlowRecordsByApplicant(agent: VsAgent, participantId: string): Promise<void>;
|
|
23
|
+
export declare function startParticipantOPAutoFlow(agent: VsAgent, activity: IndexerActivity): Promise<void>;
|
|
24
|
+
export declare function reconcileVtjscPublications(agent: VsAgent, indexer: VeranaIndexerService, corporationId: number): Promise<void>;
|
|
12
25
|
export declare function publishVtjscIfOwner(state: VeranaSyncState, agent: VsAgent, schemaEntityId: string): Promise<void>;
|
|
@@ -1,40 +1,101 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.applyStateMutation = applyStateMutation;
|
|
4
|
+
exports.upsertEcosystem = upsertEcosystem;
|
|
5
|
+
exports.bumpActiveVersion = bumpActiveVersion;
|
|
5
6
|
exports.upsertCredentialSchema = upsertCredentialSchema;
|
|
6
|
-
exports.
|
|
7
|
+
exports.upsertParticipant = upsertParticipant;
|
|
8
|
+
exports.reconcileVtFlowRecordsForParticipant = reconcileVtFlowRecordsForParticipant;
|
|
9
|
+
exports.markVtFlowRecordsValidated = markVtFlowRecordsValidated;
|
|
10
|
+
exports.setVtFlowRecordsParticipantRevoked = setVtFlowRecordsParticipantRevoked;
|
|
11
|
+
exports.setVtFlowRecordsParticipantSlashed = setVtFlowRecordsParticipantSlashed;
|
|
12
|
+
exports.removeHolderTrustCredentialIfRevoked = removeHolderTrustCredentialIfRevoked;
|
|
13
|
+
exports.terminateVtFlowRecordsByApplicant = terminateVtFlowRecordsByApplicant;
|
|
14
|
+
exports.startParticipantOPAutoFlow = startParticipantOPAutoFlow;
|
|
15
|
+
exports.reconcileVtjscPublications = reconcileVtjscPublications;
|
|
7
16
|
exports.publishVtjscIfOwner = publishVtjscIfOwner;
|
|
17
|
+
const credo_ts_didcomm_vt_flow_1 = require("@verana-labs/credo-ts-didcomm-vt-flow");
|
|
8
18
|
const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
|
|
9
19
|
const data_1 = require("../../utils/data");
|
|
10
20
|
const trustCredentialStore_1 = require("../../utils/trustCredentialStore");
|
|
21
|
+
const vtFlow_1 = require("../../vtFlow");
|
|
11
22
|
const DEFAULT_CHAIN_ID = 'vna-testnet-1';
|
|
12
|
-
|
|
13
|
-
|
|
23
|
+
const PARTICIPANT_ROLE_HOLDER = 6;
|
|
24
|
+
function applyStateMutation(state, activity) {
|
|
25
|
+
var _a;
|
|
26
|
+
switch (activity.msg) {
|
|
27
|
+
case 'CreateNewEcosystem':
|
|
28
|
+
case 'UpdateEcosystem':
|
|
29
|
+
case 'ArchiveEcosystem':
|
|
30
|
+
case 'AddGovernanceFrameworkDocument':
|
|
31
|
+
upsertEcosystem(state, activity);
|
|
32
|
+
break;
|
|
33
|
+
case 'IncreaseActiveGFVersion':
|
|
34
|
+
bumpActiveVersion(state, activity);
|
|
35
|
+
break;
|
|
36
|
+
case 'CreateNewCredentialSchema':
|
|
37
|
+
case 'UpdateCredentialSchema':
|
|
38
|
+
case 'ArchiveCredentialSchema':
|
|
39
|
+
upsertCredentialSchema(state, activity);
|
|
40
|
+
break;
|
|
41
|
+
case 'StartParticipantOP':
|
|
42
|
+
case 'RenewParticipantOP':
|
|
43
|
+
upsertParticipant(state, activity, { opState: 'PENDING' });
|
|
44
|
+
break;
|
|
45
|
+
case 'CreateRootParticipant':
|
|
46
|
+
case 'SelfCreateParticipant':
|
|
47
|
+
upsertParticipant(state, activity, {});
|
|
48
|
+
break;
|
|
49
|
+
case 'SetParticipantOPToValidated':
|
|
50
|
+
upsertParticipant(state, activity, { opState: 'VALIDATED' });
|
|
51
|
+
break;
|
|
52
|
+
case 'SetParticipantEffectiveUntil':
|
|
53
|
+
upsertParticipant(state, activity, {
|
|
54
|
+
effectiveUntil: String((_a = activity.changes['effective_until']) !== null && _a !== void 0 ? _a : ''),
|
|
55
|
+
});
|
|
56
|
+
break;
|
|
57
|
+
case 'RevokeParticipant':
|
|
58
|
+
upsertParticipant(state, activity, { revoked: true });
|
|
59
|
+
break;
|
|
60
|
+
case 'SlashParticipantTrustDeposit':
|
|
61
|
+
upsertParticipant(state, activity, { slashed: true });
|
|
62
|
+
break;
|
|
63
|
+
case 'RepayParticipantSlashedTrustDeposit':
|
|
64
|
+
upsertParticipant(state, activity, { slashed: false });
|
|
65
|
+
break;
|
|
66
|
+
case 'CancelParticipantOPLastRequest':
|
|
67
|
+
upsertParticipant(state, activity, {});
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function upsertEcosystem(state, activity) {
|
|
72
|
+
var _a, _b, _c, _d, _e;
|
|
14
73
|
const block = Number(activity.block_height) || 0;
|
|
15
74
|
const id = String(activity.entity_id);
|
|
16
75
|
const c = activity.changes;
|
|
17
|
-
const existing = state.
|
|
18
|
-
|
|
76
|
+
const existing = state.ecosystems[id];
|
|
77
|
+
const archivedRaw = c['archived'];
|
|
78
|
+
const archived = archivedRaw !== undefined ? archivedRaw !== null && archivedRaw !== false : ((_a = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _a !== void 0 ? _a : false);
|
|
79
|
+
state.ecosystems[id] = {
|
|
19
80
|
id: Number(id),
|
|
20
|
-
did: String((
|
|
21
|
-
|
|
22
|
-
archived
|
|
23
|
-
|
|
81
|
+
did: String((_c = (_b = c['did']) !== null && _b !== void 0 ? _b : existing === null || existing === void 0 ? void 0 : existing.did) !== null && _c !== void 0 ? _c : ''),
|
|
82
|
+
corporationId: Number((_e = (_d = c['corporation_id']) !== null && _d !== void 0 ? _d : existing === null || existing === void 0 ? void 0 : existing.corporationId) !== null && _e !== void 0 ? _e : 0),
|
|
83
|
+
archived,
|
|
84
|
+
activeVersion: existing === null || existing === void 0 ? void 0 : existing.activeVersion,
|
|
24
85
|
lastModifiedBlock: block,
|
|
25
86
|
};
|
|
26
87
|
}
|
|
27
|
-
function
|
|
88
|
+
function bumpActiveVersion(state, activity) {
|
|
28
89
|
var _a, _b, _c, _d;
|
|
29
90
|
const block = Number(activity.block_height) || 0;
|
|
30
91
|
const id = String(activity.entity_id);
|
|
31
|
-
const existing = state.
|
|
32
|
-
state.
|
|
92
|
+
const existing = state.ecosystems[id];
|
|
93
|
+
state.ecosystems[id] = {
|
|
33
94
|
id: Number(id),
|
|
34
95
|
did: String((_a = existing === null || existing === void 0 ? void 0 : existing.did) !== null && _a !== void 0 ? _a : ''),
|
|
35
|
-
|
|
96
|
+
corporationId: (_b = existing === null || existing === void 0 ? void 0 : existing.corporationId) !== null && _b !== void 0 ? _b : 0,
|
|
36
97
|
archived: (_c = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _c !== void 0 ? _c : false,
|
|
37
|
-
|
|
98
|
+
activeVersion: ((_d = existing === null || existing === void 0 ? void 0 : existing.activeVersion) !== null && _d !== void 0 ? _d : 0) + 1,
|
|
38
99
|
lastModifiedBlock: block,
|
|
39
100
|
};
|
|
40
101
|
}
|
|
@@ -48,45 +109,182 @@ function upsertCredentialSchema(state, activity) {
|
|
|
48
109
|
const archived = archivedRaw !== undefined ? archivedRaw !== null && archivedRaw !== false : ((_a = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _a !== void 0 ? _a : false);
|
|
49
110
|
state.credentialSchemas[id] = {
|
|
50
111
|
id: Number(id),
|
|
51
|
-
|
|
112
|
+
ecosystemId: Number((_c = (_b = c['ecosystem_id']) !== null && _b !== void 0 ? _b : existing === null || existing === void 0 ? void 0 : existing.ecosystemId) !== null && _c !== void 0 ? _c : 0),
|
|
52
113
|
jsonSchema: String((_e = (_d = c['json_schema']) !== null && _d !== void 0 ? _d : existing === null || existing === void 0 ? void 0 : existing.jsonSchema) !== null && _e !== void 0 ? _e : ''),
|
|
53
|
-
issuerMode: c['
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
verifierMode: c['verifier_perm_management_mode']
|
|
57
|
-
? String(c['verifier_perm_management_mode'])
|
|
114
|
+
issuerMode: c['issuer_onboarding_mode'] ? String(c['issuer_onboarding_mode']) : existing === null || existing === void 0 ? void 0 : existing.issuerMode,
|
|
115
|
+
verifierMode: c['verifier_onboarding_mode']
|
|
116
|
+
? String(c['verifier_onboarding_mode'])
|
|
58
117
|
: existing === null || existing === void 0 ? void 0 : existing.verifierMode,
|
|
59
118
|
archived,
|
|
60
119
|
lastModifiedBlock: block,
|
|
61
120
|
};
|
|
62
121
|
}
|
|
63
|
-
function
|
|
122
|
+
function upsertParticipant(state, activity, overrides = {}) {
|
|
64
123
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
65
124
|
const block = Number(activity.block_height) || 0;
|
|
66
125
|
const id = String(activity.entity_id);
|
|
67
126
|
const c = activity.changes;
|
|
68
|
-
const existing = state.
|
|
69
|
-
state.
|
|
127
|
+
const existing = state.participants[id];
|
|
128
|
+
state.participants[id] = {
|
|
70
129
|
id: Number(id),
|
|
71
130
|
schemaId: Number((_b = (_a = c['schema_id']) !== null && _a !== void 0 ? _a : existing === null || existing === void 0 ? void 0 : existing.schemaId) !== null && _b !== void 0 ? _b : 0),
|
|
72
131
|
did: String((_d = (_c = c['did']) !== null && _c !== void 0 ? _c : existing === null || existing === void 0 ? void 0 : existing.did) !== null && _d !== void 0 ? _d : ''),
|
|
73
|
-
|
|
74
|
-
|
|
132
|
+
role: Number((_f = (_e = c['role']) !== null && _e !== void 0 ? _e : existing === null || existing === void 0 ? void 0 : existing.role) !== null && _f !== void 0 ? _f : 0),
|
|
133
|
+
opState: (_g = overrides.opState) !== null && _g !== void 0 ? _g : String((_j = (_h = c['op_state']) !== null && _h !== void 0 ? _h : existing === null || existing === void 0 ? void 0 : existing.opState) !== null && _j !== void 0 ? _j : ''),
|
|
75
134
|
effectiveUntil: (_l = (_k = overrides.effectiveUntil) !== null && _k !== void 0 ? _k : existing === null || existing === void 0 ? void 0 : existing.effectiveUntil) !== null && _l !== void 0 ? _l : '',
|
|
76
135
|
revoked: (_o = (_m = overrides.revoked) !== null && _m !== void 0 ? _m : existing === null || existing === void 0 ? void 0 : existing.revoked) !== null && _o !== void 0 ? _o : false,
|
|
77
136
|
slashed: (_q = (_p = overrides.slashed) !== null && _p !== void 0 ? _p : existing === null || existing === void 0 ? void 0 : existing.slashed) !== null && _q !== void 0 ? _q : false,
|
|
78
137
|
lastModifiedBlock: block,
|
|
79
138
|
};
|
|
80
139
|
}
|
|
140
|
+
async function reconcileVtFlowRecordsForParticipant(agent, participantId, reconcile, errorLabel) {
|
|
141
|
+
const agentContext = agent.context;
|
|
142
|
+
const service = agentContext.dependencyManager.resolve(credo_ts_didcomm_vt_flow_1.VtFlowService);
|
|
143
|
+
const records = await service.findAllByQuery(agentContext, { participantId });
|
|
144
|
+
for (const record of records) {
|
|
145
|
+
try {
|
|
146
|
+
const transitionedTo = await reconcile(record, service, agentContext);
|
|
147
|
+
if (transitionedTo) {
|
|
148
|
+
agent.config.logger.info(`[IndexerWS] VtFlowRecord ${record.id} transitioned to ${transitionedTo} (participant=${participantId})`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
agent.config.logger.error(`[IndexerWS] ${errorLabel} for record ${record.id}`, e);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function markVtFlowRecordsValidated(agent, participantId) {
|
|
157
|
+
await reconcileVtFlowRecordsForParticipant(agent, participantId, async (record, service, agentContext) => {
|
|
158
|
+
if (record.state !== credo_ts_didcomm_vt_flow_1.VtFlowState.Validating && record.state !== credo_ts_didcomm_vt_flow_1.VtFlowState.OobPending) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
await service.markValidated(agentContext, record.id);
|
|
162
|
+
return 'VALIDATED';
|
|
163
|
+
}, 'Failed to markValidated');
|
|
164
|
+
}
|
|
165
|
+
async function setVtFlowRecordsParticipantRevoked(agent, participantId) {
|
|
166
|
+
await reconcileVtFlowRecordsForParticipant(agent, participantId, async (record, service, agentContext) => {
|
|
167
|
+
if (record.state === credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantRevoked ||
|
|
168
|
+
record.state === credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantSlashed) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
await agentContext.dependencyManager.resolve(credo_ts_didcomm_vt_flow_1.VtFlowApi).terminateByChainEvent({
|
|
172
|
+
vtFlowRecordId: record.id,
|
|
173
|
+
code: credo_ts_didcomm_vt_flow_1.VtFlowErrorCode.ParticipantRevoked,
|
|
174
|
+
state: credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantRevoked,
|
|
175
|
+
enDescription: `Participant ${participantId} has been revoked on-chain`,
|
|
176
|
+
});
|
|
177
|
+
return 'PARTICIPANT_REVOKED';
|
|
178
|
+
}, 'Failed to set PARTICIPANT_REVOKED');
|
|
179
|
+
}
|
|
180
|
+
async function setVtFlowRecordsParticipantSlashed(agent, participantId) {
|
|
181
|
+
await reconcileVtFlowRecordsForParticipant(agent, participantId, async (record, service, agentContext) => {
|
|
182
|
+
if (record.state === credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantSlashed ||
|
|
183
|
+
record.state === credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantRevoked) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
await agentContext.dependencyManager.resolve(credo_ts_didcomm_vt_flow_1.VtFlowApi).terminateByChainEvent({
|
|
187
|
+
vtFlowRecordId: record.id,
|
|
188
|
+
code: credo_ts_didcomm_vt_flow_1.VtFlowErrorCode.ParticipantSlashed,
|
|
189
|
+
state: credo_ts_didcomm_vt_flow_1.VtFlowState.ParticipantSlashed,
|
|
190
|
+
enDescription: `Participant ${participantId} trust deposit has been slashed on-chain`,
|
|
191
|
+
});
|
|
192
|
+
return 'PARTICIPANT_SLASHED';
|
|
193
|
+
}, 'Failed to set PARTICIPANT_SLASHED');
|
|
194
|
+
}
|
|
195
|
+
/** VSA-VTI-FLOW-OP-REVOKE: a revoked/slashed HOLDER's credential is gone; drop its linked VP and stored VTC. */
|
|
196
|
+
async function removeHolderTrustCredentialIfRevoked(agent, participantId) {
|
|
197
|
+
var _a, _b, _c;
|
|
198
|
+
const participant = await ((_a = agent.veranaChain) === null || _a === void 0 ? void 0 : _a.getParticipant(Number(participantId)).catch(() => undefined));
|
|
199
|
+
if ((participant === null || participant === void 0 ? void 0 : participant.role) !== PARTICIPANT_ROLE_HOLDER || participant.did !== agent.did)
|
|
200
|
+
return;
|
|
201
|
+
if (!agent.publicApiBaseUrl)
|
|
202
|
+
return;
|
|
203
|
+
const agentContext = agent.context;
|
|
204
|
+
const service = agentContext.dependencyManager.resolve(credo_ts_didcomm_vt_flow_1.VtFlowService);
|
|
205
|
+
const records = await service.findAllByQuery(agentContext, { participantId });
|
|
206
|
+
for (const record of records) {
|
|
207
|
+
if (record.role !== credo_ts_didcomm_vt_flow_1.VtFlowRole.Applicant || !record.credentialExchangeRecordId)
|
|
208
|
+
continue;
|
|
209
|
+
try {
|
|
210
|
+
const formatData = await agent.didcomm.credentials.getFormatData(record.credentialExchangeRecordId);
|
|
211
|
+
const credentialId = (_c = (_b = formatData.credential) === null || _b === void 0 ? void 0 : _b.jsonld) === null || _c === void 0 ? void 0 : _c.id;
|
|
212
|
+
if (!credentialId)
|
|
213
|
+
continue;
|
|
214
|
+
const removed = await (0, trustCredentialStore_1.removeTrustCredential)(agent, agent.publicApiBaseUrl, credentialId, '_vt/vtc');
|
|
215
|
+
if (removed) {
|
|
216
|
+
agent.config.logger.info(`[IndexerWS] Removed linked VP and stored credential ${credentialId} (participant=${participantId})`);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
agent.config.logger.debug(`[IndexerWS] No stored trust credential matched ${credentialId} (participant=${participantId})`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
agent.config.logger.error(`[IndexerWS] Failed to remove credential for revoked HOLDER participant ${participantId}`, e);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async function terminateVtFlowRecordsByApplicant(agent, participantId) {
|
|
228
|
+
await reconcileVtFlowRecordsForParticipant(agent, participantId, async (record, service, agentContext) => {
|
|
229
|
+
await service.updateState(agentContext, record, credo_ts_didcomm_vt_flow_1.VtFlowState.TerminatedByApplicant);
|
|
230
|
+
return 'TERMINATED_BY_APPLICANT';
|
|
231
|
+
}, 'Failed to terminate record');
|
|
232
|
+
}
|
|
233
|
+
async function startParticipantOPAutoFlow(agent, activity) {
|
|
234
|
+
const chain = agent.veranaChain;
|
|
235
|
+
if (!chain)
|
|
236
|
+
return;
|
|
237
|
+
const applicantParticipantId = Number(activity.entity_id);
|
|
238
|
+
if (!Number.isFinite(applicantParticipantId))
|
|
239
|
+
return;
|
|
240
|
+
const holderParticipant = await chain.getParticipant(applicantParticipantId);
|
|
241
|
+
if (!holderParticipant || holderParticipant.did !== agent.did)
|
|
242
|
+
return;
|
|
243
|
+
try {
|
|
244
|
+
const orchestrator = new vtFlow_1.VtFlowOrchestrator(agent);
|
|
245
|
+
await orchestrator.startOnboardingProcess({ applicantParticipantId });
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
agent.config.logger.error(`[IndexerWS] StartParticipantOP auto-flow failed: ${err.message}\n${err.stack}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async function reconcileVtjscPublications(agent, indexer, corporationId) {
|
|
252
|
+
var _a, _b;
|
|
253
|
+
if (!agent.did || !agent.publicApiBaseUrl)
|
|
254
|
+
return;
|
|
255
|
+
const [didRecord] = await agent.dids.getCreatedDids({ did: agent.did });
|
|
256
|
+
if (!didRecord)
|
|
257
|
+
return;
|
|
258
|
+
const chainId = (_b = (_a = agent.veranaChain) === null || _a === void 0 ? void 0 : _a.getChainId) !== null && _b !== void 0 ? _b : DEFAULT_CHAIN_ID;
|
|
259
|
+
const ecosystems = await indexer.listEcosystems();
|
|
260
|
+
for (const ecosystem of ecosystems.filter(entry => Number(entry.corporation_id) === corporationId)) {
|
|
261
|
+
for (const schema of await indexer.listCredentialSchemas(ecosystem.id)) {
|
|
262
|
+
const schemaRef = `vpr:verana:${chainId}/cs/v1/js/${schema.id}`;
|
|
263
|
+
if ((0, trustCredentialStore_1.findMetadataEntry)(didRecord, '_vt/jsc', '', schemaRef))
|
|
264
|
+
continue;
|
|
265
|
+
try {
|
|
266
|
+
await (0, trustCredentialStore_1.createJsc)(agent, agent.publicApiBaseUrl, (0, data_1.getEcsSchemas)(agent.publicApiBaseUrl), {
|
|
267
|
+
schemaBaseId: String(schema.id),
|
|
268
|
+
jsonSchemaRef: schemaRef,
|
|
269
|
+
precomputedDigestSRI: await (0, vs_agent_model_1.computeSchemaDigest)(JSON.parse(schema.json_schema)),
|
|
270
|
+
});
|
|
271
|
+
agent.config.logger.info(`[VTJSC] Reconciled missing VTJSC for schema ${schema.id} (ecosystem ${ecosystem.id})`);
|
|
272
|
+
}
|
|
273
|
+
catch (e) {
|
|
274
|
+
agent.config.logger.error(`[VTJSC] Failed to reconcile VTJSC for schema ${schema.id}`, e);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
81
279
|
async function publishVtjscIfOwner(state, agent, schemaEntityId) {
|
|
82
280
|
var _a, _b;
|
|
83
281
|
const schema = state.credentialSchemas[schemaEntityId];
|
|
84
282
|
if (!schema) {
|
|
85
283
|
agent.config.logger.warn(`[VTJSC] Schema ${schemaEntityId} not found in state`);
|
|
86
284
|
}
|
|
87
|
-
const
|
|
88
|
-
if (!
|
|
89
|
-
agent.config.logger.warn(`[VTJSC]
|
|
285
|
+
const ecosystem = state.ecosystems[String(schema.ecosystemId)];
|
|
286
|
+
if (!ecosystem) {
|
|
287
|
+
agent.config.logger.warn(`[VTJSC] Ecosystem ${schema.ecosystemId} not found in state`);
|
|
90
288
|
}
|
|
91
289
|
const chainId = (_b = (_a = agent.veranaChain) === null || _a === void 0 ? void 0 : _a.getChainId) !== null && _b !== void 0 ? _b : DEFAULT_CHAIN_ID;
|
|
92
290
|
const jsonSchemaRef = `vpr:verana:${chainId}/cs/v1/js/${schema.id}`;
|
|
@@ -104,7 +302,7 @@ async function publishVtjscIfOwner(state, agent, schemaEntityId) {
|
|
|
104
302
|
jsonSchemaRef,
|
|
105
303
|
precomputedDigestSRI: digestSRI,
|
|
106
304
|
});
|
|
107
|
-
agent.config.logger.info(`[VTJSC] Published VTJSC for schema ${schema.id} (
|
|
305
|
+
agent.config.logger.info(`[VTJSC] Published VTJSC for schema ${schema.id} (Ecosystem ${schema.ecosystemId}) at block ${state.lastBlockHeight}`);
|
|
108
306
|
}
|
|
109
307
|
catch (e) {
|
|
110
308
|
agent.config.logger.error(`[VTJSC] Failed to publish VTJSC for schema ${schema.id}`, e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateMutations.js","sourceRoot":"","sources":["../../../src/blockchain/handlers/stateMutations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stateMutations.js","sourceRoot":"","sources":["../../../src/blockchain/handlers/stateMutations.ts"],"names":[],"mappings":";;AAqBA,gDA6CC;AAED,0CAkBC;AAED,8CAaC;AAED,wDAqBC;AAED,8CA0BC;AAED,oFA6BC;AAED,gEAaC;AAED,gFAwBC;AAED,gFAwBC;AAGD,oFAsCC;AAED,8EAaC;AAED,gEAeC;AAED,gEA8BC;AAED,kDAsCC;AA1YD,oFAO8C;AAC9C,gEAAiE;AAGjE,2CAAgD;AAChD,2EAAsG;AACtG,yCAAiD;AAIjD,MAAM,gBAAgB,GAAG,eAAe,CAAA;AACxC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAEjC,SAAgB,kBAAkB,CAAC,KAAsB,EAAE,QAAyB;;IAClF,QAAQ,QAAQ,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,iBAAiB,CAAC;QACvB,KAAK,kBAAkB,CAAC;QACxB,KAAK,gCAAgC;YACnC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAChC,MAAK;QACP,KAAK,yBAAyB;YAC5B,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAClC,MAAK;QACP,KAAK,2BAA2B,CAAC;QACjC,KAAK,wBAAwB,CAAC;QAC9B,KAAK,yBAAyB;YAC5B,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB;YACvB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;YAC1D,MAAK;QACP,KAAK,uBAAuB,CAAC;QAC7B,KAAK,uBAAuB;YAC1B,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;YACtC,MAAK;QACP,KAAK,6BAA6B;YAChC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;YAC5D,MAAK;QACP,KAAK,8BAA8B;YACjC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACjC,cAAc,EAAE,MAAM,CAAC,MAAA,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,mCAAI,EAAE,CAAC;aAClE,CAAC,CAAA;YACF,MAAK;QACP,KAAK,mBAAmB;YACtB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAK;QACP,KAAK,8BAA8B;YACjC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAK;QACP,KAAK,qCAAqC;YACxC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;YACtD,MAAK;QACP,KAAK,gCAAgC;YACnC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;YACtC,MAAK;IACT,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,KAAsB,EAAE,QAAyB;;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAA;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAErC,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAA;IACjC,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,KAAK,CAAC,CAAA;IAE3G,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,KAAK,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,EAAE,CAAC;QAC5C,aAAa,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,gBAAgB,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,CAAC,CAAC;QAC1E,QAAQ;QACR,aAAa,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa;QACtC,iBAAiB,EAAE,KAAK;KACzB,CAAA;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAsB,EAAE,QAAyB;;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAErC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QACd,GAAG,EAAE,MAAM,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,EAAE,CAAC;QAChC,aAAa,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,CAAC;QAC3C,QAAQ,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,KAAK;QACrC,aAAa,EAAE,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,CAAC,CAAC,GAAG,CAAC;QACjD,iBAAiB,EAAE,KAAK;KACzB,CAAA;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAsB,EAAE,QAAyB;;IACtF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAA;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAE5C,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAA;IACjC,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,KAAK,CAAC,CAAA;IAE3G,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG;QAC5B,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QACd,WAAW,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,cAAc,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,mCAAI,CAAC,CAAC;QACpE,UAAU,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,aAAa,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,mCAAI,EAAE,CAAC;QAClE,UAAU,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU;QACpG,YAAY,EAAE,CAAC,CAAC,0BAA0B,CAAC;YACzC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YACvC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY;QAC1B,QAAQ;QACR,iBAAiB,EAAE,KAAK;KACzB,CAAA;AACH,CAAC;AAED,SAAgB,iBAAiB,CAC/B,KAAsB,EACtB,QAAyB,EACzB,YAKI,EAAE;;IAEN,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAA;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAEvC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG;QACvB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,WAAW,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,CAAC,CAAC;QAC3D,GAAG,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,KAAK,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,mCAAI,EAAE,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,MAAM,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAA,SAAS,CAAC,OAAO,mCAAI,MAAM,CAAC,MAAA,MAAA,CAAC,CAAC,UAAU,CAAC,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,EAAE,CAAC;QAC9E,cAAc,EAAE,MAAA,MAAA,SAAS,CAAC,cAAc,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,mCAAI,EAAE;QAC1E,OAAO,EAAE,MAAA,MAAA,SAAS,CAAC,OAAO,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,KAAK;QACxD,OAAO,EAAE,MAAA,MAAA,SAAS,CAAC,OAAO,mCAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,KAAK;QACxD,iBAAiB,EAAE,KAAK;KACzB,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,oCAAoC,CACxD,KAAc,EACd,aAAqB,EACrB,SAI2B,EAC3B,UAAkB;IAElB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAA;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,wCAAa,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,CAAC,CAAA;IAE7E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;YACrE,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,4BAA4B,MAAM,CAAC,EAAE,oBAAoB,cAAc,iBAAiB,aAAa,GAAG,CACzG,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACvB,eAAe,UAAU,eAAe,MAAM,CAAC,EAAE,EAAE,EACnD,CAA4B,CAC7B,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,KAAc,EAAE,aAAqB;IACpF,MAAM,oCAAoC,CACxC,KAAK,EACL,aAAa,EACb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,UAAU,EAAE,CAAC;YACvF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,OAAO,WAAW,CAAA;IACpB,CAAC,EACD,yBAAyB,CAC1B,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,KAAc,EACd,aAAqB;IAErB,MAAM,oCAAoC,CACxC,KAAK,EACL,aAAa,EACb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QACtC,IACE,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,kBAAkB;YAC/C,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,kBAAkB,EAC/C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,oCAAS,CAAC,CAAC,qBAAqB,CAAC;YAC5E,cAAc,EAAE,MAAM,CAAC,EAAE;YACzB,IAAI,EAAE,0CAAe,CAAC,kBAAkB;YACxC,KAAK,EAAE,sCAAW,CAAC,kBAAkB;YACrC,aAAa,EAAE,eAAe,aAAa,4BAA4B;SACxE,CAAC,CAAA;QACF,OAAO,qBAAqB,CAAA;IAC9B,CAAC,EACD,mCAAmC,CACpC,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,KAAc,EACd,aAAqB;IAErB,MAAM,oCAAoC,CACxC,KAAK,EACL,aAAa,EACb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QACtC,IACE,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,kBAAkB;YAC/C,MAAM,CAAC,KAAK,KAAK,sCAAW,CAAC,kBAAkB,EAC/C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,oCAAS,CAAC,CAAC,qBAAqB,CAAC;YAC5E,cAAc,EAAE,MAAM,CAAC,EAAE;YACzB,IAAI,EAAE,0CAAe,CAAC,kBAAkB;YACxC,KAAK,EAAE,sCAAW,CAAC,kBAAkB;YACrC,aAAa,EAAE,eAAe,aAAa,0CAA0C;SACtF,CAAC,CAAA;QACF,OAAO,qBAAqB,CAAA;IAC9B,CAAC,EACD,mCAAmC,CACpC,CAAA;AACH,CAAC;AAED,gHAAgH;AACzG,KAAK,UAAU,oCAAoC,CACxD,KAAc,EACd,aAAqB;;IAErB,MAAM,WAAW,GAAG,MAAM,CAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAA;IACzG,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,MAAK,uBAAuB,IAAI,WAAW,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;QAAE,OAAM;IAC1F,IAAI,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAM;IAEnC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAA;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,wCAAa,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,CAAC,CAAA;IAC7E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,qCAAU,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,0BAA0B;YAAE,SAAQ;QACxF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnG,MAAM,YAAY,GAAG,MACnB,MAAC,UAAU,CAAC,UAAuD,0CAAE,MAGtE,0CAAE,EAAE,CAAA;YACL,IAAI,CAAC,YAAY;gBAAE,SAAQ;YAC3B,MAAM,OAAO,GAAG,MAAM,IAAA,4CAAqB,EAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;YACnG,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,uDAAuD,YAAY,iBAAiB,aAAa,GAAG,CACrG,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACvB,kDAAkD,YAAY,iBAAiB,aAAa,GAAG,CAChG,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACvB,0EAA0E,aAAa,EAAE,EACzF,CAA4B,CAC7B,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iCAAiC,CACrD,KAAc,EACd,aAAqB;IAErB,MAAM,oCAAoC,CACxC,KAAK,EACL,aAAa,EACb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QACtC,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,sCAAW,CAAC,qBAAqB,CAAC,CAAA;QAClF,OAAO,yBAAyB,CAAA;IAClC,CAAC,EACD,4BAA4B,CAC7B,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,KAAc,EAAE,QAAyB;IACxF,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAA;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAM;IAClB,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAAE,OAAM;IACpD,MAAM,iBAAiB,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAA;IAC5E,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;QAAE,OAAM;IACrE,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,2BAAkB,CAAC,KAAK,CAAC,CAAA;QAClD,MAAM,YAAY,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAA;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACvB,oDAAqD,GAAa,CAAC,OAAO,KAAM,GAAa,CAAC,KAAK,EAAE,CACtG,CAAA;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,KAAc,EACd,OAA6B,EAC7B,aAAqB;;IAErB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAM;IAEjD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IACvE,IAAI,CAAC,SAAS;QAAE,OAAM;IACtB,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,UAAU,mCAAI,gBAAgB,CAAA;IAEjE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IACjD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC;QACnG,KAAK,MAAM,MAAM,IAAI,MAAM,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,cAAc,OAAO,aAAa,MAAM,CAAC,EAAE,EAAE,CAAA;YAC/D,IAAI,IAAA,wCAAiB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC;gBAAE,SAAQ;YACpE,IAAI,CAAC;gBACH,MAAM,IAAA,gCAAS,EAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAA,oBAAa,EAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;oBACpF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,aAAa,EAAE,SAAS;oBACxB,oBAAoB,EAAE,MAAM,IAAA,oCAAmB,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;iBAChF,CAAC,CAAA;gBACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,+CAA+C,MAAM,CAAC,EAAE,eAAe,SAAS,CAAC,EAAE,GAAG,CACvF,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAU,CAAC,CAAA;YACpG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,KAAsB,EACtB,KAAc,EACd,cAAsB;;IAEtB,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,cAAc,qBAAqB,CAAC,CAAA;IACjF,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,qBAAqB,CAAC,CAAA;IACxF,CAAC;IAED,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,UAAU,mCAAI,gBAAgB,CAAA;IACjE,MAAM,aAAa,GAAG,cAAc,OAAO,aAAa,MAAM,CAAC,EAAE,EAAE,CAAA;IAEnE,IAAI,SAAiB,CAAA;IACrB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAA,oCAAmB,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,cAAc,EAAE,EAAE,CAAU,CAAC,CAAA;QAChG,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,gCAAS,EAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAA,oBAAa,EAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;YACpF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,aAAa;YACb,oBAAoB,EAAE,SAAS;SAChC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,sCAAsC,MAAM,CAAC,EAAE,eAAe,MAAM,CAAC,WAAW,cAAc,KAAK,CAAC,eAAe,EAAE,CACtH,CAAA;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAU,CAAC,CAAA;IAClG,CAAC;AACH,CAAC"}
|