@payloadcms/db-postgres 0.8.6 → 0.8.8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +5 -52
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +3 -3
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +10 -4
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildFindManyArgs.js +2 -1
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/findMany.js +3 -3
- package/dist/find/traverseFields.d.ts +2 -1
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +9 -3
- package/dist/init.js +3 -2
- package/dist/migrate.js +3 -3
- package/dist/migrateDown.js +2 -2
- package/dist/migrateRefresh.js +2 -2
- package/dist/migrateReset.js +3 -3
- package/dist/migrateStatus.js +2 -2
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +4 -3
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +3 -1
- package/dist/queries/sanitizeQueryValue.d.ts +2 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +11 -2
- package/dist/schema/build.d.ts +10 -2
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +23 -6
- package/dist/schema/traverseFields.d.ts +6 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +46 -17
- package/dist/transform/read/hasManyNumber.d.ts +2 -1
- package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
- package/dist/transform/read/hasManyNumber.js +14 -4
- package/dist/transform/read/hasManyText.d.ts +2 -1
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.js +14 -4
- package/dist/transform/read/relationship.d.ts +2 -1
- package/dist/transform/read/relationship.d.ts.map +1 -1
- package/dist/transform/read/relationship.js +16 -7
- package/dist/transform/read/traverseFields.d.ts +5 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +118 -85
- package/dist/transform/write/array.d.ts +6 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +7 -3
- package/dist/transform/write/blocks.d.ts +6 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +5 -3
- package/dist/transform/write/traverseFields.d.ts +6 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +40 -15
- package/dist/types.d.ts +9 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.js +5 -2
- package/dist/utilities/migrationTableExists.d.ts +2 -2
- package/dist/utilities/migrationTableExists.d.ts.map +1 -1
- package/dist/utilities/migrationTableExists.js +10 -6
- package/dist/utilities/pushDevSchema.d.ts +9 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -0
- package/dist/utilities/pushDevSchema.js +59 -0
- package/dist/utilities/requireDrizzleKit.d.ts +14 -0
- package/dist/utilities/requireDrizzleKit.d.ts.map +1 -0
- package/dist/utilities/requireDrizzleKit.js +13 -0
- package/package.json +6 -6
@@ -25,7 +25,7 @@ function _interop_require_default(obj) {
|
|
25
25
|
default: obj
|
26
26
|
};
|
27
27
|
}
|
28
|
-
const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions })=>{
|
28
|
+
const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, withinLocalizedArrayOrBlock })=>{
|
29
29
|
const throwValidationError = true;
|
30
30
|
let hasLocalizedField = false;
|
31
31
|
let hasLocalizedRelationshipField = false;
|
@@ -81,7 +81,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
81
81
|
case 'text':
|
82
82
|
{
|
83
83
|
if (field.hasMany) {
|
84
|
-
|
84
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock;
|
85
|
+
if (isLocalized) {
|
85
86
|
hasLocalizedManyTextField = true;
|
86
87
|
}
|
87
88
|
if (field.index) {
|
@@ -107,7 +108,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
107
108
|
case 'number':
|
108
109
|
{
|
109
110
|
if (field.hasMany) {
|
110
|
-
|
111
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
112
|
+
if (isLocalized) {
|
111
113
|
hasLocalizedManyNumberField = true;
|
112
114
|
}
|
113
115
|
if (field.index) {
|
@@ -153,7 +155,7 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
153
155
|
target: 'enumName',
|
154
156
|
throwValidationError
|
155
157
|
});
|
156
|
-
adapter.enums[enumName] =
|
158
|
+
adapter.enums[enumName] = adapter.pgSchema.enum(enumName, field.options.map((option)=>{
|
157
159
|
if ((0, _types.optionIsObject)(option)) {
|
158
160
|
return option.value;
|
159
161
|
}
|
@@ -185,7 +187,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
185
187
|
}).onDelete('cascade'),
|
186
188
|
parentIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_parent_idx`).on(cols.parent)
|
187
189
|
};
|
188
|
-
|
190
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
191
|
+
if (isLocalized) {
|
189
192
|
baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
|
190
193
|
baseExtraConfig.localeIdx = (cols)=>(0, _pgcore.index)(`${selectTableName}_locale_idx`).on(cols.locale);
|
191
194
|
}
|
@@ -255,11 +258,12 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
255
258
|
}).onDelete('cascade'),
|
256
259
|
_parentIDIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
|
257
260
|
};
|
258
|
-
|
261
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
262
|
+
if (isLocalized) {
|
259
263
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
260
264
|
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${arrayTableName}_locale_idx`).on(cols._locale);
|
261
265
|
}
|
262
|
-
const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
266
|
+
const { hasLocalizedManyNumberField: subHasLocalizedManyNumberField, hasLocalizedManyTextField: subHasLocalizedManyTextField, hasLocalizedRelationshipField: subHasLocalizedRelationshipField, hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
263
267
|
adapter,
|
264
268
|
baseColumns,
|
265
269
|
baseExtraConfig,
|
@@ -271,8 +275,18 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
271
275
|
rootTableIDColType,
|
272
276
|
rootTableName,
|
273
277
|
tableName: arrayTableName,
|
274
|
-
versions
|
278
|
+
versions,
|
279
|
+
withinLocalizedArrayOrBlock: isLocalized
|
275
280
|
});
|
281
|
+
if (subHasLocalizedManyNumberField) {
|
282
|
+
hasLocalizedManyNumberField = subHasLocalizedManyNumberField;
|
283
|
+
}
|
284
|
+
if (subHasLocalizedRelationshipField) {
|
285
|
+
hasLocalizedRelationshipField = subHasLocalizedRelationshipField;
|
286
|
+
}
|
287
|
+
if (subHasLocalizedManyTextField) {
|
288
|
+
hasLocalizedManyTextField = subHasLocalizedManyTextField;
|
289
|
+
}
|
276
290
|
if (subHasManyTextField) {
|
277
291
|
if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
|
278
292
|
}
|
@@ -334,11 +348,12 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
334
348
|
}).onDelete('cascade'),
|
335
349
|
_pathIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_path_idx`).on(cols._path)
|
336
350
|
};
|
337
|
-
|
351
|
+
const isLocalized = Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock || forceLocalized;
|
352
|
+
if (isLocalized) {
|
338
353
|
baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
339
354
|
baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${blockTableName}_locale_idx`).on(cols._locale);
|
340
355
|
}
|
341
|
-
const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
356
|
+
const { hasLocalizedManyNumberField: subHasLocalizedManyNumberField, hasLocalizedManyTextField: subHasLocalizedManyTextField, hasLocalizedRelationshipField: subHasLocalizedRelationshipField, hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
|
342
357
|
adapter,
|
343
358
|
baseColumns,
|
344
359
|
baseExtraConfig,
|
@@ -350,8 +365,18 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
350
365
|
rootTableIDColType,
|
351
366
|
rootTableName,
|
352
367
|
tableName: blockTableName,
|
353
|
-
versions
|
368
|
+
versions,
|
369
|
+
withinLocalizedArrayOrBlock: isLocalized
|
354
370
|
});
|
371
|
+
if (subHasLocalizedManyNumberField) {
|
372
|
+
hasLocalizedManyNumberField = subHasLocalizedManyNumberField;
|
373
|
+
}
|
374
|
+
if (subHasLocalizedRelationshipField) {
|
375
|
+
hasLocalizedRelationshipField = subHasLocalizedRelationshipField;
|
376
|
+
}
|
377
|
+
if (subHasLocalizedManyTextField) {
|
378
|
+
hasLocalizedManyTextField = subHasLocalizedManyTextField;
|
379
|
+
}
|
355
380
|
if (subHasManyTextField) {
|
356
381
|
if (!hasManyTextField || subHasManyTextField === 'index') hasManyTextField = subHasManyTextField;
|
357
382
|
}
|
@@ -417,7 +442,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
417
442
|
rootRelationsToBuild,
|
418
443
|
rootTableIDColType,
|
419
444
|
rootTableName,
|
420
|
-
versions
|
445
|
+
versions,
|
446
|
+
withinLocalizedArrayOrBlock
|
421
447
|
});
|
422
448
|
if (groupHasLocalizedField) hasLocalizedField = true;
|
423
449
|
if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
@@ -450,7 +476,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
450
476
|
rootRelationsToBuild,
|
451
477
|
rootTableIDColType,
|
452
478
|
rootTableName,
|
453
|
-
versions
|
479
|
+
versions,
|
480
|
+
withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized
|
454
481
|
});
|
455
482
|
if (groupHasLocalizedField) hasLocalizedField = true;
|
456
483
|
if (groupHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
@@ -488,7 +515,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
488
515
|
rootRelationsToBuild,
|
489
516
|
rootTableIDColType,
|
490
517
|
rootTableName,
|
491
|
-
versions
|
518
|
+
versions,
|
519
|
+
withinLocalizedArrayOrBlock
|
492
520
|
});
|
493
521
|
if (tabHasLocalizedField) hasLocalizedField = true;
|
494
522
|
if (tabHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
@@ -524,7 +552,8 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
524
552
|
rootRelationsToBuild,
|
525
553
|
rootTableIDColType,
|
526
554
|
rootTableName,
|
527
|
-
versions
|
555
|
+
versions,
|
556
|
+
withinLocalizedArrayOrBlock
|
528
557
|
});
|
529
558
|
if (rowHasLocalizedField) hasLocalizedField = true;
|
530
559
|
if (rowHasLocalizedRelationshipField) hasLocalizedRelationshipField = true;
|
@@ -541,7 +570,7 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
541
570
|
} else {
|
542
571
|
relationships.add(field.relationTo);
|
543
572
|
}
|
544
|
-
if (field.localized && adapter.payload.config.localization) {
|
573
|
+
if (Boolean(field.localized && adapter.payload.config.localization) || withinLocalizedArrayOrBlock) {
|
545
574
|
hasLocalizedRelationshipField = true;
|
546
575
|
}
|
547
576
|
break;
|
@@ -563,4 +592,4 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
|
|
563
592
|
};
|
564
593
|
};
|
565
594
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgVGFiQXNGaWVsZCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHJlbGF0aW9ucyB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuaW1wb3J0IHtcbiAgUGdOdW1lcmljQnVpbGRlcixcbiAgUGdVVUlEQnVpbGRlcixcbiAgUGdWYXJjaGFyQnVpbGRlcixcbiAgYm9vbGVhbixcbiAgZm9yZWlnbktleSxcbiAgaW5kZXgsXG4gIGludGVnZXIsXG4gIGpzb25iLFxuICBudW1lcmljLFxuICBwZ0VudW0sXG4gIHRleHQsXG4gIHRpbWVzdGFtcCxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgSURUeXBlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZUV4dHJhQ29uZmlnIH0gZnJvbSAnLi9idWlsZCdcblxuaW1wb3J0IHsgaGFzTG9jYWxlc1RhYmxlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2hhc0xvY2FsZXNUYWJsZSdcbmltcG9ydCB7IGJ1aWxkVGFibGUgfSBmcm9tICcuL2J1aWxkJ1xuaW1wb3J0IHsgY3JlYXRlSW5kZXggfSBmcm9tICcuL2NyZWF0ZUluZGV4J1xuaW1wb3J0IHsgY3JlYXRlVGFibGVOYW1lIH0gZnJvbSAnLi9jcmVhdGVUYWJsZU5hbWUnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkTnVtYmVyczogYm9vbGVhblxuICBidWlsZFJlbGF0aW9uc2hpcHM6IGJvb2xlYW5cbiAgYnVpbGRUZXh0czogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uczogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdmVyc2lvbnMsXG59OiBBcmdzKTogUmVzdWx0ID0+IHtcbiAgY29uc3QgdGhyb3dWYWxpZGF0aW9uRXJyb3IgPSB0cnVlXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gZmFsc2VcblxuICBsZXQgcGFyZW50SURDb2xUeXBlOiBJRFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1VVSURCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndXVpZCdcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4Py5yZXBsYWNlKCcuJywgJ18nKSB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuXG4gICAgICAvLyBJZiBmaWVsZCBpcyBsb2NhbGl6ZWQsXG4gICAgICAvLyBhZGQgdGhlIGNvbHVtbiB0byB0aGUgbG9jYWxlIHRhYmxlIGluc3RlYWQgb2YgbWFpbiB0YWJsZVxuICAgICAgaWYgKGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uICYmIChmaWVsZC5sb2NhbGl6ZWQgfHwgZm9yY2VMb2NhbGl6ZWQpKSB7XG4gICAgICAgIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICB0YXJnZXRUYWJsZSA9IGxvY2FsZXNDb2x1bW5zXG4gICAgICAgIHRhcmdldEluZGV4ZXMgPSBsb2NhbGVzSW5kZXhlc1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIChmaWVsZC51bmlxdWUgfHwgZmllbGQuaW5kZXgpICYmXG4gICAgICAgICFbJ2FycmF5JywgJ2Jsb2NrcycsICdncm91cCcsICdwb2ludCcsICdyZWxhdGlvbnNoaXAnLCAndXBsb2FkJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgISgnaGFzTWFueScgaW4gZmllbGQgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBkaXNhYmxlVW5pcXVlICE9PSB0cnVlICYmIGZpZWxkLnVuaXF1ZVxuICAgICAgICBpZiAodW5pcXVlKSB7XG4gICAgICAgICAgY29uc3QgY29uc3RyYWludFZhbHVlID0gYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIuZmllbGRDb25zdHJhaW50cz8uW3Jvb3RUYWJsZU5hbWVdKSB7XG4gICAgICAgICAgICBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbcm9vdFRhYmxlTmFtZV0gPSB7fVxuICAgICAgICAgIH1cbiAgICAgICAgICBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbcm9vdFRhYmxlTmFtZV1bYCR7Y29sdW1uTmFtZX1faWR4YF0gPSBjb25zdHJhaW50VmFsdWVcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRJbmRleGVzW2Ake25ld1RhYmxlTmFtZX1fJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSB0ZXh0IGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICBjYXNlICdjb2RlJzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IG51bWJlciBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IG51bWVyaWMoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6XG4gICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0ganNvbmIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHRpbWVzdGFtcChjb2x1bW5OYW1lLCB7XG4gICAgICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgICAgIHdpdGhUaW1lem9uZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgICAgY29uc3QgZW51bU5hbWUgPSBjcmVhdGVUYWJsZU5hbWUoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwcmVmaXg6IGBlbnVtXyR7bmV3VGFibGVOYW1lfV9gLFxuICAgICAgICAgIHRhcmdldDogJ2VudW1OYW1lJyxcbiAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHtuZXdUYWJsZU5hbWV9X2AsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB2YWx1ZTogYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oJ3ZhbHVlJyksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBCYXNlRXh0cmFDb25maWcgPSB7XG4gICAgICAgICAgICBvcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRGazogKGNvbHMpID0+XG4gICAgICAgICAgICAgIGZvcmVpZ25LZXkoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGAke3NlbGVjdFRhYmxlTmFtZX1fcGFyZW50X2ZrYCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBbY29scy5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIGZvcmVpZ25Db2x1bW5zOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IChjb2xzKSA9PiBpbmRleChgJHtzZWxlY3RUYWJsZU5hbWV9X3BhcmVudF9pZHhgKS5vbihjb2xzLnBhcmVudCksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgYmFzZUNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV92YWx1ZV9pZHhgKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgc2VsZWN0VGFibGVOYW1lKVxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICAgIHBhcmVudDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1tzZWxlY3RUYWJsZU5hbWVdLnBhcmVudF0sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25fJHtzZWxlY3RUYWJsZU5hbWV9YF0gPSBzZWxlY3RUYWJsZVJlbGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBhZGFwdGVyLmVudW1zW2VudW1OYW1lXShmaWVsZE5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBib29sZWFuKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IGFycmF5VGFibGVOYW1lID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbmZpZzogZmllbGQsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcHJlZml4OiBgJHtuZXdUYWJsZU5hbWV9X2AsXG4gICAgICAgICAgdGhyb3dWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgICAgdmVyc2lvbnNDdXN0b21OYW1lOiB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IEJhc2VFeHRyYUNvbmZpZyA9IHtcbiAgICAgICAgICBfb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgIF9wYXJlbnRJREZrOiAoY29scykgPT5cbiAgICAgICAgICAgIGZvcmVpZ25LZXkoe1xuICAgICAgICAgICAgICBuYW1lOiBgJHthcnJheVRhYmxlTmFtZX1fcGFyZW50X2lkX2ZrYCxcbiAgICAgICAgICAgICAgY29sdW1uczogW2NvbHNbJ19wYXJlbnRJRCddXSxcbiAgICAgICAgICAgICAgZm9yZWlnbkNvbHVtbnM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fbG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMuX2xvY2FsZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBzdWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZGlzYWJsZVVuaXF1ZSA/IGlkVG9VVUlEKGZpZWxkLmZpZWxkcykgOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lOiBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoc3ViSGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHN1Ykhhc01hbnlUZXh0RmllbGRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViSGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gc3ViSGFzTWFueU51bWJlckZpZWxkXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIGFycmF5VGFibGVOYW1lKVxuXG4gICAgICAgIGNvbnN0IGFycmF5VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLCAoeyBtYW55LCBvbmUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICBfcGFyZW50SUQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGZpZWxkLmZpZWxkcykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoYWRhcHRlci50YWJsZXNbYCR7YXJyYXlUYWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YXJyYXlUYWJsZU5hbWV9YF0gPSBhcnJheVRhYmxlUmVsYXRpb25zXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGZpZWxkLmJsb2Nrcy5mb3JFYWNoKChibG9jaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2NrVGFibGVOYW1lID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBjb25maWc6IGJsb2NrLFxuICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lOiByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHtyb290VGFibGVOYW1lfV9ibG9ja3NfYCxcbiAgICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yLFxuICAgICAgICAgICAgdmVyc2lvbnNDdXN0b21OYW1lOiB2ZXJzaW9ucyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmICghYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICAgICAgX29yZGVyOiBpbnRlZ2VyKCdfb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcm9vdFRhYmxlSURDb2xUeXBlXSgnX3BhcmVudF9pZCcpLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhdGg6IHRleHQoJ19wYXRoJykubm90TnVsbCgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IEJhc2VFeHRyYUNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgX29yZGVySWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X29yZGVyX2lkeGApLm9uKGNvbHMuX29yZGVyKSxcbiAgICAgICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgICAgICAgIF9wYXJlbnRJZEZrOiAoY29scykgPT5cbiAgICAgICAgICAgICAgICBmb3JlaWduS2V5KHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGAke2Jsb2NrVGFibGVOYW1lfV9wYXJlbnRfaWRfZmtgLFxuICAgICAgICAgICAgICAgICAgY29sdW1uczogW2NvbHMuX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgICAgIGZvcmVpZ25Db2x1bW5zOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgICAgICAgIF9wYXRoSWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X3BhdGhfaWR4YCkub24oY29scy5fcGF0aCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX2xvY2FsZUlkeCA9IChjb2xzKSA9PlxuICAgICAgICAgICAgICAgIGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5fbG9jYWxlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogc3ViSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBzdWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgICAgZmllbGRzOiBkaXNhYmxlVW5pcXVlID8gaWRUb1VVSUQoYmxvY2suZmllbGRzKSA6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNoaXBzOiByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogYmxvY2tUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHN1Ykhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55VGV4dEZpZWxkIHx8IHN1Ykhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHN1Ykhhc01hbnlUZXh0RmllbGRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN1Ykhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgICBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCB8fCBzdWJIYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gc3ViSGFzTWFueU51bWJlckZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGJsb2NrLmZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoXG4gICAgICAgICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBdLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtibG9ja1RhYmxlTmFtZX1gXSA9IGJsb2NrVGFibGVSZWxhdGlvbnNcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZlcnNpb25zKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCh7XG4gICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICBsb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdGFibGVMb2NhbGVzOiBhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9LmAsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHRhYkhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiB0YWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiByb3dIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBmaWVsZC5yZWxhdGlvblRvLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbnNoaXBzLmFkZChyZWxhdGlvbikpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwcy5hZGQoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGZpZWxkLmFkbWluICYmIGZpZWxkLmFkbWluLmNvbmRpdGlvblxuXG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVOb3ROdWxsICYmXG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmXG4gICAgICAncmVxdWlyZWQnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCAmJlxuICAgICAgIWNvbmRpdGlvblxuICAgICkge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTWFueVRleHRGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJjb2x1bW5QcmVmaXgiLCJjb2x1bW5zIiwiZGlzYWJsZU5vdE51bGwiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJ2ZXJzaW9ucyIsInRocm93VmFsaWRhdGlvbkVycm9yIiwiaGFzTG9jYWxpemVkRmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlUZXh0RmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicGFyZW50SURDb2xUeXBlIiwiaWQiLCJQZ1VVSURCdWlsZGVyIiwiUGdOdW1lcmljQnVpbGRlciIsIlBnVmFyY2hhckJ1aWxkZXIiLCJmb3JFYWNoIiwiZmllbGQiLCJuYW1lIiwiY29sdW1uTmFtZSIsImZpZWxkTmFtZSIsInRhcmdldFRhYmxlIiwidGFyZ2V0SW5kZXhlcyIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0b1NuYWtlQ2FzZSIsInJlcGxhY2UiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibG9jYWxpemVkIiwidW5pcXVlIiwiaW5kZXgiLCJpbmNsdWRlcyIsInR5cGUiLCJoYXNNYW55IiwiY29uc3RyYWludFZhbHVlIiwiZmllbGRDb25zdHJhaW50cyIsImNyZWF0ZUluZGV4IiwidGFibGVOYW1lIiwiSW52YWxpZENvbmZpZ3VyYXRpb24iLCJ2YXJjaGFyIiwibnVtZXJpYyIsImpzb25iIiwidGltZXN0YW1wIiwibW9kZSIsInByZWNpc2lvbiIsIndpdGhUaW1lem9uZSIsImVudW1OYW1lIiwiY3JlYXRlVGFibGVOYW1lIiwicHJlZml4IiwidGFyZ2V0IiwiZW51bXMiLCJwZ0VudW0iLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwib3B0aW9uSXNPYmplY3QiLCJ2YWx1ZSIsInNlbGVjdFRhYmxlTmFtZSIsImJhc2VDb2x1bW5zIiwib3JkZXIiLCJpbnRlZ2VyIiwibm90TnVsbCIsInBhcmVudCIsInBhcmVudElEQ29sdW1uTWFwIiwiYmFzZUV4dHJhQ29uZmlnIiwib3JkZXJJZHgiLCJjb2xzIiwib24iLCJwYXJlbnRGayIsImZvcmVpZ25LZXkiLCJmb3JlaWduQ29sdW1ucyIsInRhYmxlcyIsIm9uRGVsZXRlIiwicGFyZW50SWR4IiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsImxvY2FsZUlkeCIsImJ1aWxkVGFibGUiLCJzZXQiLCJzZWxlY3RUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInJlc3VsdCIsInJlZmVyZW5jZXMiLCJib29sZWFuIiwiZGlzYWJsZU5vdE51bGxGcm9tSGVyZSIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImFycmF5VGFibGVOYW1lIiwidmVyc2lvbnNDdXN0b21OYW1lIiwiX29yZGVyIiwiX3BhcmVudElEIiwiX29yZGVySWR4IiwiX3BhcmVudElERmsiLCJfcGFyZW50SURJZHgiLCJfbG9jYWxlIiwiX2xvY2FsZUlkeCIsInN1Ykhhc01hbnlOdW1iZXJGaWVsZCIsInN1Ykhhc01hbnlUZXh0RmllbGQiLCJzdWJSZWxhdGlvbnNUb0J1aWxkIiwiaWRUb1VVSUQiLCJyb290UmVsYXRpb25zaGlwcyIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJsb2NhbGVzU3VmZml4IiwidmFsIiwia2V5IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja1RhYmxlTmFtZSIsIl9wYXRoIiwidGV4dCIsIl9wYXJlbnRJZEZrIiwiX3BhdGhJZHgiLCJibG9ja1RhYmxlUmVsYXRpb25zIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwidmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwiLCJ0YWJsZSIsInRhYmxlTG9jYWxlcyIsInNsdWciLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc01hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYkhhc01hbnlUZXh0RmllbGQiLCJ0YWJzIiwidGFiIiwicm93SGFzTG9jYWxpemVkRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNNYW55VGV4dEZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwicmVxdWlyZWQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7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
|
595
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgVGFiQXNGaWVsZCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHJlbGF0aW9ucyB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuaW1wb3J0IHtcbiAgUGdOdW1lcmljQnVpbGRlcixcbiAgUGdVVUlEQnVpbGRlcixcbiAgUGdWYXJjaGFyQnVpbGRlcixcbiAgYm9vbGVhbixcbiAgZm9yZWlnbktleSxcbiAgaW5kZXgsXG4gIGludGVnZXIsXG4gIGpzb25iLFxuICBudW1lcmljLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIElEVHlwZSwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJhc2VFeHRyYUNvbmZpZyB9IGZyb20gJy4vYnVpbGQnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IGNyZWF0ZVRhYmxlTmFtZSB9IGZyb20gJy4vY3JlYXRlVGFibGVOYW1lJ1xuaW1wb3J0IHsgaWRUb1VVSUQgfSBmcm9tICcuL2lkVG9VVUlEJ1xuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwgfSBmcm9tICcuL3ZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBidWlsZE51bWJlcnM6IGJvb2xlYW5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGJ1aWxkVGV4dHM6IGJvb2xlYW5cbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgZGlzYWJsZU5vdE51bGw6IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZT86IGJvb2xlYW5cbiAgZmllbGRQcmVmaXg/OiBzdHJpbmdcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGZvcmNlTG9jYWxpemVkPzogYm9vbGVhblxuICBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuICBwYXJlbnRUYWJsZU5hbWU6IHN0cmluZ1xuICByZWxhdGlvbnNUb0J1aWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkPzogTWFwPHN0cmluZywgc3RyaW5nPlxuICByb290VGFibGVJRENvbFR5cGU6IHN0cmluZ1xuICByb290VGFibGVOYW1lOiBzdHJpbmdcbiAgdmVyc2lvbnM6IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRyYWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHRhYmxlIGlzIGJ1aWx0XG4gICAqIGZyb20gdGhlIHJlc3VsdCBvZiBhIGxvY2FsaXplZCBhcnJheSBvciBibG9jayBmaWVsZCBhdCBzb21lIHBvaW50XG4gICAqL1xuICB3aXRoaW5Mb2NhbGl6ZWRBcnJheU9yQmxvY2s/OiBib29sZWFuXG59XG5cbnR5cGUgUmVzdWx0ID0ge1xuICBoYXNMb2NhbGl6ZWRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogYm9vbGVhblxuICBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuXG4gIGhhc01hbnlUZXh0RmllbGQ6ICdpbmRleCcgfCBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJ1aWxkTnVtYmVycyxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBidWlsZFRleHRzLFxuICBjb2x1bW5QcmVmaXgsXG4gIGNvbHVtbnMsXG4gIGRpc2FibGVOb3ROdWxsLFxuICBkaXNhYmxlVW5pcXVlID0gZmFsc2UsXG4gIGZpZWxkUHJlZml4LFxuICBmaWVsZHMsXG4gIGZvcmNlTG9jYWxpemVkLFxuICBpbmRleGVzLFxuICBsb2NhbGVzQ29sdW1ucyxcbiAgbG9jYWxlc0luZGV4ZXMsXG4gIG5ld1RhYmxlTmFtZSxcbiAgcGFyZW50VGFibGVOYW1lLFxuICByZWxhdGlvbnNUb0J1aWxkLFxuICByZWxhdGlvbnNoaXBzLFxuICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICByb290VGFibGVOYW1lLFxuICB2ZXJzaW9ucyxcbiAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IHRocm93VmFsaWRhdGlvbkVycm9yID0gdHJ1ZVxuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZTogSURUeXBlID0gJ2ludGVnZXInXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdVVUlEQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ3V1aWQnXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdOdW1lcmljQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ251bWVyaWMnXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdWYXJjaGFyQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ3ZhcmNoYXInXG5cbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgaWYgKCduYW1lJyBpbiBmaWVsZCAmJiBmaWVsZC5uYW1lID09PSAnaWQnKSByZXR1cm5cbiAgICBsZXQgY29sdW1uTmFtZTogc3RyaW5nXG4gICAgbGV0IGZpZWxkTmFtZTogc3RyaW5nXG5cbiAgICBsZXQgdGFyZ2V0VGFibGUgPSBjb2x1bW5zXG4gICAgbGV0IHRhcmdldEluZGV4ZXMgPSBpbmRleGVzXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIGNvbHVtbk5hbWUgPSBgJHtjb2x1bW5QcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lWzBdID09PSAnXycgPyAnXycgOiAnJ30ke3RvU25ha2VDYXNlKFxuICAgICAgICBmaWVsZC5uYW1lLFxuICAgICAgKX1gXG4gICAgICBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeD8ucmVwbGFjZSgnLicsICdfJykgfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgLy8gSWYgZmllbGQgaXMgbG9jYWxpemVkLFxuICAgICAgLy8gYWRkIHRoZSBjb2x1bW4gdG8gdGhlIGxvY2FsZSB0YWJsZSBpbnN0ZWFkIG9mIG1haW4gdGFibGVcbiAgICAgIGlmIChhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJiAoZmllbGQubG9jYWxpemVkIHx8IGZvcmNlTG9jYWxpemVkKSkge1xuICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgdGFyZ2V0VGFibGUgPSBsb2NhbGVzQ29sdW1uc1xuICAgICAgICB0YXJnZXRJbmRleGVzID0gbG9jYWxlc0luZGV4ZXNcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoZmllbGQudW5pcXVlIHx8IGZpZWxkLmluZGV4KSAmJlxuICAgICAgICAhWydhcnJheScsICdibG9ja3MnLCAnZ3JvdXAnLCAncG9pbnQnLCAncmVsYXRpb25zaGlwJywgJ3VwbG9hZCddLmluY2x1ZGVzKGZpZWxkLnR5cGUpICYmXG4gICAgICAgICEoJ2hhc01hbnknIGluIGZpZWxkICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWVcbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLmZpZWxkQ29uc3RyYWludHM/Lltyb290VGFibGVOYW1lXSkge1xuICAgICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdID0ge31cbiAgICAgICAgICB9XG4gICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdW2Ake2NvbHVtbk5hbWV9X2lkeGBdID0gY29uc3RyYWludFZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtuZXdUYWJsZU5hbWV9XyR7ZmllbGQubmFtZX1JZHhgXSA9IGNyZWF0ZUluZGV4KHtcbiAgICAgICAgICBuYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB1bmlxdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxpemVkID1cbiAgICAgICAgICAgIEJvb2xlYW4oZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB8fFxuICAgICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrXG5cbiAgICAgICAgICBpZiAoaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgdGV4dCBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxpemVkID1cbiAgICAgICAgICAgIEJvb2xlYW4oZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB8fFxuICAgICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrIHx8XG4gICAgICAgICAgICBmb3JjZUxvY2FsaXplZFxuXG4gICAgICAgICAgaWYgKGlzTG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHByZWZpeDogYGVudW1fJHtuZXdUYWJsZU5hbWV9X2AsXG4gICAgICAgICAgdGFyZ2V0OiAnZW51bU5hbWUnLFxuICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yLFxuICAgICAgICB9KVxuXG4gICAgICAgIGFkYXB0ZXIuZW51bXNbZW51bU5hbWVdID0gYWRhcHRlci5wZ1NjaGVtYS5lbnVtKFxuICAgICAgICAgIGVudW1OYW1lLFxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25Jc09iamVjdChvcHRpb24pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgICAgIH0pIGFzIFtzdHJpbmcsIC4uLnN0cmluZ1tdXSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgICBwcmVmaXg6IGAke25ld1RhYmxlTmFtZX1fYCxcbiAgICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ3BhcmVudF9pZCcpLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IEJhc2VFeHRyYUNvbmZpZyA9IHtcbiAgICAgICAgICAgIG9yZGVySWR4OiAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9vcmRlcl9pZHhgKS5vbihjb2xzLm9yZGVyKSxcbiAgICAgICAgICAgIHBhcmVudEZrOiAoY29scykgPT5cbiAgICAgICAgICAgICAgZm9yZWlnbktleSh7XG4gICAgICAgICAgICAgICAgbmFtZTogYCR7c2VsZWN0VGFibGVOYW1lfV9wYXJlbnRfZmtgLFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xzLnBhcmVudF0sXG4gICAgICAgICAgICAgICAgZm9yZWlnbkNvbHVtbnM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSkub25EZWxldGUoJ2Nhc2NhZGUnKSxcbiAgICAgICAgICAgIHBhcmVudElkeDogKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fcGFyZW50X2lkeGApLm9uKGNvbHMucGFyZW50KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc0xvY2FsaXplZCA9XG4gICAgICAgICAgICBCb29sZWFuKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikgfHxcbiAgICAgICAgICAgIHdpdGhpbkxvY2FsaXplZEFycmF5T3JCbG9jayB8fFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWRcblxuICAgICAgICAgIGlmIChpc0xvY2FsaXplZCkge1xuICAgICAgICAgICAgYmFzZUNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV92YWx1ZV9pZHhgKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgc2VsZWN0VGFibGVOYW1lKVxuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICAgIHBhcmVudDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1tzZWxlY3RUYWJsZU5hbWVdLnBhcmVudF0sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25fJHtzZWxlY3RUYWJsZU5hbWV9YF0gPSBzZWxlY3RUYWJsZVJlbGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBhZGFwdGVyLmVudW1zW2VudW1OYW1lXShmaWVsZE5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBib29sZWFuKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IGFycmF5VGFibGVOYW1lID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbmZpZzogZmllbGQsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcHJlZml4OiBgJHtuZXdUYWJsZU5hbWV9X2AsXG4gICAgICAgICAgdGhyb3dWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgICAgdmVyc2lvbnNDdXN0b21OYW1lOiB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IEJhc2VFeHRyYUNvbmZpZyA9IHtcbiAgICAgICAgICBfb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgIF9wYXJlbnRJREZrOiAoY29scykgPT5cbiAgICAgICAgICAgIGZvcmVpZ25LZXkoe1xuICAgICAgICAgICAgICBuYW1lOiBgJHthcnJheVRhYmxlTmFtZX1fcGFyZW50X2lkX2ZrYCxcbiAgICAgICAgICAgICAgY29sdW1uczogW2NvbHNbJ19wYXJlbnRJRCddXSxcbiAgICAgICAgICAgICAgZm9yZWlnbkNvbHVtbnM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0xvY2FsaXplZCA9XG4gICAgICAgICAgQm9vbGVhbihmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHx8XG4gICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrIHx8XG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWRcblxuICAgICAgICBpZiAoaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgIGluZGV4KGAke2FycmF5VGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5fbG9jYWxlKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogc3ViSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IHN1Ykhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHN1Ykhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogc3ViSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHN1Ykhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRzOiBkaXNhYmxlVW5pcXVlID8gaWRUb1VVSUQoZmllbGQuZmllbGRzKSA6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290UmVsYXRpb25zaGlwczogcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgIHdpdGhpbkxvY2FsaXplZEFycmF5T3JCbG9jazogaXNMb2NhbGl6ZWQsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHN1Ykhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Ykhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBzdWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Ykhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gc3ViSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICBpZiAoIWhhc01hbnlUZXh0RmllbGQgfHwgc3ViSGFzTWFueVRleHRGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueU51bWJlckZpZWxkIHx8IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBibG9jayxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHByZWZpeDogYCR7cm9vdFRhYmxlTmFtZX1fYmxvY2tzX2AsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgICAgIHZlcnNpb25zQ3VzdG9tTmFtZTogdmVyc2lvbnMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICAgIF9wYXRoOiB0ZXh0KCdfcGF0aCcpLm5vdE51bGwoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBCYXNlRXh0cmFDb25maWcgPSB7XG4gICAgICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9vcmRlcl9pZHhgKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9wYXJlbnRfaWRfaWR4YCkub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBfcGFyZW50SWRGazogKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgZm9yZWlnbktleSh7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHtibG9ja1RhYmxlTmFtZX1fcGFyZW50X2lkX2ZrYCxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xzLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICBmb3JlaWduQ29sdW1uczogW2FkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgICB9KS5vbkRlbGV0ZSgnY2FzY2FkZScpLFxuICAgICAgICAgICAgICBfcGF0aElkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9wYXRoX2lkeGApLm9uKGNvbHMuX3BhdGgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0xvY2FsaXplZCA9XG4gICAgICAgICAgICAgIEJvb2xlYW4oZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB8fFxuICAgICAgICAgICAgICB3aXRoaW5Mb2NhbGl6ZWRBcnJheU9yQmxvY2sgfHxcbiAgICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWRcblxuICAgICAgICAgICAgaWYgKGlzTG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMuX2xvY2FsZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogc3ViSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHN1Ykhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICAgIGZpZWxkczogZGlzYWJsZVVuaXF1ZSA/IGlkVG9VVUlEKGJsb2NrLmZpZWxkcykgOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zaGlwczogcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IGJsb2NrVGFibGVOYW1lLFxuICAgICAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrOiBpc0xvY2FsaXplZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gc3ViSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkge1xuICAgICAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHN1Ykhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSBzdWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KFxuICAgICAgICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YmxvY2tUYWJsZU5hbWV9YF0gPSBibG9ja1RhYmxlUmVsYXRpb25zXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2ZXJzaW9ucykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHRhYmxlTG9jYWxlczogYWRhcHRlci50YWJsZXNbYCR7YmxvY2tUYWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZC5zZXQoYF9ibG9ja3NfJHtibG9jay5zbHVnfWAsIGJsb2NrVGFibGVOYW1lKVxuICAgICAgICB9KVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYic6XG4gICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgaWYgKCEoJ25hbWUnIGluIGZpZWxkKSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiBncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZE51bWJlcnMsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgICB3aXRoaW5Mb2NhbGl6ZWRBcnJheU9yQmxvY2s6IHdpdGhpbkxvY2FsaXplZEFycmF5T3JCbG9jayB8fCBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFicyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IHRhYkhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IHRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogdGFiSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHRhYkhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZE51bWJlcnMsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiByb3dIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgICB3aXRoaW5Mb2NhbGl6ZWRBcnJheU9yQmxvY2ssXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgZmllbGQucmVsYXRpb25Uby5mb3JFYWNoKChyZWxhdGlvbikgPT4gcmVsYXRpb25zaGlwcy5hZGQocmVsYXRpb24pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbGF0aW9uc2hpcHMuYWRkKGZpZWxkLnJlbGF0aW9uVG8pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgQm9vbGVhbihmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHx8XG4gICAgICAgICAgd2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrXG4gICAgICAgICkge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAoXG4gICAgICAhZGlzYWJsZU5vdE51bGwgJiZcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gJiZcbiAgICAgICdyZXF1aXJlZCcgaW4gZmllbGQgJiZcbiAgICAgIGZpZWxkLnJlcXVpcmVkICYmXG4gICAgICAhY29uZGl0aW9uXG4gICAgKSB7XG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdLm5vdE51bGwoKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGhhc0xvY2FsaXplZEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNNYW55VGV4dEZpZWxkLFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJhZGFwdGVyIiwiYnVpbGROdW1iZXJzIiwiYnVpbGRSZWxhdGlvbnNoaXBzIiwiYnVpbGRUZXh0cyIsImNvbHVtblByZWZpeCIsImNvbHVtbnMiLCJkaXNhYmxlTm90TnVsbCIsImRpc2FibGVVbmlxdWUiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlTG9jYWxpemVkIiwiaW5kZXhlcyIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJyZWxhdGlvbnNUb0J1aWxkIiwicmVsYXRpb25zaGlwcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsInZlcnNpb25zIiwid2l0aGluTG9jYWxpemVkQXJyYXlPckJsb2NrIiwidGhyb3dWYWxpZGF0aW9uRXJyb3IiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnVVVJREJ1aWxkZXIiLCJQZ051bWVyaWNCdWlsZGVyIiwiUGdWYXJjaGFyQnVpbGRlciIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJjb2x1bW5OYW1lIiwiZmllbGROYW1lIiwidGFyZ2V0VGFibGUiLCJ0YXJnZXRJbmRleGVzIiwiZmllbGRBZmZlY3RzRGF0YSIsInRvU25ha2VDYXNlIiwicmVwbGFjZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJsb2NhbGl6ZWQiLCJ1bmlxdWUiLCJpbmRleCIsImluY2x1ZGVzIiwidHlwZSIsImhhc01hbnkiLCJjb25zdHJhaW50VmFsdWUiLCJmaWVsZENvbnN0cmFpbnRzIiwiY3JlYXRlSW5kZXgiLCJ0YWJsZU5hbWUiLCJpc0xvY2FsaXplZCIsIkJvb2xlYW4iLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsInZhcmNoYXIiLCJudW1lcmljIiwianNvbmIiLCJ0aW1lc3RhbXAiLCJtb2RlIiwicHJlY2lzaW9uIiwid2l0aFRpbWV6b25lIiwiZW51bU5hbWUiLCJjcmVhdGVUYWJsZU5hbWUiLCJwcmVmaXgiLCJ0YXJnZXQiLCJlbnVtcyIsInBnU2NoZW1hIiwiZW51bSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJvcHRpb25Jc09iamVjdCIsInZhbHVlIiwic2VsZWN0VGFibGVOYW1lIiwiYmFzZUNvbHVtbnMiLCJvcmRlciIsImludGVnZXIiLCJub3ROdWxsIiwicGFyZW50IiwicGFyZW50SURDb2x1bW5NYXAiLCJiYXNlRXh0cmFDb25maWciLCJvcmRlcklkeCIsImNvbHMiLCJvbiIsInBhcmVudEZrIiwiZm9yZWlnbktleSIsImZvcmVpZ25Db2x1bW5zIiwidGFibGVzIiwib25EZWxldGUiLCJwYXJlbnRJZHgiLCJsb2NhbGUiLCJlbnVtX19sb2NhbGVzIiwibG9jYWxlSWR4IiwiYnVpbGRUYWJsZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwicmVmZXJlbmNlcyIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiYWRtaW4iLCJjb25kaXRpb24iLCJhcnJheVRhYmxlTmFtZSIsInZlcnNpb25zQ3VzdG9tTmFtZSIsIl9vcmRlciIsIl9wYXJlbnRJRCIsIl9vcmRlcklkeCIsIl9wYXJlbnRJREZrIiwiX3BhcmVudElESWR4IiwiX2xvY2FsZSIsIl9sb2NhbGVJZHgiLCJzdWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJzdWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwic3ViSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJzdWJIYXNNYW55TnVtYmVyRmllbGQiLCJzdWJIYXNNYW55VGV4dEZpZWxkIiwic3ViUmVsYXRpb25zVG9CdWlsZCIsImlkVG9VVUlEIiwicm9vdFJlbGF0aW9uc2hpcHMiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwibG9jYWxlc1N1ZmZpeCIsInZhbCIsImtleSIsImJsb2NrcyIsImJsb2NrIiwiYmxvY2tUYWJsZU5hbWUiLCJfcGF0aCIsInRleHQiLCJfcGFyZW50SWRGayIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJ0YWJsZUxvY2FsZXMiLCJzbHVnIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNNYW55VGV4dEZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwidGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJ0YWJIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNNYW55VGV4dEZpZWxkIiwidGFicyIsInRhYiIsInJvd0hhc0xvY2FsaXplZEZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwicm93SGFzTWFueVRleHRGaWVsZCIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJyZWxhdGlvbiIsImFkZCIsInJlcXVpcmVkIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
@@ -4,7 +4,8 @@ type Args = {
|
|
4
4
|
locale?: string;
|
5
5
|
numberRows: Record<string, unknown>[];
|
6
6
|
ref: Record<string, unknown>;
|
7
|
+
withinArrayOrBlockLocale?: string;
|
7
8
|
};
|
8
|
-
export declare const transformHasManyNumber: ({ field, locale, numberRows, ref }: Args) => void;
|
9
|
+
export declare const transformHasManyNumber: ({ field, locale, numberRows, ref, withinArrayOrBlockLocale, }: Args) => void;
|
9
10
|
export {};
|
10
11
|
//# sourceMappingURL=hasManyNumber.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,sBAAsB,kEAMhC,IAAI,SAoBN,CAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
3
3
|
value: true
|
4
4
|
});
|
@@ -8,8 +8,18 @@ Object.defineProperty(exports, "transformHasManyNumber", {
|
|
8
8
|
return transformHasManyNumber;
|
9
9
|
}
|
10
10
|
});
|
11
|
-
const transformHasManyNumber = ({ field, locale, numberRows, ref })=>{
|
12
|
-
|
11
|
+
const transformHasManyNumber = ({ field, locale, numberRows, ref, withinArrayOrBlockLocale })=>{
|
12
|
+
let result;
|
13
|
+
if (withinArrayOrBlockLocale) {
|
14
|
+
result = numberRows.reduce((acc, { locale, number })=>{
|
15
|
+
if (locale === withinArrayOrBlockLocale) {
|
16
|
+
acc.push(number);
|
17
|
+
}
|
18
|
+
return acc;
|
19
|
+
}, []);
|
20
|
+
} else {
|
21
|
+
result = numberRows.map(({ number })=>number);
|
22
|
+
}
|
13
23
|
if (locale) {
|
14
24
|
ref[field.name][locale] = result;
|
15
25
|
} else {
|
@@ -17,4 +27,4 @@ const transformHasManyNumber = ({ field, locale, numberRows, ref })=>{
|
|
17
27
|
}
|
18
28
|
};
|
19
29
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55TnVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTnVtYmVyRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGZpZWxkOiBOdW1iZXJGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgbnVtYmVyUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICByZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZT86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtSGFzTWFueU51bWJlciA9ICh7XG4gIGZpZWxkLFxuICBsb2NhbGUsXG4gIG51bWJlclJvd3MsXG4gIHJlZixcbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxufTogQXJncykgPT4ge1xuICBsZXQgcmVzdWx0OiB1bmtub3duW11cblxuICBpZiAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKSB7XG4gICAgcmVzdWx0ID0gbnVtYmVyUm93cy5yZWR1Y2UoKGFjYywgeyBsb2NhbGUsIG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAobG9jYWxlID09PSB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUpIHtcbiAgICAgICAgYWNjLnB1c2gobnVtYmVyKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgW10pXG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gbnVtYmVyUm93cy5tYXAoKHsgbnVtYmVyIH0pID0+IG51bWJlcilcbiAgfVxuXG4gIGlmIChsb2NhbGUpIHtcbiAgICByZWZbZmllbGQubmFtZV1bbG9jYWxlXSA9IHJlc3VsdFxuICB9IGVsc2Uge1xuICAgIHJlZltmaWVsZC5uYW1lXSA9IHJlc3VsdFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtSGFzTWFueU51bWJlciIsImZpZWxkIiwibG9jYWxlIiwibnVtYmVyUm93cyIsInJlZiIsIndpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSIsInJlc3VsdCIsInJlZHVjZSIsImFjYyIsIm51bWJlciIsInB1c2giLCJtYXAiLCJuYW1lIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFVYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQXlCLENBQUMsRUFDckNDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxVQUFVLEVBQ1ZDLEdBQUcsRUFDSEMsd0JBQXdCLEVBQ25CO0lBQ0wsSUFBSUM7SUFFSixJQUFJRCwwQkFBMEI7UUFDNUJDLFNBQVNILFdBQVdJLE1BQU0sQ0FBQyxDQUFDQyxLQUFLLEVBQUVOLE1BQU0sRUFBRU8sTUFBTSxFQUFFO1lBQ2pELElBQUlQLFdBQVdHLDBCQUEwQjtnQkFDdkNHLElBQUlFLElBQUksQ0FBQ0Q7WUFDWDtZQUVBLE9BQU9EO1FBQ1QsR0FBRyxFQUFFO0lBQ1AsT0FBTztRQUNMRixTQUFTSCxXQUFXUSxHQUFHLENBQUMsQ0FBQyxFQUFFRixNQUFNLEVBQUUsR0FBS0E7SUFDMUM7SUFFQSxJQUFJUCxRQUFRO1FBQ1ZFLEdBQUcsQ0FBQ0gsTUFBTVcsSUFBSSxDQUFDLENBQUNWLE9BQU8sR0FBR0k7SUFDNUIsT0FBTztRQUNMRixHQUFHLENBQUNILE1BQU1XLElBQUksQ0FBQyxHQUFHTjtJQUNwQjtBQUNGIn0=
|
@@ -4,7 +4,8 @@ type Args = {
|
|
4
4
|
locale?: string;
|
5
5
|
ref: Record<string, unknown>;
|
6
6
|
textRows: Record<string, unknown>[];
|
7
|
+
withinArrayOrBlockLocale?: string;
|
7
8
|
};
|
8
|
-
export declare const transformHasManyText: ({ field, locale, ref, textRows }: Args) => void;
|
9
|
+
export declare const transformHasManyText: ({ field, locale, ref, textRows, withinArrayOrBlockLocale, }: Args) => void;
|
9
10
|
export {};
|
10
11
|
//# sourceMappingURL=hasManyText.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,gEAM9B,IAAI,SAoBN,CAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
3
3
|
value: true
|
4
4
|
});
|
@@ -8,8 +8,18 @@ Object.defineProperty(exports, "transformHasManyText", {
|
|
8
8
|
return transformHasManyText;
|
9
9
|
}
|
10
10
|
});
|
11
|
-
const transformHasManyText = ({ field, locale, ref, textRows })=>{
|
12
|
-
|
11
|
+
const transformHasManyText = ({ field, locale, ref, textRows, withinArrayOrBlockLocale })=>{
|
12
|
+
let result;
|
13
|
+
if (withinArrayOrBlockLocale) {
|
14
|
+
result = textRows.reduce((acc, { locale, text })=>{
|
15
|
+
if (locale === withinArrayOrBlockLocale) {
|
16
|
+
acc.push(text);
|
17
|
+
}
|
18
|
+
return acc;
|
19
|
+
}, []);
|
20
|
+
} else {
|
21
|
+
result = textRows.map(({ text })=>text);
|
22
|
+
}
|
13
23
|
if (locale) {
|
14
24
|
ref[field.name][locale] = result;
|
15
25
|
} else {
|
@@ -17,4 +27,4 @@ const transformHasManyText = ({ field, locale, ref, textRows })=>{
|
|
17
27
|
}
|
18
28
|
};
|
19
29
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55VGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRleHRGaWVsZCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbnR5cGUgQXJncyA9IHtcbiAgZmllbGQ6IFRleHRGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB0ZXh0Um93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUhhc01hbnlUZXh0ID0gKHtcbiAgZmllbGQsXG4gIGxvY2FsZSxcbiAgcmVmLFxuICB0ZXh0Um93cyxcbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxufTogQXJncykgPT4ge1xuICBsZXQgcmVzdWx0OiB1bmtub3duW11cblxuICBpZiAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKSB7XG4gICAgcmVzdWx0ID0gdGV4dFJvd3MucmVkdWNlKChhY2MsIHsgbG9jYWxlLCB0ZXh0IH0pID0+IHtcbiAgICAgIGlmIChsb2NhbGUgPT09IHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSkge1xuICAgICAgICBhY2MucHVzaCh0ZXh0KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgW10pXG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gdGV4dFJvd3MubWFwKCh7IHRleHQgfSkgPT4gdGV4dClcbiAgfVxuXG4gIGlmIChsb2NhbGUpIHtcbiAgICByZWZbZmllbGQubmFtZV1bbG9jYWxlXSA9IHJlc3VsdFxuICB9IGVsc2Uge1xuICAgIHJlZltmaWVsZC5uYW1lXSA9IHJlc3VsdFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtSGFzTWFueVRleHQiLCJmaWVsZCIsImxvY2FsZSIsInJlZiIsInRleHRSb3dzIiwid2l0aGluQXJyYXlPckJsb2NrTG9jYWxlIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjIiwidGV4dCIsInB1c2giLCJtYXAiLCJuYW1lIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFVYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsdUJBQXVCLENBQUMsRUFDbkNDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxHQUFHLEVBQ0hDLFFBQVEsRUFDUkMsd0JBQXdCLEVBQ25CO0lBQ0wsSUFBSUM7SUFFSixJQUFJRCwwQkFBMEI7UUFDNUJDLFNBQVNGLFNBQVNHLE1BQU0sQ0FBQyxDQUFDQyxLQUFLLEVBQUVOLE1BQU0sRUFBRU8sSUFBSSxFQUFFO1lBQzdDLElBQUlQLFdBQVdHLDBCQUEwQjtnQkFDdkNHLElBQUlFLElBQUksQ0FBQ0Q7WUFDWDtZQUVBLE9BQU9EO1FBQ1QsR0FBRyxFQUFFO0lBQ1AsT0FBTztRQUNMRixTQUFTRixTQUFTTyxHQUFHLENBQUMsQ0FBQyxFQUFFRixJQUFJLEVBQUUsR0FBS0E7SUFDdEM7SUFFQSxJQUFJUCxRQUFRO1FBQ1ZDLEdBQUcsQ0FBQ0YsTUFBTVcsSUFBSSxDQUFDLENBQUNWLE9BQU8sR0FBR0k7SUFDNUIsT0FBTztRQUNMSCxHQUFHLENBQUNGLE1BQU1XLElBQUksQ0FBQyxHQUFHTjtJQUNwQjtBQUNGIn0=
|
@@ -4,7 +4,8 @@ type Args = {
|
|
4
4
|
locale?: string;
|
5
5
|
ref: Record<string, unknown>;
|
6
6
|
relations: Record<string, unknown>[];
|
7
|
+
withinArrayOrBlockLocale?: string;
|
7
8
|
};
|
8
|
-
export declare const transformRelationship: ({ field, locale, ref, relations }: Args) => void;
|
9
|
+
export declare const transformRelationship: ({ field, locale, ref, relations, withinArrayOrBlockLocale, }: Args) => void;
|
9
10
|
export {};
|
10
11
|
//# sourceMappingURL=relationship.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnE,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;
|
1
|
+
{"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnE,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,qBAAqB,iEAM/B,IAAI,SA4EN,CAAA"}
|