@hmcts/ccd-case-ui-toolkit 7.1.76-hint-text-1 → 7.1.76

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.
Files changed (23) hide show
  1. package/esm2022/lib/components/form/date-input/date-input.component.mjs +49 -35
  2. package/esm2022/lib/shared/components/palette/base-field/field-read.component.mjs +3 -3
  3. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +6 -6
  4. package/esm2022/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +28 -22
  5. package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +8 -8
  6. package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +23 -22
  7. package/esm2022/lib/shared/components/palette/complex/read-complex-field.component.mjs +4 -1
  8. package/esm2022/lib/shared/components/palette/complex/write-complex-field.component.mjs +2 -1
  9. package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +6 -3
  10. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +2 -2
  11. package/esm2022/lib/shared/domain/definition/case-field.model.mjs +29 -2
  12. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +149 -94
  13. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  14. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts +1 -1
  15. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts.map +1 -1
  16. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  17. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  18. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
  19. package/lib/shared/components/palette/date/write-date-field.component.d.ts +1 -0
  20. package/lib/shared/components/palette/date/write-date-field.component.d.ts.map +1 -1
  21. package/lib/shared/domain/definition/case-field.model.d.ts +2 -0
  22. package/lib/shared/domain/definition/case-field.model.d.ts.map +1 -1
  23. package/package.json +1 -1
@@ -39,10 +39,10 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
39
39
  i0.ɵɵelementStart(7, "span", 17);
40
40
  i0.ɵɵtext(8);
41
41
  i0.ɵɵpipe(9, "ccdDate");
42
- i0.ɵɵelementEnd()();
42
+ i0.ɵɵelementEnd()()();
43
43
  i0.ɵɵelementStart(10, "div", 18)(11, "ccd-case-file-view-folder-document-actions", 19);
44
44
  i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("changeFolder", node_r2)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("openInANewTab", node_r2)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("download", node_r2)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("print", node_r2)); });
45
- i0.ɵɵelementEnd()()()();
45
+ i0.ɵɵelementEnd()()();
46
46
  } if (rf & 2) {
47
47
  const node_r2 = ctx.$implicit;
48
48
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -323,7 +323,7 @@ export class CaseFileViewFolderComponent {
323
323
  a.remove();
324
324
  }
325
325
  static ɵfac = function CaseFileViewFolderComponent_Factory(t) { return new (t || CaseFileViewFolderComponent)(i0.ɵɵdirectiveInject(i1.WindowService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i1.DocumentManagementService), i0.ɵɵdirectiveInject(i3.MatLegacyDialog), i0.ɵɵdirectiveInject(i4.AbstractAppConfig)); };
326
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, 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", "aria-label", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options"], [3, "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction", "allowMoving"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
326
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments", allowMoving: "allowMoving" }, outputs: { clickedDocument: "clickedDocument", moveDocument: "moveDocument" }, decls: 9, vars: 3, 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", "aria-label", "Search by document name", 1, "form-control", "document-search"], [1, "document-folders-header"], [1, "document-folders-header__title"], [3, "sortAscending", "sortDescending"], ["class", "document-tree-container", 4, "ngIf"], [1, "document-tree-container"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-container__node document-tree-container__node--document", 4, "cdkTreeNodeDef"], ["class", "document-tree-container__node document-tree-container__folder", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-container__node", "document-tree-container__node--document"], [1, "node", "case-file__node", 3, "click"], ["disabled", "", 1, "node__icon"], ["src", "/assets/img/case-file-view/case-file-view-document.svg", "alt", "Document icon", 1, "node__iconImg"], [1, "node__name", "node-name-document"], [1, "node__document-upload-timestamp"], [1, "node__document-options", "case-file__action"], [3, "changeFolderAction", "openInANewTabAction", "downloadAction", "printAction", "allowMoving"], [1, "document-tree-container__node", "document-tree-container__folder"], ["cdkTreeNodeToggle", "", 1, "node"], [1, "node__icon"], ["alt", "Folder icon", 1, "node__iconImg", 3, "src"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
327
327
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
328
328
  i0.ɵɵelement(2, "input", 2);
329
329
  i0.ɵɵelementEnd()();
@@ -341,11 +341,11 @@ export class CaseFileViewFolderComponent {
341
341
  i0.ɵɵtextInterpolate1("Documents (", ctx.documentCount, ")");
342
342
  i0.ɵɵadvance(3);
343
343
  i0.ɵɵproperty("ngIf", ctx.documentTreeData);
344
- } }, dependencies: [i5.NgIf, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgControlStatusGroup, i6.FormGroupDirective, i6.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, i8.CaseFileViewFolderSortComponent, i9.CaseFileViewFolderDocumentActionsComponent, i10.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #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-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
344
+ } }, dependencies: [i5.NgIf, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgControlStatusGroup, i6.FormGroupDirective, i6.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, i8.CaseFileViewFolderSortComponent, i9.CaseFileViewFolderDocumentActionsComponent, i10.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #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-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}.node.case-file__node[_ngcontent-%COMP%]{width:80%;float:left}.node__document-options.case-file__action[_ngcontent-%COMP%]{width:15%;float:left;box-sizing:border-box;padding:12px}"] });
345
345
  }
346
346
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
347
347
  type: Component,
348
- args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <span class=\"document-folders-header__title\">Documents ({{ documentCount }})</span>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | ccdDate : 'local' :'dd MMM YYYY HH:mm'}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
348
+ args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <span class=\"document-folders-header__title\">Documents ({{ documentCount }})</span>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node case-file__node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | ccdDate : 'local' :'dd MMM YYYY HH:mm'}}</span>\n </span>\n </button>\n <div class=\"node__document-options case-file__action\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}.node.case-file__node{width:80%;float:left}.node__document-options.case-file__action{width:15%;float:left;box-sizing:border-box;padding:12px}\n"] }]
349
349
  }], () => [{ type: i1.WindowService }, { type: i2.Router }, { type: i1.DocumentManagementService }, { type: i3.MatLegacyDialog }, { type: i4.AbstractAppConfig }], { categoriesAndDocuments: [{
350
350
  type: Input
351
351
  }], allowMoving: [{
@@ -356,4 +356,4 @@ export class CaseFileViewFolderComponent {
356
356
  type: Output
357
357
  }] }); })();
358
358
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFolderComponent, { className: "CaseFileViewFolderComponent", filePath: "lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.ts", lineNumber: 27 }); })();
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBR0wsdUJB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ZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1FBQzlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUM7cUZBeFFVLDJCQUEyQjs2REFBM0IsMkJBQTJCO1lDekJ0QyxBQURGLDhCQUF1QyxhQUN5QztZQUM1RSwyQkFNdUM7WUFFM0MsQUFERSxpQkFBTSxFQUNGO1lBR0osQUFERiw4QkFBcUMsY0FDVTtZQUFBLFlBQStCO1lBQUEsaUJBQU87WUFFakYsQUFERiwyQkFBSyx3Q0FJRjtZQURDLEFBREEsc0pBQWlCLG1DQUErQixJQUFDLDJJQUMvQixvQ0FBZ0MsSUFBQztZQUd6RCxBQURFLEFBREcsaUJBQWlDLEVBQzlCLEVBQ0Y7WUFFTiw0RUFBOEQ7O1lBckJwQixjQUFxQztZQUFyQyx1REFBcUM7WUFZaEMsZUFBK0I7WUFBL0IsNERBQStCO1lBU3hDLGVBQXNCO1lBQXRCLDJDQUFzQjs7O2lGREkvQywyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7eUtBU3JCLHNCQUFzQjtrQkFBckMsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVyxlQUFlO2tCQUEvQixNQUFNO1lBQ1UsWUFBWTtrQkFBNUIsTUFBTTs7a0ZBUkksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHtcbiAgQ2FzZUZpbGVWaWV3Q2F0ZWdvcnksXG4gIENhc2VGaWxlVmlld0RvY3VtZW50LFxuICBDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucyxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZSxcbiAgRG9jdW1lbnRUcmVlTm9kZVR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9zb3J0LW9yZGVyLmVudW0nO1xuaW1wb3J0IHsgRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSwgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1maWxlLXZpZXctZm9sZGVyLXNlbGVjdG9yL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0IGNvbnN0IE1FRElBX1ZJRVdFUl9MT0NBTFNUT1JBR0VfS0VZID0gJ21lZGlhLXZpZXdlci1pbmZvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRSA9ICdVbmNhdGVnb3Jpc2VkIGRvY3VtZW50cyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSA9ICdkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSUyA9IDE7XG5cbiAgQElucHV0KCkgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHM6IE9ic2VydmFibGU8Q2F0ZWdvcmllc0FuZERvY3VtZW50cz47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd01vdmluZzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGlja2VkRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50VHJlZU5vZGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbW92ZURvY3VtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5ld0NhdGVnb3J5OiBzdHJpbmcsIGRvY3VtZW50OiBEb2N1bWVudFRyZWVOb2RlIH0+KCk7XG5cbiAgcHVibGljIG5lc3RlZFRyZWVDb250cm9sOiBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPjtcbiAgcHVibGljIG5lc3RlZERhdGFTb3VyY2U6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10gPSBbXTtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHNlbGVjdGVkTm9kZUl0ZW06IERvY3VtZW50VHJlZU5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRvY3VtZW50RmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGRvY3VtZW50VHJlZURhdGE6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzZWFyY2hUZXJtTGVuZ3RoOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBvZihub2RlLmNoaWxkcmVuKTtcbiAgcHVibGljIG5lc3RlZENoaWxkcmVuID0gKF86IG51bWJlciwgbm9kZURhdGE6IERvY3VtZW50VHJlZU5vZGUpID0+IG5vZGVEYXRhLmNoaWxkcmVuO1xuICBwdWJsaWMgZ2V0IGRvY3VtZW50Q291bnQoKSB7XG4gICAgaWYgKHRoaXMubmVzdGVkRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXN0ZWREYXRhU291cmNlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2MgKyBpdGVtLmNoaWxkRG9jdW1lbnRDb3VudDtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50TWFuYWdlbWVudFNlcnZpY2U6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWdcbiAgKSB7XG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbCA9IG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPih0aGlzLmdldENoaWxkcmVuKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LkRPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSwgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sKTtcblxuICAgIC8vIExpc3RlbiB0byBzZWFyY2ggaW5wdXQgYW5kIGluaXRpYXRlIGZpbHRlciBkb2N1bWVudHMgaWYgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBlbnRlcmVkXG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaFRlcm1MZW5ndGggPSBzZWFyY2hUZXJtLmxlbmd0aCksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKS5waXBlKCkpXG4gICAgKS5zdWJzY3JpYmUoZG9jdW1lbnRUcmVlRGF0YSA9PiB7XG4gICAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtTGVuZ3RoID49IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5NSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTXG4gICAgICAgID8gdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5leHBhbmRBbGwoKVxuICAgICAgICA6IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuY29sbGFwc2VBbGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgaW5wdXQgY2F0ZWdvcmllcyBhbmQgZG9jdW1lbnRzLCBhbmQgZ2VuZXJhdGUgdHJlZSBkYXRhIGFuZCBpbml0aWFsaXNlIGNkayB0cmVlXG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnN1YnNjcmliZShjYXRlZ29yaWVzQW5kRG9jdW1lbnRzID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLmNhdGVnb3JpZXM7XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzO1xuICAgICAgLy8gR2VuZXJhdGUgZG9jdW1lbnQgdHJlZSBkYXRhIGZyb20gY2F0ZWdvcmllc1xuICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhLnB1c2godW5jYXRlZ29yaXNlZERvY3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEluaXRpYWxpc2UgY2RrIHRyZWUgd2l0aCBnZW5lcmF0ZWQgZGF0YVxuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLnNvcnREYXRhU291cmNlRGVzY2VuZGluZyhDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucy5ET0NVTUVOVF9VUExPQURfVElNRVNUQU1QKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBjYXRlZ29yaWVzLnJlZHVjZSgodHJlZSwgbm9kZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBub2RlLmNhdGVnb3J5X25hbWU7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5GT0xERVI7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLmNoaWxkcmVuID0gWy4uLnRoaXMuZ2VuZXJhdGVUcmVlRGF0YShub2RlLnN1Yl9jYXRlZ29yaWVzKSwgLi4udGhpcy5nZXREb2N1bWVudHMobm9kZS5kb2N1bWVudHMpXTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2F0ZWdvcnlfb3JkZXIgPSBub2RlLmNhdGVnb3J5X29yZGVyO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50cmVlLFxuICAgICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLFxuICAgICAgXS5zb3J0KChhLGIpID0+IGEuY2F0ZWdvcnlfb3JkZXIgLSBiLmNhdGVnb3J5X29yZGVyKTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9jdW1lbnRzKGRvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGVbXSB7XG4gICAgY29uc3QgZG9jdW1lbnRzVG9SZXR1cm46IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIGRvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCA9IGRvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmw7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmF0dHJpYnV0ZV9wYXRoID0gZG9jdW1lbnQuYXR0cmlidXRlX3BhdGg7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnVwbG9hZF90aW1lc3RhbXAgPSB0aGlzLmFwcENvbmZpZy5nZXRFbmFibGVDYXNlRmlsZVZpZXdWZXJzaW9uMV8xKClcbiAgICAgICAgICAmJiBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wID8gZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcC50b1N0cmluZygpIDogJyc7XG5cbiAgICAgIGRvY3VtZW50c1RvUmV0dXJuLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZG9jdW1lbnRzVG9SZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyh1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzOiBDYXNlRmlsZVZpZXdEb2N1bWVudFtdKTogRG9jdW1lbnRUcmVlTm9kZSB7XG4gICAgY29uc3QgZG9jdW1lbnRzOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICB1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzLmZvckVhY2goZG9jdW1lbnQgPT4ge1xuICAgICAgY29uc3QgZG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudHlwZSA9IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZSA9IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9iaW5hcnlfdXJsID0gZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuYXR0cmlidXRlX3BhdGggPSBkb2N1bWVudC5hdHRyaWJ1dGVfcGF0aDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudXBsb2FkX3RpbWVzdGFtcCA9IHRoaXMuYXBwQ29uZmlnLmdldEVuYWJsZUNhc2VGaWxlVmlld1ZlcnNpb24xXzEoKVxuICAgICAgICAgICYmIGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAgPyBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wLnRvU3RyaW5nKCkgOiAnJztcblxuICAgICAgZG9jdW1lbnRzLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bmNhdGVnb3Jpc2VkTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgdW5jYXRlZ29yaXNlZE5vZGUubmFtZSA9IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5VTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRTtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS50eXBlID0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRk9MREVSO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLmNoaWxkcmVuID0gZG9jdW1lbnRzO1xuXG4gICAgcmV0dXJuIHVuY2F0ZWdvcmlzZWROb2RlO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VHJlZU5vZGVbXT4ge1xuICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhIHNvIHdlIGRvIG5vdCBtdXRhdGUgdGhlIG9yaWdpbmFsXG4gICAgZnVuY3Rpb24gY29weShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICBjb25zdCBkb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGRvY3VtZW50VHJlZU5vZGUsIG5vZGUpO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPj0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50Lk1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlMgJiYgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cC5jb250cm9sc1tDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FXS52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGEubWFwKGNvcHkpLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5hbWUgJiYgbm9kZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgJiYgbm9kZS50eXBlID09PSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGwgcmVjdXJzaXZlbHkgaWYgbm9kZSBoYXMgY2hpbGRyZW5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICByZXR1cm4gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLm1hcChjb3B5KS5maWx0ZXIoZmlsdGVyVHJlZURhdGEpKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmlsdGVyZWREYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oXG4gICAgYWN0aW9uVHlwZTogJ2NoYW5nZUZvbGRlcicgfCAnb3BlbkluQU5ld1RhYicgfCAnZG93bmxvYWQnIHwgJ3ByaW50JyxcbiAgICBkb2N1bWVudFRyZWVOb2RlOiBEb2N1bWVudFRyZWVOb2RlXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAoYWN0aW9uVHlwZSkge1xuICAgICAgY2FzZSAoJ2NoYW5nZUZvbGRlcicpOlxuICAgICAgICB0aGlzLm9wZW5Nb3ZlRGlhbG9nKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdvcGVuSW5BTmV3VGFiJyk6XG4gICAgICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoTUVESUFfVklFV0VSX0xPQ0FMU1RPUkFHRV9LRVksXG4gICAgICAgICAgdGhpcy5kb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lZGlhVmlld2VySW5mbyh7XG4gICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwsXG4gICAgICAgICAgICBkb2N1bWVudF9maWxlbmFtZTogZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZVxuICAgICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uub3Blbk9uTmV3VGFiKFxuICAgICAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycvbWVkaWEtdmlld2VyJ10pPy50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoJ2Rvd25sb2FkJyk6XG4gICAgICAgIC8vIENyZWF0ZSBhIFVSTCBmcm9tIHRoZSBkb2N1bWVudF9iaW5hcnlfdXJsIHByb3BlcnR5IChhYnNvbHV0ZSBVUkwpIGFuZCB1c2UgdGhlIHBhdGggcG9ydGlvbiAocmVsYXRpdmUgVVJMKS5cbiAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgTWFuYWdlIENhc2VzIGFwcGxpY2F0aW9uIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBhIHByb3h5IHRvIHRoZSByZXF1ZXN0LCB3aXRoXG4gICAgICAgIC8vIHRoZSBjb3JyZWN0IHJlbW90ZSBlbmRwb2ludFxuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShuZXcgVVJMKGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCkucGF0aG5hbWUsIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdwcmludCcpOlxuICAgICAgICB0aGlzLnByaW50RG9jdW1lbnQobmV3IFVSTChkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwpLnBhdGhuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlQXNjZW5kaW5nKGNvbHVtbjogbnVtYmVyKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBpdGVtLnNvcnRDaGlsZHJlbkFzY2VuZGluZyhjb2x1bW4sIFNvcnRPcmRlci5BU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlRGVzY2VuZGluZyhjb2x1bW46IG51bWJlcikge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zb3J0Q2hpbGRyZW5EZXNjZW5kaW5nKGNvbHVtbiwgU29ydE9yZGVyLkRFU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vZGVEYXRhKGRhdGE6IERvY3VtZW50VHJlZU5vZGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuc2VsZWN0ZWQubWFwKFxuICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xuICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXdEb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuO1xuXG4gICAgICByZXR1cm4gbmV3RG9jdW1lbnRUcmVlTm9kZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZEFycmF5ID0gdGhpcy5uZXN0ZWREYXRhU291cmNlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0uZmxhdHRlbmVkQWxsO1xuICAgIH0pLmZsYXQoKTtcbiAgICBjb25zdCBuZXdPYmplY3RzID0gZmxhdHRlbmVkQXJyYXkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gcHJldlNlbGVjdGVkLmluY2x1ZGVzKGl0ZW0ubmFtZSk7XG4gICAgfSk7XG4gICAgbmV3T2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuZChvYmplY3QpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk1vdmVEaWFsb2cobm9kZTogRG9jdW1lbnRUcmVlTm9kZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ2FzZUZpbGVWaWV3Rm9sZGVyU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY2F0ZWdvcmllczogdGhpcy5jYXRlZ29yaWVzLCBkb2N1bWVudDogbm9kZSB9XG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUobmV3Q2F0SWQgPT4ge1xuICAgICAgaWYgKG5ld0NhdElkKSB7XG4gICAgICAgIHRoaXMubW92ZURvY3VtZW50LmVtaXQoeyBuZXdDYXRlZ29yeTogbmV3Q2F0SWQsIGRvY3VtZW50OiBub2RlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHByaW50RG9jdW1lbnQodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmludFdpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCk7XG4gICAgcHJpbnRXaW5kb3cucHJpbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcsIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZG93bmxvYWRGaWxlTmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgYS5yZW1vdmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvY3VtZW50LWZpbHRlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZG9jdW1lbnQtZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJkb2N1bWVudEZpbHRlckZvcm1Hcm91cFwiPlxuICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkb2N1bWVudC1zZWFyY2hcIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBpZD1cImRvY3VtZW50LXNlYXJjaFwiXG4gICAgICBuYW1lPVwiZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IGRvY3VtZW50IG5hbWVcIlxuICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCBieSBkb2N1bWVudCBuYW1lXCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb2N1bWVudC1mb2xkZXJzLWhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImRvY3VtZW50LWZvbGRlcnMtaGVhZGVyX190aXRsZVwiPkRvY3VtZW50cyAoe3sgZG9jdW1lbnRDb3VudCB9fSk8L3NwYW4+XG4gIDxkaXY+XG4gICAgPGNjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItc29ydFxuICAgICAgKHNvcnRBc2NlbmRpbmcpPVwic29ydERhdGFTb3VyY2VBc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAoc29ydERlc2NlbmRpbmcpPVwic29ydERhdGFTb3VyY2VEZXNjZW5kaW5nKCRldmVudClcIlxuICAgID48L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItc29ydD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyXCIgKm5nSWY9XCJkb2N1bWVudFRyZWVEYXRhXCI+XG4gIDxkaXYgKm5nSWY9XCIhbmVzdGVkRGF0YVNvdXJjZSB8fCBuZXN0ZWREYXRhU291cmNlLmxlbmd0aCA9PT0gMFwiPlxuICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIm5lc3RlZERhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwibmVzdGVkVHJlZUNvbnRyb2xcIj5cbiAgICAgIDwhLS0gZG9jdW1lbnQgLS0+XG4gICAgICA8Y2RrLW5lc3RlZC10cmVlLW5vZGUgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fbm9kZSBkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fbm9kZS0tZG9jdW1lbnRcIiAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZVwiIChjbGljayk9XCJzZWxlY3RlZE5vZGVJdGVtID0gbm9kZTsgY2xpY2tlZERvY3VtZW50LmVtaXQobm9kZSlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ub2RlLS1zZWxlY3RlZF09XCJzZWxlY3RlZE5vZGVJdGVtPy5uYW1lID09PSBub2RlLm5hbWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9faWNvblwiIGRpc2FibGVkPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltZy9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1kb2N1bWVudC5zdmdcIiBjbGFzcz1cIm5vZGVfX2ljb25JbWdcIiBhbHQ9XCJEb2N1bWVudCBpY29uXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlX19uYW1lIG5vZGUtbmFtZS1kb2N1bWVudFwiPlxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxuICAgICAgICAgICAgPGJyPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlX19kb2N1bWVudC11cGxvYWQtdGltZXN0YW1wXCI+e3tub2RlLnVwbG9hZF90aW1lc3RhbXAgfCBjY2REYXRlIDogJ2xvY2FsJyA6J2RkIE1NTSBZWVlZIEhIOm1tJ319PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9fZG9jdW1lbnQtb3B0aW9uc1wiPlxuICAgICAgICAgICAgPGNjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9uc1xuICAgICAgICAgICAgICAoY2hhbmdlRm9sZGVyQWN0aW9uKT1cInRyaWdnZXJEb2N1bWVudEFjdGlvbignY2hhbmdlRm9sZGVyJywgbm9kZSlcIlxuICAgICAgICAgICAgICAob3BlbkluQU5ld1RhYkFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ29wZW5JbkFOZXdUYWInLCBub2RlKVwiXG4gICAgICAgICAgICAgIChkb3dubG9hZEFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ2Rvd25sb2FkJywgbm9kZSlcIlxuICAgICAgICAgICAgICAocHJpbnRBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdwcmludCcsIG5vZGUpXCJcbiAgICAgICAgICAgICAgW2FsbG93TW92aW5nXT1cImFsbG93TW92aW5nXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlci1kb2N1bWVudC1hY3Rpb25zPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gICAgICA8IS0tIGZvbGRlci0tPlxuICAgICAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX25vZGUgZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX2ZvbGRlclwiICpjZGtUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBuZXN0ZWRDaGlsZHJlblwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZVwiIGNka1RyZWVOb2RlVG9nZ2xlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RlX19pY29uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIiA+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwibm9kZV9faWNvbkltZ1wiXG4gICAgICAgICAgICAgICAgIFtzcmNdPVwibmVzdGVkVHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICcvYXNzZXRzL2ltYWdlcy9mb2xkZXItb3Blbi5wbmcnIDogJy9hc3NldHMvaW1hZ2VzL2ZvbGRlci5wbmcnXCIgYWx0PVwiRm9sZGVyIGljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fY291bnRcIj57e25vZGUuY2hpbGREb2N1bWVudENvdW50fX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlX19uYW1lIG5vZGVfX25hbWUtLWZvbGRlclwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgW2NsYXNzLmRvY3VtZW50LXRyZWUtaW52aXNpYmxlXT1cIiFuZXN0ZWRUcmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nkay1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgIDwvY2RrLXRyZWU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBR0wsdUJB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ZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1FBQzlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUM7cUZBeFFVLDJCQUEyQjs2REFBM0IsMkJBQTJCO1lDekJ0QyxBQURGLDhCQUF1QyxhQUN5QztZQUM1RSwyQkFNdUM7WUFFM0MsQUFERSxpQkFBTSxFQUNGO1lBR0osQUFERiw4QkFBcUMsY0FDVTtZQUFBLFlBQStCO1lBQUEsaUJBQU87WUFFakYsQUFERiwyQkFBSyx3Q0FJRjtZQURDLEFBREEsc0pBQWlCLG1DQUErQixJQUFDLDJJQUMvQixvQ0FBZ0MsSUFBQztZQUd6RCxBQURFLEFBREcsaUJBQWlDLEVBQzlCLEVBQ0Y7WUFFTiw0RUFBOEQ7O1lBckJwQixjQUFxQztZQUFyQyx1REFBcUM7WUFZaEMsZUFBK0I7WUFBL0IsNERBQStCO1lBU3hDLGVBQXNCO1lBQXRCLDJDQUFzQjs7O2lGREkvQywyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7eUtBU3JCLHNCQUFzQjtrQkFBckMsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVyxlQUFlO2tCQUEvQixNQUFNO1lBQ1UsWUFBWTtrQkFBNUIsTUFBTTs7a0ZBUkksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHtcbiAgQ2FzZUZpbGVWaWV3Q2F0ZWdvcnksXG4gIENhc2VGaWxlVmlld0RvY3VtZW50LFxuICBDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucyxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZSxcbiAgRG9jdW1lbnRUcmVlTm9kZVR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9zb3J0LW9yZGVyLmVudW0nO1xuaW1wb3J0IHsgRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSwgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1maWxlLXZpZXctZm9sZGVyLXNlbGVjdG9yL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0IGNvbnN0IE1FRElBX1ZJRVdFUl9MT0NBTFNUT1JBR0VfS0VZID0gJ21lZGlhLXZpZXdlci1pbmZvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRSA9ICdVbmNhdGVnb3Jpc2VkIGRvY3VtZW50cyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSA9ICdkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSUyA9IDE7XG5cbiAgQElucHV0KCkgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHM6IE9ic2VydmFibGU8Q2F0ZWdvcmllc0FuZERvY3VtZW50cz47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd01vdmluZzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGlja2VkRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERvY3VtZW50VHJlZU5vZGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbW92ZURvY3VtZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5ld0NhdGVnb3J5OiBzdHJpbmcsIGRvY3VtZW50OiBEb2N1bWVudFRyZWVOb2RlIH0+KCk7XG5cbiAgcHVibGljIG5lc3RlZFRyZWVDb250cm9sOiBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPjtcbiAgcHVibGljIG5lc3RlZERhdGFTb3VyY2U6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10gPSBbXTtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHNlbGVjdGVkTm9kZUl0ZW06IERvY3VtZW50VHJlZU5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRvY3VtZW50RmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGRvY3VtZW50VHJlZURhdGE6IERvY3VtZW50VHJlZU5vZGVbXTtcbiAgcHVibGljIGRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzZWFyY2hUZXJtTGVuZ3RoOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBvZihub2RlLmNoaWxkcmVuKTtcbiAgcHVibGljIG5lc3RlZENoaWxkcmVuID0gKF86IG51bWJlciwgbm9kZURhdGE6IERvY3VtZW50VHJlZU5vZGUpID0+IG5vZGVEYXRhLmNoaWxkcmVuO1xuICBwdWJsaWMgZ2V0IGRvY3VtZW50Q291bnQoKSB7XG4gICAgaWYgKHRoaXMubmVzdGVkRGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXN0ZWREYXRhU291cmNlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2MgKyBpdGVtLmNoaWxkRG9jdW1lbnRDb3VudDtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50TWFuYWdlbWVudFNlcnZpY2U6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWdcbiAgKSB7XG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbCA9IG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPih0aGlzLmdldENoaWxkcmVuKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LkRPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSwgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sKTtcblxuICAgIC8vIExpc3RlbiB0byBzZWFyY2ggaW5wdXQgYW5kIGluaXRpYXRlIGZpbHRlciBkb2N1bWVudHMgaWYgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBlbnRlcmVkXG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaFRlcm1MZW5ndGggPSBzZWFyY2hUZXJtLmxlbmd0aCksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKS5waXBlKCkpXG4gICAgKS5zdWJzY3JpYmUoZG9jdW1lbnRUcmVlRGF0YSA9PiB7XG4gICAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtTGVuZ3RoID49IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5NSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTXG4gICAgICAgID8gdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5leHBhbmRBbGwoKVxuICAgICAgICA6IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuY29sbGFwc2VBbGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgaW5wdXQgY2F0ZWdvcmllcyBhbmQgZG9jdW1lbnRzLCBhbmQgZ2VuZXJhdGUgdHJlZSBkYXRhIGFuZCBpbml0aWFsaXNlIGNkayB0cmVlXG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnN1YnNjcmliZShjYXRlZ29yaWVzQW5kRG9jdW1lbnRzID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLmNhdGVnb3JpZXM7XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzO1xuICAgICAgLy8gR2VuZXJhdGUgZG9jdW1lbnQgdHJlZSBkYXRhIGZyb20gY2F0ZWdvcmllc1xuICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhLnB1c2godW5jYXRlZ29yaXNlZERvY3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEluaXRpYWxpc2UgY2RrIHRyZWUgd2l0aCBnZW5lcmF0ZWQgZGF0YVxuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gdGhpcy5kb2N1bWVudFRyZWVEYXRhO1xuICAgICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5kYXRhTm9kZXMgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgICB0aGlzLnNvcnREYXRhU291cmNlRGVzY2VuZGluZyhDYXNlRmlsZVZpZXdTb3J0Q29sdW1ucy5ET0NVTUVOVF9VUExPQURfVElNRVNUQU1QKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBjYXRlZ29yaWVzLnJlZHVjZSgodHJlZSwgbm9kZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBub2RlLmNhdGVnb3J5X25hbWU7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5GT0xERVI7XG4gICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLmNoaWxkcmVuID0gWy4uLnRoaXMuZ2VuZXJhdGVUcmVlRGF0YShub2RlLnN1Yl9jYXRlZ29yaWVzKSwgLi4udGhpcy5nZXREb2N1bWVudHMobm9kZS5kb2N1bWVudHMpXTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2F0ZWdvcnlfb3JkZXIgPSBub2RlLmNhdGVnb3J5X29yZGVyO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50cmVlLFxuICAgICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLFxuICAgICAgXS5zb3J0KChhLGIpID0+IGEuY2F0ZWdvcnlfb3JkZXIgLSBiLmNhdGVnb3J5X29yZGVyKTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9jdW1lbnRzKGRvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGVbXSB7XG4gICAgY29uc3QgZG9jdW1lbnRzVG9SZXR1cm46IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIGRvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCA9IGRvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmw7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLmF0dHJpYnV0ZV9wYXRoID0gZG9jdW1lbnQuYXR0cmlidXRlX3BhdGg7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnVwbG9hZF90aW1lc3RhbXAgPSB0aGlzLmFwcENvbmZpZy5nZXRFbmFibGVDYXNlRmlsZVZpZXdWZXJzaW9uMV8xKClcbiAgICAgICAgICAmJiBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wID8gZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcC50b1N0cmluZygpIDogJyc7XG5cbiAgICAgIGRvY3VtZW50c1RvUmV0dXJuLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZG9jdW1lbnRzVG9SZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyh1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzOiBDYXNlRmlsZVZpZXdEb2N1bWVudFtdKTogRG9jdW1lbnRUcmVlTm9kZSB7XG4gICAgY29uc3QgZG9jdW1lbnRzOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICB1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzLmZvckVhY2goZG9jdW1lbnQgPT4ge1xuICAgICAgY29uc3QgZG9jdW1lbnRUcmVlTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLm5hbWUgPSBkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZTtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudHlwZSA9IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZSA9IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9iaW5hcnlfdXJsID0gZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUuYXR0cmlidXRlX3BhdGggPSBkb2N1bWVudC5hdHRyaWJ1dGVfcGF0aDtcbiAgICAgIGRvY3VtZW50VHJlZU5vZGUudXBsb2FkX3RpbWVzdGFtcCA9IHRoaXMuYXBwQ29uZmlnLmdldEVuYWJsZUNhc2VGaWxlVmlld1ZlcnNpb24xXzEoKVxuICAgICAgICAgICYmIGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAgPyBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wLnRvU3RyaW5nKCkgOiAnJztcblxuICAgICAgZG9jdW1lbnRzLnB1c2goZG9jdW1lbnRUcmVlTm9kZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bmNhdGVnb3Jpc2VkTm9kZSA9IG5ldyBEb2N1bWVudFRyZWVOb2RlKCk7XG4gICAgdW5jYXRlZ29yaXNlZE5vZGUubmFtZSA9IENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudC5VTkNBVEVHT1JJU0VEX0RPQ1VNRU5UU19USVRMRTtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS50eXBlID0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRk9MREVSO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLmNoaWxkcmVuID0gZG9jdW1lbnRzO1xuXG4gICAgcmV0dXJuIHVuY2F0ZWdvcmlzZWROb2RlO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VHJlZU5vZGVbXT4ge1xuICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhIHNvIHdlIGRvIG5vdCBtdXRhdGUgdGhlIG9yaWdpbmFsXG4gICAgZnVuY3Rpb24gY29weShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICBjb25zdCBkb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGRvY3VtZW50VHJlZU5vZGUsIG5vZGUpO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGE7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPj0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50Lk1JTklNVU1fU0VBUkNIX0NIQVJBQ1RFUlMgJiYgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cC5jb250cm9sc1tDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FXS52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZERhdGEgPSB0aGlzLmRvY3VtZW50VHJlZURhdGEubWFwKGNvcHkpLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YShub2RlOiBEb2N1bWVudFRyZWVOb2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5hbWUgJiYgbm9kZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgJiYgbm9kZS50eXBlID09PSBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGwgcmVjdXJzaXZlbHkgaWYgbm9kZSBoYXMgY2hpbGRyZW5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICByZXR1cm4gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLm1hcChjb3B5KS5maWx0ZXIoZmlsdGVyVHJlZURhdGEpKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb2YoZmlsdGVyZWREYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oXG4gICAgYWN0aW9uVHlwZTogJ2NoYW5nZUZvbGRlcicgfCAnb3BlbkluQU5ld1RhYicgfCAnZG93bmxvYWQnIHwgJ3ByaW50JyxcbiAgICBkb2N1bWVudFRyZWVOb2RlOiBEb2N1bWVudFRyZWVOb2RlXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAoYWN0aW9uVHlwZSkge1xuICAgICAgY2FzZSAoJ2NoYW5nZUZvbGRlcicpOlxuICAgICAgICB0aGlzLm9wZW5Nb3ZlRGlhbG9nKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdvcGVuSW5BTmV3VGFiJyk6XG4gICAgICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoTUVESUFfVklFV0VSX0xPQ0FMU1RPUkFHRV9LRVksXG4gICAgICAgICAgdGhpcy5kb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lZGlhVmlld2VySW5mbyh7XG4gICAgICAgICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwsXG4gICAgICAgICAgICBkb2N1bWVudF9maWxlbmFtZTogZG9jdW1lbnRUcmVlTm9kZS5kb2N1bWVudF9maWxlbmFtZVxuICAgICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uub3Blbk9uTmV3VGFiKFxuICAgICAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycvbWVkaWEtdmlld2VyJ10pPy50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoJ2Rvd25sb2FkJyk6XG4gICAgICAgIC8vIENyZWF0ZSBhIFVSTCBmcm9tIHRoZSBkb2N1bWVudF9iaW5hcnlfdXJsIHByb3BlcnR5IChhYnNvbHV0ZSBVUkwpIGFuZCB1c2UgdGhlIHBhdGggcG9ydGlvbiAocmVsYXRpdmUgVVJMKS5cbiAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgTWFuYWdlIENhc2VzIGFwcGxpY2F0aW9uIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBhIHByb3h5IHRvIHRoZSByZXF1ZXN0LCB3aXRoXG4gICAgICAgIC8vIHRoZSBjb3JyZWN0IHJlbW90ZSBlbmRwb2ludFxuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShuZXcgVVJMKGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfYmluYXJ5X3VybCkucGF0aG5hbWUsIGRvY3VtZW50VHJlZU5vZGUuZG9jdW1lbnRfZmlsZW5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKCdwcmludCcpOlxuICAgICAgICB0aGlzLnByaW50RG9jdW1lbnQobmV3IFVSTChkb2N1bWVudFRyZWVOb2RlLmRvY3VtZW50X2JpbmFyeV91cmwpLnBhdGhuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlQXNjZW5kaW5nKGNvbHVtbjogbnVtYmVyKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IHRoaXMubmVzdGVkRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBpdGVtLnNvcnRDaGlsZHJlbkFzY2VuZGluZyhjb2x1bW4sIFNvcnRPcmRlci5BU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHNvcnREYXRhU291cmNlRGVzY2VuZGluZyhjb2x1bW46IG51bWJlcikge1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLm5lc3RlZERhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgaXRlbS5zb3J0Q2hpbGRyZW5EZXNjZW5kaW5nKGNvbHVtbiwgU29ydE9yZGVyLkRFU0NFTkRJTkcpO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZU5vZGVEYXRhKHNvcnRlZERhdGEpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vZGVEYXRhKGRhdGE6IERvY3VtZW50VHJlZU5vZGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IHRoaXMubmVzdGVkVHJlZUNvbnRyb2wuZXhwYW5zaW9uTW9kZWwuc2VsZWN0ZWQubWFwKFxuICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xuICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBuZXdEb2N1bWVudFRyZWVOb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUudHlwZSA9IGl0ZW0udHlwZTtcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuO1xuXG4gICAgICByZXR1cm4gbmV3RG9jdW1lbnRUcmVlTm9kZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZsYXR0ZW5lZEFycmF5ID0gdGhpcy5uZXN0ZWREYXRhU291cmNlLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0uZmxhdHRlbmVkQWxsO1xuICAgIH0pLmZsYXQoKTtcbiAgICBjb25zdCBuZXdPYmplY3RzID0gZmxhdHRlbmVkQXJyYXkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gcHJldlNlbGVjdGVkLmluY2x1ZGVzKGl0ZW0ubmFtZSk7XG4gICAgfSk7XG4gICAgbmV3T2JqZWN0cy5mb3JFYWNoKG9iamVjdCA9PiB0aGlzLm5lc3RlZFRyZWVDb250cm9sLmV4cGFuZChvYmplY3QpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk1vdmVEaWFsb2cobm9kZTogRG9jdW1lbnRUcmVlTm9kZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ2FzZUZpbGVWaWV3Rm9sZGVyU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY2F0ZWdvcmllczogdGhpcy5jYXRlZ29yaWVzLCBkb2N1bWVudDogbm9kZSB9XG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUobmV3Q2F0SWQgPT4ge1xuICAgICAgaWYgKG5ld0NhdElkKSB7XG4gICAgICAgIHRoaXMubW92ZURvY3VtZW50LmVtaXQoeyBuZXdDYXRlZ29yeTogbmV3Q2F0SWQsIGRvY3VtZW50OiBub2RlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHByaW50RG9jdW1lbnQodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmludFdpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCk7XG4gICAgcHJpbnRXaW5kb3cucHJpbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcsIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZG93bmxvYWRGaWxlTmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgYS5yZW1vdmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvY3VtZW50LWZpbHRlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZG9jdW1lbnQtZmlsdGVyXCIgW2Zvcm1Hcm91cF09XCJkb2N1bWVudEZpbHRlckZvcm1Hcm91cFwiPlxuICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBkb2N1bWVudC1zZWFyY2hcIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBpZD1cImRvY3VtZW50LXNlYXJjaFwiXG4gICAgICBuYW1lPVwiZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IGRvY3VtZW50IG5hbWVcIlxuICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCBieSBkb2N1bWVudCBuYW1lXCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb2N1bWVudC1mb2xkZXJzLWhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImRvY3VtZW50LWZvbGRlcnMtaGVhZGVyX190aXRsZVwiPkRvY3VtZW50cyAoe3sgZG9jdW1lbnRDb3VudCB9fSk8L3NwYW4+XG4gIDxkaXY+XG4gICAgPGNjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItc29ydFxuICAgICAgKHNvcnRBc2NlbmRpbmcpPVwic29ydERhdGFTb3VyY2VBc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAoc29ydERlc2NlbmRpbmcpPVwic29ydERhdGFTb3VyY2VEZXNjZW5kaW5nKCRldmVudClcIlxuICAgID48L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXItc29ydD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyXCIgKm5nSWY9XCJkb2N1bWVudFRyZWVEYXRhXCI+XG4gIDxkaXYgKm5nSWY9XCIhbmVzdGVkRGF0YVNvdXJjZSB8fCBuZXN0ZWREYXRhU291cmNlLmxlbmd0aCA9PT0gMFwiPlxuICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIm5lc3RlZERhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwibmVzdGVkVHJlZUNvbnRyb2xcIj5cbiAgICAgIDwhLS0gZG9jdW1lbnQgLS0+XG4gICAgICA8Y2RrLW5lc3RlZC10cmVlLW5vZGUgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fbm9kZSBkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fbm9kZS0tZG9jdW1lbnRcIiAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZSBjYXNlLWZpbGVfX25vZGVcIiAoY2xpY2spPVwic2VsZWN0ZWROb2RlSXRlbSA9IG5vZGU7IGNsaWNrZWREb2N1bWVudC5lbWl0KG5vZGUpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mubm9kZS0tc2VsZWN0ZWRdPVwic2VsZWN0ZWROb2RlSXRlbT8ubmFtZSA9PT0gbm9kZS5uYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVfX2ljb25cIiBkaXNhYmxlZD5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWcvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZG9jdW1lbnQuc3ZnXCIgY2xhc3M9XCJub2RlX19pY29uSW1nXCIgYWx0PVwiRG9jdW1lbnQgaWNvblwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fbmFtZSBub2RlLW5hbWUtZG9jdW1lbnRcIj5cbiAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cbiAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fZG9jdW1lbnQtdXBsb2FkLXRpbWVzdGFtcFwiPnt7bm9kZS51cGxvYWRfdGltZXN0YW1wIHwgY2NkRGF0ZSA6ICdsb2NhbCcgOidkZCBNTU0gWVlZWSBISDptbSd9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZV9fZG9jdW1lbnQtb3B0aW9ucyBjYXNlLWZpbGVfX2FjdGlvblwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnNcbiAgICAgICAgICAgIChjaGFuZ2VGb2xkZXJBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdjaGFuZ2VGb2xkZXInLCBub2RlKVwiXG4gICAgICAgICAgICAob3BlbkluQU5ld1RhYkFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ29wZW5JbkFOZXdUYWInLCBub2RlKVwiXG4gICAgICAgICAgICAoZG93bmxvYWRBY3Rpb24pPVwidHJpZ2dlckRvY3VtZW50QWN0aW9uKCdkb3dubG9hZCcsIG5vZGUpXCJcbiAgICAgICAgICAgIChwcmludEFjdGlvbik9XCJ0cmlnZ2VyRG9jdW1lbnRBY3Rpb24oJ3ByaW50Jywgbm9kZSlcIlxuICAgICAgICAgICAgW2FsbG93TW92aW5nXT1cImFsbG93TW92aW5nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyLWRvY3VtZW50LWFjdGlvbnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbiAgICAgIDwhLS0gZm9sZGVyLS0+XG4gICAgICA8Y2RrLW5lc3RlZC10cmVlLW5vZGUgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fbm9kZSBkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fZm9sZGVyXCIgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IG5lc3RlZENoaWxkcmVuXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJub2RlXCIgY2RrVHJlZU5vZGVUb2dnbGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGVfX2ljb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubmFtZVwiID5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJub2RlX19pY29uSW1nXCJcbiAgICAgICAgICAgICAgICAgW3NyY109XCJuZXN0ZWRUcmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJy9hc3NldHMvaW1hZ2VzL2ZvbGRlci1vcGVuLnBuZycgOiAnL2Fzc2V0cy9pbWFnZXMvZm9sZGVyLnBuZydcIiBhbHQ9XCJGb2xkZXIgaWNvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlX19jb3VudFwiPnt7bm9kZS5jaGlsZERvY3VtZW50Q291bnR9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX25hbWUgbm9kZV9fbmFtZS0tZm9sZGVyXCI+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBbY2xhc3MuZG9jdW1lbnQtdHJlZS1pbnZpc2libGVdPVwiIW5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIGNka1RyZWVOb2RlT3V0bGV0PjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gICAgPC9jZGstdHJlZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -15,7 +15,7 @@ function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_1_Template(
15
15
  i0.ɵɵadvance(2);
16
16
  i0.ɵɵtextInterpolate(ctx_r1.title);
17
17
  } }
18
- function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_img_2_Template(rf, ctx) { if (rf & 1) {
18
+ function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_img_2_Template(rf, ctx) { if (rf & 1) {
19
19
  i0.ɵɵelement(0, "img", 10);
20
20
  } if (rf & 2) {
21
21
  const item_r4 = i0.ɵɵnextContext().$implicit;
@@ -23,35 +23,34 @@ function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_img_2_Tem
23
23
  i0.ɵɵpropertyInterpolate1("alt", "", ctx_r1.title, " icon'");
24
24
  i0.ɵɵproperty("src", item_r4.iconSrc, i0.ɵɵsanitizeUrl);
25
25
  } }
26
- function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
26
+ function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
27
27
  const _r3 = i0.ɵɵgetCurrentView();
28
28
  i0.ɵɵelementContainerStart(0);
29
- i0.ɵɵelementStart(1, "div", 7);
30
- i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_Template_div_click_1_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); item_r4.actionFn(); return i0.ɵɵresetView(ctx_r1.closeOverlay()); })("keyup", function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_Template_div_keyup_1_listener($event) { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event.key === "Enter" ? ctx_r1.actionAndClose(item_r4.actionFn()) : null); });
31
- i0.ɵɵtemplate(2, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_img_2_Template, 1, 3, "img", 8);
29
+ i0.ɵɵelementStart(1, "li", 7);
30
+ i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_Template_li_click_1_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); item_r4.actionFn(); return i0.ɵɵresetView(ctx_r1.closeOverlay()); })("keydown.enter", function CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_Template_li_keydown_enter_1_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); item_r4.actionFn(); return i0.ɵɵresetView(ctx_r1.closeOverlay()); });
31
+ i0.ɵɵtemplate(2, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_img_2_Template, 1, 3, "img", 8);
32
32
  i0.ɵɵelementStart(3, "span", 9);
33
33
  i0.ɵɵtext(4);
34
34
  i0.ɵɵelementEnd()();
35
35
  i0.ɵɵelementContainerEnd();
36
36
  } if (rf & 2) {
37
37
  const item_r4 = ctx.$implicit;
38
- const i_r5 = ctx.index;
39
- i0.ɵɵadvance();
40
- i0.ɵɵproperty("id", "overlay-menu__item" + i_r5);
41
- i0.ɵɵadvance();
38
+ i0.ɵɵadvance(2);
42
39
  i0.ɵɵproperty("ngIf", item_r4.iconSrc);
43
40
  i0.ɵɵadvance(2);
44
41
  i0.ɵɵtextInterpolate(item_r4.actionText);
45
42
  } }
46
43
  function CaseFileViewOverlayMenuComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
47
44
  i0.ɵɵelementStart(0, "div", 3);
48
- i0.ɵɵtemplate(1, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_1_Template, 3, 1, "ng-container", 4)(2, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_2_Template, 5, 3, "ng-container", 5);
49
- i0.ɵɵelementEnd();
45
+ i0.ɵɵtemplate(1, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_1_Template, 3, 1, "ng-container", 4);
46
+ i0.ɵɵelementStart(2, "ul");
47
+ i0.ɵɵtemplate(3, CaseFileViewOverlayMenuComponent_ng_template_4_ng_container_3_Template, 5, 2, "ng-container", 5);
48
+ i0.ɵɵelementEnd()();
50
49
  } if (rf & 2) {
51
50
  const ctx_r1 = i0.ɵɵnextContext();
52
51
  i0.ɵɵadvance();
53
52
  i0.ɵɵproperty("ngIf", ctx_r1.title);
54
- i0.ɵɵadvance();
53
+ i0.ɵɵadvance(2);
55
54
  i0.ɵɵproperty("ngForOf", ctx_r1.menuItems);
56
55
  } }
57
56
  export class CaseFileViewOverlayMenuComponent {
@@ -64,30 +63,37 @@ export class CaseFileViewOverlayMenuComponent {
64
63
  this.isOpen = isOpen;
65
64
  this.isOpenChange.emit(isOpen);
66
65
  }
67
- actionAndClose(func) {
68
- func();
69
- this.closeOverlay();
66
+ setOpen() {
67
+ this.isOpen = !this.isOpen;
68
+ if (this.isOpen) {
69
+ setTimeout(() => {
70
+ const el = document.querySelector('.overlay-menu__item:first-of-type');
71
+ if (el) {
72
+ el.focus();
73
+ }
74
+ }, 0);
75
+ }
70
76
  }
71
77
  static ɵfac = function CaseFileViewOverlayMenuComponent_Factory(t) { return new (t || CaseFileViewOverlayMenuComponent)(); };
72
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewOverlayMenuComponent, selectors: [["ccd-case-file-view-overlay-menu"]], inputs: { title: "title", menuItems: "menuItems", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, ngContentSelectors: _c1, decls: 5, vars: 4, consts: [["trigger", "cdkOverlayOrigin"], ["type", "button", "cdkOverlayOrigin", "", 1, "overlay-toggle", 3, "click"], ["cdkConnectedOverlay", "", 3, "backdropClick", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayBackdropClass"], [1, "overlay-menu"], [4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "overlay-menu__title"], ["tabindex", "0", 1, "overlay-menu__item", 3, "click", "keyup", "id"], ["class", "overlay-menu__itemIcon", 3, "src", "alt", 4, "ngIf"], [1, "overlay-menu__actionText"], [1, "overlay-menu__itemIcon", 3, "src", "alt"]], template: function CaseFileViewOverlayMenuComponent_Template(rf, ctx) { if (rf & 1) {
78
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFileViewOverlayMenuComponent, selectors: [["ccd-case-file-view-overlay-menu"]], inputs: { title: "title", menuItems: "menuItems", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, ngContentSelectors: _c1, decls: 5, vars: 4, consts: [["trigger", "cdkOverlayOrigin"], ["type", "button", "cdkOverlayOrigin", "", 1, "overlay-toggle", 3, "click"], ["cdkConnectedOverlay", "", 3, "backdropClick", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayBackdropClass"], [1, "overlay-menu"], [4, "ngIf"], [4, "ngFor", "ngForOf"], [1, "overlay-menu__title"], ["tabindex", "0", 1, "overlay-menu__item", 3, "click", "keydown.enter"], ["class", "overlay-menu__itemIcon", 3, "src", "alt", 4, "ngIf"], [1, "overlay-menu__actionText"], [1, "overlay-menu__itemIcon", 3, "src", "alt"]], template: function CaseFileViewOverlayMenuComponent_Template(rf, ctx) { if (rf & 1) {
73
79
  const _r1 = i0.ɵɵgetCurrentView();
74
80
  i0.ɵɵprojectionDef(_c0);
75
81
  i0.ɵɵelementStart(0, "div")(1, "button", 1, 0);
76
- i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); $event.stopPropagation(); return i0.ɵɵresetView(ctx.isOpen = !ctx.isOpen); });
82
+ i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); $event.stopPropagation(); return i0.ɵɵresetView(ctx.setOpen()); });
77
83
  i0.ɵɵprojection(3);
78
84
  i0.ɵɵelementEnd();
79
- i0.ɵɵtemplate(4, CaseFileViewOverlayMenuComponent_ng_template_4_Template, 3, 2, "ng-template", 2);
85
+ i0.ɵɵtemplate(4, CaseFileViewOverlayMenuComponent_ng_template_4_Template, 4, 2, "ng-template", 2);
80
86
  i0.ɵɵlistener("backdropClick", function CaseFileViewOverlayMenuComponent_Template_ng_template_backdropClick_4_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.closeOverlay()); });
81
87
  i0.ɵɵelementEnd();
82
88
  } if (rf & 2) {
83
- const trigger_r6 = i0.ɵɵreference(2);
89
+ const trigger_r5 = i0.ɵɵreference(2);
84
90
  i0.ɵɵadvance(4);
85
- i0.ɵɵproperty("cdkConnectedOverlayOrigin", trigger_r6)("cdkConnectedOverlayOpen", ctx.isOpen)("cdkConnectedOverlayHasBackdrop", true)("cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop");
91
+ i0.ɵɵproperty("cdkConnectedOverlayOrigin", trigger_r5)("cdkConnectedOverlayOpen", ctx.isOpen)("cdkConnectedOverlayHasBackdrop", true)("cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop");
86
92
  } }, dependencies: [i1.NgForOf, i1.NgIf, i2.CdkConnectedOverlay, i2.CdkOverlayOrigin], styles: [".overlay-toggle[_ngcontent-%COMP%]{display:block;background:none;border:0;padding:0 6px;margin-right:-4px;cursor:pointer}.overlay-menu[_ngcontent-%COMP%]{background-color:#fafafa;border:1px solid grey;margin-top:8px;font-size:1rem}.overlay-menu__title[_ngcontent-%COMP%], .overlay-menu__item[_ngcontent-%COMP%]{padding:10px;border-bottom:1px solid grey}.overlay-menu__title[_ngcontent-%COMP%]:last-child, .overlay-menu__item[_ngcontent-%COMP%]:last-child{border:none}.overlay-menu__title[_ngcontent-%COMP%]{padding-left:6px;padding-right:6px}.overlay-menu__item[_ngcontent-%COMP%]{display:flex;align-items:center;cursor:pointer;font-size:.875em}.overlay-menu__item[_ngcontent-%COMP%]:hover{background-color:#fff2cc}.overlay-menu__item[_ngcontent-%COMP%]:focus{border:2px solid #ffbf47}.overlay-menu__itemIcon[_ngcontent-%COMP%]{height:1.25em;width:1.25em;margin-right:6px}"] });
87
93
  }
88
94
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewOverlayMenuComponent, [{
89
95
  type: Component,
90
- args: [{ selector: 'ccd-case-file-view-overlay-menu', template: "<div>\n <button type=\"button\" class=\"overlay-toggle\"\n (click)=\"$event.stopPropagation(); isOpen = !isOpen\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[trigger]\"></ng-content>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"closeOverlay()\"\n >\n <div class=\"overlay-menu\">\n <ng-container *ngIf=\"title\">\n <div class=\"overlay-menu__title\">{{title}}</div>\n </ng-container>\n\n <ng-container *ngFor=\"let item of menuItems; index as i\">\n <div class=\"overlay-menu__item\" tabindex=\"0\" [id]=\"'overlay-menu__item' + i\" (click)=\"item.actionFn(); closeOverlay();\" (keyup)=\"$event.key === 'Enter' ? actionAndClose(item.actionFn()) : null\">\n <img *ngIf=\"item.iconSrc\" [src]=\"item.iconSrc\" class=\"overlay-menu__itemIcon\" alt=\"{{title}} icon'\" />\n <span class=\"overlay-menu__actionText\">{{item.actionText}}</span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [".overlay-toggle{display:block;background:none;border:0;padding:0 6px;margin-right:-4px;cursor:pointer}.overlay-menu{background-color:#fafafa;border:1px solid grey;margin-top:8px;font-size:1rem}.overlay-menu__title,.overlay-menu__item{padding:10px;border-bottom:1px solid grey}.overlay-menu__title:last-child,.overlay-menu__item:last-child{border:none}.overlay-menu__title{padding-left:6px;padding-right:6px}.overlay-menu__item{display:flex;align-items:center;cursor:pointer;font-size:.875em}.overlay-menu__item:hover{background-color:#fff2cc}.overlay-menu__item:focus{border:2px solid #ffbf47}.overlay-menu__itemIcon{height:1.25em;width:1.25em;margin-right:6px}\n"] }]
96
+ args: [{ selector: 'ccd-case-file-view-overlay-menu', template: "<div>\n <button type=\"button\" class=\"overlay-toggle\"\n (click)=\"$event.stopPropagation(); setOpen()\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[trigger]\"></ng-content>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"closeOverlay()\"\n >\n <div class=\"overlay-menu\">\n <ng-container *ngIf=\"title\">\n <div class=\"overlay-menu__title\">{{title}}</div>\n </ng-container>\n\n <ul>\n <ng-container *ngFor=\"let item of menuItems;\">\n <li class=\"overlay-menu__item\" tabindex=\"0\" (click)=\"item.actionFn(); closeOverlay();\" (keydown.enter)=\"item.actionFn(); closeOverlay();\">\n <img *ngIf=\"item.iconSrc\" [src]=\"item.iconSrc\" class=\"overlay-menu__itemIcon\" alt=\"{{title}} icon'\" />\n <span class=\"overlay-menu__actionText\">{{item.actionText}}</span>\n </li>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n</div>\n", styles: [".overlay-toggle{display:block;background:none;border:0;padding:0 6px;margin-right:-4px;cursor:pointer}.overlay-menu{background-color:#fafafa;border:1px solid grey;margin-top:8px;font-size:1rem}.overlay-menu__title,.overlay-menu__item{padding:10px;border-bottom:1px solid grey}.overlay-menu__title:last-child,.overlay-menu__item:last-child{border:none}.overlay-menu__title{padding-left:6px;padding-right:6px}.overlay-menu__item{display:flex;align-items:center;cursor:pointer;font-size:.875em}.overlay-menu__item:hover{background-color:#fff2cc}.overlay-menu__item:focus{border:2px solid #ffbf47}.overlay-menu__itemIcon{height:1.25em;width:1.25em;margin-right:6px}\n"] }]
91
97
  }], null, { title: [{
92
98
  type: Input
93
99
  }], menuItems: [{
@@ -98,4 +104,4 @@ export class CaseFileViewOverlayMenuComponent {
98
104
  type: Output
99
105
  }] }); })();
100
106
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewOverlayMenuComponent, { className: "CaseFileViewOverlayMenuComponent", filePath: "lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.ts", lineNumber: 9 }); })();
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvc2hhcmVkL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9zaGFyZWQvY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51L2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDZ0JqRSw2QkFBNEI7SUFDMUIsOEJBQWlDO0lBQUEsWUFBUztJQUFBLGlCQUFNOzs7O0lBQWYsZUFBUztJQUFULGtDQUFTOzs7SUFLeEMsMEJBQXNHOzs7O0lBQXhCLDREQUFxQjtJQUF6RSx1REFBb0I7Ozs7SUFGbEQsNkJBQXlEO0lBQ3ZELDhCQUFrTTtJQUExRSxBQUEzQyxxTkFBUyxrQkFBZSx3QkFBRSxxQkFBYyxLQUFFLG1QQUF5QixPQUFPLEdBQUcsc0JBQWUsa0JBQWUsQ0FBQyxHQUFHLElBQUksS0FBQztJQUMvTCw4R0FBc0c7SUFDdEcsK0JBQXVDO0lBQUEsWUFBbUI7SUFDNUQsQUFENEQsaUJBQU8sRUFDN0Q7Ozs7O0lBSHVDLGNBQStCO0lBQS9CLGdEQUErQjtJQUNwRSxjQUFrQjtJQUFsQixzQ0FBa0I7SUFDZSxlQUFtQjtJQUFuQix3Q0FBbUI7OztJQVJoRSw4QkFBMEI7SUFLeEIsQUFKQSxpSEFBNEIsb0dBSTZCO0lBTTNELGlCQUFNOzs7SUFWVyxjQUFXO0lBQVgsbUNBQVc7SUFJSyxjQUFjO0lBQWQsMENBQWM7O0FEWm5ELE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQWdDO0lBRXpDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRCxZQUFZO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVM7UUFDN0IsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzswRkFqQlUsZ0NBQWdDOzZEQUFoQyxnQ0FBZ0M7OztZQ1AzQyxBQURGLDJCQUFLLG1CQUdrRDtZQUQ3QyxtSUFBUyx3QkFBd0IscURBQW1CO1lBRTFELGtCQUE0QztZQUM5QyxpQkFBUztZQUVULGlHQU9DO1lBREMsd0tBQWlCLGtCQUFjLEtBQUM7WUFlcEMsaUJBQU07OztZQW5CRixlQUFxQztZQUdyQyxBQURBLEFBREEsQUFEQSxzREFBcUMsdUNBQ0gsd0NBQ0ssd0VBQ2dDOzs7aUZESjlELGdDQUFnQztjQUw1QyxTQUFTOzJCQUNFLGlDQUFpQztnQkFLM0IsS0FBSztrQkFBcEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFFVSxNQUFNO2tCQUFyQixLQUFLO1lBQ1csWUFBWTtrQkFBNUIsTUFBTTs7a0ZBTEksZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2VGaWxlVmlld092ZXJsYXlNZW51SXRlbSB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld092ZXJsYXlNZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIG1lbnVJdGVtczogQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVJdGVtW107XG5cbiAgQElucHV0KCkgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkFuZENsb3NlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIGZ1bmMoKTtcbiAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm92ZXJsYXktdG9nZ2xlXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBpc09wZW4gPSAhaXNPcGVuXCJcbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0cmlnZ2VyXVwiPjwvbmctY29udGVudD5cbiAgPC9idXR0b24+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzXT1cIidjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCdcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LW1lbnVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1tZW51X190aXRsZVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWVudUl0ZW1zOyBpbmRleCBhcyBpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LW1lbnVfX2l0ZW1cIiB0YWJpbmRleD1cIjBcIiBbaWRdPVwiJ292ZXJsYXktbWVudV9faXRlbScgKyBpXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uRm4oKTsgY2xvc2VPdmVybGF5KCk7XCIgKGtleXVwKT1cIiRldmVudC5rZXkgPT09ICdFbnRlcicgPyBhY3Rpb25BbmRDbG9zZShpdGVtLmFjdGlvbkZuKCkpIDogbnVsbFwiPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmljb25TcmNcIiBbc3JjXT1cIml0ZW0uaWNvblNyY1wiIGNsYXNzPVwib3ZlcmxheS1tZW51X19pdGVtSWNvblwiIGFsdD1cInt7dGl0bGV9fSBpY29uJ1wiIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVybGF5LW1lbnVfX2FjdGlvblRleHRcIj57e2l0ZW0uYWN0aW9uVGV4dH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvc2hhcmVkL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9zaGFyZWQvY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51L2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDZ0JqRSw2QkFBNEI7SUFDMUIsOEJBQWlDO0lBQUEsWUFBUztJQUFBLGlCQUFNOzs7O0lBQWYsZUFBUztJQUFULGtDQUFTOzs7SUFNdEMsMEJBQXNHOzs7O0lBQXhCLDREQUFxQjtJQUF6RSx1REFBb0I7Ozs7SUFGbEQsNkJBQThDO0lBQzVDLDZCQUEwSTtJQUFuRCxBQUEzQyxvTkFBUyxrQkFBZSx3QkFBRSxxQkFBYyxLQUFFLHVOQUFrQixrQkFBZSx3QkFBRSxxQkFBYyxLQUFFO0lBQ3ZJLDhHQUFzRztJQUN0RywrQkFBdUM7SUFBQSxZQUFtQjtJQUM1RCxBQUQ0RCxpQkFBTyxFQUM5RDs7OztJQUZHLGVBQWtCO0lBQWxCLHNDQUFrQjtJQUNlLGVBQW1CO0lBQW5CLHdDQUFtQjs7O0lBVGxFLDhCQUEwQjtJQUN4QixpSEFBNEI7SUFJNUIsMEJBQUk7SUFDRixpSEFBOEM7SUFPbEQsQUFERSxpQkFBSyxFQUNEOzs7SUFaVyxjQUFXO0lBQVgsbUNBQVc7SUFLTyxlQUFhO0lBQWIsMENBQWE7O0FEYnBELE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQWdDO0lBRXpDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRCxZQUFZO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLEdBQUUsRUFBRTtnQkFDYixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUcsRUFBRSxFQUFFLENBQUM7b0JBQUUsRUFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxDQUFDO1lBQ3pDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDOzBGQXRCVSxnQ0FBZ0M7NkRBQWhDLGdDQUFnQzs7O1lDUDNDLEFBREYsMkJBQUssbUJBR2tEO1lBRDdDLG1JQUFTLHdCQUF3Qix3QkFBRSxhQUFTLEtBQUM7WUFFbkQsa0JBQTRDO1lBQzlDLGlCQUFTO1lBRVQsaUdBT0M7WUFEQyx3S0FBaUIsa0JBQWMsS0FBQztZQWlCcEMsaUJBQU07OztZQXJCRixlQUFxQztZQUdyQyxBQURBLEFBREEsQUFEQSxzREFBcUMsdUNBQ0gsd0NBQ0ssd0VBQ2dDOzs7aUZESjlELGdDQUFnQztjQUw1QyxTQUFTOzJCQUNFLGlDQUFpQztnQkFLM0IsS0FBSztrQkFBcEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFFVSxNQUFNO2tCQUFyQixLQUFLO1lBQ1csWUFBWTtrQkFBNUIsTUFBTTs7a0ZBTEksZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2VGaWxlVmlld092ZXJsYXlNZW51SXRlbSB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld092ZXJsYXlNZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIG1lbnVJdGVtczogQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVJdGVtW107XG5cbiAgQElucHV0KCkgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICB9XG5cbiAgcHVibGljIHNldE9wZW4oKSB7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgaWYodGhpcy5pc09wZW4pIHtcbiAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub3ZlcmxheS1tZW51X19pdGVtOmZpcnN0LW9mLXR5cGUnKTtcbiAgICAgICAgaWYoZWwpIHsgKGVsIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpOyB9XG4gICAgICB9LDApOyBcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwib3ZlcmxheS10b2dnbGVcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNldE9wZW4oKVwiXG4gICAgICAgICAgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdHJpZ2dlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvYnV0dG9uPlxuXG4gIDxuZy10ZW1wbGF0ZVxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzc109XCInY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZU92ZXJsYXkoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1tZW51XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGl0bGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktbWVudV9fdGl0bGVcIj57e3RpdGxlfX08L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dWw+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWVudUl0ZW1zO1wiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm92ZXJsYXktbWVudV9faXRlbVwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJpdGVtLmFjdGlvbkZuKCk7IGNsb3NlT3ZlcmxheSgpO1wiIChrZXlkb3duLmVudGVyKT1cIml0ZW0uYWN0aW9uRm4oKTsgY2xvc2VPdmVybGF5KCk7XCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbS5pY29uU3JjXCIgW3NyY109XCJpdGVtLmljb25TcmNcIiBjbGFzcz1cIm92ZXJsYXktbWVudV9faXRlbUljb25cIiBhbHQ9XCJ7e3RpdGxlfX0gaWNvbidcIiAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVybGF5LW1lbnVfX2FjdGlvblRleHRcIj57e2l0ZW0uYWN0aW9uVGV4dH19PC9zcGFuPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -1,8 +1,8 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component';
3
3
  import * as i0 from "@angular/core";
4
- const _c0 = (a0, a1, a2, a3, a4, a5) => ({ id: a0, label: a1, field_type: a2, display_context_parameter: a3, value: a4, hidden: a5 });
5
- const _c1 = (a0, a1, a2, a3, a4) => ({ id: a0, label: a1, field_type: a2, value: a3, hidden: a4 });
4
+ const _c0 = (a0, a1, a2, a3, a4, a5, a6) => ({ id: a0, label: a1, field_type: a2, display_context_parameter: a3, value: a4, hidden: a5, parent: a6 });
5
+ const _c1 = (a0, a1, a2, a3, a4, a5) => ({ id: a0, label: a1, field_type: a2, value: a3, hidden: a4, parent: a5 });
6
6
  function ReadCollectionFieldComponent_table_0_tbody_2_Template(rf, ctx) { if (rf & 1) {
7
7
  i0.ɵɵelementStart(0, "tbody")(1, "tr");
8
8
  i0.ɵɵelement(2, "th", 4);
@@ -12,7 +12,7 @@ function ReadCollectionFieldComponent_table_0_tbody_2_Template(rf, ctx) { if (rf
12
12
  } if (rf & 2) {
13
13
  const ctx_r0 = i0.ɵɵnextContext(2);
14
14
  i0.ɵɵadvance(4);
15
- i0.ɵɵproperty("caseField", i0.ɵɵpureFunction6(3, _c0, ctx_r0.caseField.label, ctx_r0.caseField.label, ctx_r0.caseField.field_type.collection_field_type, ctx_r0.caseField.display_context_parameter, ctx_r0.caseField.value, ctx_r0.caseField.hidden))("context", ctx_r0.context)("topLevelFormGroup", ctx_r0.topLevelFormGroup);
15
+ i0.ɵɵproperty("caseField", i0.ɵɵpureFunction7(3, _c0, ctx_r0.caseField.label, ctx_r0.caseField.label, ctx_r0.caseField.field_type.collection_field_type, ctx_r0.caseField.display_context_parameter, ctx_r0.caseField.value, ctx_r0.caseField.hidden, ctx_r0.caseField))("context", ctx_r0.context)("topLevelFormGroup", ctx_r0.topLevelFormGroup);
16
16
  } }
17
17
  function ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template(rf, ctx) { if (rf & 1) {
18
18
  i0.ɵɵelementStart(0, "tr")(1, "td");
@@ -23,11 +23,11 @@ function ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template(rf, ctx) { i
23
23
  const i_r3 = ctx.index;
24
24
  const ctx_r0 = i0.ɵɵnextContext(3);
25
25
  i0.ɵɵadvance(2);
26
- i0.ɵɵproperty("caseField", i0.ɵɵpureFunction5(4, _c1, i_r3, ctx_r0.caseField.label + " " + (i_r3 + 1), ctx_r0.caseField.field_type.collection_field_type, item_r2.value, ctx_r0.caseField.hidden))("context", ctx_r0.context)("topLevelFormGroup", ctx_r0.topLevelFormGroup)("idPrefix", ctx_r0.buildIdPrefix(i_r3));
26
+ i0.ɵɵproperty("caseField", i0.ɵɵpureFunction6(4, _c1, i_r3 + "", ctx_r0.caseField.label + " " + (i_r3 + 1), ctx_r0.caseField.field_type.collection_field_type, item_r2.value, ctx_r0.caseField.hidden, ctx_r0.caseField))("context", ctx_r0.context)("topLevelFormGroup", ctx_r0.topLevelFormGroup)("idPrefix", ctx_r0.buildIdPrefix(i_r3));
27
27
  } }
28
28
  function ReadCollectionFieldComponent_table_0_tbody_3_Template(rf, ctx) { if (rf & 1) {
29
29
  i0.ɵɵelementStart(0, "tbody");
30
- i0.ɵɵtemplate(1, ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template, 3, 10, "tr", 6);
30
+ i0.ɵɵtemplate(1, ReadCollectionFieldComponent_table_0_tbody_3_tr_1_Template, 3, 11, "tr", 6);
31
31
  i0.ɵɵelementEnd();
32
32
  } if (rf & 2) {
33
33
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -37,7 +37,7 @@ function ReadCollectionFieldComponent_table_0_tbody_3_Template(rf, ctx) { if (rf
37
37
  function ReadCollectionFieldComponent_table_0_Template(rf, ctx) { if (rf & 1) {
38
38
  i0.ɵɵelementStart(0, "table", 1);
39
39
  i0.ɵɵelementContainerStart(1, 2);
40
- i0.ɵɵtemplate(2, ReadCollectionFieldComponent_table_0_tbody_2_Template, 5, 10, "tbody", 3)(3, ReadCollectionFieldComponent_table_0_tbody_3_Template, 2, 1, "tbody", 3);
40
+ i0.ɵɵtemplate(2, ReadCollectionFieldComponent_table_0_tbody_2_Template, 5, 11, "tbody", 3)(3, ReadCollectionFieldComponent_table_0_tbody_3_Template, 2, 1, "tbody", 3);
41
41
  i0.ɵɵelementContainerEnd();
42
42
  i0.ɵɵelementEnd();
43
43
  } if (rf & 2) {
@@ -72,7 +72,7 @@ export class ReadCollectionFieldComponent extends AbstractFieldReadComponent {
72
72
  }
73
73
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadCollectionFieldComponent, [{
74
74
  type: Component,
75
- args: [{ selector: 'ccd-read-collection-field', template: "<table *ngIf=\"caseField.value && caseField.value.length \" class=\"collection-field-table\" aria-describedby=\"collection table\">\n <ng-container [ngSwitch]=\"isDisplayContextParameterAvailable\">\n <tbody *ngSwitchCase=\"true\">\n <tr>\n <th id=\"hiddenHeader\" style=\"display: none;\"></th>\n <td>\n <ccd-field-read\n [caseField]=\"{\n id: caseField.label,\n label: caseField.label,\n field_type: caseField.field_type.collection_field_type,\n display_context_parameter: caseField.display_context_parameter,\n value: caseField.value,\n hidden: caseField.hidden\n }\"\n [context]=\"context\"\n [topLevelFormGroup]=\"topLevelFormGroup\">\n </ccd-field-read>\n </td>\n </tr>\n </tbody>\n <tbody *ngSwitchCase=\"false\">\n <tr *ngFor=\"let item of caseField.value; let i = index\">\n <td>\n <ccd-field-read\n [caseField]=\"{\n id: i,\n label: caseField.label + ' ' + (i + 1),\n field_type: caseField.field_type.collection_field_type,\n value: item.value,\n hidden: caseField.hidden\n }\"\n [context]=\"context\"\n [topLevelFormGroup]=\"topLevelFormGroup\"\n [idPrefix]=\"buildIdPrefix(i)\">\n </ccd-field-read>\n </td>\n </tr>\n </tbody>\n </ng-container>\n</table>\n", styles: [".collection-field-table tr:first-child>td{padding-top:0}.collection-field-table tr:last-child>td{border-bottom:none}.collection-field-table td.collection-actions{width:1px;white-space:nowrap}.error-spacing{margin-top:10px}.collection-title{height:51px}.float-left{float:left;padding-top:8px}.float-right{float:right}.complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}.collection-indicator{border-left:solid 5px #b1b4b6}\n"] }]
75
+ args: [{ selector: 'ccd-read-collection-field', template: "<table *ngIf=\"caseField.value && caseField.value.length \" class=\"collection-field-table\" aria-describedby=\"collection table\">\n <ng-container [ngSwitch]=\"isDisplayContextParameterAvailable\">\n <tbody *ngSwitchCase=\"true\">\n <tr>\n <th id=\"hiddenHeader\" style=\"display: none;\"></th>\n <td>\n <ccd-field-read\n [caseField]=\"{\n id: caseField.label,\n label: caseField.label,\n field_type: caseField.field_type.collection_field_type,\n display_context_parameter: caseField.display_context_parameter,\n value: caseField.value,\n hidden: caseField.hidden,\n parent: caseField\n }\"\n [context]=\"context\"\n [topLevelFormGroup]=\"topLevelFormGroup\">\n </ccd-field-read>\n </td>\n </tr>\n </tbody>\n <tbody *ngSwitchCase=\"false\">\n <tr *ngFor=\"let item of caseField.value; let i = index\">\n <td>\n <ccd-field-read\n [caseField]=\"{\n id: i + '',\n label: caseField.label + ' ' + (i + 1),\n field_type: caseField.field_type.collection_field_type,\n value: item.value,\n hidden: caseField.hidden,\n parent: caseField\n }\"\n [context]=\"context\"\n [topLevelFormGroup]=\"topLevelFormGroup\"\n [idPrefix]=\"buildIdPrefix(i)\">\n </ccd-field-read>\n </td>\n </tr>\n </tbody>\n </ng-container>\n</table>\n", styles: [".collection-field-table tr:first-child>td{padding-top:0}.collection-field-table tr:last-child>td{border-bottom:none}.collection-field-table td.collection-actions{width:1px;white-space:nowrap}.error-spacing{margin-top:10px}.collection-title{height:51px}.float-left{float:left;padding-top:8px}.float-right{float:right}.complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}.collection-indicator{border-left:solid 5px #b1b4b6}\n"] }]
76
76
  }], null, null); })();
77
77
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadCollectionFieldComponent, { className: "ReadCollectionFieldComponent", filePath: "lib/shared/components/palette/collection/read-collection-field.component.ts", lineNumber: 10 }); })();
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb2xsZWN0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2NvbGxlY3Rpb24vcmVhZC1jb2xsZWN0aW9uLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2NvbGxlY3Rpb24vcmVhZC1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7SUNDckYsQUFEQSw2QkFBNEIsU0FDeEI7SUFDRix3QkFBa0Q7SUFDbEQsMEJBQUk7SUFDRixvQ0FXaUI7SUFHckIsQUFEQSxBQURFLGlCQUFLLEVBQ0YsRUFDRzs7O0lBYkYsZUFPRTtJQUVGLEFBREEsQUFSQSxzUEFPRSwyQkFDaUIsK0NBQ29COzs7SUFPM0MsQUFERiwwQkFBd0QsU0FDbEQ7SUFDRixvQ0FXaUI7SUFFckIsQUFERSxpQkFBSyxFQUNGOzs7OztJQVpDLGVBTUU7SUFHRixBQURBLEFBREEsQUFQQSxrTUFNRSwyQkFDaUIsK0NBQ29CLHdDQUNWOzs7SUFibkMsNkJBQTZCO0lBQzdCLDRGQUF3RDtJQWdCeEQsaUJBQVE7OztJQWhCYSxjQUFvQjtJQUFwQixnREFBb0I7OztJQXRCN0MsZ0NBQTZIO0lBQzNILGdDQUE4RDtJQW9CNUQsQUFuQkEsMEZBQTRCLDRFQW1CQzs7SUFtQmpDLGlCQUFROzs7SUF2Q1EsY0FBK0M7SUFBL0Msb0VBQStDO0lBQ25ELGNBQWtCO0lBQWxCLG1DQUFrQjtJQW1CbEIsY0FBbUI7SUFBbkIsb0NBQW1COztBRFovQixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsMEJBQTBCO0lBRW5FLGtDQUFrQyxHQUFHLEtBQUssQ0FBQztJQUUzQyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdEgsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFhO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7NlFBaEJVLDRCQUE0QixTQUE1Qiw0QkFBNEI7NkRBQTVCLDRCQUE0QjtZQ1R6QyxpRkFBNkg7O1lBQXJILHdFQUErQzs7O2lGRFMxQyw0QkFBNEI7Y0FMeEMsU0FBUzsyQkFDRSwyQkFBMkI7O2tGQUkxQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkUmVhZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtcmVhZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcmVhZC1jb2xsZWN0aW9uLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlYWQtY29sbGVjdGlvbi1maWVsZC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbi1maWVsZC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVhZENvbGxlY3Rpb25GaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRSZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciAmJiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnRyaW0oKS5zdGFydHNXaXRoKCcjVEFCTEUoJykpIHtcbiAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJ1aWxkSWRQcmVmaXgoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gYCR7dGhpcy5pZFByZWZpeH0ke3RoaXMuY2FzZUZpZWxkLmlkfV9gO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtpbmRleH1fYDtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxufVxuIiwiPHRhYmxlICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGggXCIgY2xhc3M9XCJjb2xsZWN0aW9uLWZpZWxkLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNvbGxlY3Rpb24gdGFibGVcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZVwiPlxuICAgIDx0Ym9keSAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgIDx0cj5cbiAgICAgIDx0aCBpZD1cImhpZGRlbkhlYWRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L3RoPlxuICAgICAgPHRkPlxuICAgICAgICA8Y2NkLWZpZWxkLXJlYWRcbiAgICAgICAgICBbY2FzZUZpZWxkXT1cIntcbiAgICAgICAgICAgIGlkOiBjYXNlRmllbGQubGFiZWwsXG4gICAgICAgICAgICBsYWJlbDogY2FzZUZpZWxkLmxhYmVsLFxuICAgICAgICAgICAgZmllbGRfdHlwZTogY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLFxuICAgICAgICAgICAgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlcjogY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIsXG4gICAgICAgICAgICB2YWx1ZTogY2FzZUZpZWxkLnZhbHVlLFxuICAgICAgICAgICAgaGlkZGVuOiBjYXNlRmllbGQuaGlkZGVuXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgICAgW3RvcExldmVsRm9ybUdyb3VwXT1cInRvcExldmVsRm9ybUdyb3VwXCI+XG4gICAgICAgIDwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgICA8dGJvZHkgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNhc2VGaWVsZC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPHRkPlxuICAgICAgICA8Y2NkLWZpZWxkLXJlYWRcbiAgICAgICAgICBbY2FzZUZpZWxkXT1cIntcbiAgICAgICAgICAgIGlkOiBpLFxuICAgICAgICAgICAgbGFiZWw6IGNhc2VGaWVsZC5sYWJlbCArICcgJyArIChpICsgMSksXG4gICAgICAgICAgICBmaWVsZF90eXBlOiBjYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGhpZGRlbjogY2FzZUZpZWxkLmhpZGRlblxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICAgIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJ0b3BMZXZlbEZvcm1Hcm91cFwiXG4gICAgICAgICAgW2lkUHJlZml4XT1cImJ1aWxkSWRQcmVmaXgoaSlcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGFibGU+XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb2xsZWN0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2NvbGxlY3Rpb24vcmVhZC1jb2xsZWN0aW9uLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2NvbGxlY3Rpb24vcmVhZC1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7SUNDckYsQUFEQSw2QkFBNEIsU0FDeEI7SUFDRix3QkFBa0Q7SUFDbEQsMEJBQUk7SUFDRixvQ0FZaUI7SUFHckIsQUFEQSxBQURFLGlCQUFLLEVBQ0YsRUFDRzs7O0lBZEYsZUFRRTtJQUVGLEFBREEsQUFUQSx3UUFRRSwyQkFDaUIsK0NBQ29COzs7SUFPM0MsQUFERiwwQkFBd0QsU0FDbEQ7SUFDRixvQ0FZaUI7SUFFckIsQUFERSxpQkFBSyxFQUNGOzs7OztJQWJDLGVBT0U7SUFHRixBQURBLEFBREEsQUFSQSx5TkFPRSwyQkFDaUIsK0NBQ29CLHdDQUNWOzs7SUFkbkMsNkJBQTZCO0lBQzdCLDRGQUF3RDtJQWlCeEQsaUJBQVE7OztJQWpCYSxjQUFvQjtJQUFwQixnREFBb0I7OztJQXZCN0MsZ0NBQTZIO0lBQzNILGdDQUE4RDtJQXFCNUQsQUFwQkEsMEZBQTRCLDRFQW9CQzs7SUFvQmpDLGlCQUFROzs7SUF6Q1EsY0FBK0M7SUFBL0Msb0VBQStDO0lBQ25ELGNBQWtCO0lBQWxCLG1DQUFrQjtJQW9CbEIsY0FBbUI7SUFBbkIsb0NBQW1COztBRGIvQixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsMEJBQTBCO0lBRW5FLGtDQUFrQyxHQUFHLEtBQUssQ0FBQztJQUUzQyxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdEgsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFhO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7NlFBaEJVLDRCQUE0QixTQUE1Qiw0QkFBNEI7NkRBQTVCLDRCQUE0QjtZQ1R6QyxpRkFBNkg7O1lBQXJILHdFQUErQzs7O2lGRFMxQyw0QkFBNEI7Y0FMeEMsU0FBUzsyQkFDRSwyQkFBMkI7O2tGQUkxQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkUmVhZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtcmVhZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcmVhZC1jb2xsZWN0aW9uLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlYWQtY29sbGVjdGlvbi1maWVsZC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbi1maWVsZC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVhZENvbGxlY3Rpb25GaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRSZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciAmJiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnRyaW0oKS5zdGFydHNXaXRoKCcjVEFCTEUoJykpIHtcbiAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJ1aWxkSWRQcmVmaXgoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gYCR7dGhpcy5pZFByZWZpeH0ke3RoaXMuY2FzZUZpZWxkLmlkfV9gO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtpbmRleH1fYDtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxufVxuIiwiPHRhYmxlICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGggXCIgY2xhc3M9XCJjb2xsZWN0aW9uLWZpZWxkLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNvbGxlY3Rpb24gdGFibGVcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckF2YWlsYWJsZVwiPlxuICAgIDx0Ym9keSAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgIDx0cj5cbiAgICAgIDx0aCBpZD1cImhpZGRlbkhlYWRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L3RoPlxuICAgICAgPHRkPlxuICAgICAgICA8Y2NkLWZpZWxkLXJlYWRcbiAgICAgICAgICBbY2FzZUZpZWxkXT1cIntcbiAgICAgICAgICAgIGlkOiBjYXNlRmllbGQubGFiZWwsXG4gICAgICAgICAgICBsYWJlbDogY2FzZUZpZWxkLmxhYmVsLFxuICAgICAgICAgICAgZmllbGRfdHlwZTogY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLFxuICAgICAgICAgICAgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlcjogY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIsXG4gICAgICAgICAgICB2YWx1ZTogY2FzZUZpZWxkLnZhbHVlLFxuICAgICAgICAgICAgaGlkZGVuOiBjYXNlRmllbGQuaGlkZGVuLFxuICAgICAgICAgICAgcGFyZW50OiBjYXNlRmllbGRcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgICBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwidG9wTGV2ZWxGb3JtR3JvdXBcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICAgIDx0Ym9keSAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2FzZUZpZWxkLnZhbHVlOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8dGQ+XG4gICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgIFtjYXNlRmllbGRdPVwie1xuICAgICAgICAgICAgaWQ6IGkgKyAnJyxcbiAgICAgICAgICAgIGxhYmVsOiBjYXNlRmllbGQubGFiZWwgKyAnICcgKyAoaSArIDEpLFxuICAgICAgICAgICAgZmllbGRfdHlwZTogY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICBoaWRkZW46IGNhc2VGaWVsZC5oaWRkZW4sXG4gICAgICAgICAgICBwYXJlbnQ6IGNhc2VGaWVsZFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICAgIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJ0b3BMZXZlbEZvcm1Hcm91cFwiXG4gICAgICAgICAgW2lkUHJlZml4XT1cImJ1aWxkSWRQcmVmaXgoaSlcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGFibGU+XG4iXX0=