qms-angular 1.1.26 → 1.1.28
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/bundles/qms-angular.umd.js +645 -544
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
- package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
- package/esm2015/lib/common/themes.const.js +2 -1
- package/esm2015/lib/components/breadcrumb/breadcrumb-item.directive.js +3 -3
- package/esm2015/lib/components/breadcrumb/breadcrumb.js +10 -4
- package/esm2015/lib/components/comment/comment.js +17 -11
- package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.js +9 -2
- package/esm2015/lib/components/qms-nav-drawer/qms-nav-drawer.component.js +3 -3
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +3 -3
- package/esm2015/lib/components/qms-paginator/qms-paginator.component.js +9 -2
- package/esm2015/lib/components/related/list-other-related/list-related.component.js +9 -2
- package/esm2015/lib/components/related/model/popup-data.model.js +2 -1
- package/esm2015/lib/components/related/popup/related-popup.component.js +58 -24
- package/esm2015/lib/components/related/risk/analysis/analysis.component.js +9 -2
- package/esm2015/lib/components/related/risk/list/list.component.js +9 -2
- package/esm2015/lib/components/related/risk/result/result.component.js +9 -2
- package/esm2015/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.js +9 -2
- package/esm2015/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.js +8 -3
- package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +2 -2
- package/esm2015/lib/components/select-department/select-department.component.js +6 -38
- package/esm2015/lib/components/select-department-tree/model/department-paging.model.js +1 -2
- package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +2 -5
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +114 -164
- package/esm2015/lib/components/select-department-tree/select-department-tree.module.js +2 -4
- package/esm2015/lib/components/select-dialog/select-dialog.js +8 -4
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +3 -3
- package/esm2015/lib/components/select-one/select-one-next.component.js +3 -3
- package/esm2015/lib/components/select-one/select-one.component.js +3 -3
- package/esm2015/lib/components/select-process-document/select-process-document.component.js +3 -3
- package/esm2015/lib/components/tree/basic-tree.component.js +4 -4
- package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.js +9 -2
- package/esm2015/lib/directives/chip-input/chip-input-select-trigger.directive.js +3 -3
- package/esm2015/lib/directives/chips/chip.directive.js +2 -2
- package/esm2015/lib/directives/dropdown-menu/dropdown-item.directive.js +2 -2
- package/esm2015/lib/directives/file-upload/file-upload-display.directive.js +3 -3
- package/esm2015/lib/directives/file-upload/file-upload-multiple-display.directive.js +3 -3
- package/esm2015/lib/directives/file-upload/file-upload-multiple.directive.js +3 -3
- package/esm2015/lib/directives/file-upload/file-upload.directive.js +2 -2
- package/esm2015/lib/directives/search-field.directive.js +2 -2
- package/esm2015/lib/model/en.js +4 -2
- package/esm2015/lib/model/no.js +4 -2
- package/esm2015/lib/pipe/dateFormat.pipe.js +9 -2
- package/esm2015/lib/qms-angular.component.js +9 -2
- package/esm2015/lib/qms-ckeditor-components/common/bpmn/toolbar.function.js +10 -1
- package/esm2015/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.js +21 -15
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorImageUploadType.const.js +4 -0
- package/esm2015/lib/qms-ckeditor-components/common/enums/ckeditor-bpmn-expand.enum.js +8 -0
- package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +6 -9
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +39 -11
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +2 -2
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +53 -56
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +9 -4
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +28 -11
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +33 -2
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.js +6 -2
- package/esm2015/qms-angular.js +11 -11
- package/fesm2015/qms-angular.js +589 -468
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/common/models/qms-flat-node.model.d.ts +0 -1
- package/lib/common/models/qms-tree-node.model.d.ts +0 -1
- package/lib/common/themes.const.d.ts +1 -0
- package/lib/components/breadcrumb/breadcrumb-item.directive.d.ts +2 -2
- package/lib/components/breadcrumb/breadcrumb.d.ts +3 -0
- package/lib/components/comment/comment.d.ts +3 -0
- package/lib/components/edit-file-name-dialog/edit-file-name-dialog.d.ts +3 -0
- package/lib/components/qms-paginator/qms-paginator.component.d.ts +3 -0
- package/lib/components/related/list-other-related/list-related.component.d.ts +3 -0
- package/lib/components/related/model/popup-data.model.d.ts +2 -0
- package/lib/components/related/popup/related-popup.component.d.ts +13 -2
- package/lib/components/related/risk/analysis/analysis.component.d.ts +3 -0
- package/lib/components/related/risk/list/list.component.d.ts +3 -0
- package/lib/components/related/risk/result/result.component.d.ts +3 -0
- package/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.d.ts +3 -0
- package/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.d.ts +5 -3
- package/lib/components/select-department/select-department.component.d.ts +0 -19
- package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +0 -3
- package/lib/components/select-department-tree/select-department-tree.component.d.ts +23 -51
- package/lib/components/select-dialog/select-dialog.d.ts +2 -1
- package/lib/components/upload-file-error-dialog/upload-file-error-dialog.d.ts +3 -0
- package/lib/directives/chip-input/chip-input-select-trigger.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload-display.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload-multiple-display.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload-multiple.directive.d.ts +2 -2
- package/lib/model/en.d.ts +2 -0
- package/lib/model/no.d.ts +2 -0
- package/lib/pipe/dateFormat.pipe.d.ts +3 -0
- package/lib/qms-angular.component.d.ts +3 -0
- package/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.d.ts +1 -1
- package/lib/qms-ckeditor-components/common/constants/ckeditorImageUploadType.const.d.ts +3 -0
- package/lib/qms-ckeditor-components/common/enums/ckeditor-bpmn-expand.enum.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/functions/common.function.d.ts +2 -4
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +1 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -2
- package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +3 -1
- package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +1 -0
- package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +1 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +2 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.d.ts +1 -1
- package/package.json +1 -1
- package/qms-angular.d.ts +10 -10
- package/qms-angular.metadata.json +1 -1
- package/src/assets/jointjs/scss/bpmn.scss +22 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/anchor/anchorcommand.js +13 -3
- package/src/assets/qms-ckeditor-plugin/src/plugins/anchor/anchorui.js +7 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/bpmndialogcommand.js +12 -3
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkcommand.js +35 -33
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkdialogcommand.js +9 -6
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkediting.js +28 -14
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkimageediting.js +1 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkimageui.js +97 -92
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkui.js +40 -28
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/ui/linkformview.js +24 -24
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/utils.js +8 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/table/converters/downcast.js +2 -2
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/loadtemplatedialogcommand.js +20 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/theme/video.css +1 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/video/videoediting.js +3 -2
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/uploadvideocommand.js +1 -1
- package/src/lib/components/related/popup/related-popup.component.scss +19 -0
- package/src/lib/components/select-department/select-department.component.scss +5 -25
- package/src/lib/components/select-department-tree/select-department-tree.component.scss +182 -381
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.scss +4 -0
- package/src/lib/qms-ckeditor-components/qms-ckeditor.component.scss +4 -0
@@ -3,6 +3,8 @@ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dial
|
|
3
3
|
import { TranslateLibraryService } from '../../../../services/translation-registry.service';
|
4
4
|
import { DataType } from "../../common/data-type.enum";
|
5
5
|
import { RiskAnalysis } from "../../model/risk-analysis.model";
|
6
|
+
import { Subject } from "rxjs";
|
7
|
+
import { takeUntil } from "rxjs/operators";
|
6
8
|
export class RiskAnalysisComponent {
|
7
9
|
constructor(translate, dialog, dialogRef, data) {
|
8
10
|
this.translate = translate;
|
@@ -15,10 +17,11 @@ export class RiskAnalysisComponent {
|
|
15
17
|
this.nodeCheckedItem = [];
|
16
18
|
this.disabledList = [];
|
17
19
|
this.riskData = [];
|
20
|
+
this.ngUnsubscribe = new Subject();
|
18
21
|
}
|
19
22
|
;
|
20
23
|
ngOnInit() {
|
21
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
24
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
|
22
25
|
if (res) {
|
23
26
|
this.LANG = this.translate.getObjectLang(res);
|
24
27
|
}
|
@@ -53,6 +56,10 @@ export class RiskAnalysisComponent {
|
|
53
56
|
canHaveDupId: false
|
54
57
|
};
|
55
58
|
}
|
59
|
+
ngOnDestroy() {
|
60
|
+
this.ngUnsubscribe.next();
|
61
|
+
this.ngUnsubscribe.complete();
|
62
|
+
}
|
56
63
|
toggleChileNode(list) {
|
57
64
|
this.analysisDanger = [];
|
58
65
|
this.nodeCheckedItem = [];
|
@@ -102,4 +109,4 @@ RiskAnalysisComponent.ctorParameters = () => [
|
|
102
109
|
{ type: MatDialogRef },
|
103
110
|
{ type: RiskAnalysis, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
104
111
|
];
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3JlbGF0ZWQvcmlzay9hbmFseXNpcy9hbmFseXNpcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzQyxNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUNTLFNBQWtDLEVBQ2pDLE1BQWlCLEVBQ2xCLFNBQThDLEVBQ3JCLElBQWtCO1FBSDNDLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBYztRQWpCcEQsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFFL0IsbUJBQWMsR0FBMEIsRUFBRSxDQUFDO1FBRTNDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFHMUIsa0JBQWEsR0FBRyxJQUFJ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QUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sSUFBSSxHQUFHO1lBQ1gsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3BDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFO1NBQy9CLENBQUE7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7O1lBbkhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixvL0RBQXdDOzthQUV6Qzs7O1lBZlEsdUJBQXVCO1lBRHZCLFNBQVM7WUFBRSxZQUFZO1lBSXZCLFlBQVksdUJBaUNoQixNQUFNLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi9jb21tb24vZGF0YS10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgQW5hbHlzaXNEYW5nZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYW5hbHlzaXMtZGFuZ2VyLm1vZGVsXCI7XHJcbmltcG9ydCB7IFJpc2tBbmFseXNpcyB9IGZyb20gXCIuLi8uLi9tb2RlbC9yaXNrLWFuYWx5c2lzLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBUcmVlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vdHJlZS9tb2RlbC90cmVlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gXCIuLi8uLi8uLi90cmVlL21vZGVsL3RyZWUtZmxhdC1ub2RlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1yaXNrLWFuYWx5c2lzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5hbHlzaXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FuYWx5c2lzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJpc2tBbmFseXNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgTEFORzogYW55O1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGFuZ2VyczogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gIGRhbmdlckNvbmZpZzogVHJlZUNvbmZpZztcclxuICBhbmFseXNpc0RhbmdlcjogQXJyYXk8QW5hbHlzaXNEYW5nZXI+ID0gW107O1xyXG5cclxuICBzZWxlY3RlZERhdGEgPSBbXTtcclxuICBub2RlQ2hlY2tlZEl0ZW0gPSBbXTtcclxuICBkaXNhYmxlZExpc3QgPSBbXTtcclxuXHJcbiAgcmlza0RhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICByaXNrQ29uZmlnOiBUcmVlQ29uZmlnO1xyXG5cclxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Umlza0FuYWx5c2lzQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUmlza0FuYWx5c2lzXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudGl0bGUgPSB0aGlzLmRhdGEudGl0bGU7XHJcbiAgICB0aGlzLmRhbmdlcnMgPSB0aGlzLmRhdGEuZGFuZ2VycztcclxuICAgIHRoaXMuZGFuZ2VyQ29uZmlnID0gdGhpcy5kYXRhLmRhbmdlckNvbmZpZztcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLnRoaXMuZGF0YS5zZWxlY3RlZERhbmdlcnNdO1xyXG4gICAgdGhpcy5kaXNhYmxlZExpc3QgPSB0aGlzLmRhdGEuZGlzYWJsZWRMaXN0IHx8IFtdO1xyXG5cclxuICAgIC8vIGNoZWF0IG5vdCBudWxsIHdoZW4gc2VsZWN0ZWRcclxuICAgIGlmICh0aGlzLmRhdGEuc2VsZWN0ZWREYW5nZXJzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyLnB1c2goe1xyXG4gICAgICAgIGFuYWx5c2lzSWQ6IDEsXHJcbiAgICAgICAgYW5hbHlzaXNOYW1lOiAnc3RyaW5nJyxcclxuICAgICAgICBkYW5nZXJJZDogMSxcclxuICAgICAgICBkYW5nZXJOYW1lOiAnc3RyaW5nJyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yaXNrQ29uZmlnID0ge1xyXG4gICAgICBzaG93Q2hlY2tCb3g6IHRydWUsXHJcbiAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogdHJ1ZSxcclxuICAgICAgb25seUNoZWNrQm94Rm9yQ2hpbGQ6IGZhbHNlLFxyXG4gICAgICBtb2R1bGVJZDogRGF0YVR5cGUucmlzayxcclxuICAgICAgb3Blbkljb246ICdrZXlib2FyZF9hcnJvd191cCcsXHJcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgY2xvc2VJY29uOiAna2V5Ym9hcmRfYXJyb3dfZG93bicsXHJcbiAgICAgIGNsb3NlSWNvbkNvbG9yOiAnJyxcclxuICAgICAgaXRlbUljb246ICdib3JkZXJfYWxsJyxcclxuICAgICAgaXRlbUljb25QYXRoOiAnJyxcclxuICAgICAgaXRlbUljb25CYXNlNjQ6ICcnLFxyXG4gICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IGZhbHNlLFxyXG4gICAgICBjYW5IYXZlRHVwSWQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGlsZU5vZGUobGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPikge1xyXG4gICAgdGhpcy5hbmFseXNpc0RhbmdlciA9IFtdO1xyXG4gICAgdGhpcy5ub2RlQ2hlY2tlZEl0ZW0gPSBbXTtcclxuXHJcblxyXG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZGFuZ2Vycy5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICBsaXN0LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICBpZiAoeC5pZCA9PT0gZWwuY2hpbGRJZCkge1xyXG4gICAgICAgICAgICAvLyBrZWVwIGFycmF5IG5vZGUgc2VsZWN0ZWRcclxuICAgICAgICAgICAgdGhpcy5ub2RlQ2hlY2tlZEl0ZW0ucHVzaCh4KTtcclxuICAgICAgICAgICAgLy8gY3JlYXRlIGZvcm1hdCBzaG93IGFuYWx5c2lzIFxyXG4gICAgICAgICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFuYWx5c2lzSWQ6ICtlbC5yb290SWQsXHJcbiAgICAgICAgICAgICAgYW5hbHlzaXNOYW1lOiBlbC5yb290TmFtZSxcclxuICAgICAgICAgICAgICBkYW5nZXJJZDogK2VsLmNoaWxkSWQsXHJcbiAgICAgICAgICAgICAgZGFuZ2VyTmFtZTogZWwuY2hpbGROYW1lXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uRmluaXNoQ2xpY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAnbm9kZVNlbGVjdGVkJzogdGhpcy5ub2RlQ2hlY2tlZEl0ZW0sXHJcbiAgICAgICdhbmFseXNpc0RhdGEnOiB0aGlzLmFuYWx5c2lzRGFuZ2VyLFxyXG4gICAgICAncmlza0RhdGEnOiB0aGlzLmRhbmdlcnMgfHwgW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShkYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsQ2xpY2soKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -2,6 +2,8 @@ import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
2
2
|
import { MatDialog } from "@angular/material/dialog";
|
3
3
|
import { TranslateLibraryService } from '../../../../services/translation-registry.service';
|
4
4
|
import { ActionType } from "../../common/action-type.enum";
|
5
|
+
import { Subject } from "rxjs";
|
6
|
+
import { takeUntil } from "rxjs/operators";
|
5
7
|
export class RiskListComponent {
|
6
8
|
constructor(translate, dialog) {
|
7
9
|
this.translate = translate;
|
@@ -11,6 +13,7 @@ export class RiskListComponent {
|
|
11
13
|
this.show = 5;
|
12
14
|
this.resultData = [];
|
13
15
|
this.riskAnalysis = [];
|
16
|
+
this.ngUnsubscribe = new Subject();
|
14
17
|
this.updateData = new EventEmitter();
|
15
18
|
}
|
16
19
|
ngOnChanges(changes) {
|
@@ -31,7 +34,7 @@ export class RiskListComponent {
|
|
31
34
|
this.isNotEditedItem = (_b = this.data['isNotEditedItem']) !== null && _b !== void 0 ? _b : false;
|
32
35
|
this.dangers = ((_c = this.data) === null || _c === void 0 ? void 0 : _c.data) || [];
|
33
36
|
this.show = ((_d = this.data) === null || _d === void 0 ? void 0 : _d.numRow) || 5;
|
34
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
37
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
|
35
38
|
if (res) {
|
36
39
|
this.LANG = this.translate.getObjectLang(res);
|
37
40
|
}
|
@@ -40,6 +43,10 @@ export class RiskListComponent {
|
|
40
43
|
this.groupByDanger(this.dangers, 0);
|
41
44
|
}
|
42
45
|
}
|
46
|
+
ngOnDestroy() {
|
47
|
+
this.ngUnsubscribe.next();
|
48
|
+
this.ngUnsubscribe.complete();
|
49
|
+
}
|
43
50
|
groupByDanger(dangers, i) {
|
44
51
|
dangers.forEach(d => {
|
45
52
|
const index = this.analysisDanger.findIndex(x => {
|
@@ -152,4 +159,4 @@ RiskListComponent.propDecorators = {
|
|
152
159
|
data: [{ type: Input }],
|
153
160
|
updateData: [{ type: Output }]
|
154
161
|
};
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9yaXNrL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZM0QsTUFBTSxPQUFPLGlCQUFpQjtJQWlCNUIsWUFDUyxTQUFrQyxFQUNqQyxNQUFpQjtRQURsQixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBZjNCLFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQTRCLEVBQUUsQ0FBQztRQUU3QyxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBSVQsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFlLEVBQUUsQ0FBQztRQUdwQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFPbEUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjs7UUFDaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDNUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtB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QUMsRUFBVTtRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELFlBQVk7SUFFWixDQUFDOzs7WUFwS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixnM0VBQW9DOzthQUVyQzs7O1lBWlEsdUJBQXVCO1lBRHZCLFNBQVM7OzttQkE0QmYsS0FBSzt5QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9hY3Rpb24tdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IERhbmdlckFjdGlvbiB9IGZyb20gXCIuLi8uLi9tb2RlbC9kYW5nZXItYWN0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IERhbmdlckFzc2Vzc21lbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWwvZGFuZ2VyLWFzc2Vzc21lbnQubW9kZWxcIjtcclxuaW1wb3J0IHsgRGFuZ2VyIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Rhbmdlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSaXNrRGFuZ2VyIH0gZnJvbSBcIi4uLy4uL21vZGVsL3Jpc2stZGFuZ2VyLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtcmlzay1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaXNrTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBMQU5HOiBhbnk7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpc05vdEVkaXRlZEl0ZW06IGJvb2xlYW47XHJcbiAgZGFuZ2VyczogQXJyYXk8RGFuZ2VyPiA9IFtdO1xyXG4gIGFuYWx5c2lzRGFuZ2VyOiBBcnJheTxEYW5nZXJBc3Nlc3NtZW50PiA9IFtdO1xyXG4gIGRhbmdlckFjdGlvbjogRGFuZ2VyQWN0aW9uO1xyXG4gIHNob3cgPSA1O1xyXG5cclxuICBkYW5nZXJDb25maWc6IFRyZWVDb25maWc7XHJcblxyXG4gIHJlc3VsdERhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICByaXNrQW5hbHlzaXM6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogUmlza0RhbmdlcjtcclxuICBAT3V0cHV0KCkgdXBkYXRlRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRhdGEucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5kYW5nZXJzID0gW107XHJcbiAgICAgIHRoaXMudGl0bGUgPSBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlLnRpdGxlO1xyXG4gICAgICB0aGlzLmlzTm90RWRpdGVkSXRlbSA9IGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWVbJ2lzTm90RWRpdGVkSXRlbSddID8/IGZhbHNlO1xyXG4gICAgICB0aGlzLmRhbmdlcnMgPSBbLi4uY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZS5kYXRhXTtcclxuICAgICAgdGhpcy5zaG93ID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZT8ubnVtUm93IHx8IDU7XHJcblxyXG4gICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyID0gW107XHJcbiAgICAgIHRoaXMuZ3JvdXBCeURhbmdlcihjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlLmRhdGEsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5kYXRhPy50aXRsZSB8fCAnJztcclxuICAgIHRoaXMuaXNOb3RFZGl0ZWRJdGVtID0gdGhpcy5kYXRhWydpc05vdEVkaXRlZEl0ZW0nXSA/PyBmYWxzZTtcclxuICAgIHRoaXMuZGFuZ2VycyA9IHRoaXMuZGF0YT8uZGF0YSB8fCBbXTtcclxuICAgIHRoaXMuc2hvdyA9IHRoaXMuZGF0YT8ubnVtUm93IHx8IDU7XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5kYW5nZXJzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmdyb3VwQnlEYW5nZXIodGhpcy5kYW5nZXJzLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdyb3VwQnlEYW5nZXIoZGFuZ2VyczogQXJyYXk8RGFuZ2VyPiwgaTogbnVtYmVyKSB7XHJcbiAgICBkYW5nZXJzLmZvckVhY2goZCA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmFseXNpc0Rhbmdlci5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGQuYW5hbHlzaXNJZCA9PT0geC5pZDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMuYW5hbHlzaXNEYW5nZXIucHVzaCh7XHJcbiAgICAgICAgICBpZDogZC5hbmFseXNpc0lkLFxyXG4gICAgICAgICAgbmFtZTogZC5hbmFseXNpc05hbWUsXHJcbiAgICAgICAgICBjaGlsZE51bWJlcjogMCxcclxuICAgICAgICAgIHNob3c6IHRoaXMuc2hvdyxcclxuICAgICAgICAgIHJlbWFpbjogMCxcclxuICAgICAgICAgIGRhbmdlcnM6IFtdLFxyXG4gICAgICAgICAgZm9sZGVySWQ6IGQuZm9sZGVySWQsXHJcbiAgICAgICAgICBzdGF0dXNJZDogZC5zdGF0dXNJZCxcclxuICAgICAgICAgIHNpbXBsZTogZC5zaW1wbGVcclxuICAgICAgICB9KTtcclxuICAgICAgICBkYW5nZXJzLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5hbHlzaXNEYW5nZXJbaV0uZGFuZ2Vycy5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB4LmRhbmdlcklkID09PSBkLmRhbmdlcklkO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiB0aGlzLmFuYWx5c2lzRGFuZ2VyW2ldLmlkID09PSBkLmFuYWx5c2lzSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hbmFseXNpc0RhbmdlcltpXS5kYW5nZXJzLnB1c2goZCk7XHJcbiAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYW5hbHlzaXNEYW5nZXJbaV0uY2hpbGROdW1iZXIgPSBjb3VudDtcclxuICAgICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyW2ldLnJlbWFpbiA9IGNvdW50IC0gdGhpcy5zaG93O1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBlZGl0RGFuZ2VyKGl0ZW0pIHtcclxuICAgIHRoaXMuZGFuZ2VyQWN0aW9uID0ge1xyXG4gICAgICB0eXBlOiBBY3Rpb25UeXBlLmVkaXQsXHJcbiAgICAgIGRhbmdlcjoge1xyXG4gICAgICAgIGFuYWx5c2lzSWQ6IDAsXHJcbiAgICAgICAgYW5hbHlzaXNOYW1lOiAnJyxcclxuICAgICAgICBkYW5nZXJJZDogMCxcclxuICAgICAgICBkYW5nZXJOYW1lOiAnJyxcclxuICAgICAgICBncmVlbjogMCxcclxuICAgICAgICB5ZWxsb3c6IDAsXHJcbiAgICAgICAgcmVkOiAwXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSB7IC4uLnRoaXMuZGFuZ2VyQWN0aW9uLCAuLi5pdGVtIH07XHJcbiAgICB0aGlzLnVwZGF0ZURhdGEuZW1pdChkYXRhKTtcclxuXHJcbiAgfVxyXG5cclxuICByZW1vdmVEYW5nZXIoaWQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFuYWx5c2lzRGFuZ2VyLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCByZW1vdmVkSXRlbSA9IHRoaXMuYW5hbHlzaXNEYW5nZXJbaW5kZXhdO1xyXG5cclxuICAgIHRoaXMuZGFuZ2VyQWN0aW9uID0ge1xyXG4gICAgICB0eXBlOiBBY3Rpb25UeXBlLmRlbGV0ZSxcclxuICAgICAgZGFuZ2VyOiB7XHJcbiAgICAgICAgYW5hbHlzaXNJZDogMCxcclxuICAgICAgICBhbmFseXNpc05hbWU6ICcnLFxyXG4gICAgICAgIGRhbmdlcklkOiAwLFxyXG4gICAgICAgIGRhbmdlck5hbWU6ICcnLFxyXG4gICAgICAgIGdyZWVuOiAwLFxyXG4gICAgICAgIHllbGxvdzogMCxcclxuICAgICAgICByZWQ6IDBcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmRhbmdlckFjdGlvbiwgLi4ucmVtb3ZlZEl0ZW0gfTtcclxuICAgIHRoaXMudXBkYXRlRGF0YS5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGFuZ2VyRGV0YWlsKGRhbmdlcjogRGFuZ2VyKSB7XHJcbiAgICB0aGlzLmRhbmdlckFjdGlvbiA9IHtcclxuICAgICAgdHlwZTogQWN0aW9uVHlwZS5kZXRhaWwsXHJcbiAgICAgIGRhbmdlcjoge1xyXG4gICAgICAgIGFuYWx5c2lzSWQ6IDAsXHJcbiAgICAgICAgYW5hbHlzaXNOYW1lOiAnJyxcclxuICAgICAgICBkYW5nZXJJZDogMCxcclxuICAgICAgICBkYW5nZXJOYW1lOiAnJyxcclxuICAgICAgICBncmVlbjogMCxcclxuICAgICAgICB5ZWxsb3c6IDAsXHJcbiAgICAgICAgcmVkOiAwXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmRhbmdlckFjdGlvbiwgLi4uZGFuZ2VyIH07XHJcbiAgICB0aGlzLnVwZGF0ZURhdGEuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIGluY3JlYXNlU2hvdyhpZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5hbHlzaXNEYW5nZXIuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICB9KTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuYW5hbHlzaXNEYW5nZXJbaW5kZXhdLnNob3cgPSB0aGlzLmFuYWx5c2lzRGFuZ2VyW2luZGV4XS5jaGlsZE51bWJlcjtcclxuICAgICAgdGhpcy5hbmFseXNpc0RhbmdlcltpbmRleF0ucmVtYWluID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9yaXNrL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFNM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0MsTUFBTSxPQUFPLGlCQUFpQjtJQWtCNUIsWUFDUyxTQUFrQyxFQUNqQyxNQUFpQjtRQURsQixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBaEIzQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixtQkFBYyxHQUE0QixFQUFFLENBQUM7UUFFN0MsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUlULGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzFCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQU9sRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCOztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlB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QUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsR0FBRyxFQUFFLENBQUM7YUFDUDtTQUNGLENBQUM7UUFDRixNQUFNLElBQUksbUNBQVEsSUFBSSxDQUFDLFlBQVksR0FBSyxNQUFNLENBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUFDLEVBQVU7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxZQUFZO0lBRVosQ0FBQzs7O1lBMUtGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsZzNFQUFvQzs7YUFFckM7OztZQWRRLHVCQUF1QjtZQUR2QixTQUFTOzs7bUJBK0JmLEtBQUs7eUJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9jb21tb24vYWN0aW9uLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBEYW5nZXJBY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWwvZGFuZ2VyLWFjdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEYW5nZXJBc3Nlc3NtZW50IH0gZnJvbSBcIi4uLy4uL21vZGVsL2Rhbmdlci1hc3Nlc3NtZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IERhbmdlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9kYW5nZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgUmlza0RhbmdlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9yaXNrLWRhbmdlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL3RyZWUvbW9kZWwvdHJlZS1jb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtcmlzay1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaXNrTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBMQU5HOiBhbnk7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpc05vdEVkaXRlZEl0ZW06IGJvb2xlYW47XHJcbiAgZGFuZ2VyczogQXJyYXk8RGFuZ2VyPiA9IFtdO1xyXG4gIGFuYWx5c2lzRGFuZ2VyOiBBcnJheTxEYW5nZXJBc3Nlc3NtZW50PiA9IFtdO1xyXG4gIGRhbmdlckFjdGlvbjogRGFuZ2VyQWN0aW9uO1xyXG4gIHNob3cgPSA1O1xyXG5cclxuICBkYW5nZXJDb25maWc6IFRyZWVDb25maWc7XHJcblxyXG4gIHJlc3VsdERhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICByaXNrQW5hbHlzaXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogUmlza0RhbmdlcjtcclxuICBAT3V0cHV0KCkgdXBkYXRlRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRhdGEucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5kYW5nZXJzID0gW107XHJcbiAgICAgIHRoaXMudGl0bGUgPSBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlLnRpdGxlO1xyXG4gICAgICB0aGlzLmlzTm90RWRpdGVkSXRlbSA9IGNoYW5nZXMuZGF0YS5jdXJyZW50VmFsdWVbJ2lzTm90RWRpdGVkSXRlbSddID8/IGZhbHNlO1xyXG4gICAgICB0aGlzLmRhbmdlcnMgPSBbLi4uY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZS5kYXRhXTtcclxuICAgICAgdGhpcy5zaG93ID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZT8ubnVtUm93IHx8IDU7XHJcblxyXG4gICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyID0gW107XHJcbiAgICAgIHRoaXMuZ3JvdXBCeURhbmdlcihjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlLmRhdGEsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5kYXRhPy50aXRsZSB8fCAnJztcclxuICAgIHRoaXMuaXNOb3RFZGl0ZWRJdGVtID0gdGhpcy5kYXRhWydpc05vdEVkaXRlZEl0ZW0nXSA/PyBmYWxzZTtcclxuICAgIHRoaXMuZGFuZ2VycyA9IHRoaXMuZGF0YT8uZGF0YSB8fCBbXTtcclxuICAgIHRoaXMuc2hvdyA9IHRoaXMuZGF0YT8ubnVtUm93IHx8IDU7XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmRhbmdlcnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBCeURhbmdlcih0aGlzLmRhbmdlcnMsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBncm91cEJ5RGFuZ2VyKGRhbmdlcnM6IEFycmF5PERhbmdlcj4sIGk6IG51bWJlcikge1xyXG4gICAgZGFuZ2Vycy5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5hbHlzaXNEYW5nZXIuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgIHJldHVybiBkLmFuYWx5c2lzSWQgPT09IHguaWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyLnB1c2goe1xyXG4gICAgICAgICAgaWQ6IGQuYW5hbHlzaXNJZCxcclxuICAgICAgICAgIG5hbWU6IGQuYW5hbHlzaXNOYW1lLFxyXG4gICAgICAgICAgY2hpbGROdW1iZXI6IDAsXHJcbiAgICAgICAgICBzaG93OiB0aGlzLnNob3csXHJcbiAgICAgICAgICByZW1haW46IDAsXHJcbiAgICAgICAgICBkYW5nZXJzOiBbXSxcclxuICAgICAgICAgIGZvbGRlcklkOiBkLmZvbGRlcklkLFxyXG4gICAgICAgICAgc3RhdHVzSWQ6IGQuc3RhdHVzSWQsXHJcbiAgICAgICAgICBzaW1wbGU6IGQuc2ltcGxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGFuZ2Vycy5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuYWx5c2lzRGFuZ2VyW2ldLmRhbmdlcnMuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geC5kYW5nZXJJZCA9PT0gZC5kYW5nZXJJZDtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgdGhpcy5hbmFseXNpc0RhbmdlcltpXS5pZCA9PT0gZC5hbmFseXNpc0lkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5hbHlzaXNEYW5nZXJbaV0uZGFuZ2Vycy5wdXNoKGQpO1xyXG4gICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyW2ldLmNoaWxkTnVtYmVyID0gY291bnQ7XHJcbiAgICAgICAgdGhpcy5hbmFseXNpc0RhbmdlcltpXS5yZW1haW4gPSBjb3VudCAtIHRoaXMuc2hvdztcclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZWRpdERhbmdlcihpdGVtKSB7XHJcbiAgICB0aGlzLmRhbmdlckFjdGlvbiA9IHtcclxuICAgICAgdHlwZTogQWN0aW9uVHlwZS5lZGl0LFxyXG4gICAgICBkYW5nZXI6IHtcclxuICAgICAgICBhbmFseXNpc0lkOiAwLFxyXG4gICAgICAgIGFuYWx5c2lzTmFtZTogJycsXHJcbiAgICAgICAgZGFuZ2VySWQ6IDAsXHJcbiAgICAgICAgZGFuZ2VyTmFtZTogJycsXHJcbiAgICAgICAgZ3JlZW46IDAsXHJcbiAgICAgICAgeWVsbG93OiAwLFxyXG4gICAgICAgIHJlZDogMFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmRhbmdlckFjdGlvbiwgLi4uaXRlbSB9O1xyXG4gICAgdGhpcy51cGRhdGVEYXRhLmVtaXQoZGF0YSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRGFuZ2VyKGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmFseXNpc0Rhbmdlci5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgIHJldHVybiB4LmlkID09PSBpZDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcmVtb3ZlZEl0ZW0gPSB0aGlzLmFuYWx5c2lzRGFuZ2VyW2luZGV4XTtcclxuXHJcbiAgICB0aGlzLmRhbmdlckFjdGlvbiA9IHtcclxuICAgICAgdHlwZTogQWN0aW9uVHlwZS5kZWxldGUsXHJcbiAgICAgIGRhbmdlcjoge1xyXG4gICAgICAgIGFuYWx5c2lzSWQ6IDAsXHJcbiAgICAgICAgYW5hbHlzaXNOYW1lOiAnJyxcclxuICAgICAgICBkYW5nZXJJZDogMCxcclxuICAgICAgICBkYW5nZXJOYW1lOiAnJyxcclxuICAgICAgICBncmVlbjogMCxcclxuICAgICAgICB5ZWxsb3c6IDAsXHJcbiAgICAgICAgcmVkOiAwXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IHsgLi4udGhpcy5kYW5nZXJBY3Rpb24sIC4uLnJlbW92ZWRJdGVtIH07XHJcbiAgICB0aGlzLnVwZGF0ZURhdGEuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIGRhbmdlckRldGFpbChkYW5nZXI6IERhbmdlcikge1xyXG4gICAgdGhpcy5kYW5nZXJBY3Rpb24gPSB7XHJcbiAgICAgIHR5cGU6IEFjdGlvblR5cGUuZGV0YWlsLFxyXG4gICAgICBkYW5nZXI6IHtcclxuICAgICAgICBhbmFseXNpc0lkOiAwLFxyXG4gICAgICAgIGFuYWx5c2lzTmFtZTogJycsXHJcbiAgICAgICAgZGFuZ2VySWQ6IDAsXHJcbiAgICAgICAgZGFuZ2VyTmFtZTogJycsXHJcbiAgICAgICAgZ3JlZW46IDAsXHJcbiAgICAgICAgeWVsbG93OiAwLFxyXG4gICAgICAgIHJlZDogMFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZGF0YSA9IHsgLi4udGhpcy5kYW5nZXJBY3Rpb24sIC4uLmRhbmdlciB9O1xyXG4gICAgdGhpcy51cGRhdGVEYXRhLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBpbmNyZWFzZVNob3coaWQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFuYWx5c2lzRGFuZ2VyLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLmFuYWx5c2lzRGFuZ2VyW2luZGV4XS5zaG93ID0gdGhpcy5hbmFseXNpc0RhbmdlcltpbmRleF0uY2hpbGROdW1iZXI7XHJcbiAgICAgIHRoaXMuYW5hbHlzaXNEYW5nZXJbaW5kZXhdLnJlbWFpbiA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlQ2xpY2soKTogdm9pZCB7XHJcblxyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import { Component, Inject } from "@angular/core";
|
2
2
|
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
|
3
|
+
import { Subject } from "rxjs";
|
4
|
+
import { takeUntil } from "rxjs/operators";
|
3
5
|
import { TranslateLibraryService } from "../../../../services/translation-registry.service";
|
4
6
|
import { Color } from "../../common/color.enum";
|
5
7
|
import { RiskResult } from "../../model/risk-result.model";
|
@@ -11,17 +13,22 @@ export class RiskResultComponent {
|
|
11
13
|
this.results = [];
|
12
14
|
this.color = Color;
|
13
15
|
this.isSimple = 0;
|
16
|
+
this.ngUnsubscribe = new Subject();
|
14
17
|
this.title = data.title;
|
15
18
|
this.results = data.results;
|
16
19
|
this.isSimple = data.isSimple || 0;
|
17
20
|
}
|
18
21
|
ngOnInit() {
|
19
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
22
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
|
20
23
|
if (res) {
|
21
24
|
this.LANG = this.translate.getObjectLang(res);
|
22
25
|
}
|
23
26
|
});
|
24
27
|
}
|
28
|
+
ngOnDestroy() {
|
29
|
+
this.ngUnsubscribe.next();
|
30
|
+
this.ngUnsubscribe.complete();
|
31
|
+
}
|
25
32
|
onCloseClick() {
|
26
33
|
this.dialogRef.close();
|
27
34
|
}
|
@@ -38,4 +45,4 @@ RiskResultComponent.ctorParameters = () => [
|
|
38
45
|
{ type: MatDialogRef },
|
39
46
|
{ type: RiskResult, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
40
47
|
];
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWxhdGVkL3Jpc2svcmVzdWx0L3Jlc3VsdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBT25FLE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFDUyxTQUFrQyxFQUNsQyxTQUE0QyxFQUNuQixJQUFnQjtRQUZ6QyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBUmxELFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBQzVCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBT2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2RixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7O1lBdENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixpdkRBQXNDOzthQUV2Qzs7O1lBUlEsdUJBQXVCO1lBSHZCLFlBQVk7WUFLSixVQUFVLHVCQWtCdEIsTUFBTSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gXCIuLi8uLi9jb21tb24vY29sb3IuZW51bVwiO1xyXG5pbXBvcnQgeyBSZXN1bHQsIFJpc2tSZXN1bHQgfSBmcm9tIFwiLi4vLi4vbW9kZWwvcmlzay1yZXN1bHQubW9kZWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXJpc2stcmVzdWx0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN1bHQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmlza1Jlc3VsdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgTEFORzogYW55O1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcmVzdWx0czogQXJyYXk8UmVzdWx0PiA9IFtdO1xyXG4gIGNvbG9yID0gQ29sb3I7XHJcbiAgaXNTaW1wbGUgPSAwO1xyXG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFJpc2tSZXN1bHRDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBSaXNrUmVzdWx0XHJcbiAgKSB7XHJcbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcclxuICAgIHRoaXMucmVzdWx0cyA9IGRhdGEucmVzdWx0cztcclxuICAgIHRoaXMuaXNTaW1wbGUgPSBkYXRhLmlzU2ltcGxlIHx8IDA7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -1,16 +1,23 @@
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
2
4
|
import { TranslateLibraryService } from './../../../services/translation-registry.service';
|
3
5
|
export class QmsReportContentPortraitComponent {
|
4
6
|
constructor(translate) {
|
5
7
|
this.translate = translate;
|
8
|
+
this.ngUnsubscribe = new Subject();
|
6
9
|
}
|
7
10
|
ngOnInit() {
|
8
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
11
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
|
9
12
|
if (res) {
|
10
13
|
this.LANG = this.translate.getObjectLang(res);
|
11
14
|
}
|
12
15
|
});
|
13
16
|
}
|
17
|
+
ngOnDestroy() {
|
18
|
+
this.ngUnsubscribe.next();
|
19
|
+
this.ngUnsubscribe.complete();
|
20
|
+
}
|
14
21
|
}
|
15
22
|
QmsReportContentPortraitComponent.decorators = [
|
16
23
|
{ type: Component, args: [{
|
@@ -28,4 +35,4 @@ QmsReportContentPortraitComponent.propDecorators = {
|
|
28
35
|
infoReport: [{ type: Input }],
|
29
36
|
logo: [{ type: Input }]
|
30
37
|
};
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLXJlcG9ydC1jb250ZW50LXBvcnRyYWl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL3Ftcy1yZXBvcnQtY29udGVudC1wb3J0cmFpdC9xbXMtcmVwb3J0LWNvbnRlbnQtcG9ydHJhaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBTzNGLE1BQU0sT0FBTyxpQ0FBaUM7SUFRNUMsWUFBbUIsU0FBa0M7UUFBbEMsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFGckQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXFCLENBQUM7SUFFMUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2RixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzs7WUExQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLHNtQkFBMkQ7O2FBRTVEOzs7WUFOUSx1QkFBdUI7Ozt1QkFRN0IsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7bUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb3JtYXRpb25Db3Zlckl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaW5mb3JtYXRpb24tY292ZXItaXRlbS1tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXJlcG9ydC1jb250ZW50LXBvcnRyYWl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLXJlcG9ydC1jb250ZW50LXBvcnRyYWl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtcmVwb3J0LWNvbnRlbnQtcG9ydHJhaXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUW1zUmVwb3J0Q29udGVudFBvcnRyYWl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBjdXJyUGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHRvdGFsUGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGluZm9SZXBvcnQ6IEluZm9ybWF0aW9uQ292ZXJJdGVtW107XHJcbiAgQElucHV0KCkgbG9nbzogc3RyaW5nO1xyXG4gIExBTkc6IGFueTtcclxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
@@ -1,18 +1,23 @@
|
|
1
1
|
import { Component, Input, Renderer2, ViewChild } from '@angular/core';
|
2
2
|
import { TranslateLibraryService } from './../../../services/translation-registry.service';
|
3
|
+
import { Subject } from 'rxjs';
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
3
5
|
export class QmsReportCoverPortraitComponent {
|
4
6
|
constructor(translate, renderer) {
|
5
7
|
this.translate = translate;
|
6
8
|
this.renderer = renderer;
|
9
|
+
this.ngUnsubscribe = new Subject();
|
7
10
|
}
|
8
11
|
ngOnInit() {
|
9
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
12
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
|
10
13
|
if (res) {
|
11
14
|
this.LANG = this.translate.getObjectLang(res);
|
12
15
|
}
|
13
16
|
});
|
14
17
|
}
|
15
|
-
|
18
|
+
ngOnDestroy() {
|
19
|
+
this.ngUnsubscribe.next();
|
20
|
+
this.ngUnsubscribe.complete();
|
16
21
|
}
|
17
22
|
}
|
18
23
|
QmsReportCoverPortraitComponent.decorators = [
|
@@ -32,4 +37,4 @@ QmsReportCoverPortraitComponent.propDecorators = {
|
|
32
37
|
title: [{ type: Input }],
|
33
38
|
contentTitle: [{ type: ViewChild, args: ['contentTitle',] }]
|
34
39
|
};
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLXJlcG9ydC1jb3Zlci1wb3J0cmFpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9xbXMtcmVwb3J0LWNvdmVyLXBvcnRyYWl0L3Ftcy1yZXBvcnQtY292ZXItcG9ydHJhaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzNDLE1BQU0sT0FBTywrQkFBK0I7SUFTMUMsWUFBbUIsU0FBa0MsRUFBVSxRQUFtQjtRQUEvRCxjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGbEYsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBR3BDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZGLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0M7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OztZQTVCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsa3ZCQUF5RDs7YUFFMUQ7OztZQVJRLHVCQUF1QjtZQUQ4QixTQUFTOzs7eUJBV3BFLEtBQUs7eUJBQ0wsS0FBSztvQkFDTCxLQUFLOzJCQUNMLFNBQVMsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5mb3JtYXRpb25Db3Zlckl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaW5mb3JtYXRpb24tY292ZXItaXRlbS1tb2RlbCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXJlcG9ydC1jb3Zlci1wb3J0cmFpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1yZXBvcnQtY292ZXItcG9ydHJhaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Ftcy1yZXBvcnQtY292ZXItcG9ydHJhaXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUW1zUmVwb3J0Q292ZXJQb3J0cmFpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaW5mb1JlcG9ydDogSW5mb3JtYXRpb25Db3Zlckl0ZW1bXTtcclxuICBASW5wdXQoKSBtb2R1bGVOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCdjb250ZW50VGl0bGUnKSBjb250ZW50VGl0bGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
@@ -99,7 +99,7 @@ export class QMSSelectAccessDialogComponent {
|
|
99
99
|
this.cdRef.detectChanges();
|
100
100
|
}
|
101
101
|
ngOnInit() {
|
102
|
-
this.translate.getLanguageSubject$.pipe().subscribe((res) => {
|
102
|
+
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
|
103
103
|
if (res) {
|
104
104
|
this.LANG = this.translate.getObjectLang(res);
|
105
105
|
}
|
@@ -516,4 +516,4 @@ QMSSelectAccessDialogComponent.propDecorators = {
|
|
516
516
|
pagingUserGroup: [{ type: ViewChild, args: ['pagingUserGroup',] }]
|
517
517
|
};
|
518
518
|
export { ɵ0 };
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUE4QixvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRy9GLE9BQU8sRUFBRSxxQkFB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QUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHdCQUF3QixDQUFDLG1CQUFzQyxFQUFFLEVBQUUsa0JBQW1DLEVBQUU7UUFDdEcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFjO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQzs7O1lBMWhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsMC9wQkFBb0Q7Z0JBRXBELFVBQVUsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2dCQUMxQyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLDRCQUE0Qjt3QkFDckMsUUFBUSxJQUVzQjtxQkFDL0I7aUJBQ0Y7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFsQ1EsWUFBWTtZQWtCWixxQkFBcUIsdUJBcUd6QixNQUFNLFNBQUMsZUFBZTtZQS9HbEIsdUJBQXVCO1lBVnZCLFdBQVc7WUFEc0IsaUJBQWlCOzs7bUJBMkV4RCxTQUFTLFNBQUMsTUFBTSxFQUFFO29CQUNqQixJQUFJLEVBQUUsNkJBQTZCO2lCQUNwQzsyQkFJQSxTQUFTLFNBQUMsY0FBYzs4QkFDeEIsU0FBUyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hEZWZhdWx0T3B0aW9ucywgTUFUX0NIRUNLQk9YX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy10cmVlLW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25TaXplLCBRTVNQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGVDaGFuZ2UsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCwgUU1TU2VsZWN0RGVwYXJ0bWVudFRyZWVDb25maWcgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcclxuaW1wb3J0IHsgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0QWNjZXNzQW5pbWF0aW9uVHJpZ2dlciB9IGZyb20gJy4vY29tbW9uL2FuaW1hdGlvbic7XHJcbmltcG9ydCB7IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0gfSBmcm9tICcuL2NvbW1vbi9vcHRpb24tc2VsZWN0LWFjY2Vzcy5lbnVtJztcclxuaW1wb3J0IHsgUU1TQWNjZXNzSXRlbSB9IGZyb20gJy4vbW9kZWwvYWNjZXNzLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNBY2Nlc3NQYWdpbmdDaGFuZ2VNb2RlbCwgUU1TQWNjZXNzUGFnaW5nTW9kZWwgfSBmcm9tICcuL21vZGVsL2FjY2Vzcy1wYWdpbmcubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJQZXJzb25Nb2RlbCB9IGZyb20gJy4vbW9kZWwvZmlsdGVyLXBlcnNvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9wdGlvblNlbGVjdEFjY2Vzc01vZGVsIH0gZnJvbSAnLi9tb2RlbC9vcHRpb24tc2VsZWN0LWFjY2Vzcy5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdEFjY2Vzc0RpYWxvZyB9IGZyb20gJy4vbW9kZWwvc2VsZWN0LWFjY2Vzcy1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1hY2Nlc3MtZGF0YSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXNlbGVjdC1hY2Nlc3MtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1NlbGVjdEFjY2Vzc0FuaW1hdGlvblRyaWdnZXJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxyXG4gICAgICB1c2VWYWx1ZToge1xyXG4gICAgICAgIGNsaWNrQWN0aW9uOiAnbm9vcCdcclxuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXHJcbiAgICB9XHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgbmdVbnN1YmNyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBMQU5HOiBhbnk7XHJcbiAgb3B0aW9uU2VsZWN0ID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgT1BUSU9OX0VOVU0gPSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtO1xyXG4gIG9wdGlvbnM6IE9wdGlvblNlbGVjdEFjY2Vzc01vZGVsW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVwYXJ0bWVudFNlbGVjdGVkOiBRTVNUcmVlTm9kZVtdID0gW107XHJcbiAgZ2V0IHNlbGVjdGVkRGVwYXJ0bWVudHMoKSB7XHJcbiAgICBjb25zdCBkZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU1RyZWVOb2RlW10gPSBbXTtcclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICBkZXBhcnRtZW50U2VsZWN0ZWQucHVzaCh7XHJcbiAgICAgICAgaWQ6IHguaWQsXHJcbiAgICAgICAgZ3JvdXBJZDogeC5ncm91cElkLFxyXG4gICAgICAgIGlzR3JvdXA6IHguaXNHcm91cFxyXG4gICAgICB9IGFzIFFNU1RyZWVOb2RlKTtcclxuICAgICAgaWYgKCF4LmNoaWxkcmVuPy5sZW5ndGgpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBkZXBhcnRtZW50U2VsZWN0ZWQucHVzaCguLi4oeC5jaGlsZHJlbi5tYXAoaXRlbSA9PiAoe1xyXG4gICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgIGdyb3VwSWQ6IGl0ZW0uZ3JvdXBJZCxcclxuICAgICAgICBpc0dyb3VwOiBpdGVtLmlzR3JvdXBcclxuICAgICAgfSBhcyBRTVNUcmVlTm9kZSkpKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkZXBhcnRtZW50U2VsZWN0ZWQgfHwgW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGVyc29uRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyB1c2VyR3JvdXBGb3JtID0gbmV3IEZvcm1Db250cm9sKCcnKVxyXG4gIHB1YmxpYyBnZXRMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIG9uU2VhcmNoUGVyc29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlclBlcnNvbk1vZGVsPigpO1xyXG4gIG9uU2VhcmNoUGVyc29uRnJlZVRleHRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvblNlYXJjaFVzZXJHcm91cEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgb25TZWFyY2hEZXBhcnRtZW50RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TQWNjZXNzUGFnaW5nQ2hhbmdlTW9kZWw+KCk7XHJcbiAgb25TZWxlY3RPcHRpb25DaGFuZ2UkID0gbmV3IFN1YmplY3Q8TWF0U2VsZWN0Q2hhbmdlPigpO1xyXG4gIHRyZWVEZXBhcnRtZW50OiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudFxyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnLCB7XHJcbiAgICByZWFkOiBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudFxyXG4gIH0pIHNldCB0cmVlKGRhdGE6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50ID0gZGF0YTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1BlcnNvbicpIHBhZ2luZ1BlcnNvbjogUU1TUGFnaW5hdG9yQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1VzZXJHcm91cCcpIHBhZ2luZ1VzZXJHcm91cDogUU1TUGFnaW5hdG9yQ29tcG9uZW50O1xyXG5cclxuICAvKiogbGlzdCBmaWx0ZXJlZCBieSBzZWFyY2gga2V5d29yZCAqL1xyXG4gIG9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWw6IHtcclxuICAgIGRlcGFydG1lbnRzOiBRTVNGbGF0Tm9kZVRyZWVbXSxcclxuICAgIHVzZXJHcm91cHM6IFFNU0FjY2Vzc0l0ZW1bXVxyXG4gIH0gPSB7XHJcbiAgICAgIGRlcGFydG1lbnRzOiBbXSxcclxuICAgICAgdXNlckdyb3VwczogW11cclxuICAgIH07XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJlZFNlYXJjaFRleHRCb3ggPSB7XHJcbiAgICBkZXBhcnRtZW50OiBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0ZsYXROb2RlVHJlZVtdPihbXSksXHJcbiAgICB1c2VyR3JvdXA6IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TQWNjZXNzSXRlbVtdPihbXSksXHJcbiAgfVxyXG4gIGdldFBlcnNvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XHJcbiAgZ2V0IHBlcnNvbkZpbHRlcmVkKCkge1xyXG4gICAgY29uc3QgcGVyc29ucyA9IHRoaXMuZ2V0UGVyc29uJC52YWx1ZTtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMubWFwKHggPT4geC5pZCk7XHJcbiAgICBwZXJzb25zLmRhdGE/LmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gaWRzLmluY2x1ZGVzKHguaWQpKTtcclxuICAgIHJldHVybiBwZXJzb25zLmRhdGEgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyR3JvdXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPj4obmV3IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KCkpO1xyXG4gIGdldCB1c2VyR3JvdXBGaWx0ZXJlZCgpIHtcclxuICAgIGNvbnN0IHVzZXJHcm91cHMgPSB0aGlzLmdldFVzZXJHcm91cCQudmFsdWU7XHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgdXNlckdyb3Vwcy5kYXRhPy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IGlkcy5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICByZXR1cm4gdXNlckdyb3Vwcy5kYXRhIHx8IFtdO1xyXG4gIH07XHJcblxyXG4gIFBBR0lOQVRJT05fU0laRSA9IFBhZ2luYXRpb25TaXplO1xyXG4gIFBBR0VfU0laRV9PUFRJT046IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMjAsIDI1LCAxMDBdO1xyXG4gIHJlc3VsdEFjY2VzcyA9IG5ldyBRTVNTZWxlY3RBY2Nlc3NSZXN1bHQoKTtcclxuICBhcnJTa2VsZXRvbiA9IG5ldyBBcnJheSg4KS5maWxsKDApO1xyXG4gIC8vcHJldmVudCBldmVudCBwYWdpbmcgd2hlbiBzZWFyY2ggZW1pdCBzZWFyY2ggZXZlbnRcclxuICBnZXRTZWFyY2hpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNTZWxlY3RBY2Nlc3NEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBRTVNTZWxlY3RBY2Nlc3NEaWFsb2csXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9pbml0UmVzdWx0QWNjZXNzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2J1aWxkT3B0aW9uU2VsZWN0KCk7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVpbGRPcHRpb25TZWxlY3QoKSB7XHJcbiAgICBjb25zdCBvcHRpb25PYmogPSB7XHJcbiAgICAgIGVuYWJsZVNlbGVjdERlcGFydG1lbnQ6IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ0RFUEFSVE1FTlQnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuT1BUSU9OX0VOVU0uREVQQVJUTUVOVFxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVTZWxlY3RQZXJzb246IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ1BFUlNPTicsXHJcbiAgICAgICAgdHlwZTogdGhpcy5PUFRJT05fRU5VTS5QRVJTT05cclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0VXNlckdyb3VwOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdVU0VSX0dST1VQJyxcclxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaXRlbSBpbiB0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgaWYgKCEhdGhpcy5kaWFsb2dEYXRhW2l0ZW1dICYmIG9wdGlvbk9ialtpdGVtXSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbk9ialtpdGVtXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xyXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnNbMF0udHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UmVzdWx0QWNjZXNzKCkge1xyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MgPSBfLmNsb25lRGVlcCh7XHJcbiAgICAgIC4uLnRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YSxcclxuICAgICAgZGVwYXJ0bWVudHM6IFtdXHJcbiAgICB9IGFzIFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCk7XHJcbiAgICAvLyBpbml0IGdyb3VwIHNlbGVjdGVkIGRlcGFydG1lbnRcclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZCA9IF8uY2xvbmVEZWVwKHRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YS5kZXBhcnRtZW50cyk7XHJcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKHggPT4geC5pc0dyb3VwKSB8fCBbXTtcclxuICAgIGNvbnN0IHNpbmdsZUl0ZW0gPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKHggPT4gIXguaXNHcm91cCAmJiAheC5ncm91cElkKTtcclxuICAgIGdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5ncm91cElkID09IGdyb3VwLmlkKTtcclxuICAgICAgZ3JvdXAuY2hpbGRyZW4gPSBjaGlsZDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBbLi4uZ3JvdXBzLCAuLi5zaW5nbGVJdGVtXVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uUGVyc29uQ2hhbmdlKCkge1xyXG4gICAgLy8gRmlsdGVyIHBlcnNvbiBieSByb2xlc1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtLmdldCgndXNlckdyb3VwRmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSksIGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKGtleXdvcmQgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgha2V5d29yZCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQodGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHRGaWx0ZXIgPSB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5maWx0ZXIodXNlckdyb3VwID0+IHVzZXJHcm91cC5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQocmVzdWx0RmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICAvLyBGaWx0ZXIgcGVyc29uIGJ5IGRlcGFydG1lbnRzXHJcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWFyY2ggPSB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWU7XHJcbiAgICAgICAgaWYgKCFzZWFyY2gpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMuc2xpY2UoKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dChcclxuICAgICAgICAgIHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5maWx0ZXIoeCA9PiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMSlcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlc3VsdFRhYkFjdGl2ZSgpIHtcclxuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHtcclxuICAgICAgMDogdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyxcclxuICAgICAgMTogdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyxcclxuICAgICAgMjogdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHNcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRPYmpbdGhpcy5vcHRpb25TZWxlY3QudmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrRXhpc3RPcHRpb25TZWxlY3Qob3B0aW9uOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gb3B0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQZXJzb25Gb3JtKCkge1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICB1c2VyR3JvdXA6IFtdLFxyXG4gICAgICBkZXBhcnRtZW50OiBbXSxcclxuICAgICAgZGVwYXJ0bWVudEZpbHRlcjogWycnXSxcclxuICAgICAgcmVjdXJzaXZlOiBbe1xyXG4gICAgICAgIHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgfV0sXHJcbiAgICAgIGtleXdvcmQ6IFsnJ10sXHJcbiAgICAgIHVzZXJHcm91cEZpbHRlcjogWycnXSxcclxuICAgICAgZXhjbHVkZWRRdWl0RGVwYXJ0bWVudElkOiBbdHJ1ZV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRmlsdGVyUGVyc29uKCkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5wZXJzb25Gb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBmaWx0ZXJEYXRhOiBGaWx0ZXJQZXJzb25Nb2RlbCA9IHtcclxuICAgICAgZGVwYXJ0bWVudElkOiBmb3JtVmFsdWUuZGVwYXJ0bWVudD8uaWQsXHJcbiAgICAgIHVzZXJHcm91cElkOiBmb3JtVmFsdWUudXNlckdyb3VwPy5pZCxcclxuICAgICAga2V5d29yZDogZm9ybVZhbHVlLmtleXdvcmQsXHJcbiAgICAgIHJlY3Vyc2l2ZTogZm9ybVZhbHVlLnJlY3Vyc2l2ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcclxuICAgIHRoaXMub25TZWFyY2hQZXJzb25FdmVudC5lbWl0KGZpbHRlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRQYWdpbmdhdG9yKHBhZ2luYXRvcjogUU1TUGFnaW5hdG9yQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIXBhZ2luYXRvcilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgcGFnaW5hdG9yLmNoYW5nZVBhZ2UoMCk7XHJcbiAgICBwYWdpbmF0b3IucmVuZGVyRGlzcGxheU51bWJlck9mcGFnZXMoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoUGVyc29uRnJlZVRleHQoKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuX3Jlc2V0UGFnaW5nYXRvcih0aGlzLnBhZ2luZ1BlcnNvbik7XHJcbiAgICB0aGlzLm9uU2VhcmNoUGVyc29uRnJlZVRleHRFdmVudC5lbWl0KHRoaXMucGVyc29uRm9ybS5nZXQoJ2tleXdvcmQnKS52YWx1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdQZXJzb24pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJVc2VyR3JvdXAoKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuX3Jlc2V0UGFnaW5nYXRvcih0aGlzLnBhZ2luZ1VzZXJHcm91cCk7XHJcbiAgICB0aGlzLm9uU2VhcmNoVXNlckdyb3VwRXZlbnQuZW1pdCh0aGlzLnVzZXJHcm91cEZvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RJdGVtKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sIGl0ZW06IFFNU0FjY2Vzc0l0ZW0pIHtcclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBpdGVtLnNlbGVjdGVkID8gW2l0ZW1dIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudXNlckdyb3VwRmlsdGVyZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNoaXAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbSwgaW5kZXgpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wZXJzb25GaWx0ZXJlZFtpbmRleF0pIHtcclxuICAgICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlckdyb3VwRmlsdGVyZWRbaW5kZXhdKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcnNvbkZvcm0oKTtcclxuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLnNlbGVjdGVkTGlzdCA9IHRoaXMuc2VsZWN0ZWREZXBhcnRtZW50cztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUodGhpcy5kaWFsb2dEYXRhLnNpemVVcGRhdGVEZWZhdWx0KTtcclxuICAgIHRoaXMub25TZWxlY3RPcHRpb25DaGFuZ2UkLm5leHQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbFZhbHVlKGZvcm1Db250cm9sTmFtZXM6IHN0cmluZ1tdLCB2YWx1ZXMpIHtcclxuICAgIGZvcm1Db250cm9sTmFtZXMuZm9yRWFjaCgoY29udHJvbE5hbWUsIF9pbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uc2V0VmFsdWUodmFsdWVzW19pbmRleF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGlzQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbiAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmV2ZXJ5KHggPT4geC5zZWxlY3RlZCk7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQOlxyXG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXAgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSW5kZXRlcm1pbmF0ZSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy5wZXJzb25GaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgJGV2ZW50KSB7XHJcbiAgICAkZXZlbnQuY2hlY2tlZCA9ICEkZXZlbnQuY2hlY2tlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uKSB7XHJcbiAgICAgICAgICAkZXZlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMucGVyc29uRmlsdGVyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWQuZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSAkZXZlbnQuY2hlY2tlZCk7XHJcbiAgICAgICAgY29uc3QgaWRGaWx0ZXJlZCA9IHRoaXMucGVyc29uRmlsdGVyZWQubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFBlcnNvblNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucywgLi4udGhpcy5wZXJzb25GaWx0ZXJlZC5maWx0ZXIoeCA9PiAhaWRQZXJzb25TZWxlY3RlZC5pbmNsdWRlcyh4LmlkKSldO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5maWx0ZXIoeCA9PiAhaWRGaWx0ZXJlZC5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6IHtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXApIHtcclxuICAgICAgICAgICRldmVudC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXJHcm91cFBhZ2luZyA9IHRoaXMudXNlckdyb3VwRmlsdGVyZWQ7XHJcbiAgICAgICAgdXNlckdyb3VwUGFnaW5nLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB1c2VyR3JvdXBQYWdpbmcubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgLi4udXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+ICFpZFNlbGVjdGVkLmluY2x1ZGVzKHguaWQpKV07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbHRlcih4ID0+ICFpZEZpbHRlcmVkLmluY2x1ZGVzKHguaWQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uTm9kZURlcGFydG1lbnRDaGFuZ2UoeyBhZGRlZCwgcmVtb3ZlZCwgdXBkYXRlZCB9OiBJU2VsZWN0aW9uTm9kZUNoYW5nZTxRTVNUcmVlTm9kZT4pIHtcclxuICAgIGlmIChhZGRlZC5sZW5ndGgpIHtcclxuICAgICAgYWRkZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc29tZSh4ID0+IHguaWQgPT09IGl0ZW0uaWQpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlbW92ZWQubGVuZ3RoKSB7XHJcbiAgICAgIHJlbW92ZWQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHguaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA8IDApXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodXBkYXRlZC5sZW5ndGgpIHtcclxuICAgICAgdXBkYXRlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSB4LmlkKTtcclxuICAgICAgICBpZiAoaW5kZXggPCAwKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGRlcGFybWVudCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xyXG4gICAgICAgIGlmICghIWRlcGFybWVudClcclxuICAgICAgICAgIGRlcGFybWVudC5jaGlsZHJlbiA9IHguY2hpbGRyZW47XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblNjb2xsVG9Ob2RlVHJlZURlcGFydG1lbnQobm9kZTogUU1TVHJlZU5vZGUpIHtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0LnZhbHVlID09PSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC5zY3JvbGxUb05vZGUobm9kZS5pZClcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGVyc29uRmlsdGVyKGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KSB7XHJcbiAgICB0aGlzLmdldFBlcnNvbiQubmV4dChkYXRhKTtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2VyR3JvdXBGaWx0ZXIoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4pIHtcclxuICAgIHRoaXMuZ2V0VXNlckdyb3VwJC5uZXh0KGRhdGEpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uUGFnaW5hdG9yRXZlbnQodmFsOiBQYWdlRXZlbnQsIHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIGlmICh0aGlzLmdldFNlYXJjaGluZyQudmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSAhPT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UKTtcclxuICAgIHRoaXMub25QYWdpbmdFdmVudC5lbWl0KHtcclxuICAgICAgLi4udmFsLFxyXG4gICAgICB0eXBlOiB0eXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShldmVudDogUU1TVHJlZU5vZGVbXSkge1xyXG4gICAgLy8gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaERlcGFydG1lbnQoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPiA9IG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+KCkpIHtcclxuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZGF0YSA9IGRhdGEgYXMgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT47XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVG9vdGlwKG5vZGU6IGFueSkge1xyXG4gICAgcmV0dXJuIChub2RlPy5pc0dyb3VwKSA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMuTEFORy5UT09MVElQX0lOQ0xVREVfU1VCX0RFUEFSVE1FTlQsIG5vZGUubmFtZSwgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoLnRvU3RyaW5nKCkpIDogKGAke25vZGUubmFtZX0gJHtub2RlPy5zdWJOYW1lID8gYC0gKCR7bm9kZS5zdWJOYW1lfSlgIDogJyd9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFN0cmluZyguLi5yZXBsYWNlbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgXFxcXHske2l9XFxcXH1gLCAnZ20nKTtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBoYXNJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5yZXN1bHRBY2Nlc3MpLnNvbWUoa2V5ID0+ICEhdGhpcy5yZXN1bHRBY2Nlc3Nba2V5XT8ubGVuZ3RoKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGVwYXJ0bWVudChkYXRhOiBRTVNUcmVlTm9kZVtdID0gW10pIHtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcudHJlZURhdGEgPSBfLmNsb25lRGVlcChkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU9wdGlvblBlcnNvbkZpbHRlcihkZXBhcnRtZW50RmlsdGVyOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdLCB1c2VyR3JvdXBGaWx0ZXI6IFFNU0FjY2Vzc0l0ZW1bXSA9IFtdKSB7XHJcbiAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMgPSBkZXBhcnRtZW50RmlsdGVyO1xyXG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMgPSB1c2VyR3JvdXBGaWx0ZXI7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC5kZXBhcnRtZW50Lm5leHQoZGVwYXJ0bWVudEZpbHRlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh1c2VyR3JvdXBGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhZ2VTaXplT3B0aW9uKGRhdGE6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLlBBR0VfU0laRV9PUFRJT04gPSBkYXRhO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1hY2Nlc3MtZGlhbG9nL3NlbGVjdC1hY2Nlc3MtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1DLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUE4QixvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRy9GLE9BQU8sRUFBRSxxQkFB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QyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsbUJBQXNDLEVBQUUsRUFBRSxrQkFBbUMsRUFBRTtRQUN0RyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDO1FBQ2pFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQWM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDOzs7WUExaEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQywwL3BCQUFvRDtnQkFFcEQsVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzFDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsNEJBQTRCO3dCQUNyQyxRQUFRLElBRXNCO3FCQUMvQjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQWxDUSxZQUFZO1lBa0JaLHFCQUFxQix1QkFxR3pCLE1BQU0sU0FBQyxlQUFlO1lBL0dsQix1QkFBdUI7WUFWdkIsV0FBVztZQURzQixpQkFBaUI7OzttQkEyRXhELFNBQVMsU0FBQyxNQUFNLEVBQUU7b0JBQ2pCLElBQUksRUFBRSw2QkFBNkI7aUJBQ3BDOzJCQUlBLFNBQVMsU0FBQyxjQUFjOzhCQUN4QixTQUFTLFNBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zLCBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBRTVNGbGF0Tm9kZVRyZWUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1mbGF0LW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNUcmVlTm9kZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLXRyZWUtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFnaW5hdGlvblNpemUsIFFNU1BhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBJU2VsZWN0aW9uTm9kZUNoYW5nZSwgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsLCBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZyB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUnO1xyXG5pbXBvcnQgeyBTZWxlY3REZXBhcnRtZW50VHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1kZXBhcnRtZW50LXRyZWUvc2VsZWN0LWRlcGFydG1lbnQtdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RBY2Nlc3NBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcclxuaW1wb3J0IHsgT3B0aW9uU2VsZWN0QWNjZXNzRW51bSB9IGZyb20gJy4vY29tbW9uL29wdGlvbi1zZWxlY3QtYWNjZXNzLmVudW0nO1xyXG5pbXBvcnQgeyBRTVNBY2Nlc3NJdGVtIH0gZnJvbSAnLi9tb2RlbC9hY2Nlc3MtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0FjY2Vzc1BhZ2luZ0NoYW5nZU1vZGVsLCBRTVNBY2Nlc3NQYWdpbmdNb2RlbCB9IGZyb20gJy4vbW9kZWwvYWNjZXNzLXBhZ2luZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclBlcnNvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbC9maWx0ZXItcGVyc29uLm1vZGVsJztcclxuaW1wb3J0IHsgT3B0aW9uU2VsZWN0QWNjZXNzTW9kZWwgfSBmcm9tICcuL21vZGVsL29wdGlvbi1zZWxlY3QtYWNjZXNzLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TU2VsZWN0QWNjZXNzRGlhbG9nIH0gZnJvbSAnLi9tb2RlbC9zZWxlY3QtYWNjZXNzLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCB9IGZyb20gJy4vbW9kZWwvc2VsZWN0LWFjY2Vzcy1kYXRhJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWFjY2Vzcy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtYWNjZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWFjY2Vzcy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbU2VsZWN0QWNjZXNzQW5pbWF0aW9uVHJpZ2dlcl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMsXHJcbiAgICAgIHVzZVZhbHVlOiB7XHJcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xyXG4gICAgICB9IGFzIE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnNcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU1NlbGVjdEFjY2Vzc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuICBuZ1Vuc3ViY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIExBTkc6IGFueTtcclxuICBvcHRpb25TZWxlY3QgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBPUFRJT05fRU5VTSA9IE9wdGlvblNlbGVjdEFjY2Vzc0VudW07XHJcbiAgb3B0aW9uczogT3B0aW9uU2VsZWN0QWNjZXNzTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9kZXBhcnRtZW50U2VsZWN0ZWQ6IFFNU1RyZWVOb2RlW10gPSBbXTtcclxuICBnZXQgc2VsZWN0ZWREZXBhcnRtZW50cygpIHtcclxuICAgIGNvbnN0IGRlcGFydG1lbnRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkLmZvckVhY2goeCA9PiB7XHJcbiAgICAgIGRlcGFydG1lbnRTZWxlY3RlZC5wdXNoKHtcclxuICAgICAgICBpZDogeC5pZCxcclxuICAgICAgICBncm91cElkOiB4Lmdyb3VwSWQsXHJcbiAgICAgICAgaXNHcm91cDogeC5pc0dyb3VwXHJcbiAgICAgIH0gYXMgUU1TVHJlZU5vZGUpO1xyXG4gICAgICBpZiAoIXguY2hpbGRyZW4/Lmxlbmd0aClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGRlcGFydG1lbnRTZWxlY3RlZC5wdXNoKC4uLih4LmNoaWxkcmVuLm1hcChpdGVtID0+ICh7XHJcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgZ3JvdXBJZDogaXRlbS5ncm91cElkLFxyXG4gICAgICAgIGlzR3JvdXA6IGl0ZW0uaXNHcm91cFxyXG4gICAgICB9IGFzIFFNU1RyZWVOb2RlKSkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRlcGFydG1lbnRTZWxlY3RlZCB8fCBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwZXJzb25Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIHVzZXJHcm91cEZvcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpXHJcbiAgcHVibGljIGdldExvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgb25TZWFyY2hQZXJzb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGVyc29uTW9kZWw+KCk7XHJcbiAgb25TZWFyY2hQZXJzb25GcmVlVGV4dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG9uU2VhcmNoVXNlckdyb3VwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBvblNlYXJjaERlcGFydG1lbnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvblBhZ2luZ0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNBY2Nlc3NQYWdpbmdDaGFuZ2VNb2RlbD4oKTtcclxuICBvblNlbGVjdE9wdGlvbkNoYW5nZSQgPSBuZXcgU3ViamVjdDxNYXRTZWxlY3RDaGFuZ2U+KCk7XHJcbiAgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50XHJcbiAgQFZpZXdDaGlsZCgndHJlZScsIHtcclxuICAgIHJlYWQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50XHJcbiAgfSkgc2V0IHRyZWUoZGF0YTogU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQpIHtcclxuICAgIHRoaXMudHJlZURlcGFydG1lbnQgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nUGVyc29uJykgcGFnaW5nUGVyc29uOiBRTVNQYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nVXNlckdyb3VwJykgcGFnaW5nVXNlckdyb3VwOiBRTVNQYWdpbmF0b3JDb21wb25lbnQ7XHJcblxyXG4gIC8qKiBsaXN0IGZpbHRlcmVkIGJ5IHNlYXJjaCBrZXl3b3JkICovXHJcbiAgb3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbDoge1xyXG4gICAgZGVwYXJ0bWVudHM6IFFNU0ZsYXROb2RlVHJlZVtdLFxyXG4gICAgdXNlckdyb3VwczogUU1TQWNjZXNzSXRlbVtdXHJcbiAgfSA9IHtcclxuICAgICAgZGVwYXJ0bWVudHM6IFtdLFxyXG4gICAgICB1c2VyR3JvdXBzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkU2VhcmNoVGV4dEJveCA9IHtcclxuICAgIGRlcGFydG1lbnQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TRmxhdE5vZGVUcmVlW10+KFtdKSxcclxuICAgIHVzZXJHcm91cDogbmV3IEJlaGF2aW9yU3ViamVjdDxRTVNBY2Nlc3NJdGVtW10+KFtdKSxcclxuICB9XHJcbiAgZ2V0UGVyc29uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4+KG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNBY2Nlc3NJdGVtPigpKTtcclxuICBnZXQgcGVyc29uRmlsdGVyZWQoKSB7XHJcbiAgICBjb25zdCBwZXJzb25zID0gdGhpcy5nZXRQZXJzb24kLnZhbHVlO1xyXG4gICAgY29uc3QgaWRzID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5tYXAoeCA9PiB4LmlkKTtcclxuICAgIHBlcnNvbnMuZGF0YT8uZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSBpZHMuaW5jbHVkZXMoeC5pZCkpO1xyXG4gICAgcmV0dXJuIHBlcnNvbnMuZGF0YSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJHcm91cCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+PihuZXcgUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4oKSk7XHJcbiAgZ2V0IHVzZXJHcm91cEZpbHRlcmVkKCkge1xyXG4gICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3VwJC52YWx1ZTtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMubWFwKHggPT4geC5pZCk7XHJcbiAgICB1c2VyR3JvdXBzLmRhdGE/LmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gaWRzLmluY2x1ZGVzKHguaWQpKTtcclxuICAgIHJldHVybiB1c2VyR3JvdXBzLmRhdGEgfHwgW107XHJcbiAgfTtcclxuXHJcbiAgUEFHSU5BVElPTl9TSVpFID0gUGFnaW5hdGlvblNpemU7XHJcbiAgUEFHRV9TSVpFX09QVElPTjogbnVtYmVyW10gPSBbNSwgMTAsIDE1LCAyMCwgMjUsIDEwMF07XHJcbiAgcmVzdWx0QWNjZXNzID0gbmV3IFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCgpO1xyXG4gIGFyclNrZWxldG9uID0gbmV3IEFycmF5KDgpLmZpbGwoMCk7XHJcbiAgLy9wcmV2ZW50IGV2ZW50IHBhZ2luZyB3aGVuIHNlYXJjaCBlbWl0IHNlYXJjaCBldmVudFxyXG4gIGdldFNlYXJjaGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU1NlbGVjdEFjY2Vzc0RpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0RhdGE6IFFNU1NlbGVjdEFjY2Vzc0RpYWxvZyxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuX2luaXRSZXN1bHRBY2Nlc3MoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2J1aWxkT3B0aW9uU2VsZWN0KCk7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZGlzYWJsZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBlcnNvbkZvcm0gJiYgdGhpcy5wZXJzb25Gb3JtLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXNlckdyb3VwRm9ybSAmJiB0aGlzLnVzZXJHcm91cEZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVpbGRPcHRpb25TZWxlY3QoKSB7XHJcbiAgICBjb25zdCBvcHRpb25PYmogPSB7XHJcbiAgICAgIGVuYWJsZVNlbGVjdERlcGFydG1lbnQ6IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ0RFUEFSVE1FTlQnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuT1BUSU9OX0VOVU0uREVQQVJUTUVOVFxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVTZWxlY3RQZXJzb246IHtcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ1BFUlNPTicsXHJcbiAgICAgICAgdHlwZTogdGhpcy5PUFRJT05fRU5VTS5QRVJTT05cclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0VXNlckdyb3VwOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICdVU0VSX0dST1VQJyxcclxuICAgICAgICB0eXBlOiB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaXRlbSBpbiB0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgaWYgKCEhdGhpcy5kaWFsb2dEYXRhW2l0ZW1dICYmIG9wdGlvbk9ialtpdGVtXSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbk9ialtpdGVtXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYudXBkYXRlU2l6ZSh0aGlzLmRpYWxvZ0RhdGEuc2l6ZVVwZGF0ZURlZmF1bHQpO1xyXG4gICAgICB0aGlzLm9wdGlvblNlbGVjdC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnNbMF0udHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UmVzdWx0QWNjZXNzKCkge1xyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MgPSBfLmNsb25lRGVlcCh7XHJcbiAgICAgIC4uLnRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YSxcclxuICAgICAgZGVwYXJ0bWVudHM6IFtdXHJcbiAgICB9IGFzIFFNU1NlbGVjdEFjY2Vzc1Jlc3VsdCk7XHJcbiAgICAvLyBpbml0IGdyb3VwIHNlbGVjdGVkIGRlcGFydG1lbnRcclxuICAgIHRoaXMuX2RlcGFydG1lbnRTZWxlY3RlZCA9IF8uY2xvbmVEZWVwKHRoaXMuZGlhbG9nRGF0YS5kYXRhLnNlbGVjdGVkRGF0YS5kZXBhcnRtZW50cyk7XHJcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKHggPT4geC5pc0dyb3VwKSB8fCBbXTtcclxuICAgIGNvbnN0IHNpbmdsZUl0ZW0gPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKHggPT4gIXguaXNHcm91cCAmJiAheC5ncm91cElkKTtcclxuICAgIGdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbS5ncm91cElkID09IGdyb3VwLmlkKTtcclxuICAgICAgZ3JvdXAuY2hpbGRyZW4gPSBjaGlsZDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBbLi4uZ3JvdXBzLCAuLi5zaW5nbGVJdGVtXVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uUGVyc29uQ2hhbmdlKCkge1xyXG4gICAgLy8gRmlsdGVyIHBlcnNvbiBieSByb2xlc1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtLmdldCgndXNlckdyb3VwRmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSksIGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKGtleXdvcmQgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgha2V5d29yZCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQodGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHRGaWx0ZXIgPSB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwudXNlckdyb3Vwcy5maWx0ZXIodXNlckdyb3VwID0+IHVzZXJHcm91cC5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFNlYXJjaFRleHRCb3gudXNlckdyb3VwLm5leHQocmVzdWx0RmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICAvLyBGaWx0ZXIgcGVyc29uIGJ5IGRlcGFydG1lbnRzXHJcbiAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLmRlcGFydG1lbnRzKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWFyY2ggPSB0aGlzLnBlcnNvbkZvcm0uZ2V0KCdkZXBhcnRtZW50RmlsdGVyJykudmFsdWU7XHJcbiAgICAgICAgaWYgKCFzZWFyY2gpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dCh0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMuc2xpY2UoKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZWFyY2hUZXh0Qm94LmRlcGFydG1lbnQubmV4dChcclxuICAgICAgICAgIHRoaXMub3B0aW9uRmlsdGVyUGVyc29uRGF0YUdsb2JhbC5kZXBhcnRtZW50cy5maWx0ZXIoeCA9PiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMSlcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlc3VsdFRhYkFjdGl2ZSgpIHtcclxuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHtcclxuICAgICAgMDogdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucyxcclxuICAgICAgMTogdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcyxcclxuICAgICAgMjogdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHNcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRPYmpbdGhpcy5vcHRpb25TZWxlY3QudmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrRXhpc3RPcHRpb25TZWxlY3Qob3B0aW9uOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gb3B0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRQZXJzb25Gb3JtKCkge1xyXG4gICAgdGhpcy5wZXJzb25Gb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICB1c2VyR3JvdXA6IFtdLFxyXG4gICAgICBkZXBhcnRtZW50OiBbXSxcclxuICAgICAgZGVwYXJ0bWVudEZpbHRlcjogWycnXSxcclxuICAgICAgcmVjdXJzaXZlOiBbe1xyXG4gICAgICAgIHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgfV0sXHJcbiAgICAgIGtleXdvcmQ6IFsnJ10sXHJcbiAgICAgIHVzZXJHcm91cEZpbHRlcjogWycnXSxcclxuICAgICAgZXhjbHVkZWRRdWl0RGVwYXJ0bWVudElkOiBbdHJ1ZV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRmlsdGVyUGVyc29uKCkge1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5wZXJzb25Gb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBmaWx0ZXJEYXRhOiBGaWx0ZXJQZXJzb25Nb2RlbCA9IHtcclxuICAgICAgZGVwYXJ0bWVudElkOiBmb3JtVmFsdWUuZGVwYXJ0bWVudD8uaWQsXHJcbiAgICAgIHVzZXJHcm91cElkOiBmb3JtVmFsdWUudXNlckdyb3VwPy5pZCxcclxuICAgICAga2V5d29yZDogZm9ybVZhbHVlLmtleXdvcmQsXHJcbiAgICAgIHJlY3Vyc2l2ZTogZm9ybVZhbHVlLnJlY3Vyc2l2ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5fcmVzZXRQYWdpbmdhdG9yKHRoaXMucGFnaW5nUGVyc29uKTtcclxuICAgIHRoaXMub25TZWFyY2hQZXJzb25FdmVudC5lbWl0KGZpbHRlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRQYWdpbmdhdG9yKHBhZ2luYXRvcjogUU1TUGFnaW5hdG9yQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIXBhZ2luYXRvcilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgcGFnaW5hdG9yLmNoYW5nZVBhZ2UoMCk7XHJcbiAgICBwYWdpbmF0b3IucmVuZGVyRGlzcGxheU51bWJlck9mcGFnZXMoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoUGVyc29uRnJlZVRleHQoKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuX3Jlc2V0UGFnaW5nYXRvcih0aGlzLnBhZ2luZ1BlcnNvbik7XHJcbiAgICB0aGlzLm9uU2VhcmNoUGVyc29uRnJlZVRleHRFdmVudC5lbWl0KHRoaXMucGVyc29uRm9ybS5nZXQoJ2tleXdvcmQnKS52YWx1ZSk7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2luZ2F0b3IodGhpcy5wYWdpbmdQZXJzb24pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJVc2VyR3JvdXAoKSB7XHJcbiAgICB0aGlzLmdldExvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuX3Jlc2V0UGFnaW5nYXRvcih0aGlzLnBhZ2luZ1VzZXJHcm91cCk7XHJcbiAgICB0aGlzLm9uU2VhcmNoVXNlckdyb3VwRXZlbnQuZW1pdCh0aGlzLnVzZXJHcm91cEZvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RJdGVtKHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0sIGl0ZW06IFFNU0FjY2Vzc0l0ZW0pIHtcclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIE9wdGlvblNlbGVjdEFjY2Vzc0VudW0uUEVSU09OOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gaXRlbS5zZWxlY3RlZCA/IFtpdGVtXSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBlcnNvbkZpbHRlcmVkLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtLlVTRVJfR1JPVVA6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBpdGVtLnNlbGVjdGVkID8gW2l0ZW1dIDogW107XHJcbiAgICAgICAgICAgIHRoaXMudXNlckdyb3VwRmlsdGVyZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gaXRlbS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGluZGV4SXRlbSA9IHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpbmRleEl0ZW0gPiAtMSAmJiB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleEl0ZW0sIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNoaXAodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgaXRlbSwgaW5kZXgpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOlxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICBpZiAodGhpcy5wZXJzb25GaWx0ZXJlZFtpbmRleF0pIHtcclxuICAgICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWRbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlckdyb3VwRmlsdGVyZWRbaW5kZXhdKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJHcm91cEZpbHRlcmVkW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLl9kZXBhcnRtZW50U2VsZWN0ZWQgPSBfLmNsb25lRGVlcCh0aGlzLnJlc3VsdEFjY2Vzcy5kZXBhcnRtZW50cyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uVHlwZUNoYW5nZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcnNvbkZvcm0oKTtcclxuICAgICAgICB0aGlzLl9maWx0ZXJPcHRpb25QZXJzb25DaGFuZ2UoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnRyZWVEZXBhcnRtZW50Q29uZmlnLnNlbGVjdGVkTGlzdCA9IHRoaXMuc2VsZWN0ZWREZXBhcnRtZW50cztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUodGhpcy5kaWFsb2dEYXRhLnNpemVVcGRhdGVEZWZhdWx0KTtcclxuICAgIHRoaXMub25TZWxlY3RPcHRpb25DaGFuZ2UkLm5leHQoZXZlbnQpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbFZhbHVlKGZvcm1Db250cm9sTmFtZXM6IHN0cmluZ1tdLCB2YWx1ZXMpIHtcclxuICAgIGZvcm1Db250cm9sTmFtZXMuZm9yRWFjaCgoY29udHJvbE5hbWUsIF9pbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcnNvbkZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uc2V0VmFsdWUodmFsdWVzW19pbmRleF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGlzQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5QRVJTT046XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpYWxvZ0RhdGEubW9kZVNlbGVjdE9uZVBlcnNvbiAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmxlbmd0aCAmJiB0aGlzLnBlcnNvbkZpbHRlcmVkLmV2ZXJ5KHggPT4geC5zZWxlY3RlZCk7XHJcbiAgICAgIGNhc2UgdGhpcy5PUFRJT05fRU5VTS5VU0VSX0dST1VQOlxyXG4gICAgICAgIHJldHVybiAhdGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXAgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5sZW5ndGggJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZC5ldmVyeSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSW5kZXRlcm1pbmF0ZSh0eXBlOiBPcHRpb25TZWxlY3RBY2Nlc3NFbnVtKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlBFUlNPTjpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy5wZXJzb25GaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uVVNFUl9HUk9VUDpcclxuICAgICAgICByZXR1cm4gIXRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lVXNlckdyb3VwICYmICF0aGlzLmlzQ2hlY2tBbGwodHlwZSkgJiYgdGhpcy51c2VyR3JvdXBGaWx0ZXJlZD8uc29tZSh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tBbGwodHlwZTogT3B0aW9uU2VsZWN0QWNjZXNzRW51bSwgJGV2ZW50KSB7XHJcbiAgICAkZXZlbnQuY2hlY2tlZCA9ICEkZXZlbnQuY2hlY2tlZDtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIHRoaXMuT1BUSU9OX0VOVU0uUEVSU09OOiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5tb2RlU2VsZWN0T25lUGVyc29uKSB7XHJcbiAgICAgICAgICAkZXZlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMucGVyc29uRmlsdGVyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGVyc29uRmlsdGVyZWQuZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSAkZXZlbnQuY2hlY2tlZCk7XHJcbiAgICAgICAgY29uc3QgaWRGaWx0ZXJlZCA9IHRoaXMucGVyc29uRmlsdGVyZWQubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFBlcnNvblNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnBlcnNvbnMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucywgLi4udGhpcy5wZXJzb25GaWx0ZXJlZC5maWx0ZXIoeCA9PiAhaWRQZXJzb25TZWxlY3RlZC5pbmNsdWRlcyh4LmlkKSldO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3VsdEFjY2Vzcy5wZXJzb25zID0gdGhpcy5yZXN1bHRBY2Nlc3MucGVyc29ucy5maWx0ZXIoeCA9PiAhaWRGaWx0ZXJlZC5pbmNsdWRlcyh4LmlkKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLk9QVElPTl9FTlVNLlVTRVJfR1JPVVA6IHtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLm1vZGVTZWxlY3RPbmVVc2VyR3JvdXApIHtcclxuICAgICAgICAgICRldmVudC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVzZXJHcm91cFBhZ2luZyA9IHRoaXMudXNlckdyb3VwRmlsdGVyZWQ7XHJcbiAgICAgICAgdXNlckdyb3VwUGFnaW5nLmZvckVhY2goeCA9PiB4LnNlbGVjdGVkID0gJGV2ZW50LmNoZWNrZWQpO1xyXG4gICAgICAgIGNvbnN0IGlkRmlsdGVyZWQgPSB1c2VyR3JvdXBQYWdpbmcubWFwKHggPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKCRldmVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgICBjb25zdCBpZFNlbGVjdGVkID0gdGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3Vwcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSBbLi4udGhpcy5yZXN1bHRBY2Nlc3MudXNlckdyb3VwcywgLi4udXNlckdyb3VwUGFnaW5nLmZpbHRlcih4ID0+ICFpZFNlbGVjdGVkLmluY2x1ZGVzKHguaWQpKV07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLnVzZXJHcm91cHMgPSB0aGlzLnJlc3VsdEFjY2Vzcy51c2VyR3JvdXBzLmZpbHRlcih4ID0+ICFpZEZpbHRlcmVkLmluY2x1ZGVzKHguaWQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uTm9kZURlcGFydG1lbnRDaGFuZ2UoeyBhZGRlZCwgcmVtb3ZlZCwgdXBkYXRlZCB9OiBJU2VsZWN0aW9uTm9kZUNoYW5nZTxRTVNUcmVlTm9kZT4pIHtcclxuICAgIGlmIChhZGRlZC5sZW5ndGgpIHtcclxuICAgICAgYWRkZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc29tZSh4ID0+IHguaWQgPT09IGl0ZW0uaWQpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlbW92ZWQubGVuZ3RoKSB7XHJcbiAgICAgIHJlbW92ZWQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHguaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA8IDApXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodXBkYXRlZC5sZW5ndGgpIHtcclxuICAgICAgdXBkYXRlZC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSB4LmlkKTtcclxuICAgICAgICBpZiAoaW5kZXggPCAwKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGRlcGFybWVudCA9IHRoaXMucmVzdWx0QWNjZXNzLmRlcGFydG1lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHguaWQpO1xyXG4gICAgICAgIGlmICghIWRlcGFybWVudClcclxuICAgICAgICAgIGRlcGFybWVudC5jaGlsZHJlbiA9IHguY2hpbGRyZW47XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVwYXJ0bWVudFNlbGVjdGVkID0gXy5jbG9uZURlZXAodGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblNjb2xsVG9Ob2RlVHJlZURlcGFydG1lbnQobm9kZTogUU1TVHJlZU5vZGUpIHtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0LnZhbHVlID09PSB0aGlzLk9QVElPTl9FTlVNLkRFUEFSVE1FTlQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC5zY3JvbGxUb05vZGUobm9kZS5pZClcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGVyc29uRmlsdGVyKGRhdGE6IFFNU0FjY2Vzc1BhZ2luZ01vZGVsPFFNU0FjY2Vzc0l0ZW0+KSB7XHJcbiAgICB0aGlzLmdldFBlcnNvbiQubmV4dChkYXRhKTtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmdldFNlYXJjaGluZyQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2VyR3JvdXBGaWx0ZXIoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TQWNjZXNzSXRlbT4pIHtcclxuICAgIHRoaXMuZ2V0VXNlckdyb3VwJC5uZXh0KGRhdGEpO1xyXG4gICAgdGhpcy5nZXRMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoaW5nJC5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uUGFnaW5hdG9yRXZlbnQodmFsOiBQYWdlRXZlbnQsIHR5cGU6IE9wdGlvblNlbGVjdEFjY2Vzc0VudW0pIHtcclxuICAgIGlmICh0aGlzLmdldFNlYXJjaGluZyQudmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dCh0aGlzLm9wdGlvblNlbGVjdC52YWx1ZSAhPT0gdGhpcy5PUFRJT05fRU5VTS5ERVBBUlRNRU5UKTtcclxuICAgIHRoaXMub25QYWdpbmdFdmVudC5lbWl0KHtcclxuICAgICAgLi4udmFsLFxyXG4gICAgICB0eXBlOiB0eXBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShldmVudDogUU1TVHJlZU5vZGVbXSkge1xyXG4gICAgLy8gdGhpcy5yZXN1bHRBY2Nlc3MuZGVwYXJ0bWVudHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaERlcGFydG1lbnQoZGF0YTogUU1TQWNjZXNzUGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPiA9IG5ldyBRTVNBY2Nlc3NQYWdpbmdNb2RlbDxRTVNGbGF0Tm9kZVRyZWU+KCkpIHtcclxuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZGF0YSA9IGRhdGEgYXMgUU1TRGVwYXJ0bWVudFBhZ2luZ01vZGVsPFFNU0ZsYXROb2RlVHJlZT47XHJcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVG9vdGlwKG5vZGU6IGFueSkge1xyXG4gICAgcmV0dXJuIChub2RlPy5pc0dyb3VwKSA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMuTEFORy5UT09MVElQX0lOQ0xVREVfU1VCX0RFUEFSVE1FTlQsIG5vZGUubmFtZSwgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoLnRvU3RyaW5nKCkpIDogKGAke25vZGUubmFtZX0gJHtub2RlPy5zdWJOYW1lID8gYC0gKCR7bm9kZS5zdWJOYW1lfSlgIDogJyd9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFN0cmluZyguLi5yZXBsYWNlbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgXFxcXHske2l9XFxcXH1gLCAnZ20nKTtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBoYXNJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5yZXN1bHRBY2Nlc3MpLnNvbWUoa2V5ID0+ICEhdGhpcy5yZXN1bHRBY2Nlc3Nba2V5XT8ubGVuZ3RoKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGVwYXJ0bWVudChkYXRhOiBRTVNUcmVlTm9kZVtdID0gW10pIHtcclxuICAgIHRoaXMuZ2V0TG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudHJlZURlcGFydG1lbnRDb25maWcudHJlZURhdGEgPSBfLmNsb25lRGVlcChkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU9wdGlvblBlcnNvbkZpbHRlcihkZXBhcnRtZW50RmlsdGVyOiBRTVNGbGF0Tm9kZVRyZWVbXSA9IFtdLCB1c2VyR3JvdXBGaWx0ZXI6IFFNU0FjY2Vzc0l0ZW1bXSA9IFtdKSB7XHJcbiAgICB0aGlzLm9wdGlvbkZpbHRlclBlcnNvbkRhdGFHbG9iYWwuZGVwYXJ0bWVudHMgPSBkZXBhcnRtZW50RmlsdGVyO1xyXG4gICAgdGhpcy5vcHRpb25GaWx0ZXJQZXJzb25EYXRhR2xvYmFsLnVzZXJHcm91cHMgPSB1c2VyR3JvdXBGaWx0ZXI7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC5kZXBhcnRtZW50Lm5leHQoZGVwYXJ0bWVudEZpbHRlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkU2VhcmNoVGV4dEJveC51c2VyR3JvdXAubmV4dCh1c2VyR3JvdXBGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhZ2VTaXplT3B0aW9uKGRhdGE6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLlBBR0VfU0laRV9PUFRJT04gPSBkYXRhO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|