@hmcts/ccd-case-ui-toolkit 5.0.25-case-file-view-document-count → 5.0.25-case-file-view-document-tree-functionalities-v2
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/hmcts-ccd-case-ui-toolkit.umd.js +260 -789
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
- package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +15 -19
- package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +4 -4
- package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.js +116 -321
- package/esm2015/lib/shared/components/palette/case-file-view/components/index.js +1 -4
- package/esm2015/lib/shared/components/palette/palette.module.js +4 -20
- package/esm2015/lib/shared/components/palette/utils/is-compound.pipe.js +2 -2
- package/esm2015/lib/shared/components/search-result/search-result.component.js +43 -43
- package/esm2015/lib/shared/domain/case-file-view/document-tree-node.model.js +6 -0
- package/esm2015/lib/shared/domain/case-file-view/index.js +2 -2
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +240 -724
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
- package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +1 -1
- package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +10 -7
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-file-view/components/index.d.ts +0 -3
- package/lib/shared/components/palette/case-file-view/components/index.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts +22 -26
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/domain/case-file-view/document-tree-node.model.d.ts +11 -0
- package/lib/shared/domain/case-file-view/document-tree-node.model.d.ts.map +1 -0
- package/lib/shared/domain/case-file-view/index.d.ts +1 -1
- package/lib/shared/domain/case-file-view/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.js +0 -46
- package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.js +0 -38
- package/esm2015/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.js +0 -2
- package/esm2015/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.js +0 -100
- package/esm2015/lib/shared/components/palette/case-file-view/components/shared/index.js +0 -2
- package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +0 -93
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.d.ts +0 -15
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.d.ts.map +0 -1
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.d.ts +0 -13
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.d.ts.map +0 -1
- package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.d.ts +0 -6
- package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.d.ts.map +0 -1
- package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts +0 -13
- package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts.map +0 -1
- package/lib/shared/components/palette/case-file-view/components/shared/index.d.ts +0 -2
- package/lib/shared/components/palette/case-file-view/components/shared/index.d.ts.map +0 -1
- package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts +0 -10
- package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +0 -1
|
@@ -1,62 +1,76 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, Input
|
|
1
|
+
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
4
|
import { Observable, of } from 'rxjs';
|
|
4
|
-
import {
|
|
5
|
+
import { switchMap, tap } from 'rxjs/operators';
|
|
6
|
+
import { DocumentTreeNodeType } from '../../../../../domain/case-file-view';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
7
|
-
import * as i2 from "@angular/
|
|
8
|
-
import * as i3 from "
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
i0.ɵɵelementStart(0, "cdk-nested-tree-node", 8);
|
|
13
|
-
i0.ɵɵelementStart(1, "button", 9);
|
|
14
|
-
i0.ɵɵelementStart(2, "div", 10);
|
|
15
|
-
i0.ɵɵelement(3, "img", 11);
|
|
8
|
+
import * as i1 from "@angular/forms";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "@angular/cdk/tree";
|
|
11
|
+
function CaseFileViewFolderComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
i0.ɵɵelementStart(0, "div");
|
|
13
|
+
i0.ɵɵtext(1, " No results found ");
|
|
16
14
|
i0.ɵɵelementEnd();
|
|
17
|
-
|
|
15
|
+
} }
|
|
16
|
+
function CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_3_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelementStart(0, "cdk-nested-tree-node", 10);
|
|
18
|
+
i0.ɵɵelementStart(1, "div", 11);
|
|
19
|
+
i0.ɵɵelementStart(2, "button", 12);
|
|
20
|
+
i0.ɵɵelement(3, "img", 13);
|
|
21
|
+
i0.ɵɵelementStart(4, "div", 14);
|
|
18
22
|
i0.ɵɵtext(5);
|
|
19
23
|
i0.ɵɵelementEnd();
|
|
20
|
-
i0.ɵɵelementStart(6, "div", 13);
|
|
21
|
-
i0.ɵɵelementStart(7, "ccd-case-file-view-folder-document-actions", 14);
|
|
22
|
-
i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_cdk_nested_tree_node_8_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return ctx_r4.triggerDocumentAction("changeFolder"); })("openInANewTabAction", function CaseFileViewFolderComponent_cdk_nested_tree_node_8_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.triggerDocumentAction("openInANewTab"); })("downloadAction", function CaseFileViewFolderComponent_cdk_nested_tree_node_8_Template_ccd_case_file_view_folder_document_actions_downloadAction_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.triggerDocumentAction("download"); })("printAction", function CaseFileViewFolderComponent_cdk_nested_tree_node_8_Template_ccd_case_file_view_folder_document_actions_printAction_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.triggerDocumentAction("print"); });
|
|
23
|
-
i0.ɵɵelementEnd();
|
|
24
24
|
i0.ɵɵelementEnd();
|
|
25
25
|
i0.ɵɵelementEnd();
|
|
26
26
|
i0.ɵɵelementEnd();
|
|
27
27
|
} if (rf & 2) {
|
|
28
|
-
const
|
|
28
|
+
const node_r4 = ctx.$implicit;
|
|
29
29
|
i0.ɵɵadvance(5);
|
|
30
|
-
i0.ɵɵtextInterpolate(
|
|
30
|
+
i0.ɵɵtextInterpolate(node_r4.name);
|
|
31
31
|
} }
|
|
32
|
-
function
|
|
33
|
-
i0.ɵɵelementStart(0, "cdk-nested-tree-node",
|
|
34
|
-
i0.ɵɵelementStart(1, "
|
|
35
|
-
i0.ɵɵelementStart(2, "
|
|
36
|
-
i0.ɵɵelement(3, "img",
|
|
37
|
-
i0.ɵɵelementStart(4, "
|
|
32
|
+
function CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_4_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "cdk-nested-tree-node", 10);
|
|
34
|
+
i0.ɵɵelementStart(1, "div", 11);
|
|
35
|
+
i0.ɵɵelementStart(2, "button", 15);
|
|
36
|
+
i0.ɵɵelement(3, "img", 16);
|
|
37
|
+
i0.ɵɵelementStart(4, "div", 17);
|
|
38
38
|
i0.ɵɵtext(5);
|
|
39
39
|
i0.ɵɵelementEnd();
|
|
40
40
|
i0.ɵɵelementEnd();
|
|
41
|
-
i0.ɵɵelementStart(6, "span", 19);
|
|
42
|
-
i0.ɵɵtext(7);
|
|
43
41
|
i0.ɵɵelementEnd();
|
|
44
|
-
i0.ɵɵ
|
|
45
|
-
i0.ɵɵ
|
|
46
|
-
i0.ɵɵelementContainer(9, 20);
|
|
42
|
+
i0.ɵɵelementStart(6, "div");
|
|
43
|
+
i0.ɵɵelementContainer(7, 18);
|
|
47
44
|
i0.ɵɵelementEnd();
|
|
48
45
|
i0.ɵɵelementEnd();
|
|
49
46
|
} if (rf & 2) {
|
|
50
|
-
const
|
|
51
|
-
const
|
|
47
|
+
const node_r5 = ctx.$implicit;
|
|
48
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
52
49
|
i0.ɵɵadvance(2);
|
|
53
|
-
i0.ɵɵattribute("aria-label", "toggle " +
|
|
54
|
-
i0.ɵɵadvance(
|
|
55
|
-
i0.ɵɵ
|
|
50
|
+
i0.ɵɵattribute("aria-label", "toggle " + node_r5.name);
|
|
51
|
+
i0.ɵɵadvance(1);
|
|
52
|
+
i0.ɵɵproperty("src", ctx_r3.nestedTreeControl.isExpanded(node_r5) ? "/assets/images/folder-open.png" : "/assets/images/folder.png", i0.ɵɵsanitizeUrl);
|
|
56
53
|
i0.ɵɵadvance(2);
|
|
57
|
-
i0.ɵɵtextInterpolate(
|
|
54
|
+
i0.ɵɵtextInterpolate(node_r5.name);
|
|
55
|
+
i0.ɵɵadvance(1);
|
|
56
|
+
i0.ɵɵclassProp("document-tree-invisible", !ctx_r3.nestedTreeControl.isExpanded(node_r5));
|
|
57
|
+
} }
|
|
58
|
+
function CaseFileViewFolderComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
60
|
+
i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_5_div_1_Template, 2, 0, "div", 6);
|
|
61
|
+
i0.ɵɵelementStart(2, "cdk-tree", 7);
|
|
62
|
+
i0.ɵɵtemplate(3, CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_3_Template, 6, 1, "cdk-nested-tree-node", 8);
|
|
63
|
+
i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_4_Template, 8, 5, "cdk-nested-tree-node", 9);
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
} if (rf & 2) {
|
|
67
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
58
68
|
i0.ɵɵadvance(1);
|
|
59
|
-
i0.ɵɵ
|
|
69
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.nestedDataSource || ctx_r0.nestedDataSource.length === 0);
|
|
70
|
+
i0.ɵɵadvance(1);
|
|
71
|
+
i0.ɵɵproperty("dataSource", ctx_r0.nestedDataSource)("treeControl", ctx_r0.nestedTreeControl);
|
|
72
|
+
i0.ɵɵadvance(2);
|
|
73
|
+
i0.ɵɵproperty("cdkTreeNodeDefWhen", ctx_r0.nestedChildren);
|
|
60
74
|
} }
|
|
61
75
|
export class CaseFileViewFolderComponent {
|
|
62
76
|
constructor() {
|
|
@@ -66,333 +80,114 @@ export class CaseFileViewFolderComponent {
|
|
|
66
80
|
this.nestedTreeControl = new NestedTreeControl(this.getChildren);
|
|
67
81
|
}
|
|
68
82
|
ngOnInit() {
|
|
83
|
+
this.documentFilterFormGroup = new FormGroup({});
|
|
84
|
+
this.documentSearchFormControl = new FormControl('');
|
|
85
|
+
this.documentFilterFormGroup.addControl(CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME, this.documentSearchFormControl);
|
|
86
|
+
// Listen to search input and initiate filter documents if at least three characters entered
|
|
87
|
+
this.documentFilterSubscription = this.documentSearchFormControl.valueChanges.pipe(tap((searchTerm) => this.searchTermLength = searchTerm.length), switchMap((searchTerm) => this.filter(searchTerm.toLowerCase()).pipe())).subscribe(documentTreeData => {
|
|
88
|
+
this.nestedDataSource = documentTreeData;
|
|
89
|
+
this.nestedTreeControl.dataNodes = documentTreeData;
|
|
90
|
+
this.searchTermLength >= CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS
|
|
91
|
+
? this.nestedTreeControl.expandAll()
|
|
92
|
+
: this.nestedTreeControl.collapseAll();
|
|
93
|
+
});
|
|
94
|
+
// Subscribe to the input categories and documents, and generate tree data and initialise cdk tree
|
|
69
95
|
this.categoriesAndDocumentsSubscription = this.categoriesAndDocuments.subscribe(categoriesAndDocuments => {
|
|
70
|
-
|
|
71
|
-
const categories = this.loadCategories(); // categoriesAndDocuments.categories;
|
|
96
|
+
const categories = categoriesAndDocuments.categories;
|
|
72
97
|
// Generate document tree data from categories
|
|
73
|
-
|
|
98
|
+
this.documentTreeData = this.generateTreeData(categories);
|
|
74
99
|
// Append uncategorised documents
|
|
75
100
|
if (categoriesAndDocuments.uncategorised_documents && categoriesAndDocuments.uncategorised_documents.length > 0) {
|
|
76
101
|
const uncategorisedDocuments = this.getUncategorisedDocuments(categoriesAndDocuments.uncategorised_documents);
|
|
77
|
-
|
|
102
|
+
this.documentTreeData.push(uncategorisedDocuments);
|
|
78
103
|
}
|
|
79
104
|
// Initialise cdk tree with generated data
|
|
80
|
-
this.nestedDataSource =
|
|
105
|
+
this.nestedDataSource = this.documentTreeData;
|
|
106
|
+
this.nestedTreeControl.dataNodes = this.documentTreeData;
|
|
81
107
|
});
|
|
82
108
|
}
|
|
83
109
|
generateTreeData(categories) {
|
|
84
|
-
return categories.reduce((tree, node) =>
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
]
|
|
93
|
-
|
|
110
|
+
return categories.reduce((tree, node) => [
|
|
111
|
+
...tree,
|
|
112
|
+
...[
|
|
113
|
+
{
|
|
114
|
+
name: node.category_name,
|
|
115
|
+
type: DocumentTreeNodeType.FOLDER,
|
|
116
|
+
children: [...this.generateTreeData(node.sub_categories), ...this.getDocuments(node.documents)]
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
], []);
|
|
94
120
|
}
|
|
95
121
|
getDocuments(documents) {
|
|
96
122
|
const documentsToReturn = [];
|
|
97
123
|
documents.forEach(document => {
|
|
98
|
-
|
|
99
|
-
documentTreeNode.name = document.document_filename;
|
|
100
|
-
documentTreeNode.type = 'document';
|
|
101
|
-
documentsToReturn.push(documentTreeNode);
|
|
124
|
+
documentsToReturn.push({ name: document.document_filename, type: DocumentTreeNodeType.DOCUMENT });
|
|
102
125
|
});
|
|
103
126
|
return documentsToReturn;
|
|
104
127
|
}
|
|
105
128
|
getUncategorisedDocuments(uncategorisedDocuments) {
|
|
106
129
|
const documents = [];
|
|
107
130
|
uncategorisedDocuments.forEach(document => {
|
|
108
|
-
|
|
109
|
-
documentTreeNode.name = document.document_filename;
|
|
110
|
-
documentTreeNode.type = 'document';
|
|
111
|
-
documents.push(documentTreeNode);
|
|
112
|
-
});
|
|
113
|
-
const uncategorisedNode = new DocumentTreeNode();
|
|
114
|
-
uncategorisedNode.name = CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE;
|
|
115
|
-
uncategorisedNode.type = 'category';
|
|
116
|
-
uncategorisedNode.children = documents;
|
|
117
|
-
return uncategorisedNode;
|
|
118
|
-
}
|
|
119
|
-
sortDataSourceAscAlphabetically() {
|
|
120
|
-
const sortedData = this.nestedDataSource.map(item => {
|
|
121
|
-
item.sortChildrenAscending();
|
|
122
|
-
const newDocumentTreeNode = new DocumentTreeNode();
|
|
123
|
-
newDocumentTreeNode.name = item.name;
|
|
124
|
-
newDocumentTreeNode.type = item.type;
|
|
125
|
-
newDocumentTreeNode.children = item.children;
|
|
126
|
-
return newDocumentTreeNode;
|
|
131
|
+
documents.push({ name: document.document_filename, type: DocumentTreeNodeType.DOCUMENT });
|
|
127
132
|
});
|
|
128
|
-
|
|
133
|
+
return { name: CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE, type: DocumentTreeNodeType.FOLDER, children: documents };
|
|
129
134
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return
|
|
134
|
-
});
|
|
135
|
-
this.updateNodeData(sortedData);
|
|
136
|
-
}
|
|
137
|
-
triggerDocumentAction(actionType) {
|
|
138
|
-
switch (actionType) {
|
|
139
|
-
case ('changeFolder'):
|
|
140
|
-
console.log('changeFolder!');
|
|
141
|
-
break;
|
|
142
|
-
case ('openInANewTab'):
|
|
143
|
-
console.log('openInANewTab!');
|
|
144
|
-
break;
|
|
145
|
-
case ('download'):
|
|
146
|
-
console.log('download!');
|
|
147
|
-
break;
|
|
148
|
-
case ('print'):
|
|
149
|
-
console.log('print!');
|
|
150
|
-
break;
|
|
151
|
-
default:
|
|
152
|
-
return;
|
|
135
|
+
filter(searchTerm) {
|
|
136
|
+
// Make a copy of the data so we do not mutate the original
|
|
137
|
+
function copy(node) {
|
|
138
|
+
return Object.assign({}, node);
|
|
153
139
|
}
|
|
140
|
+
let filteredData = this.documentTreeData;
|
|
141
|
+
if (searchTerm && searchTerm.length >= CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS && this.documentFilterFormGroup.controls[CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME].value.length > 2) {
|
|
142
|
+
filteredData = this.documentTreeData.map(copy).filter(function filterTreeData(node) {
|
|
143
|
+
if (node.name && node.name.toLowerCase().includes(searchTerm) && node.type === DocumentTreeNodeType.DOCUMENT) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
// Call recursively if node has children
|
|
147
|
+
if (node.children) {
|
|
148
|
+
return (node.children = node.children.map(copy).filter(filterTreeData)).length;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return of(filteredData);
|
|
154
153
|
}
|
|
155
154
|
ngOnDestroy() {
|
|
156
155
|
if (this.categoriesAndDocumentsSubscription) {
|
|
157
156
|
this.categoriesAndDocumentsSubscription.unsubscribe();
|
|
158
157
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return item.name;
|
|
163
|
-
});
|
|
164
|
-
this.nestedTreeControl.collapseAll();
|
|
165
|
-
this.nestedDataSource = data.map((item) => {
|
|
166
|
-
const newDocumentTreeNode = new DocumentTreeNode();
|
|
167
|
-
newDocumentTreeNode.name = item.name;
|
|
168
|
-
newDocumentTreeNode.type = item.type;
|
|
169
|
-
newDocumentTreeNode.children = item.children;
|
|
170
|
-
return newDocumentTreeNode;
|
|
171
|
-
});
|
|
172
|
-
const flattenedArray = this.nestedDataSource.map((item) => {
|
|
173
|
-
return item.flattenedAll;
|
|
174
|
-
}).flat();
|
|
175
|
-
const newObjects = flattenedArray.filter((item) => {
|
|
176
|
-
return prevSelected.includes(item.name);
|
|
177
|
-
});
|
|
178
|
-
newObjects.forEach(object => this.nestedTreeControl.expand(object));
|
|
179
|
-
}
|
|
180
|
-
loadCategories() {
|
|
181
|
-
return [
|
|
182
|
-
{
|
|
183
|
-
category_id: 'Beers',
|
|
184
|
-
category_name: 'Beers',
|
|
185
|
-
category_order: 1,
|
|
186
|
-
documents: [
|
|
187
|
-
{
|
|
188
|
-
document_url: '/test',
|
|
189
|
-
document_filename: 'Lager encyclopedia',
|
|
190
|
-
document_binary_url: '/test/binary',
|
|
191
|
-
attribute_path: '',
|
|
192
|
-
upload_timestamp: ''
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
document_url: '/test',
|
|
196
|
-
document_filename: 'Beers encyclopedia',
|
|
197
|
-
document_binary_url: '/test/binary',
|
|
198
|
-
attribute_path: '',
|
|
199
|
-
upload_timestamp: ''
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
document_url: '/test',
|
|
203
|
-
document_filename: 'Ale encyclopedia',
|
|
204
|
-
document_binary_url: '/test/binary',
|
|
205
|
-
attribute_path: '',
|
|
206
|
-
upload_timestamp: ''
|
|
207
|
-
}
|
|
208
|
-
],
|
|
209
|
-
sub_categories: [
|
|
210
|
-
{
|
|
211
|
-
category_id: 'BeersBitters',
|
|
212
|
-
category_name: 'Bitters',
|
|
213
|
-
category_order: 1,
|
|
214
|
-
documents: [],
|
|
215
|
-
sub_categories: []
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
category_id: 'BeersAmerican',
|
|
219
|
-
category_name: 'American',
|
|
220
|
-
category_order: 2,
|
|
221
|
-
documents: [],
|
|
222
|
-
sub_categories: []
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
category_id: 'BeersAsian',
|
|
226
|
-
category_name: 'Asian',
|
|
227
|
-
category_order: 3,
|
|
228
|
-
documents: [],
|
|
229
|
-
sub_categories: []
|
|
230
|
-
}
|
|
231
|
-
]
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
category_id: 'Wines',
|
|
235
|
-
category_name: 'Wines',
|
|
236
|
-
category_order: 2,
|
|
237
|
-
documents: [],
|
|
238
|
-
sub_categories: [
|
|
239
|
-
{
|
|
240
|
-
category_id: 'WinesFrench',
|
|
241
|
-
category_name: 'French',
|
|
242
|
-
category_order: 1,
|
|
243
|
-
documents: [],
|
|
244
|
-
sub_categories: []
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
category_id: 'WinesItalian',
|
|
248
|
-
category_name: 'Italian',
|
|
249
|
-
category_order: 2,
|
|
250
|
-
documents: [],
|
|
251
|
-
sub_categories: []
|
|
252
|
-
}
|
|
253
|
-
]
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
category_id: 'Spirits',
|
|
257
|
-
category_name: 'Spirits',
|
|
258
|
-
category_order: 3,
|
|
259
|
-
documents: [],
|
|
260
|
-
sub_categories: [
|
|
261
|
-
{
|
|
262
|
-
category_id: 'SpiritsWhisky',
|
|
263
|
-
category_name: 'Scotch whisky',
|
|
264
|
-
category_order: 1,
|
|
265
|
-
documents: [],
|
|
266
|
-
sub_categories: [
|
|
267
|
-
{
|
|
268
|
-
category_id: 'WhiskyHighland',
|
|
269
|
-
category_name: 'Highland',
|
|
270
|
-
category_order: 1,
|
|
271
|
-
documents: [],
|
|
272
|
-
sub_categories: [
|
|
273
|
-
{
|
|
274
|
-
category_id: 'WhiskyHighland1',
|
|
275
|
-
category_name: 'Highland 1',
|
|
276
|
-
category_order: 1,
|
|
277
|
-
documents: [],
|
|
278
|
-
sub_categories: []
|
|
279
|
-
}
|
|
280
|
-
]
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
category_id: 'WhiskyLowland',
|
|
284
|
-
category_name: 'Lowland',
|
|
285
|
-
category_order: 2,
|
|
286
|
-
documents: [],
|
|
287
|
-
sub_categories: [
|
|
288
|
-
{
|
|
289
|
-
category_id: 'WhiskyLowland1',
|
|
290
|
-
category_name: 'Lowland 1',
|
|
291
|
-
category_order: 1,
|
|
292
|
-
documents: [
|
|
293
|
-
{
|
|
294
|
-
document_url: '/test',
|
|
295
|
-
document_filename: 'Details about Whisky Lowland 1',
|
|
296
|
-
document_binary_url: '/test/binary',
|
|
297
|
-
attribute_path: '',
|
|
298
|
-
upload_timestamp: ''
|
|
299
|
-
}
|
|
300
|
-
],
|
|
301
|
-
sub_categories: []
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
category_id: 'WhiskyLowland2',
|
|
305
|
-
category_name: 'Lowland 2',
|
|
306
|
-
category_order: 2,
|
|
307
|
-
documents: [],
|
|
308
|
-
sub_categories: []
|
|
309
|
-
}
|
|
310
|
-
]
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
category_id: 'WhiskyIslay',
|
|
314
|
-
category_name: 'Islay',
|
|
315
|
-
category_order: 3,
|
|
316
|
-
documents: [
|
|
317
|
-
{
|
|
318
|
-
document_url: '/test',
|
|
319
|
-
document_filename: 'Details about Whisky Islay',
|
|
320
|
-
document_binary_url: '/test/binary',
|
|
321
|
-
attribute_path: '',
|
|
322
|
-
upload_timestamp: ''
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
document_url: '/test',
|
|
326
|
-
document_filename: 'More information about Whisky Islay',
|
|
327
|
-
document_binary_url: '/test/binary',
|
|
328
|
-
attribute_path: '',
|
|
329
|
-
upload_timestamp: ''
|
|
330
|
-
}
|
|
331
|
-
],
|
|
332
|
-
sub_categories: []
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
category_id: 'WhiskySpeyside',
|
|
336
|
-
category_name: 'Speyside',
|
|
337
|
-
category_order: 4,
|
|
338
|
-
documents: [],
|
|
339
|
-
sub_categories: []
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
category_id: 'WhiskyCampbeltown',
|
|
343
|
-
category_name: 'Campbeltown',
|
|
344
|
-
category_order: 5,
|
|
345
|
-
documents: [],
|
|
346
|
-
sub_categories: []
|
|
347
|
-
}
|
|
348
|
-
]
|
|
349
|
-
}
|
|
350
|
-
]
|
|
351
|
-
}
|
|
352
|
-
];
|
|
158
|
+
if (this.documentFilterSubscription) {
|
|
159
|
+
this.documentFilterSubscription.unsubscribe();
|
|
160
|
+
}
|
|
353
161
|
}
|
|
354
162
|
}
|
|
355
163
|
CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE = 'Uncategorised documents';
|
|
164
|
+
CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME = 'documentSearchFormControl';
|
|
165
|
+
CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS = 3;
|
|
356
166
|
CaseFileViewFolderComponent.ɵfac = function CaseFileViewFolderComponent_Factory(t) { return new (t || CaseFileViewFolderComponent)(); };
|
|
357
|
-
CaseFileViewFolderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]],
|
|
358
|
-
i0.ɵɵviewQuery(_c0, 3);
|
|
359
|
-
} if (rf & 2) {
|
|
360
|
-
let _t;
|
|
361
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tree = _t.first);
|
|
362
|
-
} }, inputs: { categoriesAndDocuments: "categoriesAndDocuments" }, decls: 10, vars: 3, consts: [[1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], [1, "document-tree-container"], [3, "dataSource", "treeControl"], ["tree", ""], ["class", "document-tree-node", 4, "cdkTreeNodeDef"], ["class", "document-tree-node", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-node"], [1, "node"], ["mat-icon-button", "", "disabled", "", 1, "node__icon"], ["src", "/assets/images/document.png", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-options"], [3, "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction"], ["cdkTreeNodeToggle", "", 1, "node"], ["mat-icon-button", "", 1, "node__icon"], ["src", "/assets/images/folder.png", "alt", "Folder icon", 1, "node__iconImg"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
CaseFileViewFolderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments" }, decls: 6, vars: 2, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", 1, "form-control", "document-search"], [1, "documents-title"], ["class", "document-tree", 4, "ngIf"], [1, "document-tree"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-node", 4, "cdkTreeNodeDef"], ["class", "document-tree-node", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-node"], [1, "node"], ["mat-icon-button", "", 1, "node-button"], ["alt", "document image", "src", "/assets/images/document.png", 1, "icon"], [1, "node-name", "node-name-document"], ["mat-icon-button", "", "cdkTreeNodeToggle", "", 1, "node-button"], ["alt", "folder image", 1, "icon", 3, "src"], [1, "node-name", "node-name-folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
363
168
|
i0.ɵɵelementStart(0, "div", 0);
|
|
364
169
|
i0.ɵɵelementStart(1, "div", 1);
|
|
365
|
-
i0.ɵɵ
|
|
366
|
-
i0.ɵɵelementEnd();
|
|
367
|
-
i0.ɵɵelementStart(3, "div");
|
|
368
|
-
i0.ɵɵelementStart(4, "ccd-case-file-view-folder-sort", 2);
|
|
369
|
-
i0.ɵɵlistener("sortAscending", function CaseFileViewFolderComponent_Template_ccd_case_file_view_folder_sort_sortAscending_4_listener() { return ctx.sortDataSourceAscAlphabetically(); })("sortDescending", function CaseFileViewFolderComponent_Template_ccd_case_file_view_folder_sort_sortDescending_4_listener() { return ctx.sortDataSourceDescAlphabetically(); });
|
|
370
|
-
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵelementEnd();
|
|
170
|
+
i0.ɵɵelement(2, "input", 2);
|
|
372
171
|
i0.ɵɵelementEnd();
|
|
373
|
-
i0.ɵɵelementStart(
|
|
374
|
-
i0.ɵɵ
|
|
375
|
-
i0.ɵɵtemplate(8, CaseFileViewFolderComponent_cdk_nested_tree_node_8_Template, 8, 1, "cdk-nested-tree-node", 6);
|
|
376
|
-
i0.ɵɵtemplate(9, CaseFileViewFolderComponent_cdk_nested_tree_node_9_Template, 10, 5, "cdk-nested-tree-node", 7);
|
|
172
|
+
i0.ɵɵelementStart(3, "div", 3);
|
|
173
|
+
i0.ɵɵtext(4, "Documents");
|
|
377
174
|
i0.ɵɵelementEnd();
|
|
378
175
|
i0.ɵɵelementEnd();
|
|
176
|
+
i0.ɵɵtemplate(5, CaseFileViewFolderComponent_div_5_Template, 5, 4, "div", 4);
|
|
379
177
|
} if (rf & 2) {
|
|
380
|
-
i0.ɵɵadvance(
|
|
381
|
-
i0.ɵɵproperty("
|
|
382
|
-
i0.ɵɵadvance(
|
|
383
|
-
i0.ɵɵproperty("
|
|
384
|
-
} }, directives: [i1.
|
|
178
|
+
i0.ɵɵadvance(1);
|
|
179
|
+
i0.ɵɵproperty("formGroup", ctx.documentFilterFormGroup);
|
|
180
|
+
i0.ɵɵadvance(4);
|
|
181
|
+
i0.ɵɵproperty("ngIf", ctx.documentTreeData);
|
|
182
|
+
} }, directives: [i1.NgControlStatusGroup, i1.FormGroupDirective, i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlName, i2.NgIf, i3.CdkTree, i3.CdkTreeNodeDef, i3.CdkNestedTreeNode, i3.CdkTreeNodeToggle, i3.CdkTreeNodeOutlet], styles: [".document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #c9c9c9;padding-bottom:4px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{height:70%;padding:8px 8px 0;margin-bottom:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat 100% #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree[_ngcontent-%COMP%]{margin:4px;overflow-x:hidden;overflow-y:scroll;height:400px}.document-tree[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .document-tree[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0;list-style-type:none}.document-tree[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{display:block}.document-tree[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{padding-left:40px}.document-tree[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]{display:flex;padding:4px;white-space:nowrap}.document-tree[_ngcontent-%COMP%] .node[_ngcontent-%COMP%] .node-button[_ngcontent-%COMP%]{display:flex;background-color:#faf8f8;border:none;width:100%}.document-tree[_ngcontent-%COMP%] .node-button[_ngcontent-%COMP%]:hover{cursor:pointer}.document-tree[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:36px;height:36px;background-size:100%;border:0;background-color:#faf8f8}.document-tree[_ngcontent-%COMP%] .node-name[_ngcontent-%COMP%]{margin-left:10px}.document-tree[_ngcontent-%COMP%] .node-name-document[_ngcontent-%COMP%], .document-tree[_ngcontent-%COMP%] .node-name-folder[_ngcontent-%COMP%]{margin-top:8px;font-size:16px}.document-tree[_ngcontent-%COMP%] .document-count[_ngcontent-%COMP%]{color:#fff}.document-tree[_ngcontent-%COMP%]::-webkit-scrollbar{width:.5em}.document-tree[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}"] });
|
|
385
183
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
|
|
386
184
|
type: Component,
|
|
387
185
|
args: [{
|
|
388
186
|
selector: 'ccd-case-file-view-folder',
|
|
389
|
-
templateUrl: './case-file-view-folder.component.html',
|
|
390
187
|
styleUrls: ['./case-file-view-folder.component.scss'],
|
|
188
|
+
templateUrl: './case-file-view-folder.component.html'
|
|
391
189
|
}]
|
|
392
190
|
}], function () { return []; }, { categoriesAndDocuments: [{
|
|
393
191
|
type: Input
|
|
394
|
-
}], tree: [{
|
|
395
|
-
type: ViewChild,
|
|
396
|
-
args: ['tree', { static: true }]
|
|
397
192
|
}] }); })();
|
|
398
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBc0UsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7SUNVeEksK0NBQTRFO0lBQzFFLGlDQUFxQjtJQUNuQiwrQkFBaUQ7SUFDL0MsMEJBQWlGO0lBQ25GLGlCQUFNO0lBQ04sZ0NBQTRDO0lBQUEsWUFBYTtJQUFBLGlCQUFPO0lBQ2hFLCtCQUFvQztJQUNsQyxzRUFJaUQ7SUFIL0Msb1JBQTRDLGNBQWMsS0FBRSx5UUFDZixlQUFlLEtBREEsK1BBRXBCLFVBQVUsS0FGVSx5UEFHdkIsT0FBTyxLQUhnQjtJQUk5RCxpQkFBNkM7SUFD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QWE7Z0NBQzVCLGNBQWMsRUFBRSxDQUFDO2dDQUNqQixTQUFTLEVBQUUsRUFBRTtnQ0FDYixjQUFjLEVBQUUsRUFBRTs2QkFDbkI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztBQXJVdUIseURBQTZCLEdBQUcseUJBQXlCLENBQUM7c0dBRHZFLDJCQUEyQjtnRUFBM0IsMkJBQTJCOzs7Ozs7UUNWeEMsOEJBQXFDO1FBQ25DLDhCQUE0QztRQUFBLHlCQUFTO1FBQUEsaUJBQU07UUFDM0QsMkJBQUs7UUFDSCx5REFHQztRQUZDLGdKQUFpQixxQ0FBaUMsSUFBQyxxSUFDakMsc0NBQWtDLElBREQ7UUFFcEQsaUJBQWlDO1FBQ3BDLGlCQUFNO1FBQ1IsaUJBQU07UUFFTiw4QkFBcUM7UUFDbkMsc0NBQWtGO1FBRWhGLDhHQWV1QjtRQUV2QiwrR0FXdUI7UUFDekIsaUJBQVc7UUFDYixpQkFBTTs7UUFoQ1ksZUFBK0I7UUFBL0IsaURBQStCLHNDQUFBO1FBbUJJLGVBQW9CO1FBQXBCLHVEQUFvQjs7dUZEcEI1RCwyQkFBMkI7Y0FMdkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REO3NDQUlpQixzQkFBc0I7a0JBQXJDLEtBQUs7WUFPb0MsSUFBSTtrQkFBN0MsU0FBUzttQkFBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVHJlZSwgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdDYXRlZ29yeSwgQ2FzZUZpbGVWaWV3RG9jdW1lbnQsIENhdGVnb3JpZXNBbmREb2N1bWVudHMsIERvY3VtZW50VHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vY2FzZS1maWxlLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFVOQ0FURUdPUklTRURfRE9DVU1FTlRTX1RJVExFID0gJ1VuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzJztcblxuICBASW5wdXQoKSBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50czogT2JzZXJ2YWJsZTxDYXRlZ29yaWVzQW5kRG9jdW1lbnRzPjtcblxuICBwdWJsaWMgbmVzdGVkVHJlZUNvbnRyb2w6IE5lc3RlZFRyZWVDb250cm9sPERvY3VtZW50VHJlZU5vZGU+O1xuICBwdWJsaWMgbmVzdGVkRGF0YVNvdXJjZTogRG9jdW1lbnRUcmVlTm9kZVtdO1xuICBwdWJsaWMgY2F0ZWdvcmllczogQ2FzZUZpbGVWaWV3Q2F0ZWdvcnlbXSA9IFtdO1xuICBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHRyZWU6IENka1RyZWU8RG9jdW1lbnRUcmVlTm9kZT47XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBvZihub2RlLmNoaWxkcmVuKTtcbiAgcHVibGljIG5lc3RlZENoaWxkcmVuID0gKF86IG51bWJlciwgbm9kZURhdGE6IERvY3VtZW50VHJlZU5vZGUpID0+IG5vZGVEYXRhLmNoaWxkcmVuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT4odGhpcy5nZXRDaGlsZHJlbik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnN1YnNjcmliZShjYXRlZ29yaWVzQW5kRG9jdW1lbnRzID0+IHtcbiAgICAgIC8vIFVzaW5nIHRoZSBtb2NrIGRhdGEgZm9yIG5vdyBhcyB3ZSBoYXZlIHRvIGRpc3BsYXkgdGhlIGRvY3VtZW50cyBhcyB3ZWxsIGZvciBkZW1vIHB1cnBvc2VcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmxvYWRDYXRlZ29yaWVzKCk7IC8vIGNhdGVnb3JpZXNBbmREb2N1bWVudHMuY2F0ZWdvcmllcztcbiAgICAgIC8vIEdlbmVyYXRlIGRvY3VtZW50IHRyZWUgZGF0YSBmcm9tIGNhdGVnb3JpZXNcbiAgICAgIGNvbnN0IHRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdHJlZURhdGEucHVzaCh1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIC8vIEluaXRpYWxpc2UgY2RrIHRyZWUgd2l0aCBnZW5lcmF0ZWQgZGF0YVxuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gdHJlZURhdGE7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVUcmVlRGF0YShjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdKTogRG9jdW1lbnRUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gY2F0ZWdvcmllcy5yZWR1Y2UoKHRyZWUsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0RvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gbm9kZS5jYXRlZ29yeV9uYW1lO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS50eXBlID0gJ2NhdGVnb3J5JztcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBbLi4udGhpcy5nZW5lcmF0ZVRyZWVEYXRhKG5vZGUuc3ViX2NhdGVnb3JpZXMpLCAuLi50aGlzLmdldERvY3VtZW50cyhub2RlLmRvY3VtZW50cyldO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50cmVlLFxuICAgICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLFxuICAgICAgXTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9jdW1lbnRzKGRvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGVbXSB7XG4gICAgY29uc3QgZG9jdW1lbnRzVG9SZXR1cm46IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIGRvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSAnZG9jdW1lbnQnO1xuXG4gICAgICBkb2N1bWVudHNUb1JldHVybi5wdXNoKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRvY3VtZW50c1RvUmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGdldFVuY2F0ZWdvcmlzZWREb2N1bWVudHModW5jYXRlZ29yaXNlZERvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGUge1xuICAgIGNvbnN0IGRvY3VtZW50czogRG9jdW1lbnRUcmVlTm9kZVtdID0gW107XG4gICAgdW5jYXRlZ29yaXNlZERvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSAnZG9jdW1lbnQnO1xuXG4gICAgICBkb2N1bWVudHMucHVzaChkb2N1bWVudFRyZWVOb2RlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVuY2F0ZWdvcmlzZWROb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS5uYW1lID0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LlVOQ0FURUdPUklTRURfRE9DVU1FTlRTX1RJVExFO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLnR5cGUgPSAnY2F0ZWdvcnknO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLmNoaWxkcmVuID0gZG9jdW1lbnRzO1xuXG4gICAgcmV0dXJuIHVuY2F0ZWdvcmlzZWROb2RlO1xuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlQXNjQWxwaGFiZXRpY2FsbHkoKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBpdGVtLnNvcnRDaGlsZHJlbkFzY2VuZGluZygpO1xuXG4gICAgICBjb25zdCBuZXdEb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuO1xuXG4gICAgICByZXR1cm4gbmV3RG9jdW1lbnRUcmVlTm9kZTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlTm9kZURhdGEoc29ydGVkRGF0YSk7XG4gIH1cbiAgcHVibGljIHNvcnREYXRhU291cmNlRGVzY0FscGhhYmV0aWNhbGx5KCkge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zb3J0Q2hpbGRyZW5EZXNjZW5kaW5nKCk7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlTm9kZURhdGEoc29ydGVkRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckRvY3VtZW50QWN0aW9uKGFjdGlvblR5cGU6ICdjaGFuZ2VGb2xkZXInIHwgJ29wZW5JbkFOZXdUYWInIHwgJ2Rvd25sb2FkJyB8ICdwcmludCcpIHtcbiAgICBzd2l0Y2goYWN0aW9uVHlwZSkge1xuICAgICAgY2FzZSgnY2hhbmdlRm9sZGVyJyk6XG4gICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VGb2xkZXIhJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSgnb3BlbkluQU5ld1RhYicpOlxuICAgICAgICBjb25zb2xlLmxvZygnb3BlbkluQU5ld1RhYiEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlKCdkb3dubG9hZCcpOlxuICAgICAgICBjb25zb2xlLmxvZygnZG93bmxvYWQhJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSgncHJpbnQnKTpcbiAgICAgICAgY29uc29sZS5sb2coJ3ByaW50IScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vZGVEYXRhKGRhdGE6IERvY3VtZW50VHJlZU5vZGVbXSkge1xuICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuc2VsZWN0ZWQubWFwKFxuICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xuICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXdEb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuO1xuXG4gICAgICByZXR1cm4gbmV3RG9jdW1lbnRUcmVlTm9kZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZEFycmF5ID0gdGhpcy5uZXN0ZWREYXRhU291cmNlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0uZmxhdHRlbmVkQWxsO1xuICAgIH0pLmZsYXQoKTtcbiAgICBjb25zdCBuZXdPYmplY3RzID0gZmxhdHRlbmVkQXJyYXkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gcHJldlNlbGVjdGVkLmluY2x1ZGVzKGl0ZW0ubmFtZSk7XG4gICAgfSk7XG4gICAgbmV3T2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuZChvYmplY3QpKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkQ2F0ZWdvcmllcygpOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBjYXRlZ29yeV9pZDogJ0JlZXJzJyxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0JlZXJzJyxcbiAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDEsXG4gICAgICAgIGRvY3VtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnTGFnZXIgZW5jeWNsb3BlZGlhJyxcbiAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgYXR0cmlidXRlX3BhdGg6ICcnLFxuICAgICAgICAgICAgdXBsb2FkX3RpbWVzdGFtcDogJydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnQmVlcnMgZW5jeWNsb3BlZGlhJyxcbiAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgYXR0cmlidXRlX3BhdGg6ICcnLFxuICAgICAgICAgICAgdXBsb2FkX3RpbWVzdGFtcDogJydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnQWxlIGVuY3ljbG9wZWRpYScsXG4gICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiAnL3Rlc3QvYmluYXJ5JyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZV9wYXRoOiAnJyxcbiAgICAgICAgICAgIHVwbG9hZF90aW1lc3RhbXA6ICcnXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnQmVlcnNCaXR0ZXJzJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdCaXR0ZXJzJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdCZWVyc0FtZXJpY2FuJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdBbWVyaWNhbicsXG4gICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMixcbiAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnQmVlcnNBc2lhbicsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnQXNpYW4nLFxuICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDMsXG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjYXRlZ29yeV9pZDogJ1dpbmVzJyxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ1dpbmVzJyxcbiAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDIsXG4gICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaW5lc0ZyZW5jaCcsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnRnJlbmNoJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaW5lc0l0YWxpYW4nLFxuICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0l0YWxpYW4nLFxuICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDIsXG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjYXRlZ29yeV9pZDogJ1NwaXJpdHMnLFxuICAgICAgICBjYXRlZ29yeV9uYW1lOiAnU3Bpcml0cycsXG4gICAgICAgIGNhdGVnb3J5X29yZGVyOiAzLFxuICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnU3Bpcml0c1doaXNreScsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnU2NvdGNoIHdoaXNreScsXG4gICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMSxcbiAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaGlza3lIaWdobGFuZCcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0hpZ2hsYW5kJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMSxcbiAgICAgICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5SGlnaGxhbmQxJyxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0hpZ2hsYW5kIDEnLFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaGlza3lMb3dsYW5kJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnTG93bGFuZCcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1doaXNreUxvd2xhbmQxJyxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0xvd2xhbmQgMScsXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF91cmw6ICcvdGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF9maWxlbmFtZTogJ0RldGFpbHMgYWJvdXQgV2hpc2t5IExvd2xhbmQgMScsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiAnL3Rlc3QvYmluYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZV9wYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZF90aW1lc3RhbXA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5TG93bGFuZDInLFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnTG93bGFuZCAyJyxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5SXNsYXknLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdJc2xheScsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDMsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6ICdEZXRhaWxzIGFib3V0IFdoaXNreSBJc2xheScsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVfcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZF90aW1lc3RhbXA6ICcnXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF91cmw6ICcvdGVzdCcsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBXaGlza3kgSXNsYXknLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiAnL3Rlc3QvYmluYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlX3BhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRfdGltZXN0YW1wOiAnJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1doaXNreVNwZXlzaWRlJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnU3BleXNpZGUnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiA0LFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1doaXNreUNhbXBiZWx0b3duJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnQ2FtcGJlbHRvd24nLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiA1LFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtZm9sZGVycy1oZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWZvbGRlcnMtaGVhZGVyX190aXRsZVwiPkRvY3VtZW50czwvZGl2PlxuICA8ZGl2PlxuICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLXNvcnRcbiAgICAgIChzb3J0QXNjZW5kaW5nKT1cInNvcnREYXRhU291cmNlQXNjQWxwaGFiZXRpY2FsbHkoKVwiXG4gICAgICAoc29ydERlc2NlbmRpbmcpPVwic29ydERhdGFTb3VyY2VEZXNjQWxwaGFiZXRpY2FsbHkoKVwiXG4gICAgPjwvY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJcIj5cbiAgPGNkay10cmVlICN0cmVlIFtkYXRhU291cmNlXT1cIm5lc3RlZERhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwibmVzdGVkVHJlZUNvbnRyb2xcIj5cbiAgICA8IS0tIGRvY3VtZW50IC0tPlxuICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1ub2RlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9faWNvblwiIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2RvY3VtZW50LnBuZ1wiIGNsYXNzPVwibm9kZV9faWNvbkltZ1wiIGFsdD1cIkRvY3VtZW50IGljb25cIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fbmFtZSBub2RlLW5hbWUtZG9jdW1lbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9fZG9jdW1lbnQtb3B0aW9uc1wiPlxuICAgICAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnNcbiAgICAgICAgICAgIChjaGFuZ2VGb2xkZXJBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdjaGFuZ2VGb2xkZXInKVwiXG4gICAgICAgICAgICAob3BlbkluQU5ld1RhYkFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ29wZW5JbkFOZXdUYWInKVwiXG4gICAgICAgICAgICAoZG93bmxvYWRBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdkb3dubG9hZCcpXCJcbiAgICAgICAgICAgIChwcmludEFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ3ByaW50JylcIj5cbiAgICAgICAgICA8L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Nkay1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgIDwhLS0gZm9sZGVyLS0+XG4gICAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlICpjZGtUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBuZXN0ZWRDaGlsZHJlblwiIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1ub2RlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZVwiIGNka1RyZWVOb2RlVG9nZ2xlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9faWNvblwiIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubmFtZVwiID5cbiAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2ZvbGRlci5wbmdcIiBjbGFzcz1cIm5vZGVfX2ljb25JbWdcIiBhbHQ9XCJGb2xkZXIgaWNvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fY291bnRcIj57e25vZGUuY2hpbGREb2N1bWVudENvdW50fX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX25hbWUgbm9kZV9fbmFtZS0tZm9sZGVyXCI+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBbY2xhc3MuZG9jdW1lbnQtdHJlZS1pbnZpc2libGVdPVwiIW5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gIDwvY2RrLXRyZWU+XG48L2Rpdj5cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUtMLG9CQUFvQixFQUNyQixNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7SUNDNUMsMkJBQWdFO0lBQzlELGtDQUNGO0lBQUEsaUJBQU07OztJQUdKLGdEQUE0RTtJQUMxRSwrQkFBa0I7SUFDaEIsa0NBQTRDO0lBQzFDLDBCQUEyRTtJQUMzRSwrQkFBMEM7SUFBQSxZQUFhO0lBQUEsaUJBQU07SUFDL0Qs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Q0FBd0M7YUFDdEQ7c0NBT2lCLHNCQUFzQjtrQkFBckMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0NhdGVnb3J5LFxuICBDYXNlRmlsZVZpZXdEb2N1bWVudCxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZSxcbiAgRG9jdW1lbnRUcmVlTm9kZVR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlcicsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEUgPSAnVW5jYXRlZ29yaXNlZCBkb2N1bWVudHMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBET0NVTUVOVF9TRUFSQ0hfRk9STV9DT05UUk9MX05BTUUgPSAnZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlMgPSAzO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzOiBPYnNlcnZhYmxlPENhdGVnb3JpZXNBbmREb2N1bWVudHM+O1xuXG4gIHB1YmxpYyBuZXN0ZWRUcmVlQ29udHJvbDogTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT47XG4gIHB1YmxpYyBuZXN0ZWREYXRhU291cmNlOiBEb2N1bWVudFRyZWVOb2RlW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdID0gW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkb2N1bWVudEZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBkb2N1bWVudFRyZWVEYXRhOiBEb2N1bWVudFRyZWVOb2RlW107XG4gIHB1YmxpYyBkb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgc2VhcmNoVGVybUxlbmd0aDogbnVtYmVyO1xuXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW4gPSAobm9kZTogRG9jdW1lbnRUcmVlTm9kZSkgPT4gb2Yobm9kZS5jaGlsZHJlbik7XG4gIHB1YmxpYyBuZXN0ZWRDaGlsZHJlbiA9IChfOiBudW1iZXIsIG5vZGVEYXRhOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBub2RlRGF0YS5jaGlsZHJlbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm5lc3RlZFRyZWVDb250cm9sID0gbmV3IE5lc3RlZFRyZWVDb250cm9sPERvY3VtZW50VHJlZU5vZGU+KHRoaXMuZ2V0Q2hpbGRyZW4pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRGaWx0ZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICB0aGlzLmRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuZG9jdW1lbnRGaWx0ZXJGb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FLCB0aGlzLmRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2wpO1xuXG4gICAgLy8gTGlzdGVuIHRvIHNlYXJjaCBpbnB1dCBhbmQgaW5pdGlhdGUgZmlsdGVyIGRvY3VtZW50cyBpZiBhdCBsZWFzdCB0aHJlZSBjaGFyYWN0ZXJzIGVudGVyZWRcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKChzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHRoaXMuc2VhcmNoVGVybUxlbmd0aCA9IHNlYXJjaFRlcm0ubGVuZ3RoKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpLnBpcGUoKSlcbiAgICApLnN1YnNjcmliZShkb2N1bWVudFRyZWVEYXRhID0+IHtcbiAgICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IGRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmRhdGFOb2RlcyA9IGRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLnNlYXJjaFRlcm1MZW5ndGggPj0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50Lk1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlNcbiAgICAgICAgPyB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuZEFsbCgpXG4gICAgICAgIDogdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBpbnB1dCBjYXRlZ29yaWVzIGFuZCBkb2N1bWVudHMsIGFuZCBnZW5lcmF0ZSB0cmVlIGRhdGEgYW5kIGluaXRpYWxpc2UgY2RrIHRyZWVcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24gPSB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHMuc3Vic2NyaWJlKGNhdGVnb3JpZXNBbmREb2N1bWVudHMgPT4ge1xuICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNBbmREb2N1bWVudHMuY2F0ZWdvcmllcztcbiAgICAgIC8vIEdlbmVyYXRlIGRvY3VtZW50IHRyZWUgZGF0YSBmcm9tIGNhdGVnb3JpZXNcbiAgICAgIHRoaXMuZG9jdW1lbnRUcmVlRGF0YSA9IHRoaXMuZ2VuZXJhdGVUcmVlRGF0YShjYXRlZ29yaWVzKTtcbiAgICAgIC8vIEFwcGVuZCB1bmNhdGVnb3Jpc2VkIGRvY3VtZW50c1xuICAgICAgaWYgKGNhdGVnb3JpZXNBbmREb2N1bWVudHMudW5jYXRlZ29yaXNlZF9kb2N1bWVudHMgJiYgY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHVuY2F0ZWdvcmlzZWREb2N1bWVudHMgPSB0aGlzLmdldFVuY2F0ZWdvcmlzZWREb2N1bWVudHMoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRUcmVlRGF0YS5wdXNoKHVuY2F0ZWdvcmlzZWREb2N1bWVudHMpO1xuICAgICAgfVxuICAgICAgLy8gSW5pdGlhbGlzZSBjZGsgdHJlZSB3aXRoIGdlbmVyYXRlZCBkYXRhXG4gICAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmRhdGFOb2RlcyA9IHRoaXMuZG9jdW1lbnRUcmVlRGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBjYXRlZ29yaWVzLnJlZHVjZSgodHJlZSwgbm9kZSkgPT4gW1xuICAgICAgLi4udHJlZSxcbiAgICAgIC4uLltcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IG5vZGUuY2F0ZWdvcnlfbmFtZSxcbiAgICAgICAgICB0eXBlOiBEb2N1bWVudFRyZWVOb2RlVHlwZS5GT0xERVIsXG4gICAgICAgICAgY2hpbGRyZW46IFsuLi50aGlzLmdlbmVyYXRlVHJlZURhdGEobm9kZS5zdWJfY2F0ZWdvcmllcyksIC4uLnRoaXMuZ2V0RG9jdW1lbnRzKG5vZGUuZG9jdW1lbnRzKV1cbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXSwgW10pO1xuICB9XG5cbiAgcHVibGljIGdldERvY3VtZW50cyhkb2N1bWVudHM6IENhc2VGaWxlVmlld0RvY3VtZW50W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIGNvbnN0IGRvY3VtZW50c1RvUmV0dXJuOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICBkb2N1bWVudHMuZm9yRWFjaChkb2N1bWVudCA9PiB7XG4gICAgICBkb2N1bWVudHNUb1JldHVybi5wdXNoKHsgbmFtZTogZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWUsIHR5cGU6IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkb2N1bWVudHNUb1JldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmNhdGVnb3Jpc2VkRG9jdW1lbnRzKHVuY2F0ZWdvcmlzZWREb2N1bWVudHM6IENhc2VGaWxlVmlld0RvY3VtZW50W10pOiBEb2N1bWVudFRyZWVOb2RlIHtcbiAgICBjb25zdCBkb2N1bWVudHM6IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIHVuY2F0ZWdvcmlzZWREb2N1bWVudHMuZm9yRWFjaChkb2N1bWVudCA9PiB7XG4gICAgICBkb2N1bWVudHMucHVzaCh7IG5hbWU6IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lLCB0eXBlOiBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVCB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4geyBuYW1lOiBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEUsIHR5cGU6IERvY3VtZW50VHJlZU5vZGVUeXBlLkZPTERFUiwgY2hpbGRyZW46IGRvY3VtZW50cyB9O1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VHJlZU5vZGVbXT4ge1xuICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhIHNvIHdlIGRvIG5vdCBtdXRhdGUgdGhlIG9yaWdpbmFsXG4gICAgZnVuY3Rpb24gY29weShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgbm9kZSk7XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZG9jdW1lbnRUcmVlRGF0YTtcbiAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+PSBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSUyAmJiB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwLmNvbnRyb2xzW0Nhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5ET0NVTUVOVF9TRUFSQ0hfRk9STV9DT05UUk9MX05BTUVdLnZhbHVlLmxlbmd0aCA+IDIpIHtcbiAgICAgIGZpbHRlcmVkRGF0YSA9IHRoaXMuZG9jdW1lbnRUcmVlRGF0YS5tYXAoY29weSkuZmlsdGVyKGZ1bmN0aW9uIGZpbHRlclRyZWVEYXRhKG5vZGU6IERvY3VtZW50VHJlZU5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSAmJiBub2RlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKSAmJiBub2RlLnR5cGUgPT09IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsbCByZWN1cnNpdmVseSBpZiBub2RlIGhhcyBjaGlsZHJlblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgIHJldHVybiAobm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4ubWFwKGNvcHkpLmZpbHRlcihmaWx0ZXJUcmVlRGF0YSkpLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvZihmaWx0ZXJlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvY3VtZW50LWZpbHRlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZG9jdW1lbnQtZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJkb2N1bWVudEZpbHRlckZvcm1Hcm91cFwiPlxuICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkb2N1bWVudC1zZWFyY2hcIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBpZD1cImRvY3VtZW50LXNlYXJjaFwiXG4gICAgICBuYW1lPVwiZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IGRvY3VtZW50IG5hbWVcIj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudHMtdGl0bGVcIj5Eb2N1bWVudHM8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRvY3VtZW50LXRyZWVcIiAqbmdJZj1cImRvY3VtZW50VHJlZURhdGFcIj5cbiAgPGRpdiAqbmdJZj1cIiFuZXN0ZWREYXRhU291cmNlIHx8IG5lc3RlZERhdGFTb3VyY2UubGVuZ3RoID09PSAwXCI+XG4gICAgTm8gcmVzdWx0cyBmb3VuZFxuICA8L2Rpdj5cbiAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIm5lc3RlZERhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwibmVzdGVkVHJlZUNvbnRyb2xcIj5cbiAgICA8IS0tIGRvY3VtZW50IC0tPlxuICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1ub2RlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibm9kZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZS1idXR0b25cIiBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgPGltZyBhbHQ9XCJkb2N1bWVudCBpbWFnZVwiIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2RvY3VtZW50LnBuZ1wiIGNsYXNzPVwiaWNvblwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtbmFtZSBub2RlLW5hbWUtZG9jdW1lbnRcIj57e25vZGUubmFtZX19PC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbiAgICA8IS0tIGZvbGRlci0tPlxuICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogbmVzdGVkQ2hpbGRyZW5cIiBjbGFzcz1cImRvY3VtZW50LXRyZWUtbm9kZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5vZGVcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vZGUtYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3RvZ2dsZSAnICsgbm9kZS5uYW1lXCIgY2RrVHJlZU5vZGVUb2dnbGU+XG4gICAgICAgICAgPGltZyBhbHQ9XCJmb2xkZXIgaW1hZ2VcIiBbc3JjXT1cIm5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnL2Fzc2V0cy9pbWFnZXMvZm9sZGVyLW9wZW4ucG5nJyA6ICcvYXNzZXRzL2ltYWdlcy9mb2xkZXIucG5nJ1wiIGNsYXNzPVwiaWNvblwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtbmFtZSBub2RlLW5hbWUtZm9sZGVyXCI+e3tub2RlLm5hbWV9fTwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbY2xhc3MuZG9jdW1lbnQtdHJlZS1pbnZpc2libGVdPVwiIW5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gIDwvY2RrLXRyZWU+XG48L2Rpdj5cbiJdfQ==
|