@schema-hub/stryker-zod-mutator 0.0.16 → 0.0.18
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/package.json +4 -1
- package/readme.md +5 -0
- package/sbom.cdx.json +5 -5
- package/stryker-zod-mutator/ast.js +88 -1
- package/stryker-zod-mutator/ast.js.map +1 -1
- package/stryker-zod-mutator/behavior-mutations.js +70 -6
- package/stryker-zod-mutator/behavior-mutations.js.map +1 -1
- package/stryker-zod-mutator/binding-resolution.js +289 -3
- package/stryker-zod-mutator/binding-resolution.js.map +1 -1
- package/stryker-zod-mutator/check-mutations.js +153 -5
- package/stryker-zod-mutator/check-mutations.js.map +1 -1
- package/stryker-zod-mutator/collection-mutations.js +159 -5
- package/stryker-zod-mutator/collection-mutations.js.map +1 -1
- package/stryker-zod-mutator/declarator-init-id.js +12 -2
- package/stryker-zod-mutator/declarator-init-id.js.map +1 -1
- package/stryker-zod-mutator/filesystem-module-loader.js +61 -2
- package/stryker-zod-mutator/filesystem-module-loader.js.map +1 -1
- package/stryker-zod-mutator/masked-schema-references.js +114 -4
- package/stryker-zod-mutator/masked-schema-references.js.map +1 -1
- package/stryker-zod-mutator/mutation-catalog.js +16 -7
- package/stryker-zod-mutator/mutation-catalog.js.map +1 -1
- package/stryker-zod-mutator/mutation-definition.js +16 -2
- package/stryker-zod-mutator/mutation-definition.js.map +1 -1
- package/stryker-zod-mutator/mutations.js +16 -3
- package/stryker-zod-mutator/mutations.js.map +1 -1
- package/stryker-zod-mutator/object-mutations.js +114 -6
- package/stryker-zod-mutator/object-mutations.js.map +1 -1
- package/stryker-zod-mutator/operator.js +95 -0
- package/stryker-zod-mutator/operator.js.map +1 -1
- package/stryker-zod-mutator/presence-mutations.js +83 -6
- package/stryker-zod-mutator/presence-mutations.js.map +1 -1
- package/stryker-zod-mutator/primitive-mutations.js +33 -2
- package/stryker-zod-mutator/primitive-mutations.js.map +1 -1
- package/stryker-zod-mutator/reference-mutations.js +58 -4
- package/stryker-zod-mutator/reference-mutations.js.map +1 -1
- package/stryker-zod-mutator/registry.js +50 -2
- package/stryker-zod-mutator/registry.js.map +1 -1
- package/stryker-zod-mutator/schema-call-mutations.js +93 -6
- package/stryker-zod-mutator/schema-call-mutations.js.map +1 -1
- package/stryker-zod-mutator/zod-bindings.js +221 -3
- package/stryker-zod-mutator/zod-bindings.js.map +1 -1
|
@@ -1,7 +1,94 @@
|
|
|
1
|
-
import '@babel/types';
|
|
2
|
-
import "./ast.js";
|
|
3
|
-
import "./mutation-definition.js";
|
|
4
|
-
import "./masked-schema-references.js";
|
|
5
|
-
import "./zod-bindings.js";
|
|
6
|
-
import "./binding-resolution.js";
|
|
1
|
+
import * as babel from '@babel/types';
|
|
2
|
+
import { cloneExpression, getCallName, getMemberName, isExpressionNode, memberCall } from "./ast.js";
|
|
3
|
+
import { callNode } from "./mutation-definition.js";
|
|
4
|
+
import { presenceWrapperMaskedByEveryUse } from "./masked-schema-references.js";
|
|
5
|
+
import { buildZodCall, expressionStyle, firstExpressionArgument, getZodCallName, isSchemaValueChainRoot, isStringTemplateLiteralPart, isZodSchemaExpression } from "./zod-bindings.js";
|
|
6
|
+
import { addingWrapperHasNoEffect, isZodSchemaOrReference } from "./binding-resolution.js";
|
|
7
|
+
export function removeMethod(call, bindings, methodNames) {
|
|
8
|
+
if (!babel.isMemberExpression(call.callee)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const methodName = getMemberName(call.callee);
|
|
12
|
+
const { object } = call.callee;
|
|
13
|
+
if (methodName === null || !methodNames.has(methodName) || !isExpressionNode(object)) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return isZodSchemaOrReference(bindings, object) ? [cloneExpression(object)] : [];
|
|
17
|
+
}
|
|
18
|
+
function removeWrapper(call, bindings, wrapperNames) {
|
|
19
|
+
const callName = getZodCallName(bindings, call);
|
|
20
|
+
const schema = firstExpressionArgument(call);
|
|
21
|
+
if (callName === null || schema === null || !wrapperNames.has(callName)) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
return isZodSchemaOrReference(bindings, schema) ? [cloneExpression(schema)] : [];
|
|
25
|
+
}
|
|
26
|
+
export function removeMethodOrWrapper(path, bindings, names) {
|
|
27
|
+
const call = callNode(path);
|
|
28
|
+
if (call === null) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
return [...removeMethod(call, bindings, names), ...removeWrapper(call, bindings, names)];
|
|
32
|
+
}
|
|
33
|
+
function zodSchemaExpression(path, bindings) {
|
|
34
|
+
return isExpressionNode(path.node) && isZodSchemaExpression(bindings, path.node)
|
|
35
|
+
? path.node
|
|
36
|
+
: null;
|
|
37
|
+
}
|
|
38
|
+
function buildWrapperMutation(bindings, expression, style, name) {
|
|
39
|
+
if (style === 'classic') {
|
|
40
|
+
return [memberCall(cloneExpression(expression), name, [])];
|
|
41
|
+
}
|
|
42
|
+
const wrapped = buildZodCall(bindings, style, name, [cloneExpression(expression)]);
|
|
43
|
+
return wrapped === null ? [] : [wrapped];
|
|
44
|
+
}
|
|
45
|
+
function wrapperAlreadyApplied(expression, name) {
|
|
46
|
+
return babel.isCallExpression(expression) && getCallName(expression.callee) === name;
|
|
47
|
+
}
|
|
48
|
+
function shouldSkipWrapping(path, bindings, expression, name) {
|
|
49
|
+
return !isSchemaValueChainRoot(path, bindings) ||
|
|
50
|
+
wrapperAlreadyApplied(expression, name) ||
|
|
51
|
+
addingWrapperHasNoEffect(bindings, expression, name) ||
|
|
52
|
+
isStringTemplateLiteralPart(path, bindings) ||
|
|
53
|
+
presenceWrapperMaskedByEveryUse(path, bindings, name);
|
|
54
|
+
}
|
|
55
|
+
export function addWrapperOrMethod(path, bindings, name) {
|
|
56
|
+
const expression = zodSchemaExpression(path, bindings);
|
|
57
|
+
const style = expression === null ? null : expressionStyle(bindings, expression);
|
|
58
|
+
if (expression === null || style === null) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
if (shouldSkipWrapping(path, bindings, expression, name)) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
return buildWrapperMutation(bindings, expression, style, name);
|
|
65
|
+
}
|
|
66
|
+
function replaceNullishMethod(call, bindings, replacementName) {
|
|
67
|
+
if (!babel.isMemberExpression(call.callee) || getMemberName(call.callee) !== 'nullish') {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
const { object } = call.callee;
|
|
71
|
+
return isExpressionNode(object) && isZodSchemaExpression(bindings, object)
|
|
72
|
+
? [memberCall(cloneExpression(object), replacementName, [])]
|
|
73
|
+
: [];
|
|
74
|
+
}
|
|
75
|
+
function replaceNullishWrapper(call, bindings, replacementName) {
|
|
76
|
+
const schema = firstExpressionArgument(call);
|
|
77
|
+
const style = expressionStyle(bindings, call);
|
|
78
|
+
if (schema === null || style === null || getZodCallName(bindings, call) !== 'nullish') {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
const replacement = buildZodCall(bindings, style, replacementName, [cloneExpression(schema)]);
|
|
82
|
+
return replacement === null ? [] : [replacement];
|
|
83
|
+
}
|
|
84
|
+
export function replaceNullish(path, bindings, replacementName) {
|
|
85
|
+
const call = callNode(path);
|
|
86
|
+
if (call === null) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
const methodMutations = replaceNullishMethod(call, bindings, replacementName);
|
|
90
|
+
return methodMutations.length > 0
|
|
91
|
+
? methodMutations
|
|
92
|
+
: replaceNullishWrapper(call, bindings, replacementName);
|
|
93
|
+
}
|
|
7
94
|
//# sourceMappingURL=schema-call-mutations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-call-mutations.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/schema-call-mutations.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"schema-call-mutations.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/schema-call-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import '@babel/types';
|
|
2
|
-
import "./ast.js";
|
|
1
|
+
import * as babel from '@babel/types';
|
|
2
|
+
import { fileNameOf, findProgram, getMemberName, isExpressionNode } from "./ast.js";
|
|
3
3
|
const zodSourceStyles = new Map([
|
|
4
4
|
['zod', 'classic'],
|
|
5
5
|
['zod/v4', 'classic'],
|
|
@@ -39,7 +39,10 @@ const schemaFactoryNames = new Set([
|
|
|
39
39
|
'nullable',
|
|
40
40
|
'nullish',
|
|
41
41
|
'nonoptional',
|
|
42
|
+
'deepPartial',
|
|
43
|
+
'exactPartial',
|
|
42
44
|
'readonly',
|
|
45
|
+
'compile',
|
|
43
46
|
'_default',
|
|
44
47
|
'prefault',
|
|
45
48
|
'catch',
|
|
@@ -55,15 +58,230 @@ const schemaFactoryNames = new Set([
|
|
|
55
58
|
'ipv6',
|
|
56
59
|
'iso'
|
|
57
60
|
]);
|
|
61
|
+
function getImportedName(specifier) {
|
|
62
|
+
return babel.isIdentifier(specifier.imported)
|
|
63
|
+
? specifier.imported.name
|
|
64
|
+
: specifier.imported.value;
|
|
65
|
+
}
|
|
66
|
+
function readZodImportSpecifier(style, specifier) {
|
|
67
|
+
if (specifier.type === 'ImportNamespaceSpecifier' || specifier.type === 'ImportDefaultSpecifier') {
|
|
68
|
+
return { namespaces: [{ name: specifier.local.name, style }], directBindings: [] };
|
|
69
|
+
}
|
|
70
|
+
const importedName = getImportedName(specifier);
|
|
71
|
+
return importedName === 'z'
|
|
72
|
+
? { namespaces: [{ name: specifier.local.name, style }], directBindings: [] }
|
|
73
|
+
: {
|
|
74
|
+
namespaces: [],
|
|
75
|
+
directBindings: [{ localName: specifier.local.name, importedName, style }]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function readZodImport(statement) {
|
|
79
|
+
const style = babel.isImportDeclaration(statement)
|
|
80
|
+
? zodSourceStyles.get(statement.source.value)
|
|
81
|
+
: undefined;
|
|
82
|
+
if (style === undefined || !babel.isImportDeclaration(statement)) {
|
|
83
|
+
return { namespaces: [], directBindings: [] };
|
|
84
|
+
}
|
|
85
|
+
const bindings = statement.specifiers.map(function (specifier) {
|
|
86
|
+
return readZodImportSpecifier(style, specifier);
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
namespaces: bindings.flatMap(function (binding) {
|
|
90
|
+
return binding.namespaces;
|
|
91
|
+
}),
|
|
92
|
+
directBindings: bindings.flatMap(function (binding) {
|
|
93
|
+
return binding.directBindings;
|
|
94
|
+
})
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export function buildZodBindings(program, fileName, env) {
|
|
98
|
+
const imports = program.body.map(readZodImport);
|
|
99
|
+
return {
|
|
100
|
+
namespaces: imports.flatMap(function (binding) {
|
|
101
|
+
return binding.namespaces;
|
|
102
|
+
}),
|
|
103
|
+
directBindings: imports.flatMap(function (binding) {
|
|
104
|
+
return binding.directBindings;
|
|
105
|
+
}),
|
|
106
|
+
program,
|
|
107
|
+
fileName,
|
|
108
|
+
env
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function readZodBindings(path, env) {
|
|
112
|
+
return buildZodBindings(findProgram(path) ?? babel.program([]), fileNameOf(path), env);
|
|
113
|
+
}
|
|
114
|
+
export function getDirectBinding(bindings, localName) {
|
|
115
|
+
return bindings.directBindings.find(function (binding) {
|
|
116
|
+
return binding.localName === localName;
|
|
117
|
+
}) ?? null;
|
|
118
|
+
}
|
|
119
|
+
export function getNamespaceStyle(bindings, localName) {
|
|
120
|
+
return bindings
|
|
121
|
+
.namespaces
|
|
122
|
+
.find(function (binding) {
|
|
123
|
+
return binding.name === localName;
|
|
124
|
+
})
|
|
125
|
+
?.style ?? null;
|
|
126
|
+
}
|
|
127
|
+
export function isZodNamespaceMember(bindings, expression) {
|
|
128
|
+
if (!babel.isMemberExpression(expression) || !babel.isIdentifier(expression.object)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return getNamespaceStyle(bindings, expression.object.name) !== null;
|
|
132
|
+
}
|
|
133
|
+
function getCoerceNamespaceName(call) {
|
|
134
|
+
if (!babel.isMemberExpression(call.callee) || !babel.isMemberExpression(call.callee.object)) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const { object } = call.callee;
|
|
138
|
+
return getMemberName(object) === 'coerce' && babel.isIdentifier(object.object)
|
|
139
|
+
? object.object.name
|
|
140
|
+
: null;
|
|
141
|
+
}
|
|
142
|
+
export function isCoerceCall(bindings, call) {
|
|
143
|
+
const namespaceName = getCoerceNamespaceName(call);
|
|
144
|
+
return namespaceName !== null && getNamespaceStyle(bindings, namespaceName) !== null;
|
|
145
|
+
}
|
|
146
|
+
export function getZodCallName(bindings, call) {
|
|
147
|
+
if (babel.isIdentifier(call.callee)) {
|
|
148
|
+
return getDirectBinding(bindings, call.callee.name)?.importedName ?? null;
|
|
149
|
+
}
|
|
150
|
+
if (isZodNamespaceMember(bindings, call.callee)) {
|
|
151
|
+
return getMemberName(call.callee);
|
|
152
|
+
}
|
|
153
|
+
if (isCoerceCall(bindings, call)) {
|
|
154
|
+
return getMemberName(call.callee);
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
function getCoerceCallStyle(bindings, call) {
|
|
159
|
+
const namespaceName = getCoerceNamespaceName(call);
|
|
160
|
+
return namespaceName === null ? null : getNamespaceStyle(bindings, namespaceName);
|
|
161
|
+
}
|
|
162
|
+
export function getZodCallStyle(bindings, call) {
|
|
163
|
+
if (babel.isIdentifier(call.callee)) {
|
|
164
|
+
return getDirectBinding(bindings, call.callee.name)?.style ?? null;
|
|
165
|
+
}
|
|
166
|
+
if (babel.isMemberExpression(call.callee) && babel.isIdentifier(call.callee.object)) {
|
|
167
|
+
return getNamespaceStyle(bindings, call.callee.object.name);
|
|
168
|
+
}
|
|
169
|
+
return getCoerceCallStyle(bindings, call);
|
|
170
|
+
}
|
|
171
|
+
export function isZodSchemaExpression(bindings, expression) {
|
|
172
|
+
if (!babel.isCallExpression(expression)) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const callName = getZodCallName(bindings, expression);
|
|
176
|
+
if (callName !== null) {
|
|
177
|
+
return schemaFactoryNames.has(callName);
|
|
178
|
+
}
|
|
179
|
+
if (!babel.isMemberExpression(expression.callee)) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
const { object } = expression.callee;
|
|
183
|
+
return isExpressionNode(object) && isZodSchemaExpression(bindings, object);
|
|
184
|
+
}
|
|
185
|
+
export function expressionStyle(bindings, expression) {
|
|
186
|
+
let currentExpression = expression;
|
|
187
|
+
for (;;) {
|
|
188
|
+
if (!babel.isCallExpression(currentExpression)) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
const directStyle = getZodCallStyle(bindings, currentExpression);
|
|
192
|
+
if (directStyle !== null) {
|
|
193
|
+
return directStyle;
|
|
194
|
+
}
|
|
195
|
+
if (!babel.isMemberExpression(currentExpression.callee) || !isExpressionNode(currentExpression.callee.object)) {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
currentExpression = currentExpression.callee.object;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export function moduleStyle(bindings) {
|
|
202
|
+
return bindings.namespaces[0]?.style ?? bindings.directBindings[0]?.style ?? 'classic';
|
|
203
|
+
}
|
|
204
|
+
export function buildZodCall(bindings, style, name, args) {
|
|
205
|
+
const namespace = bindings.namespaces.find(function (binding) {
|
|
206
|
+
return binding.style === style;
|
|
207
|
+
});
|
|
208
|
+
if (namespace !== undefined) {
|
|
209
|
+
return babel.callExpression(babel.memberExpression(babel.identifier(namespace.name), babel.identifier(name)), Array.from(args));
|
|
210
|
+
}
|
|
211
|
+
const direct = bindings.directBindings.find(function (binding) {
|
|
212
|
+
return binding.style === style && binding.importedName === name;
|
|
213
|
+
});
|
|
214
|
+
if (direct !== undefined) {
|
|
215
|
+
return babel.callExpression(babel.identifier(direct.localName), Array.from(args));
|
|
216
|
+
}
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
export function replaceZodCallee(bindings, call, replacementName) {
|
|
220
|
+
const style = getZodCallStyle(bindings, call);
|
|
221
|
+
if (style === null) {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
return buildZodCall(bindings, style, replacementName, call.arguments.filter(isExpressionNode));
|
|
225
|
+
}
|
|
226
|
+
export function firstExpressionArgument(call) {
|
|
227
|
+
const argument = call.arguments[0];
|
|
228
|
+
return argument !== undefined && isExpressionNode(argument) ? argument : null;
|
|
229
|
+
}
|
|
230
|
+
export function isObjectLikeFactory(name) {
|
|
231
|
+
return ['object', 'strictObject', 'looseObject'].includes(name);
|
|
232
|
+
}
|
|
58
233
|
export const valuePreservingWrapperNames = new Set([
|
|
59
234
|
'optional',
|
|
60
235
|
'nullable',
|
|
61
236
|
'nullish',
|
|
62
237
|
'nonoptional',
|
|
238
|
+
'deepPartial',
|
|
239
|
+
'exactPartial',
|
|
63
240
|
'_default',
|
|
64
241
|
'prefault',
|
|
65
242
|
'catch',
|
|
66
|
-
'readonly'
|
|
243
|
+
'readonly',
|
|
244
|
+
'compile'
|
|
67
245
|
]);
|
|
246
|
+
function isReceiverOfMethodCall(path) {
|
|
247
|
+
const enclosingMember = path.parentPath?.node;
|
|
248
|
+
return babel.isMemberExpression(enclosingMember) && enclosingMember.object === path.node;
|
|
249
|
+
}
|
|
250
|
+
function isFirstArgumentOfCallNamed(path, bindings, callNames) {
|
|
251
|
+
const enclosingCall = path.parentPath?.node;
|
|
252
|
+
if (!babel.isCallExpression(enclosingCall)) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
const firstArgument = enclosingCall.arguments[0];
|
|
256
|
+
if (!isExpressionNode(firstArgument)) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
const isFirstArgument = firstArgument === path.node;
|
|
260
|
+
return isFirstArgument && callNames.has(getZodCallName(bindings, enclosingCall) ?? '');
|
|
261
|
+
}
|
|
262
|
+
export function isSchemaValueChainRoot(path, bindings) {
|
|
263
|
+
return !isReceiverOfMethodCall(path) && !isFirstArgumentOfCallNamed(path, bindings, valuePreservingWrapperNames);
|
|
264
|
+
}
|
|
68
265
|
const recordFactoryNames = new Set(['record', 'partialRecord', 'looseRecord']);
|
|
266
|
+
export function isRecordKeyPosition(path, bindings) {
|
|
267
|
+
return isFirstArgumentOfCallNamed(path, bindings, recordFactoryNames);
|
|
268
|
+
}
|
|
269
|
+
function grandparentNode(path) {
|
|
270
|
+
return path.parentPath?.parentPath?.node ?? null;
|
|
271
|
+
}
|
|
272
|
+
function isElementOfTemplateLiteralParts(path, bindings) {
|
|
273
|
+
const partsArray = path.parentPath?.node;
|
|
274
|
+
const templateCall = grandparentNode(path);
|
|
275
|
+
if (!babel.isArrayExpression(partsArray) || !babel.isCallExpression(templateCall)) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
const firstArgument = templateCall.arguments[0];
|
|
279
|
+
const arrayIsFirstArgument = isExpressionNode(firstArgument) && firstArgument === partsArray;
|
|
280
|
+
return arrayIsFirstArgument && getZodCallName(bindings, templateCall) === 'templateLiteral';
|
|
281
|
+
}
|
|
282
|
+
export function isStringTemplateLiteralPart(path, bindings) {
|
|
283
|
+
return babel.isCallExpression(path.node) &&
|
|
284
|
+
getZodCallName(bindings, path.node) === 'string' &&
|
|
285
|
+
isElementOfTemplateLiteralParts(path, bindings);
|
|
286
|
+
}
|
|
69
287
|
//# sourceMappingURL=zod-bindings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-bindings.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/zod-bindings.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"zod-bindings.js","sourceRoot":"","sources":["../../../../source/stryker-zod-mutator/zod-bindings.ts"],"names":[],"mappings":"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"}
|