@payloadcms/db-postgres 0.4.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/createMigration.js +3 -3
- package/dist/find/findMany.js +2 -2
- package/dist/migrateDown.js +4 -2
- package/dist/migrateFresh.d.ts +3 -1
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +14 -12
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +5 -10
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +9 -1
- package/dist/schema/build.d.ts +3 -3
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +17 -17
- package/dist/schema/createIndex.d.ts +2 -1
- package/dist/schema/createIndex.d.ts.map +1 -1
- package/dist/schema/createIndex.js +4 -4
- package/dist/schema/traverseFields.d.ts +4 -4
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +29 -28
- package/dist/types.d.ts +11 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
@@ -24,7 +24,7 @@ function _interop_require_default(obj) {
|
|
24
24
|
default: obj
|
25
25
|
};
|
26
26
|
}
|
27
|
-
const traverseFields = ({ adapter,
|
27
|
+
const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName })=>{
|
28
28
|
let hasLocalizedField = false;
|
29
29
|
let hasLocalizedRelationshipField = false;
|
30
30
|
let hasManyTextField = false;
|
@@ -57,7 +57,7 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
57
57
|
'point',
|
58
58
|
'relationship',
|
59
59
|
'upload'
|
60
|
-
].includes(field.type) && !(
|
60
|
+
].includes(field.type) && !('hasMany' in field && field.hasMany === true)) {
|
61
61
|
const unique = disableUnique !== true && field.unique;
|
62
62
|
if (unique) {
|
63
63
|
const constraintValue = `${fieldPrefix || ''}${field.name}`;
|
@@ -66,9 +66,10 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
66
66
|
}
|
67
67
|
adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue;
|
68
68
|
}
|
69
|
-
targetIndexes[`${field.name}Idx`] = (0, _createIndex.createIndex)({
|
69
|
+
targetIndexes[`${newTableName}_${field.name}Idx`] = (0, _createIndex.createIndex)({
|
70
70
|
name: fieldName,
|
71
71
|
columnName,
|
72
|
+
tableName: newTableName,
|
72
73
|
unique
|
73
74
|
});
|
74
75
|
}
|
@@ -158,15 +159,15 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
158
159
|
value: adapter.enums[enumName]('value')
|
159
160
|
};
|
160
161
|
const baseExtraConfig = {
|
161
|
-
orderIdx: (cols)=>(0, _pgcore.index)(
|
162
|
-
parentIdx: (cols)=>(0, _pgcore.index)(
|
162
|
+
orderIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_order_idx`).on(cols.order),
|
163
|
+
parentIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_parent_idx`).on(cols.parent)
|
163
164
|
};
|
164
165
|
if (field.localized) {
|
165
166
|
baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
|
166
|
-
baseExtraConfig.localeIdx = (cols)=>(0, _pgcore.index)(
|
167
|
+
baseExtraConfig.localeIdx = (cols)=>(0, _pgcore.index)(`${selectTableName}_locale_idx`).on(cols.locale);
|
167
168
|
}
|
168
169
|
if (field.index) {
|
169
|
-
baseExtraConfig.value = (cols)=>(0, _pgcore.index)(
|
170
|
+
baseExtraConfig.value = (cols)=>(0, _pgcore.index)(`${selectTableName}_value_idx`).on(cols.value);
|
170
171
|
}
|
171
172
|
(0, _build.buildTable)({
|
172
173
|
adapter,
|
@@ -213,14 +214,14 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
213
214
|
}).notNull()
|
214
215
|
};
|
215
216
|
const baseExtraConfig = {
|
216
|
-
_orderIdx: (cols)=>(0, _pgcore.index)(
|
217
|
-
_parentIDIdx: (cols)=>(0, _pgcore.index)(
|
217
|
+
_orderIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_order_idx`).on(cols._order),
|
218
|
+
_parentIDIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
|
218
219
|
};
|
219
220
|
if (field.localized && adapter.payload.config.localization) {
|
220
221
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
221
|
-
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(
|
222
|
+
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${arrayTableName}_locale_idx`).on(cols._locale);
|
222
223
|
}
|
223
|
-
const {
|
224
|
+
const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
224
225
|
adapter,
|
225
226
|
baseColumns,
|
226
227
|
baseExtraConfig,
|
@@ -276,15 +277,15 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
276
277
|
_path: (0, _pgcore.text)('_path').notNull()
|
277
278
|
};
|
278
279
|
const baseExtraConfig = {
|
279
|
-
_orderIdx: (cols)=>(0, _pgcore.index)(
|
280
|
-
_parentIDIdx: (cols)=>(0, _pgcore.index)(
|
281
|
-
_pathIdx: (cols)=>(0, _pgcore.index)(
|
280
|
+
_orderIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_order_idx`).on(cols._order),
|
281
|
+
_parentIDIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_parent_id_idx`).on(cols._parentID),
|
282
|
+
_pathIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_path_idx`).on(cols._path)
|
282
283
|
};
|
283
284
|
if (field.localized && adapter.payload.config.localization) {
|
284
285
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
285
|
-
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(
|
286
|
+
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${blockTableName}_locale_idx`).on(cols._locale);
|
286
287
|
}
|
287
|
-
const {
|
288
|
+
const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
288
289
|
adapter,
|
289
290
|
baseColumns,
|
290
291
|
baseExtraConfig,
|
@@ -339,11 +340,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
339
340
|
case 'group':
|
340
341
|
{
|
341
342
|
if (!('name' in field)) {
|
342
|
-
const { hasLocalizedField: groupHasLocalizedField,
|
343
|
+
const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
|
343
344
|
adapter,
|
344
|
-
buildTexts,
|
345
345
|
buildNumbers,
|
346
346
|
buildRelationships,
|
347
|
+
buildTexts,
|
347
348
|
columnPrefix,
|
348
349
|
columns,
|
349
350
|
disableNotNull,
|
@@ -371,11 +372,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
371
372
|
break;
|
372
373
|
}
|
373
374
|
const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
|
374
|
-
const { hasLocalizedField: groupHasLocalizedField,
|
375
|
+
const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
|
375
376
|
adapter,
|
376
|
-
buildTexts,
|
377
377
|
buildNumbers,
|
378
378
|
buildRelationships,
|
379
|
+
buildTexts,
|
379
380
|
columnPrefix: `${columnName}_`,
|
380
381
|
columns,
|
381
382
|
disableNotNull: disableNotNullFromHere,
|
@@ -405,11 +406,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
405
406
|
case 'tabs':
|
406
407
|
{
|
407
408
|
const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
|
408
|
-
const { hasLocalizedField: tabHasLocalizedField,
|
409
|
+
const { hasLocalizedField: tabHasLocalizedField, hasLocalizedManyNumberField: tabHasLocalizedManyNumberField, hasLocalizedManyTextField: tabHasLocalizedManyTextField, hasLocalizedRelationshipField: tabHasLocalizedRelationshipField, hasManyNumberField: tabHasManyNumberField, hasManyTextField: tabHasManyTextField } = traverseFields({
|
409
410
|
adapter,
|
410
|
-
buildTexts,
|
411
411
|
buildNumbers,
|
412
412
|
buildRelationships,
|
413
|
+
buildTexts,
|
413
414
|
columnPrefix,
|
414
415
|
columns,
|
415
416
|
disableNotNull: disableNotNullFromHere,
|
@@ -443,11 +444,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
443
444
|
case 'collapsible':
|
444
445
|
{
|
445
446
|
const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
|
446
|
-
const { hasLocalizedField: rowHasLocalizedField,
|
447
|
+
const { hasLocalizedField: rowHasLocalizedField, hasLocalizedManyNumberField: rowHasLocalizedManyNumberField, hasLocalizedManyTextField: rowHasLocalizedManyTextField, hasLocalizedRelationshipField: rowHasLocalizedRelationshipField, hasManyNumberField: rowHasManyNumberField, hasManyTextField: rowHasManyTextField } = traverseFields({
|
447
448
|
adapter,
|
448
|
-
buildTexts,
|
449
449
|
buildNumbers,
|
450
450
|
buildRelationships,
|
451
|
+
buildTexts,
|
451
452
|
columnPrefix,
|
452
453
|
columns,
|
453
454
|
disableNotNull: disableNotNullFromHere,
|
@@ -495,12 +496,12 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
|
|
495
496
|
});
|
496
497
|
return {
|
497
498
|
hasLocalizedField,
|
498
|
-
hasLocalizedManyTextField,
|
499
499
|
hasLocalizedManyNumberField,
|
500
|
+
hasLocalizedManyTextField,
|
500
501
|
hasLocalizedRelationshipField,
|
501
|
-
|
502
|
-
|
502
|
+
hasManyNumberField,
|
503
|
+
hasManyTextField
|
503
504
|
};
|
504
505
|
};
|
505
506
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBoYXNMb2NhbGVzVGFibGUgfSBmcm9tICcuLi91dGlsaXRpZXMvaGFzTG9jYWxlc1RhYmxlJ1xuaW1wb3J0IHsgYnVpbGRUYWJsZSB9IGZyb20gJy4vYnVpbGQnXG5pbXBvcnQgeyBjcmVhdGVJbmRleCB9IGZyb20gJy4vY3JlYXRlSW5kZXgnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkVGV4dHM6IGJvb2xlYW5cbiAgYnVpbGROdW1iZXJzOiBib29sZWFuXG4gIGJ1aWxkUmVsYXRpb25zaGlwczogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZFRleHRzLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZSA9ICdpbnRlZ2VyJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnTnVtZXJpY0J1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICdudW1lcmljJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnVmFyY2hhckJ1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICd2YXJjaGFyJ1xuXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGlmICgnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJykgcmV0dXJuXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZ1xuICAgIGxldCBmaWVsZE5hbWU6IHN0cmluZ1xuXG4gICAgbGV0IHRhcmdldFRhYmxlID0gY29sdW1uc1xuICAgIGxldCB0YXJnZXRJbmRleGVzID0gaW5kZXhlc1xuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZVswXSA9PT0gJ18nID8gJ18nIDogJyd9JHt0b1NuYWtlQ2FzZShcbiAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXg/LnJlcGxhY2UoJy4nLCAnXycpIHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWVcbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLmZpZWxkQ29uc3RyYWludHM/Lltyb290VGFibGVOYW1lXSkge1xuICAgICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdID0ge31cbiAgICAgICAgICB9XG4gICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdW2Ake2NvbHVtbk5hbWV9X2lkeGBdID0gY29uc3RyYWludFZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSB0ZXh0IGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICBjYXNlICdjb2RlJzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IG51bWJlciBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IG51bWVyaWMoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6XG4gICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0ganNvbmIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHRpbWVzdGFtcChjb2x1bW5OYW1lLCB7XG4gICAgICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgICAgIHdpdGhUaW1lem9uZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgICAgY29uc3QgZW51bU5hbWUgPSBgZW51bV8ke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG5cbiAgICAgICAgYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0gPSBwZ0VudW0oXG4gICAgICAgICAgZW51bU5hbWUsXG4gICAgICAgICAgZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbklzT2JqZWN0KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICAgICAgfSkgYXMgW3N0cmluZywgLi4uc3RyaW5nW11dLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RUYWJsZU5hbWUgPSBgJHtuZXdUYWJsZU5hbWV9XyR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge1xuICAgICAgICAgICAgb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleCgnb3JkZXJfaWR4Jykub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IChjb2xzKSA9PiBpbmRleCgncGFyZW50X2lkeCcpLm9uKGNvbHMucGFyZW50KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBiYXNlQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLmxvY2FsZUlkeCA9IChjb2xzKSA9PiBpbmRleCgnbG9jYWxlX2lkeCcpLm9uKGNvbHMubG9jYWxlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLnZhbHVlID0gKGNvbHMpID0+IGluZGV4KCd2YWx1ZV9pZHgnKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICA+ID0ge1xuICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KCdfb3JkZXJfaWR4Jykub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KCdfcGFyZW50X2lkX2lkeCcpLm9uKGNvbHMuX3BhcmVudElEKSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT4gaW5kZXgoJ19sb2NhbGVfaWR4Jykub24oY29scy5fbG9jYWxlKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHN1Ykhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRzOiBkaXNhYmxlVW5pcXVlID8gaWRUb1VVSUQoZmllbGQuZmllbGRzKSA6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290UmVsYXRpb25zaGlwczogcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgaWYgKCFoYXNNYW55VGV4dEZpZWxkIHx8IHN1Ykhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gc3ViSGFzTWFueVRleHRGaWVsZFxuICAgICAgICB9XG4gICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCB8fCBzdWJIYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSBzdWJIYXNNYW55TnVtYmVyRmllbGRcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgYXJyYXlUYWJsZU5hbWUpXG5cbiAgICAgICAgY29uc3QgYXJyYXlUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhhZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0sICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChoYXNMb2NhbGVzVGFibGUoZmllbGQuZmllbGRzKSkge1xuICAgICAgICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShhZGFwdGVyLnRhYmxlc1tgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlc2BdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KCdvcmRlcl9pZHgnKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWRfaWR4Jykub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBfcGF0aElkeDogKGNvbHMpID0+IGluZGV4KCdwYXRoX2lkeCcpLm9uKGNvbHMuX3BhdGgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT4gaW5kZXgoJ2xvY2FsZV9pZHgnKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChibG9jay5maWVsZHMpIDogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogdGFiSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHRhYkhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogcm93SGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogcm93SGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBmaWVsZC5yZWxhdGlvblRvLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbnNoaXBzLmFkZChyZWxhdGlvbikpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwcy5hZGQoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGZpZWxkLmFkbWluICYmIGZpZWxkLmFkbWluLmNvbmRpdGlvblxuXG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVOb3ROdWxsICYmXG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmXG4gICAgICAncmVxdWlyZWQnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCAmJlxuICAgICAgIWNvbmRpdGlvblxuICAgICkge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55VGV4dEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkVGV4dHMiLCJidWlsZE51bWJlcnMiLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJjb2x1bW5QcmVmaXgiLCJjb2x1bW5zIiwiZGlzYWJsZU5vdE51bGwiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJyZXBsYWNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNvbnN0cmFpbnRWYWx1ZSIsImZpZWxkQ29uc3RyYWludHMiLCJjcmVhdGVJbmRleCIsIkludmFsaWRDb25maWd1cmF0aW9uIiwidmFyY2hhciIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsIm9wdGlvbklzT2JqZWN0IiwidmFsdWUiLCJzZWxlY3RUYWJsZU5hbWUiLCJiYXNlQ29sdW1ucyIsIm9yZGVyIiwiaW50ZWdlciIsIm5vdE51bGwiLCJwYXJlbnQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJ0YWJsZXMiLCJvbkRlbGV0ZSIsImJhc2VFeHRyYUNvbmZpZyIsIm9yZGVySWR4IiwiY29scyIsIm9uIiwicGFyZW50SWR4IiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsImxvY2FsZUlkeCIsImJ1aWxkVGFibGUiLCJ0YWJsZU5hbWUiLCJzZXQiLCJzZWxlY3RUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInJlc3VsdCIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiYXJyYXlUYWJsZU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfb3JkZXJJZHgiLCJfcGFyZW50SURJZHgiLCJfbG9jYWxlIiwiX2xvY2FsZUlkeCIsInN1Ykhhc01hbnlUZXh0RmllbGQiLCJzdWJIYXNNYW55TnVtYmVyRmllbGQiLCJzdWJSZWxhdGlvbnNUb0J1aWxkIiwiaWRUb1VVSUQiLCJyb290UmVsYXRpb25zaGlwcyIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJ2YWwiLCJrZXkiLCJibG9ja3MiLCJibG9jayIsImJsb2NrVGFibGVOYW1lIiwic2x1ZyIsIl9wYXRoIiwidGV4dCIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlUZXh0RmllbGQiLCJ0YWJIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJzIiwidGFiIiwicm93SGFzTG9jYWxpemVkRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55VGV4dEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwicmVxdWlyZWQiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFpRXZCQTs7O2VBQUFBOzs7NEJBNURhO3dCQWFuQjt3QkFDOEI7dUJBQ1k7b0VBQ3pCO2lDQUlRO3VCQUNMOzZCQUNDOzBCQUNIO21DQUNTO2tEQUNlOzs7Ozs7QUFtQzFDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxPQUFPLEVBQ1BDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ1I7SUFDTCxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyw0QkFBNEI7SUFDaEMsSUFBSUMscUJBQXdDO0lBQzVDLElBQUlDLDhCQUE4QjtJQUVsQyxJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlDLHdCQUFnQixFQUFFRixrQkFBa0I7SUFDOUQsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlFLHdCQUFnQixFQUFFSCxrQkFBa0I7SUFFOURsQixPQUFPc0IsT0FBTyxDQUFDLENBQUNDO1FBQ2QsSUFBSSxVQUFVQSxTQUFTQSxNQUFNQyxJQUFJLEtBQUssTUFBTTtRQUM1QyxJQUFJQztRQUNKLElBQUlDO1FBRUosSUFBSUMsY0FBYy9CO1FBQ2xCLElBQUlnQyxnQkFBZ0IxQjtRQUVwQixJQUFJ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
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBoYXNMb2NhbGVzVGFibGUgfSBmcm9tICcuLi91dGlsaXRpZXMvaGFzTG9jYWxlc1RhYmxlJ1xuaW1wb3J0IHsgYnVpbGRUYWJsZSB9IGZyb20gJy4vYnVpbGQnXG5pbXBvcnQgeyBjcmVhdGVJbmRleCB9IGZyb20gJy4vY3JlYXRlSW5kZXgnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkTnVtYmVyczogYm9vbGVhblxuICBidWlsZFJlbGF0aW9uc2hpcHM6IGJvb2xlYW5cbiAgYnVpbGRUZXh0czogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZSA9ICdpbnRlZ2VyJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnTnVtZXJpY0J1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICdudW1lcmljJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnVmFyY2hhckJ1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICd2YXJjaGFyJ1xuXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGlmICgnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJykgcmV0dXJuXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZ1xuICAgIGxldCBmaWVsZE5hbWU6IHN0cmluZ1xuXG4gICAgbGV0IHRhcmdldFRhYmxlID0gY29sdW1uc1xuICAgIGxldCB0YXJnZXRJbmRleGVzID0gaW5kZXhlc1xuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZVswXSA9PT0gJ18nID8gJ18nIDogJyd9JHt0b1NuYWtlQ2FzZShcbiAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXg/LnJlcGxhY2UoJy4nLCAnXycpIHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZSA9IGRpc2FibGVVbmlxdWUgIT09IHRydWUgJiYgZmllbGQudW5pcXVlXG4gICAgICAgIGlmICh1bmlxdWUpIHtcbiAgICAgICAgICBjb25zdCBjb25zdHJhaW50VmFsdWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgICAgIGlmICghYWRhcHRlci5maWVsZENvbnN0cmFpbnRzPy5bcm9vdFRhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgIGFkYXB0ZXIuZmllbGRDb25zdHJhaW50c1tyb290VGFibGVOYW1lXSA9IHt9XG4gICAgICAgICAgfVxuICAgICAgICAgIGFkYXB0ZXIuZmllbGRDb25zdHJhaW50c1tyb290VGFibGVOYW1lXVtgJHtjb2x1bW5OYW1lfV9pZHhgXSA9IGNvbnN0cmFpbnRWYWx1ZVxuICAgICAgICB9XG4gICAgICAgIHRhcmdldEluZGV4ZXNbYCR7bmV3VGFibGVOYW1lfV8ke2ZpZWxkLm5hbWV9SWR4YF0gPSBjcmVhdGVJbmRleCh7XG4gICAgICAgICAgbmFtZTogZmllbGROYW1lLFxuICAgICAgICAgIGNvbHVtbk5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdW5pcXVlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAndGV4dCc6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9ICdpbmRleCdcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IHRleHQgZmllbGRzLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGBlbnVtXyR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ3BhcmVudF9pZCcpXG4gICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgdmFsdWU6IGFkYXB0ZXIuZW51bXNbZW51bU5hbWVdKCd2YWx1ZScpLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICAgID4gPSB7XG4gICAgICAgICAgICBvcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IChjb2xzKSA9PiBpbmRleChgJHtzZWxlY3RUYWJsZU5hbWV9X3BhcmVudF9pZHhgKS5vbihjb2xzLnBhcmVudCksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgYmFzZUNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV92YWx1ZV9pZHhgKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICA+ID0ge1xuICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke2FycmF5VGFibGVOYW1lfV9vcmRlcl9pZHhgKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fbG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMuX2xvY2FsZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBzdWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZGlzYWJsZVVuaXF1ZSA/IGlkVG9VVUlEKGZpZWxkLmZpZWxkcykgOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lOiBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoc3ViSGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHN1Ykhhc01hbnlUZXh0RmllbGRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViSGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gc3ViSGFzTWFueU51bWJlckZpZWxkXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIGFycmF5VGFibGVOYW1lKVxuXG4gICAgICAgIGNvbnN0IGFycmF5VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLCAoeyBtYW55LCBvbmUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICBfcGFyZW50SUQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGZpZWxkLmZpZWxkcykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoYWRhcHRlci50YWJsZXNbYCR7YXJyYXlUYWJsZU5hbWV9X2xvY2FsZXNgXSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9KVxuXG4gICAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHthcnJheVRhYmxlTmFtZX1gXSA9IGFycmF5VGFibGVSZWxhdGlvbnNcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG5cbiAgICAgICAgZmllbGQuYmxvY2tzLmZvckVhY2goKGJsb2NrKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2tUYWJsZU5hbWUgPSBgJHtyb290VGFibGVOYW1lfV9ibG9ja3NfJHt0b1NuYWtlQ2FzZShibG9jay5zbHVnKX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtyb290VGFibGVJRENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhdGg6IHRleHQoJ19wYXRoJykubm90TnVsbCgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgICAgICA+ID0ge1xuICAgICAgICAgICAgICBfb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgICAgICBfcGFyZW50SURJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fcGFyZW50X2lkX2lkeGApLm9uKGNvbHMuX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgX3BhdGhJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fcGF0aF9pZHhgKS5vbihjb2xzLl9wYXRoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fbG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X2xvY2FsZV9pZHhgKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHN1Ykhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChibG9jay5maWVsZHMpIDogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZE51bWJlcnMsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiB0YWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogdGFiSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogcm93SGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogcm93SGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBmaWVsZC5yZWxhdGlvblRvLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbnNoaXBzLmFkZChyZWxhdGlvbikpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwcy5hZGQoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGZpZWxkLmFkbWluICYmIGZpZWxkLmFkbWluLmNvbmRpdGlvblxuXG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVOb3ROdWxsICYmXG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmXG4gICAgICAncmVxdWlyZWQnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCAmJlxuICAgICAgIWNvbmRpdGlvblxuICAgICkge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTWFueVRleHRGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJjb2x1bW5QcmVmaXgiLCJjb2x1bW5zIiwiZGlzYWJsZU5vdE51bGwiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJyZXBsYWNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNvbnN0cmFpbnRWYWx1ZSIsImZpZWxkQ29uc3RyYWludHMiLCJjcmVhdGVJbmRleCIsInRhYmxlTmFtZSIsIkludmFsaWRDb25maWd1cmF0aW9uIiwidmFyY2hhciIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsIm9wdGlvbklzT2JqZWN0IiwidmFsdWUiLCJzZWxlY3RUYWJsZU5hbWUiLCJiYXNlQ29sdW1ucyIsIm9yZGVyIiwiaW50ZWdlciIsIm5vdE51bGwiLCJwYXJlbnQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJ0YWJsZXMiLCJvbkRlbGV0ZSIsImJhc2VFeHRyYUNvbmZpZyIsIm9yZGVySWR4IiwiY29scyIsIm9uIiwicGFyZW50SWR4IiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsImxvY2FsZUlkeCIsImJ1aWxkVGFibGUiLCJzZXQiLCJzZWxlY3RUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInJlc3VsdCIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiYXJyYXlUYWJsZU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfb3JkZXJJZHgiLCJfcGFyZW50SURJZHgiLCJfbG9jYWxlIiwiX2xvY2FsZUlkeCIsInN1Ykhhc01hbnlOdW1iZXJGaWVsZCIsInN1Ykhhc01hbnlUZXh0RmllbGQiLCJzdWJSZWxhdGlvbnNUb0J1aWxkIiwiaWRUb1VVSUQiLCJyb290UmVsYXRpb25zaGlwcyIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJ2YWwiLCJrZXkiLCJibG9ja3MiLCJibG9jayIsImJsb2NrVGFibGVOYW1lIiwic2x1ZyIsIl9wYXRoIiwidGV4dCIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc01hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYkhhc01hbnlUZXh0RmllbGQiLCJ0YWJzIiwidGFiIiwicm93SGFzTG9jYWxpemVkRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNNYW55VGV4dEZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwicmVxdWlyZWQiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFpRXZCQTs7O2VBQUFBOzs7NEJBNURhO3dCQWFuQjt3QkFDOEI7dUJBQ1k7b0VBQ3pCO2lDQUlRO3VCQUNMOzZCQUNDOzBCQUNIO21DQUNTO2tEQUNlOzs7Ozs7QUFtQzFDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxPQUFPLEVBQ1BDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxPQUFPLEVBQ1BDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ1I7SUFDTCxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyw0QkFBNEI7SUFDaEMsSUFBSUMscUJB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
|
package/dist/types.d.ts
CHANGED
@@ -3,12 +3,13 @@ import type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-post
|
|
3
3
|
import type { PgColumn, PgEnum, PgTableWithColumns, PgTransaction } from 'drizzle-orm/pg-core';
|
4
4
|
import type { Payload } from 'payload';
|
5
5
|
import type { BaseDatabaseAdapter } from 'payload/database';
|
6
|
+
import type { PayloadRequest } from 'payload/types';
|
6
7
|
import type { Pool, PoolConfig } from 'pg';
|
7
8
|
export type DrizzleDB = NodePgDatabase<Record<string, unknown>>;
|
8
9
|
export type Args = {
|
10
|
+
logger?: DrizzleConfig['logger'];
|
9
11
|
migrationDir?: string;
|
10
12
|
pool: PoolConfig;
|
11
|
-
logger?: DrizzleConfig['logger'];
|
12
13
|
push?: boolean;
|
13
14
|
};
|
14
15
|
export type GenericColumn = PgColumn<ColumnBaseConfig<ColumnDataType, string>, Record<string, unknown>>;
|
@@ -26,8 +27,13 @@ export type GenericRelation = Relations<string, Record<string, Relation<string>>
|
|
26
27
|
export type DrizzleTransaction = PgTransaction<NodePgQueryResultHKT, Record<string, unknown>, ExtractTablesWithRelations<Record<string, unknown>>>;
|
27
28
|
export type PostgresAdapter = BaseDatabaseAdapter & {
|
28
29
|
drizzle: DrizzleDB;
|
29
|
-
logger: DrizzleConfig['logger'];
|
30
30
|
enums: Record<string, GenericEnum>;
|
31
|
+
/**
|
32
|
+
* An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name
|
33
|
+
* Used for returning properly formed errors from unique fields
|
34
|
+
*/
|
35
|
+
fieldConstraints: Record<string, Record<string, string>>;
|
36
|
+
logger: DrizzleConfig['logger'];
|
31
37
|
pool: Pool;
|
32
38
|
poolOptions: Args['pool'];
|
33
39
|
push: boolean;
|
@@ -41,25 +47,23 @@ export type PostgresAdapter = BaseDatabaseAdapter & {
|
|
41
47
|
};
|
42
48
|
};
|
43
49
|
tables: Record<string, GenericTable>;
|
44
|
-
/**
|
45
|
-
* An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name
|
46
|
-
* Used for returning properly formed errors from unique fields
|
47
|
-
*/
|
48
|
-
fieldConstraints: Record<string, Record<string, string>>;
|
49
50
|
};
|
50
51
|
export type PostgresAdapterResult = (args: {
|
51
52
|
payload: Payload;
|
52
53
|
}) => PostgresAdapter;
|
53
54
|
export type MigrateUpArgs = {
|
54
55
|
payload: Payload;
|
56
|
+
req?: Partial<PayloadRequest>;
|
55
57
|
};
|
56
58
|
export type MigrateDownArgs = {
|
57
59
|
payload: Payload;
|
60
|
+
req?: Partial<PayloadRequest>;
|
58
61
|
};
|
59
62
|
declare module 'payload' {
|
60
63
|
interface DatabaseAdapter extends Omit<Args, 'migrationDir' | 'pool'>, BaseDatabaseAdapter {
|
61
64
|
drizzle: DrizzleDB;
|
62
65
|
enums: Record<string, GenericEnum>;
|
66
|
+
fieldConstraints: Record<string, Record<string, string>>;
|
63
67
|
pool: Pool;
|
64
68
|
push: boolean;
|
65
69
|
relations: Record<string, GenericRelation>;
|
@@ -72,7 +76,6 @@ declare module 'payload' {
|
|
72
76
|
};
|
73
77
|
};
|
74
78
|
tables: Record<string, GenericTable>;
|
75
|
-
fieldConstraints: Record<string, Record<string, string>>;
|
76
79
|
}
|
77
80
|
}
|
78
81
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,0BAA0B,EAC1B,QAAQ,EACR,SAAS,EACV,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE/D,MAAM,MAAM,IAAI,GAAG;IACjB,
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@payloadcms/db-postgres",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.5.1",
|
4
4
|
"description": "The officially supported Postgres database adapter for Payload",
|
5
5
|
"repository": "https://github.com/payloadcms/payload",
|
6
6
|
"license": "MIT",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"dependencies": {
|
16
16
|
"@libsql/client": "^0.3.1",
|
17
17
|
"console-table-printer": "2.11.2",
|
18
|
-
"drizzle-kit": "0.20.
|
18
|
+
"drizzle-kit": "0.20.14-1f2c838",
|
19
19
|
"drizzle-orm": "0.29.3",
|
20
20
|
"pg": "8.11.3",
|
21
21
|
"prompts": "2.4.2",
|
@@ -25,8 +25,8 @@
|
|
25
25
|
"devDependencies": {
|
26
26
|
"@types/pg": "8.10.2",
|
27
27
|
"@types/to-snake-case": "1.0.0",
|
28
|
-
"
|
29
|
-
"
|
28
|
+
"@payloadcms/eslint-config": "1.1.1",
|
29
|
+
"payload": "2.10.0"
|
30
30
|
},
|
31
31
|
"peerDependencies": {
|
32
32
|
"payload": "^2.0.0"
|