convex-cms 0.0.16 → 0.0.17
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/admin/dist/types/admin/src/components/ui/field.d.ts +1 -1
- package/admin/dist/types/admin/src/lib/cmsExports.d.ts +6 -6
- package/admin/dist/types/admin/src/lib/cmsExports.d.ts.map +1 -1
- package/admin/src/lib/cmsExports.ts +8 -8
- package/admin-dist/assets/index-DagpgVMo.js +104 -0
- package/admin-dist/embed/favicon.ico +0 -0
- package/admin-dist/embed/index.js +30961 -0
- package/admin-dist/embed/index.js.map +1 -0
- package/admin-dist/index.html +1 -1
- package/package.json +12 -5
- package/admin/dist/types/src/client/admin/bulk.d.ts +0 -79
- package/admin/dist/types/src/client/admin/bulk.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/contentLock.d.ts +0 -118
- package/admin/dist/types/src/client/admin/contentLock.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/contentTypes.d.ts +0 -1627
- package/admin/dist/types/src/client/admin/contentTypes.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/dashboard.d.ts +0 -16
- package/admin/dist/types/src/client/admin/dashboard.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/entries.d.ts +0 -357
- package/admin/dist/types/src/client/admin/entries.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/index.d.ts +0 -7502
- package/admin/dist/types/src/client/admin/index.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/media.d.ts +0 -1038
- package/admin/dist/types/src/client/admin/media.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/settings.d.ts +0 -50
- package/admin/dist/types/src/client/admin/settings.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/taxonomies.d.ts +0 -339
- package/admin/dist/types/src/client/admin/taxonomies.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/trash.d.ts +0 -90
- package/admin/dist/types/src/client/admin/trash.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/types.d.ts +0 -594
- package/admin/dist/types/src/client/admin/types.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/users.d.ts +0 -58
- package/admin/dist/types/src/client/admin/users.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/validators.d.ts +0 -7732
- package/admin/dist/types/src/client/admin/validators.d.ts.map +0 -1
- package/admin/dist/types/src/client/admin/versions.d.ts +0 -106
- package/admin/dist/types/src/client/admin/versions.d.ts.map +0 -1
- package/admin/dist/types/src/client/adminConfig.d.ts +0 -125
- package/admin/dist/types/src/client/adminConfig.d.ts.map +0 -1
- package/admin/dist/types/src/client/config.d.ts +0 -155
- package/admin/dist/types/src/client/config.d.ts.map +0 -1
- package/admin/dist/types/src/client/field-types.d.ts +0 -55
- package/admin/dist/types/src/client/field-types.d.ts.map +0 -1
- package/admin/dist/types/src/client/fields.d.ts +0 -70
- package/admin/dist/types/src/client/fields.d.ts.map +0 -1
- package/admin/dist/types/src/client/registry.d.ts +0 -77
- package/admin/dist/types/src/client/registry.d.ts.map +0 -1
- package/admin/dist/types/src/client/schema/defineContentType.d.ts +0 -233
- package/admin/dist/types/src/client/schema/defineContentType.d.ts.map +0 -1
- package/admin/dist/types/src/client/schema/types.d.ts +0 -540
- package/admin/dist/types/src/client/schema/types.d.ts.map +0 -1
- package/admin/dist/types/src/client/types.d.ts +0 -449
- package/admin/dist/types/src/client/types.d.ts.map +0 -1
- package/admin/dist/types/src/client/utils/toSlug.d.ts +0 -60
- package/admin/dist/types/src/client/utils/toSlug.d.ts.map +0 -1
- package/admin/dist/types/src/client/workflows.d.ts +0 -51
- package/admin/dist/types/src/client/workflows.d.ts.map +0 -1
- package/admin/dist/types/src/component/_generated/component.d.ts +0 -4813
- package/admin/dist/types/src/component/_generated/component.d.ts.map +0 -1
- package/admin/dist/types/src/component/_generated/dataModel.d.ts +0 -46
- package/admin/dist/types/src/component/_generated/dataModel.d.ts.map +0 -1
- package/admin/dist/types/src/component/_generated/server.d.ts +0 -121
- package/admin/dist/types/src/component/_generated/server.d.ts.map +0 -1
- package/admin/dist/types/src/component/contentEntryMutations.d.ts +0 -551
- package/admin/dist/types/src/component/contentEntryMutations.d.ts.map +0 -1
- package/admin/dist/types/src/component/contentLock.d.ts +0 -328
- package/admin/dist/types/src/component/contentLock.d.ts.map +0 -1
- package/admin/dist/types/src/component/contentTypeMutations.d.ts +0 -1253
- package/admin/dist/types/src/component/contentTypeMutations.d.ts.map +0 -1
- package/admin/dist/types/src/component/documentTypes.d.ts +0 -186
- package/admin/dist/types/src/component/documentTypes.d.ts.map +0 -1
- package/admin/dist/types/src/component/eventEmitter.d.ts +0 -309
- package/admin/dist/types/src/component/eventEmitter.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/errors.d.ts +0 -306
- package/admin/dist/types/src/component/lib/errors.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/metadataExtractor.d.ts +0 -245
- package/admin/dist/types/src/component/lib/metadataExtractor.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/mutationAuth.d.ts +0 -95
- package/admin/dist/types/src/component/lib/mutationAuth.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/slugGenerator.d.ts +0 -71
- package/admin/dist/types/src/component/lib/slugGenerator.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/slugUniqueness.d.ts +0 -131
- package/admin/dist/types/src/component/lib/slugUniqueness.d.ts.map +0 -1
- package/admin/dist/types/src/component/lib/softDelete.d.ts +0 -18
- package/admin/dist/types/src/component/lib/softDelete.d.ts.map +0 -1
- package/admin/dist/types/src/component/localeFields.d.ts +0 -508
- package/admin/dist/types/src/component/localeFields.d.ts.map +0 -1
- package/admin/dist/types/src/component/mediaAssetMutations.d.ts +0 -282
- package/admin/dist/types/src/component/mediaAssetMutations.d.ts.map +0 -1
- package/admin/dist/types/src/component/schema.d.ts +0 -5248
- package/admin/dist/types/src/component/schema.d.ts.map +0 -1
- package/admin/dist/types/src/component/validation.d.ts +0 -407
- package/admin/dist/types/src/component/validation.d.ts.map +0 -1
- package/admin/dist/types/src/component/validators.d.ts +0 -5722
- package/admin/dist/types/src/component/validators.d.ts.map +0 -1
- package/admin/dist/types/src/react/index.d.ts +0 -493
- package/admin/dist/types/src/react/index.d.ts.map +0 -1
- package/admin-dist/assets/index-DTgANhXL.js +0 -104
package/admin-dist/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Convex CMS Admin</title>
|
|
7
7
|
<meta name="description" content="Admin interface for Convex CMS" />
|
|
8
8
|
<link rel="icon" href="/favicon.ico" />
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-DagpgVMo.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/index-CQLWK5Wb.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "convex-cms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"packageManager": "pnpm@10.28.2",
|
|
5
5
|
"description": "A developer-first Convex Component for content management with flexible RBAC and AI-ready architecture",
|
|
6
6
|
"type": "module",
|
|
@@ -36,6 +36,10 @@
|
|
|
36
36
|
"types": "./dist/client/config.d.ts",
|
|
37
37
|
"default": "./dist/client/config.js"
|
|
38
38
|
},
|
|
39
|
+
"./schema": {
|
|
40
|
+
"types": "./dist/client/schema/index.d.ts",
|
|
41
|
+
"default": "./dist/client/schema/index.js"
|
|
42
|
+
},
|
|
39
43
|
"./react": {
|
|
40
44
|
"types": "./dist/react/index.d.ts",
|
|
41
45
|
"default": "./dist/react/index.js"
|
|
@@ -56,7 +60,7 @@
|
|
|
56
60
|
},
|
|
57
61
|
"./admin": {
|
|
58
62
|
"types": "./admin/dist/types/admin/src/embed/index.d.ts",
|
|
59
|
-
"default": "./admin/
|
|
63
|
+
"default": "./admin-dist/embed/index.js"
|
|
60
64
|
},
|
|
61
65
|
"./admin/globals.css": "./admin/src/styles/globals.css",
|
|
62
66
|
"./admin/theme.css": "./admin/src/styles/theme.css",
|
|
@@ -78,12 +82,14 @@
|
|
|
78
82
|
"convex-cms": "./dist/cli/index.js"
|
|
79
83
|
},
|
|
80
84
|
"scripts": {
|
|
81
|
-
"build": "pnpm build:component && pnpm build:cli && pnpm build:admin && pnpm build:admin-types",
|
|
85
|
+
"build": "pnpm build:component && pnpm build:cli && pnpm build:admin && pnpm build:admin-embed && pnpm build:admin-types",
|
|
82
86
|
"build:component": "tsc --project tsconfig.build.json",
|
|
83
87
|
"build:codegen": "pnpm convex codegen --component-dir ./src/component && pnpm build",
|
|
84
88
|
"build:cli": "tsc --project tsconfig.cli.json",
|
|
85
|
-
"build:admin": "cd admin && pnpm build && rm -rf ../admin-dist && cp -
|
|
89
|
+
"build:admin": "cd admin && pnpm build && mkdir -p ../admin-dist && rm -rf ../admin-dist/index.html ../admin-dist/assets && cp -R dist/. ../admin-dist/",
|
|
90
|
+
"build:admin-embed": "cd admin && pnpm build:embed",
|
|
86
91
|
"build:admin-types": "cd admin && tsc --project tsconfig.types.json",
|
|
92
|
+
"build:vercel-example": "pnpm build:component && pnpm build:cli && pnpm build:admin-embed && cd example && pnpm build",
|
|
87
93
|
"build:clean": "rm -rf dist *.tsbuildinfo && pnpm build:codegen",
|
|
88
94
|
"dev": "npm-run-all2 --parallel dev:*",
|
|
89
95
|
"dev:component": "pnpm convex codegen --component-dir ./src/component",
|
|
@@ -234,7 +240,8 @@
|
|
|
234
240
|
},
|
|
235
241
|
"pnpm": {
|
|
236
242
|
"overrides": {
|
|
237
|
-
"@types/react": "^19.2.14"
|
|
243
|
+
"@types/react": "^19.2.14",
|
|
244
|
+
"convex": "^1.34.1"
|
|
238
245
|
}
|
|
239
246
|
}
|
|
240
247
|
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bulk Operations
|
|
3
|
-
*
|
|
4
|
-
* Batch operations for publishing, unpublishing, deleting, updating, and restoring content entries.
|
|
5
|
-
*/
|
|
6
|
-
import type { ComponentApi } from "../../component/_generated/component.js";
|
|
7
|
-
import type { AuthContext, AdminOperation } from "./types.js";
|
|
8
|
-
export declare function createBulkOperations(component: ComponentApi, checkAuth: (ctx: AuthContext, operation: AdminOperation) => Promise<string | null>): {
|
|
9
|
-
bulkPublish: import("convex/server").RegisteredMutation<"public", {
|
|
10
|
-
changeDescription?: string | undefined;
|
|
11
|
-
updatedBy?: string | undefined;
|
|
12
|
-
ids: string[];
|
|
13
|
-
}, Promise<{
|
|
14
|
-
failed: number;
|
|
15
|
-
results: Array<{
|
|
16
|
-
error?: string;
|
|
17
|
-
id: string;
|
|
18
|
-
success: boolean;
|
|
19
|
-
}>;
|
|
20
|
-
succeeded: number;
|
|
21
|
-
total: number;
|
|
22
|
-
}>>;
|
|
23
|
-
bulkUnpublish: import("convex/server").RegisteredMutation<"public", {
|
|
24
|
-
updatedBy?: string | undefined;
|
|
25
|
-
ids: string[];
|
|
26
|
-
}, Promise<{
|
|
27
|
-
failed: number;
|
|
28
|
-
results: Array<{
|
|
29
|
-
error?: string;
|
|
30
|
-
id: string;
|
|
31
|
-
success: boolean;
|
|
32
|
-
}>;
|
|
33
|
-
succeeded: number;
|
|
34
|
-
total: number;
|
|
35
|
-
}>>;
|
|
36
|
-
bulkDelete: import("convex/server").RegisteredMutation<"public", {
|
|
37
|
-
deletedBy?: string | undefined;
|
|
38
|
-
hardDelete?: boolean | undefined;
|
|
39
|
-
ids: string[];
|
|
40
|
-
}, Promise<{
|
|
41
|
-
failed: number;
|
|
42
|
-
results: Array<{
|
|
43
|
-
error?: string;
|
|
44
|
-
id: string;
|
|
45
|
-
success: boolean;
|
|
46
|
-
}>;
|
|
47
|
-
succeeded: number;
|
|
48
|
-
total: number;
|
|
49
|
-
}>>;
|
|
50
|
-
bulkUpdate: import("convex/server").RegisteredMutation<"public", {
|
|
51
|
-
updatedBy?: string | undefined;
|
|
52
|
-
data?: any;
|
|
53
|
-
status?: string | undefined;
|
|
54
|
-
ids: string[];
|
|
55
|
-
}, Promise<{
|
|
56
|
-
failed: number;
|
|
57
|
-
results: Array<{
|
|
58
|
-
error?: string;
|
|
59
|
-
id: string;
|
|
60
|
-
success: boolean;
|
|
61
|
-
}>;
|
|
62
|
-
succeeded: number;
|
|
63
|
-
total: number;
|
|
64
|
-
}>>;
|
|
65
|
-
bulkRestore: import("convex/server").RegisteredMutation<"public", {
|
|
66
|
-
restoredBy?: string | undefined;
|
|
67
|
-
ids: string[];
|
|
68
|
-
}, Promise<{
|
|
69
|
-
failed: number;
|
|
70
|
-
results: Array<{
|
|
71
|
-
error?: string;
|
|
72
|
-
id: string;
|
|
73
|
-
success: boolean;
|
|
74
|
-
}>;
|
|
75
|
-
succeeded: number;
|
|
76
|
-
total: number;
|
|
77
|
-
}>>;
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=bulk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulk.d.ts","sourceRoot":"","sources":["../../../../../../src/client/admin/bulk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9D,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;;;;;;iBAwB3D,CAAC;;;;;;;;;;;;;iBAsBlB,CAAD;;;;;;;;;;;;;;iBApCqB,CAAC;;;;;;;;;;;;;;;iBAiDK,CAAC;;;;;;;;;;;;;iBAtB3B,CAAF;;;;;;;EA6CL"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Content Lock Operations
|
|
3
|
-
*
|
|
4
|
-
* Operations for managing concurrent edit protection including
|
|
5
|
-
* acquiring, releasing, renewing, and force-releasing locks.
|
|
6
|
-
*/
|
|
7
|
-
import type { ComponentApi } from "../../component/_generated/component.js";
|
|
8
|
-
import type { AuthContext, AdminOperation } from "./types.js";
|
|
9
|
-
export declare function createContentLockOperations(component: ComponentApi, checkAuth: (ctx: AuthContext, operation: AdminOperation) => Promise<string | null>): {
|
|
10
|
-
checkContentLock: import("convex/server").RegisteredQuery<"public", {
|
|
11
|
-
id: string;
|
|
12
|
-
}, Promise<{
|
|
13
|
-
isExpired?: boolean;
|
|
14
|
-
isLocked: boolean;
|
|
15
|
-
lockExpiresAt?: number;
|
|
16
|
-
lockedBy?: string;
|
|
17
|
-
timeRemaining?: number;
|
|
18
|
-
}>>;
|
|
19
|
-
listLockedContent: import("convex/server").RegisteredQuery<"public", {
|
|
20
|
-
contentTypeName?: string | undefined;
|
|
21
|
-
lockedBy?: string | undefined;
|
|
22
|
-
paginationOpts: {
|
|
23
|
-
cursor: string | null;
|
|
24
|
-
numItems: number;
|
|
25
|
-
};
|
|
26
|
-
}, Promise<{
|
|
27
|
-
continueCursor: string | null;
|
|
28
|
-
isDone: boolean;
|
|
29
|
-
page: Array<{
|
|
30
|
-
_creationTime: number;
|
|
31
|
-
_id: string;
|
|
32
|
-
contentTypeName: string;
|
|
33
|
-
createdBy?: string;
|
|
34
|
-
data: any;
|
|
35
|
-
deletedAt?: number;
|
|
36
|
-
firstPublishedAt?: number;
|
|
37
|
-
lastPublishedAt?: number;
|
|
38
|
-
locale?: string;
|
|
39
|
-
lockExpiresAt?: number;
|
|
40
|
-
lockedBy?: string;
|
|
41
|
-
primaryEntryId?: string;
|
|
42
|
-
scheduledPublishAt?: number;
|
|
43
|
-
searchText?: string;
|
|
44
|
-
slug: string;
|
|
45
|
-
status: string;
|
|
46
|
-
timeRemaining?: number;
|
|
47
|
-
updatedBy?: string;
|
|
48
|
-
version: number;
|
|
49
|
-
}>;
|
|
50
|
-
}>>;
|
|
51
|
-
acquireContentLock: import("convex/server").RegisteredMutation<"public", {
|
|
52
|
-
lockDuration?: number | undefined;
|
|
53
|
-
id: string;
|
|
54
|
-
userId: string;
|
|
55
|
-
}, Promise<{
|
|
56
|
-
currentLockExpiresAt?: number;
|
|
57
|
-
currentLockHolder?: string;
|
|
58
|
-
entry?: {
|
|
59
|
-
_creationTime: number;
|
|
60
|
-
_id: string;
|
|
61
|
-
contentTypeName: string;
|
|
62
|
-
createdBy?: string;
|
|
63
|
-
data: any;
|
|
64
|
-
deletedAt?: number;
|
|
65
|
-
firstPublishedAt?: number;
|
|
66
|
-
lastPublishedAt?: number;
|
|
67
|
-
locale?: string;
|
|
68
|
-
lockExpiresAt?: number;
|
|
69
|
-
lockedBy?: string;
|
|
70
|
-
primaryEntryId?: string;
|
|
71
|
-
scheduledPublishAt?: number;
|
|
72
|
-
searchText?: string;
|
|
73
|
-
slug: string;
|
|
74
|
-
status: string;
|
|
75
|
-
updatedBy?: string;
|
|
76
|
-
version: number;
|
|
77
|
-
};
|
|
78
|
-
error?: string;
|
|
79
|
-
success: boolean;
|
|
80
|
-
}>>;
|
|
81
|
-
releaseContentLock: import("convex/server").RegisteredMutation<"public", {
|
|
82
|
-
id: string;
|
|
83
|
-
userId: string;
|
|
84
|
-
}, Promise<{
|
|
85
|
-
success: boolean;
|
|
86
|
-
}>>;
|
|
87
|
-
renewContentLock: import("convex/server").RegisteredMutation<"public", {
|
|
88
|
-
lockDuration?: number | undefined;
|
|
89
|
-
id: string;
|
|
90
|
-
userId: string;
|
|
91
|
-
}, Promise<{
|
|
92
|
-
_creationTime: number;
|
|
93
|
-
_id: string;
|
|
94
|
-
contentTypeName: string;
|
|
95
|
-
createdBy?: string;
|
|
96
|
-
data: any;
|
|
97
|
-
deletedAt?: number;
|
|
98
|
-
firstPublishedAt?: number;
|
|
99
|
-
lastPublishedAt?: number;
|
|
100
|
-
locale?: string;
|
|
101
|
-
lockExpiresAt?: number;
|
|
102
|
-
lockedBy?: string;
|
|
103
|
-
primaryEntryId?: string;
|
|
104
|
-
scheduledPublishAt?: number;
|
|
105
|
-
searchText?: string;
|
|
106
|
-
slug: string;
|
|
107
|
-
status: string;
|
|
108
|
-
updatedBy?: string;
|
|
109
|
-
version: number;
|
|
110
|
-
}>>;
|
|
111
|
-
forceReleaseContentLock: import("convex/server").RegisteredMutation<"public", {
|
|
112
|
-
id: string;
|
|
113
|
-
releasedBy: string;
|
|
114
|
-
}, Promise<{
|
|
115
|
-
success: boolean;
|
|
116
|
-
}>>;
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=contentLock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contentLock.d.ts","sourceRoot":"","sources":["../../../../../../src/client/admin/contentLock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS9D,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;qBA6E8hjB,CAAC;;qBAAsD,CAAC;4BAAsC,CAAC;2BAAqC,CAAC;kBAA4B,CAAC;yBAAmC,CAAC;oBAA8B,CAAC;0BAAoC,CAAC;8BAAwC,CAAC;sBAAgC,CAAC;;;yBAAyF,CAAC;qBAA+B,CAAC;;;;;;;;;;;;;;;qBAAnnF,CAAC;;qBAAsD,CAAC;4BAAsC,CAAC;2BAAqC,CAAC;kBAA4B,CAAC;yBAAmC,CAAC;oBAA8B,CAAC;0BAAoC,CAAC;8BAAwC,CAAC;sBAAgC,CAAC;;;qBAAqF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EADt3f"}
|