barsa-novin-ray-core 2.0.21 → 2.0.23
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.
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
35
35
|
}], renameClick: [{
|
|
36
36
|
type: Output
|
|
37
37
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvYWJzdHJhY3QtY2xhc3Nlcy90aWxlLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUlULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFTakQsWUFBbUIsRUFBYyxFQUFZLFVBQXFCLEVBQVksSUFBdUI7UUFDakcsS0FBSyxFQUFFLENBQUM7UUFETyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVksZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUFZLFNBQUksR0FBSixJQUFJLENBQW1CO1FBSDNGLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUkzQyxDQUFDOzhHQVhRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDhQQUhqQixFQUFFOzsyRkFHSCxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3VJQUVZLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgT25Jbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBJbnB1dCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIE91dHB1dCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXR0aW5nLCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWVsZFNldHRpbmcgfSBmcm9tICcuL2ZpZWxkLWJhc2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYm5yYy10aWxlLWJhc2UnLFxyXG4gICAgdGVtcGxhdGU6ICcnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbGVQcm9wc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgcGFyYW1ldGVyczogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIEBJbnB1dCgpIGRhdGE6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBGaWVsZFNldHRpbmc7XHJcbiAgICBASW5wdXQoKSBlZGl0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbGF5b3V0SW5mbzogTGF5b3V0U2V0dGluZztcclxuICAgIEBPdXRwdXQoKSBoaWRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgcmVuYW1lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgX3JlbmRlcmVyMjogUmVuZGVyZXIyLCBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -677,6 +677,9 @@ export class UlvMainService {
|
|
|
677
677
|
this._visibleSource.next(viewerMask);
|
|
678
678
|
}
|
|
679
679
|
_removeExtraMenuItems(menuItems) {
|
|
680
|
+
if (!menuItems) {
|
|
681
|
+
return [];
|
|
682
|
+
}
|
|
680
683
|
const newItems = menuItems.filter((c) => c.itemId !== 'Delete' && c.itemId !== 'AddToList' && c.itemId !== 'RemoveFromList');
|
|
681
684
|
return newItems;
|
|
682
685
|
}
|
|
@@ -791,4 +794,4 @@ export class UlvMainService {
|
|
|
791
794
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UlvMainService, decorators: [{
|
|
792
795
|
type: Injectable
|
|
793
796
|
}], ctorParameters: () => [{ type: i1.BbbTranslatePipe }, { type: i2.ApiService }] });
|
|
794
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2bWFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91bHZtYWluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEgsT0FBTyxFQUNILFFBQVEsRUFFUixtQkFBbUIsRUFRdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNyQixNQUFNLGNBQWMsQ0FBQzs7OztBQUl0QixNQUFNLE9BQU8sY0FBYztJQWlGdkIsWUFBb0IsUUFBMEIsRUFBVSxXQUF1QjtRQUEzRCxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBaEYvRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUErQmxFLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFpQyxFQUFFLENBQUMsQ0FBQztRQUM5RSx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBZ0QsRUFBRSxDQUFDLENBQUM7UUFHcEYsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0Qsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN2Qyxt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LENBQUMsRUFBRSxDQUFDO2dCQUNMLE9BQU87WUFDWCxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQW1DLEVBQUUsQ0FBQztZQUNyRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7WUFDSCxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTc0QlEsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQYWdpbmdTZXR0aW5nLFxuICAgIFNlYXJjaFBhbmVsU2V0dGluZ3MsXG4gICAgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwsXG4gICAgQ29sdW1uSW5mb1R5cGUsXG4gICAgRm9ybVNldHRpbmcsXG4gICAgU2hhcmVCdXR0b25zQ2hvaWNlRGVmLFxuICAgIENhcnRhYmxlVGVtcGxhdGVLZXlcbn0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIGV4ZWN1dGVVbHZDb21tYW5kSGFuZGxlcixcbiAgICBnZW5yYXRlSW5saW5lTW9JZCxcbiAgICBnZXRDb250cm9sTGlzdCxcbiAgICBHZXREZWZhdWx0TW9PYmplY3RJbmZvLFxuICAgIGdldE5ld01vR3JpZEVkaXRvclxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmJiVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVbHZNYWluU2VydmljZSB7XG4gICAgbW9EYXRhTGlzdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbFtdPihbXSk7XG4gICAgY29udGV4dCQ6IFN1YnNjcmlwdGlvbjtcbiAgICB2aWV3ZXIkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgY29uZGl0aW9uYWxGb3JtYXRzJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGhpZGVUb29sYmFyJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBtYXNrJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB2aXdlck1hc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGVuYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcmVhZG9ubHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8TWVudUl0ZW1bXT47XG4gICAgdGl0bGUkOiBPYnNlcnZhYmxlPHsgdGV4dDogc3RyaW5nOyBpbWFnZTogc3RyaW5nIH0+O1xuXG4gICAgc2VhcmNoUGFuZWxVaSQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBwYWdpbmdTZXR0aW5nJDogT2JzZXJ2YWJsZTxQYWdpbmdTZXR0aW5nIHwgbnVsbD47XG4gICAgdG9vbGJhckJ1dHRvbnMkOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBkZXN0cm95JDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBtb0RhdGFMaXN0JDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHJlcG9ydElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGFsbG93SW5saW5lRWRpdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaW5saW5lRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG9ubHlJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjb250ZXh0OiBhbnk7XG4gICAgb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3MkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIG9wZW5TZWFyY2hGaWxlc01hbmFnZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgc2VhcmNoUGFuZWxNb0NoYW5nZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MkOiBPYnNlcnZhYmxlPFNlYXJjaFBhbmVsU2V0dGluZ3NbXT47XG4gICAgbGF5b3V0SW5mbyQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MkOiBPYnNlcnZhYmxlPFNlYXJjaFBhbmVsU2V0dGluZ3MgfCB1bmRlZmluZWQ+O1xuICAgIG5ld0lubGluZUVkaXRNbyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGw+O1xuICAgIF9jYXJ0YWJsZVRlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfT4oe30pO1xuICAgIF9jYXJ0YWJsZUNoaWxkc01vJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gfCBudWxsPih7fSk7XG4gICAgc2VsZWN0ZWRDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAgIHByaXZhdGUgX2dyaWRGcmVlQ29sdW1uU2l6aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2xheW91dEluZm9Tb3VyY2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBfY29udGV4dFNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIF9jYW5TYXZlR3JpZFNldHRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaW5EaWFsb2ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaXNNdWx0aVNlbGVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9mdWxsc2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NvbmRpdGlvbmFsRm9ybWF0c1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9yZXBvcnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdmlld2VyQ29udHJvbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlVG9vbGJhclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJpdmF0ZSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3ZpZXdlck1hc2tTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF92aXNpYmxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwcml2YXRlIF9lbmFibGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHByaXZhdGUgX3JlYWRvbmx5U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfb25seUlubGluZUVkaXRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pbmxpbmVFZGl0TW9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2FsbG93SW5saW5lRWRpdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlS2V5U2VwZXJhdG9yID0gJ0AnO1xuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHRleHQ6IHN0cmluZzsgaW1hZ2U6IHN0cmluZyB9Pih7XG4gICAgICAgIHRleHQ6ICcnLFxuICAgICAgICBpbWFnZTogJydcbiAgICB9KTtcblxuICAgIHByaXZhdGUgX3NlYXJjaFBhbmVsVWlTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgICBwcml2YXRlIF9wYWdpbmdTZXR0aW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmdTZXR0aW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhckJ1dHRvbnNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhckJ1dHRvbnNXb3JrZmxvd0J1dHRvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfZGVzdHJveVNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSB0cnVlO1xuICAgIHByaXZhdGUgX2NvbnRyb2xJbmZvc01ldGFvYmplY3Q6IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10gPSBbXTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UgPSBuZXcgU3ViamVjdDxTZWFyY2hQYW5lbFNldHRpbmdzPigpO1xuICAgIHByaXZhdGUgX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFBhbmVsU2V0dGluZ3NbXT4oW10pO1xuICAgIHByaXZhdGUgX29wZW5TZWFyY2hQYW5lbEhpZGRlblNldHRpbmdzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9vcGVuU2VhcmNoRmlsZXNNYW5hZ2VTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX3NlYXJjaFBhbmVsTW9DaGFuZ2VkU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbmV3SW5saW5lRWRpdE1vU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfaGlkZVNlYXJjaGFwYW5lbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3dvcmtmbG93U2hhcmVCdXR0b25zOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWZbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYmJiUGlwZTogQmJiVHJhbnNsYXRlUGlwZSwgcHJpdmF0ZSBfYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiAodGhpcy5jb250ZXh0ID0gY29udGV4dCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29udGV4dCkgPT4gdGhpcy5faW5pdGlhbGl6ZShjb250ZXh0KSksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGNvbnRleHQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5ld0lubGluZUVkaXRNbyQgPSB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLnZpZXdlciQgPSB0aGlzLl92aWV3ZXJDb250cm9sU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdHMkID0gdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbGJhciQgPSB0aGlzLl9oaWRlVG9vbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWFzayQgPSB0aGlzLl9tYXNrU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy52aXdlck1hc2skID0gdGhpcy5fdmlld2VyTWFza1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSQgPSB0aGlzLl92aXNpYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5lbmFibGUkID0gdGhpcy5fZW5hYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5yZWFkb25seSQgPSB0aGlzLl9yZWFkb25seVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuX21lbnVJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgZmlsdGVyKChpdGVtcykgPT4gaXRlbXM/Lmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChjKSA9PiBjLml0ZW1JZCAhPT0gJ0V4cG9ydFRvRXhjZWwnICYmIGMuaXRlbUlkICE9PSAnRGVsZXRlJykpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGl0bGUkID0gdGhpcy5fdGl0bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxVaSQgPSB0aGlzLl9zZWFyY2hQYW5lbFVpU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICB0YXAoKHNlYXJjaFBhbmVsKSA9PiB0aGlzLl9hZGREZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3MkID0gdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMucGFnaW5nU2V0dGluZyQgPSB0aGlzLl9wYWdpbmdTZXR0aW5nU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zV29ya2Zsb3dCdXR0b25zLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNTb3VyY2UuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgoW3dmQnRucywgY10pID0+XG4gICAgICAgICAgICAgICAgIWNcbiAgICAgICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ud2ZCdG5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLm1hcCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlVGV4dDogZC5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgZC5pdGVtSWQgIT09ICdOZXcnID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgIWMgPyBbXSA6IFsuLi5jLmZpbHRlcigoZCkgPT4gIWQuQ29tbWFuZD8uSXNCdWlsdGluKSwgLi4uYy5maWx0ZXIoKGQpID0+IGQuQ29tbWFuZD8uSXNCdWlsdGluKV1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgYy5yZWR1Y2UoKGFjYywgYikgPT4gKGFjYy5sZW5ndGggPiAwICYmIGFjY1thY2MubGVuZ3RoIC0gMV1bJzAnXSAmJiBiWycwJ10gPyBhY2MgOiBbLi4uYWNjLCBiXSksIFtdKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkID0gdGhpcy5fZGVzdHJveVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRhcCgoKSA9PiB0aGlzLl91bnNjdWJzY3JpYmVDb250ZXh0KCkpKTtcbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0JCA9IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudCQgPSB0aGlzLm1vRGF0YUxpc3QkLnBpcGUobWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChkKSA9PiBkLiRJc0NoZWNrZWQpLmxlbmd0aCkpO1xuICAgICAgICB0aGlzLnJlcG9ydElkJCA9IHRoaXMuX3JlcG9ydFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKG1hcCgocmVwb3J0KSA9PiByZXBvcnQ/LklkKSk7XG5cbiAgICAgICAgdGhpcy5hbGxvd0lubGluZUVkaXQkID0gdGhpcy5fYWxsb3dJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlJCA9IHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9ubHlJbmxpbmVFZGl0JCA9IHRoaXMuX29ubHlJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hGaWxlc01hbmFnZSQgPSB0aGlzLl9vcGVuU2VhcmNoRmlsZXNNYW5hZ2VTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQkID0gdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5sYXlvdXRJbmZvJCA9IHRoaXMuX2xheW91dEluZm9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgICAgIHRoaXMuYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCksXG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5hc09ic2VydmFibGUoKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbYWxsU2V0dGluZ3MsIGRlZmF1bHRTZXR0aW5nc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdFNldHRpbmdzICYmIGFsbFNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5ncy5Jc0RlZmF1bHQgPSAhYWxsU2V0dGluZ3Muc29tZSgoYykgPT4gYy5Jc0RlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICBhbGxTZXR0aW5ncyA9IFtkZWZhdWx0U2V0dGluZ3MsIC4uLmFsbFNldHRpbmdzXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbFNldHRpbmdzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQkID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWRTb3VyY2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQsXG4gICAgICAgICAgICB0aGlzLmFsbFNlYXJjaFBhbmVsU2V0dGluZ3MkXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtpZCwgc2V0dGluZ3NdKSA9PiBzZXR0aW5ncz8uZmluZCgoYykgPT4gYy5JZCA9PT0gaWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCBncmlkRnJlZUNvbHVtblNpemluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkRnJlZUNvbHVtblNpemluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBjYW5TYXZlR3JpZFNldHRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FuU2F2ZUdyaWRTZXR0aW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGluRGlhbG9nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luRGlhbG9nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGlzTXVsdGlTZWxlY3QkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aVNlbGVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBmdWxsc2NyZWVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW4kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVDaGlsZHNNbyQoKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVUZW1wbGF0ZXMkKCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgc2VhcmNoUGFuZWxVaSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUGFuZWxVaVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBnZXQgcmVwb3J0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydFNvdXJjZS5nZXRWYWx1ZSgpPy5JZDtcbiAgICB9XG4gICAgZ2V0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MoKTogU2VhcmNoUGFuZWxTZXR0aW5nc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IGhpZGVTZWFyY2hwYW5lbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuICAgIGdldCBoaWRlU2VhcmNocGFuZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuICAgIHNldF9ncmlkRnJlZUNvbHVtblNpemluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncmlkRnJlZUNvbHVtblNpemluZ0NoYW5nZWQodmFsdWUpO1xuICAgIH1cbiAgICBzZXRDYW5TYXZlR3JpZFNldHRpbmdzKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYW5TYXZlR3JpZFNldHRpbmckLm5leHQodmFsKTtcbiAgICB9XG4gICAgZXhlY3V0ZVRvb2xiYXJCdXR0b24oaXRlbUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IHRoaXMuX3Rvb2xiYXJCdXR0b25zU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghYnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidG4gPSBidXR0b25zLmZpbmQoKGMpID0+IGMuaXRlbUlkID09PSBpdGVtSWQpO1xuICAgICAgICBpZiAoYnRuKSB7XG4gICAgICAgICAgICBleGVjdXRlVWx2Q29tbWFuZEhhbmRsZXIoYnRuLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRXb3JrZmxvd0J1dHRvbnNJblRvb2xiYXIoZTogU2hhcmVCdXR0b25zQ2hvaWNlRGVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFyck9mU2hhcmVCdXR0b25zID0gdGhpcy5fY3JlYXRlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXJyT2ZTaGFyZUJ1dHRvbnMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiBjLFxuICAgICAgICAgICAgaXRlbUlkOiBjLFxuICAgICAgICAgICAgRGF0YTogbnVsbCxcbiAgICAgICAgICAgICRTaGFyZVdvcmtmbG93QnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgIENvbW1hbmQ6IHsgX2lzVmlzaWJsZTogdHJ1ZSwgX2lzRW5hYmxlOiB0cnVlLCBKc29uRXh0cmFQcm9wOiB7IERlc2lnbjogJ2F0dGVudGlvbicgfSB9LFxuICAgICAgICAgICAgaGFuZGxlcjogKGQpID0+IHRoaXMub25Xb3JrZmxvd0J1dHRvbkluVG9vbGJhckNsaWNrKGQpLFxuICAgICAgICAgICAgSXNCdWlsdGluOiBmYWxzZVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zV29ya2Zsb3dCdXR0b25zLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBfZXhjbHVkZVdyYXBwZXJGcm9tTW8obW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbiAgICAgICAgY29uc3QgeyAkV3JhcHBlciwgLi4ubmV3TW8gfSA9IG1vO1xuICAgICAgICByZXR1cm4gbmV3TW87XG4gICAgfVxuICAgIG9uV29ya2Zsb3dCdXR0b25JblRvb2xiYXJDbGljayhzaGFyZUJ1dHRvbjogeyB0ZXh0OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5Nc2cuT0tDYW5jZWwoJ9ii24zYpyDYp9iyINiq2KfbjNuM2K8g2YXZiNin2LHYryDaqdin2LHYqtin2KjZhCDZhdi32YXYptmGINmH2LPYqtuM2K/YnycsICfYqtin24zbjNivJywgKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gJ29rJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hvaWNlRGVmID0gYy5jaG9pY2VMaXN0LmZpbmQoKGQpID0+IGQuVGl0bGUgPT09IHNoYXJlQnV0dG9uLnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hvaWNlRGVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmZvcm1QYW5lbEN0cmxyLldvcmtmbG93VHJhbnNpdGlvbihjaG9pY2VEZWYsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9zZXRXb3JrZmxvd1N0YXRlKCdGaW5pc2gnLCBbYy5tb10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9zZXRXb3JrZmxvd1N0YXRlKFxuICAgICAgICAgICAgICAgIC8vICAgICAnUGVuZGluZycsXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLm1hcCgoYykgPT4gYy5tbylcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IHBhcmFtcyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAvLyAgICAgbW86IHRoaXMuX2V4Y2x1ZGVXcmFwcGVyRnJvbU1vKGMubW8uUmVsYXRlZE1vKSxcbiAgICAgICAgICAgICAgICAvLyAgICAgY2hvaWNlRGVmOiBjLmNob2ljZUxpc3QuZmluZCgoZCkgPT4gZC5UaXRsZSA9PT0gc2hhcmVCdXR0b24udGV4dClcbiAgICAgICAgICAgICAgICAvLyB9KSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0V29ya2Zsb3dTdGF0ZSgnUGVuZGluZycsIHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAvLyBCYXJzYUFwaS5Db21tb24uQWpheC5HZXRTZXJ2ZXJEYXRhKFxuICAgICAgICAgICAgICAgIC8vICAgICAnV29ya2Zsb3c5NC5Pbkdyb3VwT2ZDaG9pY2VEZWZzU2VsZWN0JyxcbiAgICAgICAgICAgICAgICAvLyAgICAgeyBwYXJhbWV0ZXI6IHsgRGF0YUxpc3Q6IHBhcmFtcyB9IH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX3NldFdvcmtmbG93U3RhdGUoJ1N1Y2Nlc3MnLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIC8vICAgICB9LCAvLyBzdWNjZXNzXG4gICAgICAgICAgICAgICAgLy8gICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX3NldFdvcmtmbG93U3RhdGUoJ0ZhaWxlZCcsIHBhcmFtcywgJ9mF2KrYp9iz2YHYp9mG2Ycg2LnZhdmE24zYp9iqINmG2KfZhdmI2YHZgiDYqNmI2K8uJyk7XG4gICAgICAgICAgICAgICAgLy8gICAgIH0sIC8vIGZhaWx1cmVcbiAgICAgICAgICAgICAgICAvLyAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpc1xuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh7IHRleHQ6IHRpdGxlLCBpbWFnZTogJycgfSk7XG4gICAgfVxuICAgIHRvZ2dsZUhpZGVTZWFyY2hwYW5lbCh2YWw/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGVTZWFyY2hhcGFuZWxTb3VyY2UubmV4dCh0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJyA/IHZhbCA6ICF0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBzZXRDb250ZXh0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGV4dFNvdXJjZS5uZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgICBzZXRJbkRpYWxvZyh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5EaWFsb2ckLm5leHQodmFsKTtcbiAgICB9XG4gICAgc2V0SXNNdWx0aVNlbGVjdCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aVNlbGVjdCQubmV4dCh2YWwpO1xuICAgIH1cbiAgICBzZXRGdWxsc2NyZWVuKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mdWxsc2NyZWVuJC5uZXh0KHZhbCk7XG4gICAgfVxuXG4gICAgY3JlYXRlTmV3SW5saW5lTW8oaXNDaGVja2VkOiBib29sZWFuKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZvcm1TZXR0aW5nID0gY29udGV4dC5TZXR0aW5nLkZvcm1UZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gY29udGV4dC5TZXR0aW5nLkV4dHJhLlJlcG9ydC5UeXBlRGVmSWQ7XG4gICAgICAgIGNvbnN0IG5ld01vID0gZ2V0TmV3TW9HcmlkRWRpdG9yKGZvcm1TZXR0aW5nLCB0eXBlRGVmSWQpIGFzIE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIG5ld01vLklkID0gZ2VucmF0ZUlubGluZU1vSWQoKTtcbiAgICAgICAgbmV3TW8uJElzQ2hlY2tlZCA9IGlzQ2hlY2tlZDtcbiAgICAgICAgbmV3TW8uJE5ld0lubGluZU1vID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ29tcG9zaXRlKGNvbnRleHQpKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKTtcbiAgICAgICAgICAgIG5ld01vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSByZWxhdGlvbi5QYXJlbnRNb0lkO1xuICAgICAgICB9XG4gICAgICAgIC8vICB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UubmV4dChuZXdNbyk7XG4gICAgICAgIHJldHVybiBuZXdNbztcbiAgICB9XG4gICAgc2V0TGF5b3V0SW5mbyhsYXlvdXRJbmZvKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xheW91dEluZm9Tb3VyY2UubmV4dChsYXlvdXRJbmZvKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zY3Vic2NyaWJlQ29udGV4dCgpO1xuICAgIH1cblxuICAgIHBhZ2VTaXplQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUGFnZUNoYW5nZScsIHRoaXMuY29udGV4dCwgcGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICBwYWdlQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmN1cnJlbnRQYWdlID0gcGFnZUluZGV4O1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdQYWdlQ2hhbmdlJywgdGhpcy5jb250ZXh0LCBwYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIHJlU2V0TW9EYXRhTGlzdChtb0RhdGFMaXN0PzogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSBtb0RhdGFMaXN0ID8/IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9tb0RhdGFMaXN0Q2hhbmdlZChbLi4ubmV3TW9EYXRhTGlzdF0pO1xuICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5TZXR0aW5nPy5Jc0NhcnRhYmxlUmVwb3J0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5T2ZDYXRhYmxlVGVtcGxhdGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIG5ld01vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHBkZklkID0gYy5SZWxhdGVkTW8/LiRUeXBlRGVmSWQ7XG4gICAgICAgICAgICBpZiAodHBkZklkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dHBkZklkfSR7dGhpcy5fY2FydGFibGVLZXlTZXBlcmF0b3J9JHtjLkNhcnRhYmxlU2V0dGluZ3M/LklkIHx8ICcwJ31gO1xuICAgICAgICAgICAgICAgIGtleU9mQ2F0YWJsZVRlbXBsYXRlcy5hZGQoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChrZXlPZkNhdGFibGVUZW1wbGF0ZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRDYXJ0YWJsZVRlbXBsYXRlKGtleU9mQ2F0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2VhcmNoIFNldHRpbmcgTWFuYWdlclxuICAgIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBpZiAoIXNlYXJjaFBhbmVsVWkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZFVpID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWkuJFNlYXJjaCA/PyBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS7YrNiz2KrYrNmIO1xuICAgICAgICBmaWVsZFVpLmZpcmVFdmVudCgnQ2xlYXJDbGljaycpO1xuICAgIH1cbiAgICBzZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGlmICghc2VhcmNoUGFuZWxVaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWVsZFVpID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWkuJFNlYXJjaCA/PyBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS7YrNiz2KrYrNmIO1xuICAgICAgICBpZiAoIWZpZWxkVWkpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgICAgIGlmIChlLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5TZWFyY2hDb21tYW5kSW5mb1VpJykge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFVpID0gZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRVaSkge1xuICAgICAgICAgICAgZmllbGRVaS5maXJlRXZlbnQoJ1NlYXJjaENsaWNrJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWYWx1ZUlubGluZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldEFsbG93SW5saW5lRWRpdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXRJbmxpbmVFZGl0KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWVsZHNIaWRkZW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWxlc01hbmFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaEZpbGVzTWFuYWdlU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZWFyY2hQYW5lbE1vQ2hhbmdlZChjaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIGxvYWRTZWFyY2hQYW5lbFNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0LkZvcm1QYW5lbFVpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBvcnRJZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoKHJlcG9ydElkKSA9PiB0aGlzLl9sb2FkU2VhcmNoUGFuZWxTZXR0aW5ncyhyZXBvcnRJZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MucHVzaChzZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgIH1cbiAgICBzYXZlU2VhcmNoUGFuZWxTZXR0aW5nKHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hNbyA9IHRoaXMuZ2V0U2VhcmNoUGFuZWxNbygpO1xuICAgICAgICBjb25zdCBmaWVsZHNTZXR0aW5nID0gdGhpcy5nZXRTZWFyY2hQYW5lbEZpZWxkc1NldHRpbmcoKTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8gPSBKU09OLnN0cmluZ2lmeShzZWFyY2hNbyk7XG4gICAgICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5GaWVsZHNTZXR0aW5nID0gSlNPTi5zdHJpbmdpZnkoZmllbGRzU2V0dGluZyk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKFxuICAgICAgICAgICAgJ1NhdmVTZWFyY2hQYW5lbFNldHRpbmdzJyxcbiAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgSWQ6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5JZCxcbiAgICAgICAgICAgICAgICAkQ2FwdGlvbjogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIFJlcG9ydElkOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuUmVwb3J0Py5JZCxcbiAgICAgICAgICAgICAgICBUaXRsZTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIElzRGVmYXVsdDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzRGVmYXVsdCxcbiAgICAgICAgICAgICAgICBJc1B1YmxpYzogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzUHVibGljLFxuICAgICAgICAgICAgICAgIEFwcGx5QXV0b21hdGljYWxseTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLkFwcGx5QXV0b21hdGljYWxseSxcbiAgICAgICAgICAgICAgICBIaWRlU2VhcmNoUGFuZWw6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5IaWRlU2VhcmNoUGFuZWwsXG4gICAgICAgICAgICAgICAgU2VhcmNoTW86IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbyxcbiAgICAgICAgICAgICAgICBGaWVsZHNTZXR0aW5nOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuRmllbGRzU2V0dGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIGFwcGx5U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGlmICghc2VhcmNoUGFuZWxTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSAmJiBzZWFyY2hQYW5lbFNldHRpbmdzLklzUHJpbWFyeSkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsVWkpO1xuICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbykge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSBKU09OLnBhcnNlKHNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VhcmNoTW8pLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBjLmluZGV4T2YoJyQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuU2V0VmFsdWUoc2VhcmNoTW9bY10pO1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldEZWYWx1ZShjLCBzZWFyY2hNb1tjXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkgJiYgIXNlYXJjaFBhbmVsVWkuU2V0dGluZy5JbW1lZGlhdGVFeGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlYXJjaFBhbmVsU2V0dGluZ3MuQXBwbHlBdXRvbWF0aWNhbGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIHNldCBoaWRkZW4gZmllbGRzXG4gICAgICAgIGlmIChzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzID0gSlNPTi5wYXJzZShzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbmRBcHBseVNlYXJjaFBhbmVsU2V0dGluZ0ZpZWxkc1NldHRpbmcoXG4gICAgICAgICAgICAgICAgdHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2Uoc2V0dGluZ3MpIDogc2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsTW8oKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFBhbmVsVWkuTW87XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsRmllbGRzU2V0dGluZygpOiBBcnJheTxQYXJ0aWFsPEdlbmVyYWxDb250cm9sSW5mb01vZGVsPj4ge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBjb25zdCBmaWVsZHM6IEFycmF5PEdlbmVyYWxDb250cm9sSW5mb01vZGVsPiA9IHNlYXJjaFBhbmVsVWkuU2V0dGluZy5WaWV3LkNvbnRyb2xJbmZvLmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjLkNvbnRyb2xOYW1lICE9PSAnJFNlYXJjaCcgJiYgYy5Db250cm9sTmFtZSAhPT0gJ9is2LPYqtis2YgnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpZWxkc1NldHRpbmcgPSBmaWVsZHMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgTmFtZTogYy5Db250cm9sTmFtZSxcbiAgICAgICAgICAgIENhcHRpb246IGMuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQsXG4gICAgICAgICAgICBIaWRkZW46IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2MuQ29udHJvbE5hbWVdLlNldHRpbmcuSXNWaXNpYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIElzTWFuZGF0b3J5OiBjLklzTWFuZGF0b3J5XG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1NldHRpbmc7XG4gICAgfVxuICAgIHNldEFuZEFwcGx5U2VhcmNoUGFuZWxTZXR0aW5nRmllbGRzU2V0dGluZyhmaWVsZHNTZXR0aW5nOiBDb2x1bW5JbmZvVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGZpZWxkc1NldHRpbmcuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaVtjLk5hbWVdO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5maXJlRXZlbnQoJ0NoYW5nZUZpZWxkVmlzaWJsZScsIGZpZWxkLlNldHRpbmcuQ29udHJvbEZpZWxkQ2FwdGlvbiwgIWMuSGlkZGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZVNlYXJjaFBhbmVsU2V0dGluZ3MoYWxsU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5nc1tdKTogdm9pZCB7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbHRlcigoYykgPT4gIWMuSXNQcmltYXJ5ICYmICFjLklzRGVsZXRlZCk7XG4gICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UubmV4dChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICB9XG5cbiAgICByZW1vdmVTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MuZmlsdGVyKChjKSA9PiBjLklkICE9PSBzZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2VsZWN0ZWRTZWFyY2hQYW5lbChzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlLm5leHQoc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgIH1cblxuICAgIGxvYWRNZXRhQ29uZGl0aW9uc0NvbnRyb2xJbmZvcyh0eXBlRGVmSWQ6IHN0cmluZywgZmllbGREYk5hbWVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8R2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXT4ge1xuICAgICAgICBjb25zdCBtbyA9IEdldERlZmF1bHRNb09iamVjdEluZm8odHlwZURlZklkKTtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2NvbnRyb2xJbmZvc01ldGFvYmplY3QpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNvbnRyb2xzSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sc0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY29udHJvbHNJbmZvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldENvbnRyb2xMaXN0KG1vLCBmaWVsZERiTmFtZXMsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChjb250cm9sc0luZm86IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10pID0+ICh0aGlzLl9jb250cm9sSW5mb3NNZXRhb2JqZWN0ID0gY29udHJvbHNJbmZvKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jcmVhdGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhlOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYpOiBzdHJpbmdbXSB7XG4gICAgICAgIGxldCBzaGFyZUJ1dHRvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChlLmFkZCkge1xuICAgICAgICAgICAgdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMucHVzaChlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zID0gdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMuZmlsdGVyKChjKSA9PiBjLm1vLklkICE9PSBlLm1vLklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zID0gdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMuZmlsdGVyKChjKSA9PiBjLm1vPy4kSXNDaGVja2VkKTtcbiAgICAgICAgaWYgKHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNoYXJlQnV0dG9ucyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zWzBdLmNob2ljZUxpc3QubWFwKChkKSA9PiBkLlRpdGxlKTtcbiAgICAgICAgICAgIGNvbnN0IHVuU2hhcmVCdXR0b25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9uc1tpXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNoYXJlQnV0dG9ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaG9pY2VMaXN0Lm1hcCgoZCkgPT4gZC5UaXRsZSkuaW5kZXhPZihzaGFyZUJ1dHRvbnNbal0pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5TaGFyZUJ1dHRvbnMucHVzaChzaGFyZUJ1dHRvbnNbal0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hhcmVCdXR0b25zID0gc2hhcmVCdXR0b25zLmZpbHRlcigoYykgPT4gdW5TaGFyZUJ1dHRvbnMuaW5kZXhPZihjKSA9PT0gLTEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFyZUJ1dHRvbnM7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmcgPSBjb250ZXh0LlNldHRpbmcuRm9ybVRlbXBsYXRlO1xuICAgICAgICBpZiAoZm9ybVNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3SW5saW5lTW8oZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0NvbXBvc2l0ZShjb250ZXh0KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVHlwZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uLlJlbGF0aW9uVHlwZScpO1xuICAgICAgICByZXR1cm4gcmVsYXRpb25UeXBlID09PSBCYXJzYUFwaS5Db21tb24uRW51bXMuUmVsYXRpb25UeXBlLkNvbXBvc2l0aW9uO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2FkZEV2ZW50TGlzdGVuZXIoY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnRleHQub24oe1xuICAgICAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgICAgICBNYXNrQ2hhbmdlZDogdGhpcy5fbWFza0NoYW5nZWQsXG4gICAgICAgICAgICBWaWV3ZXJNYXNrQ2hhbmdlZDogdGhpcy5fdmlld2VyTWFza0NoYW5nZWQsXG4gICAgICAgICAgICBWaWV3ZXJDb250cm9sQ2hhbmdlZDogdGhpcy5fdmlld2VyQ29udHJvbENoYW5nZWQsXG4gICAgICAgICAgICBWaXNpYmxlQ2hhbmdlZDogdGhpcy5fdmlzaWJsZUNoYW5nZWQsXG4gICAgICAgICAgICBSZWFkb25seUNoYW5nZWQ6IHRoaXMuX3JlYWRvbmx5Q2hhbmdlZCxcbiAgICAgICAgICAgIE1lbnVJdGVtc0NoYW5nZWQ6IHRoaXMuX21lbnVJdGVtc0NoYW5nZWQsXG4gICAgICAgICAgICBUaXRsZUNoYW5nZWQ6IHRoaXMuX3RpdGxlQ2hhbmdlZCxcbiAgICAgICAgICAgIFNlYXJjaFBhbmVsQ2hhbmdlZDogdGhpcy5fc2VhcmNoUGFuZWxDaGFuZ2VkLFxuICAgICAgICAgICAgUGFnaW5nU2V0dGluZ0NoYW5nZWQ6IHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkLFxuICAgICAgICAgICAgVG9vbGJhckJ1dHRvbnNDaGFuZ2VkOiB0aGlzLl90b29sYmFyQnV0dG9uc0NoYW5nZWQsXG4gICAgICAgICAgICBFbmFibGVDaGFuZ2VkOiB0aGlzLl9lbmFibGVDaGFuZ2VkLFxuICAgICAgICAgICAgRGVzdHJveTogdGhpcy5fZGVzdHJveUNoYW5nZWQsXG4gICAgICAgICAgICBFeGl0SW5saW5lRWRpdDogdGhpcy5fZXhpc3RJbmxpbmVFZGl0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdGlhbGl6ZShjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdENhcnRhYmxlc0Zvcm1UZW1wbGF0ZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENvbmRpdGlvbmFsRm9ybWF0cyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdEFsbG93SW5saW5lRWRpdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SW5saW5lRWRpdE1vZGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRSZXBvcnQoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUb29sYmFyQnV0dG9ucyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFZpc2libGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRFbmFibGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUaXRsZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFJlYWRvbmx5KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0TW9EYXRhTGlzdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFBhZ2luZ1NldHRpbmcoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRNZW51SXRlbXMoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRTZWFyY2hwYW5lbChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0R3JpZEZyZWVDb2x1bW5TaXppbmcoY29udGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdEdyaWRGcmVlQ29sdW1uU2l6aW5nKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5TZXR0aW5nLlZpZXc/LkdyaWRfRnJlZUNvbHVtblNpemluZykge1xuICAgICAgICAgICAgdGhpcy5fZ3JpZEZyZWVDb2x1bW5TaXppbmdDaGFuZ2VkKGNvbnRleHQuU2V0dGluZy5WaWV3Py5HcmlkX0ZyZWVDb2x1bW5TaXppbmcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ3JpZEZyZWVDb2x1bW5TaXppbmdDaGFuZ2VkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyaWRGcmVlQ29sdW1uU2l6aW5nJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbml0Q2FydGFibGVzRm9ybVRlbXBsYXRlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FydGFibGVUZW1wbGF0ZXMgPSBjb250ZXh0LlNldHRpbmcuQ2FydGFibGVUZW1wbGF0ZXM7XG4gICAgICAgIGlmIChjYXJ0YWJsZVRlbXBsYXRlcykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXJ0YWJsZVRlbXBsYXRlc1trZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlc1trZXldID0gQmFyc2FBcGkuRXh0LmRlY29kZShjYXJ0YWJsZVRlbXBsYXRlc1trZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGVzJC5uZXh0KGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jYXJ0YWJsZUNoaWxkc01vKGNvbnRleHQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luaXRTZWFyY2hwYW5lbChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3NlYXJjaFBhbmVsQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxDaGFuZ2VkKGNvbnRleHQuX3NlYXJjaFBhbmVsQ29udHJvbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRDb25kaXRpb25hbEZvcm1hdHMoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LlNldHRpbmcuVmlldz8uQ29uZGl0aW9uYWxGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25kaXRpb25hbEZvcm1hdHNDaGFuZ2VkKGNvbnRleHQuU2V0dGluZy5WaWV3Py5Db25kaXRpb25hbEZvcm1hdHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0TWVudUl0ZW1zKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5tZW51SXRlbXMpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IG5ld0l0ZW1zID0gY29udGV4dC5tZW51SXRlbXM7XG4gICAgICAgICAgICB0aGlzLl9tZW51SXRlbXNDaGFuZ2VkKGNvbnRleHQubWVudUl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlcG9ydChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydCcsIFtdKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0U291cmNlLm5leHQocmVwb3J0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRNb0RhdGFMaXN0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsIFtdKTtcbiAgICAgICAgdGhpcy5fbW9EYXRhTGlzdENoYW5nZWQobW9EYXRhTGlzdCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY2FydGFibGVDaGlsZHNNbyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbykge1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVDaGlsZHNNbyQubmV4dChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRQYWdpbmdTZXR0aW5nKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5nU2V0dGluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuUGFnaW5nJywgbnVsbCk7XG4gICAgICAgIHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkKHBhZ2luZ1NldHRpbmcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRpdGxlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dCwgJ3RpdGxlJywgbnVsbCk7XG4gICAgICAgIGlmICh0aXRsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5FeHRyYS5SZXBvcnQuQ2FwdGlvbicsICcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aXRsZUNoYW5nZWQoeyB0ZXh0OiB0aXRsZSwgaW1hZ2U6ICcnIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlYWRvbmx5KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVhZG9ubHkgPSBjb250ZXh0LnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLl9yZWFkb25seUNoYW5nZWQocmVhZG9ubHkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdEVuYWJsZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVuYWJsZSA9IGNvbnRleHQuZW5hYmxlID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW5hYmxlQ2hhbmdlZChlbmFibGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFZpc2libGUoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aXNpYmxlID0gY29udGV4dC5TZXR0aW5nLklzVmlzaWJsZSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuX3Zpc2libGVDaGFuZ2VkKHZpc2libGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRvb2xiYXJCdXR0b25zKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IGNvbnRleHQudGxiQnV0dG9ucztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnV0dG9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zQ2hhbmdlZChidXR0b25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdElubGluZUVkaXRNb2RlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkF1dG9JbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KGlubGluZUVkaXRNb2RlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRBbGxvd0lubGluZUVkaXQoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxvd0lubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkFsbG93SW5saW5lRWRpdDtcbiAgICAgICAgY29uc3QgYWxsb3dFZGl0ID0gY29udGV4dC5TZXR0aW5nLkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3M/LkVkaXQ7XG4gICAgICAgIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5uZXh0KGFsbG93SW5saW5lRWRpdCAmJiBhbGxvd0VkaXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb25seUlubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/Lk9ubHlJbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9vbmx5SW5saW5lRWRpdFNvdXJjZS5uZXh0KG9ubHlJbmxpbmVFZGl0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld2VyQ29udHJvbCA9IGNvbnRleHQudmlld2VyQ29udHJvbDtcbiAgICAgICAgaWYgKHZpZXdlckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoaWRlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydC5IaWRlVG9vbGJhcicsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5faGlkZVRvb2xiYXJTb3VyY2UubmV4dChoaWRlVG9vbGJhcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91bnNjdWJzY3JpYmVDb250ZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ01hc2tDaGFuZ2VkJywgdGhpcy5fbWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlckNvbnRyb2xDaGFuZ2VkJywgdGhpcy5fdmlld2VyQ29udHJvbENoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlck1hc2tDaGFuZ2VkJywgdGhpcy5fdmlld2VyTWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1Zpc2libGVDaGFuZ2VkJywgdGhpcy5fdmlzaWJsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1JlYWRvbmx5Q2hhbmdlZCcsIHRoaXMuX3JlYWRvbmx5Q2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignTWVudUl0ZW1zQ2hhbmdlZCcsIHRoaXMuX21lbnVJdGVtc0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1RpdGxlQ2hhbmdlZCcsIHRoaXMuX3RpdGxlQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignUGFnaW5nU2V0dGluZ0NoYW5nZWQnLCB0aGlzLl9wYWdpbmdTZXR0aW5nQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignVG9vbGJhckJ1dHRvbnNDaGFuZ2VkJywgdGhpcy5fdG9vbGJhckJ1dHRvbnNDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdFbmFibGVDaGFuZ2VkJywgdGhpcy5fZW5hYmxlQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignRGVzdHJveScsIHRoaXMuX2Rlc3Ryb3lDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdFeGl0SW5saW5lRWRpdCcsIHRoaXMuX2V4aXN0SW5saW5lRWRpdCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY29uZGl0aW9uYWxGb3JtYXRzQ2hhbmdlZChjb25kaXRpb25hbEZvcm1hdHM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25kaXRpb25hbEZvcm1hdHNTb3VyY2UubmV4dChjb25kaXRpb25hbEZvcm1hdHMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX21vRGF0YUxpc3RDaGFuZ2VkKG1vRGF0YUxpc3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0U291cmNlLm5leHQobW9EYXRhTGlzdCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8odGhpcy5jb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDYXJ0YWJsZXNGb3JtVGVtcGxhdGUodGhpcy5jb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrQ2FydGFibGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhtb0RhdGFMaXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NoZWNrQ2FydGFibGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGFzU2VsZWN0ZWQgPSBtb0RhdGFMaXN0LnNvbWUoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG4gICAgICAgIGNvbnN0IG1vSWRzID0gbW9EYXRhTGlzdC5tYXAoKGMpID0+IGMuSWQpO1xuICAgICAgICB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9ucyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLm1vLklkKSA+IC0xKTtcbiAgICAgICAgaWYgKCFoYXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNXb3JrZmxvd0J1dHRvbnMubmV4dChbXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld2VyQ29udHJvbFNvdXJjZS5uZXh0KHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB0aGlzLl9pbml0Q29uZGl0aW9uYWxGb3JtYXRzKHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRJbmxpbmVFZGl0TW9kZSh0aGlzLmNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0QWxsb3dJbmxpbmVFZGl0KHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRPbmx5SW5saW5lRWRpdCh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWFza0NoYW5nZWQobWFzazogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXNrU291cmNlLm5leHQobWFzayk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92aWV3ZXJNYXNrQ2hhbmdlZCh2aWV3ZXJNYXNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlck1hc2tTb3VyY2UubmV4dCh2aWV3ZXJNYXNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlYWRvbmx5Q2hhbmdlZChyZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWFkb25seVNvdXJjZS5uZXh0KHJlYWRvbmx5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Zpc2libGVDaGFuZ2VkKHZpZXdlck1hc2s6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZVNvdXJjZS5uZXh0KHZpZXdlck1hc2spO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlbW92ZUV4dHJhTWVudUl0ZW1zKG1lbnVJdGVtczogTWVudUl0ZW1bXSk6IE1lbnVJdGVtW10ge1xuICAgICAgICBjb25zdCBuZXdJdGVtcyA9IG1lbnVJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT4gYy5pdGVtSWQgIT09ICdEZWxldGUnICYmIGMuaXRlbUlkICE9PSAnQWRkVG9MaXN0JyAmJiBjLml0ZW1JZCAhPT0gJ1JlbW92ZUZyb21MaXN0J1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbmV3SXRlbXM7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbWVudUl0ZW1zQ2hhbmdlZChtZW51SXRlbXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01lbnVJdGVtcyA9IHRoaXMuX3JlbW92ZUV4dHJhTWVudUl0ZW1zKG1lbnVJdGVtcyk7XG4gICAgICAgIHRoaXMuX21lbnVJdGVtc1NvdXJjZS5uZXh0KG5ld01lbnVJdGVtcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90aXRsZUNoYW5nZWQodGl0bGVPYmo6IHsgdGV4dDogc3RyaW5nOyBpbWFnZTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh0aXRsZU9iaik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9zZWFyY2hQYW5lbENoYW5nZWQoc2VhcmNoUGFuZWw6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWFyY2hQYW5lbFVpU291cmNlLm5leHQoc2VhcmNoUGFuZWwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcGFnaW5nU2V0dGluZ0NoYW5nZWQocGFnZWluZ1NldHRpbmc6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wYWdpbmdTZXR0aW5nU291cmNlLm5leHQocGFnZWluZ1NldHRpbmcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdG9vbGJhckJ1dHRvbnNDaGFuZ2VkKGJ1dHRvbnM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zU291cmNlLm5leHQoYnV0dG9ucyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbmFibGVDaGFuZ2VkKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbmFibGVTb3VyY2UubmV4dChlbmFibGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZGVzdHJveUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lTb3VyY2UubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2V4aXN0SW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5saW5lRWRpdE1vZGVTb3VyY2UubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGREZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaE1vID0gSlNPTi5zdHJpbmdpZnkoc2VhcmNoUGFuZWw/Lk1vID8/IG5ldyBNZXRhb2JqZWN0RGF0YU1vZGVsKCkpO1xuICAgICAgICBjb25zdCBTdGFuZGFyZFRleHQgPSB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybSgnU3RhbmRhcmQnKTtcbiAgICAgICAgY29uc3Qgc3RhbmRhcmRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICAgICRDYXB0aW9uOiBTdGFuZGFyZFRleHQsXG4gICAgICAgICAgICBJc1N0YW5kYXJkOiB0cnVlLFxuICAgICAgICAgICAgSXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgSXNQdWJsaWM6IHRydWUsXG4gICAgICAgICAgICBJc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBBcHBseUF1dG9tYXRpY2FsbHk6IHRydWUsXG4gICAgICAgICAgICBIaWRlU2VhcmNoUGFuZWw6IGZhbHNlLFxuICAgICAgICAgICAgVGl0bGU6IFN0YW5kYXJkVGV4dCxcbiAgICAgICAgICAgIFNlYXJjaE1vOiBzZWFyY2hNbyxcbiAgICAgICAgICAgIFJlcG9ydElkOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KHN0YW5kYXJkU2V0dGluZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbG9hZFNlYXJjaFBhbmVsU2V0dGluZ3MocmVwb3J0SWQpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcmVwb3J0SWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbFVzZXJTZWFyY2hQYW5lbFNldHRpbmdzJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhbGxTZWFyY2hQYW5lbFNldHRpbmdzKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxTZWFyY2hQYW5lbFNldHRpbmdzID0gQmFyc2FBcGkuQncuX3Vud3JhcChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0U2VhcmNoID0gYWxsU2VhcmNoUGFuZWxTZXR0aW5ncy5maW5kKChjKSA9PiBjLklzRGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0U2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZS5uZXh0KGRlZmF1bHRTZWFyY2guSWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCByZXNldFNlYXJjaFBhbmVsU2V0dGluZ3Moc2VhcmNoUGFuZWxVaSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgICAgIGNvbnN0IGZpZWxkVWkgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaTtcbiAgICAgICAgY29uc3QgY2hhbmdlZCA9IHNlYXJjaFBhbmVsVWkuTW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xuICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2VkKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuU2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5Nby5TZXRGVmFsdWUoYywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldFN0YXRlKCdOZXcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkVWkpLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjICE9PSAnJFNlYXJjaCcgJiYgZmllbGRVaVtjXS5MYXlvdXRDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5maXJlRXZlbnQoJ0NoYW5nZUZpZWxkVmlzaWJsZScsIGZpZWxkVWlbY10uU2V0dGluZy5Db250cm9sRmllbGRDYXB0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbG9hZENhcnRhYmxlVGVtcGxhdGUoa2V5T2ZDYXJ0YWJsZVRlbXBsYXRlczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGNhcnRhYmxlVGVtcGxhdGVzID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghY2FydGFibGVUZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzOiBDYXJ0YWJsZVRlbXBsYXRlS2V5W10gPSBbXTtcblxuICAgICAgICBrZXlPZkNhcnRhYmxlVGVtcGxhdGVzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0ga2V5LnNwbGl0KHRoaXMuX2NhcnRhYmxlS2V5U2VwZXJhdG9yKTtcbiAgICAgICAgICAgIGlmICghY2FydGFibGVUZW1wbGF0ZXNba2V5XSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaCh7IFR5cGVEZWZJZDogdmFsdWVzWzBdLCBTZXR0aW5nc0lkOiB2YWx1ZXNbMV0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcGlTZXJ2aWNlLkdldENhcnRhYmxlVGVtcGxhdGUoa2V5cykuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfSA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYykuZm9yRWFjaCgoY0lkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGVtcGxhdGVzW2NJZF0gPSBCYXJzYUFwaS5FeHQuZGVjb2RlKGNbY0lkXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGVzID0geyAuLi5jYXJ0YWJsZVRlbXBsYXRlcywgLi4udGVtcGxhdGVzIH07XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlcyQubmV4dChjYXJ0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
797
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2bWFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91bHZtYWluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEgsT0FBTyxFQUNILFFBQVEsRUFFUixtQkFBbUIsRUFRdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNyQixNQUFNLGNBQWMsQ0FBQzs7OztBQUl0QixNQUFNLE9BQU8sY0FBYztJQWlGdkIsWUFBb0IsUUFBMEIsRUFBVSxXQUF1QjtRQUEzRCxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBaEYvRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUErQmxFLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFpQyxFQUFFLENBQUMsQ0FBQztRQUM5RSx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBZ0QsRUFBRSxDQUFDLENBQUM7UUFHcEYsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0Qsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN2Qyxt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SUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNMLE9BQU87WUFDWCxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQW1DLEVBQUUsQ0FBQztZQUNyRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7WUFDSCxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWg1QlEsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQYWdpbmdTZXR0aW5nLFxuICAgIFNlYXJjaFBhbmVsU2V0dGluZ3MsXG4gICAgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwsXG4gICAgQ29sdW1uSW5mb1R5cGUsXG4gICAgRm9ybVNldHRpbmcsXG4gICAgU2hhcmVCdXR0b25zQ2hvaWNlRGVmLFxuICAgIENhcnRhYmxlVGVtcGxhdGVLZXlcbn0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIGV4ZWN1dGVVbHZDb21tYW5kSGFuZGxlcixcbiAgICBnZW5yYXRlSW5saW5lTW9JZCxcbiAgICBnZXRDb250cm9sTGlzdCxcbiAgICBHZXREZWZhdWx0TW9PYmplY3RJbmZvLFxuICAgIGdldE5ld01vR3JpZEVkaXRvclxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmJiVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVbHZNYWluU2VydmljZSB7XG4gICAgbW9EYXRhTGlzdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbFtdPihbXSk7XG4gICAgY29udGV4dCQ6IFN1YnNjcmlwdGlvbjtcbiAgICB2aWV3ZXIkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgY29uZGl0aW9uYWxGb3JtYXRzJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGhpZGVUb29sYmFyJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBtYXNrJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB2aXdlck1hc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGVuYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcmVhZG9ubHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8TWVudUl0ZW1bXT47XG4gICAgdGl0bGUkOiBPYnNlcnZhYmxlPHsgdGV4dDogc3RyaW5nOyBpbWFnZTogc3RyaW5nIH0+O1xuXG4gICAgc2VhcmNoUGFuZWxVaSQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBwYWdpbmdTZXR0aW5nJDogT2JzZXJ2YWJsZTxQYWdpbmdTZXR0aW5nIHwgbnVsbD47XG4gICAgdG9vbGJhckJ1dHRvbnMkOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgICBkZXN0cm95JDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBtb0RhdGFMaXN0JDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHJlcG9ydElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGFsbG93SW5saW5lRWRpdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaW5saW5lRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG9ubHlJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjb250ZXh0OiBhbnk7XG4gICAgb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3MkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIG9wZW5TZWFyY2hGaWxlc01hbmFnZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgc2VhcmNoUGFuZWxNb0NoYW5nZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MkOiBPYnNlcnZhYmxlPFNlYXJjaFBhbmVsU2V0dGluZ3NbXT47XG4gICAgbGF5b3V0SW5mbyQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MkOiBPYnNlcnZhYmxlPFNlYXJjaFBhbmVsU2V0dGluZ3MgfCB1bmRlZmluZWQ+O1xuICAgIG5ld0lubGluZUVkaXRNbyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGw+O1xuICAgIF9jYXJ0YWJsZVRlbXBsYXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfT4oe30pO1xuICAgIF9jYXJ0YWJsZUNoaWxkc01vJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gfCBudWxsPih7fSk7XG4gICAgc2VsZWN0ZWRDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAgIHByaXZhdGUgX2dyaWRGcmVlQ29sdW1uU2l6aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2xheW91dEluZm9Tb3VyY2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBfY29udGV4dFNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIF9jYW5TYXZlR3JpZFNldHRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaW5EaWFsb2ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaXNNdWx0aVNlbGVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9mdWxsc2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NvbmRpdGlvbmFsRm9ybWF0c1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9yZXBvcnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdmlld2VyQ29udHJvbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlVG9vbGJhclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJpdmF0ZSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3ZpZXdlck1hc2tTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF92aXNpYmxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwcml2YXRlIF9lbmFibGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHByaXZhdGUgX3JlYWRvbmx5U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfb25seUlubGluZUVkaXRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pbmxpbmVFZGl0TW9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2FsbG93SW5saW5lRWRpdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlS2V5U2VwZXJhdG9yID0gJ0AnO1xuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHRleHQ6IHN0cmluZzsgaW1hZ2U6IHN0cmluZyB9Pih7XG4gICAgICAgIHRleHQ6ICcnLFxuICAgICAgICBpbWFnZTogJydcbiAgICB9KTtcblxuICAgIHByaXZhdGUgX3NlYXJjaFBhbmVsVWlTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgICBwcml2YXRlIF9wYWdpbmdTZXR0aW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmdTZXR0aW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhckJ1dHRvbnNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfdG9vbGJhckJ1dHRvbnNXb3JrZmxvd0J1dHRvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfZGVzdHJveVNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSB0cnVlO1xuICAgIHByaXZhdGUgX2NvbnRyb2xJbmZvc01ldGFvYmplY3Q6IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10gPSBbXTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UgPSBuZXcgU3ViamVjdDxTZWFyY2hQYW5lbFNldHRpbmdzPigpO1xuICAgIHByaXZhdGUgX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFBhbmVsU2V0dGluZ3NbXT4oW10pO1xuICAgIHByaXZhdGUgX29wZW5TZWFyY2hQYW5lbEhpZGRlblNldHRpbmdzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9vcGVuU2VhcmNoRmlsZXNNYW5hZ2VTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX3NlYXJjaFBhbmVsTW9DaGFuZ2VkU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbmV3SW5saW5lRWRpdE1vU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfaGlkZVNlYXJjaGFwYW5lbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3dvcmtmbG93U2hhcmVCdXR0b25zOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWZbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYmJiUGlwZTogQmJiVHJhbnNsYXRlUGlwZSwgcHJpdmF0ZSBfYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiAodGhpcy5jb250ZXh0ID0gY29udGV4dCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29udGV4dCkgPT4gdGhpcy5faW5pdGlhbGl6ZShjb250ZXh0KSksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGNvbnRleHQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5ld0lubGluZUVkaXRNbyQgPSB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLnZpZXdlciQgPSB0aGlzLl92aWV3ZXJDb250cm9sU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdHMkID0gdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbGJhciQgPSB0aGlzLl9oaWRlVG9vbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWFzayQgPSB0aGlzLl9tYXNrU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy52aXdlck1hc2skID0gdGhpcy5fdmlld2VyTWFza1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSQgPSB0aGlzLl92aXNpYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5lbmFibGUkID0gdGhpcy5fZW5hYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5yZWFkb25seSQgPSB0aGlzLl9yZWFkb25seVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuX21lbnVJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgZmlsdGVyKChpdGVtcykgPT4gaXRlbXM/Lmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChjKSA9PiBjLml0ZW1JZCAhPT0gJ0V4cG9ydFRvRXhjZWwnICYmIGMuaXRlbUlkICE9PSAnRGVsZXRlJykpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGl0bGUkID0gdGhpcy5fdGl0bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxVaSQgPSB0aGlzLl9zZWFyY2hQYW5lbFVpU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICB0YXAoKHNlYXJjaFBhbmVsKSA9PiB0aGlzLl9hZGREZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3MkID0gdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMucGFnaW5nU2V0dGluZyQgPSB0aGlzLl9wYWdpbmdTZXR0aW5nU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zV29ya2Zsb3dCdXR0b25zLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNTb3VyY2UuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgoW3dmQnRucywgY10pID0+XG4gICAgICAgICAgICAgICAgIWNcbiAgICAgICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ud2ZCdG5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLm1hcCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlVGV4dDogZC5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgZC5pdGVtSWQgIT09ICdOZXcnID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgIWMgPyBbXSA6IFsuLi5jLmZpbHRlcigoZCkgPT4gIWQuQ29tbWFuZD8uSXNCdWlsdGluKSwgLi4uYy5maWx0ZXIoKGQpID0+IGQuQ29tbWFuZD8uSXNCdWlsdGluKV1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgYy5yZWR1Y2UoKGFjYywgYikgPT4gKGFjYy5sZW5ndGggPiAwICYmIGFjY1thY2MubGVuZ3RoIC0gMV1bJzAnXSAmJiBiWycwJ10gPyBhY2MgOiBbLi4uYWNjLCBiXSksIFtdKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkID0gdGhpcy5fZGVzdHJveVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRhcCgoKSA9PiB0aGlzLl91bnNjdWJzY3JpYmVDb250ZXh0KCkpKTtcbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0JCA9IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudCQgPSB0aGlzLm1vRGF0YUxpc3QkLnBpcGUobWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChkKSA9PiBkLiRJc0NoZWNrZWQpLmxlbmd0aCkpO1xuICAgICAgICB0aGlzLnJlcG9ydElkJCA9IHRoaXMuX3JlcG9ydFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKG1hcCgocmVwb3J0KSA9PiByZXBvcnQ/LklkKSk7XG5cbiAgICAgICAgdGhpcy5hbGxvd0lubGluZUVkaXQkID0gdGhpcy5fYWxsb3dJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlJCA9IHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9ubHlJbmxpbmVFZGl0JCA9IHRoaXMuX29ubHlJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hGaWxlc01hbmFnZSQgPSB0aGlzLl9vcGVuU2VhcmNoRmlsZXNNYW5hZ2VTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQkID0gdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5sYXlvdXRJbmZvJCA9IHRoaXMuX2xheW91dEluZm9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgICAgIHRoaXMuYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCksXG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5hc09ic2VydmFibGUoKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbYWxsU2V0dGluZ3MsIGRlZmF1bHRTZXR0aW5nc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdFNldHRpbmdzICYmIGFsbFNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5ncy5Jc0RlZmF1bHQgPSAhYWxsU2V0dGluZ3Muc29tZSgoYykgPT4gYy5Jc0RlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICBhbGxTZXR0aW5ncyA9IFtkZWZhdWx0U2V0dGluZ3MsIC4uLmFsbFNldHRpbmdzXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbFNldHRpbmdzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQkID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWRTb3VyY2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQsXG4gICAgICAgICAgICB0aGlzLmFsbFNlYXJjaFBhbmVsU2V0dGluZ3MkXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtpZCwgc2V0dGluZ3NdKSA9PiBzZXR0aW5ncz8uZmluZCgoYykgPT4gYy5JZCA9PT0gaWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCBncmlkRnJlZUNvbHVtblNpemluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkRnJlZUNvbHVtblNpemluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBjYW5TYXZlR3JpZFNldHRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FuU2F2ZUdyaWRTZXR0aW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGluRGlhbG9nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luRGlhbG9nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGlzTXVsdGlTZWxlY3QkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aVNlbGVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBmdWxsc2NyZWVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW4kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVDaGlsZHNNbyQoKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVUZW1wbGF0ZXMkKCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgc2VhcmNoUGFuZWxVaSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUGFuZWxVaVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBnZXQgcmVwb3J0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydFNvdXJjZS5nZXRWYWx1ZSgpPy5JZDtcbiAgICB9XG4gICAgZ2V0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MoKTogU2VhcmNoUGFuZWxTZXR0aW5nc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IGhpZGVTZWFyY2hwYW5lbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuICAgIGdldCBoaWRlU2VhcmNocGFuZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuICAgIHNldF9ncmlkRnJlZUNvbHVtblNpemluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncmlkRnJlZUNvbHVtblNpemluZ0NoYW5nZWQodmFsdWUpO1xuICAgIH1cbiAgICBzZXRDYW5TYXZlR3JpZFNldHRpbmdzKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYW5TYXZlR3JpZFNldHRpbmckLm5leHQodmFsKTtcbiAgICB9XG4gICAgZXhlY3V0ZVRvb2xiYXJCdXR0b24oaXRlbUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IHRoaXMuX3Rvb2xiYXJCdXR0b25zU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghYnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidG4gPSBidXR0b25zLmZpbmQoKGMpID0+IGMuaXRlbUlkID09PSBpdGVtSWQpO1xuICAgICAgICBpZiAoYnRuKSB7XG4gICAgICAgICAgICBleGVjdXRlVWx2Q29tbWFuZEhhbmRsZXIoYnRuLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRXb3JrZmxvd0J1dHRvbnNJblRvb2xiYXIoZTogU2hhcmVCdXR0b25zQ2hvaWNlRGVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFyck9mU2hhcmVCdXR0b25zID0gdGhpcy5fY3JlYXRlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXJyT2ZTaGFyZUJ1dHRvbnMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiBjLFxuICAgICAgICAgICAgaXRlbUlkOiBjLFxuICAgICAgICAgICAgRGF0YTogbnVsbCxcbiAgICAgICAgICAgICRTaGFyZVdvcmtmbG93QnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgIENvbW1hbmQ6IHsgX2lzVmlzaWJsZTogdHJ1ZSwgX2lzRW5hYmxlOiB0cnVlLCBKc29uRXh0cmFQcm9wOiB7IERlc2lnbjogJ2F0dGVudGlvbicgfSB9LFxuICAgICAgICAgICAgaGFuZGxlcjogKGQpID0+IHRoaXMub25Xb3JrZmxvd0J1dHRvbkluVG9vbGJhckNsaWNrKGQpLFxuICAgICAgICAgICAgSXNCdWlsdGluOiBmYWxzZVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zV29ya2Zsb3dCdXR0b25zLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBfZXhjbHVkZVdyYXBwZXJGcm9tTW8obW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbiAgICAgICAgY29uc3QgeyAkV3JhcHBlciwgLi4ubmV3TW8gfSA9IG1vO1xuICAgICAgICByZXR1cm4gbmV3TW87XG4gICAgfVxuICAgIG9uV29ya2Zsb3dCdXR0b25JblRvb2xiYXJDbGljayhzaGFyZUJ1dHRvbjogeyB0ZXh0OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5Nc2cuT0tDYW5jZWwoJ9ii24zYpyDYp9iyINiq2KfbjNuM2K8g2YXZiNin2LHYryDaqdin2LHYqtin2KjZhCDZhdi32YXYptmGINmH2LPYqtuM2K/YnycsICfYqtin24zbjNivJywgKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gJ29rJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hvaWNlRGVmID0gYy5jaG9pY2VMaXN0LmZpbmQoKGQpID0+IGQuVGl0bGUgPT09IHNoYXJlQnV0dG9uLnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hvaWNlRGVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmZvcm1QYW5lbEN0cmxyLldvcmtmbG93VHJhbnNpdGlvbihjaG9pY2VEZWYsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9zZXRXb3JrZmxvd1N0YXRlKCdGaW5pc2gnLCBbYy5tb10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9zZXRXb3JrZmxvd1N0YXRlKFxuICAgICAgICAgICAgICAgIC8vICAgICAnUGVuZGluZycsXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLm1hcCgoYykgPT4gYy5tbylcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IHBhcmFtcyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAvLyAgICAgbW86IHRoaXMuX2V4Y2x1ZGVXcmFwcGVyRnJvbU1vKGMubW8uUmVsYXRlZE1vKSxcbiAgICAgICAgICAgICAgICAvLyAgICAgY2hvaWNlRGVmOiBjLmNob2ljZUxpc3QuZmluZCgoZCkgPT4gZC5UaXRsZSA9PT0gc2hhcmVCdXR0b24udGV4dClcbiAgICAgICAgICAgICAgICAvLyB9KSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fc2V0V29ya2Zsb3dTdGF0ZSgnUGVuZGluZycsIHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAvLyBCYXJzYUFwaS5Db21tb24uQWpheC5HZXRTZXJ2ZXJEYXRhKFxuICAgICAgICAgICAgICAgIC8vICAgICAnV29ya2Zsb3c5NC5Pbkdyb3VwT2ZDaG9pY2VEZWZzU2VsZWN0JyxcbiAgICAgICAgICAgICAgICAvLyAgICAgeyBwYXJhbWV0ZXI6IHsgRGF0YUxpc3Q6IHBhcmFtcyB9IH0sXG4gICAgICAgICAgICAgICAgLy8gICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX3NldFdvcmtmbG93U3RhdGUoJ1N1Y2Nlc3MnLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIC8vICAgICB9LCAvLyBzdWNjZXNzXG4gICAgICAgICAgICAgICAgLy8gICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX3NldFdvcmtmbG93U3RhdGUoJ0ZhaWxlZCcsIHBhcmFtcywgJ9mF2KrYp9iz2YHYp9mG2Ycg2LnZhdmE24zYp9iqINmG2KfZhdmI2YHZgiDYqNmI2K8uJyk7XG4gICAgICAgICAgICAgICAgLy8gICAgIH0sIC8vIGZhaWx1cmVcbiAgICAgICAgICAgICAgICAvLyAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpc1xuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh7IHRleHQ6IHRpdGxlLCBpbWFnZTogJycgfSk7XG4gICAgfVxuICAgIHRvZ2dsZUhpZGVTZWFyY2hwYW5lbCh2YWw/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGVTZWFyY2hhcGFuZWxTb3VyY2UubmV4dCh0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJyA/IHZhbCA6ICF0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBzZXRDb250ZXh0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGV4dFNvdXJjZS5uZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgICBzZXRJbkRpYWxvZyh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5EaWFsb2ckLm5leHQodmFsKTtcbiAgICB9XG4gICAgc2V0SXNNdWx0aVNlbGVjdCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aVNlbGVjdCQubmV4dCh2YWwpO1xuICAgIH1cbiAgICBzZXRGdWxsc2NyZWVuKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mdWxsc2NyZWVuJC5uZXh0KHZhbCk7XG4gICAgfVxuXG4gICAgY3JlYXRlTmV3SW5saW5lTW8oaXNDaGVja2VkOiBib29sZWFuKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZvcm1TZXR0aW5nID0gY29udGV4dC5TZXR0aW5nLkZvcm1UZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gY29udGV4dC5TZXR0aW5nLkV4dHJhLlJlcG9ydC5UeXBlRGVmSWQ7XG4gICAgICAgIGNvbnN0IG5ld01vID0gZ2V0TmV3TW9HcmlkRWRpdG9yKGZvcm1TZXR0aW5nLCB0eXBlRGVmSWQpIGFzIE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIG5ld01vLklkID0gZ2VucmF0ZUlubGluZU1vSWQoKTtcbiAgICAgICAgbmV3TW8uJElzQ2hlY2tlZCA9IGlzQ2hlY2tlZDtcbiAgICAgICAgbmV3TW8uJE5ld0lubGluZU1vID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ29tcG9zaXRlKGNvbnRleHQpKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKTtcbiAgICAgICAgICAgIG5ld01vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSByZWxhdGlvbi5QYXJlbnRNb0lkO1xuICAgICAgICB9XG4gICAgICAgIC8vICB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UubmV4dChuZXdNbyk7XG4gICAgICAgIHJldHVybiBuZXdNbztcbiAgICB9XG4gICAgc2V0TGF5b3V0SW5mbyhsYXlvdXRJbmZvKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xheW91dEluZm9Tb3VyY2UubmV4dChsYXlvdXRJbmZvKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zY3Vic2NyaWJlQ29udGV4dCgpO1xuICAgIH1cblxuICAgIHBhZ2VTaXplQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUGFnZUNoYW5nZScsIHRoaXMuY29udGV4dCwgcGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICBwYWdlQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmN1cnJlbnRQYWdlID0gcGFnZUluZGV4O1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdQYWdlQ2hhbmdlJywgdGhpcy5jb250ZXh0LCBwYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIHJlU2V0TW9EYXRhTGlzdChtb0RhdGFMaXN0PzogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSBtb0RhdGFMaXN0ID8/IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9tb0RhdGFMaXN0Q2hhbmdlZChbLi4ubmV3TW9EYXRhTGlzdF0pO1xuICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5TZXR0aW5nPy5Jc0NhcnRhYmxlUmVwb3J0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5T2ZDYXRhYmxlVGVtcGxhdGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIG5ld01vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHBkZklkID0gYy5SZWxhdGVkTW8/LiRUeXBlRGVmSWQ7XG4gICAgICAgICAgICBpZiAodHBkZklkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dHBkZklkfSR7dGhpcy5fY2FydGFibGVLZXlTZXBlcmF0b3J9JHtjLkNhcnRhYmxlU2V0dGluZ3M/LklkIHx8ICcwJ31gO1xuICAgICAgICAgICAgICAgIGtleU9mQ2F0YWJsZVRlbXBsYXRlcy5hZGQoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChrZXlPZkNhdGFibGVUZW1wbGF0ZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRDYXJ0YWJsZVRlbXBsYXRlKGtleU9mQ2F0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2VhcmNoIFNldHRpbmcgTWFuYWdlclxuICAgIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBpZiAoIXNlYXJjaFBhbmVsVWkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZFVpID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWkuJFNlYXJjaCA/PyBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS7YrNiz2KrYrNmIO1xuICAgICAgICBmaWVsZFVpLmZpcmVFdmVudCgnQ2xlYXJDbGljaycpO1xuICAgIH1cbiAgICBzZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGlmICghc2VhcmNoUGFuZWxVaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWVsZFVpID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWkuJFNlYXJjaCA/PyBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS7YrNiz2KrYrNmIO1xuICAgICAgICBpZiAoIWZpZWxkVWkpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgICAgIGlmIChlLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5TZWFyY2hDb21tYW5kSW5mb1VpJykge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFVpID0gZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRVaSkge1xuICAgICAgICAgICAgZmllbGRVaS5maXJlRXZlbnQoJ1NlYXJjaENsaWNrJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWYWx1ZUlubGluZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldEFsbG93SW5saW5lRWRpdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXRJbmxpbmVFZGl0KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWVsZHNIaWRkZW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWxlc01hbmFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaEZpbGVzTWFuYWdlU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZWFyY2hQYW5lbE1vQ2hhbmdlZChjaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIGxvYWRTZWFyY2hQYW5lbFNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0LkZvcm1QYW5lbFVpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBvcnRJZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoKHJlcG9ydElkKSA9PiB0aGlzLl9sb2FkU2VhcmNoUGFuZWxTZXR0aW5ncyhyZXBvcnRJZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MucHVzaChzZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgIH1cbiAgICBzYXZlU2VhcmNoUGFuZWxTZXR0aW5nKHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hNbyA9IHRoaXMuZ2V0U2VhcmNoUGFuZWxNbygpO1xuICAgICAgICBjb25zdCBmaWVsZHNTZXR0aW5nID0gdGhpcy5nZXRTZWFyY2hQYW5lbEZpZWxkc1NldHRpbmcoKTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8gPSBKU09OLnN0cmluZ2lmeShzZWFyY2hNbyk7XG4gICAgICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5GaWVsZHNTZXR0aW5nID0gSlNPTi5zdHJpbmdpZnkoZmllbGRzU2V0dGluZyk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKFxuICAgICAgICAgICAgJ1NhdmVTZWFyY2hQYW5lbFNldHRpbmdzJyxcbiAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgSWQ6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5JZCxcbiAgICAgICAgICAgICAgICAkQ2FwdGlvbjogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIFJlcG9ydElkOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuUmVwb3J0Py5JZCxcbiAgICAgICAgICAgICAgICBUaXRsZTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIElzRGVmYXVsdDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzRGVmYXVsdCxcbiAgICAgICAgICAgICAgICBJc1B1YmxpYzogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzUHVibGljLFxuICAgICAgICAgICAgICAgIEFwcGx5QXV0b21hdGljYWxseTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLkFwcGx5QXV0b21hdGljYWxseSxcbiAgICAgICAgICAgICAgICBIaWRlU2VhcmNoUGFuZWw6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5IaWRlU2VhcmNoUGFuZWwsXG4gICAgICAgICAgICAgICAgU2VhcmNoTW86IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbyxcbiAgICAgICAgICAgICAgICBGaWVsZHNTZXR0aW5nOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuRmllbGRzU2V0dGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIGFwcGx5U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGlmICghc2VhcmNoUGFuZWxTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSAmJiBzZWFyY2hQYW5lbFNldHRpbmdzLklzUHJpbWFyeSkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsVWkpO1xuICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbykge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSBKU09OLnBhcnNlKHNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VhcmNoTW8pLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBjLmluZGV4T2YoJyQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuU2V0VmFsdWUoc2VhcmNoTW9bY10pO1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldEZWYWx1ZShjLCBzZWFyY2hNb1tjXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkgJiYgIXNlYXJjaFBhbmVsVWkuU2V0dGluZy5JbW1lZGlhdGVFeGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlYXJjaFBhbmVsU2V0dGluZ3MuQXBwbHlBdXRvbWF0aWNhbGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIHNldCBoaWRkZW4gZmllbGRzXG4gICAgICAgIGlmIChzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzID0gSlNPTi5wYXJzZShzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbmRBcHBseVNlYXJjaFBhbmVsU2V0dGluZ0ZpZWxkc1NldHRpbmcoXG4gICAgICAgICAgICAgICAgdHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2Uoc2V0dGluZ3MpIDogc2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsTW8oKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFBhbmVsVWkuTW87XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsRmllbGRzU2V0dGluZygpOiBBcnJheTxQYXJ0aWFsPEdlbmVyYWxDb250cm9sSW5mb01vZGVsPj4ge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBjb25zdCBmaWVsZHM6IEFycmF5PEdlbmVyYWxDb250cm9sSW5mb01vZGVsPiA9IHNlYXJjaFBhbmVsVWkuU2V0dGluZy5WaWV3LkNvbnRyb2xJbmZvLmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjLkNvbnRyb2xOYW1lICE9PSAnJFNlYXJjaCcgJiYgYy5Db250cm9sTmFtZSAhPT0gJ9is2LPYqtis2YgnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpZWxkc1NldHRpbmcgPSBmaWVsZHMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgTmFtZTogYy5Db250cm9sTmFtZSxcbiAgICAgICAgICAgIENhcHRpb246IGMuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQsXG4gICAgICAgICAgICBIaWRkZW46IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2MuQ29udHJvbE5hbWVdLlNldHRpbmcuSXNWaXNpYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIElzTWFuZGF0b3J5OiBjLklzTWFuZGF0b3J5XG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1NldHRpbmc7XG4gICAgfVxuICAgIHNldEFuZEFwcGx5U2VhcmNoUGFuZWxTZXR0aW5nRmllbGRzU2V0dGluZyhmaWVsZHNTZXR0aW5nOiBDb2x1bW5JbmZvVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGZpZWxkc1NldHRpbmcuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaVtjLk5hbWVdO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5maXJlRXZlbnQoJ0NoYW5nZUZpZWxkVmlzaWJsZScsIGZpZWxkLlNldHRpbmcuQ29udHJvbEZpZWxkQ2FwdGlvbiwgIWMuSGlkZGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZVNlYXJjaFBhbmVsU2V0dGluZ3MoYWxsU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5nc1tdKTogdm9pZCB7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbHRlcigoYykgPT4gIWMuSXNQcmltYXJ5ICYmICFjLklzRGVsZXRlZCk7XG4gICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UubmV4dChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICB9XG5cbiAgICByZW1vdmVTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MuZmlsdGVyKChjKSA9PiBjLklkICE9PSBzZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2VsZWN0ZWRTZWFyY2hQYW5lbChzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlLm5leHQoc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgIH1cblxuICAgIGxvYWRNZXRhQ29uZGl0aW9uc0NvbnRyb2xJbmZvcyh0eXBlRGVmSWQ6IHN0cmluZywgZmllbGREYk5hbWVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8R2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXT4ge1xuICAgICAgICBjb25zdCBtbyA9IEdldERlZmF1bHRNb09iamVjdEluZm8odHlwZURlZklkKTtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2NvbnRyb2xJbmZvc01ldGFvYmplY3QpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNvbnRyb2xzSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sc0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY29udHJvbHNJbmZvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldENvbnRyb2xMaXN0KG1vLCBmaWVsZERiTmFtZXMsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChjb250cm9sc0luZm86IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10pID0+ICh0aGlzLl9jb250cm9sSW5mb3NNZXRhb2JqZWN0ID0gY29udHJvbHNJbmZvKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jcmVhdGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhlOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYpOiBzdHJpbmdbXSB7XG4gICAgICAgIGxldCBzaGFyZUJ1dHRvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChlLmFkZCkge1xuICAgICAgICAgICAgdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMucHVzaChlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zID0gdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMuZmlsdGVyKChjKSA9PiBjLm1vLklkICE9PSBlLm1vLklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zID0gdGhpcy5fd29ya2Zsb3dTaGFyZUJ1dHRvbnMuZmlsdGVyKChjKSA9PiBjLm1vPy4kSXNDaGVja2VkKTtcbiAgICAgICAgaWYgKHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNoYXJlQnV0dG9ucyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zWzBdLmNob2ljZUxpc3QubWFwKChkKSA9PiBkLlRpdGxlKTtcbiAgICAgICAgICAgIGNvbnN0IHVuU2hhcmVCdXR0b25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9uc1tpXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNoYXJlQnV0dG9ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaG9pY2VMaXN0Lm1hcCgoZCkgPT4gZC5UaXRsZSkuaW5kZXhPZihzaGFyZUJ1dHRvbnNbal0pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5TaGFyZUJ1dHRvbnMucHVzaChzaGFyZUJ1dHRvbnNbal0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hhcmVCdXR0b25zID0gc2hhcmVCdXR0b25zLmZpbHRlcigoYykgPT4gdW5TaGFyZUJ1dHRvbnMuaW5kZXhPZihjKSA9PT0gLTEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFyZUJ1dHRvbnM7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmcgPSBjb250ZXh0LlNldHRpbmcuRm9ybVRlbXBsYXRlO1xuICAgICAgICBpZiAoZm9ybVNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3SW5saW5lTW8oZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0NvbXBvc2l0ZShjb250ZXh0KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVHlwZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uLlJlbGF0aW9uVHlwZScpO1xuICAgICAgICByZXR1cm4gcmVsYXRpb25UeXBlID09PSBCYXJzYUFwaS5Db21tb24uRW51bXMuUmVsYXRpb25UeXBlLkNvbXBvc2l0aW9uO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2FkZEV2ZW50TGlzdGVuZXIoY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnRleHQub24oe1xuICAgICAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgICAgICBNYXNrQ2hhbmdlZDogdGhpcy5fbWFza0NoYW5nZWQsXG4gICAgICAgICAgICBWaWV3ZXJNYXNrQ2hhbmdlZDogdGhpcy5fdmlld2VyTWFza0NoYW5nZWQsXG4gICAgICAgICAgICBWaWV3ZXJDb250cm9sQ2hhbmdlZDogdGhpcy5fdmlld2VyQ29udHJvbENoYW5nZWQsXG4gICAgICAgICAgICBWaXNpYmxlQ2hhbmdlZDogdGhpcy5fdmlzaWJsZUNoYW5nZWQsXG4gICAgICAgICAgICBSZWFkb25seUNoYW5nZWQ6IHRoaXMuX3JlYWRvbmx5Q2hhbmdlZCxcbiAgICAgICAgICAgIE1lbnVJdGVtc0NoYW5nZWQ6IHRoaXMuX21lbnVJdGVtc0NoYW5nZWQsXG4gICAgICAgICAgICBUaXRsZUNoYW5nZWQ6IHRoaXMuX3RpdGxlQ2hhbmdlZCxcbiAgICAgICAgICAgIFNlYXJjaFBhbmVsQ2hhbmdlZDogdGhpcy5fc2VhcmNoUGFuZWxDaGFuZ2VkLFxuICAgICAgICAgICAgUGFnaW5nU2V0dGluZ0NoYW5nZWQ6IHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkLFxuICAgICAgICAgICAgVG9vbGJhckJ1dHRvbnNDaGFuZ2VkOiB0aGlzLl90b29sYmFyQnV0dG9uc0NoYW5nZWQsXG4gICAgICAgICAgICBFbmFibGVDaGFuZ2VkOiB0aGlzLl9lbmFibGVDaGFuZ2VkLFxuICAgICAgICAgICAgRGVzdHJveTogdGhpcy5fZGVzdHJveUNoYW5nZWQsXG4gICAgICAgICAgICBFeGl0SW5saW5lRWRpdDogdGhpcy5fZXhpc3RJbmxpbmVFZGl0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdGlhbGl6ZShjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdENhcnRhYmxlc0Zvcm1UZW1wbGF0ZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENvbmRpdGlvbmFsRm9ybWF0cyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdEFsbG93SW5saW5lRWRpdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SW5saW5lRWRpdE1vZGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRSZXBvcnQoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUb29sYmFyQnV0dG9ucyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFZpc2libGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRFbmFibGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUaXRsZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFJlYWRvbmx5KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0TW9EYXRhTGlzdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFBhZ2luZ1NldHRpbmcoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRNZW51SXRlbXMoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRTZWFyY2hwYW5lbChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0R3JpZEZyZWVDb2x1bW5TaXppbmcoY29udGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdEdyaWRGcmVlQ29sdW1uU2l6aW5nKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5TZXR0aW5nLlZpZXc/LkdyaWRfRnJlZUNvbHVtblNpemluZykge1xuICAgICAgICAgICAgdGhpcy5fZ3JpZEZyZWVDb2x1bW5TaXppbmdDaGFuZ2VkKGNvbnRleHQuU2V0dGluZy5WaWV3Py5HcmlkX0ZyZWVDb2x1bW5TaXppbmcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ3JpZEZyZWVDb2x1bW5TaXppbmdDaGFuZ2VkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyaWRGcmVlQ29sdW1uU2l6aW5nJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbml0Q2FydGFibGVzRm9ybVRlbXBsYXRlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FydGFibGVUZW1wbGF0ZXMgPSBjb250ZXh0LlNldHRpbmcuQ2FydGFibGVUZW1wbGF0ZXM7XG4gICAgICAgIGlmIChjYXJ0YWJsZVRlbXBsYXRlcykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXJ0YWJsZVRlbXBsYXRlc1trZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlc1trZXldID0gQmFyc2FBcGkuRXh0LmRlY29kZShjYXJ0YWJsZVRlbXBsYXRlc1trZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGVzJC5uZXh0KGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jYXJ0YWJsZUNoaWxkc01vKGNvbnRleHQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luaXRTZWFyY2hwYW5lbChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3NlYXJjaFBhbmVsQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxDaGFuZ2VkKGNvbnRleHQuX3NlYXJjaFBhbmVsQ29udHJvbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRDb25kaXRpb25hbEZvcm1hdHMoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LlNldHRpbmcuVmlldz8uQ29uZGl0aW9uYWxGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25kaXRpb25hbEZvcm1hdHNDaGFuZ2VkKGNvbnRleHQuU2V0dGluZy5WaWV3Py5Db25kaXRpb25hbEZvcm1hdHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0TWVudUl0ZW1zKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5tZW51SXRlbXMpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IG5ld0l0ZW1zID0gY29udGV4dC5tZW51SXRlbXM7XG4gICAgICAgICAgICB0aGlzLl9tZW51SXRlbXNDaGFuZ2VkKGNvbnRleHQubWVudUl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlcG9ydChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydCcsIFtdKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0U291cmNlLm5leHQocmVwb3J0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRNb0RhdGFMaXN0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsIFtdKTtcbiAgICAgICAgdGhpcy5fbW9EYXRhTGlzdENoYW5nZWQobW9EYXRhTGlzdCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY2FydGFibGVDaGlsZHNNbyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbykge1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVDaGlsZHNNbyQubmV4dChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRQYWdpbmdTZXR0aW5nKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5nU2V0dGluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuUGFnaW5nJywgbnVsbCk7XG4gICAgICAgIHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkKHBhZ2luZ1NldHRpbmcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRpdGxlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dCwgJ3RpdGxlJywgbnVsbCk7XG4gICAgICAgIGlmICh0aXRsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5FeHRyYS5SZXBvcnQuQ2FwdGlvbicsICcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aXRsZUNoYW5nZWQoeyB0ZXh0OiB0aXRsZSwgaW1hZ2U6ICcnIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlYWRvbmx5KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVhZG9ubHkgPSBjb250ZXh0LnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLl9yZWFkb25seUNoYW5nZWQocmVhZG9ubHkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdEVuYWJsZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVuYWJsZSA9IGNvbnRleHQuZW5hYmxlID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW5hYmxlQ2hhbmdlZChlbmFibGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFZpc2libGUoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aXNpYmxlID0gY29udGV4dC5TZXR0aW5nLklzVmlzaWJsZSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuX3Zpc2libGVDaGFuZ2VkKHZpc2libGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRvb2xiYXJCdXR0b25zKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IGNvbnRleHQudGxiQnV0dG9ucztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnV0dG9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zQ2hhbmdlZChidXR0b25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdElubGluZUVkaXRNb2RlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkF1dG9JbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KGlubGluZUVkaXRNb2RlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRBbGxvd0lubGluZUVkaXQoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxvd0lubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkFsbG93SW5saW5lRWRpdDtcbiAgICAgICAgY29uc3QgYWxsb3dFZGl0ID0gY29udGV4dC5TZXR0aW5nLkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3M/LkVkaXQ7XG4gICAgICAgIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5uZXh0KGFsbG93SW5saW5lRWRpdCAmJiBhbGxvd0VkaXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb25seUlubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/Lk9ubHlJbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9vbmx5SW5saW5lRWRpdFNvdXJjZS5uZXh0KG9ubHlJbmxpbmVFZGl0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld2VyQ29udHJvbCA9IGNvbnRleHQudmlld2VyQ29udHJvbDtcbiAgICAgICAgaWYgKHZpZXdlckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoaWRlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydC5IaWRlVG9vbGJhcicsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5faGlkZVRvb2xiYXJTb3VyY2UubmV4dChoaWRlVG9vbGJhcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91bnNjdWJzY3JpYmVDb250ZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ01hc2tDaGFuZ2VkJywgdGhpcy5fbWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlckNvbnRyb2xDaGFuZ2VkJywgdGhpcy5fdmlld2VyQ29udHJvbENoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlck1hc2tDaGFuZ2VkJywgdGhpcy5fdmlld2VyTWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1Zpc2libGVDaGFuZ2VkJywgdGhpcy5fdmlzaWJsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1JlYWRvbmx5Q2hhbmdlZCcsIHRoaXMuX3JlYWRvbmx5Q2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignTWVudUl0ZW1zQ2hhbmdlZCcsIHRoaXMuX21lbnVJdGVtc0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1RpdGxlQ2hhbmdlZCcsIHRoaXMuX3RpdGxlQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignUGFnaW5nU2V0dGluZ0NoYW5nZWQnLCB0aGlzLl9wYWdpbmdTZXR0aW5nQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignVG9vbGJhckJ1dHRvbnNDaGFuZ2VkJywgdGhpcy5fdG9vbGJhckJ1dHRvbnNDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdFbmFibGVDaGFuZ2VkJywgdGhpcy5fZW5hYmxlQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignRGVzdHJveScsIHRoaXMuX2Rlc3Ryb3lDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdFeGl0SW5saW5lRWRpdCcsIHRoaXMuX2V4aXN0SW5saW5lRWRpdCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY29uZGl0aW9uYWxGb3JtYXRzQ2hhbmdlZChjb25kaXRpb25hbEZvcm1hdHM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25kaXRpb25hbEZvcm1hdHNTb3VyY2UubmV4dChjb25kaXRpb25hbEZvcm1hdHMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX21vRGF0YUxpc3RDaGFuZ2VkKG1vRGF0YUxpc3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0U291cmNlLm5leHQobW9EYXRhTGlzdCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8odGhpcy5jb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDYXJ0YWJsZXNGb3JtVGVtcGxhdGUodGhpcy5jb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrQ2FydGFibGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhtb0RhdGFMaXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NoZWNrQ2FydGFibGVXb3JrZmxvd1NoYXJlQnV0dG9ucyhtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGFzU2VsZWN0ZWQgPSBtb0RhdGFMaXN0LnNvbWUoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG4gICAgICAgIGNvbnN0IG1vSWRzID0gbW9EYXRhTGlzdC5tYXAoKGMpID0+IGMuSWQpO1xuICAgICAgICB0aGlzLl93b3JrZmxvd1NoYXJlQnV0dG9ucyA9IHRoaXMuX3dvcmtmbG93U2hhcmVCdXR0b25zLmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLm1vLklkKSA+IC0xKTtcbiAgICAgICAgaWYgKCFoYXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNXb3JrZmxvd0J1dHRvbnMubmV4dChbXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld2VyQ29udHJvbFNvdXJjZS5uZXh0KHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB0aGlzLl9pbml0Q29uZGl0aW9uYWxGb3JtYXRzKHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRJbmxpbmVFZGl0TW9kZSh0aGlzLmNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0QWxsb3dJbmxpbmVFZGl0KHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRPbmx5SW5saW5lRWRpdCh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWFza0NoYW5nZWQobWFzazogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXNrU291cmNlLm5leHQobWFzayk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92aWV3ZXJNYXNrQ2hhbmdlZCh2aWV3ZXJNYXNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlck1hc2tTb3VyY2UubmV4dCh2aWV3ZXJNYXNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlYWRvbmx5Q2hhbmdlZChyZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWFkb25seVNvdXJjZS5uZXh0KHJlYWRvbmx5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Zpc2libGVDaGFuZ2VkKHZpZXdlck1hc2s6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZVNvdXJjZS5uZXh0KHZpZXdlck1hc2spO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlbW92ZUV4dHJhTWVudUl0ZW1zKG1lbnVJdGVtczogTWVudUl0ZW1bXSk6IE1lbnVJdGVtW10ge1xuICAgICAgICBpZiAoIW1lbnVJdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gbWVudUl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjLml0ZW1JZCAhPT0gJ0RlbGV0ZScgJiYgYy5pdGVtSWQgIT09ICdBZGRUb0xpc3QnICYmIGMuaXRlbUlkICE9PSAnUmVtb3ZlRnJvbUxpc3QnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBuZXdJdGVtcztcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9tZW51SXRlbXNDaGFuZ2VkKG1lbnVJdGVtczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3TWVudUl0ZW1zID0gdGhpcy5fcmVtb3ZlRXh0cmFNZW51SXRlbXMobWVudUl0ZW1zKTtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zU291cmNlLm5leHQobmV3TWVudUl0ZW1zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3RpdGxlQ2hhbmdlZCh0aXRsZU9iajogeyB0ZXh0OiBzdHJpbmc7IGltYWdlOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aXRsZVNvdXJjZS5uZXh0KHRpdGxlT2JqKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NlYXJjaFBhbmVsQ2hhbmdlZChzZWFyY2hQYW5lbDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFBhbmVsVWlTb3VyY2UubmV4dChzZWFyY2hQYW5lbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wYWdpbmdTZXR0aW5nQ2hhbmdlZChwYWdlaW5nU2V0dGluZzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BhZ2luZ1NldHRpbmdTb3VyY2UubmV4dChwYWdlaW5nU2V0dGluZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b29sYmFyQnV0dG9uc0NoYW5nZWQoYnV0dG9uczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNTb3VyY2UubmV4dChidXR0b25zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VuYWJsZUNoYW5nZWQoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VuYWJsZVNvdXJjZS5uZXh0KGVuYWJsZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9kZXN0cm95Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveVNvdXJjZS5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZXhpc3RJbmxpbmVFZGl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FkZERlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSBKU09OLnN0cmluZ2lmeShzZWFyY2hQYW5lbD8uTW8gPz8gbmV3IE1ldGFvYmplY3REYXRhTW9kZWwoKSk7XG4gICAgICAgIGNvbnN0IFN0YW5kYXJkVGV4dCA9IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTdGFuZGFyZCcpO1xuICAgICAgICBjb25zdCBzdGFuZGFyZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgICAgJENhcHRpb246IFN0YW5kYXJkVGV4dCxcbiAgICAgICAgICAgIElzU3RhbmRhcmQ6IHRydWUsXG4gICAgICAgICAgICBJc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBJc1B1YmxpYzogdHJ1ZSxcbiAgICAgICAgICAgIElzUHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgICAgIEFwcGx5QXV0b21hdGljYWxseTogdHJ1ZSxcbiAgICAgICAgICAgIEhpZGVTZWFyY2hQYW5lbDogZmFsc2UsXG4gICAgICAgICAgICBUaXRsZTogU3RhbmRhcmRUZXh0LFxuICAgICAgICAgICAgU2VhcmNoTW86IHNlYXJjaE1vLFxuICAgICAgICAgICAgUmVwb3J0SWQ6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoc3RhbmRhcmRTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9sb2FkU2VhcmNoUGFuZWxTZXR0aW5ncyhyZXBvcnRJZCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtyZXBvcnRJZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkQWxsVXNlclNlYXJjaFBhbmVsU2V0dGluZ3MnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBCYXJzYUFwaS5Cdy5fdW53cmFwKGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWFyY2ggPSBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbmQoKGMpID0+IGMuSXNEZWZhdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlLm5leHQoZGVmYXVsdFNlYXJjaC5JZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7fVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHJlc2V0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFVpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICAgICAgY29uc3QgZmllbGRVaSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpO1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gc2VhcmNoUGFuZWxVaS5Nby5HZXRDaGFuZ2VkT2JqZWN0KCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZWQpLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWlbY107XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5TZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldEZWYWx1ZShjLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlYXJjaFBhbmVsVWkuTW8uU2V0U3RhdGUoJ05ldycpO1xuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRVaSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKGMgIT09ICckU2VhcmNoJyAmJiBmaWVsZFVpW2NdLkxheW91dENvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLmZpcmVFdmVudCgnQ2hhbmdlRmllbGRWaXNpYmxlJywgZmllbGRVaVtjXS5TZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb24sIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9sb2FkQ2FydGFibGVUZW1wbGF0ZShrZXlPZkNhcnRhYmxlVGVtcGxhdGVzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBsZXQgY2FydGFibGVUZW1wbGF0ZXMgPSB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlcyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFjYXJ0YWJsZVRlbXBsYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleXM6IENhcnRhYmxlVGVtcGxhdGVLZXlbXSA9IFtdO1xuXG4gICAgICAgIGtleU9mQ2FydGFibGVUZW1wbGF0ZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBrZXkuc3BsaXQodGhpcy5fY2FydGFibGVLZXlTZXBlcmF0b3IpO1xuICAgICAgICAgICAgaWYgKCFjYXJ0YWJsZVRlbXBsYXRlc1trZXldKSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKHsgVHlwZURlZklkOiB2YWx1ZXNbMF0sIFNldHRpbmdzSWQ6IHZhbHVlc1sxXSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FwaVNlcnZpY2UuR2V0Q2FydGFibGVUZW1wbGF0ZShrZXlzKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICAgIGlmICghYykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlczogeyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9ID0ge307XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjKS5mb3JFYWNoKChjSWQpID0+IHtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZXNbY0lkXSA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoY1tjSWRdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZXMgPSB7IC4uLmNhcnRhYmxlVGVtcGxhdGVzLCAuLi50ZW1wbGF0ZXMgfTtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGVzJC5uZXh0KGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -5757,6 +5757,9 @@ class UlvMainService {
|
|
|
5757
5757
|
this._visibleSource.next(viewerMask);
|
|
5758
5758
|
}
|
|
5759
5759
|
_removeExtraMenuItems(menuItems) {
|
|
5760
|
+
if (!menuItems) {
|
|
5761
|
+
return [];
|
|
5762
|
+
}
|
|
5760
5763
|
const newItems = menuItems.filter((c) => c.itemId !== 'Delete' && c.itemId !== 'AddToList' && c.itemId !== 'RemoveFromList');
|
|
5761
5764
|
return newItems;
|
|
5762
5765
|
}
|