@opengeni/db 5.0.1 → 6.0.0-canary.35585322809001
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/dist/automations.d.ts +0 -2
- package/dist/canonical-human-identities.d.ts +4 -0
- package/dist/canonical-human-identities.js +3 -3
- package/dist/capability-components.d.ts +5 -13
- package/dist/capability-integrations.d.ts +23 -8
- package/dist/capability-reconciliation.d.ts +5 -0
- package/dist/capability-reconciliation.js +21 -0
- package/dist/capability-reconciliation.js.map +1 -0
- package/dist/{chunk-6T2GGYWE.js → chunk-4UJCXBR2.js} +4 -5800
- package/dist/chunk-4UJCXBR2.js.map +1 -0
- package/dist/{chunk-MWMXWHJD.js → chunk-7JCDSMX2.js} +2 -2
- package/dist/chunk-AJA2ZIUW.js +219 -0
- package/dist/chunk-AJA2ZIUW.js.map +1 -0
- package/dist/chunk-CDAT6EKW.js +247 -0
- package/dist/chunk-CDAT6EKW.js.map +1 -0
- package/dist/{chunk-DPONPYJD.js → chunk-CJI6G254.js} +70 -18
- package/dist/chunk-CJI6G254.js.map +1 -0
- package/dist/chunk-G32NVMRJ.js +276 -0
- package/dist/chunk-G32NVMRJ.js.map +1 -0
- package/dist/chunk-GABXCG3N.js +5811 -0
- package/dist/chunk-GABXCG3N.js.map +1 -0
- package/dist/{chunk-ERKVSPDX.js → chunk-LVY33EWL.js} +3 -3
- package/dist/{chunk-45CP2YKY.js → chunk-MAMBI2HR.js} +9 -3
- package/dist/{chunk-45CP2YKY.js.map → chunk-MAMBI2HR.js.map} +1 -1
- package/dist/{chunk-F73UKJY6.js → chunk-MN5PZMEK.js} +91 -108
- package/dist/chunk-MN5PZMEK.js.map +1 -0
- package/dist/chunk-PJI4MUZ7.js +131 -0
- package/dist/chunk-PJI4MUZ7.js.map +1 -0
- package/dist/{chunk-T6BWIGWJ.js → chunk-RIYHP2WU.js} +2 -2
- package/dist/{chunk-7HMK3B45.js → chunk-RL2MUXM3.js} +16 -7
- package/dist/chunk-RL2MUXM3.js.map +1 -0
- package/dist/{chunk-HQDVI2DB.js → chunk-SYKHLPTK.js} +4 -3
- package/dist/{chunk-HQDVI2DB.js.map → chunk-SYKHLPTK.js.map} +1 -1
- package/dist/{chunk-T6YLHJLS.js → chunk-XIXVVBW2.js} +198 -51
- package/dist/chunk-XIXVVBW2.js.map +1 -0
- package/dist/chunk-ZPJ6V2VG.js +156 -0
- package/dist/chunk-ZPJ6V2VG.js.map +1 -0
- package/dist/codex-capacity-recovery.d.ts +12 -0
- package/dist/codex-failure-eligibility.d.ts +9 -0
- package/dist/company-profile-schema.d.ts +4 -2
- package/dist/connect-attempts.d.ts +15 -0
- package/dist/connect-attempts.js +25 -0
- package/dist/connect-attempts.js.map +1 -0
- package/dist/connection-authority.d.ts +7 -63
- package/dist/connection-refresh-lock.d.ts +4 -0
- package/dist/connection-token-resolver.d.ts +8 -43
- package/dist/database-timing.d.ts +10 -0
- package/dist/database.d.ts +4 -0
- package/dist/editable-artifact-durable-export.js +2 -2
- package/dist/editable-artifacts.d.ts +9 -0
- package/dist/editable-artifacts.js +7 -5
- package/dist/index.d.ts +447 -78
- package/dist/index.js +12705 -12872
- package/dist/index.js.map +1 -1
- package/dist/insights-usage-bundle.d.ts +3 -0
- package/dist/integration-bindings.d.ts +1 -1
- package/dist/integration-facets.d.ts +18 -1
- package/dist/knowledge-entries-schema.d.ts +2 -0
- package/dist/knowledge-entries.d.ts +1 -0
- package/dist/knowledge-indexing.d.ts +1 -0
- package/dist/live-session-attempt.d.ts +35 -137
- package/dist/managed-auth-session-sets.js +3 -3
- package/dist/mcp-account-bindings.d.ts +4 -0
- package/dist/mcp-oauth.d.ts +11 -0
- package/dist/mcp-operations.js +2 -2
- package/dist/migrate.js +1 -1
- package/dist/organization-integration-policy.d.ts +51 -0
- package/dist/organization-integration-policy.js +18 -0
- package/dist/organization-integration-policy.js.map +1 -0
- package/dist/organization-usage.d.ts +20 -0
- package/dist/plugin-packages.d.ts +9 -12
- package/dist/pr-review.d.ts +0 -11
- package/dist/preference-registry-schema.d.ts +17 -0
- package/dist/provision-roles.js +1 -1
- package/dist/retained-provider-commands.d.ts +124 -6
- package/dist/retained-provider-commands.js +29 -97
- package/dist/retained-provider-commands.js.map +1 -1
- package/dist/retired-session-create-metadata.d.ts +4 -0
- package/dist/runtime-posture.d.ts +7 -5
- package/dist/schema.d.ts +876 -656
- package/dist/schema.js +5 -7
- package/dist/session-admission-block.d.ts +32 -0
- package/dist/session-attempt-writers.d.ts +4 -0
- package/dist/session-background-commands.js +5 -4
- package/dist/session-command-output.js +8 -126
- package/dist/session-command-output.js.map +1 -1
- package/dist/session-control.d.ts +5 -1
- package/dist/session-event-slices.d.ts +10 -0
- package/dist/session-event-slices.js +8 -222
- package/dist/session-event-slices.js.map +1 -1
- package/dist/session-file-attachments.d.ts +28 -0
- package/dist/session-goal-reports.d.ts +43 -0
- package/dist/session-mcp-approval.d.ts +4 -0
- package/dist/session-mcp-credential-rotation.js +5 -4
- package/dist/session-mcp-credential-rotation.js.map +1 -1
- package/dist/session-message-search.d.ts +22 -0
- package/dist/session-queue-commands.d.ts +2 -6
- package/dist/session-retry.d.ts +36 -0
- package/dist/session-tenancy.js +3 -3
- package/dist/skill-source-release-impact.d.ts +18 -0
- package/dist/skill-source-release.d.ts +9 -0
- package/dist/skills.d.ts +7 -1
- package/dist/user-resource-authority.d.ts +0 -8
- package/dist/video-generation.js +3 -3
- package/dist/workspace-tool-defaults.js +5 -4
- package/dist/workspace-tool-defaults.js.map +1 -1
- package/drizzle/0468_knowledge_relationship_projection.sql +30 -0
- package/drizzle/0469_knowledge_source_discovery.sql +85 -0
- package/drizzle/0470_organization_integration_policy.sql +151 -0
- package/drizzle/0471_usage_events_account_recent_index.sql +4 -0
- package/drizzle/0472_usage_events_workspace_recent_index.sql +4 -0
- package/drizzle/0473_organization_usage_analytical_capability.sql +237 -0
- package/drizzle/0474_goal_report_requirements.sql +156 -0
- package/drizzle/0475_session_event_history_statistics.sql +15 -0
- package/drizzle/0476_session_event_history_policy_planning.sql +29 -0
- package/drizzle/0477_managed_sign_in_methods.sql +303 -0
- package/drizzle/0478_sender_owned_connections.sql +2772 -0
- package/drizzle/0479_connection_create_idempotency.sql +16 -0
- package/drizzle/0480_private_session_organization_key_administration.sql +154 -0
- package/drizzle/0481_personal_connection_visibility_cleanup.sql +45 -0
- package/drizzle/0482_remove_packs.sql +417 -0
- package/drizzle/0483_preclaim_admission_block.sql +85 -0
- package/drizzle/0484_insights_usage_projection.sql +211 -0
- package/drizzle/0485_inherited_mcp_approval_policies.sql +6 -0
- package/drizzle/0486_reasoning_configuration_message_forks.sql +35 -0
- package/drizzle/0487_skill_catalog_message_forks.sql +26 -0
- package/drizzle/0488_permanent_skill_removal.sql +207 -0
- package/drizzle/0489_modal_command_byte_offsets.sql +17 -0
- package/drizzle/0490_periodic_capture_attempt_cadence.sql +6 -0
- package/drizzle/0491_warm_capture_holder_reclamation.sql +57 -0
- package/drizzle/0492_codex_accepted_source_authority.sql +249 -0
- package/drizzle/0493_stopping_command_error_containment.sql +58 -0
- package/drizzle/0494_mcp_account_bindings.sql +334 -0
- package/drizzle/0495_consented_sandbox_recovery.sql +220 -0
- package/drizzle/0496_supervised_command_settlement.sql +386 -0
- package/drizzle/0497_modal_inventory_owner_read_capability.sql +112 -0
- package/drizzle/0498_enrollment_membership_fence.sql +87 -0
- package/drizzle/0499_session_attachment_access.sql +224 -0
- package/drizzle/0500_session_execution_epoch.sql +37 -0
- package/drizzle/0501_session_sharing_execution.sql +591 -0
- package/drizzle/0502_active_message_boundary_forks.sql +30 -0
- package/package.json +18 -6
- package/src/automations.ts +17 -73
- package/src/canonical-human-identities.ts +17 -5
- package/src/capability-components.ts +7 -24
- package/src/capability-integrations.ts +301 -21
- package/src/capability-reconciliation.ts +19 -0
- package/src/codex-capacity-recovery.ts +47 -0
- package/src/codex-failure-eligibility.ts +93 -0
- package/src/connect-attempts.ts +49 -18
- package/src/connection-authority.ts +12 -158
- package/src/connection-refresh-lock.ts +22 -0
- package/src/connection-token-resolver.ts +58 -530
- package/src/database-timing.ts +43 -0
- package/src/database.ts +61 -26
- package/src/editable-artifacts.ts +1 -1
- package/src/index.ts +3578 -1273
- package/src/insights-model-bundle.ts +19 -7
- package/src/insights-usage-bundle.ts +16 -19
- package/src/integration-bindings.ts +2 -7
- package/src/integration-facets.ts +73 -6
- package/src/knowledge-entries.ts +8 -1
- package/src/live-session-attempt.ts +0 -22
- package/src/mcp-account-bindings.ts +12 -0
- package/src/mcp-oauth.ts +26 -0
- package/src/organization-integration-policy.ts +235 -0
- package/src/organization-usage.ts +83 -0
- package/src/plugin-packages.ts +226 -42
- package/src/pr-review.ts +7 -69
- package/src/preference-registry-schema.ts +1 -0
- package/src/provision-roles.ts +50 -37
- package/src/retained-provider-commands.ts +286 -9
- package/src/retired-session-create-metadata.ts +16 -0
- package/src/runtime-posture.ts +217 -13
- package/src/schema.ts +104 -120
- package/src/session-admission-block.ts +29 -0
- package/src/session-attempt-writers.ts +48 -0
- package/src/session-control.ts +21 -5
- package/src/session-event-slices.ts +76 -26
- package/src/session-file-attachments.ts +66 -0
- package/src/session-goal-reports.ts +255 -0
- package/src/session-mcp-approval.ts +30 -0
- package/src/session-message-search.ts +348 -0
- package/src/session-queue-commands.ts +60 -36
- package/src/session-retry.ts +319 -0
- package/src/skill-config-migration.ts +11 -2
- package/src/skill-source-release-impact.ts +33 -0
- package/src/skill-source-release.ts +67 -26
- package/src/skills.ts +44 -6
- package/src/user-resource-authority.ts +0 -56
- package/dist/chunk-6T2GGYWE.js.map +0 -1
- package/dist/chunk-7HMK3B45.js.map +0 -1
- package/dist/chunk-DPONPYJD.js.map +0 -1
- package/dist/chunk-F73UKJY6.js.map +0 -1
- package/dist/chunk-T6YLHJLS.js.map +0 -1
- package/dist/host-mcp-binding-match.d.ts +0 -5
- package/dist/host-mcp-bindings.d.ts +0 -79
- package/dist/host-mcp-resolvers.d.ts +0 -47
- package/dist/host-mcp-task-authority.d.ts +0 -43
- package/dist/host-selection-identity.d.ts +0 -6
- package/dist/pack-components.d.ts +0 -83
- package/dist/pack-installations.d.ts +0 -86
- package/src/host-mcp-binding-match.ts +0 -34
- package/src/host-mcp-bindings.ts +0 -777
- package/src/host-mcp-resolvers.ts +0 -266
- package/src/host-mcp-task-authority.ts +0 -384
- package/src/host-selection-identity.ts +0 -29
- package/src/pack-components.ts +0 -980
- package/src/pack-installations.ts +0 -950
- /package/dist/{chunk-MWMXWHJD.js.map → chunk-7JCDSMX2.js.map} +0 -0
- /package/dist/{chunk-ERKVSPDX.js.map → chunk-LVY33EWL.js.map} +0 -0
- /package/dist/{chunk-T6BWIGWJ.js.map → chunk-RIYHP2WU.js.map} +0 -0
package/dist/automations.d.ts
CHANGED
|
@@ -49,8 +49,6 @@ export declare function createAutomationSource(db: Database, input: {
|
|
|
49
49
|
createdBySubjectId: string;
|
|
50
50
|
request: CreateAutomationSourceRequest;
|
|
51
51
|
webhookSecretEncrypted: string;
|
|
52
|
-
packInstallationId?: string | null;
|
|
53
|
-
packConnectorId?: string | null;
|
|
54
52
|
}): Promise<AutomationSource>;
|
|
55
53
|
export declare function resolveAutomationWebhookEndpoint(db: Database, endpointId: string): Promise<{
|
|
56
54
|
accountId: string;
|
|
@@ -59,6 +59,10 @@ export type ApplyCanonicalHumanIdentityOperationInput = {
|
|
|
59
59
|
providerId?: string | null;
|
|
60
60
|
providerAccountId?: string | null;
|
|
61
61
|
reason: string;
|
|
62
|
+
verifiedRecovery?: {
|
|
63
|
+
authSessionId: string;
|
|
64
|
+
requestDigest: string;
|
|
65
|
+
};
|
|
62
66
|
actorFence?: {
|
|
63
67
|
authorityHash: string;
|
|
64
68
|
actorEpoch: string;
|
|
@@ -11,9 +11,9 @@ import {
|
|
|
11
11
|
getCanonicalHumanIdentityProjection,
|
|
12
12
|
synchronizeCanonicalHumanLoginBindings,
|
|
13
13
|
validateCanonicalHumanSession
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-RL2MUXM3.js";
|
|
15
|
+
import "./chunk-CJI6G254.js";
|
|
16
|
+
import "./chunk-MN5PZMEK.js";
|
|
17
17
|
import "./chunk-S2TZ3F4L.js";
|
|
18
18
|
import "./chunk-PZ5AY32C.js";
|
|
19
19
|
export {
|
|
@@ -3,7 +3,7 @@ import { sql, type SQLWrapper } from "drizzle-orm";
|
|
|
3
3
|
import type { Database } from "./database.js";
|
|
4
4
|
import { type SkillSourceReleaseReceipt } from "./skill-source-release.js";
|
|
5
5
|
export type CapabilityComponentOwnerIdentity = {
|
|
6
|
-
kind: "direct" | "plugin" | "
|
|
6
|
+
kind: "direct" | "plugin" | "migration";
|
|
7
7
|
id: string;
|
|
8
8
|
};
|
|
9
9
|
export declare class CapabilityComponentVersionConflictError extends Error {
|
|
@@ -12,13 +12,11 @@ export declare class CapabilityComponentVersionConflictError extends Error {
|
|
|
12
12
|
constructor(pluginKey: string);
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* ownership is intrinsic so the rolling migration does not hide pre-v2 shared
|
|
18
|
-
* components before those Packs are reinstalled into the normalized ledger.
|
|
15
|
+
* Plugin ownership is effective only while its installation is active.
|
|
16
|
+
* Direct and migration ownership is intrinsic.
|
|
19
17
|
*/
|
|
20
18
|
export declare function effectiveCapabilityOwnerSql(ownerKind: SQLWrapper, ownerId: SQLWrapper): ReturnType<typeof sql>;
|
|
21
|
-
/** Serialize one workspace-local component identity across direct
|
|
19
|
+
/** Serialize one workspace-local component identity across direct and Plugin installers. */
|
|
22
20
|
export declare function lockCapabilityComponentIdentity(db: Database, workspaceId: string, pluginKey: string): Promise<void>;
|
|
23
21
|
/**
|
|
24
22
|
* A child installation selects exactly one immutable Plugin version. Changing
|
|
@@ -30,10 +28,4 @@ export declare function assertCapabilityComponentVersionCanChange(db: Database,
|
|
|
30
28
|
pluginInstallationId: string;
|
|
31
29
|
owner: CapabilityComponentOwnerIdentity;
|
|
32
30
|
}): Promise<void>;
|
|
33
|
-
|
|
34
|
-
* Delete physically ownerless facet installations and disable now-empty child
|
|
35
|
-
* components. Inactive lifecycle owners still preserve storage: a Pack may
|
|
36
|
-
* have claimed a component while its installation is pending or repairing,
|
|
37
|
-
* even though that owner is intentionally hidden from runtime reads.
|
|
38
|
-
*/
|
|
39
|
-
export declare function cleanupOrphanedCapabilityComponents(db: Database, workspaceId: string, facetInstallationIds: string[], skillActor?: SkillActor): Promise<SkillSourceReleaseReceipt[]>;
|
|
31
|
+
export declare function cleanupOrphanedCapabilityComponents(db: Database, workspaceId: string, facetInstallationIds: string[], skillActor?: SkillActor, lockedSkillHeadIds?: readonly string[]): Promise<SkillSourceReleaseReceipt[]>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type McpServerConnectionRef } from "@opengeni/contracts";
|
|
1
|
+
import { type IntegrationSource, type McpServerConnectionRef } from "@opengeni/contracts";
|
|
2
2
|
import { type Database } from "./database.js";
|
|
3
3
|
export type ApiIntegrationProtocol = "openapi" | "graphql";
|
|
4
4
|
export type ApiIntegrationToolSafety = "read" | "write" | "destructive";
|
|
@@ -144,7 +144,7 @@ export type ApiIntegrationRuntime = {
|
|
|
144
144
|
revision: StoredApiIntegrationRevision;
|
|
145
145
|
};
|
|
146
146
|
export type ApiIntegrationOwner = {
|
|
147
|
-
kind: "direct" | "plugin" | "
|
|
147
|
+
kind: "direct" | "plugin" | "migration";
|
|
148
148
|
id: string;
|
|
149
149
|
removable: boolean;
|
|
150
150
|
};
|
|
@@ -189,14 +189,29 @@ export declare function listInstalledApiIntegrationServerIdsForDelegations(db: D
|
|
|
189
189
|
ownerSubjectId: string;
|
|
190
190
|
kind?: string | undefined;
|
|
191
191
|
}[]): Promise<string[]>;
|
|
192
|
-
/**
|
|
193
|
-
* Read installed API Integrations from a transaction that already carries the
|
|
194
|
-
* workspace RLS context. This is intentionally separate from the public
|
|
195
|
-
* wrapper so compound Plugin/Pack lifecycle transactions never open a nested
|
|
196
|
-
* transaction or lose their advisory locks.
|
|
197
|
-
*/
|
|
198
192
|
export declare function listInstalledApiIntegrationsInRlsContext(scopedDb: Database, workspaceId: string, subjectId?: string): Promise<ApiIntegrationRuntime[]>;
|
|
199
193
|
export declare function getApiIntegrationUninstallPreview(db: Database, workspaceId: string, subjectId: string, capabilityId: string, instanceKey: string): Promise<ApiIntegrationUninstallPreview>;
|
|
194
|
+
/** No discovery or new authority: recover only an exact, currently visible and
|
|
195
|
+
* directly owned installed source. The installer must still lock and recheck
|
|
196
|
+
* the snapshot before committing; this read is not installation admission.
|
|
197
|
+
*/
|
|
198
|
+
export declare function getApiIntegrationReconciliationSnapshot(db: Database, input: {
|
|
199
|
+
accountId: string;
|
|
200
|
+
workspaceId: string;
|
|
201
|
+
subjectId: string;
|
|
202
|
+
source: IntegrationSource;
|
|
203
|
+
connectionId?: string;
|
|
204
|
+
instanceKey?: string;
|
|
205
|
+
expectedRevisionId: string;
|
|
206
|
+
expectedContentSha256: string;
|
|
207
|
+
allowedTools?: string[];
|
|
208
|
+
}): Promise<{
|
|
209
|
+
runtime: ApiIntegrationRuntime;
|
|
210
|
+
baseServerId: string;
|
|
211
|
+
name: string;
|
|
212
|
+
provider: string | null;
|
|
213
|
+
requiredScopes: string[];
|
|
214
|
+
} | null>;
|
|
200
215
|
export declare function uninstallApiIntegration(db: Database, input: {
|
|
201
216
|
accountId: string;
|
|
202
217
|
workspaceId: string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Database } from "./database.js";
|
|
2
|
+
/** Retain the installation row through the caller's outer transaction. This is
|
|
3
|
+
* a no-write reconciliation read; it never activates or alters an installation.
|
|
4
|
+
* Acquisition callers must already hold the organization policy fence. */
|
|
5
|
+
export declare function withLockedCapabilityInstallation<T>(db: Database, workspaceId: string, capabilityId: string, read: (tx: Database) => Promise<T>): Promise<T>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
withWorkspaceRls
|
|
3
|
+
} from "./chunk-CJI6G254.js";
|
|
4
|
+
import "./chunk-MN5PZMEK.js";
|
|
5
|
+
import "./chunk-S2TZ3F4L.js";
|
|
6
|
+
import "./chunk-PZ5AY32C.js";
|
|
7
|
+
|
|
8
|
+
// src/capability-reconciliation.ts
|
|
9
|
+
import { sql } from "drizzle-orm";
|
|
10
|
+
async function withLockedCapabilityInstallation(db, workspaceId, capabilityId, read) {
|
|
11
|
+
return withWorkspaceRls(db, workspaceId, async (tx) => {
|
|
12
|
+
await tx.execute(sql`select id from capability_installations
|
|
13
|
+
where workspace_id = ${workspaceId}::uuid and capability_id = ${capabilityId}
|
|
14
|
+
for update`);
|
|
15
|
+
return read(tx);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
withLockedCapabilityInstallation
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=capability-reconciliation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/capability-reconciliation.ts"],"sourcesContent":["import { sql } from \"drizzle-orm\";\nimport { withWorkspaceRls, type Database } from \"./database\";\n\n/** Retain the installation row through the caller's outer transaction. This is\n * a no-write reconciliation read; it never activates or alters an installation.\n * Acquisition callers must already hold the organization policy fence. */\nexport async function withLockedCapabilityInstallation<T>(\n db: Database,\n workspaceId: string,\n capabilityId: string,\n read: (tx: Database) => Promise<T>,\n) {\n return withWorkspaceRls(db, workspaceId, async (tx) => {\n await tx.execute(sql`select id from capability_installations\n where workspace_id = ${workspaceId}::uuid and capability_id = ${capabilityId}\n for update`);\n return read(tx);\n });\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,WAAW;AAMpB,eAAsB,iCACpB,IACA,aACA,cACA,MACA;AACA,SAAO,iBAAiB,IAAI,aAAa,OAAO,OAAO;AACrD,UAAM,GAAG,QAAQ;AAAA,6BACQ,WAAW,8BAA8B,YAAY;AAAA,iBACjE;AACb,WAAO,KAAK,EAAE;AAAA,EAChB,CAAC;AACH;","names":[]}
|