@qbs-origin/origin-form 0.8.2 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/action-step-handler.mjs +7 -3
- package/esm2022/lib/enums/label.keys.mjs +2 -1
- package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +3 -1
- package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +16 -2
- package/esm2022/lib/model-population.helper.mjs +115 -3
- package/esm2022/lib/models/application.model.mjs +1 -1
- package/esm2022/lib/models/flux.model.mjs +2 -2
- package/esm2022/lib/models/forms.model.mjs +36 -22
- package/esm2022/lib/origin-form.component.mjs +236 -141
- package/esm2022/lib/others/flux-helper.mjs +31 -1
- package/esm2022/lib/others/translations-helper.mjs +7 -1
- package/esm2022/lib/services/applicationData.service.mjs +15 -8
- package/fesm2022/qbs-origin-origin-form.mjs +456 -171
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -1
- package/lib/enums/label.keys.d.ts +1 -0
- package/lib/formly/formly-enrol-card/formly-enrol-card.component.d.ts +1 -0
- package/lib/formly/formly-paragraph/formly-paragraph.component.d.ts +1 -0
- package/lib/models/application.model.d.ts +3 -3
- package/lib/models/forms.model.d.ts +14 -2
- package/lib/origin-form.component.d.ts +6 -2
- package/lib/others/flux-helper.d.ts +1 -0
- package/lib/others/translations-helper.d.ts +1 -0
- package/lib/services/applicationData.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -726,6 +726,34 @@ export class FluxHelper {
|
|
|
726
726
|
step.sections = [section];
|
|
727
727
|
return step;
|
|
728
728
|
}
|
|
729
|
+
createValidationStep(supportedLanguages) {
|
|
730
|
+
const step = {
|
|
731
|
+
identifier: this.generateUniqueId('step'),
|
|
732
|
+
name: this.translate.transform(LabelKeys.flux.validation),
|
|
733
|
+
type: FluxType.Validation,
|
|
734
|
+
sections: [],
|
|
735
|
+
isVisible: true,
|
|
736
|
+
config: {
|
|
737
|
+
comparisons: [],
|
|
738
|
+
dictionaryUUID: '',
|
|
739
|
+
trueValueId: null,
|
|
740
|
+
falseValueId: null,
|
|
741
|
+
},
|
|
742
|
+
translations: TranslationsHelper.createValidationTranslations(supportedLanguages),
|
|
743
|
+
panelOpenState: true,
|
|
744
|
+
buttons: [],
|
|
745
|
+
dependentDictionary: {
|
|
746
|
+
isDictionaryDependent: false,
|
|
747
|
+
dictionaryControlIdentifier: '',
|
|
748
|
+
dependentValueIds: [],
|
|
749
|
+
},
|
|
750
|
+
errorsTranslations: [],
|
|
751
|
+
hasNameAndDescription: true,
|
|
752
|
+
canDepend: true,
|
|
753
|
+
collapsed: false,
|
|
754
|
+
};
|
|
755
|
+
return step;
|
|
756
|
+
}
|
|
729
757
|
/**
|
|
730
758
|
* Create Upload Document step
|
|
731
759
|
*/
|
|
@@ -1366,6 +1394,8 @@ export class FluxHelper {
|
|
|
1366
1394
|
return this.createEuplatescStep(supportedLanguages);
|
|
1367
1395
|
case FluxType.OpenBanking:
|
|
1368
1396
|
return this.createOpenBankingStep(supportedLanguages);
|
|
1397
|
+
case FluxType.Validation:
|
|
1398
|
+
return this.createValidationStep(supportedLanguages);
|
|
1369
1399
|
default:
|
|
1370
1400
|
console.error(`Unsupported FluxType: ${type}`);
|
|
1371
1401
|
return null;
|
|
@@ -1394,4 +1424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1394
1424
|
providedIn: 'root',
|
|
1395
1425
|
}]
|
|
1396
1426
|
}], ctorParameters: () => [{ type: i1.TranslatePipe }] });
|
|
1397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1eC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL290aGVycy9mbHV4LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsV0FBVyxFQUVYLGFBQWEsR0FFZCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLM0QsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBb0IsU0FBd0I7UUFBeEIsY0FBUyxHQUFULFNBQVMsQ0FBZTtJQUFHLENBQUM7SUFFaEQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLG9DQUFvQztRQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNkJBQTZCLENBQ25DLGtCQUE4QixFQUM5QixNQUF3QztRQUV4QyxJQUFJLElBQUksR0FBZ0IsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FB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ZnJvbSAnLi4vbW9kZWxzL2xhbmd1YWdlLm1vZGVsJztcbmltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4uL21vZGVscy9sYWJlbC1pbmZvLm1vZGVsJztcbmltcG9ydCB7XG4gIEZsdXhUeXBlLFxuICBTdGVwQ29udHJvbFR5cGUsXG4gIE1hbnVhbElucHV0Q29udHJvbFR5cGUsXG4gIFNlY3Rpb25UeXBlLFxuICBBcHBEb2N1bWVudCxcbiAgRGltZW5zaW9uVHlwZSxcbiAgRm9ybU1vZGVsLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybXMubW9kZWwnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5waXBlJztcbmltcG9ydCB7IExhYmVsS2V5cyB9IGZyb20gJy4uL2VudW1zL2xhYmVsLmtleXMnO1xuaW1wb3J0IHsgQ29udHJvbERhdGEsIFN0ZXBEYXRhLCBTZWN0aW9uRGF0YSB9IGZyb20gJy4uL21vZGVscy9mbHV4Lm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0hlbHBlciB9IGZyb20gJy4vdHJhbnNsYXRpb25zLWhlbHBlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGbHV4SGVscGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVBpcGUpIHt9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHVuaXF1ZSBWMS1jb21wYXRpYmxlIGlkZW50aWZpZXJcbiAgICovXG4gIGdlbmVyYXRlVW5pcXVlSWQocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIE1hdGNoIEZsdXhWMSBwYXR0ZXJuOiBwcmVmaXhfVVVJRFxuICAgIGNvbnN0IHV1aWQgPSB1dWlkdjQoKTtcbiAgICByZXR1cm4gcHJlZml4ID8gdXVpZCA6IHV1aWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRyYW5zbGF0aW9ucyBvbmx5IGZvciBzdXBwb3J0ZWQgbGFuZ3VhZ2VzXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKFxuICAgIHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSxcbiAgICB2YWx1ZXM6IHsgaXNvOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdXG4gICk6IExhYmVsSW5mb1tdIHtcbiAgICBsZXQgbGlzdDogTGFiZWxJbmZvW10gPSBbXTtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgY29uc3QgbGFuZ0lkID0gc3VwcG9ydGVkTGFuZ3VhZ2VzLmZpbmQoKGxhbmcpID0+IGxhbmcuaXNvID09PSB2Lmlzbyk/LmlkO1xuICAgICAgaWYgKGxhbmdJZCAmJiBsYW5nSWQgPiAwKSB7XG4gICAgICAgIGxpc3QucHVzaCh7XG4gICAgICAgICAgbGFuZ3VhZ2VJZDogbGFuZ0lkLFxuICAgICAgICAgIGxhbmd1YWdlSXNvOiB2LmlzbyxcbiAgICAgICAgICB2YWx1ZTogdi52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbWFudWFsIGlucHV0IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlTWFudWFsSW5wdXRDb250cm9sKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZSxcbiAgICBpc01hbmRhdG9yeTogYm9vbGVhbiA9IHRydWUsXG4gICAgZGltZW5zaW9uOiBudW1iZXIgPSA1MFxuICApOiBDb250cm9sRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICB0aXRsZTogbmFtZSxcbiAgICAgIGNhbkVkaXQ6IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICBpc1ByZXNlbnRhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgaXNNYW5kYXRvcnk6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGRpbWVuc2lvbixcbiAgICAgIGRpbWVuc2lvblR5cGU6IERpbWVuc2lvblR5cGUuUGVyY2VudGFnZSxcbiAgICAgIGF1dG9EaW1lbnNpb246IGZhbHNlLFxuICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICB0eXBlLFxuICAgICAgICBpc01hbmRhdG9yeSxcbiAgICAgICAgYWxsb3dlZENoYXJhY3RlcnM6ICcnLFxuICAgICAgICBtYXhDaGFyYWN0ZXJzOiB0eXBlID09PSBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQgPyA1MCA6IHVuZGVmaW5lZCxcbiAgICAgICAgbWluVmFsdWU6IHR5cGUgPT09IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyA/IDAgOiB1bmRlZmluZWQsXG4gICAgICAgIG1heFZhbHVlOiB0eXBlID09PSBNYW51YWxJbnB1dENvbnRyb2xUeXBlLk51bWVyaWMgPyA5OTk5OTk5IDogdW5kZWZpbmVkLFxuICAgICAgICBhbGxvd09ubHlGdXR1cmU6IGZhbHNlLFxuICAgICAgICBhbGxvd09ubHlQYXN0OiBmYWxzZSxcbiAgICAgICAgaXNTaW1wbGVWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNBcGlWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcGFyYWdyYXBoIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlUGFyYWdyYXBoQ29udHJvbChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHNob3dWYWxpZGF0aW9uczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGlzTWFuZGF0b3J5OiBib29sZWFuID0gZmFsc2VcbiAgKTogQ29udHJvbERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgIHRpdGxlOiB0ZXh0LFxuICAgICAgY2FuRWRpdDogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgaXNNYW5kYXRvcnk6IGZhbHNlLFxuICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgZGltZW5zaW9uOiAxMDAsXG4gICAgICBkaW1lbnNpb25UeXBlOiBEaW1lbnNpb25UeXBlLlBlcmNlbnRhZ2UsXG4gICAgICBhdXRvRGltZW5zaW9uOiB0cnVlLFxuICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogW10sXG4gICAgICAgIHNob3dWYWxpZGF0aW9ucyxcbiAgICAgICAgaXNNYW5kYXRvcnksXG4gICAgICAgIGlzTWFuZGF0b3J5VHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJvdyBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU5ld1Jvd0NvbnRyb2woKTogQ29udHJvbERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ25ld3JvdycpLFxuICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgIHRpdGxlOiAnTmV3IFJvdycsXG4gICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBkaW1lbnNpb246IDEwMCxcbiAgICAgIGRpbWVuc2lvblR5cGU6IERpbWVuc2lvblR5cGUuUGVyY2VudGFnZSxcbiAgICAgIGF1dG9EaW1lbnNpb246IHRydWUsXG4gICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7fSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgS1lDIHN0ZXAgd2l0aCBhbGwgZGVmYXVsdCBzZWN0aW9uc1xuICAgKi9cbiAgY3JlYXRlS3ljU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcE5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguaWRlbnRpZmljYXRpb24pO1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKGAke3N0ZXBOYW1lfSAtIEtZQ2ApLFxuICAgICAgbmFtZTogc3RlcE5hbWUsXG4gICAgICB0eXBlOiBGbHV4VHlwZS5LeWMsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlS3ljVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIFNlY3Rpb24gMTogS1lDIFN0YXR1c1xuICAgIGNvbnN0IHN0YXR1c1NlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNTdGF0dXNUaXRsZSksXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLkNoZWNrQm94LFxuICAgICAgICAgIGlkZW50aWZpZXI6ICdJZGVudGl0eVZhbGlkYXRpb25TdGF0dXMnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oXG4gICAgICAgICAgICBMYWJlbEtleXMuZmx1eC5zdGVwSW5mby52YWxpZGF0aW9uU3RhdHVzXG4gICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgIF0sXG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNTdGF0dXNUaXRsZSlcbiAgICAgICksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIFNlY3Rpb24gMjogUGVyc29uYWwgSW5mb3JtYXRpb25cbiAgICBjb25zdCBwZXJzb25EYXRhID0gW1xuICAgICAgJ0NOUCcsXG4gICAgICAnSURTZXJpZXMnLFxuICAgICAgJ0lETnVtYmVyJyxcbiAgICAgICdGaXJzdE5hbWUnLFxuICAgICAgJ0xhc3ROYW1lJyxcbiAgICAgICdOYXRpb25hbGl0eScsXG4gICAgICAnSURFeHBpcmF0aW9uRGF0ZScsXG4gICAgICAnSURWYWxpZGl0eScsXG4gICAgICAnQWRkcmVzcycsXG4gICAgICAnUGxhY2VPZkJpcnRoJyxcbiAgICAgICdEYXRlT2ZCaXJ0aCcsXG4gICAgXTtcbiAgICBjb25zdCBwZXJzb25Db250cm9sczogQ29udHJvbERhdGFbXSA9IHBlcnNvbkRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6IHV1aWR2NCgpLFxuICAgICAgICB0aXRsZTogaXRlbSxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgQ29udHJvbERhdGE7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwZXJzb25hbFNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNQZXJzb25UaXRsZSksXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogcGVyc29uQ29udHJvbHMsXG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNQZXJzb25UaXRsZSlcbiAgICAgICksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIFNlY3Rpb24gMzogVmFsaWRhdGlvbiBEYXRhXG4gICAgY29uc3QgdmFsaWRhdGlvblNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguc3RlcEluZm8ua3ljVmFsaWRhdGlvblRpdGxlKVxuICAgICAgKSxcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oXG4gICAgICAgIExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y1ZhbGlkYXRpb25UaXRsZVxuICAgICAgKSxcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjYW5FZGl0OiB0cnVlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ0NsaWVudFBob25lTnVtYmVyJyxcbiAgICAgICAgICB0aXRsZTogJ0NsaWVudFBob25lTnVtYmVyJyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlBob25lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBjYW5FZGl0OiB0cnVlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ0lkU25hcHNob3QnLFxuICAgICAgICAgIHRpdGxlOiAnSWRTbmFwc2hvdCcsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBjYW5FZGl0OiB0cnVlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ0ZhY2VTbmFwc2hvdCcsXG4gICAgICAgICAgdGl0bGU6ICdGYWNlU25hcHNob3QnLFxuICAgICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIENvbnRyb2xEYXRhLFxuICAgICAgXSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgLy8gU2VjdGlvbiA0OiBBZGRyZXNzIEluZm9ybWF0aW9uXG4gICAgY29uc3QgYWRkcmVzc0RhdGEgPSBbXG4gICAgICAnRGlzdHJpY3ROYW1lJyxcbiAgICAgICdDaXR5TmFtZScsXG4gICAgICAnU3RyZWV0TmFtZScsXG4gICAgICAnU3RyZWV0Tm8nLFxuICAgICAgJ0ZsYXRObycsXG4gICAgICAnU3RhaXJObycsXG4gICAgICAnRmxvb3JObycsXG4gICAgICAnQXBhcnRtZW50Tm8nLFxuICAgIF07XG4gICAgY29uc3QgYWRkcmVzc0NvbnRyb2xzOiBDb250cm9sRGF0YVtdID0gYWRkcmVzc0RhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6IHV1aWR2NCgpLFxuICAgICAgICB0aXRsZTogaXRlbSxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgQ29udHJvbERhdGE7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhZGRyZXNzU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNBZGRyZXNzVGl0bGUpXG4gICAgICApLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNBZGRyZXNzVGl0bGUpLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IGFkZHJlc3NDb250cm9scyxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtcbiAgICAgIHN0YXR1c1NlY3Rpb24sXG4gICAgICBwZXJzb25hbFNlY3Rpb24sXG4gICAgICB2YWxpZGF0aW9uU2VjdGlvbixcbiAgICAgIGFkZHJlc3NTZWN0aW9uLFxuICAgIF07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEVtYWlsIFZlcmlmaWNhdGlvbiBzdGVwXG4gICAqL1xuICBjcmVhdGVDaGVja0VtYWlsU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC52ZXJpZnlFbWFpbCksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5FbWFpbCxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBjb2xsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBjb21wb25lbnRDb2xsZWN0ZWQ6ICcnLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZUNoZWNrRW1haWxUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGVtYWlsIHZlcmlmaWNhdGlvbiBzZWN0aW9uXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiBgU2lzdGVtIC0gRW1haWxfJHt0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpfWAsXG4gICAgICB0aXRsZTogJ1Npc3RlbSAtIEVtYWlsJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjYW5FZGl0OiB0cnVlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ3ZhbGlkYXRlZC1lbWFpbCcsXG4gICAgICAgICAgdGl0bGU6ICdFbWFpbCBWYWxpZCcsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5FbWFpbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIENvbnRyb2xEYXRhLFxuICAgICAgXSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUGhvbmUgVmVyaWZpY2F0aW9uIHN0ZXBcbiAgICovXG4gIGNyZWF0ZUNoZWNrUGhvbmVTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnZlcmlmeVBob25lKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLlBob25lLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGNvbGxlY3RlZDogZmFsc2UsXG4gICAgICAgIGNvbXBvbmVudENvbGxlY3RlZDogJycsXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlQ2hlY2tQaG9uZVRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgcGhvbmUgdmVyaWZpY2F0aW9uIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IGBTaXN0ZW0gLSBUZWxfJHt0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpfWAsXG4gICAgICB0aXRsZTogJ1Npc3RlbSAtIFRlbCcsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2FuRWRpdDogdHJ1ZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICAgIGlkZW50aWZpZXI6ICd2YWxpZGF0ZWQtcGhvbmUnLFxuICAgICAgICAgIHRpdGxlOiAnTnIgdGVsIFZhbGlkJyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlBob25lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBJRCBTY2FuIHN0ZXBcbiAgICovXG4gIGNyZWF0ZVNjYW5TdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmlkU2NhbiksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5JZFNjYW4sXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgc2hvd1VwbG9hZEZpbGVCdXR0b246IHRydWUsXG4gICAgICAgIHNob3dUYWtlUGljdHVyZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgZmlsZU1heFNpemU6IDUwMDAsXG4gICAgICAgIGZpbGVGb3JtYXRzOiAnKi5qcGcsKi5wbmcnLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZUlkU2NhblRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29kZTogJ2ludmFsaWRTdGF0dXMnLFxuICAgICAgICAgIHRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChzdXBwb3J0ZWRMYW5ndWFnZXMsIFtcbiAgICAgICAgICAgIHsgaXNvOiAnZW4nLCB2YWx1ZTogJ0ludmFsaWQgc3RhdHVzIHJlc3BvbnNlJyB9LFxuICAgICAgICAgICAgeyBpc286ICdybycsIHZhbHVlOiAnUmFzcHVucyBzdGF0dXMgaW52YWxpZCcgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvZGU6ICdpbnZhbGlkVHlwZScsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKHN1cHBvcnRlZExhbmd1YWdlcywgW1xuICAgICAgICAgICAgeyBpc286ICdlbicsIHZhbHVlOiAnSW52YWxpZCB0eXBlLiBBbGxvd2VkIGZvcm1hdHMgYXJlIHtmb3JtYXRzfScgfSxcbiAgICAgICAgICAgIHsgaXNvOiAncm8nLCB2YWx1ZTogJ1RpcCBpbnZhbGlkLiBGb3JtYXR1bCBwZXJtaXMgZXN0ZSB7Zm9ybWF0c30nIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiAnbWF4U2l6ZScsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKHN1cHBvcnRlZExhbmd1YWdlcywgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdlbicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyB7c2l6ZX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAncm8nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnRmnImWllcnVsIHNlbGVjdGF0IGVzdGUgcHJlYSBtYXJlLiBEaW1lbnNpdW5lYSBtYXhpbcSDIGVzdGUge3NpemV9JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiAnZnJvbnRJZCcsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKHN1cHBvcnRlZExhbmd1YWdlcywgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdlbicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnUGxlYXNlIHVwbG9hZCB0aGUgZnJvbnQgcGhvdG8gb2YgeW91ciBJRCBjYXJkLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdybycsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdWxIMgcnVnxINtIHPEgyB1cmNhyJtpIHBhcnRlYSBkaW4gZmHIm8SDIGEgZG9jdW1lbnR1bHVpIGRlIGlkZW50aXRhdGUuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiAnYmFja0lkJyxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoc3VwcG9ydGVkTGFuZ3VhZ2VzLCBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ2VuJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdQbGVhc2UgdXBsb2FkIHRoZSBiYWNrIHBob3RvIG9mIHlvdXIgSUQgY2FyZC4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAncm8nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVsSDIHJ1Z8SDbSBzxIMgdXJjYcibaSBwYXJ0ZWEgZGluIHNwYXRlIGEgZG9jdW1lbnR1bHVpIGRlIGlkZW50aXRhdGUuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gTWF0Y2ggVjEgSUQgU2NhbiBzZWN0aW9ucyBleGFjdGx5XG4gICAgLy8gU3RhdHVzIHNlY3Rpb25cbiAgICBjb25zdCBzdGF0dXNTZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnSUQgU0NBTiBTdGF0dXMnKSxcbiAgICAgIHRpdGxlOiAnSUQgU0NBTiBTdGF0dXMnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCxcbiAgICAgICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ0lEIFNDQU4gVmFsaWRhdGlvbiBTdGF0dXMnKSxcbiAgICAgICAgICB0aXRsZTogJ0lEIFNDQU4gVmFsaWRhdGlvbiBTdGF0dXMnLFxuICAgICAgICB9IGFzIENvbnRyb2xEYXRhLFxuICAgICAgXSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgLy8gUGVyc29uIGRhdGEgc2VjdGlvblxuICAgIGNvbnN0IHBlcnNvbkRhdGEgPSBbXG4gICAgICAnQ05QJyxcbiAgICAgICdJRFNlcmllcycsXG4gICAgICAnSUROdW1iZXInLFxuICAgICAgJ0ZpcnN0TmFtZScsXG4gICAgICAnTGFzdE5hbWUnLFxuICAgICAgJ05hdGlvbmFsaXR5JyxcbiAgICAgICdJREV4cGlyYXRpb25EYXRlJyxcbiAgICAgICdJRFZhbGlkaXR5JyxcbiAgICAgICdBZGRyZXNzJyxcbiAgICAgICdQbGFjZU9mQmlydGgnLFxuICAgIF07XG4gICAgY29uc3QgcGVyc29uQ29udHJvbHM6IENvbnRyb2xEYXRhW10gPSBwZXJzb25EYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoaXRlbSksXG4gICAgICAgIHRpdGxlOiBpdGVtLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSBhcyBDb250cm9sRGF0YTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHBlcnNvblNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdJRCBTQ0FOIFBlcnNvYW5hJyksXG4gICAgICB0aXRsZTogJ0lEIFNDQU4gUGVyc29hbmEnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IHBlcnNvbkNvbnRyb2xzLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3N0YXR1c1NlY3Rpb24sIHBlcnNvblNlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBTaWduIHN0ZXBcbiAgICovXG4gIGNyZWF0ZVNpZ25TdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnNpZ24pLFxuICAgICAgdHlwZTogRmx1eFR5cGUuU2lnbixcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBzaWduYXR1cmVUeXBlOiAnRWxlY3Ryb25pYycsXG4gICAgICAgIHNob3dDb25maXJtOiB0cnVlLFxuICAgICAgICBjb21wYW55U2lnbjogZmFsc2UsXG4gICAgICAgIGZpcnN0TmFtZUNvbGxlY3RlZDogJycsXG4gICAgICAgIGxhc3ROYW1lQ29sbGVjdGVkOiAnJyxcbiAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgZG9jc1RvU2lnbjogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlU2lnblRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgc2lnbiBzZWN0aW9uXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpLFxuICAgICAgdGl0bGU6ICdEb2N1bWVudCBTaWduaW5nJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHRoaXMuY3JlYXRlUGFyYWdyYXBoQ29udHJvbChcbiAgICAgICAgICAnUGxlYXNlIHNpZ24gdGhlIGZvbGxvd2luZyBkb2N1bWVudHMnLFxuICAgICAgICAgICdzaWduLWluc3RydWN0aW9uJyxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdjb21wJyksXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLlZpZXdEb2N1bWVudHMsXG4gICAgICAgICAgdGl0bGU6ICdEb2N1bWVudHMgdG8gU2lnbicsXG4gICAgICAgICAgY2FuRWRpdDogZmFsc2UsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIGRpbWVuc2lvbjogMTAwLFxuICAgICAgICAgIGRpbWVuc2lvblR5cGU6IERpbWVuc2lvblR5cGUuUGVyY2VudGFnZSxcbiAgICAgICAgICBhdXRvRGltZW5zaW9uOiB0cnVlLFxuICAgICAgICAgIGlzUHJlc2VudGF0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpc01hbmRhdG9yeTogZmFsc2UsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwcmVzZW50YXRpb25Db250cm9sczogW10sXG4gICAgICBpc05hdmlnYXRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIHNob3dTZWN0aW9uVGl0bGU6IHRydWUsXG4gICAgICBzaG93U2VjdGlvblNlcGFyYXRvcjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR2VuZXJhdGUgRG9jdW1lbnRzIHN0ZXBcbiAgICovXG4gIGNyZWF0ZUdlbmVyYXRlRG9jdW1lbnRzU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5nZW5lcmF0ZURvY3VtZW50KSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkdlbmVyYXRlRG9jdW1lbnQsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZ2VuZXJhdGVkRG9jdW1lbnRzOiBbXSxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVHZW5lcmF0ZURvY3VtZW50c1RyYW5zbGF0aW9ucyhcbiAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXNcbiAgICAgICAgKSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gTm8gZGVmYXVsdCBzZWN0aW9ucyBmb3IgZ2VuZXJhdGUgZG9jdW1lbnRzXG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFBhdXNlIHN0ZXBcbiAgICovXG4gIGNyZWF0ZVBhdXNlU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcE5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgucGF1c2UpO1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKGAke3N0ZXBOYW1lfSAtIFBhdXNlYCksXG4gICAgICBuYW1lOiBzdGVwTmFtZSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLlBhdXNlLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZVBhdXNlVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCBwYXVzZSBtZXNzYWdlIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyksXG4gICAgICB0aXRsZTogJ0Zsb3cgUGF1c2VkJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHRoaXMuY3JlYXRlUGFyYWdyYXBoQ29udHJvbChcbiAgICAgICAgICAnVGhlIHdvcmtmbG93IGhhcyBiZWVuIHBhdXNlZCcsXG4gICAgICAgICAgJ3BhdXNlLW1lc3NhZ2UnLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICAgcHJlc2VudGF0aW9uQ29udHJvbHM6IFtdLFxuICAgICAgaXNOYXZpZ2F0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICBzaG93U2VjdGlvblRpdGxlOiB0cnVlLFxuICAgICAgc2hvd1NlY3Rpb25TZXBhcmF0b3I6IHRydWUsXG4gICAgfTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEFjdGlvbiBzdGVwXG4gICAqL1xuICBjcmVhdGVBY3Rpb25TdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmFjdGlvbiksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5BY3Rpb24sXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpTWV0aG9kOiAnJyxcbiAgICAgICAgYXBpUGFydG5lcnM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZUFjdGlvblRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBObyBkZWZhdWx0IHNlY3Rpb25zIGZvciBhY3Rpb24gc3RlcFxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBTdGF0dXMgc3RlcCB3aXRoIGRlZmF1bHQgc2VjdGlvblxuICAgKi9cbiAgY3JlYXRlU3RhdHVzU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGF0dXMpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuU3RhdHVzLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVTdGF0dXNUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgc3RhdHVzIHNlbGVjdGlvbiBzZWN0aW9uXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICB0aXRsZTogJ1N0YXR1cyBTaXN0ZW0nLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5OZXdSb3csXG4gICAgICAgICAgaWRlbnRpZmllcjogJ3NlbGVjdC1zdGF0dXMnLFxuICAgICAgICAgIHRpdGxlOiAnRmx1eCcsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgaWRlbnRpZmllcjogYFN0YXR1cyBTaXN0ZW1fJHt0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpfWAsXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFVwbG9hZCBEb2N1bWVudCBzdGVwXG4gICAqL1xuICBjcmVhdGVVcGxvYWREb2N1bWVudFN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgudXBsb2FkRG9jdW1lbnQpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuVXBsb2FkRG9jdW1lbnQsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIHVwbG9hZCBzZWN0aW9uXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpLFxuICAgICAgdGl0bGU6ICdVcGxvYWQgRG9jdW1lbnRzJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLkNvbGxlY3QsXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdjb21wJyksXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLlVwbG9hZERvY3VtZW50cyxcbiAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnVwbG9hZERvY3VtZW50KSxcbiAgICAgICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgICAgICBkaW1lbnNpb246IDEwMCxcbiAgICAgICAgICBkaW1lbnNpb25UeXBlOiBEaW1lbnNpb25UeXBlLlBlcmNlbnRhZ2UsXG4gICAgICAgICAgYXV0b0RpbWVuc2lvbjogdHJ1ZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgZmlsZU1heFNpemU6IDEwMDAwLFxuICAgICAgICAgICAgZmlsZUZvcm1hdHM6ICcqLnBkZiwqLmpwZywqLnBuZywqLmRvYywqLmRvY3gnLFxuICAgICAgICAgICAgaXNNYW5kYXRvcnk6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNNYW5kYXRvcnk6IGZhbHNlLFxuICAgICAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcHJlc2VudGF0aW9uQ29udHJvbHM6IFtdLFxuICAgICAgaXNOYXZpZ2F0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICBzaG93U2VjdGlvblRpdGxlOiB0cnVlLFxuICAgICAgc2hvd1NlY3Rpb25TZXBhcmF0b3I6IHRydWUsXG4gICAgfTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERvd25sb2FkIERvY3VtZW50IHN0ZXBcbiAgICovXG4gIGNyZWF0ZURvd25sb2FkRG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmRvd25sb2FkRG9jdW1lbnQpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuRG93bmxvYWREb2N1bWVudCxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZG93bmxvYWQgc2VjdGlvblxuICAgIGNvbnN0IHNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzZWMnKSxcbiAgICAgIHRpdGxlOiAnRG93bmxvYWQgRG9jdW1lbnRzJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ2NvbXAnKSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuRG93bmxvYWREb2N1bWVudHMsXG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5kb3dubG9hZERvY3VtZW50KSxcbiAgICAgICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgICAgICBkaW1lbnNpb246IDEwMCxcbiAgICAgICAgICBkaW1lbnNpb25UeXBlOiBEaW1lbnNpb25UeXBlLlBlcmNlbnRhZ2UsXG4gICAgICAgICAgYXV0b0RpbWVuc2lvbjogdHJ1ZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByZXNlbnRhdGlvbkNvbnRyb2xzOiBbXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgc2hvd1NlY3Rpb25UaXRsZTogdHJ1ZSxcbiAgICAgIHNob3dTZWN0aW9uU2VwYXJhdG9yOiB0cnVlLFxuICAgIH07XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBWaWV3IERvY3VtZW50IHN0ZXBcbiAgICovXG4gIGNyZWF0ZVZpZXdEb2N1bWVudFN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgudmlld0RvY3VtZW50KSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLlZpZXdEb2N1bWVudCxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgdmlldyBzZWN0aW9uXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpLFxuICAgICAgdGl0bGU6ICdWaWV3IERvY3VtZW50cycsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdjb21wJyksXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLlZpZXdEb2N1bWVudHMsXG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC52aWV3RG9jdW1lbnQpLFxuICAgICAgICAgIGNhbkVkaXQ6IGZhbHNlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICBpc1ByZXNlbnRhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgICAgIGRpbWVuc2lvbjogMTAwLFxuICAgICAgICAgIGRpbWVuc2lvblR5cGU6IERpbWVuc2lvblR5cGUuUGVyY2VudGFnZSxcbiAgICAgICAgICBhdXRvRGltZW5zaW9uOiB0cnVlLFxuICAgICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNNYW5kYXRvcnk6IGZhbHNlLFxuICAgICAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcHJlc2VudGF0aW9uQ29udHJvbHM6IFtdLFxuICAgICAgaXNOYXZpZ2F0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICBzaG93U2VjdGlvblRpdGxlOiB0cnVlLFxuICAgICAgc2hvd1NlY3Rpb25TZXBhcmF0b3I6IHRydWUsXG4gICAgfTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFZpZXcgT2ZmZXIgc3RlcFxuICAgKi9cbiAgY3JlYXRlVmlld09mZmVyU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC52aWV3T2ZmZXIpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVWaWV3T2ZmZXJTdGVwVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gTm8gZGVmYXVsdCBzZWN0aW9ucyBmb3IgdmlldyBvZmZlclxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBORVRPUElBIFBheW1lbnQgc3RlcFxuICAgKi9cbiAgY3JlYXRlTmV0b3BpYVN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXBOYW1lID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4Lm5ldG9waWEpO1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKGAke3N0ZXBOYW1lfSAtIE5FVE9QSUFgKSxcbiAgICAgIG5hbWU6IHN0ZXBOYW1lLFxuICAgICAgdHlwZTogRmx1eFR5cGUuTkVUT1BJQSxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlUGF5bWVudHNUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyksXG4gICAgICB0aXRsZTogJ05ldG9waWEgUGF5bWVudCcsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW10sXG4gICAgICBwcmVzZW50YXRpb25Db250cm9sczogW10sXG4gICAgICBpc05hdmlnYXRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIHNob3dTZWN0aW9uVGl0bGU6IHRydWUsXG4gICAgICBzaG93U2VjdGlvblNlcGFyYXRvcjogdHJ1ZSxcbiAgICB9O1xuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG5cbiAgICAvLyBObyBkZWZhdWx0IHNlY3Rpb25zIGZvciBwYXltZW50IHN0ZXBzXG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEVVUExBVEVTQyBQYXltZW50IHN0ZXBcbiAgICovXG4gIGNyZWF0ZUV1cGxhdGVzY1N0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXBOYW1lID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmV1UGxhdGVzYyk7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoYCR7c3RlcE5hbWV9IC0gRVVQTEFURVNDYCksXG4gICAgICBuYW1lOiBzdGVwTmFtZSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkVVUExBVEVTQyxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVQYXltZW50c1RyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyksXG4gICAgICB0aXRsZTogJ0V1UGxhdGVzYyBQYXltZW50JyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXSxcbiAgICAgIHByZXNlbnRhdGlvbkNvbnRyb2xzOiBbXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgc2hvd1NlY3Rpb25UaXRsZTogdHJ1ZSxcbiAgICAgIHNob3dTZWN0aW9uU2VwYXJhdG9yOiB0cnVlLFxuICAgIH07XG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcblxuICAgIC8vIE5vIGRlZmF1bHQgc2VjdGlvbnMgZm9yIHBheW1lbnQgc3RlcHNcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgT3BlbiBCYW5raW5nIHN0ZXAgd2l0aCBkZWZhdWx0IHNlY3Rpb25zIGFuZCBjb250cm9sc1xuICAgKi9cbiAgY3JlYXRlT3BlbkJhbmtpbmdTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5vcGVuQmFua2luZyk7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHN0ZXBOYW1lLFxuICAgICAgdHlwZTogRmx1eFR5cGUuT3BlbkJhbmtpbmcsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLy8gRmllbGQgbWFwcGluZ3NcbiAgICAgICAgYWNjb3VudE51bWJlckNvbGxlY3RlZDogJycsXG4gICAgICAgIGFjY291bnRIb2xkZXJDb2xsZWN0ZWQ6ICcnLFxuICAgICAgICBlbWFpbENvbGxlY3RlZDogJycsXG4gICAgICAgIHBzdUludGVybWVkaWFyeUlkOiAnJyxcblxuICAgICAgICAvLyBCYW5rIHNldHRpbmdzXG4gICAgICAgIHNob3dBbGxCYW5rczogdHJ1ZSxcbiAgICAgICAgZXh0cmFjdEJhbmtGcm9tSUJBTjogZmFsc2UsXG4gICAgICAgIGNvdW50cnlDb2RlOiAnUk8nLFxuXG4gICAgICAgIC8vIFRyYW5zYWN0aW9uIHNldHRpbmdzXG4gICAgICAgIHRyYW5zYWN0aW9uUGVyaW9kTW9udGhzOiAzLFxuICAgICAgICBwZXJpb2RPZlZhbGlkaXR5OiA5MCxcbiAgICAgICAgdGNBY2NlcHRlZEJ5RGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgcmVkaXJlY3RVcmw6ICcnLFxuXG4gICAgICAgIC8vIE1lc3NhZ2VzIC0gd2lsbCBiZSBpbml0aWFsaXplZCB3aXRoIHRyYW5zbGF0aW9uc1xuICAgICAgICBpbml0aWFsTWVzc2FnZVRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChcbiAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdlbicsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdUbyBjb250aW51ZSwgd2UgbmVlZCB0byB2ZXJpZnkgeW91ciBiYW5rIGFjY291bnQgaW5mb3JtYXRpb24uIENsaWNrIE5leHQgdG8gcHJvY2VlZC4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAncm8nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnUGVudHJ1IGEgY29udGludWEsIHRyZWJ1aWUgc8SDIHZlcmlmaWPEg20gaW5mb3JtYcibaWlsZSBjb250dWx1aSBkdnMuIGJhbmNhci4gRmFjZcibaSBjbGljIHBlIFVybcSDdG9ydWwgcGVudHJ1IGEgY29udGludWEuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICB3YWl0aW5nTWVzc2FnZVRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChcbiAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdlbicsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdQbGVhc2Ugd2FpdCB3aGlsZSB3ZSByZXRyaWV2ZSB5b3VyIGFjY291bnQgaW5mb3JtYXRpb24uLi4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAncm8nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVsSDIHJ1Z8SDbSBzxIMgYciZdGVwdGHIm2kgcMOibsSDIGPDom5kIHByZWx1xINtIGluZm9ybWHIm2lpbGUgY29udHVsdWkgZHZzLi4uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBjb25zZW50RXJyb3JNZXNzYWdlVHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKFxuICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ2VuJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdZb3UgbXVzdCBwcm92aWRlIGNvbnNlbnQgdG8gY29udGludWUuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ3JvJyxcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1RyZWJ1aWUgc8SDIG9mZXJpyJtpIGNvbnNpbcibxINtw6JudHVsIHBlbnRydSBhIGNvbnRpbnVhLiBWxIMgcnVnxINtIHPEgyDDrm5jZXJjYcibaSBkaW4gbm91LicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgY29tcGxldGlvbk1lc3NhZ2VUcmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoXG4gICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHsgaXNvOiAnZW4nLCB2YWx1ZTogJ0FjY291bnQgaW5mb3JtYXRpb24gc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4nIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ3JvJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdJbmZvcm1hyJtpaWxlIGNvbnR1bHVpIGF1IGZvc3QgcHJlbHVhdGUgY3Ugc3VjY2VzLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgcmV0cnlCdXR0b25MYWJlbFRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChcbiAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgeyBpc286ICdlbicsIHZhbHVlOiAnUmV0cnknIH0sXG4gICAgICAgICAgICB7IGlzbzogJ3JvJywgdmFsdWU6ICdSZcOubmNlYXJjxIMnIH0sXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZU9wZW5CYW5raW5nVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIFNlY3Rpb24gMTogQ29uc2VudCBTdGF0dXNcbiAgICBjb25zdCBzdGF0dXNTZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIHRpdGxlOiAnQ29uc2VudCBTdGF0dXMnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdDb25zZW50U3RhdHVzJyxcbiAgICAgICAgICB0aXRsZTogJ0NvbnNlbnQgVmFsaWRhdGVkJyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7fSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgIF0sXG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ0NvbnNlbnQgU3RhdHVzJyksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIFNlY3Rpb24gMjogQWNjb3VudCBJbmZvcm1hdGlvblxuICAgIGNvbnN0IGFjY291bnRDb250cm9sczogQ29udHJvbERhdGFbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdFbWFpbCcsXG4gICAgICAgIHRpdGxlOiAnRW1haWwnLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5FbWFpbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQWNjb3VudE51bWJlcicsXG4gICAgICAgIHRpdGxlOiAnQWNjb3VudCBOdW1iZXInLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdBY2NvdW50SG9sZGVyJyxcbiAgICAgICAgdGl0bGU6ICdBY2NvdW50IEhvbGRlciBOYW1lJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQmFua0NvZGUnLFxuICAgICAgICB0aXRsZTogJ0JhbmsgQ29kZScsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ0NvbnNlbnRJZCcsXG4gICAgICAgIHRpdGxlOiAnQ29uc2VudCBJRCcsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0gYXMgQ29udHJvbERhdGFbXTtcblxuICAgIGNvbnN0IGFjY291bnRTZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIHRpdGxlOiAnQWNjb3VudCBJbmZvcm1hdGlvbicsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogYWNjb3VudENvbnRyb2xzLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdBY2NvdW50IEluZm9ybWF0aW9uJyksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIFNlY3Rpb24gMzogQWNjb3VudHMgUmV0cmlldmVkXG4gICAgY29uc3QgYWNjb3VudHNEYXRhQ29udHJvbHM6IENvbnRyb2xEYXRhW10gPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQWNjb3VudHNDb3VudCcsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIEFjY291bnRzJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQWNjb3VudHNEYXRhJyxcbiAgICAgICAgdGl0bGU6ICdBY2NvdW50cyBEYXRhIChKU09OKScsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHRBcmVhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdUb3RhbEJhbGFuY2UnLFxuICAgICAgICB0aXRsZTogJ1RvdGFsIEJhbGFuY2UnLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5OdW1lcmljLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdIGFzIENvbnRyb2xEYXRhW107XG5cbiAgICBjb25zdCBhY2NvdW50c0RhdGFTZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIHRpdGxlOiAnUmV0cmlldmVkIEFjY291bnRzJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBhY2NvdW50c0RhdGFDb250cm9scyxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnUmV0cmlldmVkIEFjY291bnRzJyksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIFNlY3Rpb24gNDogVHJhbnNhY3Rpb25zIFJldHJpZXZlZFxuICAgIGNvbnN0IHRyYW5zYWN0aW9uc0NvbnRyb2xzOiBDb250cm9sRGF0YVtdID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ1RyYW5zYWN0aW9uc0NvdW50JyxcbiAgICAgICAgdGl0bGU6ICdOdW1iZXIgb2YgVHJhbnNhY3Rpb25zJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nVHJhbnNhY3Rpb25zRGF0YScsXG4gICAgICAgIHRpdGxlOiAnVHJhbnNhY3Rpb25zIERhdGEgKEpTT04pJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dEFyZWEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ1RyYW5zYWN0aW9uc1BlcmlvZCcsXG4gICAgICAgIHRpdGxlOiAnUGVyaW9kIChtb250aHMpJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSBhcyBDb250cm9sRGF0YVtdO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb25zU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogJ1JldHJpZXZlZCBUcmFuc2FjdGlvbnMnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IHRyYW5zYWN0aW9uc0NvbnRyb2xzLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdSZXRyaWV2ZWQgVHJhbnNhY3Rpb25zJyksXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIC8vIEFkZCBhbGwgc2VjdGlvbnMgdG8gdGhlIHN0ZXBcbiAgICBzdGVwLnNlY3Rpb25zID0gW1xuICAgICAgc3RhdHVzU2VjdGlvbixcbiAgICAgIGFjY291bnRTZWN0aW9uLFxuICAgICAgYWNjb3VudHNEYXRhU2VjdGlvbixcbiAgICAgIHRyYW5zYWN0aW9uc1NlY3Rpb24sXG4gICAgXTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBDdXN0b20gc3RlcCB3aXRoIG5hdmlnYXRpb24gc2VjdGlvblxuICAgKi9cbiAgY3JlYXRlQ3VzdG9tU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5jdXN0b21TdGVwKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkN1c3RvbSxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVDdXN0b21TdGVwVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCBuYXZpZ2F0aW9uIHNlY3Rpb25cbiAgICBjb25zdCBuYXZpZ2F0aW9uU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICB0aXRsZTogJ1NlY8ibaXVuZSBkZSBOYXZpZ2FyZScsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2FuRWRpdDogdHJ1ZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgaXNOYXZpZ2F0aW9uU2VjdGlvbjogdHJ1ZSxcbiAgICAgIGlkZW50aWZpZXI6IGBTZWPIm2l1bmUgZGUgTmF2aWdhcmVfJHt0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpfWAsXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbbmF2aWdhdGlvblNlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBGaW5hbCBzdGVwXG4gICAqL1xuICBjcmVhdGVGaW5hbFN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguZmluYWxTdGVwKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkZpbmFsLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEZpbmFsIHN0ZXAgaXMgbGlrZSBjdXN0b20gYnV0IHdpdGhvdXQgbmF2aWdhdGlvblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIE1haW4gZmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFueSBzdGVwIHR5cGVcbiAgICovXG4gIGNyZWF0ZUZsdXhTdGVwKFxuICAgIHR5cGU6IEZsdXhUeXBlLFxuICAgIHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXVxuICApOiBTdGVwRGF0YSB8IG51bGwge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBGbHV4VHlwZS5LeWM6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUt5Y1N0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuRW1haWw6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrRW1haWxTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLlBob25lOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDaGVja1Bob25lU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5TaWduOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTaWduU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5TdGF0dXM6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVN0YXR1c1N0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuQ3VzdG9tOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDdXN0b21TdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLlBhdXNlOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXVzZVN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuSWRTY2FuOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTY2FuU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5HZW5lcmF0ZURvY3VtZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVHZW5lcmF0ZURvY3VtZW50c1N0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuQWN0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVBY3Rpb25TdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLlVwbG9hZERvY3VtZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcGxvYWREb2N1bWVudFN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuRG93bmxvYWREb2N1bWVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRG93bmxvYWREb2N1bWVudFN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuVmlld0RvY3VtZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVWaWV3RG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLlZpZXdPZmZlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVmlld09mZmVyU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5GaW5hbDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmluYWxTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLk5FVE9QSUE6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU5ldG9waWFTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLkVVUExBVEVTQzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXVwbGF0ZXNjU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5PcGVuQmFua2luZzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3BlbkJhbmtpbmdTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKGBVbnN1cHBvcnRlZCBGbHV4VHlwZTogJHt0eXBlfWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRvY3VtZW50IG5hbWUgYnkgSUQgZnJvbSBmb3JtIG1vZGVsXG4gICAqIFN0YXRpYyBtZXRob2QgdG8gbWF0Y2ggRmx1eEhlbHBlciB1c2FnZSBwYXR0ZXJuIGluIGZvcm1zLm1vZGVsLnRzXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIC0gVGhlIGRvY3VtZW50IElEIHRvIHNlYXJjaCBmb3JcbiAgICogQHBhcmFtIGZvcm1Nb2RlbCAtIFRoZSBmb3JtIG1vZGVsIGNvbnRhaW5pbmcgZG9jdW1lbnRzIGFycmF5XG4gICAqIEByZXR1cm5zIFRoZSBkb2N1bWVudCBuYW1lIG9yIGVtcHR5IHN0cmluZyBpZiBub3QgZm91bmRcbiAgICovXG4gIHN0YXRpYyBnZXREb2N1bWVudE5hbWVCeUlkKGRvY3VtZW50SWQ6IHN0cmluZywgZm9ybU1vZGVsOiBGb3JtTW9kZWwpOiBzdHJpbmcge1xuICAgIGlmICghZm9ybU1vZGVsIHx8ICFmb3JtTW9kZWwuZG9jdW1lbnRzIHx8ICFkb2N1bWVudElkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZG9jdW1lbnQgPSBmb3JtTW9kZWwuZG9jdW1lbnRzLmZpbmQoXG4gICAgICAoZDogQXBwRG9jdW1lbnQpID0+IGQuaWQgPT09IGRvY3VtZW50SWRcbiAgICApO1xuICAgIHJldHVybiBkb2N1bWVudD8ubmFtZSB8fCAnJztcbiAgfVxufVxuIl19
|
|
1427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1eC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL290aGVycy9mbHV4LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsV0FBVyxFQUVYLGFBQWEsR0FFZCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLM0QsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBb0IsU0FBd0I7UUFBeEIsY0FBUyxHQUFULFNBQVMsQ0FBZTtJQUFHLENBQUM7SUFFaEQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLG9DQUFvQztRQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNkJBQTZCLENBQ25DLGtCQUE4QixFQUM5QixNQUF3QztRQUV4QyxJQUFJLElBQUksR0FBZ0IsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FB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QkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RELEtBQUssUUFBUSxDQUFDLFdBQVc7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEQsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFDdEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN2RDtnQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFNBQW9CO1FBQ2pFLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FDeEMsQ0FBQztRQUNGLE9BQU8sUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0E1aERVLFVBQVU7bUhBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2UgfSBmcm9tICcuLi9tb2RlbHMvbGFuZ3VhZ2UubW9kZWwnO1xuaW1wb3J0IHsgTGFiZWxJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2xhYmVsLWluZm8ubW9kZWwnO1xuaW1wb3J0IHtcbiAgRmx1eFR5cGUsXG4gIFN0ZXBDb250cm9sVHlwZSxcbiAgTWFudWFsSW5wdXRDb250cm9sVHlwZSxcbiAgU2VjdGlvblR5cGUsXG4gIEFwcERvY3VtZW50LFxuICBEaW1lbnNpb25UeXBlLFxuICBGb3JtTW9kZWwsXG59IGZyb20gJy4uL21vZGVscy9mb3Jtcy5tb2RlbCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnBpcGUnO1xuaW1wb3J0IHsgTGFiZWxLZXlzIH0gZnJvbSAnLi4vZW51bXMvbGFiZWwua2V5cyc7XG5pbXBvcnQgeyBDb250cm9sRGF0YSwgU3RlcERhdGEsIFNlY3Rpb25EYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2ZsdXgubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zSGVscGVyIH0gZnJvbSAnLi90cmFuc2xhdGlvbnMtaGVscGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZsdXhIZWxwZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlUGlwZSkge31cblxuICAvKipcbiAgICogR2VuZXJhdGUgdW5pcXVlIFYxLWNvbXBhdGlibGUgaWRlbnRpZmllclxuICAgKi9cbiAgZ2VuZXJhdGVVbmlxdWVJZChwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gTWF0Y2ggRmx1eFYxIHBhdHRlcm46IHByZWZpeF9VVUlEXG4gICAgY29uc3QgdXVpZCA9IHV1aWR2NCgpO1xuICAgIHJldHVybiBwcmVmaXggPyB1dWlkIDogdXVpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdHJhbnNsYXRpb25zIG9ubHkgZm9yIHN1cHBvcnRlZCBsYW5ndWFnZXNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoXG4gICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdLFxuICAgIHZhbHVlczogeyBpc286IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbiAgKTogTGFiZWxJbmZvW10ge1xuICAgIGxldCBsaXN0OiBMYWJlbEluZm9bXSA9IFtdO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBjb25zdCBsYW5nSWQgPSBzdXBwb3J0ZWRMYW5ndWFnZXMuZmluZCgobGFuZykgPT4gbGFuZy5pc28gPT09IHYuaXNvKT8uaWQ7XG4gICAgICBpZiAobGFuZ0lkICYmIGxhbmdJZCA+IDApIHtcbiAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICBsYW5ndWFnZUlkOiBsYW5nSWQsXG4gICAgICAgICAgbGFuZ3VhZ2VJc286IHYuaXNvLFxuICAgICAgICAgIHZhbHVlOiB2LnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtYW51YWwgaW5wdXQgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVNYW51YWxJbnB1dENvbnRyb2woXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLFxuICAgIGlzTWFuZGF0b3J5OiBib29sZWFuID0gdHJ1ZSxcbiAgICBkaW1lbnNpb246IG51bWJlciA9IDUwXG4gICk6IENvbnRyb2xEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWRlbnRpZmllcixcbiAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgIHRpdGxlOiBuYW1lLFxuICAgICAgY2FuRWRpdDogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgIGlzUHJlc2VudGF0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBpc01hbmRhdG9yeTogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgZGltZW5zaW9uLFxuICAgICAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZS5QZXJjZW50YWdlLFxuICAgICAgYXV0b0RpbWVuc2lvbjogZmFsc2UsXG4gICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIGlzTWFuZGF0b3J5LFxuICAgICAgICBhbGxvd2VkQ2hhcmFjdGVyczogJycsXG4gICAgICAgIG1heENoYXJhY3RlcnM6IHR5cGUgPT09IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCA/IDUwIDogdW5kZWZpbmVkLFxuICAgICAgICBtaW5WYWx1ZTogdHlwZSA9PT0gTWFudWFsSW5wdXRDb250cm9sVHlwZS5OdW1lcmljID8gMCA6IHVuZGVmaW5lZCxcbiAgICAgICAgbWF4VmFsdWU6IHR5cGUgPT09IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyA/IDk5OTk5OTkgOiB1bmRlZmluZWQsXG4gICAgICAgIGFsbG93T25seUZ1dHVyZTogZmFsc2UsXG4gICAgICAgIGFsbG93T25seVBhc3Q6IGZhbHNlLFxuICAgICAgICBpc1NpbXBsZVZhbGlkYXRpb246IGZhbHNlLFxuICAgICAgICBpc0FwaVZhbGlkYXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBwYXJhZ3JhcGggY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVQYXJhZ3JhcGhDb250cm9sKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc2hvd1ZhbGlkYXRpb25zOiBib29sZWFuID0gZmFsc2UsXG4gICAgaXNNYW5kYXRvcnk6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBDb250cm9sRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuUGFyYWdyYXBoLFxuICAgICAgdGl0bGU6IHRleHQsXG4gICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICBpc01hbmRhdG9yeTogZmFsc2UsXG4gICAgICBpc1ByZXNlbnRhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICBkaW1lbnNpb246IDEwMCxcbiAgICAgIGRpbWVuc2lvblR5cGU6IERpbWVuc2lvblR5cGUuUGVyY2VudGFnZSxcbiAgICAgIGF1dG9EaW1lbnNpb246IHRydWUsXG4gICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25zLFxuICAgICAgICBpc01hbmRhdG9yeSxcbiAgICAgICAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm93IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlTmV3Um93Q29udHJvbCgpOiBDb250cm9sRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnbmV3cm93JyksXG4gICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgdGl0bGU6ICdOZXcgUm93JyxcbiAgICAgIGNhbkVkaXQ6IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICBpc1ByZXNlbnRhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgaXNNYW5kYXRvcnk6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGRpbWVuc2lvbjogMTAwLFxuICAgICAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZS5QZXJjZW50YWdlLFxuICAgICAgYXV0b0RpbWVuc2lvbjogdHJ1ZSxcbiAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHt9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBLWUMgc3RlcCB3aXRoIGFsbCBkZWZhdWx0IHNlY3Rpb25zXG4gICAqL1xuICBjcmVhdGVLeWNTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5pZGVudGlmaWNhdGlvbik7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoYCR7c3RlcE5hbWV9IC0gS1lDYCksXG4gICAgICBuYW1lOiBzdGVwTmFtZSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkt5YyxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVLeWNUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gU2VjdGlvbiAxOiBLWUMgU3RhdHVzXG4gICAgY29uc3Qgc3RhdHVzU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y1N0YXR1c1RpdGxlKSxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuQ2hlY2tCb3gsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ0lkZW50aXR5VmFsaWRhdGlvblN0YXR1cycsXG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShcbiAgICAgICAgICAgIExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLnZhbGlkYXRpb25TdGF0dXNcbiAgICAgICAgICApLFxuICAgICAgICB9IGFzIENvbnRyb2xEYXRhLFxuICAgICAgXSxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZChcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y1N0YXR1c1RpdGxlKVxuICAgICAgKSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgLy8gU2VjdGlvbiAyOiBQZXJzb25hbCBJbmZvcm1hdGlvblxuICAgIGNvbnN0IHBlcnNvbkRhdGEgPSBbXG4gICAgICAnQ05QJyxcbiAgICAgICdJRFNlcmllcycsXG4gICAgICAnSUROdW1iZXInLFxuICAgICAgJ0ZpcnN0TmFtZScsXG4gICAgICAnTGFzdE5hbWUnLFxuICAgICAgJ05hdGlvbmFsaXR5JyxcbiAgICAgICdJREV4cGlyYXRpb25EYXRlJyxcbiAgICAgICdJRFZhbGlkaXR5JyxcbiAgICAgICdBZGRyZXNzJyxcbiAgICAgICdQbGFjZU9mQmlydGgnLFxuICAgICAgJ0RhdGVPZkJpcnRoJyxcbiAgICBdO1xuICAgIGNvbnN0IHBlcnNvbkNvbnRyb2xzOiBDb250cm9sRGF0YVtdID0gcGVyc29uRGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogdXVpZHY0KCksXG4gICAgICAgIHRpdGxlOiBpdGVtLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSBhcyBDb250cm9sRGF0YTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHBlcnNvbmFsU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y1BlcnNvblRpdGxlKSxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBwZXJzb25Db250cm9scyxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZChcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y1BlcnNvblRpdGxlKVxuICAgICAgKSxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgLy8gU2VjdGlvbiAzOiBWYWxpZGF0aW9uIERhdGFcbiAgICBjb25zdCB2YWxpZGF0aW9uU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5zdGVwSW5mby5reWNWYWxpZGF0aW9uVGl0bGUpXG4gICAgICApLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShcbiAgICAgICAgTGFiZWxLZXlzLmZsdXguc3RlcEluZm8ua3ljVmFsaWRhdGlvblRpdGxlXG4gICAgICApLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnQ2xpZW50UGhvbmVOdW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAnQ2xpZW50UGhvbmVOdW1iZXInLFxuICAgICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuUGhvbmUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnSWRTbmFwc2hvdCcsXG4gICAgICAgICAgdGl0bGU6ICdJZFNuYXBzaG90JyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnRmFjZVNuYXBzaG90JyxcbiAgICAgICAgICB0aXRsZTogJ0ZhY2VTbmFwc2hvdCcsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBTZWN0aW9uIDQ6IEFkZHJlc3MgSW5mb3JtYXRpb25cbiAgICBjb25zdCBhZGRyZXNzRGF0YSA9IFtcbiAgICAgICdEaXN0cmljdE5hbWUnLFxuICAgICAgJ0NpdHlOYW1lJyxcbiAgICAgICdTdHJlZXROYW1lJyxcbiAgICAgICdTdHJlZXRObycsXG4gICAgICAnRmxhdE5vJyxcbiAgICAgICdTdGFpck5vJyxcbiAgICAgICdGbG9vck5vJyxcbiAgICAgICdBcGFydG1lbnRObycsXG4gICAgXTtcbiAgICBjb25zdCBhZGRyZXNzQ29udHJvbHM6IENvbnRyb2xEYXRhW10gPSBhZGRyZXNzRGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogdXVpZHY0KCksXG4gICAgICAgIHRpdGxlOiBpdGVtLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSBhcyBDb250cm9sRGF0YTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGFkZHJlc3NTZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZChcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y0FkZHJlc3NUaXRsZSlcbiAgICAgICksXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0ZXBJbmZvLmt5Y0FkZHJlc3NUaXRsZSksXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogYWRkcmVzc0NvbnRyb2xzLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW1xuICAgICAgc3RhdHVzU2VjdGlvbixcbiAgICAgIHBlcnNvbmFsU2VjdGlvbixcbiAgICAgIHZhbGlkYXRpb25TZWN0aW9uLFxuICAgICAgYWRkcmVzc1NlY3Rpb24sXG4gICAgXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRW1haWwgVmVyaWZpY2F0aW9uIHN0ZXBcbiAgICovXG4gIGNyZWF0ZUNoZWNrRW1haWxTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnZlcmlmeUVtYWlsKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkVtYWlsLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGNvbGxlY3RlZDogZmFsc2UsXG4gICAgICAgIGNvbXBvbmVudENvbGxlY3RlZDogJycsXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlQ2hlY2tFbWFpbFRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZW1haWwgdmVyaWZpY2F0aW9uIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IGBTaXN0ZW0gLSBFbWFpbF8ke3RoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyl9YCxcbiAgICAgIHRpdGxlOiAnU2lzdGVtIC0gRW1haWwnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgICBpZGVudGlmaWVyOiAndmFsaWRhdGVkLWVtYWlsJyxcbiAgICAgICAgICB0aXRsZTogJ0VtYWlsIFZhbGlkJyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLkVtYWlsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBQaG9uZSBWZXJpZmljYXRpb24gc3RlcFxuICAgKi9cbiAgY3JlYXRlQ2hlY2tQaG9uZVN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgudmVyaWZ5UGhvbmUpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuUGhvbmUsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgY29sbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgY29tcG9uZW50Q29sbGVjdGVkOiAnJyxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVDaGVja1Bob25lVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCBwaG9uZSB2ZXJpZmljYXRpb24gc2VjdGlvblxuICAgIGNvbnN0IHNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogYFNpc3RlbSAtIFRlbF8ke3RoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyl9YCxcbiAgICAgIHRpdGxlOiAnU2lzdGVtIC0gVGVsJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjYW5FZGl0OiB0cnVlLFxuICAgICAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICAgICAgaXNPbmx5Rm9yQ29uZmlnOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ3ZhbGlkYXRlZC1waG9uZScsXG4gICAgICAgICAgdGl0bGU6ICdOciB0ZWwgVmFsaWQnLFxuICAgICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuUGhvbmUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgIF0sXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIElEIFNjYW4gc3RlcFxuICAgKi9cbiAgY3JlYXRlU2NhblN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguaWRTY2FuKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLklkU2NhbixcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBzaG93VXBsb2FkRmlsZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgc2hvd1Rha2VQaWN0dXJlQnV0dG9uOiB0cnVlLFxuICAgICAgICBmaWxlTWF4U2l6ZTogNTAwMCxcbiAgICAgICAgZmlsZUZvcm1hdHM6ICcqLmpwZywqLnBuZycsXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlSWRTY2FuVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiAnaW52YWxpZFN0YXR1cycsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKHN1cHBvcnRlZExhbmd1YWdlcywgW1xuICAgICAgICAgICAgeyBpc286ICdlbicsIHZhbHVlOiAnSW52YWxpZCBzdGF0dXMgcmVzcG9uc2UnIH0sXG4gICAgICAgICAgICB7IGlzbzogJ3JvJywgdmFsdWU6ICdSYXNwdW5zIHN0YXR1cyBpbnZhbGlkJyB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29kZTogJ2ludmFsaWRUeXBlJyxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoc3VwcG9ydGVkTGFuZ3VhZ2VzLCBbXG4gICAgICAgICAgICB7IGlzbzogJ2VuJywgdmFsdWU6ICdJbnZhbGlkIHR5cGUuIEFsbG93ZWQgZm9ybWF0cyBhcmUge2Zvcm1hdHN9JyB9LFxuICAgICAgICAgICAgeyBpc286ICdybycsIHZhbHVlOiAnVGlwIGludmFsaWQuIEZvcm1hdHVsIHBlcm1pcyBlc3RlIHtmb3JtYXRzfScgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvZGU6ICdtYXhTaXplJyxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoc3VwcG9ydGVkTGFuZ3VhZ2VzLCBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ2VuJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdUaGUgc2VsZWN0ZWQgZmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIHtzaXplfScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdybycsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdGaciZaWVydWwgc2VsZWN0YXQgZXN0ZSBwcmVhIG1hcmUuIERpbWVuc2l1bmVhIG1heGltxIMgZXN0ZSB7c2l6ZX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvZGU6ICdmcm9udElkJyxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoc3VwcG9ydGVkTGFuZ3VhZ2VzLCBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ2VuJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdQbGVhc2UgdXBsb2FkIHRoZSBmcm9udCBwaG90byBvZiB5b3VyIElEIGNhcmQuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ3JvJyxcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1bEgyBydWfEg20gc8SDIHVyY2HIm2kgcGFydGVhIGRpbiBmYcibxIMgYSBkb2N1bWVudHVsdWkgZGUgaWRlbnRpdGF0ZS4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvZGU6ICdiYWNrSWQnLFxuICAgICAgICAgIHRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChzdXBwb3J0ZWRMYW5ndWFnZXMsIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAnZW4nLFxuICAgICAgICAgICAgICB2YWx1ZTogJ1BsZWFzZSB1cGxvYWQgdGhlIGJhY2sgcGhvdG8gb2YgeW91ciBJRCBjYXJkLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdybycsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdWxIMgcnVnxINtIHPEgyB1cmNhyJtpIHBhcnRlYSBkaW4gc3BhdGUgYSBkb2N1bWVudHVsdWkgZGUgaWRlbnRpdGF0ZS4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBNYXRjaCBWMSBJRCBTY2FuIHNlY3Rpb25zIGV4YWN0bHlcbiAgICAvLyBTdGF0dXMgc2VjdGlvblxuICAgIGNvbnN0IHN0YXR1c1NlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdJRCBTQ0FOIFN0YXR1cycpLFxuICAgICAgdGl0bGU6ICdJRCBTQ0FOIFN0YXR1cycsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLkNoZWNrQm94LFxuICAgICAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnSUQgU0NBTiBWYWxpZGF0aW9uIFN0YXR1cycpLFxuICAgICAgICAgIHRpdGxlOiAnSUQgU0NBTiBWYWxpZGF0aW9uIFN0YXR1cycsXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBQZXJzb24gZGF0YSBzZWN0aW9uXG4gICAgY29uc3QgcGVyc29uRGF0YSA9IFtcbiAgICAgICdDTlAnLFxuICAgICAgJ0lEU2VyaWVzJyxcbiAgICAgICdJRE51bWJlcicsXG4gICAgICAnRmlyc3ROYW1lJyxcbiAgICAgICdMYXN0TmFtZScsXG4gICAgICAnTmF0aW9uYWxpdHknLFxuICAgICAgJ0lERXhwaXJhdGlvbkRhdGUnLFxuICAgICAgJ0lEVmFsaWRpdHknLFxuICAgICAgJ0FkZHJlc3MnLFxuICAgICAgJ1BsYWNlT2ZCaXJ0aCcsXG4gICAgXTtcbiAgICBjb25zdCBwZXJzb25Db250cm9sczogQ29udHJvbERhdGFbXSA9IHBlcnNvbkRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZChpdGVtKSxcbiAgICAgICAgdGl0bGU6IGl0ZW0sXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIENvbnRyb2xEYXRhO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyc29uU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ0lEIFNDQU4gUGVyc29hbmEnKSxcbiAgICAgIHRpdGxlOiAnSUQgU0NBTiBQZXJzb2FuYScsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogcGVyc29uQ29udHJvbHMsXG4gICAgfSBhcyBTZWN0aW9uRGF0YTtcblxuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc3RhdHVzU2VjdGlvbiwgcGVyc29uU2VjdGlvbl07XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFNpZ24gc3RlcFxuICAgKi9cbiAgY3JlYXRlU2lnblN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguc2lnbiksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5TaWduLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHNpZ25hdHVyZVR5cGU6ICdFbGVjdHJvbmljJyxcbiAgICAgICAgc2hvd0NvbmZpcm06IHRydWUsXG4gICAgICAgIGNvbXBhbnlTaWduOiBmYWxzZSxcbiAgICAgICAgZmlyc3ROYW1lQ29sbGVjdGVkOiAnJyxcbiAgICAgICAgbGFzdE5hbWVDb2xsZWN0ZWQ6ICcnLFxuICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICBkb2NzVG9TaWduOiBbXSxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVTaWduVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCBzaWduIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyksXG4gICAgICB0aXRsZTogJ0RvY3VtZW50IFNpZ25pbmcnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJhZ3JhcGhDb250cm9sKFxuICAgICAgICAgICdQbGVhc2Ugc2lnbiB0aGUgZm9sbG93aW5nIGRvY3VtZW50cycsXG4gICAgICAgICAgJ3NpZ24taW5zdHJ1Y3Rpb24nLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ2NvbXAnKSxcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuVmlld0RvY3VtZW50cyxcbiAgICAgICAgICB0aXRsZTogJ0RvY3VtZW50cyB0byBTaWduJyxcbiAgICAgICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgZGltZW5zaW9uOiAxMDAsXG4gICAgICAgICAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZS5QZXJjZW50YWdlLFxuICAgICAgICAgIGF1dG9EaW1lbnNpb246IHRydWUsXG4gICAgICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByZXNlbnRhdGlvbkNvbnRyb2xzOiBbXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgc2hvd1NlY3Rpb25UaXRsZTogdHJ1ZSxcbiAgICAgIHNob3dTZWN0aW9uU2VwYXJhdG9yOiB0cnVlLFxuICAgIH07XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBHZW5lcmF0ZSBEb2N1bWVudHMgc3RlcFxuICAgKi9cbiAgY3JlYXRlR2VuZXJhdGVEb2N1bWVudHNTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmdlbmVyYXRlRG9jdW1lbnQpLFxuICAgICAgdHlwZTogRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBnZW5lcmF0ZWREb2N1bWVudHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZUdlbmVyYXRlRG9jdW1lbnRzVHJhbnNsYXRpb25zKFxuICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlc1xuICAgICAgICApLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBObyBkZWZhdWx0IHNlY3Rpb25zIGZvciBnZW5lcmF0ZSBkb2N1bWVudHNcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUGF1c2Ugc3RlcFxuICAgKi9cbiAgY3JlYXRlUGF1c2VTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5wYXVzZSk7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoYCR7c3RlcE5hbWV9IC0gUGF1c2VgKSxcbiAgICAgIG5hbWU6IHN0ZXBOYW1lLFxuICAgICAgdHlwZTogRmx1eFR5cGUuUGF1c2UsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlUGF1c2VUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIHBhdXNlIG1lc3NhZ2Ugc2VjdGlvblxuICAgIGNvbnN0IHNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzZWMnKSxcbiAgICAgIHRpdGxlOiAnRmxvdyBQYXVzZWQnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXJhZ3JhcGhDb250cm9sKFxuICAgICAgICAgICdUaGUgd29ya2Zsb3cgaGFzIGJlZW4gcGF1c2VkJyxcbiAgICAgICAgICAncGF1c2UtbWVzc2FnZScsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgICBwcmVzZW50YXRpb25Db250cm9sczogW10sXG4gICAgICBpc05hdmlnYXRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIHNob3dTZWN0aW9uVGl0bGU6IHRydWUsXG4gICAgICBzaG93U2VjdGlvblNlcGFyYXRvcjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWN0aW9uIHN0ZXBcbiAgICovXG4gIGNyZWF0ZUFjdGlvblN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguYWN0aW9uKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkFjdGlvbixcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBhcGlNZXRob2Q6ICcnLFxuICAgICAgICBhcGlQYXJ0bmVyczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlQWN0aW9uVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIE5vIGRlZmF1bHQgc2VjdGlvbnMgZm9yIGFjdGlvbiBzdGVwXG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFN0YXR1cyBzdGVwIHdpdGggZGVmYXVsdCBzZWN0aW9uXG4gICAqL1xuICBjcmVhdGVTdGF0dXNTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnN0YXR1cyksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5TdGF0dXMsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZVN0YXR1c1RyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCBzdGF0dXMgc2VsZWN0aW9uIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnU3RhdHVzIFNpc3RlbScsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2FuRWRpdDogdHJ1ZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk5ld1JvdyxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnc2VsZWN0LXN0YXR1cycsXG4gICAgICAgICAgdGl0bGU6ICdGbHV4JyxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBDb250cm9sRGF0YSxcbiAgICAgIF0sXG4gICAgICBpZGVudGlmaWVyOiBgU3RhdHVzIFNpc3RlbV8ke3RoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyl9YCxcbiAgICB9IGFzIFNlY3Rpb25EYXRhO1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIGNyZWF0ZVZhbGlkYXRpb25TdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnZhbGlkYXRpb24pLFxuICAgICAgdHlwZTogRmx1eFR5cGUuVmFsaWRhdGlvbixcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICBjb21wYXJpc29uczogW10sXG4gICAgICAgIGRpY3Rpb25hcnlVVUlEOiAnJyxcbiAgICAgICAgdHJ1ZVZhbHVlSWQ6IG51bGwsXG4gICAgICAgIGZhbHNlVmFsdWVJZDogbnVsbCxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVWYWxpZGF0aW9uVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBVcGxvYWQgRG9jdW1lbnQgc3RlcFxuICAgKi9cbiAgY3JlYXRlVXBsb2FkRG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnVwbG9hZERvY3VtZW50KSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50LFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEFkZCB1cGxvYWQgc2VjdGlvblxuICAgIGNvbnN0IHNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzZWMnKSxcbiAgICAgIHRpdGxlOiAnVXBsb2FkIERvY3VtZW50cycsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5Db2xsZWN0LFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnY29tcCcpLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5VcGxvYWREb2N1bWVudHMsXG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC51cGxvYWREb2N1bWVudCksXG4gICAgICAgICAgY2FuRWRpdDogZmFsc2UsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIGlzUHJlc2VudGF0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgICAgICAgZGltZW5zaW9uOiAxMDAsXG4gICAgICAgICAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZS5QZXJjZW50YWdlLFxuICAgICAgICAgIGF1dG9EaW1lbnNpb246IHRydWUsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgIGZpbGVNYXhTaXplOiAxMDAwMCxcbiAgICAgICAgICAgIGZpbGVGb3JtYXRzOiAnKi5wZGYsKi5qcGcsKi5wbmcsKi5kb2MsKi5kb2N4JyxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByZXNlbnRhdGlvbkNvbnRyb2xzOiBbXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgc2hvd1NlY3Rpb25UaXRsZTogdHJ1ZSxcbiAgICAgIHNob3dTZWN0aW9uU2VwYXJhdG9yOiB0cnVlLFxuICAgIH07XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEb3dubG9hZCBEb2N1bWVudCBzdGVwXG4gICAqL1xuICBjcmVhdGVEb3dubG9hZERvY3VtZW50U3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcDogU3RlcERhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3N0ZXAnKSxcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5kb3dubG9hZERvY3VtZW50KSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLkRvd25sb2FkRG9jdW1lbnQsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGRvd25sb2FkIHNlY3Rpb25cbiAgICBjb25zdCBzZWN0aW9uOiBTZWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc2VjJyksXG4gICAgICB0aXRsZTogJ0Rvd25sb2FkIERvY3VtZW50cycsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdjb21wJyksXG4gICAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLkRvd25sb2FkRG9jdW1lbnRzLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguZG93bmxvYWREb2N1bWVudCksXG4gICAgICAgICAgY2FuRWRpdDogZmFsc2UsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIGlzUHJlc2VudGF0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgICAgICAgZGltZW5zaW9uOiAxMDAsXG4gICAgICAgICAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZS5QZXJjZW50YWdlLFxuICAgICAgICAgIGF1dG9EaW1lbnNpb246IHRydWUsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpc01hbmRhdG9yeTogZmFsc2UsXG4gICAgICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwcmVzZW50YXRpb25Db250cm9sczogW10sXG4gICAgICBpc05hdmlnYXRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIHNob3dTZWN0aW9uVGl0bGU6IHRydWUsXG4gICAgICBzaG93U2VjdGlvblNlcGFyYXRvcjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtzZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgVmlldyBEb2N1bWVudCBzdGVwXG4gICAqL1xuICBjcmVhdGVWaWV3RG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LnZpZXdEb2N1bWVudCksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5WaWV3RG9jdW1lbnQsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIHZpZXcgc2VjdGlvblxuICAgIGNvbnN0IHNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzZWMnKSxcbiAgICAgIHRpdGxlOiAnVmlldyBEb2N1bWVudHMnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnY29tcCcpLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5WaWV3RG9jdW1lbnRzLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgudmlld0RvY3VtZW50KSxcbiAgICAgICAgICBjYW5FZGl0OiBmYWxzZSxcbiAgICAgICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgICAgIGlzT25seUZvckNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgaXNQcmVzZW50YXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgICAgICBkaW1lbnNpb246IDEwMCxcbiAgICAgICAgICBkaW1lbnNpb25UeXBlOiBEaW1lbnNpb25UeXBlLlBlcmNlbnRhZ2UsXG4gICAgICAgICAgYXV0b0RpbWVuc2lvbjogdHJ1ZSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByZXNlbnRhdGlvbkNvbnRyb2xzOiBbXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IGZhbHNlLFxuICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczogW10sXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgc2hvd1NlY3Rpb25UaXRsZTogdHJ1ZSxcbiAgICAgIHNob3dTZWN0aW9uU2VwYXJhdG9yOiB0cnVlLFxuICAgIH07XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBWaWV3IE9mZmVyIHN0ZXBcbiAgICovXG4gIGNyZWF0ZVZpZXdPZmZlclN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgudmlld09mZmVyKSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLlZpZXdPZmZlcixcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICBwYW5lbE9wZW5TdGF0ZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgZGVwZW5kZW50RGljdGlvbmFyeToge1xuICAgICAgICBpc0RpY3Rpb25hcnlEZXBlbmRlbnQ6IGZhbHNlLFxuICAgICAgICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6ICcnLFxuICAgICAgICBkZXBlbmRlbnRWYWx1ZUlkczogW10sXG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlVmlld09mZmVyU3RlcFRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgZXJyb3JzVHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGhhc05hbWVBbmREZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgIGNhbkRlcGVuZDogdHJ1ZSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIE5vIGRlZmF1bHQgc2VjdGlvbnMgZm9yIHZpZXcgb2ZmZXJcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgTkVUT1BJQSBQYXltZW50IHN0ZXBcbiAgICovXG4gIGNyZWF0ZU5ldG9waWFTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5uZXRvcGlhKTtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZChgJHtzdGVwTmFtZX0gLSBORVRPUElBYCksXG4gICAgICBuYW1lOiBzdGVwTmFtZSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLk5FVE9QSUEsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgVHJhbnNsYXRpb25zSGVscGVyLmNyZWF0ZVBheW1lbnRzVHJhbnNsYXRpb25zKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpLFxuICAgICAgdGl0bGU6ICdOZXRvcGlhIFBheW1lbnQnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtdLFxuICAgICAgcHJlc2VudGF0aW9uQ29udHJvbHM6IFtdLFxuICAgICAgaXNOYXZpZ2F0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgICBjYW5EZXBlbmQ6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOiBbXSxcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICBzaG93U2VjdGlvblRpdGxlOiB0cnVlLFxuICAgICAgc2hvd1NlY3Rpb25TZXBhcmF0b3I6IHRydWUsXG4gICAgfTtcbiAgICBzdGVwLnNlY3Rpb25zID0gW3NlY3Rpb25dO1xuXG4gICAgLy8gTm8gZGVmYXVsdCBzZWN0aW9ucyBmb3IgcGF5bWVudCBzdGVwc1xuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFVVBMQVRFU0MgUGF5bWVudCBzdGVwXG4gICAqL1xuICBjcmVhdGVFdXBsYXRlc2NTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwTmFtZSA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybShMYWJlbEtleXMuZmx1eC5ldVBsYXRlc2MpO1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKGAke3N0ZXBOYW1lfSAtIEVVUExBVEVTQ2ApLFxuICAgICAgbmFtZTogc3RlcE5hbWUsXG4gICAgICB0eXBlOiBGbHV4VHlwZS5FVVBMQVRFU0MsXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlUGF5bWVudHNUcmFuc2xhdGlvbnMoc3VwcG9ydGVkTGFuZ3VhZ2VzKSxcbiAgICAgIHBhbmVsT3BlblN0YXRlOiB0cnVlLFxuICAgICAgYnV0dG9uczogW10sXG4gICAgICBkZXBlbmRlbnREaWN0aW9uYXJ5OiB7XG4gICAgICAgIGlzRGljdGlvbmFyeURlcGVuZGVudDogZmFsc2UsXG4gICAgICAgIGRpY3Rpb25hcnlDb250cm9sSWRlbnRpZmllcjogJycsXG4gICAgICAgIGRlcGVuZGVudFZhbHVlSWRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBlcnJvcnNUcmFuc2xhdGlvbnM6IFtdLFxuICAgICAgaGFzTmFtZUFuZERlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ3NlYycpLFxuICAgICAgdGl0bGU6ICdFdVBsYXRlc2MgUGF5bWVudCcsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogW10sXG4gICAgICBwcmVzZW50YXRpb25Db250cm9sczogW10sXG4gICAgICBpc05hdmlnYXRpb25TZWN0aW9uOiBmYWxzZSxcbiAgICAgIGNhbkRlcGVuZDogZmFsc2UsXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIHNob3dTZWN0aW9uVGl0bGU6IHRydWUsXG4gICAgICBzaG93U2VjdGlvblNlcGFyYXRvcjogdHJ1ZSxcbiAgICB9O1xuICAgIHN0ZXAuc2VjdGlvbnMgPSBbc2VjdGlvbl07XG5cbiAgICAvLyBObyBkZWZhdWx0IHNlY3Rpb25zIGZvciBwYXltZW50IHN0ZXBzXG4gICAgcmV0dXJuIHN0ZXA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIE9wZW4gQmFua2luZyBzdGVwIHdpdGggZGVmYXVsdCBzZWN0aW9ucyBhbmQgY29udHJvbHNcbiAgICovXG4gIGNyZWF0ZU9wZW5CYW5raW5nU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW10pOiBTdGVwRGF0YSB7XG4gICAgY29uc3Qgc3RlcE5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXgub3BlbkJhbmtpbmcpO1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiBzdGVwTmFtZSxcbiAgICAgIHR5cGU6IEZsdXhUeXBlLk9wZW5CYW5raW5nLFxuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC8vIEZpZWxkIG1hcHBpbmdzXG4gICAgICAgIGFjY291bnROdW1iZXJDb2xsZWN0ZWQ6ICcnLFxuICAgICAgICBhY2NvdW50SG9sZGVyQ29sbGVjdGVkOiAnJyxcbiAgICAgICAgZW1haWxDb2xsZWN0ZWQ6ICcnLFxuICAgICAgICBwc3VJbnRlcm1lZGlhcnlJZDogJycsXG5cbiAgICAgICAgLy8gQmFuayBzZXR0aW5nc1xuICAgICAgICBzaG93QWxsQmFua3M6IHRydWUsXG4gICAgICAgIGV4dHJhY3RCYW5rRnJvbUlCQU46IGZhbHNlLFxuICAgICAgICBjb3VudHJ5Q29kZTogJ1JPJyxcblxuICAgICAgICAvLyBUcmFuc2FjdGlvbiBzZXR0aW5nc1xuICAgICAgICB0cmFuc2FjdGlvblBlcmlvZE1vbnRoczogMyxcbiAgICAgICAgcGVyaW9kT2ZWYWxpZGl0eTogOTAsXG4gICAgICAgIHRjQWNjZXB0ZWRCeURlZmF1bHQ6IHRydWUsXG4gICAgICAgIHJlZGlyZWN0VXJsOiAnJyxcblxuICAgICAgICAvLyBNZXNzYWdlcyAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCB0cmFuc2xhdGlvbnNcbiAgICAgICAgaW5pdGlhbE1lc3NhZ2VUcmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoXG4gICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAnZW4nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVG8gY29udGludWUsIHdlIG5lZWQgdG8gdmVyaWZ5IHlvdXIgYmFuayBhY2NvdW50IGluZm9ybWF0aW9uLiBDbGljayBOZXh0IHRvIHByb2NlZWQuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ3JvJyxcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1BlbnRydSBhIGNvbnRpbnVhLCB0cmVidWllIHPEgyB2ZXJpZmljxINtIGluZm9ybWHIm2lpbGUgY29udHVsdWkgZHZzLiBiYW5jYXIuIEZhY2XIm2kgY2xpYyBwZSBVcm3Eg3RvcnVsIHBlbnRydSBhIGNvbnRpbnVhLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgd2FpdGluZ01lc3NhZ2VUcmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoXG4gICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXNvOiAnZW4nLFxuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnUGxlYXNlIHdhaXQgd2hpbGUgd2UgcmV0cmlldmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uLi4uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzbzogJ3JvJyxcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1bEgyBydWfEg20gc8SDIGHImXRlcHRhyJtpIHDDom7EgyBjw6JuZCBwcmVsdcSDbSBpbmZvcm1hyJtpaWxlIGNvbnR1bHVpIGR2cy4uLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgY29uc2VudEVycm9yTWVzc2FnZVRyYW5zbGF0aW9uczogdGhpcy5jcmVhdGVUcmFuc2xhdGlvbnNJZlN1cHBvcnRlZChcbiAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdlbicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnWW91IG11c3QgcHJvdmlkZSBjb25zZW50IHRvIGNvbnRpbnVlLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdybycsXG4gICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICdUcmVidWllIHPEgyBvZmVyacibaSBjb25zaW3Im8SDbcOibnR1bCBwZW50cnUgYSBjb250aW51YS4gVsSDIHJ1Z8SDbSBzxIMgw65uY2VyY2HIm2kgZGluIG5vdS4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgICksXG4gICAgICAgIGNvbXBsZXRpb25NZXNzYWdlVHJhbnNsYXRpb25zOiB0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc0lmU3VwcG9ydGVkKFxuICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7IGlzbzogJ2VuJywgdmFsdWU6ICdBY2NvdW50IGluZm9ybWF0aW9uIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQuJyB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpc286ICdybycsXG4gICAgICAgICAgICAgIHZhbHVlOiAnSW5mb3JtYcibaWlsZSBjb250dWx1aSBhdSBmb3N0IHByZWx1YXRlIGN1IHN1Y2Nlcy4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgICksXG4gICAgICAgIHJldHJ5QnV0dG9uTGFiZWxUcmFuc2xhdGlvbnM6IHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zSWZTdXBwb3J0ZWQoXG4gICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHsgaXNvOiAnZW4nLCB2YWx1ZTogJ1JldHJ5JyB9LFxuICAgICAgICAgICAgeyBpc286ICdybycsIHZhbHVlOiAnUmXDrm5jZWFyY8SDJyB9LFxuICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB0cmFuc2xhdGlvbnM6XG4gICAgICAgIFRyYW5zbGF0aW9uc0hlbHBlci5jcmVhdGVPcGVuQmFua2luZ1RyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBTZWN0aW9uIDE6IENvbnNlbnQgU3RhdHVzXG4gICAgY29uc3Qgc3RhdHVzU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogJ0NvbnNlbnQgU3RhdHVzJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuQ2hlY2tCb3gsXG4gICAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQ29uc2VudFN0YXR1cycsXG4gICAgICAgICAgdGl0bGU6ICdDb25zZW50IFZhbGlkYXRlZCcsXG4gICAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge30sXG4gICAgICAgIH0gYXMgQ29udHJvbERhdGEsXG4gICAgICBdLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdDb25zZW50IFN0YXR1cycpLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBTZWN0aW9uIDI6IEFjY291bnQgSW5mb3JtYXRpb25cbiAgICBjb25zdCBhY2NvdW50Q29udHJvbHM6IENvbnRyb2xEYXRhW10gPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nRW1haWwnLFxuICAgICAgICB0aXRsZTogJ0VtYWlsJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuRW1haWwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ0FjY291bnROdW1iZXInLFxuICAgICAgICB0aXRsZTogJ0FjY291bnQgTnVtYmVyJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuVGV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nQWNjb3VudEhvbGRlcicsXG4gICAgICAgIHRpdGxlOiAnQWNjb3VudCBIb2xkZXIgTmFtZScsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ0JhbmtDb2RlJyxcbiAgICAgICAgdGl0bGU6ICdCYW5rIENvZGUnLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdDb25zZW50SWQnLFxuICAgICAgICB0aXRsZTogJ0NvbnNlbnQgSUQnLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdIGFzIENvbnRyb2xEYXRhW107XG5cbiAgICBjb25zdCBhY2NvdW50U2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogJ0FjY291bnQgSW5mb3JtYXRpb24nLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IGFjY291bnRDb250cm9scyxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnQWNjb3VudCBJbmZvcm1hdGlvbicpLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBTZWN0aW9uIDM6IEFjY291bnRzIFJldHJpZXZlZFxuICAgIGNvbnN0IGFjY291bnRzRGF0YUNvbnRyb2xzOiBDb250cm9sRGF0YVtdID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ0FjY291bnRzQ291bnQnLFxuICAgICAgICB0aXRsZTogJ051bWJlciBvZiBBY2NvdW50cycsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLk51bWVyaWMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ0FjY291bnRzRGF0YScsXG4gICAgICAgIHRpdGxlOiAnQWNjb3VudHMgRGF0YSAoSlNPTiknLFxuICAgICAgICBzcGVjaWZpY0NvbnRyb2xEYXRhOiB7XG4gICAgICAgICAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZS5UZXh0QXJlYSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5NYW51YWxJbnB1dCxcbiAgICAgICAgaWRlbnRpZmllcjogJ09wZW5CYW5raW5nVG90YWxCYWxhbmNlJyxcbiAgICAgICAgdGl0bGU6ICdUb3RhbCBCYWxhbmNlJyxcbiAgICAgICAgc3BlY2lmaWNDb250cm9sRGF0YToge1xuICAgICAgICAgIHR5cGU6IE1hbnVhbElucHV0Q29udHJvbFR5cGUuTnVtZXJpYyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSBhcyBDb250cm9sRGF0YVtdO1xuXG4gICAgY29uc3QgYWNjb3VudHNEYXRhU2VjdGlvbjogU2VjdGlvbkRhdGEgPSB7XG4gICAgICB0aXRsZTogJ1JldHJpZXZlZCBBY2NvdW50cycsXG4gICAgICB0eXBlOiBTZWN0aW9uVHlwZS5QcmVzZW50YXRpb24sXG4gICAgICBjb250cm9sczogYWNjb3VudHNEYXRhQ29udHJvbHMsXG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoJ1JldHJpZXZlZCBBY2NvdW50cycpLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBTZWN0aW9uIDQ6IFRyYW5zYWN0aW9ucyBSZXRyaWV2ZWRcbiAgICBjb25zdCB0cmFuc2FjdGlvbnNDb250cm9sczogQ29udHJvbERhdGFbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdUcmFuc2FjdGlvbnNDb3VudCcsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFRyYW5zYWN0aW9ucycsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLk51bWVyaWMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQsXG4gICAgICAgIGlkZW50aWZpZXI6ICdPcGVuQmFua2luZ1RyYW5zYWN0aW9uc0RhdGEnLFxuICAgICAgICB0aXRsZTogJ1RyYW5zYWN0aW9ucyBEYXRhIChKU09OKScsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLlRleHRBcmVhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogU3RlcENvbnRyb2xUeXBlLk1hbnVhbElucHV0LFxuICAgICAgICBpZGVudGlmaWVyOiAnT3BlbkJhbmtpbmdUcmFuc2FjdGlvbnNQZXJpb2QnLFxuICAgICAgICB0aXRsZTogJ1BlcmlvZCAobW9udGhzKScsXG4gICAgICAgIHNwZWNpZmljQ29udHJvbERhdGE6IHtcbiAgICAgICAgICB0eXBlOiBNYW51YWxJbnB1dENvbnRyb2xUeXBlLk51bWVyaWMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0gYXMgQ29udHJvbERhdGFbXTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uc1NlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgdGl0bGU6ICdSZXRyaWV2ZWQgVHJhbnNhY3Rpb25zJyxcbiAgICAgIHR5cGU6IFNlY3Rpb25UeXBlLlByZXNlbnRhdGlvbixcbiAgICAgIGNvbnRyb2xzOiB0cmFuc2FjdGlvbnNDb250cm9scyxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnUmV0cmlldmVkIFRyYW5zYWN0aW9ucycpLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICAvLyBBZGQgYWxsIHNlY3Rpb25zIHRvIHRoZSBzdGVwXG4gICAgc3RlcC5zZWN0aW9ucyA9IFtcbiAgICAgIHN0YXR1c1NlY3Rpb24sXG4gICAgICBhY2NvdW50U2VjdGlvbixcbiAgICAgIGFjY291bnRzRGF0YVNlY3Rpb24sXG4gICAgICB0cmFuc2FjdGlvbnNTZWN0aW9uLFxuICAgIF07XG5cbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQ3VzdG9tIHN0ZXAgd2l0aCBuYXZpZ2F0aW9uIHNlY3Rpb25cbiAgICovXG4gIGNyZWF0ZUN1c3RvbVN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdKTogU3RlcERhdGEge1xuICAgIGNvbnN0IHN0ZXA6IFN0ZXBEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzdGVwJyksXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oTGFiZWxLZXlzLmZsdXguY3VzdG9tU3RlcCksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5DdXN0b20sXG4gICAgICBzZWN0aW9uczogW10sXG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBjb25maWc6IHt9LFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICBUcmFuc2xhdGlvbnNIZWxwZXIuY3JlYXRlQ3VzdG9tU3RlcFRyYW5zbGF0aW9ucyhzdXBwb3J0ZWRMYW5ndWFnZXMpLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgbmF2aWdhdGlvbiBzZWN0aW9uXG4gICAgY29uc3QgbmF2aWdhdGlvblNlY3Rpb246IFNlY3Rpb25EYXRhID0ge1xuICAgICAgY2FuRGVwZW5kOiB0cnVlLFxuICAgICAgdGl0bGU6ICdTZWPIm2l1bmUgZGUgTmF2aWdhcmUnLFxuICAgICAgdHlwZTogU2VjdGlvblR5cGUuUHJlc2VudGF0aW9uLFxuICAgICAgY29udHJvbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhbkVkaXQ6IHRydWUsXG4gICAgICAgICAgY2FuRGVwZW5kOiBmYWxzZSxcbiAgICAgICAgICBpc09ubHlGb3JDb25maWc6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFN0ZXBDb250cm9sVHlwZS5CdXR0b25zLFxuICAgICAgICB9IGFzIENvbnRyb2xEYXRhLFxuICAgICAgXSxcbiAgICAgIGlzTmF2aWdhdGlvblNlY3Rpb246IHRydWUsXG4gICAgICBpZGVudGlmaWVyOiBgU2VjyJtpdW5lIGRlIE5hdmlnYXJlXyR7dGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCdzZWMnKX1gLFxuICAgIH0gYXMgU2VjdGlvbkRhdGE7XG5cbiAgICBzdGVwLnNlY3Rpb25zID0gW25hdmlnYXRpb25TZWN0aW9uXTtcbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRmluYWwgc3RlcFxuICAgKi9cbiAgY3JlYXRlRmluYWxTdGVwKHN1cHBvcnRlZExhbmd1YWdlczogTGFuZ3VhZ2VbXSk6IFN0ZXBEYXRhIHtcbiAgICBjb25zdCBzdGVwOiBTdGVwRGF0YSA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgnc3RlcCcpLFxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKExhYmVsS2V5cy5mbHV4LmZpbmFsU3RlcCksXG4gICAgICB0eXBlOiBGbHV4VHlwZS5GaW5hbCxcbiAgICAgIHNlY3Rpb25zOiBbXSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgcGFuZWxPcGVuU3RhdGU6IHRydWUsXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIGRlcGVuZGVudERpY3Rpb25hcnk6IHtcbiAgICAgICAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBmYWxzZSxcbiAgICAgICAgZGljdGlvbmFyeUNvbnRyb2xJZGVudGlmaWVyOiAnJyxcbiAgICAgICAgZGVwZW5kZW50VmFsdWVJZHM6IFtdLFxuICAgICAgfSxcbiAgICAgIGVycm9yc1RyYW5zbGF0aW9uczogW10sXG4gICAgICBoYXNOYW1lQW5kRGVzY3JpcHRpb246IHRydWUsXG4gICAgICBjYW5EZXBlbmQ6IHRydWUsXG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBGaW5hbCBzdGVwIGlzIGxpa2UgY3VzdG9tIGJ1dCB3aXRob3V0IG5hdmlnYXRpb25cbiAgICByZXR1cm4gc3RlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWluIGZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhbnkgc3RlcCB0eXBlXG4gICAqL1xuICBjcmVhdGVGbHV4U3RlcChcbiAgICB0eXBlOiBGbHV4VHlwZSxcbiAgICBzdXBwb3J0ZWRMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogU3RlcERhdGEgfCBudWxsIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmx1eFR5cGUuS3ljOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVLeWNTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLkVtYWlsOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDaGVja0VtYWlsU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5QaG9uZTpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hlY2tQaG9uZVN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuU2lnbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2lnblN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuU3RhdHVzOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdGF0dXNTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLkN1c3RvbTpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ3VzdG9tU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5QYXVzZTpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUGF1c2VTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLklkU2NhbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2NhblN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlR2VuZXJhdGVEb2N1bWVudHNTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLkFjdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQWN0aW9uU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5VcGxvYWREb2N1bWVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXBsb2FkRG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLkRvd25sb2FkRG9jdW1lbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURvd25sb2FkRG9jdW1lbnRTdGVwKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICBjYXNlIEZsdXhUeXBlLlZpZXdEb2N1bWVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVmlld0RvY3VtZW50U3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5WaWV3T2ZmZXI6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVZpZXdPZmZlclN0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuRmluYWw6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbmFsU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5ORVRPUElBOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVOZXRvcGlhU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5FVVBMQVRFU0M6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUV1cGxhdGVzY1N0ZXAoc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgIGNhc2UgRmx1eFR5cGUuT3BlbkJhbmtpbmc6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9wZW5CYW5raW5nU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgY2FzZSBGbHV4VHlwZS5WYWxpZGF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVWYWxpZGF0aW9uU3RlcChzdXBwb3J0ZWRMYW5ndWFnZXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5lcnJvcihgVW5zdXBwb3J0ZWQgRmx1eFR5cGU6ICR7dHlwZX1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkb2N1bWVudCBuYW1lIGJ5IElEIGZyb20gZm9ybSBtb2RlbFxuICAgKiBTdGF0aWMgbWV0aG9kIHRvIG1hdGNoIEZsdXhIZWxwZXIgdXNhZ2UgcGF0dGVybiBpbiBmb3Jtcy5tb2RlbC50c1xuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCAtIFRoZSBkb2N1bWVudCBJRCB0byBzZWFyY2ggZm9yXG4gICAqIEBwYXJhbSBmb3JtTW9kZWwgLSBUaGUgZm9ybSBtb2RlbCBjb250YWluaW5nIGRvY3VtZW50cyBhcnJheVxuICAgKiBAcmV0dXJucyBUaGUgZG9jdW1lbnQgbmFtZSBvciBlbXB0eSBzdHJpbmcgaWYgbm90IGZvdW5kXG4gICAqL1xuICBzdGF0aWMgZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudElkOiBzdHJpbmcsIGZvcm1Nb2RlbDogRm9ybU1vZGVsKTogc3RyaW5nIHtcbiAgICBpZiAoIWZvcm1Nb2RlbCB8fCAhZm9ybU1vZGVsLmRvY3VtZW50cyB8fCAhZG9jdW1lbnRJZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY3VtZW50ID0gZm9ybU1vZGVsLmRvY3VtZW50cy5maW5kKFxuICAgICAgKGQ6IEFwcERvY3VtZW50KSA9PiBkLmlkID09PSBkb2N1bWVudElkXG4gICAgKTtcbiAgICByZXR1cm4gZG9jdW1lbnQ/Lm5hbWUgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|