fabrikantencore 2.8.9 → 2.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.mjs +1 -1
- package/esm2022/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.mjs +6 -3
- package/esm2022/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.mjs +15 -12
- package/esm2022/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.mjs +4 -5
- package/esm2022/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.mjs +10 -3
- package/esm2022/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.mjs +5 -2
- package/esm2022/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.mjs +4 -5
- package/esm2022/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.mjs +14 -11
- package/esm2022/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +38 -4
- package/esm2022/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +172 -1
- package/fesm2022/fabrikantencore.mjs +304 -85
- package/fesm2022/fabrikantencore.mjs.map +1 -1
- package/package.json +2 -2
- package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.d.ts +2 -1
- package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.d.ts +3 -1
- package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.d.ts +0 -1
- package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.d.ts +3 -0
- package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.d.ts +0 -1
- package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.d.ts +3 -1
- package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +4 -2
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +53 -1
|
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
293
293
|
type: ViewChild,
|
|
294
294
|
args: ['tablediv']
|
|
295
295
|
}] } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBZ0csbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4WixNQU1hLHdCQUF3QjtJQTZDekI7SUFDQTtJQUNBO0lBQ0E7SUEvQ0gsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBRTFHLFNBQVMsR0FBVyxDQUFDLENBQUM7SUFDdEIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBRWxDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVNLHdDQUF3QyxHQUE0QyxJQUFJLENBQUM7SUFDekYsK0JBQStCLEdBQW1DLElBQUksQ0FBQztJQUV2RCxRQUFRLENBQWE7SUFFNUMsWUFBWSxHQUF3QjtRQUNsQyxRQUFRLEVBQUUsSUFBSTtRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsU0FBUyxFQUFFLEdBQUc7UUFDZCxTQUFTLEVBQUUsTUFBTTtRQUNqQixLQUFLLEVBQUUsTUFBTTtRQUNiLFFBQVEsRUFBRSxHQUFHO1FBQ2IsU0FBUyxFQUFFLElBQUk7UUFDZixhQUFhLEVBQUUsSUFBSTtRQUNuQixXQUFXLEVBQUUsSUFBSTtRQUNqQix5QkFBeUIsRUFBRSxFQUFFO1FBQzdCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFFBQVEsRUFBRSxJQUFJO1FBQ2QsZUFBZSxFQUFFLEtBQUs7UUFDdEIsb0JBQW9CLEVBQUU7WUFDcEIsQ0FBQyxVQUFVLENBQUM7U0FDYjtLQUNGLENBQUM7SUFFRixZQUNVLGtCQUFzQyxFQUN0QyxxQkFBNEMsRUFDNUMsUUFBcUIsRUFDckIsaUJBQW9DO1FBSHBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFBSSxDQUFDO0lBRW5ELFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVk7UUFDMUIscUJBQXFCO1FBQ3JCLHlCQUF5QjtRQUN6Qiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBdUMsQ0FBQztRQUVuRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDckQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLHdDQUF3QyxJQUFJLElBQUksRUFBRTtZQUV6RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDO1lBRTFFLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBRTNCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTt3QkFFaEIsSUFBSSxNQUFNLEdBQStDLElBQUksQ0FBQzt3QkFFOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBRXBDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0NBQ3RHLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtvQ0FDbEIsTUFBTSxHQUFHLElBQUksbUNBQW1DLEVBQUUsQ0FBQztvQ0FDbkQsTUFBTSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztvQ0FDbEUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29DQUM5QixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksS0FBSyxFQUErQixDQUFDO29DQUV2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQ0FDN0IsVUFBVSxFQUFFLENBQUM7aUNBQ2Q7Z0NBRUQsSUFBSSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRTtvQ0FDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQzNCOzZCQUNGOzRCQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt5QkFDckI7cUJBQ0Y7b0JBRUQsbUNBQW1DO29CQUVuQyx3QkFBd0I7b0JBRXhCLGtFQUFrRTtvQkFFbEUsOENBQThDO29CQUM5Qyx1Q0FBdUM7b0JBQ3ZDLG9FQUFvRTtvQkFFcEUsNEJBQTRCO29CQUM1QixrREFBa0Q7b0JBQ2xELG1IQUFtSDtvQkFDbkgsaUNBQWlDO29CQUNqQyxpRUFBaUU7b0JBQ2pFLGdGQUFnRjtvQkFDaEYsNENBQTRDO29CQUM1QyxxRUFBcUU7b0JBQ3JFLDJFQUEyRTtvQkFFM0UsMkNBQTJDO29CQUMzQyxhQUFhO29CQUViLGlFQUFpRTtvQkFDakUsMkVBQTJFO29CQUMzRSw2RUFBNkU7b0JBQzdFLCtDQUErQztvQkFDL0MsMkJBQTJCO29CQUMzQixhQUFhO29CQUViLCtDQUErQztvQkFDL0MsbURBQW1EO29CQUNuRCwyQkFBMkI7b0JBQzNCLGFBQWE7b0JBQ2IsV0FBVztvQkFFWCw4QkFBOEI7b0JBQzlCLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxLQUFLO29CQUNMLEdBQUc7aUJBQ0o7YUFDRjtTQUNGO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFO29CQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztvQkFFdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUUvRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDekI7YUFDRjtpQkFDSTtnQkFDSCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUU1RixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO3dCQUUvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztxQkFDekI7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QyxFQUFFLFFBQWlDO1FBQ3pGLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFO29CQUN4QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbkI7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsaUJBQW9DO1FBRTFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUErQixFQUFFLEVBQUU7WUFDN0ksSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztZQUV0QyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO2dCQUNwRCxJQUFJLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUVyQixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqQjtnQkFDSCxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2Q7WUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXZILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pHLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQW9DO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXJCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUV4QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUU3RCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBR3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBMkIsRUFBRSxFQUFFO1lBQ3RGLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkIsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDakI7Z0JBQ0gsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksT0FBTyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUd0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFFM0QsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDakI7Z0JBQ0gsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksSUFBSSxDQUFDLHdDQUF3QyxJQUFJLElBQUksRUFBRTtZQUN6RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDO1lBRTFFLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLEVBQUU7WUFDekMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztZQUV4RCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO3dCQUN2QixLQUFLLEVBQUUsQ0FBQztpQkFDWDthQUNGO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBMVVVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLGtLQ2RyQywyblFBb0tBOztTRHRKYSx3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7Nk1BdUJkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExlZ2FjeVBhZ2VFdmVudCBhcyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlVmlld01vZGVsLCBDcmVhdGVFeHBvcnRSZXF1ZXN0LCBDcmVhdGVFeHBvcnRSZXNwb25zZSwgTG9naW5SZXNwb25zZU1vZGVsLCBSZWFkRXhwb3J0UmVxdWVzdCwgVHJhbnNsYXRlQXBpQ2xpZW50LCBUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iZWhlZXItdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBPcGVuQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDtcclxuICBwdWJsaWMgQWN0aXZlU3ViczogQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+ID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBhbW91bnRMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudFBlclBhZ2U6IG51bWJlciA9IDEwO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlZGl2JykgdGFibGVkaXY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogZmFsc2UsXHJcbiAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgIG1pbkhlaWdodDogJzAnLFxyXG4gICAgbWF4SGVpZ2h0OiAnYXV0bycsXHJcbiAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgbWluV2lkdGg6ICcwJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICBzYW5pdGl6ZTogdHJ1ZSxcclxuICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICB0b29sYmFySGlkZGVuQnV0dG9uczogW1xyXG4gICAgICBbJ2ZvbnROYW1lJ11cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgVHJhbnNsYXRlQXBpQ2xpZW50OiBUcmFuc2xhdGVBcGlDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLlJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGl0ZW1zYWRkZWQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5BY3RpdmVTdWJzLnB1c2goc3ViY2F0KTtcclxuICAgICAgICAgICAgICAgICAgaXRlbXNhZGRlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQ/LmtleXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cy5wdXNoKGtleXNbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5hbW91bnRMZW5ndGgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vdmFyIGZpbHRlcnMgPSBzdWJjYXRzW2ldLmZpbHRlcnM7XHJcblxyXG4gICAgICAgICAgLy9pZiAoZmlsdGVycyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgLy8gIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gIGZvciAodmFyIGogPSAwOyBqIDwgZmlsdGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgLy8gICAgdmFyIG9wdGlvbnMgPSBmaWx0ZXJzW2pdLm9wdGlvbnM7XHJcbiAgICAgICAgICAvLyAgICB2YXIgZmlsdGVybW9kZWw6IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vICAgIGlmIChvcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBvcHRpb25zLmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCAmJiBpdGVtc2FkZGVkIDwgdGhpcy5hbW91bnRQZXJQYWdlKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoc3ViY2F0ID09IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0ID0gbmV3IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsKCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5ID0gc3ViY2F0c1tpXS50cmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuaHRtbCA9IHN1YmNhdHNbaV0uaHRtbDtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LmtleXMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzS2V5Vmlld01vZGVsPigpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQuZmlsdGVycyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNGaWx0ZXJWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChzdWJjYXQ/LmZpbHRlcnMgIT0gbnVsbCAmJiBmaWx0ZXJtb2RlbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGZpbHRlcm1vZGVsID0gbmV3IEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbChmaWx0ZXJzW2pdKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5maWx0ZXJzLnB1c2goZmlsdGVybW9kZWwpO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgaWYgKGZpbHRlcm1vZGVsPy5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwub3B0aW9ucy5wdXNoKG9wdGlvbnNbb10pO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgLy8gICAgICB9XHJcbiAgICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVkaXY/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLklzSFRNTCgpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFtb3VudFBlclBhZ2UgPSAxO1xyXG5cclxuICAgICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnLmhlaWdodCA9IE1hdGguZmxvb3IodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC0gNDAwKSArIFwicHhcIjtcclxuXHJcbiAgICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGl0ZW1jb3VudCA9IE1hdGguZmxvb3IoKHBhcnNlSW50KHRoaXMudGFibGVkaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gMjUwKSAvIDU3KTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1jb3VudCA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFtb3VudFBlclBhZ2UgIT0gaXRlbWNvdW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IGl0ZW1jb3VudDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEVudHJ5KGVudHJpZXM6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsW10sIGxhbmd1YWdlOiBCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoZW50cmllcy5lbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGVudHJpZXNbaV0ubGFuZ3VhZ2VJZCA9PSBsYW5ndWFnZS5pZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGVudHJpZXNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKS5zdWJzY3JpYmUoKG1vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzWzBdO1xyXG4gICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF07XHJcbiAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnNhdmVCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwodGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVDaGFuZ2VkKGVudHJ5OiBCZWhlZXJMYW5ndWFnZXNFbnRyeVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgZW50cnkuY2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5TaG93U25hY2tCYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U25hY2tCYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuT3BlbkNoYW5nZXMpIHtcclxuICAgICAgdGhpcy5PcGVuQ2hhbmdlcyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgc25hY2sgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJVbnNhdmVkIGNoYW5nZXMuLi5cIiwgXCJTYXZlXCIpO1xyXG5cclxuICAgICAgc25hY2sub25BY3Rpb24oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuU2F2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBFeHBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmNyZWF0ZUV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBDcmVhdGVFeHBvcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydChtb2RlbC51cmwpO1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSW1wb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVhZEV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQucmVhZEV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSXNIVE1MKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBzdWJjYXRzID0gdGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnN1YkNhdGVnb3JpZXM7XHJcblxyXG4gICAgICBpZiAoc3ViY2F0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3ViY2F0c1tpXS5odG1sKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TGFuZ3VhZ2VDb3VudCgpOiBudW1iZXIge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBsYW5ndWFnZXMgPSB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7XHJcblxyXG4gICAgICBpZiAobGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGxhbmd1YWdlc1tpXS5zZWxlY3RlZClcclxuICAgICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtYmVoZWVyLW5hdj48L2FwcC1iZWhlZXItbmF2PlxyXG5cclxuPGFwcC1mYWItbG9hZGVyICpuZ0lmPVwiTG9hZGluZ1wiPjwvYXBwLWZhYi1sb2FkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiIUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGlzcGxheWZsZXhcIiAjdGFibGVkaXYgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXJcIj5cclxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkdyb3VwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy5wYWdlSW5kZXggPSAwOyBSZWZyZXNoUGFnaW5hdG9yKCk7IFJlc2l6ZSgpO1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXQgb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvbkNhdGVnb3J5W2NhdC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFuZ3VhZ2U8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIiA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiIFt2YWx1ZV09XCJsYW5ndWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8YnIgLz48YnIgLz5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmUoKVwiIGNsYXNzPVwic2F2ZS1idXR0b25cIiBbZGlzYWJsZWRdPVwiIU9wZW5DaGFuZ2VzXCI+XHJcbiAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPC9tYXQtY2FyZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWFpbi1iYXIgZmxleGF1dG9cIj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1heC1oZWlnaHRcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxoMT57eyBUcmFuc2xhdGlvbkNhdGVnb3J5W1NlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwudHJhbnNsYXRpb25DYXRlZ29yeV0gfX08L2gxPlxyXG5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWwubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIiBjbGFzcz1cImNhdC1yb3dcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJjYXQgb2YgQWN0aXZlU3Vic1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlID09IFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFuZ3VsYXItZWRpdG9yIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViY2F0IG9mIEFjdGl2ZVN1YnNcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImtleS50ZXh0ICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7eyBrZXkudGV4dCB9fSlcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIiAqbmdJZj1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChrZXl1cCk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLTxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBzdWJjYXQuZmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLmZpbHRlci50ZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiR2V0RW50cnkoZmlsdGVyLmZpbHRlci5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShmaWx0ZXIuZmlsdGVyLmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT57eyBvcHRpb24udGV4dCB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGlvblN1YkNhdGVnb3J5W3N1YmNhdC50cmFuc2xhdGlvblN1YkNhdGVnb3J5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShvcHRpb24uZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKGtleXVwKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkob3B0aW9uLmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiYW1vdW50TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJhbW91bnRQZXJQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHBhZ2VcIj5cclxuICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUQsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxKLE9BQU8sRUFBZ0csbUNBQW1DLEVBQXFELG1CQUFtQixFQUF3QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBcUQsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4WixNQU1hLHdCQUF3QjtJQTZDekI7SUFDQTtJQUNBO0lBQ0E7SUEvQ0gsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHdCQUF3QixDQUEyQjtJQUNuRCxVQUFVLEdBQStDLElBQUksS0FBSyxFQUF1QyxDQUFDO0lBRTFHLFNBQVMsR0FBVyxDQUFDLENBQUM7SUFDdEIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixhQUFhLEdBQVcsRUFBRSxDQUFDO0lBRWxDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVNLHdDQUF3QyxHQUE0QyxJQUFJ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ZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExlZ2FjeVBhZ2VFdmVudCBhcyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckNvbmZpZyB9IGZyb20gJ0Brb2xrb3YvYW5ndWxhci1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlVmlld01vZGVsLCBDcmVhdGVFeHBvcnRSZXF1ZXN0LCBDcmVhdGVFeHBvcnRSZXNwb25zZSwgTG9naW5SZXNwb25zZU1vZGVsLCBSZWFkRXhwb3J0UmVxdWVzdCwgVHJhbnNsYXRlQXBpQ2xpZW50LCBUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iZWhlZXItdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBPcGVuQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDtcclxuICBwdWJsaWMgQWN0aXZlU3ViczogQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+ID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBhbW91bnRMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudFBlclBhZ2U6IG51bWJlciA9IDEwO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIFNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VWaWV3TW9kZWw6IEJlaGVlckxhbmd1YWdlVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlZGl2JykgdGFibGVkaXY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogZmFsc2UsXHJcbiAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgIG1pbkhlaWdodDogJzAnLFxyXG4gICAgbWF4SGVpZ2h0OiAnYXV0bycsXHJcbiAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgbWluV2lkdGg6ICcwJyxcclxuICAgIHRyYW5zbGF0ZTogJ25vJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgZGVmYXVsdEZvbnROYW1lOiAnJyxcclxuICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICBzYW5pdGl6ZTogdHJ1ZSxcclxuICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICB0b29sYmFySGlkZGVuQnV0dG9uczogW1xyXG4gICAgICBbJ2ZvbnROYW1lJ11cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgVHJhbnNsYXRlQXBpQ2xpZW50OiBUcmFuc2xhdGVBcGlDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5SZXNpemUoKTtcclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZFRyYW5zbGF0aW9ucyh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVBhZ2VFdmVudChlOiBQYWdlRXZlbnQpIHtcclxuICAgIC8vdGhpcy5wYWdlRXZlbnQgPSBlO1xyXG4gICAgLy90aGlzLmxlbmd0aCA9IGUubGVuZ3RoO1xyXG4gICAgLy90aGlzLnBhZ2VTaXplID0gZS5wYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZS5wYWdlSW5kZXg7XHJcblxyXG4gICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVmcmVzaFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuYW1vdW50TGVuZ3RoID0gMDtcclxuICAgIHRoaXMuQWN0aXZlU3VicyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4oKTtcclxuXHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG4gICAgdmFyIGVuZEluZGV4ID0gKHRoaXMucGFnZUluZGV4ICsgMSkgKiB0aGlzLmFtb3VudFBlclBhZ2U7XHJcbiAgICB2YXIgaXRlbXNhZGRlZCA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcblxyXG4gICAgICB2YXIgc3ViY2F0cyA9IHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC5zdWJDYXRlZ29yaWVzO1xyXG5cclxuICAgICAgaWYgKHN1YmNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ViY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdmFyIGtleXMgPSBzdWJjYXRzW2ldLmtleXM7XHJcblxyXG4gICAgICAgICAgaWYgKGtleXMgIT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdmFyIHN1YmNhdDogQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5cy5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5hbW91bnRMZW5ndGggPj0gc3RhcnRJbmRleCAmJiB0aGlzLmFtb3VudExlbmd0aCA8IGVuZEluZGV4ICYmIGl0ZW1zYWRkZWQgPCB0aGlzLmFtb3VudFBlclBhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwoKTtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgPSBzdWJjYXRzW2ldLnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQua2V5cyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkFjdGl2ZVN1YnMucHVzaChzdWJjYXQpO1xyXG4gICAgICAgICAgICAgICAgICBpdGVtc2FkZGVkKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN1YmNhdD8ua2V5cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5rZXlzLnB1c2goa2V5c1tqXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy92YXIgZmlsdGVycyA9IHN1YmNhdHNbaV0uZmlsdGVycztcclxuXHJcbiAgICAgICAgICAvL2lmIChmaWx0ZXJzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAvLyAgdmFyIHN1YmNhdDogQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWx0ZXJzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAvLyAgICB2YXIgb3B0aW9ucyA9IGZpbHRlcnNbal0ub3B0aW9ucztcclxuICAgICAgICAgIC8vICAgIHZhciBmaWx0ZXJtb2RlbDogQmVoZWVyTGFuZ3VhZ2VzRmlsdGVyVmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICBmb3IgKHZhciBvID0gMDsgbyA8IG9wdGlvbnMubGVuZ3RoOyBvKyspIHtcclxuICAgICAgICAgIC8vICAgICAgICBpZiAodGhpcy5hbW91bnRMZW5ndGggPj0gc3RhcnRJbmRleCAmJiB0aGlzLmFtb3VudExlbmd0aCA8IGVuZEluZGV4ICYmIGl0ZW1zYWRkZWQgPCB0aGlzLmFtb3VudFBlclBhZ2UpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgIGlmIChzdWJjYXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWwoKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgPSBzdWJjYXRzW2ldLnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5odG1sID0gc3ViY2F0c1tpXS5odG1sO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBzdWJjYXQua2V5cyA9IG5ldyBBcnJheTxCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWw+KCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHN1YmNhdC5maWx0ZXJzID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc0ZpbHRlclZpZXdNb2RlbD4oKTtcclxuXHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIHRoaXMuQWN0aXZlU3Vicy5wdXNoKHN1YmNhdCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgICAgaWYgKHN1YmNhdD8uZmlsdGVycyAhPSBudWxsICYmIGZpbHRlcm1vZGVsID09IG51bGwpIHtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgZmlsdGVybW9kZWwgPSBuZXcgQmVoZWVyTGFuZ3VhZ2VzRmlsdGVyVmlld01vZGVsKGZpbHRlcnNbal0pO1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBmaWx0ZXJtb2RlbC5vcHRpb25zID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbD4oKTtcclxuICAgICAgICAgIC8vICAgICAgICAgICAgc3ViY2F0LmZpbHRlcnMucHVzaChmaWx0ZXJtb2RlbCk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGl0ZW1zYWRkZWQrKztcclxuICAgICAgICAgIC8vICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAgICAgICAgICBpZiAoZmlsdGVybW9kZWw/Lm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gICAgICAgICAgICBmaWx0ZXJtb2RlbC5vcHRpb25zLnB1c2gob3B0aW9uc1tvXSk7XHJcbiAgICAgICAgICAvLyAgICAgICAgICAgIGl0ZW1zYWRkZWQrKztcclxuICAgICAgICAgIC8vICAgICAgICAgIH1cclxuICAgICAgICAgIC8vICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gICAgICAgIHRoaXMuYW1vdW50TGVuZ3RoKys7XHJcbiAgICAgICAgICAvLyAgICAgIH1cclxuICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgICAvL31cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZWRpdj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuSXNIVE1MKCkpIHtcclxuICAgICAgICBpZiAodGhpcy5hbW91bnRQZXJQYWdlICE9IDEpIHtcclxuICAgICAgICAgIHRoaXMuYW1vdW50UGVyUGFnZSA9IDE7XHJcblxyXG4gICAgICAgICAgdGhpcy5lZGl0b3JDb25maWcuaGVpZ2h0ID0gTWF0aC5mbG9vcih0aGlzLnRhYmxlZGl2Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgLSA0MDApICsgXCJweFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgaXRlbWNvdW50ID0gTWF0aC5mbG9vcigocGFyc2VJbnQodGhpcy50YWJsZWRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkgLSAyNTApIC8gNTcpO1xyXG5cclxuICAgICAgICBpZiAoaXRlbWNvdW50ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYW1vdW50UGVyUGFnZSAhPSBpdGVtY291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5hbW91bnRQZXJQYWdlID0gaXRlbWNvdW50O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0RW50cnkoZW50cmllczogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWxbXSwgbGFuZ3VhZ2U6IEJlaGVlckxhbmd1YWdlVmlld01vZGVsKTogQmVoZWVyTGFuZ3VhZ2VzRW50cnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIGlmIChlbnRyaWVzLmVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZW50cmllc1tpXS5sYW5ndWFnZUlkID09IGxhbmd1YWdlLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gZW50cmllc1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkVHJhbnNsYXRpb25zKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuZ2V0QmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpLnN1YnNjcmliZSgobW9kZWw6IEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbCA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmNhdGVnb3JpZXNbMF07XHJcbiAgICAgICAgdGhpcy5SZWZyZXNoUGFnaW5hdG9yKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbCA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXTtcclxuICAgICAgICB0aGlzLlJlZnJlc2hQYWdpbmF0b3IoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuc2F2ZUJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLkJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuT3BlbkNoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFVwZGF0ZUNoYW5nZWQoZW50cnk6IEJlaGVlckxhbmd1YWdlc0VudHJ5Vmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBlbnRyeS5jaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLlNob3dTbmFja0JhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dTbmFja0JhcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5PcGVuQ2hhbmdlcykge1xyXG4gICAgICB0aGlzLk9wZW5DaGFuZ2VzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciBzbmFjayA9IHRoaXMuc25hY2tCYXIub3BlbihcIlVuc2F2ZWQgY2hhbmdlcy4uLlwiLCBcIlNhdmVcIik7XHJcblxyXG4gICAgICBzbmFjay5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5TYXZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IENyZWF0ZUV4cG9ydFJlcXVlc3QoKTtcclxuXHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuY3JlYXRlRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IENyZWF0ZUV4cG9ydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KG1vZGVsLnVybCk7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJbXBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZWFkRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5yZWFkRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJc0hUTUwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChzdWJjYXRzW2ldLmh0bWwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRMYW5ndWFnZUNvdW50KCk6IG51bWJlciB7XHJcbiAgICB2YXIgY291bnQgPSAwO1xyXG4gICAgaWYgKHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdmFyIGxhbmd1YWdlcyA9IHRoaXMuQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcztcclxuXHJcbiAgICAgIGlmIChsYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFuZ3VhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobGFuZ3VhZ2VzW2ldLnNlbGVjdGVkKVxyXG4gICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1iZWhlZXItbmF2PjwvYXBwLWJlaGVlci1uYXY+XHJcblxyXG48YXBwLWZhYi1sb2FkZXIgKm5nSWY9XCJMb2FkaW5nXCI+PC9hcHAtZmFiLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhTG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXNwbGF5ZmxleFwiICN0YWJsZWRpdiAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+R3JvdXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLnBhZ2VJbmRleCA9IDA7IFJlZnJlc2hQYWdpbmF0b3IoKTsgUmVzaXplKCk7XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNhdCBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwuY2F0ZWdvcmllc1wiIFt2YWx1ZV09XCJjYXRcIj5cclxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbY2F0LnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFJc0hUTUwoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYW5ndWFnZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbFwiID5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCIgW3ZhbHVlXT1cImxhbmd1YWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCIgY2xhc3M9XCJzYXZlLWJ1dHRvblwiIFtkaXNhYmxlZF09XCIhT3BlbkNoYW5nZXNcIj5cclxuICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8L21hdC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhciBmbGV4YXV0b1wiPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LWhlaWdodFwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPGgxPnt7IFRyYW5zbGF0aW9uQ2F0ZWdvcnlbU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbC50cmFuc2xhdGlvbkNhdGVnb3J5XSB9fTwvaDE+XHJcblxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwiU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5mbGFnXCI+PC9mYWItZmxhZz4ge3sgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNIVE1MKClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmNhdCBvZiBBY3RpdmVTdWJzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBzdWJjYXQua2V5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2UgPT0gU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZVZpZXdNb2RlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YW5ndWxhci1lZGl0b3IgW2NvbmZpZ109XCJlZGl0b3JDb25maWdcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGtleS5lbnRyaWVzLCBsYW5ndWFnZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FuZ3VsYXItZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUlzSFRNTCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJjYXQgb2YgQWN0aXZlU3Vic1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGtleSBvZiBzdWJjYXQua2V5c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwia2V5LnRleHQgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGtleS50ZXh0IH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsYW5ndWFnZS5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiICpuZ0lmPVwiR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShrZXkuZW50cmllcywgbGFuZ3VhZ2UpLnZhbHVlXCIgKGtleXVwKT1cIlVwZGF0ZUNoYW5nZWQoR2V0RW50cnkoa2V5LmVudHJpZXMsIGxhbmd1YWdlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIHN1YmNhdC5maWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIuZmlsdGVyLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFuZ3VhZ2Uuc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25TdWJDYXRlZ29yeVtzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJHZXRFbnRyeShmaWx0ZXIuZmlsdGVyLmVudHJpZXMsIGxhbmd1YWdlKS52YWx1ZVwiIChrZXl1cCk9XCJVcGRhdGVDaGFuZ2VkKEdldEVudHJ5KGZpbHRlci5maWx0ZXIuZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7IG9wdGlvbi50ZXh0IH19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhbmd1YWdlLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIkdldEVudHJ5KG9wdGlvbi5lbnRyaWVzLCBsYW5ndWFnZSkudmFsdWVcIiAoa2V5dXApPVwiVXBkYXRlQ2hhbmdlZChHZXRFbnRyeShvcHRpb24uZW50cmllcywgbGFuZ3VhZ2UpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwiaGFuZGxlUGFnZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJhbW91bnRMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImFtb3VudFBlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -154,6 +154,9 @@ class FabActionmenuComponent {
|
|
|
154
154
|
window.open(url, "_blank");
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
DownloadCustom(customdownload) {
|
|
158
|
+
this.FabrikantenService.DownloadCustom(customdownload);
|
|
159
|
+
}
|
|
157
160
|
Download(downloaditem, custombcbeboid) {
|
|
158
161
|
this.FabrikantenService.Download(downloaditem, custombcbeboid);
|
|
159
162
|
}
|
|
@@ -168,13 +171,13 @@ class FabActionmenuComponent {
|
|
|
168
171
|
}
|
|
169
172
|
}
|
|
170
173
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabActionmenuComponent, deps: [{ token: i1.MobileService }, { token: i2.FabrikantenService }, { token: i3.TranslateService }, { token: i4.BestekService }, { token: i5.TextureService }, { token: i6.SVGService }, { token: i7.MatLegacyDialog }, { token: i8.WebGLService }, { token: i9.ToebehorenService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
171
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabActionmenuComponent, selector: "app-fab-actionmenu", inputs: { display: "display" }, ngImport: i0, template: "<ng-container *ngIf=\"FabrikantenService.FabrikantenSettingsViewModel != null\">\r\n <div class=\"column\">\r\n <ng-container *ngIf=\"Show2DButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Snede) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\r\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SnedeItem, null, snede) }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Schaal) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\r\n <mat-option [value]=\"'0'\">1:1</mat-option>\r\n <mat-option [value]=\"'1'\">1:2</mat-option>\r\n <mat-option [value]=\"'2'\">1:5</mat-option>\r\n <mat-option [value]=\"'3'\">1:10</mat-option>\r\n <mat-option [value]=\"'4'\">1:20</mat-option>\r\n <mat-option [value]=\"'5'\">1:50</mat-option>\r\n <mat-option [value]=\"'6'\">1:100</mat-option>\r\n <mat-option [value]=\"'7'\">1:200</mat-option>\r\n <mat-option [value]=\"'8'\">1:500</mat-option>\r\n <mat-option [value]=\"'9'\">1:1000</mat-option>\r\n <mat-option [value]=\"'10'\">1:2000</mat-option>\r\n <mat-option [value]=\"'11'\">1:5000</mat-option>\r\n <mat-option [value]=\"'12'\">1:10000</mat-option>\r\n <mat-option [value]=\"'13'\">1:20000</mat-option>\r\n <mat-option [value]=\"'14'\">1:50000</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowBestekButtons()\">\r\n <ng-container *ngIf=\"ShowBestekSelect()\">\r\n <mat-button-toggle-group [value]=\"BestekService.TypeBestek\" (change)=\"BestekService.TypeBestek = $event.source.value\" appearance=\"legacy\">\r\n <mat-button-toggle *ngIf=\"ShowSTABU()\" value=\"STABU\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.STABU) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowOSF()\" value=\"OSF\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.OSF) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowVrij()\" value=\"Vrij\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SpecificationText) }}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <div>\r\n \r\n </div>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button copy-button\" (click)=\"CopyToClipBoard()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Clipboard) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button copy-suf-button\" (click)=\"CopyToClipBoardSUF()\" *ngIf=\"BestekService.TypeBestek == 'STABU'\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ClipboardSUF) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button download-bestek-button\" (click)=\"DownloadBestek()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Download) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowToebehorenButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">Toebehoren</mat-label>\r\n <mat-select [(ngModel)]=\"FabrikantenService.SelectedToebehoren\" (selectionChange)=\"ToebehorenService.OpenToebehoren(this.ChangeDetectorRef)\">\r\n <ng-container *ngFor=\"let item of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren\">\r\n <mat-option *ngIf=\"!item.bcbProduct\" [value]=\"item\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Toebehoren, TranslationSubCategory.Name, item.id) }}\r\n </mat-option>\r\n <mat-option *ngIf=\"item.bcbProduct\" [value]=\"item\">\r\n {{ item.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let downloadcategory of FabrikantenService.FabrikantenSettingsViewModel.downloadCategories\">\r\n <ng-container *ngIf=\"ShowDownloadCategory(downloadcategory.name)\">\r\n <ng-container *ngFor=\"let downloaditem of downloadcategory.items\">\r\n <ng-container *ngIf=\"downloadcategory.name == 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, FabrikantenService.GetSelectedToebehoren()?.bcbeboId)\" *ngIf=\"(!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()) && (FabrikantenService.GetSelectedToebehoren() != null)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"downloadcategory.name != 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, undefined)\" *ngIf=\"!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let pdftemplate of FabrikantenService.FabrikantenViewModel.selectedProduct.pdfTemplates\">\r\n <button mat-stroked-button class=\"toolbar-button template-button\" (click)=\"DownloadPDFTemplate(pdftemplate)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Specification) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowTextureButtons()\">\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.patroonURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Texture) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.bumpURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Bumpmap) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button bcb-button\" (click)=\"OpenBCBLink()\" *ngIf=\"ShowBCBButton()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.BCB) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n</div>\r\n", styles: ["app-fab-actionmenu .mat-stroked-button{white-space:unset!important}app-fab-actionmenu .icon{margin-right:3px}app-fab-actionmenu .toolbar-button{margin-top:3px;width:100%}app-fab-actionmenu .row{display:flex;line-height:37px}app-fab-actionmenu .row-icon{align-items:center;display:flex}app-fab-actionmenu .column{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i14.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i15.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i15.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i16.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i17.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i18.FabInputCodeComponent, selector: "app-fab-input-code" }], encapsulation: i0.ViewEncapsulation.None });
|
|
174
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FabActionmenuComponent, selector: "app-fab-actionmenu", inputs: { display: "display" }, ngImport: i0, template: "<ng-container *ngIf=\"FabrikantenService.FabrikantenSettingsViewModel != null\">\r\n <div class=\"column\">\r\n <ng-container *ngIf=\"Show2DButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Snede) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\r\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SnedeItem, null, snede) }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Schaal) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\r\n <mat-option [value]=\"'0'\">1:1</mat-option>\r\n <mat-option [value]=\"'1'\">1:2</mat-option>\r\n <mat-option [value]=\"'2'\">1:5</mat-option>\r\n <mat-option [value]=\"'3'\">1:10</mat-option>\r\n <mat-option [value]=\"'4'\">1:20</mat-option>\r\n <mat-option [value]=\"'5'\">1:50</mat-option>\r\n <mat-option [value]=\"'6'\">1:100</mat-option>\r\n <mat-option [value]=\"'7'\">1:200</mat-option>\r\n <mat-option [value]=\"'8'\">1:500</mat-option>\r\n <mat-option [value]=\"'9'\">1:1000</mat-option>\r\n <mat-option [value]=\"'10'\">1:2000</mat-option>\r\n <mat-option [value]=\"'11'\">1:5000</mat-option>\r\n <mat-option [value]=\"'12'\">1:10000</mat-option>\r\n <mat-option [value]=\"'13'\">1:20000</mat-option>\r\n <mat-option [value]=\"'14'\">1:50000</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowBestekButtons()\">\r\n <ng-container *ngIf=\"ShowBestekSelect()\">\r\n <mat-button-toggle-group [value]=\"BestekService.TypeBestek\" (change)=\"BestekService.TypeBestek = $event.source.value\" appearance=\"legacy\">\r\n <mat-button-toggle *ngIf=\"ShowSTABU()\" value=\"STABU\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.STABU) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowOSF()\" value=\"OSF\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.OSF) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowVrij()\" value=\"Vrij\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SpecificationText) }}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <div>\r\n \r\n </div>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button copy-button\" (click)=\"CopyToClipBoard()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Clipboard) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button copy-suf-button\" (click)=\"CopyToClipBoardSUF()\" *ngIf=\"BestekService.TypeBestek == 'STABU'\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ClipboardSUF) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button download-bestek-button\" (click)=\"DownloadBestek()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Download) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowToebehorenButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">Toebehoren</mat-label>\r\n <mat-select [(ngModel)]=\"FabrikantenService.SelectedToebehoren\" (selectionChange)=\"ToebehorenService.OpenToebehoren(this.ChangeDetectorRef)\">\r\n <ng-container *ngFor=\"let item of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren\">\r\n <mat-option *ngIf=\"!item.bcbProduct\" [value]=\"item\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Toebehoren, TranslationSubCategory.Name, item.id) }}\r\n </mat-option>\r\n <mat-option *ngIf=\"item.bcbProduct\" [value]=\"item\">\r\n {{ item.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let downloadcategory of FabrikantenService.FabrikantenSettingsViewModel.downloadCategories\">\r\n <ng-container *ngIf=\"ShowDownloadCategory(downloadcategory.name)\">\r\n <ng-container *ngFor=\"let downloaditem of downloadcategory.items\">\r\n <ng-container *ngIf=\"downloadcategory.name == 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, FabrikantenService.GetSelectedToebehoren()?.bcbeboId)\" *ngIf=\"(!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()) && (FabrikantenService.GetSelectedToebehoren() != null)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"downloadcategory.name != 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, undefined)\" *ngIf=\"!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let customDownload of FabrikantenService.FabrikantenViewModel.selectedProduct.customDownloads\">\r\n <button mat-stroked-button class=\"toolbar-button custom-button\" (click)=\"DownloadCustom(customDownload)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"customDownload.loading\">...</span>\r\n <span *ngIf=\"!customDownload.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.DownloadRevit) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let pdftemplate of FabrikantenService.FabrikantenViewModel.selectedProduct.pdfTemplates\">\r\n <button mat-stroked-button class=\"toolbar-button template-button\" (click)=\"DownloadPDFTemplate(pdftemplate)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Specification) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowTextureButtons()\">\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.patroonURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Texture) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.bumpURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Bumpmap) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button bcb-button\" (click)=\"OpenBCBLink()\" *ngIf=\"ShowBCBButton()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.BCB) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n</div>\r\n", styles: ["app-fab-actionmenu .mat-stroked-button{white-space:unset!important}app-fab-actionmenu .icon{margin-right:3px}app-fab-actionmenu .toolbar-button{margin-top:3px;width:100%}app-fab-actionmenu .row{display:flex;line-height:37px}app-fab-actionmenu .row-icon{align-items:center;display:flex}app-fab-actionmenu .column{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i14.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i15.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i15.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i16.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i17.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i18.FabInputCodeComponent, selector: "app-fab-input-code" }], encapsulation: i0.ViewEncapsulation.None });
|
|
172
175
|
}
|
|
173
176
|
export { FabActionmenuComponent };
|
|
174
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FabActionmenuComponent, decorators: [{
|
|
175
178
|
type: Component,
|
|
176
|
-
args: [{ selector: 'app-fab-actionmenu', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"FabrikantenService.FabrikantenSettingsViewModel != null\">\r\n <div class=\"column\">\r\n <ng-container *ngIf=\"Show2DButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Snede) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\r\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SnedeItem, null, snede) }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Schaal) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\r\n <mat-option [value]=\"'0'\">1:1</mat-option>\r\n <mat-option [value]=\"'1'\">1:2</mat-option>\r\n <mat-option [value]=\"'2'\">1:5</mat-option>\r\n <mat-option [value]=\"'3'\">1:10</mat-option>\r\n <mat-option [value]=\"'4'\">1:20</mat-option>\r\n <mat-option [value]=\"'5'\">1:50</mat-option>\r\n <mat-option [value]=\"'6'\">1:100</mat-option>\r\n <mat-option [value]=\"'7'\">1:200</mat-option>\r\n <mat-option [value]=\"'8'\">1:500</mat-option>\r\n <mat-option [value]=\"'9'\">1:1000</mat-option>\r\n <mat-option [value]=\"'10'\">1:2000</mat-option>\r\n <mat-option [value]=\"'11'\">1:5000</mat-option>\r\n <mat-option [value]=\"'12'\">1:10000</mat-option>\r\n <mat-option [value]=\"'13'\">1:20000</mat-option>\r\n <mat-option [value]=\"'14'\">1:50000</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowBestekButtons()\">\r\n <ng-container *ngIf=\"ShowBestekSelect()\">\r\n <mat-button-toggle-group [value]=\"BestekService.TypeBestek\" (change)=\"BestekService.TypeBestek = $event.source.value\" appearance=\"legacy\">\r\n <mat-button-toggle *ngIf=\"ShowSTABU()\" value=\"STABU\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.STABU) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowOSF()\" value=\"OSF\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.OSF) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowVrij()\" value=\"Vrij\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SpecificationText) }}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <div>\r\n \r\n </div>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button copy-button\" (click)=\"CopyToClipBoard()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Clipboard) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button copy-suf-button\" (click)=\"CopyToClipBoardSUF()\" *ngIf=\"BestekService.TypeBestek == 'STABU'\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ClipboardSUF) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button download-bestek-button\" (click)=\"DownloadBestek()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Download) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowToebehorenButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">Toebehoren</mat-label>\r\n <mat-select [(ngModel)]=\"FabrikantenService.SelectedToebehoren\" (selectionChange)=\"ToebehorenService.OpenToebehoren(this.ChangeDetectorRef)\">\r\n <ng-container *ngFor=\"let item of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren\">\r\n <mat-option *ngIf=\"!item.bcbProduct\" [value]=\"item\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Toebehoren, TranslationSubCategory.Name, item.id) }}\r\n </mat-option>\r\n <mat-option *ngIf=\"item.bcbProduct\" [value]=\"item\">\r\n {{ item.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let downloadcategory of FabrikantenService.FabrikantenSettingsViewModel.downloadCategories\">\r\n <ng-container *ngIf=\"ShowDownloadCategory(downloadcategory.name)\">\r\n <ng-container *ngFor=\"let downloaditem of downloadcategory.items\">\r\n <ng-container *ngIf=\"downloadcategory.name == 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, FabrikantenService.GetSelectedToebehoren()?.bcbeboId)\" *ngIf=\"(!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()) && (FabrikantenService.GetSelectedToebehoren() != null)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"downloadcategory.name != 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, undefined)\" *ngIf=\"!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let pdftemplate of FabrikantenService.FabrikantenViewModel.selectedProduct.pdfTemplates\">\r\n <button mat-stroked-button class=\"toolbar-button template-button\" (click)=\"DownloadPDFTemplate(pdftemplate)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Specification) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowTextureButtons()\">\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.patroonURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Texture) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.bumpURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Bumpmap) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button bcb-button\" (click)=\"OpenBCBLink()\" *ngIf=\"ShowBCBButton()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.BCB) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n</div>\r\n", styles: ["app-fab-actionmenu .mat-stroked-button{white-space:unset!important}app-fab-actionmenu .icon{margin-right:3px}app-fab-actionmenu .toolbar-button{margin-top:3px;width:100%}app-fab-actionmenu .row{display:flex;line-height:37px}app-fab-actionmenu .row-icon{align-items:center;display:flex}app-fab-actionmenu .column{display:flex;flex-direction:column}\n"] }]
|
|
179
|
+
args: [{ selector: 'app-fab-actionmenu', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"FabrikantenService.FabrikantenSettingsViewModel != null\">\r\n <div class=\"column\">\r\n <ng-container *ngIf=\"Show2DButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Snede) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Snede\" (selectionChange)=\"RefreshSnede()\">\r\n <mat-option *ngFor=\"let snede of SVGService.Snedes\" [value]=\"snede\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SnedeItem, null, snede) }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Schaal) }}</mat-label>\r\n <mat-select [(ngModel)]=\"SVGService.Schaal\" (selectionChange)=\"RefreshSchaal()\">\r\n <mat-option [value]=\"'0'\">1:1</mat-option>\r\n <mat-option [value]=\"'1'\">1:2</mat-option>\r\n <mat-option [value]=\"'2'\">1:5</mat-option>\r\n <mat-option [value]=\"'3'\">1:10</mat-option>\r\n <mat-option [value]=\"'4'\">1:20</mat-option>\r\n <mat-option [value]=\"'5'\">1:50</mat-option>\r\n <mat-option [value]=\"'6'\">1:100</mat-option>\r\n <mat-option [value]=\"'7'\">1:200</mat-option>\r\n <mat-option [value]=\"'8'\">1:500</mat-option>\r\n <mat-option [value]=\"'9'\">1:1000</mat-option>\r\n <mat-option [value]=\"'10'\">1:2000</mat-option>\r\n <mat-option [value]=\"'11'\">1:5000</mat-option>\r\n <mat-option [value]=\"'12'\">1:10000</mat-option>\r\n <mat-option [value]=\"'13'\">1:20000</mat-option>\r\n <mat-option [value]=\"'14'\">1:50000</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowBestekButtons()\">\r\n <ng-container *ngIf=\"ShowBestekSelect()\">\r\n <mat-button-toggle-group [value]=\"BestekService.TypeBestek\" (change)=\"BestekService.TypeBestek = $event.source.value\" appearance=\"legacy\">\r\n <mat-button-toggle *ngIf=\"ShowSTABU()\" value=\"STABU\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.STABU) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowOSF()\" value=\"OSF\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.OSF) }}</mat-button-toggle>\r\n <mat-button-toggle *ngIf=\"ShowVrij()\" value=\"Vrij\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.SpecificationText) }}</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <div>\r\n \r\n </div>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button copy-button\" (click)=\"CopyToClipBoard()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Clipboard) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button copy-suf-button\" (click)=\"CopyToClipBoardSUF()\" *ngIf=\"BestekService.TypeBestek == 'STABU'\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon content_copy\">content_copy</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ClipboardSUF) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button download-bestek-button\" (click)=\"DownloadBestek()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Download) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowToebehorenButtons()\">\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label class=\"select-mat-label\">Toebehoren</mat-label>\r\n <mat-select [(ngModel)]=\"FabrikantenService.SelectedToebehoren\" (selectionChange)=\"ToebehorenService.OpenToebehoren(this.ChangeDetectorRef)\">\r\n <ng-container *ngFor=\"let item of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren\">\r\n <mat-option *ngIf=\"!item.bcbProduct\" [value]=\"item\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Toebehoren, TranslationSubCategory.Name, item.id) }}\r\n </mat-option>\r\n <mat-option *ngIf=\"item.bcbProduct\" [value]=\"item\">\r\n {{ item.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let downloadcategory of FabrikantenService.FabrikantenSettingsViewModel.downloadCategories\">\r\n <ng-container *ngIf=\"ShowDownloadCategory(downloadcategory.name)\">\r\n <ng-container *ngFor=\"let downloaditem of downloadcategory.items\">\r\n <ng-container *ngIf=\"downloadcategory.name == 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, FabrikantenService.GetSelectedToebehoren()?.bcbeboId)\" *ngIf=\"(!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()) && (FabrikantenService.GetSelectedToebehoren() != null)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"downloadcategory.name != 'Toebehoren'\">\r\n <button mat-stroked-button class=\"toolbar-button\" [ngClass]=\"downloaditem.fileType + '-button'\" (click)=\"Download(downloaditem, undefined)\" *ngIf=\"!downloaditem.isNativeRevit || WebGLService.HasNativeRFA()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"downloaditem.loading\">...</span>\r\n <span *ngIf=\"!downloaditem.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, downloaditem.translationSubCategory) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let customDownload of FabrikantenService.FabrikantenViewModel.selectedProduct.customDownloads\">\r\n <button mat-stroked-button class=\"toolbar-button custom-button\" (click)=\"DownloadCustom(customDownload)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n <span *ngIf=\"customDownload.loading\">...</span>\r\n <span *ngIf=\"!customDownload.loading\">{{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.DownloadRevit) }}</span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let pdftemplate of FabrikantenService.FabrikantenViewModel.selectedProduct.pdfTemplates\">\r\n <button mat-stroked-button class=\"toolbar-button template-button\" (click)=\"DownloadPDFTemplate(pdftemplate)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon file_download\">file_download</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Specification) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"ShowTextureButtons()\">\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.patroonURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Texture) }}\r\n </div>\r\n </div>\r\n </button>\r\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenLink(TextureService.FabrikantenTextureViewModel.bumpURL)\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Bumpmap) }}\r\n </div>\r\n </div>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button class=\"toolbar-button bcb-button\" (click)=\"OpenBCBLink()\" *ngIf=\"ShowBCBButton()\">\r\n <div class=\"row\">\r\n <div class=\"row-icon\">\r\n <mat-icon class=\"icon open_in_new\">open_in_new</mat-icon>\r\n </div>\r\n <div class=\"row-title\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.BCB) }}\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n</div>\r\n", styles: ["app-fab-actionmenu .mat-stroked-button{white-space:unset!important}app-fab-actionmenu .icon{margin-right:3px}app-fab-actionmenu .toolbar-button{margin-top:3px;width:100%}app-fab-actionmenu .row{display:flex;line-height:37px}app-fab-actionmenu .row-icon{align-items:center;display:flex}app-fab-actionmenu .column{display:flex;flex-direction:column}\n"] }]
|
|
177
180
|
}], ctorParameters: function () { return [{ type: i1.MobileService }, { type: i2.FabrikantenService }, { type: i3.TranslateService }, { type: i4.BestekService }, { type: i5.TextureService }, { type: i6.SVGService }, { type: i7.MatLegacyDialog }, { type: i8.WebGLService }, { type: i9.ToebehorenService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { display: [{
|
|
178
181
|
type: Input
|
|
179
182
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1hY3Rpb25tZW51L2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYWN0aW9ubWVudS9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkYsT0FBTyxFQUE2RSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0RixNQU1hLHNCQUFzQjtJQVlkO0lBQ1Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJULElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVRLE9BQU8sQ0FBUztJQUV6QixZQUFtQixhQUE0QixFQUN0QyxrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFUMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0Is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QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDN0g7SUFDSCxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM3SDtJQUNILENBQUM7dUdBeEtVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLDBGQ25CbkMsbTFUQWtMQTs7U0QvSmEsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUk7K1dBWTVCLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XHJcbmltcG9ydCB7IEJlc3Rla1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iZXN0ZWsuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVkdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ZnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RleHR1cmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvZWJlaG9yZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9lYmVob3Jlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ViR0xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2ViZ2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuUERGVGVtcGxhdGVWaWV3TW9kZWwsIEZhYnJpa2FudGVuU2V0dGluZ3NEb3dubG9hZEl0ZW1WaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBGYWJGb3JtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZmFiLWZvcm0tZGlhbG9nL2ZhYi1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmFiLWFjdGlvbm1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWJBY3Rpb25tZW51Q29tcG9uZW50IHtcclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIE1vYmlsZVNlcnZpY2U6IE1vYmlsZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBCZXN0ZWtTZXJ2aWNlOiBCZXN0ZWtTZXJ2aWNlLFxyXG4gICAgcHVibGljIFRleHR1cmVTZXJ2aWNlOiBUZXh0dXJlU2VydmljZSxcclxuICAgIHB1YmxpYyBTVkdTZXJ2aWNlOiBTVkdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHVibGljIFdlYkdMU2VydmljZTogV2ViR0xTZXJ2aWNlLFxyXG4gICAgcHVibGljIFRvZWJlaG9yZW5TZXJ2aWNlOiBUb2ViZWhvcmVuU2VydmljZSxcclxuICAgIHB1YmxpYyBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBPcGVuTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93RG93bmxvYWRDYXRlZ29yeShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gbmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93M0RCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIjNEXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvdzJEQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCIyRFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCZXN0ZWtCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIkJlc3Rla1wiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dUZXh0dXJlQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJUZXh0dXJlXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1RvZWJlaG9yZW5CdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIlRvZWJlaG9yZW5cIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QkNCQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw/LnNob3dCQ0JCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0lucHV0Q29kZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5pbnB1dENvZGVFbmFibGVkID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkQmVzdGVrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID09IFwiU1RBQlVcIiAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuc3VmICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRCZXN0ZWsodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1Zik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSBcIlZyaWpcIiAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3RlayAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQmVzdGVrKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QmVzdGVrLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhbGVydChcIkVycm9yOiB1bmFibGVkIHRvIGRvd25sb2FkIHNwZWNpZmljYXRpb25zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIENvcHlUb0NsaXBCb2FyZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3RlayAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5Db3B5VG9DbGlwYm9hcmQodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RCZXN0ZWsubmF0aXZlRWxlbWVudC5pbm5lclRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwiRXJyb3I6IHVuYWJsZWQgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb3B5VG9DbGlwQm9hcmRTVUYoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1ZiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5Db3B5VG9DbGlwYm9hcmQodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1Zik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBjb3B5IHNwZWNpZmljYXRpb25zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCZXN0ZWtTZWxlY3QoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5TaG93VnJpaigpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U1RBQlUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5zdGFidSAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN0YWJ1ICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93U1VGKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uc3VmICE9ICcnICYmIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uc3VmICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93T1NGKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8ub3NmaHRtbCAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/Lm9zZmh0bWwgIT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dWcmlqKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw/LmVuYWJsZVZyaWplQmVzdGVrVGVrc3QgPT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnZyaWpCZXN0ZWtIVE1MICE9ICcnICYmIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8udnJpakJlc3Rla0hUTUwgIT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE9wZW5CQ0JMaW5rKCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuT3BlbkJDQkxpbmsoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZFBERlRlbXBsYXRlKHRlbXBsYXRlOiBGYWJyaWthbnRlblBERlRlbXBsYXRlVmlld01vZGVsKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuZG93bmxvYWRGb3JtRW5hYmxlZCAmJiAhdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaGFzRmlsbGVkRm9ybXMpIHtcclxuICAgICAgdmFyIGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRmFiRm9ybURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGZvcm06IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuZG93bmxvYWRGb3JtXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmhhc0ZpbGxlZEZvcm1zKSB7XHJcbiAgICAgICAgICB0aGlzLkRvd25sb2FkUERGVGVtcGxhdGUodGVtcGxhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdmFyIHVybCA9IFwiL0Rvd25sb2FkL0NyZWF0ZVBERj9wTGFuZ3VhZ2VJZD1cIiArIHRoaXMuVHJhbnNsYXRlU2VydmljZS5BY3RpdmVMYW5ndWFnZS5pZDtcclxuICAgICAgdXJsICs9IFwiJnBQREZUZW1wbGF0ZUlkPVwiICsgdGVtcGxhdGUudGVtcGxhdGVJZDtcclxuICAgICAgdXJsICs9IFwiJnBTZXNzaW9uSWQ9XCIgKyB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkKGRvd25sb2FkaXRlbTogRmFicmlrYW50ZW5TZXR0aW5nc0Rvd25sb2FkSXRlbVZpZXdNb2RlbCwgY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIGN1c3RvbWJjYmVib2lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWZyZXNoU25lZGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2U/LkZhYnJpa2FudGVuVmlld01vZGVsPy5zZXNzaW9uSWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNWR1NlcnZpY2UuTG9hZEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVmcmVzaFNjaGFhbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZT8uRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlc3Npb25JZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU1ZHU2VydmljZS5Mb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsICE9IG51bGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvdzJEQnV0dG9ucygpXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TbmVkZSkgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNWR1NlcnZpY2UuU25lZGVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlJlZnJlc2hTbmVkZSgpXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc25lZGUgb2YgU1ZHU2VydmljZS5TbmVkZXNcIiBbdmFsdWVdPVwic25lZGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TbmVkZUl0ZW0sIG51bGwsIHNuZWRlKSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNjaGFhbCkgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNWR1NlcnZpY2UuU2NoYWFsXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJSZWZyZXNoU2NoYWFsKClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMCdcIj4xOjE8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEnXCI+MToyPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicyJ1wiPjE6NTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMydcIj4xOjEwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic0J1wiPjE6MjA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzUnXCI+MTo1MDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNidcIj4xOjEwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNydcIj4xOjIwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInOCdcIj4xOjUwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInOSdcIj4xOjEwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEwJ1wiPjE6MjAwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMTEnXCI+MTo1MDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMidcIj4xOjEwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMydcIj4xOjIwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxNCdcIj4xOjUwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QmVzdGVrQnV0dG9ucygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QmVzdGVrU2VsZWN0KClcIj5cclxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW3ZhbHVlXT1cIkJlc3Rla1NlcnZpY2UuVHlwZUJlc3Rla1wiIChjaGFuZ2UpPVwiQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID0gJGV2ZW50LnNvdXJjZS52YWx1ZVwiIGFwcGVhcmFuY2U9XCJsZWdhY3lcIj5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dTVEFCVSgpXCIgdmFsdWU9XCJTVEFCVVwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU1RBQlUpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dPU0YoKVwiIHZhbHVlPVwiT1NGXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5PU0YpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dWcmlqKClcIiB2YWx1ZT1cIlZyaWpcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNwZWNpZmljYXRpb25UZXh0KSB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LWJ1dHRvblwiIChjbGljayk9XCJDb3B5VG9DbGlwQm9hcmQoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGNvbnRlbnRfY29weVwiPmNvbnRlbnRfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DbGlwYm9hcmQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gY29weS1zdWYtYnV0dG9uXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBCb2FyZFNVRigpXCIgKm5nSWY9XCJCZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gJ1NUQUJVJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGNvbnRlbnRfY29weVwiPmNvbnRlbnRfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DbGlwYm9hcmRTVUYpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gZG93bmxvYWQtYmVzdGVrLWJ1dHRvblwiIChjbGljayk9XCJEb3dubG9hZEJlc3RlaygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gZmlsZV9kb3dubG9hZFwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRG93bmxvYWQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RvZWJlaG9yZW5CdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj5Ub2ViZWhvcmVuPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJGYWJyaWthbnRlblNlcnZpY2UuU2VsZWN0ZWRUb2ViZWhvcmVuXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJUb2ViZWhvcmVuU2VydmljZS5PcGVuVG9lYmVob3Jlbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5cIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuVG9lYmVob3JlbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpdGVtLmlkKSB9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG93bmxvYWRjYXRlZ29yeSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZENhdGVnb3JpZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dEb3dubG9hZENhdGVnb3J5KGRvd25sb2FkY2F0ZWdvcnkubmFtZSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3dubG9hZGl0ZW0gb2YgZG93bmxvYWRjYXRlZ29yeS5pdGVtc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSA9PSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKT8uYmNiZWJvSWQpXCIgKm5nSWY9XCIoIWRvd25sb2FkaXRlbS5pc05hdGl2ZVJldml0IHx8IFdlYkdMU2VydmljZS5IYXNOYXRpdmVSRkEoKSkgJiYgKEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKSAhPSBudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvd25sb2FkaXRlbS5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIGRvd25sb2FkaXRlbS50cmFuc2xhdGlvblN1YkNhdGVnb3J5KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSAhPSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZClcIiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0uaXNOYXRpdmVSZXZpdCB8fCBXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG93bmxvYWRpdGVtLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBkb3dubG9hZGl0ZW0udHJhbnNsYXRpb25TdWJDYXRlZ29yeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwZGZ0ZW1wbGF0ZSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LnBkZlRlbXBsYXRlc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIHRlbXBsYXRlLWJ1dHRvblwiIChjbGljayk9XCJEb3dubG9hZFBERlRlbXBsYXRlKHBkZnRlbXBsYXRlKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNwZWNpZmljYXRpb24pIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RleHR1cmVCdXR0b25zKClcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJPcGVuTGluayhUZXh0dXJlU2VydmljZS5GYWJyaWthbnRlblRleHR1cmVWaWV3TW9kZWwucGF0cm9vblVSTClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBvcGVuX2luX25ld1wiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlRleHR1cmUpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiT3BlbkxpbmsoVGV4dHVyZVNlcnZpY2UuRmFicmlrYW50ZW5UZXh0dXJlVmlld01vZGVsLmJ1bXBVUkwpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5CdW1wbWFwKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBiY2ItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5CQ0JMaW5rKClcIiAqbmdJZj1cIlNob3dCQ0JCdXR0b24oKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG9wZW5faW5fbmV3XCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuQkNCKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJTaG93SW5wdXRDb2RlKClcIj5cclxuICA8YXBwLWZhYi1pbnB1dC1jb2RlPjwvYXBwLWZhYi1pbnB1dC1jb2RlPlxyXG48L2Rpdj5cclxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1hY3Rpb25tZW51L2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYWN0aW9ubWVudS9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkYsT0FBTyxFQUFpSCxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pNLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0RixNQU1hLHNCQUFzQjtJQVlkO0lBQ1Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJULElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVRLE9BQU8sQ0FBUztJQUV6QixZQUFtQixhQUE0QixFQUN0QyxrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFUMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0Is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SUFBSSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzdIO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRTtZQUNwRSxJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDN0g7SUFDSCxDQUFDO3VHQTVLVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiwwRkNuQm5DLG1sVkFnTUE7O1NEN0thLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOytXQVk1QixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xyXG5pbXBvcnQgeyBCZXN0ZWtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmVzdGVrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9iaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vYmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU1ZHU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N2Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZXh0dXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2ViZWhvcmVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RvZWJlaG9yZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYkdMU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlYmdsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkN1c3RvbURvd25sb2FkVmlld01vZGVsLCBGYWJyaWthbnRlblBERlRlbXBsYXRlVmlld01vZGVsLCBGYWJyaWthbnRlblNldHRpbmdzRG93bmxvYWRJdGVtVmlld01vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgRmFiRm9ybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2ZhYi1mb3JtLWRpYWxvZy9mYWItZm9ybS1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZhYi1hY3Rpb25tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFiQWN0aW9ubWVudUNvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLFxyXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgQmVzdGVrU2VydmljZTogQmVzdGVrU2VydmljZSxcclxuICAgIHB1YmxpYyBUZXh0dXJlU2VydmljZTogVGV4dHVyZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgU1ZHU2VydmljZTogU1ZHU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHB1YmxpYyBXZWJHTFNlcnZpY2U6IFdlYkdMU2VydmljZSxcclxuICAgIHB1YmxpYyBUb2ViZWhvcmVuU2VydmljZTogVG9lYmVob3JlblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbkxpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0Rvd25sb2FkQ2F0ZWdvcnkobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IG5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvdzNEQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCIzRFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3cyREJ1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiMkRcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QmVzdGVrQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJCZXN0ZWtcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VGV4dHVyZUJ1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiVGV4dHVyZVwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dUb2ViZWhvcmVuQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJUb2ViZWhvcmVuXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0JDQkJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5zaG93QkNCQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dJbnB1dENvZGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbD8uaW5wdXRDb2RlRW5hYmxlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEJlc3RlaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSBcIlNUQUJVXCIgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1ZiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQmVzdGVrKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5zdWYpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJWcmlqXCIgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RCZXN0ZWsgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEJlc3Rlayh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3Rlay5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBkb3dubG9hZCBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb3B5VG9DbGlwQm9hcmQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RCZXN0ZWsgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkJlc3Rla1NlcnZpY2UuQ29weVRvQ2xpcGJvYXJkKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QmVzdGVrLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhbGVydChcIkVycm9yOiB1bmFibGVkIHRvIGNvcHkgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29weVRvQ2xpcEJvYXJkU1VGKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5zdWYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkJlc3Rla1NlcnZpY2UuQ29weVRvQ2xpcGJvYXJkKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5zdWYpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwiRXJyb3I6IHVuYWJsZWQgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QmVzdGVrU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2hvd1ZyaWooKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NUQUJVKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uc3RhYnUgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5zdGFidSAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NVRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd09TRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/Lm9zZmh0bWwgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5vc2ZodG1sICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VnJpaigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5lbmFibGVWcmlqZUJlc3Rla1Rla3N0ID09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy52cmlqQmVzdGVrSFRNTCAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnZyaWpCZXN0ZWtIVE1MICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBPcGVuQkNCTGluaygpOiB2b2lkIHtcclxuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLk9wZW5CQ0JMaW5rKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRQREZUZW1wbGF0ZSh0ZW1wbGF0ZTogRmFicmlrYW50ZW5QREZUZW1wbGF0ZVZpZXdNb2RlbCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmRvd25sb2FkRm9ybUVuYWJsZWQgJiYgIXRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmhhc0ZpbGxlZEZvcm1zKSB7XHJcbiAgICAgIHZhciBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEZhYkZvcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBmb3JtOiB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmRvd25sb2FkRm9ybVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5oYXNGaWxsZWRGb3Jtcykge1xyXG4gICAgICAgICAgdGhpcy5Eb3dubG9hZFBERlRlbXBsYXRlKHRlbXBsYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciB1cmwgPSBcIi9Eb3dubG9hZC9DcmVhdGVQREY/cExhbmd1YWdlSWQ9XCIgKyB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuQWN0aXZlTGFuZ3VhZ2UuaWQ7XHJcbiAgICAgIHVybCArPSBcIiZwUERGVGVtcGxhdGVJZD1cIiArIHRlbXBsYXRlLnRlbXBsYXRlSWQ7XHJcbiAgICAgIHVybCArPSBcIiZwU2Vzc2lvbklkPVwiICsgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG5cclxuICAgICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEN1c3RvbShjdXN0b21kb3dubG9hZDogRmFicmlrYW50ZW5DdXN0b21Eb3dubG9hZFZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRDdXN0b20oY3VzdG9tZG93bmxvYWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkKGRvd25sb2FkaXRlbTogRmFicmlrYW50ZW5TZXR0aW5nc0Rvd25sb2FkSXRlbVZpZXdNb2RlbCwgY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIGN1c3RvbWJjYmVib2lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWZyZXNoU25lZGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2U/LkZhYnJpa2FudGVuVmlld01vZGVsPy5zZXNzaW9uSWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNWR1NlcnZpY2UuTG9hZEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCwgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVmcmVzaFNjaGFhbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZT8uRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlc3Npb25JZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU1ZHU2VydmljZS5Mb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsICE9IG51bGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvdzJEQnV0dG9ucygpXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TbmVkZSkgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNWR1NlcnZpY2UuU25lZGVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlJlZnJlc2hTbmVkZSgpXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc25lZGUgb2YgU1ZHU2VydmljZS5TbmVkZXNcIiBbdmFsdWVdPVwic25lZGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TbmVkZUl0ZW0sIG51bGwsIHNuZWRlKSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNjaGFhbCkgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlNWR1NlcnZpY2UuU2NoYWFsXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJSZWZyZXNoU2NoYWFsKClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMCdcIj4xOjE8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEnXCI+MToyPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicyJ1wiPjE6NTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMydcIj4xOjEwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic0J1wiPjE6MjA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzUnXCI+MTo1MDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNidcIj4xOjEwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNydcIj4xOjIwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInOCdcIj4xOjUwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInOSdcIj4xOjEwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEwJ1wiPjE6MjAwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMTEnXCI+MTo1MDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMidcIj4xOjEwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMydcIj4xOjIwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxNCdcIj4xOjUwMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QmVzdGVrQnV0dG9ucygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QmVzdGVrU2VsZWN0KClcIj5cclxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW3ZhbHVlXT1cIkJlc3Rla1NlcnZpY2UuVHlwZUJlc3Rla1wiIChjaGFuZ2UpPVwiQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID0gJGV2ZW50LnNvdXJjZS52YWx1ZVwiIGFwcGVhcmFuY2U9XCJsZWdhY3lcIj5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dTVEFCVSgpXCIgdmFsdWU9XCJTVEFCVVwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU1RBQlUpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dPU0YoKVwiIHZhbHVlPVwiT1NGXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5PU0YpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdJZj1cIlNob3dWcmlqKClcIiB2YWx1ZT1cIlZyaWpcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNwZWNpZmljYXRpb25UZXh0KSB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LWJ1dHRvblwiIChjbGljayk9XCJDb3B5VG9DbGlwQm9hcmQoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGNvbnRlbnRfY29weVwiPmNvbnRlbnRfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DbGlwYm9hcmQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gY29weS1zdWYtYnV0dG9uXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBCb2FyZFNVRigpXCIgKm5nSWY9XCJCZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gJ1NUQUJVJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGNvbnRlbnRfY29weVwiPmNvbnRlbnRfY29weTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DbGlwYm9hcmRTVUYpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gZG93bmxvYWQtYmVzdGVrLWJ1dHRvblwiIChjbGljayk9XCJEb3dubG9hZEJlc3RlaygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gZmlsZV9kb3dubG9hZFwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRG93bmxvYWQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RvZWJlaG9yZW5CdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj5Ub2ViZWhvcmVuPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJGYWJyaWthbnRlblNlcnZpY2UuU2VsZWN0ZWRUb2ViZWhvcmVuXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJUb2ViZWhvcmVuU2VydmljZS5PcGVuVG9lYmVob3Jlbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5cIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuVG9lYmVob3JlbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpdGVtLmlkKSB9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG93bmxvYWRjYXRlZ29yeSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZENhdGVnb3JpZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dEb3dubG9hZENhdGVnb3J5KGRvd25sb2FkY2F0ZWdvcnkubmFtZSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3dubG9hZGl0ZW0gb2YgZG93bmxvYWRjYXRlZ29yeS5pdGVtc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSA9PSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKT8uYmNiZWJvSWQpXCIgKm5nSWY9XCIoIWRvd25sb2FkaXRlbS5pc05hdGl2ZVJldml0IHx8IFdlYkdMU2VydmljZS5IYXNOYXRpdmVSRkEoKSkgJiYgKEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKSAhPSBudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvd25sb2FkaXRlbS5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIGRvd25sb2FkaXRlbS50cmFuc2xhdGlvblN1YkNhdGVnb3J5KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSAhPSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZClcIiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0uaXNOYXRpdmVSZXZpdCB8fCBXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG93bmxvYWRpdGVtLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBkb3dubG9hZGl0ZW0udHJhbnNsYXRpb25TdWJDYXRlZ29yeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21Eb3dubG9hZCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmN1c3RvbURvd25sb2Fkc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGN1c3RvbS1idXR0b25cIiAoY2xpY2spPVwiRG93bmxvYWRDdXN0b20oY3VzdG9tRG93bmxvYWQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gZmlsZV9kb3dubG9hZFwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tRG93bmxvYWQubG9hZGluZ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY3VzdG9tRG93bmxvYWQubG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRG93bmxvYWRSZXZpdCkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwZGZ0ZW1wbGF0ZSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LnBkZlRlbXBsYXRlc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIHRlbXBsYXRlLWJ1dHRvblwiIChjbGljayk9XCJEb3dubG9hZFBERlRlbXBsYXRlKHBkZnRlbXBsYXRlKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNwZWNpZmljYXRpb24pIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RleHR1cmVCdXR0b25zKClcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJPcGVuTGluayhUZXh0dXJlU2VydmljZS5GYWJyaWthbnRlblRleHR1cmVWaWV3TW9kZWwucGF0cm9vblVSTClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBvcGVuX2luX25ld1wiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlRleHR1cmUpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiT3BlbkxpbmsoVGV4dHVyZVNlcnZpY2UuRmFicmlrYW50ZW5UZXh0dXJlVmlld01vZGVsLmJ1bXBVUkwpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5CdW1wbWFwKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBiY2ItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5CQ0JMaW5rKClcIiAqbmdJZj1cIlNob3dCQ0JCdXR0b24oKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG9wZW5faW5fbmV3XCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuQkNCKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJTaG93SW5wdXRDb2RlKClcIj5cclxuICA8YXBwLWZhYi1pbnB1dC1jb2RlPjwvYXBwLWZhYi1pbnB1dC1jb2RlPlxyXG48L2Rpdj5cclxuIl19
|