@igo2/geo 17.0.0-next.15 → 17.0.0-next.16
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.
|
@@ -179,7 +179,7 @@ export class OgcFilterTimeComponent {
|
|
|
179
179
|
else {
|
|
180
180
|
this.endValue = value;
|
|
181
181
|
this.onlyYearEnd = this.endValue.getFullYear();
|
|
182
|
-
dateStringFromYearNotime = `${this.onlyYearEnd}-
|
|
182
|
+
dateStringFromYearNotime = `${this.onlyYearEnd}-12-31`;
|
|
183
183
|
}
|
|
184
184
|
// call service with string date without time
|
|
185
185
|
this.changeProperty.next({
|
|
@@ -662,4 +662,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
662
662
|
type: ViewChild,
|
|
663
663
|
args: ['endTime']
|
|
664
664
|
}] } });
|
|
665
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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LENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0F0dEJVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLHVMQUZ0QixDQUFDLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLENBQUMsNmFDN0QvRCxxaFZBMFJBLHEwQ0Q3T0ksSUFBSSw0RkFDSixvQkFBb0Isa1dBQ3BCLFdBQVcsK1ZBQ1gsNEJBQTRCLDRKQUM1QixrQkFBa0IsMmFBQ2xCLGNBQWMsMFdBQ2QsbUJBQW1CLGlnQkFDbkIsZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsZUFBZSxxckJBQ2YsbUJBQW1CLGtOQUNuQixLQUFLLGtIQUNMLGVBQWUsOEJBQ2YsaUJBQWlCOzsyRkFJUixzQkFBc0I7a0JBeEJsQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsNEJBQTRCO3dCQUM1QixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsS0FBSzt3QkFDTCxlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEIsYUFDVSxDQUFDLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLENBQUM7eUZBR3BELFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQWdDeUIsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCO2dCQUNSLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1Db250cm9sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHByb3ZpZGVNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHsgT0dDRmlsdGVyVGltZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci10aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyRHVyaW5nT3B0aW9ucyxcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2djRmlsdGVyVGltZVNsaWRlckNvbXBvbmVudCB9IGZyb20gJy4vb2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci10aW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29nYy1maWx0ZXItdGltZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29nYy1maWx0ZXItdGltZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPZ2NGaWx0ZXJUaW1lU2xpZGVyQ29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW09HQ0ZpbHRlclRpbWVTZXJ2aWNlLCBwcm92aWRlTW9tZW50RGF0ZUFkYXB0ZXIoKV1cbn0pXG5leHBvcnQgY2xhc3MgT2djRmlsdGVyVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2U6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlO1xuICBASW5wdXQoKSBjdXJyZW50RmlsdGVyOiBhbnk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VQcm9wZXJ0eTogRXZlbnRFbWl0dGVyPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHBvczogbnVtYmVyO1xuICAgIHJlZnJlc2hGaWx0ZXI6IGJvb2xlYW47XG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgYmVnaW5Ib3VyczogbnVtYmVyW107XG4gIGVuZEhvdXJzOiBudW1iZXJbXTtcbiAgYmVnaW5NaW51dGVzOiBudW1iZXJbXTtcbiAgZW5kTWludXRlczogbnVtYmVyW107XG4gIGJlZ2luSG91ckZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBiZWdpbk1pbnV0ZUZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBlbmRIb3VyRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGVuZE1pbnV0ZUZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBfYmVnaW5WYWx1ZTogRGF0ZTtcbiAgX2VuZFZhbHVlOiBEYXRlO1xuICByZWFkb25seSBfZGVmYXVsdE1pbjogc3RyaW5nID0gJzE5MDAtMDEtMDEnO1xuICByZWFkb25seSBfZGVmYXVsdE1heDogc3RyaW5nID0gJzIwNTItMDEtMDYnO1xuICByZWFkb25seSBfZGVmYXVsdERpc3BsYXlGb3JtYXQ6IHN0cmluZyA9ICdERC9NTS9ZWVlZIEhIOm1tIEEnO1xuICByZWFkb25seSBfZGVmYXVsdFNsaWRlck1vZGVFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgb2djRmlsdGVyT3BlcmF0b3IgPSBPZ2NGaWx0ZXJPcGVyYXRvcjtcbiAgcHVibGljIHNsaWRlck1vZGUgPSBmYWxzZTtcblxuICByZWFkb25seSBkZWZhdWx0U3RlcE1pbGxpc2Vjb25kID0gNjAwMDA7XG4gIHB1YmxpYyBvcHRpb25zOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG5cbiAgcHVibGljIG9ubHlZZWFyQmVnaW46IG51bWJlcjtcbiAgcHVibGljIG9ubHlZZWFyRW5kOiBudW1iZXI7XG4gIHB1YmxpYyBjYWxlbmRhclR5cGVZZWFyID0gZmFsc2U7XG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcbiAgcHVibGljIGZpbHRlclN0YXRlRGlzYWJsZTogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdlbmREYXRlcGlja2VyVGltZScpIGVuZERhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdiZWdpbkRhdGVwaWNrZXJUaW1lJykgYmVnaW5EYXRlcGlja2VyVGltZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYmVnaW5UaW1lJykgYmVnaW5UaW1lOiBIVE1MSW5wdXRFbGVtZW50O1xuICBAVmlld0NoaWxkKCdlbmRUaW1lJykgZW5kVGltZTogSFRNTElucHV0RWxlbWVudDtcblxuICBwcml2YXRlIGZpbHRlck9yaWdpbkNvbmZpZzogT2djRmlsdGVyRHVyaW5nT3B0aW9ucztcblxuICBnZXQgc3RlcCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxuICAgICAgPyB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxuICAgICAgOiB0aGlzLmN1cnJlbnRGaWx0ZXIuc3RlcDtcbiAgfVxuXG4gIGdldCBzdGVwTWlsbGlzZWNvbmRzKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RlcCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTWlsbGlzZWNvbmRzKCk7XG4gICAgcmV0dXJuIHN0ZXAgPT09IDAgPyB0aGlzLmRlZmF1bHRTdGVwTWlsbGlzZWNvbmQgOiBzdGVwO1xuICB9XG5cbiAgc2V0IGJlZ2luVmFsdWUoYmVnaW46IERhdGUpIHtcbiAgICB0aGlzLl9iZWdpblZhbHVlID0gYmVnaW47XG4gIH1cblxuICBnZXQgYmVnaW5WYWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5WYWx1ZTtcbiAgfVxuXG4gIHNldCBlbmRWYWx1ZShlbmQ6IERhdGUpIHtcbiAgICB0aGlzLl9lbmRWYWx1ZSA9IGVuZDtcbiAgfVxuXG4gIGdldCBlbmRWYWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kVmFsdWU7XG4gIH1cblxuICBnZXQgc2xpZGVySW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcbiAgICAgID8gMjAwMFxuICAgICAgOiB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVySW50ZXJ2YWw7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlXG4gICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGVcbiAgICAgIDogdGhpcy5fZGVmYXVsdE1heDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0XG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0XG4gICAgICA6IHRoaXMuX2RlZmF1bHREaXNwbGF5Rm9ybWF0O1xuICB9XG5cbiAgcHVibGljIGZpbHRlckJlZ2luRnVuY3Rpb247XG4gIHB1YmxpYyBmaWx0ZXJFbmRGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb2djRmlsdGVyVGltZVNlcnZpY2U6IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZmlsdGVyT3JpZ2luQ29uZmlnID0gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVyc1xuICAgICAgLmZpbHRlcnMgYXMgT2djRmlsdGVyRHVyaW5nT3B0aW9ucztcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucy5lbmFibGVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWRcbiAgICAgICAgICA6IHRoaXMuX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDtcbiAgICB9XG4gICAgdGhpcy5iZWdpblZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1pbigpKTtcbiAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1heCgpKTtcblxuICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgdGhpcy5jYWxlbmRhclR5cGVZZWFyID0gdGhpcy5pc0NhbGVuZGFyWWVhck1vZGUoKTtcbiAgICB0aGlzLnNldEZpbHRlclN0YXRlRGlzYWJsZSgpO1xuICAgIHRoaXMudXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKTtcbiAgICAvLyB1cGRhdGUgdmFsdWUgZm9yIG5vdyB2YWx1ZVxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gICAgdGhpcy5kYXRlRmlsdGVyKHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiwgJ2JlZ2luJyk7XG4gICAgdGhpcy5kYXRlRmlsdGVyKHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24sICdlbmQnKTtcbiAgfVxuXG4gIHBhcnNlRmlsdGVyKGZpbHRlcik6IERhdGUge1xuICAgIGlmICghZmlsdGVyKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9IGVsc2UgaWYgKGlzTmFOKG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpKSkge1xuICAgICAgaWYgKGZpbHRlci5zZWFyY2goJ25vdycpID49IDApIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcbiAgICAgICAgaWYgKGZpbHRlci5tYXRjaCgvXFwrLykpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuaW5kZXhPZignKycpICsgMSwgaW50ZXJ2YWwuaW5kZXgpLFxuICAgICAgICAgICAgMTBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBtb21lbnQoKS5hZGQoaW50ZXJ2YWxJbnQsIGludGVydmFsWzBdKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXC0vKSkge1xuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoXG4gICAgICAgICAgICBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5pbmRleE9mKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXG4gICAgICAgICAgICAxMFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgndG9kYXknKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IF9ub3cgPSBtb21lbnQoKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gZmlsdGVyLm1hdGNoKC95ZWFyc3xtb250aHN8d2Vla3N8ZGF5c3xob3Vyc3xzZWNvbmRzLyk7XG4gICAgICAgIGlmIChmaWx0ZXIubWF0Y2goL1xcKy8pKSB7XG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcbiAgICAgICAgICAgIGZpbHRlci5zdWJzdHJpbmcoZmlsdGVyLmluZGV4T2YoJysnKSArIDEsIGludGVydmFsLmluZGV4KSxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KF9ub3cpLmFkZChpbnRlcnZhbEludCwgaW50ZXJ2YWxbMF0pLnRvRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXIubWF0Y2goL1xcLS8pKSB7XG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcbiAgICAgICAgICAgIGZpbHRlci5zdWJzdHJpbmcoZmlsdGVyLmluZGV4T2YoJy0nKSArIDEsIGludGVydmFsLmluZGV4KSxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KF9ub3cpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9ub3c7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKGZpbHRlcik7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbHRlciA/IG5ldyBEYXRlKGZpbHRlcikgOiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgdmFsdWU6IHN0cmluZyB8IERhdGUsXG4gICAgcG9zaXRpb24/LFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgbGV0IHZhbHVlVG1wID0gdGhpcy5nZXREYXRlVGltZSh2YWx1ZSwgcG9zaXRpb24pO1xuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpKSB7XG4gICAgICBsZXQgZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lO1xuICAgICAgaWYgKHBvc2l0aW9uID09PSAxKSB7XG4gICAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lID0gYCR7dGhpcy5vbmx5WWVhckJlZ2lufS0wMS0wMWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJFbmR9LTAxLTAxYDtcbiAgICAgIH1cbiAgICAgIC8vIGNhbGwgc2VydmljZSB3aXRoIHN0cmluZyBkYXRlIHdpdGhvdXQgdGltZVxuICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHtcbiAgICAgICAgdmFsdWU6IGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSxcbiAgICAgICAgcG9zOiBwb3NpdGlvbixcbiAgICAgICAgcmVmcmVzaEZpbHRlclxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbiA9PT0gMiAmJiB0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAnZGF0ZScgJiYgIXRoaXMuc2xpZGVyTW9kZSkge1xuICAgICAgLyogQWJvdmUgbW9udGg6IHNlZSB5ZWFyU2VsZWN0ZWQgb3IgbW9udGhTZWxlY3RlZCAqL1xuICAgICAgdmFsdWVUbXAgPSBtb21lbnQodmFsdWVUbXApLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlVG1wO1xuICAgICAgaWYgKHRoaXMucmVzdHJpY3RlZFRvU3RlcCgpKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShcbiAgICAgICAgICB0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLmFkZFN0ZXAodmFsdWVUbXAsIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyksXG4gICAgICAgICAgMixcbiAgICAgICAgICByZWZyZXNoRmlsdGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZVRtcDtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVIb3Vyc01pbnV0ZXNBcnJheSgpO1xuICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7XG4gICAgICB2YWx1ZTogdmFsdWVUbXAudG9JU09TdHJpbmcoKSxcbiAgICAgIHBvczogcG9zaXRpb24sXG4gICAgICByZWZyZXNoRmlsdGVyXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEYXRlKHZhbHVlKTogRGF0ZSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGNhbGVuZGFyVHlwZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcbiAgICAgIHJldHVybiAneWVhcic7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPCA4NjQwMDAwMCkge1xuICAgICAgcmV0dXJuICdkYXRldGltZSc7XG4gICAgfVxuICAgIHJldHVybiAnZGF0ZSc7XG4gIH1cblxuICBpc0NhbGVuZGFyWWVhck1vZGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICd5ZWFyJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB5ZWFyT25seUlucHV0Q2hhbmdlKGNoYW5nZUV2ZW50LCBkYXRlUGlja2VyPzogYW55LCBwcm9wZXJ0eT86IHN0cmluZykge1xuICAgIGNvbnN0IHllYXIgPSBjaGFuZ2VFdmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh5ZWFyKTtcbiAgICB0aGlzLnllYXJTZWxlY3RlZChkYXRlLCBkYXRlUGlja2VyLCBwcm9wZXJ0eSk7XG4gIH1cblxuICB5ZWFyU2VsZWN0ZWQoXG4gICAgeWVhcixcbiAgICBkYXRlUGlja2VyPzogYW55LFxuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAoZGF0ZVBpY2tlcikge1xuICAgICAgICBkYXRlUGlja2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmQnKSB7XG4gICAgICAgIC8vIGNoYW5nZSB2YWx1ZSAwMSBqYW4gdG8gMzEgZGVjIHNhbWUgeWVhclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyAmJlxuICAgICAgICB0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSAmJlxuICAgICAgICAhdGhpcy5jYWxlbmRhclR5cGVZZWFyXG4gICAgICApIHtcbiAgICAgICAgdGhpcy55ZWFyU2VsZWN0ZWQoeWVhciwgdW5kZWZpbmVkLCAnZW5kJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgICAgIHllYXIsXG4gICAgICAgIHByb3BlcnR5ID09PSAnYmVnaW4nID8gMSA6IDIsXG4gICAgICAgIHJlZnJlc2hGaWx0ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbW9udGhTZWxlY3RlZChcbiAgICBtb250aCxcbiAgICBkYXRlUGlja2VyPzogYW55LFxuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01vbnRoRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgaWYgKGRhdGVQaWNrZXIpIHtcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5kJykge1xuICAgICAgICBtb250aCA9IG1vbWVudChtb250aCkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSAnYmVnaW4nICYmIHRoaXMucmVzdHJpY3RlZFRvU3RlcCgpKSB7XG4gICAgICAgIHRoaXMubW9udGhTZWxlY3RlZChtb250aCwgdW5kZWZpbmVkLCAnZW5kJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgICAgIG1vbnRoLFxuICAgICAgICBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyA/IDEgOiAyLFxuICAgICAgICByZWZyZXNoRmlsdGVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyVmlldygpOiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInIHtcbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5zdGVwTWlsbGlzZWNvbmRzO1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhcbiAgICAgIHRoaXMucGFyc2VGaWx0ZXIodGhpcy5jdXJyZW50RmlsdGVyLmVuZCkuZ2V0VGltZSgpIC1cbiAgICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4pLmdldFRpbWUoKVxuICAgICk7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01vbnRoRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuICd5ZWFyJztcbiAgICB9IGVsc2UgaWYgKHRlc3QgPCA4NjQwMDAwMCAmJiBkaWZmIDwgODY0MDAwMDApIHtcbiAgICAgIHJldHVybiAnY2xvY2snIGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdtb250aCc7XG4gICAgfVxuICB9XG5cbiAgZGF0ZUZpbHRlcih0eXBlOiBzdHJpbmcsIGRhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGNvbnN0IGRpZmYgPSBkYXRlVmFsdWUuZ2V0VGltZSgpIC0gbmV3IERhdGUodGhpcy5oYW5kbGVNaW4oKSkuZ2V0VGltZSgpO1xuXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYoXG4gICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihcbiAgICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdiZWdpbicpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCZWdpbkZ1bmN0aW9uID1cbiAgICAgICAgICBtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc1llYXJzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBjb25zdCBtb250aERpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICdtb250aHMnLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKHR5cGUgPT09ICdlbmQnKSB7XG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XG4gICAgICAgIGNvbnN0IG1vbnRoRGlmZlBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZVBsdXMxKS5kaWZmKFxuICAgICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgICAnbW9udGhzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSA9PT0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9XG4gICAgICAgICAgbW9udGhEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSA9PT0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNXZWVrRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgY29uc3Qgd2Vla0RpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICd3ZWVrcycsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihcbiAgICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICAgJ3dlZWtzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIHdlZWtEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc1dlZWtzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JlZ2luJykge1xuICAgICAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPVxuICAgICAgICAgIHdlZWtEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNXZWVrcygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0RheUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICdkYXlzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBkYXlEaWZmUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlUGx1czEpLmRpZmYoXG4gICAgICAgICAgbW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLFxuICAgICAgICAgICdkYXlzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IF9tb2QgPSBkYXlEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJFbmRGdW5jdGlvbiA9XG4gICAgICAgICAgKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEpIHx8IF9tb2QgPT09IDA7IC8vIDEgbWlsbGlzZWNvbmQgPSAxLjE1NzQwNzQwNzQwNzQwNzZlLThcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIGNvbnN0IF9tb2QgPSAoZGF5RGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzRGF5cygpKSArIDE7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9XG4gICAgICAgICAgKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEgJiYgX21vZCAhPT0gMCkgfHwgX21vZCA9PT0gMTsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0hvdXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgY29uc3QgaG91ckRpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgICAnaG91cnMnLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWx0ZXJFbmRGdW5jdGlvbiA9XG4gICAgICAgICAgaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JlZ2luJykge1xuICAgICAgICBjb25zdCBob3VyRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYoXG4gICAgICAgICAgbW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLFxuICAgICAgICAgICdob3VycycsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPVxuICAgICAgICAgIGhvdXJEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNIb3VycygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01pbnV0ZUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICB0aGlzLmZpbHRlckVuZEZ1bmN0aW9uID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlckVuZEZ1bmN0aW9uID0gZGlmZiAlIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA9PT0gMDtcbiAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPSBkaWZmICUgdGhpcy5zdGVwTWlsbGlzZWNvbmRzID09PSAwO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldERhdGVUaW1lKGRhdGUsIHBvcykge1xuICAgIGNvbnN0IHZhbHVldG1wID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbGV0IHZhbHVldG1wMjtcbiAgICBpZiAoIXRoaXMuc2xpZGVyTW9kZSkge1xuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcbiAgICAgICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjoge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoMCwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoXG4gICAgICAgICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZXRtcDIgPyB2YWx1ZXRtcDIgOiB2YWx1ZXRtcCk7XG4gIH1cblxuICBoYW5kbGVNaW51dGVJbmNyZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAvIDEwMDAgPT09IDYwXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnN0ZXBNaWxsaXNlY29uZHMgJSAzNjAwMDAwKSAvIDYwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuIDYwO1xuICAgIH1cbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGhhbmRsZUhvdXJJbmNyZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzSG91ckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgLyAxMDAwIC8gNjAgLyA2MDtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBmdWxsQmVnaW5Ib3Vyc0FycmF5KGNoZWNrRW5kVmFsdWU/KSB7XG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtcbiAgICAgICAgICBsZW5ndGg6XG4gICAgICAgICAgICAodGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMVxuICAgICAgICB9LFxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iZWdpbkhvdXJzID0gQXJyYXkuZnJvbShcbiAgICAgICAgeyBsZW5ndGg6ICgyMyAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpKTtcbiAgfVxuXG4gIGZ1bGxFbmRIb3Vyc0FycmF5KGNoZWNrRW5kVmFsdWU/KSB7XG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7XG4gICAgICAgICAgbGVuZ3RoOlxuICAgICAgICAgICAgKDIzIC0gdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSkgL1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArXG4gICAgICAgICAgICAxXG4gICAgICAgIH0sXG4gICAgICAgIChfLCBpKSA9PlxuICAgICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUuZ2V0SG91cnMoKSk7XG4gIH1cblxuICBmdWxsQmVnaW5NaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5iZWdpbk1pbnV0ZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7XG4gICAgICAgICAgbGVuZ3RoOlxuICAgICAgICAgICAgKHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgK1xuICAgICAgICAgICAgMVxuICAgICAgICB9LFxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJlZ2luTWludXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAoNTkgLSAwKSAvIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJlZ2luVmFsdWUuZ2V0TWludXRlcygpKTtcbiAgfVxuXG4gIGZ1bGxFbmRNaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAge1xuICAgICAgICAgIGxlbmd0aDpcbiAgICAgICAgICAgICg1OSAtIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC52YWx1ZSkgL1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICtcbiAgICAgICAgICAgIDFcbiAgICAgICAgfSxcbiAgICAgICAgKF8sIGkpID0+XG4gICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kTWludXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAoNTkgLSAwKSAvIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRNaW51dGVzKCkpO1xuICB9XG5cbiAgdXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKSB7XG4gICAgY29uc3QgYmVnaW5UbXAgPSBuZXcgRGF0ZSh0aGlzLmJlZ2luVmFsdWUpO1xuICAgIGNvbnN0IGVuZFRtcCA9IG5ldyBEYXRlKHRoaXMuZW5kVmFsdWUpO1xuICAgIGlmIChiZWdpblRtcC5zZXRIb3VycygwLCAwKSA9PT0gZW5kVG1wLnNldEhvdXJzKDAsIDApKSB7XG4gICAgICB0aGlzLmZ1bGxCZWdpbkhvdXJzQXJyYXkodHJ1ZSk7XG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KHRydWUpO1xuICAgICAgaWYgKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpID09PSB0aGlzLmVuZFZhbHVlLmdldEhvdXJzKCkpIHtcbiAgICAgICAgdGhpcy5mdWxsQmVnaW5NaW51dGVzQXJyYXkodHJ1ZSk7XG4gICAgICAgIHRoaXMuZnVsbEVuZE1pbnV0ZXNBcnJheSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mdWxsQmVnaW5Ib3Vyc0FycmF5KCk7XG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KCk7XG4gICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSgpO1xuICAgICAgdGhpcy5mdWxsRW5kTWludXRlc0FycmF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XG4gICAgdGhpcy5jaGFuZ2VUZW1wb3JhbFByb3BlcnR5KHRoaXMuYmVnaW5WYWx1ZSwgMSwgZmFsc2UpO1xuICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh0aGlzLmVuZFZhbHVlLCAyLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0cmljdGVkVG9TdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXBcbiAgICAgID8gdGhpcy5jdXJyZW50RmlsdGVyLnJlc3RyaWN0VG9TdGVwXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1pbigpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luXG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5iZWdpblxuICAgICAgOiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlXG4gICAgICAgID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZVxuICAgICAgICA6IHRoaXMuX2RlZmF1bHRNaW47XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTWF4KCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIuZW5kXG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5lbmRcbiAgICAgIDogdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZVxuICAgICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGVcbiAgICAgICAgOiB0aGlzLl9kZWZhdWx0TWF4O1xuICB9XG5cbiAgY2hhbmdlUHJvcGVydHlCeVBhc3MoZXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoZXZlbnQpO1xuICB9XG5cbiAgbW9kZUNoYW5nZShldmVudCkge1xuICAgIGlmICghZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGaWx0ZXJTdGF0ZURpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSAhdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRldGltZScpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUoc3RyaW5nRGF0ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgLy8gd2FybmluZyBjcmVhdGUgZGF0ZSB3aXRoIG5vIHRpbWUgbWFrZSBhIGRhdGUgVVRDIHdpdGggVFogYW5kIHRoZSBkYXRlIGNyZWF0ZSBtYXliZSBub3QgdGhlIHNhbWUgeWVhciwgbW9udGggYW5kIGRheVxuICAgIC8vIGV4ZW1wbGU6XG4gICAgLy8gbmV3IERhdGUoJzIwMjItMDEtMDEnKSAtPiBGcmkgRGVjIDMxIDIwMjEgMTk6MDA6MDAgR01ULTA1MDAgKGhldXJlIG5vcm1hbGUgZGUgbOKAmUVzdCBub3JkLWFtw6lyaWNhaW4pXG4gICAgLy8gdG8gY3JlYXRlIHNhbWUgZGF0ZSBhcyBzdHJpbmcsIGFkZCB0aW1lIDAwIGluIHRoZSBjcmVhdGlvblxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxuICAgIGxldCB5ZWFyO1xuICAgIGxldCBtb250aCA9ICcwMSc7XG4gICAgbGV0IGRheSA9ICcwMSc7XG4gICAgaWYgKHN0cmluZ0RhdGUubGVuZ3RoID09PSAxMCkge1xuICAgICAgY29uc3QgZGF0ZUl0ZW1zID0gc3RyaW5nRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdFcnJvciBpbiBjb25maWcgZGF0ZSBiZWdpbi1lbmQgZm9yIG9nY0ZpbHRlcjogRGF0ZSB3aXRob3V0IHRpbWUgZm9ybWF0IG5lZWQgdG8gYmUgWVlZWS1NTS1ERCBvciBZWVlZJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeWVhciA9IGRhdGVJdGVtc1swXTtcbiAgICAgICAgbW9udGggPSBkYXRlSXRlbXNbMV07XG4gICAgICAgIGRheSA9IGRhdGVJdGVtc1syXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0cmluZ0RhdGUubGVuZ3RoID09PSA0KSB7XG4gICAgICB5ZWFyID0gc3RyaW5nRGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHN0cmluZ0RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoYCR7eWVhcn0tJHttb250aH0tJHtkYXl9IDAwOjAwOjAwYCk7XG4gIH1cblxuICByZXNldEZpbHRlcigpIHtcbiAgICBsZXQgbWluRGVmYXVsdERhdGU7XG4gICAgbGV0IG1heERlZmF1bHREYXRlO1xuICAgIGxldCBtaW5EZWZhdWx0SVNPU3RyaW5nO1xuICAgIGxldCBtYXhEZWZhdWx0SVNPU3RyaW5nO1xuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xuICAgICAgICBsZXQgdG9kYXlEYXRlU3RyaW5nTm9UaW1lID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUNBJyk7IC8vICcyMDIyLTAyLTEzJ1xuICAgICAgICBtYXhEZWZhdWx0SVNPU3RyaW5nID0gYCR7dG9kYXlEYXRlU3RyaW5nTm9UaW1lLnN1YnN0cmluZygwLCA0KX0tMDEtMDFgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IGAke3RoaXMuZmlsdGVyT3JpZ2luQ29uZmlnLmVuZC5zdWJzdHJpbmcoMCwgNCl9LTAxLTAxYDtcbiAgICAgIH1cbiAgICAgIG1pbkRlZmF1bHRJU09TdHJpbmcgPSBgJHt0aGlzLmZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCwgNCl9LTAxLTAxYDtcbiAgICAgIG1pbkRlZmF1bHREYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKG1pbkRlZmF1bHRJU09TdHJpbmcpO1xuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWF4RGVmYXVsdElTT1N0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbkRlZmF1bHREYXRlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbik7XG4gICAgICBtYXhEZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5maWx0ZXJPcmlnaW5Db25maWcuZW5kKTtcbiAgICAgIG1pbkRlZmF1bHRJU09TdHJpbmcgPSBtaW5EZWZhdWx0RGF0ZS50b0lTT1N0cmluZygpO1xuICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IG1heERlZmF1bHREYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luICE9PSBtaW5EZWZhdWx0SVNPU3RyaW5nIHx8XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZW5kICE9PSBtYXhEZWZhdWx0SVNPU3RyaW5nXG4gICAgKSB7XG4gICAgICB0aGlzLmJlZ2luVmFsdWUgPSBtaW5EZWZhdWx0RGF0ZTtcbiAgICAgIHRoaXMuZW5kVmFsdWUgPSBtYXhEZWZhdWx0RGF0ZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRmlsdGVyU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2V0RmlsdGVyU3RhdGVEaXNhYmxlKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGV0aW1lLWNvbnRhaW5lclwiPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxuICAgIFsobmdNb2RlbCldPVwic2xpZGVyTW9kZVwiXG4gICAgKGNoYW5nZSk9XCJtb2RlQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZmlsdGVyLnNsaWRlck1vZGVUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XG4gICAgPGlnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyXG4gICAgICBbYmVnaW5dPVwiYmVnaW5WYWx1ZVwiXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXG4gICAgICBbY3VycmVudEZpbHRlcl09XCJjdXJyZW50RmlsdGVyXCJcbiAgICAgIFtkYXRhc291cmNlXT1cImRhdGFzb3VyY2VcIlxuICAgICAgKGNoYW5nZVByb3BlcnR5KT1cImNoYW5nZVByb3BlcnR5QnlQYXNzKCRldmVudClcIlxuICAgID5cbiAgICA8L2lnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIXNsaWRlck1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwieWVhci1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZVllYXJcIj5cbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXG4gICAgICAgIHdpdGggdGhlIGRhdGVwaWNrZXIgIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwieWVhci1pbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLnN0YXJ0WWVhcicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcbiAgICAgICAgICB2YWx1ZT1cInt7IG9ubHlZZWFyQmVnaW4gfX1cIlxuICAgICAgICAgIChjaGFuZ2UpPVwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgW2Zvcl09XCJiZWdpbkRhdGVwaWNrZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICA+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgcGFuZWxDbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXG4gICAgICAgICAgI2JlZ2luRGF0ZXBpY2tlclxuICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxuICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgYmVnaW5EYXRlcGlja2VyLCAnYmVnaW4nKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjYmVnaW5ZZWFyXG4gICAgICAgICAgY2xhc3M9XCJ5ZWFyLWlucHV0LWhpZGVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcbiAgICAgICAgICBlbmFibGVkPVwiZmFsc2VcIlxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIlxuICAgICAgICAgICAgYmVnaW5WYWx1ZSA/IGJlZ2luVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW21pbl09XCJoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgW21heF09XCJcbiAgICAgICAgICAgIGVuZFZhbHVlICYmICFyZXN0cmljdGVkVG9TdGVwKClcbiAgICAgICAgICAgICAgPyBlbmRWYWx1ZVxuICAgICAgICAgICAgICA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInllYXItaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8udGltZUZpbHRlci5lbmRZZWFyJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIGNsYXNzPVwieWVhci1pbnB1dC1vbmx5LXllYXJcIlxuICAgICAgICAgIHZhbHVlPVwie3sgb25seVllYXJFbmQgfX1cIlxuICAgICAgICAgIChjaGFuZ2UpPVwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGVcbiAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICBbZm9yXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICA+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgICAgIHBhbmVsQ2xhc3M9XCJkYXRlcGlja2VyLXllYXJcIlxuICAgICAgICAgICNlbmREYXRlcGlja2VyXG4gICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNlbmRZZWFyXG4gICAgICAgICAgY2xhc3M9XCJ5ZWFyLWlucHV0LWhpZGVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZW5kRGF0ZXBpY2tlclwiXG4gICAgICAgICAgZW5hYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICByZWFkb25seT1cInRydWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZSA/IGVuZFZhbHVlIDogaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIlxuICAgICAgICAgIFttaW5dPVwiXG4gICAgICAgICAgICBiZWdpblZhbHVlID8gYmVnaW5WYWx1ZSA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwicmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+e3sgcmVzZXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtZmlsdGVyLXN0YXRlXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmZpbHRlci50b2dnbGVGaWx0ZXJTdGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiIWZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKSAhPT0gJ3llYXInXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXRcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGF0ZS1pbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAgID48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNiZWdpblxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImJlZ2luRGF0ZXBpY2tlclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5zdGFydERhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGJlZ2luLnZhbHVlLCAxKVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJmaWx0ZXJCZWdpbkZ1bmN0aW9uXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJcbiAgICAgICAgICAgICAgYmVnaW5WYWx1ZSA/IGJlZ2luVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxuICAgICAgICAgICAgW21heF09XCJcbiAgICAgICAgICAgICAgZW5kVmFsdWUgJiYgIXJlc3RyaWN0ZWRUb1N0ZXAoKVxuICAgICAgICAgICAgICAgID8gZW5kVmFsdWVcbiAgICAgICAgICAgICAgICA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgICAgICNiZWdpbkRhdGVwaWNrZXJcbiAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxuICAgICAgICAgICAgW3N0YXJ0QXRdPVwiYmVnaW5WYWx1ZVwiXG4gICAgICAgICAgICAoeWVhclNlbGVjdGVkKT1cInllYXJTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjYWxlbmRhclR5cGUoKSA9PT0gJ2RhdGV0aW1lJ1wiIGNsYXNzPVwidGltZS1pbnB1dFwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnRpbWVGaWx0ZXIuaG91cicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbkhvdXJGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e1xuICAgICAgICAgICAgICAgIGhvdXJcbiAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtaW51dGUtaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnRpbWVGaWx0ZXIubWludXRlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luTWludXRlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxuICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoYmVnaW4udmFsdWUsIDEpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFyZXN0cmljdGVkVG9TdGVwKClcIiBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICBbZm9yXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2VuZFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLnRpbWVGaWx0ZXIuZW5kRGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoZW5kLnZhbHVlLCAyKVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJmaWx0ZXJFbmRGdW5jdGlvblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgIGVuZFZhbHVlID8gZW5kVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFttaW5dPVwiXG4gICAgICAgICAgICAgIGJlZ2luVmFsdWUgPyBiZWdpblZhbHVlIDogaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxsZXJcIj48L3NwYW4+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgICAjZW5kRGF0ZXBpY2tlclxuICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJlbmRWYWx1ZVwiXG4gICAgICAgICAgICAoeWVhclNlbGVjdGVkKT1cInllYXJTZWxlY3RlZCgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXG4gICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJtb250aFNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRldGltZSdcIiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLmhvdXInIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBlbmRIb3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3tcbiAgICAgICAgICAgICAgICBob3VyXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmRNaW51dGVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7XG4gICAgICAgICAgICAgICAgbWludXRlXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0RmlsdGVyKClcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmZpbHRlci5yZXNldEZpbHRlcnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj57eyByZXNldEljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1maWx0ZXItc3RhdGVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRmlsdGVyU3RhdGUoKVwiXG4gICAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCIhZmlsdGVyU3RhdGVEaXNhYmxlXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
665
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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LENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0F0dEJVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLHVMQUZ0QixDQUFDLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLENBQUMsNmFDN0QvRCxxaFZBMFJBLHEwQ0Q3T0ksSUFBSSw0RkFDSixvQkFBb0Isa1dBQ3BCLFdBQVcsK1ZBQ1gsNEJBQTRCLDRKQUM1QixrQkFBa0IsMmFBQ2xCLGNBQWMsMFdBQ2QsbUJBQW1CLGlnQkFDbkIsZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsZUFBZSxxckJBQ2YsbUJBQW1CLGtOQUNuQixLQUFLLGtIQUNMLGVBQWUsOEJBQ2YsaUJBQWlCOzsyRkFJUixzQkFBc0I7a0JBeEJsQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsNEJBQTRCO3dCQUM1QixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsS0FBSzt3QkFDTCxlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEIsYUFDVSxDQUFDLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLENBQUM7eUZBR3BELFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQWdDeUIsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCO2dCQUNSLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1Db250cm9sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHByb3ZpZGVNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHsgT0dDRmlsdGVyVGltZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci10aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyRHVyaW5nT3B0aW9ucyxcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2djRmlsdGVyVGltZVNsaWRlckNvbXBvbmVudCB9IGZyb20gJy4vb2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci10aW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29nYy1maWx0ZXItdGltZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29nYy1maWx0ZXItdGltZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPZ2NGaWx0ZXJUaW1lU2xpZGVyQ29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW09HQ0ZpbHRlclRpbWVTZXJ2aWNlLCBwcm92aWRlTW9tZW50RGF0ZUFkYXB0ZXIoKV1cbn0pXG5leHBvcnQgY2xhc3MgT2djRmlsdGVyVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2U6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlO1xuICBASW5wdXQoKSBjdXJyZW50RmlsdGVyOiBhbnk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VQcm9wZXJ0eTogRXZlbnRFbWl0dGVyPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHBvczogbnVtYmVyO1xuICAgIHJlZnJlc2hGaWx0ZXI6IGJvb2xlYW47XG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgYmVnaW5Ib3VyczogbnVtYmVyW107XG4gIGVuZEhvdXJzOiBudW1iZXJbXTtcbiAgYmVnaW5NaW51dGVzOiBudW1iZXJbXTtcbiAgZW5kTWludXRlczogbnVtYmVyW107XG4gIGJlZ2luSG91ckZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBiZWdpbk1pbnV0ZUZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBlbmRIb3VyRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGVuZE1pbnV0ZUZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBfYmVnaW5WYWx1ZTogRGF0ZTtcbiAgX2VuZFZhbHVlOiBEYXRlO1xuICByZWFkb25seSBfZGVmYXVsdE1pbjogc3RyaW5nID0gJzE5MDAtMDEtMDEnO1xuICByZWFkb25seSBfZGVmYXVsdE1heDogc3RyaW5nID0gJzIwNTItMDEtMDYnO1xuICByZWFkb25seSBfZGVmYXVsdERpc3BsYXlGb3JtYXQ6IHN0cmluZyA9ICdERC9NTS9ZWVlZIEhIOm1tIEEnO1xuICByZWFkb25seSBfZGVmYXVsdFNsaWRlck1vZGVFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgb2djRmlsdGVyT3BlcmF0b3IgPSBPZ2NGaWx0ZXJPcGVyYXRvcjtcbiAgcHVibGljIHNsaWRlck1vZGUgPSBmYWxzZTtcblxuICByZWFkb25seSBkZWZhdWx0U3RlcE1pbGxpc2Vjb25kID0gNjAwMDA7XG4gIHB1YmxpYyBvcHRpb25zOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG5cbiAgcHVibGljIG9ubHlZZWFyQmVnaW46IG51bWJlcjtcbiAgcHVibGljIG9ubHlZZWFyRW5kOiBudW1iZXI7XG4gIHB1YmxpYyBjYWxlbmRhclR5cGVZZWFyID0gZmFsc2U7XG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcbiAgcHVibGljIGZpbHRlclN0YXRlRGlzYWJsZTogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdlbmREYXRlcGlja2VyVGltZScpIGVuZERhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdiZWdpbkRhdGVwaWNrZXJUaW1lJykgYmVnaW5EYXRlcGlja2VyVGltZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYmVnaW5UaW1lJykgYmVnaW5UaW1lOiBIVE1MSW5wdXRFbGVtZW50O1xuICBAVmlld0NoaWxkKCdlbmRUaW1lJykgZW5kVGltZTogSFRNTElucHV0RWxlbWVudDtcblxuICBwcml2YXRlIGZpbHRlck9yaWdpbkNvbmZpZzogT2djRmlsdGVyRHVyaW5nT3B0aW9ucztcblxuICBnZXQgc3RlcCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxuICAgICAgPyB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxuICAgICAgOiB0aGlzLmN1cnJlbnRGaWx0ZXIuc3RlcDtcbiAgfVxuXG4gIGdldCBzdGVwTWlsbGlzZWNvbmRzKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc3RlcCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTWlsbGlzZWNvbmRzKCk7XG4gICAgcmV0dXJuIHN0ZXAgPT09IDAgPyB0aGlzLmRlZmF1bHRTdGVwTWlsbGlzZWNvbmQgOiBzdGVwO1xuICB9XG5cbiAgc2V0IGJlZ2luVmFsdWUoYmVnaW46IERhdGUpIHtcbiAgICB0aGlzLl9iZWdpblZhbHVlID0gYmVnaW47XG4gIH1cblxuICBnZXQgYmVnaW5WYWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5WYWx1ZTtcbiAgfVxuXG4gIHNldCBlbmRWYWx1ZShlbmQ6IERhdGUpIHtcbiAgICB0aGlzLl9lbmRWYWx1ZSA9IGVuZDtcbiAgfVxuXG4gIGdldCBlbmRWYWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kVmFsdWU7XG4gIH1cblxuICBnZXQgc2xpZGVySW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcbiAgICAgID8gMjAwMFxuICAgICAgOiB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVySW50ZXJ2YWw7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlXG4gICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGVcbiAgICAgIDogdGhpcy5fZGVmYXVsdE1heDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0XG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0XG4gICAgICA6IHRoaXMuX2RlZmF1bHREaXNwbGF5Rm9ybWF0O1xuICB9XG5cbiAgcHVibGljIGZpbHRlckJlZ2luRnVuY3Rpb247XG4gIHB1YmxpYyBmaWx0ZXJFbmRGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb2djRmlsdGVyVGltZVNlcnZpY2U6IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZmlsdGVyT3JpZ2luQ29uZmlnID0gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVyc1xuICAgICAgLmZpbHRlcnMgYXMgT2djRmlsdGVyRHVyaW5nT3B0aW9ucztcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucy5lbmFibGVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWRcbiAgICAgICAgICA6IHRoaXMuX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDtcbiAgICB9XG4gICAgdGhpcy5iZWdpblZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1pbigpKTtcbiAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1heCgpKTtcblxuICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgdGhpcy5jYWxlbmRhclR5cGVZZWFyID0gdGhpcy5pc0NhbGVuZGFyWWVhck1vZGUoKTtcbiAgICB0aGlzLnNldEZpbHRlclN0YXRlRGlzYWJsZSgpO1xuICAgIHRoaXMudXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKTtcbiAgICAvLyB1cGRhdGUgdmFsdWUgZm9yIG5vdyB2YWx1ZVxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gICAgdGhpcy5kYXRlRmlsdGVyKHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiwgJ2JlZ2luJyk7XG4gICAgdGhpcy5kYXRlRmlsdGVyKHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24sICdlbmQnKTtcbiAgfVxuXG4gIHBhcnNlRmlsdGVyKGZpbHRlcik6IERhdGUge1xuICAgIGlmICghZmlsdGVyKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9IGVsc2UgaWYgKGlzTmFOKG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpKSkge1xuICAgICAgaWYgKGZpbHRlci5zZWFyY2goJ25vdycpID49IDApIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcbiAgICAgICAgaWYgKGZpbHRlci5tYXRjaCgvXFwrLykpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuaW5kZXhPZignKycpICsgMSwgaW50ZXJ2YWwuaW5kZXgpLFxuICAgICAgICAgICAgMTBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBtb21lbnQoKS5hZGQoaW50ZXJ2YWxJbnQsIGludGVydmFsWzBdKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXC0vKSkge1xuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoXG4gICAgICAgICAgICBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5pbmRleE9mKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXG4gICAgICAgICAgICAxMFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgndG9kYXknKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IF9ub3cgPSBtb21lbnQoKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gZmlsdGVyLm1hdGNoKC95ZWFyc3xtb250aHN8d2Vla3N8ZGF5c3xob3Vyc3xzZWNvbmRzLyk7XG4gICAgICAgIGlmIChmaWx0ZXIubWF0Y2goL1xcKy8pKSB7XG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcbiAgICAgICAgICAgIGZpbHRlci5zdWJzdHJpbmcoZmlsdGVyLmluZGV4T2YoJysnKSArIDEsIGludGVydmFsLmluZGV4KSxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KF9ub3cpLmFkZChpbnRlcnZhbEludCwgaW50ZXJ2YWxbMF0pLnRvRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXIubWF0Y2goL1xcLS8pKSB7XG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcbiAgICAgICAgICAgIGZpbHRlci5zdWJzdHJpbmcoZmlsdGVyLmluZGV4T2YoJy0nKSArIDEsIGludGVydmFsLmluZGV4KSxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KF9ub3cpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9ub3c7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKGZpbHRlcik7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbHRlciA/IG5ldyBEYXRlKGZpbHRlcikgOiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgdmFsdWU6IHN0cmluZyB8IERhdGUsXG4gICAgcG9zaXRpb24/LFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgbGV0IHZhbHVlVG1wID0gdGhpcy5nZXREYXRlVGltZSh2YWx1ZSwgcG9zaXRpb24pO1xuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpKSB7XG4gICAgICBsZXQgZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lO1xuICAgICAgaWYgKHBvc2l0aW9uID09PSAxKSB7XG4gICAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lID0gYCR7dGhpcy5vbmx5WWVhckJlZ2lufS0wMS0wMWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJFbmR9LTEyLTMxYDtcbiAgICAgIH1cbiAgICAgIC8vIGNhbGwgc2VydmljZSB3aXRoIHN0cmluZyBkYXRlIHdpdGhvdXQgdGltZVxuICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHtcbiAgICAgICAgdmFsdWU6IGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSxcbiAgICAgICAgcG9zOiBwb3NpdGlvbixcbiAgICAgICAgcmVmcmVzaEZpbHRlclxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbiA9PT0gMiAmJiB0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAnZGF0ZScgJiYgIXRoaXMuc2xpZGVyTW9kZSkge1xuICAgICAgLyogQWJvdmUgbW9udGg6IHNlZSB5ZWFyU2VsZWN0ZWQgb3IgbW9udGhTZWxlY3RlZCAqL1xuICAgICAgdmFsdWVUbXAgPSBtb21lbnQodmFsdWVUbXApLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlVG1wO1xuICAgICAgaWYgKHRoaXMucmVzdHJpY3RlZFRvU3RlcCgpKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShcbiAgICAgICAgICB0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLmFkZFN0ZXAodmFsdWVUbXAsIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyksXG4gICAgICAgICAgMixcbiAgICAgICAgICByZWZyZXNoRmlsdGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZVRtcDtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVIb3Vyc01pbnV0ZXNBcnJheSgpO1xuICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7XG4gICAgICB2YWx1ZTogdmFsdWVUbXAudG9JU09TdHJpbmcoKSxcbiAgICAgIHBvczogcG9zaXRpb24sXG4gICAgICByZWZyZXNoRmlsdGVyXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEYXRlKHZhbHVlKTogRGF0ZSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGNhbGVuZGFyVHlwZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcbiAgICAgIHJldHVybiAneWVhcic7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPCA4NjQwMDAwMCkge1xuICAgICAgcmV0dXJuICdkYXRldGltZSc7XG4gICAgfVxuICAgIHJldHVybiAnZGF0ZSc7XG4gIH1cblxuICBpc0NhbGVuZGFyWWVhck1vZGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICd5ZWFyJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB5ZWFyT25seUlucHV0Q2hhbmdlKGNoYW5nZUV2ZW50LCBkYXRlUGlja2VyPzogYW55LCBwcm9wZXJ0eT86IHN0cmluZykge1xuICAgIGNvbnN0IHllYXIgPSBjaGFuZ2VFdmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh5ZWFyKTtcbiAgICB0aGlzLnllYXJTZWxlY3RlZChkYXRlLCBkYXRlUGlja2VyLCBwcm9wZXJ0eSk7XG4gIH1cblxuICB5ZWFyU2VsZWN0ZWQoXG4gICAgeWVhcixcbiAgICBkYXRlUGlja2VyPzogYW55LFxuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAoZGF0ZVBpY2tlcikge1xuICAgICAgICBkYXRlUGlja2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmQnKSB7XG4gICAgICAgIC8vIGNoYW5nZSB2YWx1ZSAwMSBqYW4gdG8gMzEgZGVjIHNhbWUgeWVhclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyAmJlxuICAgICAgICB0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSAmJlxuICAgICAgICAhdGhpcy5jYWxlbmRhclR5cGVZZWFyXG4gICAgICApIHtcbiAgICAgICAgdGhpcy55ZWFyU2VsZWN0ZWQoeWVhciwgdW5kZWZpbmVkLCAnZW5kJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgICAgIHllYXIsXG4gICAgICAgIHByb3BlcnR5ID09PSAnYmVnaW4nID8gMSA6IDIsXG4gICAgICAgIHJlZnJlc2hGaWx0ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbW9udGhTZWxlY3RlZChcbiAgICBtb250aCxcbiAgICBkYXRlUGlja2VyPzogYW55LFxuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIHJlZnJlc2hGaWx0ZXIgPSB0cnVlXG4gICkge1xuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01vbnRoRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgaWYgKGRhdGVQaWNrZXIpIHtcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5kJykge1xuICAgICAgICBtb250aCA9IG1vbWVudChtb250aCkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSAnYmVnaW4nICYmIHRoaXMucmVzdHJpY3RlZFRvU3RlcCgpKSB7XG4gICAgICAgIHRoaXMubW9udGhTZWxlY3RlZChtb250aCwgdW5kZWZpbmVkLCAnZW5kJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkoXG4gICAgICAgIG1vbnRoLFxuICAgICAgICBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyA/IDEgOiAyLFxuICAgICAgICByZWZyZXNoRmlsdGVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyVmlldygpOiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInIHtcbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5zdGVwTWlsbGlzZWNvbmRzO1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhcbiAgICAgIHRoaXMucGFyc2VGaWx0ZXIodGhpcy5jdXJyZW50RmlsdGVyLmVuZCkuZ2V0VGltZSgpIC1cbiAgICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4pLmdldFRpbWUoKVxuICAgICk7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01vbnRoRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuICd5ZWFyJztcbiAgICB9IGVsc2UgaWYgKHRlc3QgPCA4NjQwMDAwMCAmJiBkaWZmIDwgODY0MDAwMDApIHtcbiAgICAgIHJldHVybiAnY2xvY2snIGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdtb250aCc7XG4gICAgfVxuICB9XG5cbiAgZGF0ZUZpbHRlcih0eXBlOiBzdHJpbmcsIGRhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGNvbnN0IGRpZmYgPSBkYXRlVmFsdWUuZ2V0VGltZSgpIC0gbmV3IERhdGUodGhpcy5oYW5kbGVNaW4oKSkuZ2V0VGltZSgpO1xuXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYoXG4gICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihcbiAgICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICAgJ3llYXJzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdiZWdpbicpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCZWdpbkZ1bmN0aW9uID1cbiAgICAgICAgICBtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc1llYXJzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBjb25zdCBtb250aERpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICdtb250aHMnLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKHR5cGUgPT09ICdlbmQnKSB7XG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XG4gICAgICAgIGNvbnN0IG1vbnRoRGlmZlBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZVBsdXMxKS5kaWZmKFxuICAgICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgICAnbW9udGhzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSA9PT0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9XG4gICAgICAgICAgbW9udGhEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSA9PT0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNXZWVrRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgY29uc3Qgd2Vla0RpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICd3ZWVrcycsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihcbiAgICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICAgJ3dlZWtzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsdGVyRW5kRnVuY3Rpb24gPVxuICAgICAgICAgIHdlZWtEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc1dlZWtzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JlZ2luJykge1xuICAgICAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPVxuICAgICAgICAgIHdlZWtEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNXZWVrcygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0RheUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICBtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksXG4gICAgICAgICdkYXlzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBkYXlEaWZmUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlUGx1czEpLmRpZmYoXG4gICAgICAgICAgbW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLFxuICAgICAgICAgICdkYXlzJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IF9tb2QgPSBkYXlEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJFbmRGdW5jdGlvbiA9XG4gICAgICAgICAgKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEpIHx8IF9tb2QgPT09IDA7IC8vIDEgbWlsbGlzZWNvbmQgPSAxLjE1NzQwNzQwNzQwNzQwNzZlLThcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIGNvbnN0IF9tb2QgPSAoZGF5RGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzRGF5cygpKSArIDE7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9XG4gICAgICAgICAgKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEgJiYgX21vZCAhPT0gMCkgfHwgX21vZCA9PT0gMTsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0hvdXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgY29uc3QgaG91ckRpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKFxuICAgICAgICAgIG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSxcbiAgICAgICAgICAnaG91cnMnLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWx0ZXJFbmRGdW5jdGlvbiA9XG4gICAgICAgICAgaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkgPT09IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JlZ2luJykge1xuICAgICAgICBjb25zdCBob3VyRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYoXG4gICAgICAgICAgbW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLFxuICAgICAgICAgICdob3VycycsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPVxuICAgICAgICAgIGhvdXJEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNIb3VycygpID09PSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01pbnV0ZUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICB0aGlzLmZpbHRlckVuZEZ1bmN0aW9uID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVnaW4nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmVnaW5GdW5jdGlvbiA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlckVuZEZ1bmN0aW9uID0gZGlmZiAlIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA9PT0gMDtcbiAgICB0aGlzLmZpbHRlckJlZ2luRnVuY3Rpb24gPSBkaWZmICUgdGhpcy5zdGVwTWlsbGlzZWNvbmRzID09PSAwO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldERhdGVUaW1lKGRhdGUsIHBvcykge1xuICAgIGNvbnN0IHZhbHVldG1wID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbGV0IHZhbHVldG1wMjtcbiAgICBpZiAoIXRoaXMuc2xpZGVyTW9kZSkge1xuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcbiAgICAgICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjoge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoMCwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoXG4gICAgICAgICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZXRtcDIgPyB2YWx1ZXRtcDIgOiB2YWx1ZXRtcCk7XG4gIH1cblxuICBoYW5kbGVNaW51dGVJbmNyZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAvIDEwMDAgPT09IDYwXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnN0ZXBNaWxsaXNlY29uZHMgJSAzNjAwMDAwKSAvIDYwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuIDYwO1xuICAgIH1cbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGhhbmRsZUhvdXJJbmNyZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzSG91ckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgLyAxMDAwIC8gNjAgLyA2MDtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBmdWxsQmVnaW5Ib3Vyc0FycmF5KGNoZWNrRW5kVmFsdWU/KSB7XG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtcbiAgICAgICAgICBsZW5ndGg6XG4gICAgICAgICAgICAodGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMVxuICAgICAgICB9LFxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iZWdpbkhvdXJzID0gQXJyYXkuZnJvbShcbiAgICAgICAgeyBsZW5ndGg6ICgyMyAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpKTtcbiAgfVxuXG4gIGZ1bGxFbmRIb3Vyc0FycmF5KGNoZWNrRW5kVmFsdWU/KSB7XG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7XG4gICAgICAgICAgbGVuZ3RoOlxuICAgICAgICAgICAgKDIzIC0gdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSkgL1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArXG4gICAgICAgICAgICAxXG4gICAgICAgIH0sXG4gICAgICAgIChfLCBpKSA9PlxuICAgICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUuZ2V0SG91cnMoKSk7XG4gIH1cblxuICBmdWxsQmVnaW5NaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5iZWdpbk1pbnV0ZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7XG4gICAgICAgICAgbGVuZ3RoOlxuICAgICAgICAgICAgKHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgK1xuICAgICAgICAgICAgMVxuICAgICAgICB9LFxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJlZ2luTWludXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAoNTkgLSAwKSAvIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJlZ2luVmFsdWUuZ2V0TWludXRlcygpKTtcbiAgfVxuXG4gIGZ1bGxFbmRNaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAge1xuICAgICAgICAgIGxlbmd0aDpcbiAgICAgICAgICAgICg1OSAtIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC52YWx1ZSkgL1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICtcbiAgICAgICAgICAgIDFcbiAgICAgICAgfSxcbiAgICAgICAgKF8sIGkpID0+XG4gICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kTWludXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAoNTkgLSAwKSAvIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgKyAxIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRNaW51dGVzKCkpO1xuICB9XG5cbiAgdXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKSB7XG4gICAgY29uc3QgYmVnaW5UbXAgPSBuZXcgRGF0ZSh0aGlzLmJlZ2luVmFsdWUpO1xuICAgIGNvbnN0IGVuZFRtcCA9IG5ldyBEYXRlKHRoaXMuZW5kVmFsdWUpO1xuICAgIGlmIChiZWdpblRtcC5zZXRIb3VycygwLCAwKSA9PT0gZW5kVG1wLnNldEhvdXJzKDAsIDApKSB7XG4gICAgICB0aGlzLmZ1bGxCZWdpbkhvdXJzQXJyYXkodHJ1ZSk7XG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KHRydWUpO1xuICAgICAgaWYgKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpID09PSB0aGlzLmVuZFZhbHVlLmdldEhvdXJzKCkpIHtcbiAgICAgICAgdGhpcy5mdWxsQmVnaW5NaW51dGVzQXJyYXkodHJ1ZSk7XG4gICAgICAgIHRoaXMuZnVsbEVuZE1pbnV0ZXNBcnJheSh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mdWxsQmVnaW5Ib3Vyc0FycmF5KCk7XG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KCk7XG4gICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSgpO1xuICAgICAgdGhpcy5mdWxsRW5kTWludXRlc0FycmF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XG4gICAgdGhpcy5jaGFuZ2VUZW1wb3JhbFByb3BlcnR5KHRoaXMuYmVnaW5WYWx1ZSwgMSwgZmFsc2UpO1xuICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh0aGlzLmVuZFZhbHVlLCAyLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0cmljdGVkVG9TdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXBcbiAgICAgID8gdGhpcy5jdXJyZW50RmlsdGVyLnJlc3RyaWN0VG9TdGVwXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1pbigpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luXG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5iZWdpblxuICAgICAgOiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlXG4gICAgICAgID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZVxuICAgICAgICA6IHRoaXMuX2RlZmF1bHRNaW47XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTWF4KCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIuZW5kXG4gICAgICA/IHRoaXMuY3VycmVudEZpbHRlci5lbmRcbiAgICAgIDogdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZVxuICAgICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGVcbiAgICAgICAgOiB0aGlzLl9kZWZhdWx0TWF4O1xuICB9XG5cbiAgY2hhbmdlUHJvcGVydHlCeVBhc3MoZXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoZXZlbnQpO1xuICB9XG5cbiAgbW9kZUNoYW5nZShldmVudCkge1xuICAgIGlmICghZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGaWx0ZXJTdGF0ZURpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSAhdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRldGltZScpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUoc3RyaW5nRGF0ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgLy8gd2FybmluZyBjcmVhdGUgZGF0ZSB3aXRoIG5vIHRpbWUgbWFrZSBhIGRhdGUgVVRDIHdpdGggVFogYW5kIHRoZSBkYXRlIGNyZWF0ZSBtYXliZSBub3QgdGhlIHNhbWUgeWVhciwgbW9udGggYW5kIGRheVxuICAgIC8vIGV4ZW1wbGU6XG4gICAgLy8gbmV3IERhdGUoJzIwMjItMDEtMDEnKSAtPiBGcmkgRGVjIDMxIDIwMjEgMTk6MDA6MDAgR01ULTA1MDAgKGhldXJlIG5vcm1hbGUgZGUgbOKAmUVzdCBub3JkLWFtw6lyaWNhaW4pXG4gICAgLy8gdG8gY3JlYXRlIHNhbWUgZGF0ZSBhcyBzdHJpbmcsIGFkZCB0aW1lIDAwIGluIHRoZSBjcmVhdGlvblxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxuICAgIGxldCB5ZWFyO1xuICAgIGxldCBtb250aCA9ICcwMSc7XG4gICAgbGV0IGRheSA9ICcwMSc7XG4gICAgaWYgKHN0cmluZ0RhdGUubGVuZ3RoID09PSAxMCkge1xuICAgICAgY29uc3QgZGF0ZUl0ZW1zID0gc3RyaW5nRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdFcnJvciBpbiBjb25maWcgZGF0ZSBiZWdpbi1lbmQgZm9yIG9nY0ZpbHRlcjogRGF0ZSB3aXRob3V0IHRpbWUgZm9ybWF0IG5lZWQgdG8gYmUgWVlZWS1NTS1ERCBvciBZWVlZJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeWVhciA9IGRhdGVJdGVtc1swXTtcbiAgICAgICAgbW9udGggPSBkYXRlSXRlbXNbMV07XG4gICAgICAgIGRheSA9IGRhdGVJdGVtc1syXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0cmluZ0RhdGUubGVuZ3RoID09PSA0KSB7XG4gICAgICB5ZWFyID0gc3RyaW5nRGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHN0cmluZ0RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoYCR7eWVhcn0tJHttb250aH0tJHtkYXl9IDAwOjAwOjAwYCk7XG4gIH1cblxuICByZXNldEZpbHRlcigpIHtcbiAgICBsZXQgbWluRGVmYXVsdERhdGU7XG4gICAgbGV0IG1heERlZmF1bHREYXRlO1xuICAgIGxldCBtaW5EZWZhdWx0SVNPU3RyaW5nO1xuICAgIGxldCBtYXhEZWZhdWx0SVNPU3RyaW5nO1xuXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xuICAgICAgICBsZXQgdG9kYXlEYXRlU3RyaW5nTm9UaW1lID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUNBJyk7IC8vICcyMDIyLTAyLTEzJ1xuICAgICAgICBtYXhEZWZhdWx0SVNPU3RyaW5nID0gYCR7dG9kYXlEYXRlU3RyaW5nTm9UaW1lLnN1YnN0cmluZygwLCA0KX0tMDEtMDFgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IGAke3RoaXMuZmlsdGVyT3JpZ2luQ29uZmlnLmVuZC5zdWJzdHJpbmcoMCwgNCl9LTAxLTAxYDtcbiAgICAgIH1cbiAgICAgIG1pbkRlZmF1bHRJU09TdHJpbmcgPSBgJHt0aGlzLmZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCwgNCl9LTAxLTAxYDtcbiAgICAgIG1pbkRlZmF1bHREYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKG1pbkRlZmF1bHRJU09TdHJpbmcpO1xuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWF4RGVmYXVsdElTT1N0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbkRlZmF1bHREYXRlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbik7XG4gICAgICBtYXhEZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5maWx0ZXJPcmlnaW5Db25maWcuZW5kKTtcbiAgICAgIG1pbkRlZmF1bHRJU09TdHJpbmcgPSBtaW5EZWZhdWx0RGF0ZS50b0lTT1N0cmluZygpO1xuICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IG1heERlZmF1bHREYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luICE9PSBtaW5EZWZhdWx0SVNPU3RyaW5nIHx8XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZW5kICE9PSBtYXhEZWZhdWx0SVNPU3RyaW5nXG4gICAgKSB7XG4gICAgICB0aGlzLmJlZ2luVmFsdWUgPSBtaW5EZWZhdWx0RGF0ZTtcbiAgICAgIHRoaXMuZW5kVmFsdWUgPSBtYXhEZWZhdWx0RGF0ZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRmlsdGVyU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2V0RmlsdGVyU3RhdGVEaXNhYmxlKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGV0aW1lLWNvbnRhaW5lclwiPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxuICAgIFsobmdNb2RlbCldPVwic2xpZGVyTW9kZVwiXG4gICAgKGNoYW5nZSk9XCJtb2RlQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZmlsdGVyLnNsaWRlck1vZGVUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XG4gICAgPGlnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyXG4gICAgICBbYmVnaW5dPVwiYmVnaW5WYWx1ZVwiXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXG4gICAgICBbY3VycmVudEZpbHRlcl09XCJjdXJyZW50RmlsdGVyXCJcbiAgICAgIFtkYXRhc291cmNlXT1cImRhdGFzb3VyY2VcIlxuICAgICAgKGNoYW5nZVByb3BlcnR5KT1cImNoYW5nZVByb3BlcnR5QnlQYXNzKCRldmVudClcIlxuICAgID5cbiAgICA8L2lnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIXNsaWRlck1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwieWVhci1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZVllYXJcIj5cbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXG4gICAgICAgIHdpdGggdGhlIGRhdGVwaWNrZXIgIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwieWVhci1pbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLnN0YXJ0WWVhcicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcbiAgICAgICAgICB2YWx1ZT1cInt7IG9ubHlZZWFyQmVnaW4gfX1cIlxuICAgICAgICAgIChjaGFuZ2UpPVwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgW2Zvcl09XCJiZWdpbkRhdGVwaWNrZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICA+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgcGFuZWxDbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXG4gICAgICAgICAgI2JlZ2luRGF0ZXBpY2tlclxuICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxuICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgYmVnaW5EYXRlcGlja2VyLCAnYmVnaW4nKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjYmVnaW5ZZWFyXG4gICAgICAgICAgY2xhc3M9XCJ5ZWFyLWlucHV0LWhpZGVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcbiAgICAgICAgICBlbmFibGVkPVwiZmFsc2VcIlxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIlxuICAgICAgICAgICAgYmVnaW5WYWx1ZSA/IGJlZ2luVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW21pbl09XCJoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgW21heF09XCJcbiAgICAgICAgICAgIGVuZFZhbHVlICYmICFyZXN0cmljdGVkVG9TdGVwKClcbiAgICAgICAgICAgICAgPyBlbmRWYWx1ZVxuICAgICAgICAgICAgICA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInllYXItaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8udGltZUZpbHRlci5lbmRZZWFyJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIGNsYXNzPVwieWVhci1pbnB1dC1vbmx5LXllYXJcIlxuICAgICAgICAgIHZhbHVlPVwie3sgb25seVllYXJFbmQgfX1cIlxuICAgICAgICAgIChjaGFuZ2UpPVwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGVcbiAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICBbZm9yXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICA+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgICAgIHBhbmVsQ2xhc3M9XCJkYXRlcGlja2VyLXllYXJcIlxuICAgICAgICAgICNlbmREYXRlcGlja2VyXG4gICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNlbmRZZWFyXG4gICAgICAgICAgY2xhc3M9XCJ5ZWFyLWlucHV0LWhpZGVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZW5kRGF0ZXBpY2tlclwiXG4gICAgICAgICAgZW5hYmxlZD1cImZhbHNlXCJcbiAgICAgICAgICByZWFkb25seT1cInRydWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZSA/IGVuZFZhbHVlIDogaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIlxuICAgICAgICAgIFttaW5dPVwiXG4gICAgICAgICAgICBiZWdpblZhbHVlID8gYmVnaW5WYWx1ZSA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwicmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+e3sgcmVzZXRJY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtZmlsdGVyLXN0YXRlXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmZpbHRlci50b2dnbGVGaWx0ZXJTdGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiIWZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKSAhPT0gJ3llYXInXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXRcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGF0ZS1pbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAgID48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNiZWdpblxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImJlZ2luRGF0ZXBpY2tlclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5zdGFydERhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGJlZ2luLnZhbHVlLCAxKVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJmaWx0ZXJCZWdpbkZ1bmN0aW9uXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJcbiAgICAgICAgICAgICAgYmVnaW5WYWx1ZSA/IGJlZ2luVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxuICAgICAgICAgICAgW21heF09XCJcbiAgICAgICAgICAgICAgZW5kVmFsdWUgJiYgIXJlc3RyaWN0ZWRUb1N0ZXAoKVxuICAgICAgICAgICAgICAgID8gZW5kVmFsdWVcbiAgICAgICAgICAgICAgICA6IGhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgICAgICNiZWdpbkRhdGVwaWNrZXJcbiAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxuICAgICAgICAgICAgW3N0YXJ0QXRdPVwiYmVnaW5WYWx1ZVwiXG4gICAgICAgICAgICAoeWVhclNlbGVjdGVkKT1cInllYXJTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjYWxlbmRhclR5cGUoKSA9PT0gJ2RhdGV0aW1lJ1wiIGNsYXNzPVwidGltZS1pbnB1dFwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnRpbWVGaWx0ZXIuaG91cicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbkhvdXJGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e1xuICAgICAgICAgICAgICAgIGhvdXJcbiAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtaW51dGUtaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnRpbWVGaWx0ZXIubWludXRlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luTWludXRlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxuICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoYmVnaW4udmFsdWUsIDEpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFyZXN0cmljdGVkVG9TdGVwKClcIiBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICBbZm9yXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiXG4gICAgICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2VuZFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLnRpbWVGaWx0ZXIuZW5kRGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoZW5kLnZhbHVlLCAyKVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJmaWx0ZXJFbmRGdW5jdGlvblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgIGVuZFZhbHVlID8gZW5kVmFsdWUgOiBoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFttaW5dPVwiXG4gICAgICAgICAgICAgIGJlZ2luVmFsdWUgPyBiZWdpblZhbHVlIDogaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxsZXJcIj48L3NwYW4+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgICAjZW5kRGF0ZXBpY2tlclxuICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJlbmRWYWx1ZVwiXG4gICAgICAgICAgICAoeWVhclNlbGVjdGVkKT1cInllYXJTZWxlY3RlZCgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXG4gICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJtb250aFNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRldGltZSdcIiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLmhvdXInIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBlbmRIb3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3tcbiAgICAgICAgICAgICAgICBob3VyXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbmRNaW51dGVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7XG4gICAgICAgICAgICAgICAgbWludXRlXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0RmlsdGVyKClcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmZpbHRlci5yZXNldEZpbHRlcnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj57eyByZXNldEljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1maWx0ZXItc3RhdGVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRmlsdGVyU3RhdGUoKVwiXG4gICAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCIhZmlsdGVyU3RhdGVEaXNhYmxlXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|