nuxeo-development-framework 4.1.2 → 4.1.4
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/nuxeo-development-framework.umd.js +1213 -1049
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +28 -29
- package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +13 -10
- package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +58 -42
- package/esm2015/lib/components/file-manger/components/copy/copy.component.js +65 -36
- package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +39 -13
- package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +45 -43
- package/esm2015/lib/components/file-manger/components/move/move.component.js +60 -31
- package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +99 -66
- package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +107 -90
- package/esm2015/lib/components/permissions/permissions.module.js +23 -7
- package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +21 -21
- package/fesm2015/nuxeo-development-framework.js +619 -463
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +4 -4
- package/lib/components/dynamic-form/dynamic-form.module.d.ts +2 -1
- package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +11 -5
- package/lib/components/file-manger/components/copy/copy.component.d.ts +11 -4
- package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +9 -4
- package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +9 -11
- package/lib/components/file-manger/components/move/move.component.d.ts +11 -4
- package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +9 -8
- package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +8 -6
- package/lib/components/permissions/permissions.module.d.ts +2 -1
- package/lib/shared/components/nuxeo-dialog/nuxeo.dialog.d.ts +5 -5
- package/package.json +1 -1
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { DxFormComponent } from 'devextreme-angular';
|
|
3
3
|
import { of } from 'rxjs';
|
|
4
|
+
import { NdfNuxeoDialog } from '../../../../shared/components/nuxeo-dialog/nuxeo.dialog';
|
|
5
|
+
import { tap } from 'rxjs/operators';
|
|
6
|
+
import { BaseComponent } from '../../../../shared/components/base/base.component';
|
|
4
7
|
import * as i0 from "@angular/core";
|
|
5
8
|
import * as i1 from "../../../../shared-services/file-manager.service";
|
|
6
9
|
import * as i2 from "../../../custom-toastr/services/custom-toastr.service";
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "devextreme-angular
|
|
9
|
-
import * as i5 from "
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import * as i3 from "../../../../shared/components/nuxeo-dialog/services/nuxeo-dialog.service";
|
|
11
|
+
import * as i4 from "devextreme-angular";
|
|
12
|
+
import * as i5 from "@ngx-translate/core";
|
|
13
|
+
export class MoveComponent extends BaseComponent {
|
|
14
|
+
constructor(fileManagerService, customToastrService, nuxeoDialogService, injector) {
|
|
15
|
+
super(injector);
|
|
13
16
|
this.fileManagerService = fileManagerService;
|
|
14
17
|
this.customToastrService = customToastrService;
|
|
18
|
+
this.nuxeoDialogService = nuxeoDialogService;
|
|
15
19
|
this.visibleChange = new EventEmitter();
|
|
16
20
|
this.getSelectedFolder = new EventEmitter();
|
|
17
21
|
this.rtlEnabled = false;
|
|
@@ -22,7 +26,7 @@ export class MoveComponent {
|
|
|
22
26
|
let myparent = parent ? parent.key : this.rootFolder;
|
|
23
27
|
let myobs;
|
|
24
28
|
if (myparent === this.pageConfigurations.rootName) {
|
|
25
|
-
// when it is root of file list then used passed root entries and for root of
|
|
29
|
+
// when it is root of file list then used passed root entries and for root of
|
|
26
30
|
// my files or any other folder use getting childs for that folder with its id
|
|
27
31
|
myobs = this.fileManagerService.parseNodeChildren(of(this.rootEntries), this.pageConfigurations, parent);
|
|
28
32
|
}
|
|
@@ -34,18 +38,56 @@ export class MoveComponent {
|
|
|
34
38
|
// let obs = this.fileManagerService.getTreeNodeChildren(myparent);
|
|
35
39
|
// return this.fileManagerService.parseNodeChildren(obs, parent);
|
|
36
40
|
};
|
|
41
|
+
this.move = (answer) => {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
if (((_b = (_a = this.directory) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.id) !== this.currentItem.id &&
|
|
44
|
+
!this.currentItem.entity.path.includes(this.selectedItem.name)) {
|
|
45
|
+
// this.currentPath = '';
|
|
46
|
+
return this.fileManagerService
|
|
47
|
+
.moveTo(this.currentItem, this.selectedItems)
|
|
48
|
+
.pipe(tap((res) => {
|
|
49
|
+
this.visible = answer;
|
|
50
|
+
this.getSelectedFolder.next(this.currentItem.id);
|
|
51
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_MOVED');
|
|
52
|
+
}, (err) => {
|
|
53
|
+
this.visible = true;
|
|
54
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_ERROR');
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
else
|
|
58
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.FAILED_TO_MOVE');
|
|
59
|
+
return of(null);
|
|
60
|
+
};
|
|
37
61
|
}
|
|
38
62
|
set visible(value) {
|
|
39
63
|
if (this._visible === value) {
|
|
40
64
|
return;
|
|
41
65
|
}
|
|
66
|
+
if (value) {
|
|
67
|
+
this.openDialog();
|
|
68
|
+
}
|
|
42
69
|
this._visible = value;
|
|
43
70
|
this.visibleChange.emit(this._visible);
|
|
44
71
|
}
|
|
45
72
|
get visible() {
|
|
46
73
|
return this._visible;
|
|
47
74
|
}
|
|
48
|
-
ngOnInit() {
|
|
75
|
+
ngOnInit() { }
|
|
76
|
+
openDialog() {
|
|
77
|
+
const options = {
|
|
78
|
+
component: NdfNuxeoDialog,
|
|
79
|
+
config: {
|
|
80
|
+
title: this.translateService.instant('FILE_MANAGER.COPY_OR_MOVE'),
|
|
81
|
+
contentTemplate: this.contentTemplate,
|
|
82
|
+
actionsTemplate: this.actionsTemplate
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
this.nuxeoDialogService
|
|
86
|
+
.open(options)
|
|
87
|
+
.afterClosed()
|
|
88
|
+
.subscribe((res) => {
|
|
89
|
+
this.cancel();
|
|
90
|
+
});
|
|
49
91
|
}
|
|
50
92
|
cancel() {
|
|
51
93
|
this.visible = false;
|
|
@@ -54,28 +96,9 @@ export class MoveComponent {
|
|
|
54
96
|
this.disable = false;
|
|
55
97
|
this.currentItem = e.itemData;
|
|
56
98
|
}
|
|
57
|
-
move(answer) {
|
|
58
|
-
var _a, _b;
|
|
59
|
-
if (((_b = (_a = this.directory) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.id) !== this.currentItem.id &&
|
|
60
|
-
!this.currentItem.entity.path.includes(this.selectedItem.name)) {
|
|
61
|
-
// this.currentPath = '';
|
|
62
|
-
this.fileManagerService
|
|
63
|
-
.moveTo(this.currentItem, this.selectedItems)
|
|
64
|
-
.subscribe((res) => {
|
|
65
|
-
this.visible = answer;
|
|
66
|
-
this.getSelectedFolder.next(this.currentItem.id);
|
|
67
|
-
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_MOVED');
|
|
68
|
-
}, (err) => {
|
|
69
|
-
this.visible = true;
|
|
70
|
-
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_ERROR');
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
else
|
|
74
|
-
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.FAILED_TO_MOVE');
|
|
75
|
-
}
|
|
76
99
|
}
|
|
77
|
-
MoveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MoveComponent, deps: [{ token: i1.FileManagerService }, { token: i2.CustomToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
78
|
-
MoveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MoveComponent, selector: "app-move", inputs: { visible: "visible", rtlEnabled: "rtlEnabled", selectedItem: "selectedItem", rootFolder: "rootFolder", rootEntries: "rootEntries", selectedItems: "selectedItems", directory: "directory", pageConfigurations: "pageConfigurations" }, outputs: { visibleChange: "visibleChange", getSelectedFolder: "getSelectedFolder" }, viewQueries: [{ propertyName: "form", first: true, predicate: DxFormComponent, descendants: true }], ngImport: i0, template: "<dx-popup class=\"popUpParent\" [rtlEnabled]=\"rtlEnabled\" id=\"photo-popup\" [width]=\"500\" [height]=\"500\"\r\n title=\"{{ 'FILE_MANAGER.COPY_OR_MOVE' | translate }}\" [(visible)]=\"visible\" [showTitle]=\"true\"\r\n [closeOnOutsideClick]=\"true\">\r\n <div class=\"p-4\" *dxTemplate=\"let data of 'content'\">\r\n <dx-scroll-view width=\"100%\" height=\"100%\">\r\n <div class=\"form\">\r\n <dx-tree-view [rtlEnabled]=\"rtlEnabled\" id=\"treeList\" [rootValue]=\"rootFolder\" keyExpr=\"id\"\r\n displayExpr=\"name\" hasItemsExpr=\"isExpanded\" dataStructure=\"plain\"\r\n [createChildren]=\"createTreeNodeChildren\" [width]=\"465\" (onItemClick)=\"selectItem($event)\">\r\n </dx-tree-view>\r\n </div>\r\n </dx-scroll-view>\r\n </div>\r\n <dxi-toolbar-item toolbar=\"bottom\" [disabled]=\"disable\">\r\n <button class=\"submission-button px-5\" (click)=\"move(false)\">\r\n {{ \"BUTTONS.MOVE\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n <dxi-toolbar-item toolbar=\"bottom\">\r\n <button class=\"cancelation-button px-5\" (click)=\"cancel()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n</dx-popup>
|
|
100
|
+
MoveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MoveComponent, deps: [{ token: i1.FileManagerService }, { token: i2.CustomToastrService }, { token: i3.NuxeoDialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
+
MoveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MoveComponent, selector: "app-move", inputs: { visible: "visible", rtlEnabled: "rtlEnabled", selectedItem: "selectedItem", rootFolder: "rootFolder", rootEntries: "rootEntries", selectedItems: "selectedItems", directory: "directory", pageConfigurations: "pageConfigurations" }, outputs: { visibleChange: "visibleChange", getSelectedFolder: "getSelectedFolder" }, viewQueries: [{ propertyName: "form", first: true, predicate: DxFormComponent, descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true }, { propertyName: "actionsTemplate", first: true, predicate: ["actionsTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <dx-popup class=\"popUpParent\" [rtlEnabled]=\"rtlEnabled\" id=\"photo-popup\" [width]=\"500\" [height]=\"500\"\r\n title=\"{{ 'FILE_MANAGER.COPY_OR_MOVE' | translate }}\" [(visible)]=\"visible\" [showTitle]=\"true\"\r\n [closeOnOutsideClick]=\"true\">\r\n <div class=\"p-4\" *dxTemplate=\"let data of 'content'\">\r\n <dx-scroll-view width=\"100%\" height=\"100%\">\r\n <div class=\"form\">\r\n <dx-tree-view [rtlEnabled]=\"rtlEnabled\" id=\"treeList\" [rootValue]=\"rootFolder\" keyExpr=\"id\"\r\n displayExpr=\"name\" hasItemsExpr=\"isExpanded\" dataStructure=\"plain\"\r\n [createChildren]=\"createTreeNodeChildren\" [width]=\"465\" (onItemClick)=\"selectItem($event)\">\r\n </dx-tree-view>\r\n </div>\r\n </dx-scroll-view>\r\n </div>\r\n <dxi-toolbar-item toolbar=\"bottom\" [disabled]=\"disable\">\r\n <button class=\"submission-button px-5\" (click)=\"move(false)\">\r\n {{ \"BUTTONS.MOVE\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n <dxi-toolbar-item toolbar=\"bottom\">\r\n <button class=\"cancelation-button px-5\" (click)=\"cancel()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n</dx-popup> -->\r\n\r\n<ng-template #contentTemplate>\r\n\t<div class=\"p-4\">\r\n\t\t<dx-scroll-view width=\"100%\" height=\"100%\">\r\n\t\t\t<div class=\"form\">\r\n\t\t\t\t<dx-tree-view\r\n\t\t\t\t\t[rtlEnabled]=\"rtlEnabled\"\r\n\t\t\t\t\tid=\"treeList\"\r\n\t\t\t\t\t[rootValue]=\"rootFolder\"\r\n\t\t\t\t\tkeyExpr=\"id\"\r\n\t\t\t\t\tdisplayExpr=\"name\"\r\n\t\t\t\t\thasItemsExpr=\"isExpanded\"\r\n\t\t\t\t\tdataStructure=\"plain\"\r\n\t\t\t\t\t[createChildren]=\"createTreeNodeChildren\"\r\n\t\t\t\t\t[width]=\"465\"\r\n\t\t\t\t\t(onItemClick)=\"selectItem($event)\"\r\n\t\t\t\t>\r\n\t\t\t\t</dx-tree-view>\r\n\t\t\t</div>\r\n\t\t</dx-scroll-view>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #actionsTemplate let-dialog=\"dialog\">\r\n\t<button\r\n\t\t[disabled]=\"disable\"\r\n\t\tclass=\"submission-button px-5\"\r\n\t\t(click)=\"dialog.executeAction(move, [false])\"\r\n\t>\r\n\t\t{{ 'BUTTONS.MOVE' | translate }}\r\n\t</button>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i4.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { type: i4.DxTreeViewComponent, selector: "dx-tree-view", inputs: ["accessKey", "activeStateEnabled", "animationEnabled", "collapseIcon", "createChildren", "dataSource", "dataStructure", "disabled", "disabledExpr", "displayExpr", "elementAttr", "expandAllEnabled", "expandedExpr", "expandEvent", "expandIcon", "expandNodesRecursive", "focusStateEnabled", "hasItemsExpr", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemsExpr", "itemTemplate", "keyExpr", "noDataText", "parentIdExpr", "rootValue", "rtlEnabled", "scrollDirection", "searchEditorOptions", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "searchValue", "selectAllText", "selectByClick", "selectedExpr", "selectionMode", "selectNodesRecursive", "showCheckBoxesMode", "tabIndex", "useNativeScrolling", "virtualModeEnabled", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemCollapsed", "onItemContextMenu", "onItemExpanded", "onItemHold", "onItemRendered", "onItemSelectionChanged", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "accessKeyChange", "activeStateEnabledChange", "animationEnabledChange", "collapseIconChange", "createChildrenChange", "dataSourceChange", "dataStructureChange", "disabledChange", "disabledExprChange", "displayExprChange", "elementAttrChange", "expandAllEnabledChange", "expandedExprChange", "expandEventChange", "expandIconChange", "expandNodesRecursiveChange", "focusStateEnabledChange", "hasItemsExprChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemsExprChange", "itemTemplateChange", "keyExprChange", "noDataTextChange", "parentIdExprChange", "rootValueChange", "rtlEnabledChange", "scrollDirectionChange", "searchEditorOptionsChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "searchValueChange", "selectAllTextChange", "selectByClickChange", "selectedExprChange", "selectionModeChange", "selectNodesRecursiveChange", "showCheckBoxesModeChange", "tabIndexChange", "useNativeScrollingChange", "virtualModeEnabledChange", "visibleChange", "widthChange"] }], pipes: { "translate": i5.TranslatePipe } });
|
|
79
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MoveComponent, decorators: [{
|
|
80
103
|
type: Component,
|
|
81
104
|
args: [{
|
|
@@ -83,9 +106,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
83
106
|
templateUrl: './move.component.html',
|
|
84
107
|
styleUrls: ['./move.component.scss']
|
|
85
108
|
}]
|
|
86
|
-
}], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.CustomToastrService }]; }, propDecorators: { form: [{
|
|
109
|
+
}], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.CustomToastrService }, { type: i3.NuxeoDialogService }, { type: i0.Injector }]; }, propDecorators: { form: [{
|
|
87
110
|
type: ViewChild,
|
|
88
111
|
args: [DxFormComponent, { static: false }]
|
|
112
|
+
}], contentTemplate: [{
|
|
113
|
+
type: ViewChild,
|
|
114
|
+
args: ['contentTemplate']
|
|
115
|
+
}], actionsTemplate: [{
|
|
116
|
+
type: ViewChild,
|
|
117
|
+
args: ['actionsTemplate']
|
|
89
118
|
}], visible: [{
|
|
90
119
|
type: Input
|
|
91
120
|
}], visibleChange: [{
|
|
@@ -107,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
107
136
|
}], pageConfigurations: [{
|
|
108
137
|
type: Input
|
|
109
138
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbW92ZS9tb3ZlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9tb3ZlL21vdmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTMUIsTUFBTSxPQUFPLGFBQWE7SUFrQ3hCLFlBQ1Usa0JBQXNDLEVBQ3BDLG1CQUF3QztRQUQxQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF0QnBELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFZbkIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQW1CakIsMkJBQXNCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1B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QVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNyQzsySUFFZ0QsSUFBSTtzQkFBbEQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUV6QyxPQUFPO3NCQURWLEtBQUs7Z0JBWU4sYUFBYTtzQkFEWixNQUFNO2dCQUdQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFHUCxVQUFVO3NCQURULEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeEZvcm1Db21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbW92ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vdmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21vdmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW92ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChEeEZvcm1Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtOiBEeEZvcm1Db21wb25lbnQ7XHJcbiAgQElucHV0KClcclxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fdmlzaWJsZSA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5fdmlzaWJsZSk7XHJcbiAgfVxyXG4gIGdldCB2aXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKVxyXG4gIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KClcclxuICBnZXRTZWxlY3RlZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpXHJcbiAgcnRsRW5hYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgQElucHV0KClcclxuICByb290Rm9sZGVyOiBhbnk7XHJcbiAgQElucHV0KClcclxuICByb290RW50cmllczogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRJdGVtczogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlyZWN0b3J5OiBhbnk7XHJcbiAgQElucHV0KCkgcGFnZUNvbmZpZ3VyYXRpb25zO1xyXG4gIGZvcm1EYXRhOiBhbnkgPSB7fTtcclxuICBkaXNhYmxlID0gdHJ1ZTtcclxuICBfdmlzaWJsZSA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJdGVtO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjdXN0b21Ub2FzdHJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKGUpIHtcclxuICAgIHRoaXMuZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50SXRlbSA9IGUuaXRlbURhdGE7XHJcbiAgfVxyXG4gIGNyZWF0ZVRyZWVOb2RlQ2hpbGRyZW4gPSAocGFyZW50KSA9PiB7XHJcbiAgICBsZXQgbXlwYXJlbnQgPSBwYXJlbnQgPyBwYXJlbnQua2V5IDogdGhpcy5yb290Rm9sZGVyO1xyXG4gICAgbGV0IG15b2JzO1xyXG4gICAgaWYgKG15cGFyZW50ID09PSB0aGlzLnBhZ2VDb25maWd1cmF0aW9ucy5yb290TmFtZSkge1xyXG4gICAgICAvLyB3aGVuIGl0IGlzIHJvb3Qgb2YgZmlsZSBsaXN0IHRoZW4gdXNlZCBwYXNzZWQgcm9vdCBlbnRyaWVzIGFuZCBmb3Igcm9vdCBvZiBcclxuICAgICAgLy8gbXkgZmlsZXMgb3IgYW55IG90aGVyIGZvbGRlciB1c2UgZ2V0dGluZyBjaGlsZHMgZm9yIHRoYXQgZm9sZGVyIHdpdGggaXRzIGlkXHJcbiAgICAgIG15b2JzID0gdGhpcy5maWxlTWFuYWdlclNlcnZpY2UucGFyc2VOb2RlQ2hpbGRyZW4ob2YodGhpcy5yb290RW50cmllcykgLCB0aGlzLnBhZ2VDb25maWd1cmF0aW9ucywgcGFyZW50KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBteW9icyA9IHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmNyZWF0ZVRyZWVOb2RlQ2hpbGRyZW4obXlwYXJlbnQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbXlvYnM7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhwYXJlbnQpO1xyXG4gICAgLy8gbGV0IG9icyA9IHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmdldFRyZWVOb2RlQ2hpbGRyZW4obXlwYXJlbnQpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLnBhcnNlTm9kZUNoaWxkcmVuKG9icywgcGFyZW50KTtcclxuICB9XHJcblxyXG4gIG1vdmUoYW5zd2VyKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGlyZWN0b3J5Py5kYXRhSXRlbT8uaWQgIT09IHRoaXMuY3VycmVudEl0ZW0uaWQgJiZcclxuICAgICAgIXRoaXMuY3VycmVudEl0ZW0uZW50aXR5LnBhdGguaW5jbHVkZXModGhpcy5zZWxlY3RlZEl0ZW0ubmFtZSlcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLmN1cnJlbnRQYXRoID0gJyc7XHJcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXHJcbiAgICAgICAgLm1vdmVUbyh0aGlzLmN1cnJlbnRJdGVtLCB0aGlzLnNlbGVjdGVkSXRlbXMpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gYW5zd2VyO1xyXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkRm9sZGVyLm5leHQodGhpcy5jdXJyZW50SXRlbS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9NT1ZFRCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRVJST1InLFxyXG4gICAgICAgICAgICAgICdUT0FTVEVSLkRPQ1VNRU5UX01PVkVEX0VSUk9SJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgJ1RPQVNURVIuRkFJTEVEX1RPX01PVkUnXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxkeC1wb3B1cCBjbGFzcz1cInBvcFVwUGFyZW50XCIgW3J0bEVuYWJsZWRdPVwicnRsRW5hYmxlZFwiIGlkPVwicGhvdG8tcG9wdXBcIiBbd2lkdGhdPVwiNTAwXCIgW2hlaWdodF09XCI1MDBcIlxyXG4gICAgdGl0bGU9XCJ7eyAnRklMRV9NQU5BR0VSLkNPUFlfT1JfTU9WRScgfCB0cmFuc2xhdGUgfX1cIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbc2hvd1RpdGxlXT1cInRydWVcIlxyXG4gICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNFwiICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgPGR4LXNjcm9sbC12aWV3IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkeC10cmVlLXZpZXcgW3J0bEVuYWJsZWRdPVwicnRsRW5hYmxlZFwiIGlkPVwidHJlZUxpc3RcIiBbcm9vdFZhbHVlXT1cInJvb3RGb2xkZXJcIiBrZXlFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGhhc0l0ZW1zRXhwcj1cImlzRXhwYW5kZWRcIiBkYXRhU3RydWN0dXJlPVwicGxhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjcmVhdGVDaGlsZHJlbl09XCJjcmVhdGVUcmVlTm9kZUNoaWxkcmVuXCIgW3dpZHRoXT1cIjQ2NVwiIChvbkl0ZW1DbGljayk9XCJzZWxlY3RJdGVtKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZHgtdHJlZS12aWV3PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4LXNjcm9sbC12aWV3PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZHhpLXRvb2xiYXItaXRlbSB0b29sYmFyPVwiYm90dG9tXCIgW2Rpc2FibGVkXT1cImRpc2FibGVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b24gcHgtNVwiIChjbGljayk9XCJtb3ZlKGZhbHNlKVwiPlxyXG4gICAgICAgICAgICB7eyBcIkJVVFRPTlMuTU9WRVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2R4aS10b29sYmFyLWl0ZW0+XHJcbiAgICA8ZHhpLXRvb2xiYXItaXRlbSB0b29sYmFyPVwiYm90dG9tXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvbiBweC01XCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9keGktdG9vbGJhci1pdGVtPlxyXG48L2R4LXBvcHVwPiJdfQ==
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbW92ZS9tb3ZlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9tb3ZlL21vdmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBR3pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7QUFPbEYsTUFBTSxPQUFPLGFBQWMsU0FBUSxhQUFhO0lBdUMvQyxZQUNTLGtCQUFzQyxFQUNwQyxtQkFBd0MsRUFDM0Msa0JBQXNDLEVBQzdDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUMzQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBdkI5QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7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aUI7Z0JBRXhCLE9BQU87c0JBRFYsS0FBSztnQkFlTixhQUFhO3NCQURaLE1BQU07Z0JBR1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbmplY3RvcixcclxuXHRJbnB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmLFxyXG5cdFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeEZvcm1Db21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvbnV4ZW8tZGlhbG9nL21vZGVscy9kaWFsb2ctb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTmRmTnV4ZW9EaWFsb2cgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9udXhlby1kaWFsb2cvbnV4ZW8uZGlhbG9nJztcclxuaW1wb3J0IHsgTnV4ZW9EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvbnV4ZW8tZGlhbG9nL3NlcnZpY2VzL251eGVvLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL251eGVvLWRpYWxvZy9tb2RlbHMvZGlhbG9nLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtbW92ZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL21vdmUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL21vdmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW92ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoRHhGb3JtQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZm9ybTogRHhGb3JtQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGQoJ2NvbnRlbnRUZW1wbGF0ZScpIGNvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QFZpZXdDaGlsZCgnYWN0aW9uc1RlbXBsYXRlJykgYWN0aW9uc1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHRASW5wdXQoKVxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBhbnkpIHtcclxuXHRcdGlmICh0aGlzLl92aXNpYmxlID09PSB2YWx1ZSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodmFsdWUpIHtcclxuXHRcdFx0dGhpcy5vcGVuRGlhbG9nKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLl92aXNpYmxlID0gdmFsdWU7XHJcblx0XHR0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcclxuXHR9XHJcblx0Z2V0IHZpc2libGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuXHR9XHJcblx0QE91dHB1dCgpXHJcblx0dmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKVxyXG5cdGdldFNlbGVjdGVkRm9sZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QElucHV0KClcclxuXHRydGxFbmFibGVkID0gZmFsc2U7XHJcblx0QElucHV0KClcclxuXHRzZWxlY3RlZEl0ZW06IGFueTtcclxuXHRASW5wdXQoKVxyXG5cdHJvb3RGb2xkZXI6IGFueTtcclxuXHRASW5wdXQoKVxyXG5cdHJvb3RFbnRyaWVzOiBhbnk7XHJcblx0QElucHV0KClcclxuXHRzZWxlY3RlZEl0ZW1zOiBhbnk7XHJcblx0QElucHV0KClcclxuXHRkaXJlY3Rvcnk6IGFueTtcclxuXHRASW5wdXQoKSBwYWdlQ29uZmlndXJhdGlvbnM7XHJcblx0Zm9ybURhdGE6IGFueSA9IHt9O1xyXG5cdGRpc2FibGUgPSB0cnVlO1xyXG5cdF92aXNpYmxlID0gZmFsc2U7XHJcblx0Y3VycmVudEl0ZW07XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGZpbGVNYW5hZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGN1c3RvbVRvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcblx0XHRwdWJsaWMgbnV4ZW9EaWFsb2dTZXJ2aWNlOiBOdXhlb0RpYWxvZ1NlcnZpY2UsXHJcblx0XHRpbmplY3RvcjogSW5qZWN0b3JcclxuXHQpIHtcclxuXHRcdHN1cGVyKGluamVjdG9yKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcblx0b3BlbkRpYWxvZygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG9wdGlvbnM6IERpYWxvZ09wdGlvbnMgPSB7XHJcblx0XHRcdGNvbXBvbmVudDogTmRmTnV4ZW9EaWFsb2csXHJcblx0XHRcdGNvbmZpZzoge1xyXG5cdFx0XHRcdHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRklMRV9NQU5BR0VSLkNPUFlfT1JfTU9WRScpLFxyXG5cdFx0XHRcdGNvbnRlbnRUZW1wbGF0ZTogdGhpcy5jb250ZW50VGVtcGxhdGUsXHJcblx0XHRcdFx0YWN0aW9uc1RlbXBsYXRlOiB0aGlzLmFjdGlvbnNUZW1wbGF0ZVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0dGhpcy5udXhlb0RpYWxvZ1NlcnZpY2VcclxuXHRcdFx0Lm9wZW4ob3B0aW9ucylcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jYW5jZWwoKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cdGNhbmNlbCgpIHtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxuXHRzZWxlY3RJdGVtKGUpIHtcclxuXHRcdHRoaXMuZGlzYWJsZSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jdXJyZW50SXRlbSA9IGUuaXRlbURhdGE7XHJcblx0fVxyXG5cdGNyZWF0ZVRyZWVOb2RlQ2hpbGRyZW4gPSAocGFyZW50KSA9PiB7XHJcblx0XHRsZXQgbXlwYXJlbnQgPSBwYXJlbnQgPyBwYXJlbnQua2V5IDogdGhpcy5yb290Rm9sZGVyO1xyXG5cdFx0bGV0IG15b2JzO1xyXG5cdFx0aWYgKG15cGFyZW50ID09PSB0aGlzLnBhZ2VDb25maWd1cmF0aW9ucy5yb290TmFtZSkge1xyXG5cdFx0XHQvLyB3aGVuIGl0IGlzIHJvb3Qgb2YgZmlsZSBsaXN0IHRoZW4gdXNlZCBwYXNzZWQgcm9vdCBlbnRyaWVzIGFuZCBmb3Igcm9vdCBvZlxyXG5cdFx0XHQvLyBteSBmaWxlcyBvciBhbnkgb3RoZXIgZm9sZGVyIHVzZSBnZXR0aW5nIGNoaWxkcyBmb3IgdGhhdCBmb2xkZXIgd2l0aCBpdHMgaWRcclxuXHRcdFx0bXlvYnMgPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5wYXJzZU5vZGVDaGlsZHJlbihcclxuXHRcdFx0XHRvZih0aGlzLnJvb3RFbnRyaWVzKSxcclxuXHRcdFx0XHR0aGlzLnBhZ2VDb25maWd1cmF0aW9ucyxcclxuXHRcdFx0XHRwYXJlbnRcclxuXHRcdFx0KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG15b2JzID0gdGhpcy5maWxlTWFuYWdlclNlcnZpY2UuY3JlYXRlVHJlZU5vZGVDaGlsZHJlbihteXBhcmVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbXlvYnM7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhwYXJlbnQpO1xyXG5cdFx0Ly8gbGV0IG9icyA9IHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmdldFRyZWVOb2RlQ2hpbGRyZW4obXlwYXJlbnQpO1xyXG5cdFx0Ly8gcmV0dXJuIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLnBhcnNlTm9kZUNoaWxkcmVuKG9icywgcGFyZW50KTtcclxuXHR9O1xyXG5cclxuXHRtb3ZlOiBEaWFsb2dBY3Rpb25UeXBlID0gKGFuc3dlcikgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmRpcmVjdG9yeT8uZGF0YUl0ZW0/LmlkICE9PSB0aGlzLmN1cnJlbnRJdGVtLmlkICYmXHJcblx0XHRcdCF0aGlzLmN1cnJlbnRJdGVtLmVudGl0eS5wYXRoLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRJdGVtLm5hbWUpXHJcblx0XHQpIHtcclxuXHRcdFx0Ly8gdGhpcy5jdXJyZW50UGF0aCA9ICcnO1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5maWxlTWFuYWdlclNlcnZpY2VcclxuXHRcdFx0XHQubW92ZVRvKHRoaXMuY3VycmVudEl0ZW0sIHRoaXMuc2VsZWN0ZWRJdGVtcylcclxuXHRcdFx0XHQucGlwZShcclxuXHRcdFx0XHRcdHRhcChcclxuXHRcdFx0XHRcdFx0KHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMudmlzaWJsZSA9IGFuc3dlcjtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNlbGVjdGVkRm9sZGVyLm5leHQodGhpcy5jdXJyZW50SXRlbS5pZCk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcblx0XHRcdFx0XHRcdFx0XHQnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdFx0XHQnVE9BU1RFUi5TVUNDRVNTJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdUT0FTVEVSLkRPQ1VNRU5UX01PVkVEJ1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnZpc2libGUgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG5cdFx0XHRcdFx0XHRcdFx0J2Vycm9yJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdUT0FTVEVSLkVSUk9SJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdUT0FTVEVSLkRPQ1VNRU5UX01PVkVEX0VSUk9SJ1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpO1xyXG5cdFx0fSBlbHNlXHJcblx0XHRcdHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG5cdFx0XHRcdCdlcnJvcicsXHJcblx0XHRcdFx0J1RPQVNURVIuRVJST1InLFxyXG5cdFx0XHRcdCdUT0FTVEVSLkZBSUxFRF9UT19NT1ZFJ1xyXG5cdFx0XHQpO1xyXG5cdFx0cmV0dXJuIG9mKG51bGwpO1xyXG5cdH07XHJcbn1cclxuIiwiPCEtLSA8ZHgtcG9wdXAgY2xhc3M9XCJwb3BVcFBhcmVudFwiIFtydGxFbmFibGVkXT1cInJ0bEVuYWJsZWRcIiBpZD1cInBob3RvLXBvcHVwXCIgW3dpZHRoXT1cIjUwMFwiIFtoZWlnaHRdPVwiNTAwXCJcclxuICAgIHRpdGxlPVwie3sgJ0ZJTEVfTUFOQUdFUi5DT1BZX09SX01PVkUnIHwgdHJhbnNsYXRlIH19XCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCJcclxuICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cInRydWVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTRcIiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICAgIDxkeC1zY3JvbGwtdmlldyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdHJlZS12aWV3IFtydGxFbmFibGVkXT1cInJ0bEVuYWJsZWRcIiBpZD1cInRyZWVMaXN0XCIgW3Jvb3RWYWx1ZV09XCJyb290Rm9sZGVyXCIga2V5RXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiBoYXNJdGVtc0V4cHI9XCJpc0V4cGFuZGVkXCIgZGF0YVN0cnVjdHVyZT1cInBsYWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3JlYXRlQ2hpbGRyZW5dPVwiY3JlYXRlVHJlZU5vZGVDaGlsZHJlblwiIFt3aWR0aF09XCI0NjVcIiAob25JdGVtQ2xpY2spPVwic2VsZWN0SXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2R4LXRyZWUtdmlldz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keC1zY3JvbGwtdmlldz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGR4aS10b29sYmFyLWl0ZW0gdG9vbGJhcj1cImJvdHRvbVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIHB4LTVcIiAoY2xpY2spPVwibW92ZShmYWxzZSlcIj5cclxuICAgICAgICAgICAge3sgXCJCVVRUT05TLk1PVkVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9keGktdG9vbGJhci1pdGVtPlxyXG4gICAgPGR4aS10b29sYmFyLWl0ZW0gdG9vbGJhcj1cImJvdHRvbVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gcHgtNVwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxyXG4gICAgICAgICAgICB7eyBcIkJVVFRPTlMuQ0FOQ0VMXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZHhpLXRvb2xiYXItaXRlbT5cclxuPC9keC1wb3B1cD4gLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cclxuXHQ8ZGl2IGNsYXNzPVwicC00XCI+XHJcblx0XHQ8ZHgtc2Nyb2xsLXZpZXcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG5cdFx0XHRcdDxkeC10cmVlLXZpZXdcclxuXHRcdFx0XHRcdFtydGxFbmFibGVkXT1cInJ0bEVuYWJsZWRcIlxyXG5cdFx0XHRcdFx0aWQ9XCJ0cmVlTGlzdFwiXHJcblx0XHRcdFx0XHRbcm9vdFZhbHVlXT1cInJvb3RGb2xkZXJcIlxyXG5cdFx0XHRcdFx0a2V5RXhwcj1cImlkXCJcclxuXHRcdFx0XHRcdGRpc3BsYXlFeHByPVwibmFtZVwiXHJcblx0XHRcdFx0XHRoYXNJdGVtc0V4cHI9XCJpc0V4cGFuZGVkXCJcclxuXHRcdFx0XHRcdGRhdGFTdHJ1Y3R1cmU9XCJwbGFpblwiXHJcblx0XHRcdFx0XHRbY3JlYXRlQ2hpbGRyZW5dPVwiY3JlYXRlVHJlZU5vZGVDaGlsZHJlblwiXHJcblx0XHRcdFx0XHRbd2lkdGhdPVwiNDY1XCJcclxuXHRcdFx0XHRcdChvbkl0ZW1DbGljayk9XCJzZWxlY3RJdGVtKCRldmVudClcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHQ8L2R4LXRyZWUtdmlldz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2R4LXNjcm9sbC12aWV3PlxyXG5cdDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25zVGVtcGxhdGUgbGV0LWRpYWxvZz1cImRpYWxvZ1wiPlxyXG5cdDxidXR0b25cclxuXHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlXCJcclxuXHRcdGNsYXNzPVwic3VibWlzc2lvbi1idXR0b24gcHgtNVwiXHJcblx0XHQoY2xpY2spPVwiZGlhbG9nLmV4ZWN1dGVBY3Rpb24obW92ZSwgW2ZhbHNlXSlcIlxyXG5cdD5cclxuXHRcdHt7ICdCVVRUT05TLk1PVkUnIHwgdHJhbnNsYXRlIH19XHJcblx0PC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|