verben-workflow-ui 0.5.8 → 0.5.9

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.
@@ -102,11 +102,18 @@ export class ActorsComponent extends BaseDataViewComponent {
102
102
  handleSearch(event) {
103
103
  this.facade.search(event.value);
104
104
  }
105
+ handleFetchedExport({ skip, limit }) {
106
+ this.facade.loadData(skip, limit).then((data) => {
107
+ if (data) {
108
+ this.handleExport(data);
109
+ }
110
+ });
111
+ }
105
112
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActorsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ActorFacade }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActorsComponent, selector: "lib-actors", usesInheritance: true, ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\"\n >\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input\n name=\"Name\"\n [formControl]=\"control\"\n placeHolder=\"Enter Name\"\n />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"tags\">\n <ng-template #cellEdit let-control=\"control\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select tags\"\n [options]=\"tags()\"\n optionLabel=\"Name\"\n id=\"tags\"\n [formControl]=\"control\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >E-Mail:</label\n >\n <span id=\"phone\" class=\"text-sm\">{{\n item.data.Identifier\n }}</span>\n </p>\n </div>\n\n <!-- <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n item.data.WorkflowCode\n }}</span>\n <a\n [routerLink]=\"[\n '/workflow/task-history',\n item.data.Code\n ]\"\n routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs\"\n >view history</a\n >\n </div> -->\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Name</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <actors-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n ></actors-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (exportDataEvent)=\"handleExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i4.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i4.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "onItemClick", "onCardChildClick"], outputs: ["loadMoreClick"] }, { kind: "component", type: i4.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i4.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i4.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i4.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i4.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.DataColumnsComponent, selector: "lib-data-columns", inputs: ["columns", "enableDragAndDrop", "maxVisibleItems"], outputs: ["columnsUpdated"] }, { kind: "component", type: i4.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns"], outputs: ["exportDataEvent"] }, { kind: "component", type: i4.DataSortComponent, selector: "lib-data-sort", inputs: ["columns", "data", "enableDragAndDrop"], outputs: ["sortApplied", "resetFilter"] }, { kind: "component", type: i5.ActorsFormComponent, selector: "actors-form", inputs: ["currentData"], outputs: ["onSave", "switchView"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
113
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActorsComponent, selector: "lib-actors", usesInheritance: true, ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\"\n >\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input\n name=\"Name\"\n [formControl]=\"control\"\n placeHolder=\"Enter Name\"\n />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"tags\">\n <ng-template #cellEdit let-control=\"control\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select tags\"\n [options]=\"tags()\"\n optionLabel=\"Name\"\n id=\"tags\"\n [formControl]=\"control\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >E-Mail:</label\n >\n <span id=\"phone\" class=\"text-sm\">{{\n item.data.Identifier\n }}</span>\n </p>\n </div>\n\n <!-- <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n item.data.WorkflowCode\n }}</span>\n <a\n [routerLink]=\"[\n '/workflow/task-history',\n item.data.Code\n ]\"\n routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs\"\n >view history</a\n >\n </div> -->\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Name</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <actors-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n ></actors-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n dataFetchUrl=\"...\"\n (exportDataEvent)=\"handleExport($event)\"\n (exportDataRangeEvent)=\"handleFetchedExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i4.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i4.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "onItemClick", "onCardChildClick"], outputs: ["loadMoreClick"] }, { kind: "component", type: i4.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i4.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i4.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i4.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i4.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.DataColumnsComponent, selector: "lib-data-columns", inputs: ["columns", "enableDragAndDrop", "maxVisibleItems"], outputs: ["columnsUpdated"] }, { kind: "component", type: i4.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns"], outputs: ["exportDataEvent"] }, { kind: "component", type: i4.DataSortComponent, selector: "lib-data-sort", inputs: ["columns", "data", "enableDragAndDrop"], outputs: ["sortApplied", "resetFilter"] }, { kind: "component", type: i5.ActorsFormComponent, selector: "actors-form", inputs: ["currentData"], outputs: ["onSave", "switchView"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
107
114
  }
108
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActorsComponent, decorators: [{
109
116
  type: Component,
110
- args: [{ selector: 'lib-actors', template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\"\n >\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input\n name=\"Name\"\n [formControl]=\"control\"\n placeHolder=\"Enter Name\"\n />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"tags\">\n <ng-template #cellEdit let-control=\"control\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select tags\"\n [options]=\"tags()\"\n optionLabel=\"Name\"\n id=\"tags\"\n [formControl]=\"control\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >E-Mail:</label\n >\n <span id=\"phone\" class=\"text-sm\">{{\n item.data.Identifier\n }}</span>\n </p>\n </div>\n\n <!-- <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n item.data.WorkflowCode\n }}</span>\n <a\n [routerLink]=\"[\n '/workflow/task-history',\n item.data.Code\n ]\"\n routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs\"\n >view history</a\n >\n </div> -->\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Name</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <actors-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n ></actors-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (exportDataEvent)=\"handleExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n" }]
117
+ args: [{ selector: 'lib-actors', template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\"\n >\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input\n name=\"Name\"\n [formControl]=\"control\"\n placeHolder=\"Enter Name\"\n />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"tags\">\n <ng-template #cellEdit let-control=\"control\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select tags\"\n [options]=\"tags()\"\n optionLabel=\"Name\"\n id=\"tags\"\n [formControl]=\"control\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >E-Mail:</label\n >\n <span id=\"phone\" class=\"text-sm\">{{\n item.data.Identifier\n }}</span>\n </p>\n </div>\n\n <!-- <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n item.data.WorkflowCode\n }}</span>\n <a\n [routerLink]=\"[\n '/workflow/task-history',\n item.data.Code\n ]\"\n routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs\"\n >view history</a\n >\n </div> -->\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Name</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <actors-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n ></actors-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n dataFetchUrl=\"...\"\n (exportDataEvent)=\"handleExport($event)\"\n (exportDataRangeEvent)=\"handleFetchedExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n" }]
111
118
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ActorFacade }, { type: i2.FormBuilder }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvYWN0b3JzL2FjdG9ycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2FjdG9ycy9hY3RvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzNDLE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPdEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEscUJBQTRCO0lBdUJyRDtJQUNBO0lBQ0E7SUF4QlYsTUFBTSxHQUEwQjtRQUM5QixVQUFVLEVBQUUsRUFBRSxFQUFFLHdCQUF3QjtRQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLG1DQUFtQztRQUNyRCxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO1lBQzFCLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFO2dCQUNKLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDcEMsNENBQTRDO2FBQzdDO1lBQ0QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBQ0YsWUFBWSxFQUFFLENBQUMsS0FBSyxF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RCxZQUFZLENBQUMsS0FBcUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBdEdVLGVBQWU7NEZBQWYsZUFBZSx5RUN0QjVCLDhpV0F5VUE7OzRGRG5UYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZURhdGFWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvYmFzZS1kYXRhLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdG9yIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FjdG9yJztcbmltcG9ydCB7IERhdGFWaWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9EYXRhVmlld0NvbmZpZyc7XG5pbXBvcnQgeyBjb2x1bW5zIH0gZnJvbSAnLi9hY3RvcnMuY29sdW1ucyc7XG5pbXBvcnQgeyBBY3Rvck1vZGVsIH0gZnJvbSAnLi9hY3RvcnMubW9kZWwnO1xuaW1wb3J0IHsgQ2FyZERhdGEsIEZvcm1Hcm91cENvbmZpZyB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBBY3RvckZhY2FkZSB9IGZyb20gJy4vYWN0b3JzLmZhY2FkZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFjdG9ycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3RvcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYWN0b3JzLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RvcnNDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0YVZpZXdDb21wb25lbnQ8QWN0b3I+IHtcbiAgY29uZmlnOiBEYXRhVmlld0NvbmZpZzxBY3Rvcj4gPSB7XG4gICAgZGF0YVNvdXJjZTogW10sIC8vIFBvcHVsYXRlIGZyb20gc2VydmljZVxuICAgIGNvbHVtbnM6IGNvbHVtbnMsIC8vIFlvdXIgZXhpc3RpbmcgY29sdW1uIGRlZmluaXRpb25zXG4gICAgY2FyZERhdGFNYXBwZXI6IChhY3RvcikgPT4gKHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHRpdGxlOiBhY3Rvci5UYWdzWzBdPy5OYW1lLFxuICAgICAgZGF0YTogYWN0b3IsXG4gICAgICBib2R5OiBbXG4gICAgICAgIHsgdGl0bGU6ICdOYW1lJywgdmFsdWU6IGFjdG9yLk5hbWUgfSxcbiAgICAgICAgLy8geyB0aXRsZTogJ1N0YXR1cycsIHZhbHVlOiBhY3Rvci5TdGF0dXMgfSxcbiAgICAgIF0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSksXG4gICAgb25EZXRhaWxWaWV3OiAoYWN0b3IpID0+IHtcbiAgICAgIC8vIEN1c3RvbSBkZXRhaWwgdmlldyBsb2dpY1xuICAgIH0sXG4gIH07XG5cbiAgdGFnczogV3JpdGFibGVTaWduYWw8VGFnW10+ID0gc2lnbmFsKFtdKTtcbiAgZm9ybUdyb3VwQ29uZmlnOiBXcml0YWJsZVNpZ25hbDxGb3JtR3JvdXBDb25maWc8YW55Pj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmFjYWRlOiBBY3RvckZhY2FkZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5mb3JtR3JvdXBDb25maWcgPSBzaWduYWwoe1xuICAgICAgY29udHJvbHM6IHtcbiAgICAgICAgTmFtZTogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBJZGVudGlmaWVyOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIFRhZ3M6IHRoaXMuZmIuY29udHJvbChbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIH0sXG4gICAgICAvLyB2YWxpZGF0b3JPck9wdHM6IG51bGwsXG4gICAgICAvLyBhc3luY1ZhbGlkYXRvcjogbnVsbCxcbiAgICB9KTtcblxuICAgIHRoaXMuZmFjYWRlLmdldFJlcXVlc3RzJCgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5kYXRhLnNldChkYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmFjYWRlLmdldFRhZ3MkKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRhZ3Muc2V0KGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZEluaXRpYWxEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZhY2FkZS5sb2FkUmVxdWVzdHMoKTtcbiAgICAgIHRoaXMuZmFjYWRlLmxvYWRUYWdzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvclxuICAgIH1cbiAgfVxuXG4gIC8vIGdlbmVyYXRlRm9ybUdyb3VwKGRhdGE/OiBQYXJ0aWFsPEFjdG9yPikge1xuICAvLyAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAvLyAgIGNvbnN0IGZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgLy8gICAgIE5hbWU6IG5ldyBGb3JtQ29udHJvbChkYXRhPy5OYW1lID8/ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAvLyAgICAgSWRlbnRpZmllcjogbmV3IEZvcm1Db250cm9sKGRhdGE/LklkZW50aWZpZXIgPz8gJycsIFtcbiAgLy8gICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgLy8gICAgIF0pLFxuICAvLyAgICAgVGFnczogbmV3IEZvcm1Db250cm9sKGRhdGE/LlRhZ3MgPz8gW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIC8vICAgfSk7XG4gIC8vICAgLy8gY29uc29sZS5sb2coZm9ybS52YWx1ZSk7XG4gIC8vICAgcmV0dXJuIGZvcm07XG4gIC8vIH1cblxuICAvLyBnZXRGb3JtQ29udHJvbChpbmRleDogbnVtYmVyLCBmaWVsZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgY29udHJvbCA9IHRoaXMuZWRpdEZvcm1zLmdldChpbmRleCk/LmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w8YW55PjtcbiAgLy8gICBjb25zb2xlLmxvZyhjb250cm9sKTtcbiAgLy8gICByZXR1cm4gY29udHJvbDtcbiAgLy8gfVxuXG4gIC8vIGlzUm93VmFsaWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAvLyAgIHJldHVybiB0aGlzLmVkaXRGb3Jtcy5nZXQoaW5kZXgpPy52YWxpZCB8fCBmYWxzZTtcbiAgLy8gfVxuXG4gIHByb3RlY3RlZCBnZXRDYXJkRGF0YUJ5SWRlbnRpZmllcihjb2RlOiBzdHJpbmcpOiBDYXJkRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGEoKT8uZmluZCgoeyBkYXRhIH0pID0+IGRhdGEuZGF0YS5Db2RlID09PSBjb2RlKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkTW9yZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNhdmUoZGF0YTogUGFydGlhbDxBY3Rvcj4pIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLi4udGhpcy5jdXJyZW50RGF0YT8uZGF0YSxcbiAgICAgIC4uLmRhdGEsXG4gICAgfSBhcyBBY3RvcjtcbiAgICBhd2FpdCB0aGlzLmZhY2FkZS5hZGRSZXF1ZXN0KHBheWxvYWQpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmZhY2FkZS5zZWFyY2goZXZlbnQudmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3BhY2UteS04XCI+XG4gIDx2ZXJiZW4tZGF0YS12aWV3XG4gICAgI3ZkdlxuICAgIFt2aWV3U3RhdGVdPVwie1xuICAgICAgaXNTZWFyY2g6IHRydWUsXG4gICAgICBpc0NvbHVtbjogdHJ1ZSxcbiAgICAgIGlzRmlsdGVyOiB0cnVlLFxuICAgICAgaXNTb3J0OiB0cnVlLFxuICAgICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgICBpc1NlbGVjdDogdHJ1ZSxcbiAgICAgIGlzQ3JlYXRlOiBmYWxzZSxcbiAgICAgIGlzVG9nZ2xlOiB0cnVlLFxuICAgIH1cIlxuICAgIFtidXR0b25DbGFzc109XCInbXktY3VzdG9tLWJ1dHRvbi1jbGFzcydcIlxuICAgIFtpY29uQ2xhc3NdPVwiJ215LWljb24tY2xhc3MnXCJcbiAgICBbYWN0aXZlSWNvbkNsYXNzXT1cIidteS1hY3RpdmUtaWNvbi1jbGFzcydcIlxuICAgIFtzZWxlY3RlZENvbHVtbkNvdW50XT1cInNlbGVjdGVkQ29sdW1uQ291bnRcIlxuICAgIFtzZWxlY3RlZFNvcnRDb3VudF09XCJzZWxlY3RlZFNvcnRDb3VudFwiXG4gICAgW3NlbGVjdGVkRmlsdGVyVGFibGVDb3VudF09XCJzZWxlY3RlZEZpbHRlclRhYmxlQ291bnRcIlxuICAgICh2aWV3Q2hhbmdlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAob25TZWFyY2hDaGFuZ2UpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxuICA+XG4gICAgPGRpdiB0YWJsZS1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLXRhYmxlXG4gICAgICAgIFtkYXRhXT1cImRhdGEoKVwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcbiAgICAgICAgW3N0eWxlQ29uZmlnXT1cInN0eWxlc1wiXG4gICAgICAgIFtmb3JtR3JvdXBDb25maWddPVwiZm9ybUdyb3VwQ29uZmlnKClcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAocm93U2F2ZSk9XCJvblNhdmUoJGV2ZW50LmRhdGEpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJkYXRlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cIm5hbWVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1jb250cm9sPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIk5hbWVcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlSG9sZGVyPVwiRW50ZXIgTmFtZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwidGFnc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGFnc1wiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cInRhZ3MoKVwiXG4gICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwiTmFtZVwiXG4gICAgICAgICAgICAgIGlkPVwidGFnc1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgIGxldC12YWx1ZVxuICAgICAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTZcIj5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdygpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNjZWxsRWRpdFxuICAgICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93XG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNlwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGljb249XCJ0aWNrXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9saWItZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNhcmQtY29udGVudD5cbiAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXdcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTJweFwiXG4gICAgICAgIChsb2FkTW9yZUNsaWNrKT1cImxvYWRNb3JlKClcIlxuICAgICAgICAjdmRjdlxuICAgICAgICBkYXRhSWQ9XCJJZFwiXG4gICAgICAgIGJvcmRlcj1cIjVweFwiXG4gICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGEoKVwiXG4gICAgICAgIHJiZ0NvbG9yPVwiI2Y1ZjZmOVwiXG4gICAgICAgIG1nPVwiMjBweFwiXG4gICAgICA+XG4gICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldyBjbGFzcz1cInNwYWNlLXktN1wiPlxuICAgICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGFcbiAgICAgICAgICAgICN2bGNkXG4gICAgICAgICAgICBbcGFyZW50XT1cInZkY3ZcIlxuICAgICAgICAgICAgZGF0YUlkPVwiSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy1zZWNvbmRhcnktMTAwIHJvdW5kZWQteGwgYm9yZGVyLXByaW1hcnkgYm9yZGVyLVsxcHhdXCJcbiAgICAgICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGEoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjYXJkIGxldC1pdGVtPlxuICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjdXJyZW50RGF0YSA9IHZkY3Yub25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciB3LWZ1bGwgYmctc2Vjb25kYXJ5IHJvdW5kZWQteGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTMgcm91bmRlZC14bCByb3VuZGVkLXRyLW5vbmUgcm91bmRlZC1ici1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA/ICdiZy1wcmltYXJ5JyA6ICdiZy1zZWNvbmRhcnktMjAwJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHktMiBweC00IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtWyM0MDQwNDBdXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaG9uZVwiIGNsYXNzPVwidGV4dC1bMTBweF0gZm9udC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkUtTWFpbDo8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJwaG9uZVwiIGNsYXNzPVwidGV4dC1zbVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhLklkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJncmlkIGdhcC15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZvcj1cInJvbGVcIiBjbGFzcz1cImZvbnQtbGlnaHRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuV29ya2Zsb3dDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dvcmtmbG93L3Rhc2staGlzdG9yeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVuZGVybGluZSB0ZXh0LVsjMDAwMEZGXSB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPnZpZXcgaGlzdG9yeTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJyb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtWzEwcHhdIGZvbnQtbGlnaHQgdGV4dC1bIzQwNDA0MF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5OYW1lPC9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicm9sZVwiIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhPy5OYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LXNtXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNpSXRlbSBvZiBpdGVtLmJvZHk7IHRyYWNrIGNpSXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGZvbnQtbGlnaHQgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgY2lJdGVtLnRpdGxlIH19Ojwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmxhY2tcIj57eyBjaUl0ZW0udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9IC0tPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YT5cbiAgICAgICAgPC92ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldz5cblxuICAgICAgICA8dmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGFyZW50PlxuICAgICAgICAgICAgPCEtLSA8bGliLXVzZXItcmVxdWVzdC1mb3JtXG4gICAgICAgICAgICAgIFtjdXJyZW50RGF0YV09XCJjdXJyZW50RGF0YVwiXG4gICAgICAgICAgICAgIChzd2l0Y2hWaWV3KT1cInZkdi50b2dnbGVWaWV3KClcIlxuICAgICAgICAgICAgICAob25BcHByb3ZhbCk9XCJvbkFwcHJvdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9saWItdXNlci1yZXF1ZXN0LWZvcm0+IC0tPlxuICAgICAgICAgICAgPGFjdG9ycy1mb3JtXG4gICAgICAgICAgICAgIFtjdXJyZW50RGF0YV09XCJjdXJyZW50RGF0YVwiXG4gICAgICAgICAgICAgIChzd2l0Y2hWaWV3KT1cInZkdi50b2dnbGVWaWV3KClcIlxuICAgICAgICAgICAgICAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2FjdG9ycy1mb3JtPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZmxleCBnYXAtMiBpdGVtcy1jZW50ZXInOiB0cnVlLFxuICAgICAgICAgICAgICAnanVzdGlmeS1lbmQnOiB0cnVlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIiF2ZGN2Lmhhc0N1cnJlbnRJdGVtKClcIlxuICAgICAgICAgICAgICBbZm9udFdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICBbYmdDb2xvcl09XCInIzhFOEQ4NydcIlxuICAgICAgICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCJcbiAgICAgICAgICAgICAgW3RleHRDb2xvcl09XCInI2ZmZidcIlxuICAgICAgICAgICAgICBbcGRdPVwiJzkuNzlweCAzNy4yOHB4J1wiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIidEZWxldGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdmVyYmVuYS1idXR0b24+IC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXgge3tcbiAgICAgICAgICAgICAgICB2ZGN2Lmhhc0N1cnJlbnRJdGVtKCkgPyAnZmxleC0xJyA6ICcnXG4gICAgICAgICAgICAgIH19IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdG9yLXRleHRcIlxuICAgICAgICAgICAgICAgID57eyBjYXJkRGF0YSgpLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZE1vcmUoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsb2FkLW1vcmUgdmlldy1saW5rcyB0ZXh0LVsjMzQ3OUU5XSB1bmRlcmxpbmVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9hZCBtb3JlXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmVyYmVuLWNhcmQtZGF0YS12aWV3LWZvb3Rlcj5cbiAgICAgIDwvdmVyYmVuLWNhcmQtZGF0YS12aWV3PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY29sdW1uLWNvbnRlbnQ+XG4gICAgICA8bGliLWRhdGEtY29sdW1uc1xuICAgICAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXG4gICAgICAgIChjb2x1bW5zVXBkYXRlZCk9XCJvbkNvbHVtbnNVcGRhdGVkKCRldmVudClcIlxuICAgICAgPjwvbGliLWRhdGEtY29sdW1ucz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZpbHRlci1jb250ZW50PlxuICAgICAgPHZlcmJlbi10YWJsZS1maWx0ZXJcbiAgICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCJcbiAgICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgd2lkdGg9XCI0MjBweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiXG4gICAgICAgIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgW2ZpbHRlck9wdGlvbnNdPVwiZmlsdGVyQXJyYXlcIlxuICAgICAgICBbbWF4RmlsdGVyTGVuZ3RoXT1cIjNcIlxuICAgICAgPjwvdmVyYmVuLXRhYmxlLWZpbHRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHNvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS1zb3J0XG4gICAgICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcbiAgICAgICAgW2RhdGFdPVwiZGF0YSgpXCJcbiAgICAgICAgKHNvcnRBcHBsaWVkKT1cIm9uU29ydFVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICA+PC9saWItZGF0YS1zb3J0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZXhwb3J0LWNvbnRlbnQ+XG4gICAgICA8bGliLWRhdGEteHBvcnRcbiAgICAgICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxuICAgICAgICBbZGF0YV09XCJkYXRhKClcIlxuICAgICAgICAoZXhwb3J0RGF0YUV2ZW50KT1cImhhbmRsZUV4cG9ydCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvbGliLWRhdGEteHBvcnQ+XG4gICAgPC9kaXY+XG4gIDwvdmVyYmVuLWRhdGEtdmlldz5cblxuICA8ZGl2ICpuZ0lmPVwidmR2LmlzVGFibGVWaWV3XCIgY2xhc3M9XCJmbGV4IGdhcC0yIGp1c3RpZnktZW5kXCI+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwibWVzc2FnZS1sb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICAgIFtmb250V2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgIFtiZ0NvbG9yXT1cIicjOEU4RDg3J1wiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIicjZmZmJ1wiXG4gICAgICAgIFtwZF09XCInOS43OXB4IDM3LjI4cHgnXCJcbiAgICAgICAgW3RleHRdPVwiJ0RlbGV0ZSdcIlxuICAgICAgPlxuICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC01XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci10ZXh0XCI+e3sgY2FyZERhdGEoKS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgY2xhc3M9XCJsb2FkLW1vcmUgdmlldy1saW5rcyB0ZXh0LVsjMzQ3OUU5XSB1bmRlcmxpbmVcIlxuICAgICAgPlxuICAgICAgICBMb2FkIG1vcmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvYWN0b3JzL2FjdG9ycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2FjdG9ycy9hY3RvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzNDLE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPdEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEscUJBQTRCO0lBdUJyRDtJQUNBO0lBQ0E7SUF4QlYsTUFBTSxHQUEwQjtRQUM5QixVQUFVLEVBQUUsRUFBRSxFQUFFLHdCQUF3QjtRQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLG1DQUFtQztRQUNyRCxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO1lBQzFCLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFO2dCQUNKLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDcEMsNENBQTRDO2FBQzdDO1lBQ0QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBQ0YsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEIsMkJBQTJCO1FBQzdCLENBQUM7S0FDRixDQUFDO0lBRUYsSUFBSSxHQUEwQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsZUFBZSxDQUF1QztJQUV0RCxZQUNVLEdBQXNCLEVBQ3RCLE1BQW1CLEVBQ25CLEVBQWU7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFKQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQWE7UUFJdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7WUFDNUIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RELElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakQ7WUFDRCx5QkFBeUI7WUFDekIsd0JBQXdCO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsZUFBZTtRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELDZDQUE2QztJQUM3Qyx1QkFBdUI7SUFDdkIsaUNBQWlDO0lBQ2pDLHNFQUFzRTtJQUN0RSw0REFBNEQ7SUFDNUQsNkJBQTZCO0lBQzdCLFVBQVU7SUFDVixzRUFBc0U7SUFDdEUsUUFBUTtJQUNSLGdDQUFnQztJQUNoQyxpQkFBaUI7SUFDakIsSUFBSTtJQUVKLGlEQUFpRDtJQUNqRCwrRUFBK0U7SUFDL0UsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQixJQUFJO0lBRUosdUNBQXVDO0lBQ3ZDLHNEQUFzRDtJQUN0RCxJQUFJO0lBRU0sdUJBQXVCLENBQUMsSUFBWTtRQUM1QyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFlO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFvQjtRQUMvQixNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO1lBQ3pCLEdBQUcsSUFBSTtTQUNDLENBQUM7UUFDWCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBcUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQU87UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzlDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTlHVSxlQUFlOzRGQUFmLGVBQWUseUVDdEI1Qiw0b1dBMlVBOzs0RkRyVGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VEYXRhVmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL2Jhc2UtZGF0YS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3RvciB9IGZyb20gJy4uLy4uL21vZGVscy9BY3Rvcic7XG5pbXBvcnQgeyBEYXRhVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvRGF0YVZpZXdDb25maWcnO1xuaW1wb3J0IHsgY29sdW1ucyB9IGZyb20gJy4vYWN0b3JzLmNvbHVtbnMnO1xuaW1wb3J0IHsgQWN0b3JNb2RlbCB9IGZyb20gJy4vYWN0b3JzLm1vZGVsJztcbmltcG9ydCB7IENhcmREYXRhLCBGb3JtR3JvdXBDb25maWcgfSBmcm9tICd2ZXJiZW4tbmctdWknO1xuaW1wb3J0IHsgQWN0b3JGYWNhZGUgfSBmcm9tICcuL2FjdG9ycy5mYWNhZGUnO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1RhZyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hY3RvcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0b3JzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FjdG9ycy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQWN0b3JzQ29tcG9uZW50IGV4dGVuZHMgQmFzZURhdGFWaWV3Q29tcG9uZW50PEFjdG9yPiB7XG4gIGNvbmZpZzogRGF0YVZpZXdDb25maWc8QWN0b3I+ID0ge1xuICAgIGRhdGFTb3VyY2U6IFtdLCAvLyBQb3B1bGF0ZSBmcm9tIHNlcnZpY2VcbiAgICBjb2x1bW5zOiBjb2x1bW5zLCAvLyBZb3VyIGV4aXN0aW5nIGNvbHVtbiBkZWZpbml0aW9uc1xuICAgIGNhcmREYXRhTWFwcGVyOiAoYWN0b3IpID0+ICh7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICB0aXRsZTogYWN0b3IuVGFnc1swXT8uTmFtZSxcbiAgICAgIGRhdGE6IGFjdG9yLFxuICAgICAgYm9keTogW1xuICAgICAgICB7IHRpdGxlOiAnTmFtZScsIHZhbHVlOiBhY3Rvci5OYW1lIH0sXG4gICAgICAgIC8vIHsgdGl0bGU6ICdTdGF0dXMnLCB2YWx1ZTogYWN0b3IuU3RhdHVzIH0sXG4gICAgICBdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH0pLFxuICAgIG9uRGV0YWlsVmlldzogKGFjdG9yKSA9PiB7XG4gICAgICAvLyBDdXN0b20gZGV0YWlsIHZpZXcgbG9naWNcbiAgICB9LFxuICB9O1xuXG4gIHRhZ3M6IFdyaXRhYmxlU2lnbmFsPFRhZ1tdPiA9IHNpZ25hbChbXSk7XG4gIGZvcm1Hcm91cENvbmZpZzogV3JpdGFibGVTaWduYWw8Rm9ybUdyb3VwQ29uZmlnPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZhY2FkZTogQWN0b3JGYWNhZGUsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZm9ybUdyb3VwQ29uZmlnID0gc2lnbmFsKHtcbiAgICAgIGNvbnRyb2xzOiB7XG4gICAgICAgIE5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgSWRlbnRpZmllcjogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBUYWdzOiB0aGlzLmZiLmNvbnRyb2woW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB9LFxuICAgICAgLy8gdmFsaWRhdG9yT3JPcHRzOiBudWxsLFxuICAgICAgLy8gYXN5bmNWYWxpZGF0b3I6IG51bGwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZhY2FkZS5nZXRSZXF1ZXN0cyQoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZhY2FkZS5nZXRUYWdzJCgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy50YWdzLnNldChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGxvYWRJbml0aWFsRGF0YSgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mYWNhZGUubG9hZFJlcXVlc3RzKCk7XG4gICAgICB0aGlzLmZhY2FkZS5sb2FkVGFncygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JcbiAgICB9XG4gIH1cblxuICAvLyBnZW5lcmF0ZUZvcm1Hcm91cChkYXRhPzogUGFydGlhbDxBY3Rvcj4pIHtcbiAgLy8gICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgLy8gICBjb25zdCBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gIC8vICAgICBOYW1lOiBuZXcgRm9ybUNvbnRyb2woZGF0YT8uTmFtZSA/PyAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgLy8gICAgIElkZW50aWZpZXI6IG5ldyBGb3JtQ29udHJvbChkYXRhPy5JZGVudGlmaWVyID8/ICcnLCBbXG4gIC8vICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gIC8vICAgICBdKSxcbiAgLy8gICAgIFRhZ3M6IG5ldyBGb3JtQ29udHJvbChkYXRhPy5UYWdzID8/IFtdLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAvLyAgIH0pO1xuICAvLyAgIC8vIGNvbnNvbGUubG9nKGZvcm0udmFsdWUpO1xuICAvLyAgIHJldHVybiBmb3JtO1xuICAvLyB9XG5cbiAgLy8gZ2V0Rm9ybUNvbnRyb2woaW5kZXg6IG51bWJlciwgZmllbGQ6IHN0cmluZykge1xuICAvLyAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmVkaXRGb3Jtcy5nZXQoaW5kZXgpPy5nZXQoZmllbGQpIGFzIEZvcm1Db250cm9sPGFueT47XG4gIC8vICAgY29uc29sZS5sb2coY29udHJvbCk7XG4gIC8vICAgcmV0dXJuIGNvbnRyb2w7XG4gIC8vIH1cblxuICAvLyBpc1Jvd1ZhbGlkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgLy8gICByZXR1cm4gdGhpcy5lZGl0Rm9ybXMuZ2V0KGluZGV4KT8udmFsaWQgfHwgZmFsc2U7XG4gIC8vIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2FyZERhdGFCeUlkZW50aWZpZXIoY29kZTogc3RyaW5nKTogQ2FyZERhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhKCk/LmZpbmQoKHsgZGF0YSB9KSA9PiBkYXRhLmRhdGEuQ29kZSA9PT0gY29kZSk7XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZSgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUubG9hZE1vcmUoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25TYXZlKGRhdGE6IFBhcnRpYWw8QWN0b3I+KSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIC4uLnRoaXMuY3VycmVudERhdGE/LmRhdGEsXG4gICAgICAuLi5kYXRhLFxuICAgIH0gYXMgQWN0b3I7XG4gICAgYXdhaXQgdGhpcy5mYWNhZGUuYWRkUmVxdWVzdChwYXlsb2FkKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5mYWNhZGUuc2VhcmNoKGV2ZW50LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUZldGNoZWRFeHBvcnQoeyBza2lwLCBsaW1pdCB9OiBhbnkpIHtcbiAgICB0aGlzLmZhY2FkZS5sb2FkRGF0YShza2lwLCBsaW1pdCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzcGFjZS15LThcIj5cbiAgPHZlcmJlbi1kYXRhLXZpZXdcbiAgICAjdmR2XG4gICAgW3ZpZXdTdGF0ZV09XCJ7XG4gICAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICAgIGlzQ29sdW1uOiB0cnVlLFxuICAgICAgaXNGaWx0ZXI6IHRydWUsXG4gICAgICBpc1NvcnQ6IHRydWUsXG4gICAgICBpc0V4cG9ydDogdHJ1ZSxcbiAgICAgIGlzU2VsZWN0OiB0cnVlLFxuICAgICAgaXNDcmVhdGU6IGZhbHNlLFxuICAgICAgaXNUb2dnbGU6IHRydWUsXG4gICAgfVwiXG4gICAgW2J1dHRvbkNsYXNzXT1cIidteS1jdXN0b20tYnV0dG9uLWNsYXNzJ1wiXG4gICAgW2ljb25DbGFzc109XCInbXktaWNvbi1jbGFzcydcIlxuICAgIFthY3RpdmVJY29uQ2xhc3NdPVwiJ215LWFjdGl2ZS1pY29uLWNsYXNzJ1wiXG4gICAgW3NlbGVjdGVkQ29sdW1uQ291bnRdPVwic2VsZWN0ZWRDb2x1bW5Db3VudFwiXG4gICAgW3NlbGVjdGVkU29ydENvdW50XT1cInNlbGVjdGVkU29ydENvdW50XCJcbiAgICBbc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XT1cInNlbGVjdGVkRmlsdGVyVGFibGVDb3VudFwiXG4gICAgKHZpZXdDaGFuZ2UpPVwib25WaWV3Q2hhbmdlKCRldmVudClcIlxuICAgIChzdGF0ZUNoYW5nZSk9XCJvblN0YXRlQ2hhbmdlKCRldmVudClcIlxuICAgIChvblNlYXJjaENoYW5nZSk9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2IHRhYmxlLWNvbnRlbnQ+XG4gICAgICA8bGliLWRhdGEtdGFibGVcbiAgICAgICAgW2RhdGFdPVwiZGF0YSgpXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxuICAgICAgICBbc3R5bGVDb25maWddPVwic3R5bGVzXCJcbiAgICAgICAgW2Zvcm1Hcm91cENvbmZpZ109XCJmb3JtR3JvdXBDb25maWcoKVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChyb3dTYXZlKT1cIm9uU2F2ZSgkZXZlbnQuZGF0YSlcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImRhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT5cbiAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwibmFtZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiTmFtZVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgcGxhY2VIb2xkZXI9XCJFbnRlciBOYW1lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJ0YWdzXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtY29udHJvbD1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0YWdzXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwidGFncygpXCJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgICAgICAgaWQ9XCJ0YWdzXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjY2VsbFxuICAgICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNlwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxFZGl0XG4gICAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICAgIGxldC1kZWxldGVSb3dcbiAgICAgICAgICAgIGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2FyZC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlld1xuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMnB4XCJcbiAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmUoKVwiXG4gICAgICAgICN2ZGN2XG4gICAgICAgIGRhdGFJZD1cIklkXCJcbiAgICAgICAgYm9yZGVyPVwiNXB4XCJcbiAgICAgICAgW2NhcmREYXRhTGlzdF09XCJjYXJkRGF0YSgpXCJcbiAgICAgICAgcmJnQ29sb3I9XCIjZjVmNmY5XCJcbiAgICAgICAgbWc9XCIyMHB4XCJcbiAgICAgID5cbiAgICAgICAgPHZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3IGNsYXNzPVwic3BhY2UteS03XCI+XG4gICAgICAgICAgPHZlcmJlbi1sZWZ0LWNhcmQtZGF0YVxuICAgICAgICAgICAgI3ZsY2RcbiAgICAgICAgICAgIFtwYXJlbnRdPVwidmRjdlwiXG4gICAgICAgICAgICBkYXRhSWQ9XCJJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImJnLXNlY29uZGFyeS0xMDAgcm91bmRlZC14bCBib3JkZXItcHJpbWFyeSBib3JkZXItWzFweF1cIlxuICAgICAgICAgICAgW2NhcmREYXRhTGlzdF09XCJjYXJkRGF0YSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhcmQgbGV0LWl0ZW0+XG4gICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImN1cnJlbnREYXRhID0gdmRjdi5vbkl0ZW1DbGljayhpdGVtKVwiIGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW50RGF0YSA9IHZkY3Yub25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGN1cnNvci1wb2ludGVyIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweS0yIHB4LTQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1bIzQwNDA0MF1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBob25lXCIgY2xhc3M9XCJ0ZXh0LVsxMHB4XSBmb250LWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+RS1NYWlsOjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInBob25lXCIgY2xhc3M9XCJ0ZXh0LXNtXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuSWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZm9yPVwicm9sZVwiIGNsYXNzPVwiZm9udC1saWdodFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGF0YS5Xb3JrZmxvd0NvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd29ya2Zsb3cvdGFzay1oaXN0b3J5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidW5kZXJsaW5lIHRleHQtWyMwMDAwRkZdIHRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+dmlldyBoaXN0b3J5PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1bMTBweF0gZm9udC1saWdodCB0ZXh0LVsjNDA0MDQwXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPk5hbWU8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJyb2xlXCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGE/Lk5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbm9ybWFsIHRleHQtc21cIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY2lJdGVtIG9mIGl0ZW0uYm9keTsgdHJhY2sgY2lJdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgZm9udC1saWdodCB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBjaUl0ZW0udGl0bGUgfX06PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiPnt7IGNpSXRlbS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhPlxuICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwYXJlbnQ+XG4gICAgICAgICAgICA8IS0tIDxsaWItdXNlci1yZXF1ZXN0LWZvcm1cbiAgICAgICAgICAgICAgW2N1cnJlbnREYXRhXT1cImN1cnJlbnREYXRhXCJcbiAgICAgICAgICAgICAgKHN3aXRjaFZpZXcpPVwidmR2LnRvZ2dsZVZpZXcoKVwiXG4gICAgICAgICAgICAgIChvbkFwcHJvdmFsKT1cIm9uQXBwcm92ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2xpYi11c2VyLXJlcXVlc3QtZm9ybT4gLS0+XG4gICAgICAgICAgICA8YWN0b3JzLWZvcm1cbiAgICAgICAgICAgICAgW2N1cnJlbnREYXRhXT1cImN1cnJlbnREYXRhXCJcbiAgICAgICAgICAgICAgKHN3aXRjaFZpZXcpPVwidmR2LnRvZ2dsZVZpZXcoKVwiXG4gICAgICAgICAgICAgIChvblNhdmUpPVwib25TYXZlKCRldmVudClcIlxuICAgICAgICAgICAgPjwvYWN0b3JzLWZvcm0+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC92ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG5cbiAgICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlcic6IHRydWUsXG4gICAgICAgICAgICAgICdqdXN0aWZ5LWVuZCc6IHRydWVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gPHZlcmJlbmEtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXZkY3YuaGFzQ3VycmVudEl0ZW0oKVwiXG4gICAgICAgICAgICAgIFtmb250V2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgIFtiZ0NvbG9yXT1cIicjOEU4RDg3J1wiXG4gICAgICAgICAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIlxuICAgICAgICAgICAgICBbdGV4dENvbG9yXT1cIicjZmZmJ1wiXG4gICAgICAgICAgICAgIFtwZF09XCInOS43OXB4IDM3LjI4cHgnXCJcbiAgICAgICAgICAgICAgW3RleHRdPVwiJ0RlbGV0ZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92ZXJiZW5hLWJ1dHRvbj4gLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCB7e1xuICAgICAgICAgICAgICAgIHZkY3YuaGFzQ3VycmVudEl0ZW0oKSA/ICdmbGV4LTEnIDogJydcbiAgICAgICAgICAgICAgfX0ganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC01XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiXG4gICAgICAgICAgICAgICAgPnt7IGNhcmREYXRhKCkubGVuZ3RoIH19IHJlY29yZHMgbG9hZGVkPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2FkIG1vcmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyPlxuICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjb2x1bW4tY29udGVudD5cbiAgICAgIDxsaWItZGF0YS1jb2x1bW5zXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcbiAgICAgICAgKGNvbHVtbnNVcGRhdGVkKT1cIm9uQ29sdW1uc1VwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICA+PC9saWItZGF0YS1jb2x1bW5zPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZmlsdGVyLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLXRhYmxlLWZpbHRlclxuICAgICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIlxuICAgICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgICB3aWR0aD1cIjQyMHB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgICBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCJcbiAgICAgICAgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiXG4gICAgICA+PC92ZXJiZW4tdGFibGUtZmlsdGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc29ydC1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLXNvcnRcbiAgICAgICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxuICAgICAgICBbZGF0YV09XCJkYXRhKClcIlxuICAgICAgICAoc29ydEFwcGxpZWQpPVwib25Tb3J0VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgID48L2xpYi1kYXRhLXNvcnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS14cG9ydFxuICAgICAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXG4gICAgICAgIFtkYXRhXT1cImRhdGEoKVwiXG4gICAgICAgIGRhdGFGZXRjaFVybD1cIi4uLlwiXG4gICAgICAgIChleHBvcnREYXRhRXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIlxuICAgICAgICAoZXhwb3J0RGF0YVJhbmdlRXZlbnQpPVwiaGFuZGxlRmV0Y2hlZEV4cG9ydCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvbGliLWRhdGEteHBvcnQ+XG4gICAgPC9kaXY+XG4gIDwvdmVyYmVuLWRhdGEtdmlldz5cblxuICA8ZGl2ICpuZ0lmPVwidmR2LmlzVGFibGVWaWV3XCIgY2xhc3M9XCJmbGV4IGdhcC0yIGp1c3RpZnktZW5kXCI+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwibWVzc2FnZS1sb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICAgIFtmb250V2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgIFtiZ0NvbG9yXT1cIicjOEU4RDg3J1wiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIicjZmZmJ1wiXG4gICAgICAgIFtwZF09XCInOS43OXB4IDM3LjI4cHgnXCJcbiAgICAgICAgW3RleHRdPVwiJ0RlbGV0ZSdcIlxuICAgICAgPlxuICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC01XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci10ZXh0XCI+e3sgY2FyZERhdGEoKS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgY2xhc3M9XCJsb2FkLW1vcmUgdmlldy1saW5rcyB0ZXh0LVsjMzQ3OUU5XSB1bmRlcmxpbmVcIlxuICAgICAgPlxuICAgICAgICBMb2FkIG1vcmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -141,41 +141,6 @@ export class ActorFacade {
141
141
  this.state.setUpdating(false);
142
142
  }
143
143
  }
144
- // async deleteRequest(requestId: string): Promise<void> {
145
- // try {
146
- // this.state.setUpdating(true);
147
- // await lastValueFrom(this.service.deleteActors([requestId]));
148
- // this.state.removeRequest(requestId);
149
- // } catch (error) {
150
- // console.error('Failed to delete request:', error);
151
- // throw error;
152
- // } finally {
153
- // this.state.setUpdating(false);
154
- // }
155
- // }
156
- // async loadWorkflows(): Promise<void> {
157
- // try {
158
- // const requests = await this.service.getWorkflows();
159
- // this.state.setWorkflows(requests.Result);
160
- // } catch (error) {
161
- // console.error('Failed to load requests:', error);
162
- // throw error;
163
- // } finally {
164
- // }
165
- // }
166
- // async loadFormsWithParam(param: string): Promise<Form | void> {
167
- // try {
168
- // this.state.setUpdating(true);
169
- // const requests = await this.service.getFormWithParam(param);
170
- // const form = requests.Result[0];
171
- // if (form) return form;
172
- // } catch (error) {
173
- // console.error('Failed to load requests with param:', error);
174
- // throw error;
175
- // } finally {
176
- // this.state.setUpdating(false);
177
- // }
178
- // }
179
144
  // Load more handling
180
145
  async loadMore(queue = false) {
181
146
  try {
@@ -201,6 +166,23 @@ export class ActorFacade {
201
166
  this.state.setUpdating(false);
202
167
  }
203
168
  }
169
+ // Load more handling
170
+ async loadData(skip, limit) {
171
+ try {
172
+ this.state.setUpdating(true);
173
+ const currentParams = this.state.getQueryParamsValue();
174
+ // Load and append data
175
+ const response = await this.service.getData(skip, limit, 'CreatedDate', SortDirection.Desc);
176
+ return response.Result;
177
+ }
178
+ catch (error) {
179
+ console.error('Load more failed:', error);
180
+ throw error;
181
+ }
182
+ finally {
183
+ this.state.setUpdating(false);
184
+ }
185
+ }
204
186
  async loadTags() {
205
187
  try {
206
188
  const response = await this.service.getTags(0, 0, 'CreatedDate', SortDirection.Desc);
@@ -222,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
222
204
  providedIn: 'root',
223
205
  }]
224
206
  }], ctorParameters: () => [{ type: i1.ActorService }, { type: i2.ActorState }, { type: i3.UtilService }] });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3JzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvYWN0b3JzL2FjdG9ycy5mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsT0FBTyxFQUNQLFlBQVksRUFDWixvQkFBb0IsRUFFcEIsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBU2QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU0zRCxNQUFNLE9BQU8sV0FBVztJQUtaO0lBQ0E7SUFDQTtJQU5GLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3RDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXZDLFlBQ1UsT0FBcUIsRUFDckIsS0FBaUIsRUFDakIsV0FBd0I7UUFGeEIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRWhDLElBQUksQ0FBQyxhQUFhO2FBQ2YsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENB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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGxhc3RWYWx1ZUZyb20sXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RvclNlcnZpY2UgfSBmcm9tICcuL2FjdG9ycy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdG9yU3RhdGUgfSBmcm9tICcuL2FjdG9ycy5zdGF0ZSc7XG5pbXBvcnQgeyBBY3RvciB9IGZyb20gJy4uLy4uL21vZGVscy9BY3Rvcic7XG5pbXBvcnQgeyBRdWVyeVBhcmFtcyB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVyeS1wYXJhbXMnO1xuaW1wb3J0IHsgV29ya2Zsb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMvV29ya2Zsb3cnO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uL21vZGVscy9Gb3JtJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9UYWcnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Tb3J0RGlyZWN0aW9uJztcbmltcG9ydCB7IElEYXRhRmlsdGVyIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFjdG9yRmFjYWRlIHtcbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IEFjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXRlOiBBY3RvclN0YXRlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKHNlYXJjaFRlcm0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmlzVXBkYXRpbmckKCkuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShsb2FkaW5nKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzVXBkYXRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzVXBkYXRpbmckKCk7XG4gIH1cblxuICBnZXRSZXF1ZXN0cyQoKTogT2JzZXJ2YWJsZTxBY3RvcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0UmVxdWVzdHMkKCk7XG4gIH1cblxuICBnZXRUYWdzJCgpOiBPYnNlcnZhYmxlPFRhZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0VGFncyQoKTtcbiAgfVxuXG4gIC8vICAgZ2V0Rm9ybXMkKCk6IE9ic2VydmFibGU8Rm9ybVtdPiB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5zdGF0ZS5nZXRGb3JtcyQoKTtcbiAgLy8gICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXMkKCk6IE9ic2VydmFibGU8UXVlcnlQYXJhbXM8QWN0b3I+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0UXVlcnlQYXJhbXMkKCk7XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFNlYXJjaFRlcm0kKCk7XG4gIH1cblxuICAvLyBTZWFyY2ggaGFuZGxpbmdcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHRlcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZWFyY2goc2VhcmNoVGVybTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pO1xuICAgIHRoaXMuc3RhdGUucmVzZXRQYWdpbmF0aW9uKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRSZXF1ZXN0c1dpdGhQYXJhbShzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFJlcXVlc3RzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1NlYXJjaCBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbHRlcihmaWx0ZXJQYXJhbXM6IElEYXRhRmlsdGVyW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnN0YXRlLnJlc2V0UGFnaW5hdGlvbigpO1xuICAgIHRoaXMuc3RhdGUuc2V0RmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XG4gIH1cblxuICBhZGROZXdSZXF1ZXN0KHRhc2s6IEFjdG9yKSB7XG4gICAgdGhpcy5zdGF0ZS5hZGRSZXF1ZXN0KHRhc2spO1xuICB9XG5cbiAgYXN5bmMgbG9hZFJlcXVlc3RzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKHRydWUpO1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5zdGF0ZS5nZXRRdWVyeVBhcmFtc1ZhbHVlKCk7XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldERhdGEoXG4gICAgICAgIHBhcmFtcy5za2lwLFxuICAgICAgICBwYXJhbXMubGltaXQsXG4gICAgICAgIHBhcmFtcy5zb3J0UGFyYW0gfHwgJ2NyZWF0ZWREYXRlJyxcbiAgICAgICAgcGFyYW1zLnNvcnRPcmRlclxuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0ZS5zZXRSZXF1ZXN0cyhyZXF1ZXN0cy5SZXN1bHQpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVRdWVyeVBhcmFtcyh7IHNraXA6IHJlcXVlc3RzLlNraXAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHJlcXVlc3RzOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkUmVxdWVzdHNXaXRoUGFyYW0ocGFyYW06IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKHRydWUpO1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5zdGF0ZS5nZXRRdWVyeVBhcmFtc1ZhbHVlKCk7XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEFjdG9yV2l0aFBhcmFtKFxuICAgICAgICBwYXJhbSxcbiAgICAgICAgcGFyYW1zLnNraXAsXG4gICAgICAgIHBhcmFtcy5saW1pdCxcbiAgICAgICAgcGFyYW1zLnNvcnRQYXJhbSB8fCAnQ3JlYXRlZERhdGUnLFxuICAgICAgICBwYXJhbXMuc29ydE9yZGVyXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlLnNldFJlcXVlc3RzKHJlcXVlc3RzLlJlc3VsdCk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVF1ZXJ5UGFyYW1zKHsgc2tpcDogcmVxdWVzdHMuU2tpcCB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgcmVxdWVzdHMgd2l0aCBwYXJhbTonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUXVlcnlQYXJhbXMocGFyYW1zOiBQYXJ0aWFsPFF1ZXJ5UGFyYW1zPEFjdG9yPj4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZVF1ZXJ5UGFyYW1zKHBhcmFtcyk7XG4gICAgLy8gdGhpcy5sb2FkUmVxdWVzdHMoKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFJlcXVlc3QocmVxdWVzdDogUGFydGlhbDxBY3Rvcj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3QgPSB7IC4uLnJlcXVlc3QsIEFjdG9yRm9ybXM6IFtdIH0gYXMgQWN0b3I7XG4gICAgICAvLyB0aGlzLnN0YXRlLmFkZFJlcXVlc3QobmV3UmVxdWVzdCk7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zYXZlQWN0b3JzKFtuZXdSZXF1ZXN0XSk7XG4gICAgICB0aGlzLnN0YXRlLnJlc2V0UGFnaW5hdGlvbigpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUmVxdWVzdHMoKTsgLy8gUmVsb2FkIHRvIGdldCBzZXJ2ZXItc2lkZSBjaGFuZ2VzXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgcmVxdWVzdDonLCBlcnJvcik7XG4gICAgICB0aGlzLnN0YXRlLnJlbW92ZVJlcXVlc3QocmVxdWVzdC5Db2RlISk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlUmVxdWVzdChyZXF1ZXN0OiBBY3Rvcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKHRydWUpO1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVBY3RvcnMoW3JlcXVlc3RdKTtcbiAgICAgIHRoaXMuc3RhdGUudXBkYXRlUmVxdWVzdChyZXF1ZXN0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVwZGF0ZSByZXF1ZXN0OicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBhc3luYyBkZWxldGVSZXF1ZXN0KHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vICAgdHJ5IHtcbiAgLy8gICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcodHJ1ZSk7XG4gIC8vICAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5kZWxldGVBY3RvcnMoW3JlcXVlc3RJZF0pKTtcbiAgLy8gICAgIHRoaXMuc3RhdGUucmVtb3ZlUmVxdWVzdChyZXF1ZXN0SWQpO1xuICAvLyAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHJlcXVlc3Q6JywgZXJyb3IpO1xuICAvLyAgICAgdGhyb3cgZXJyb3I7XG4gIC8vICAgfSBmaW5hbGx5IHtcbiAgLy8gICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vICAgYXN5bmMgbG9hZFdvcmtmbG93cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gICAgIHRyeSB7XG4gIC8vICAgICAgIGNvbnN0IHJlcXVlc3RzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldFdvcmtmbG93cygpO1xuXG4gIC8vICAgICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dzKHJlcXVlc3RzLlJlc3VsdCk7XG4gIC8vICAgICB9IGNhdGNoIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCByZXF1ZXN0czonLCBlcnJvcik7XG4gIC8vICAgICAgIHRocm93IGVycm9yO1xuICAvLyAgICAgfSBmaW5hbGx5IHtcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICBhc3luYyBsb2FkRm9ybXNXaXRoUGFyYW0ocGFyYW06IHN0cmluZyk6IFByb21pc2U8Rm9ybSB8IHZvaWQ+IHtcbiAgLy8gICAgIHRyeSB7XG4gIC8vICAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcodHJ1ZSk7XG5cbiAgLy8gICAgICAgY29uc3QgcmVxdWVzdHMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Rm9ybVdpdGhQYXJhbShwYXJhbSk7XG5cbiAgLy8gICAgICAgY29uc3QgZm9ybSA9IHJlcXVlc3RzLlJlc3VsdFswXTtcbiAgLy8gICAgICAgaWYgKGZvcm0pIHJldHVybiBmb3JtO1xuICAvLyAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgcmVxdWVzdHMgd2l0aCBwYXJhbTonLCBlcnJvcik7XG4gIC8vICAgICAgIHRocm93IGVycm9yO1xuICAvLyAgICAgfSBmaW5hbGx5IHtcbiAgLy8gICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vIExvYWQgbW9yZSBoYW5kbGluZ1xuICBhc3luYyBsb2FkTW9yZShxdWV1ZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5zdGF0ZS5nZXRRdWVyeVBhcmFtc1ZhbHVlKCk7XG4gICAgICAvLyBjb25zdCBzZWFyY2hUZXJtID0gdGhpcy5zdGF0ZS5nZXRTZWFyY2hUZXJtVmFsdWUoKTtcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBmYWxzZTtcblxuICAgICAgLy8gVXBkYXRlIHNraXAgdmFsdWVcbiAgICAgIGNvbnN0IG5ld1NraXAgPSBjdXJyZW50UGFyYW1zLnNraXAgKyBjdXJyZW50UGFyYW1zLmxpbWl0O1xuXG4gICAgICAvLyBMb2FkIGFuZCBhcHBlbmQgZGF0YVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0RGF0YShcbiAgICAgICAgY3VycmVudFBhcmFtcy5za2lwLFxuICAgICAgICBjdXJyZW50UGFyYW1zLmxpbWl0LFxuICAgICAgICBjdXJyZW50UGFyYW1zLnNvcnRQYXJhbSB8fCAnY3JlYXRlZERhdGUnLFxuICAgICAgICBjdXJyZW50UGFyYW1zLnNvcnRPcmRlclxuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0ZS5hcHBlbmRSZXF1ZXN0cyhyZXNwb25zZS5SZXN1bHQpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVRdWVyeVBhcmFtcyh7XG4gICAgICAgIHNraXA6IG5ld1NraXAsXG4gICAgICAgIGxpbWl0OiBjdXJyZW50UGFyYW1zLmxpbWl0LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvYWQgbW9yZSBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRUYWdzKFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAnQ3JlYXRlZERhdGUnLFxuICAgICAgICBTb3J0RGlyZWN0aW9uLkRlc2NcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUuc2V0VGFncyhyZXNwb25zZS5SZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCByZXF1ZXN0czonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgIH1cbiAgfVxufVxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3JzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvYWN0b3JzL2FjdG9ycy5mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsT0FBTyxFQUNQLFlBQVksRUFDWixvQkFBb0IsRUFFcEIsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBU2QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU0zRCxNQUFNLE9BQU8sV0FBVztJQUtaO0lBQ0E7SUFDQTtJQU5GLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3RDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXZDLFlBQ1UsT0FBcUIsRUFDckIsS0FBaUIsRUFDakIsV0FBd0I7UUFGeEIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRWhDLElBQUksQ0FBQyxhQUFhO2FBQ2YsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENB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QUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBsYXN0VmFsdWVGcm9tLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9hY3RvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RvclN0YXRlIH0gZnJvbSAnLi9hY3RvcnMuc3RhdGUnO1xuaW1wb3J0IHsgQWN0b3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvQWN0b3InO1xuaW1wb3J0IHsgUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IFdvcmtmbG93IH0gZnJvbSAnLi4vLi4vbW9kZWxzL1dvcmtmbG93JztcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi9tb2RlbHMvRm9ybSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvU29ydERpcmVjdGlvbic7XG5pbXBvcnQgeyBJRGF0YUZpbHRlciB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RvckZhY2FkZSB7XG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0ZTogQWN0b3JTdGF0ZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlYXJjaFN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5pc1VwZGF0aW5nJCgpLnN1YnNjcmliZSgobG9hZGluZykgPT4ge1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkobG9hZGluZyk7XG4gICAgfSk7XG4gIH1cblxuICBpc1VwZGF0aW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1VwZGF0aW5nJCgpO1xuICB9XG5cbiAgZ2V0UmVxdWVzdHMkKCk6IE9ic2VydmFibGU8QWN0b3JbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFJlcXVlc3RzJCgpO1xuICB9XG5cbiAgZ2V0VGFncyQoKTogT2JzZXJ2YWJsZTxUYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFRhZ3MkKCk7XG4gIH1cblxuICAvLyAgIGdldEZvcm1zJCgpOiBPYnNlcnZhYmxlPEZvcm1bXT4ge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0Rm9ybXMkKCk7XG4gIC8vICAgfVxuXG4gIGdldFF1ZXJ5UGFyYW1zJCgpOiBPYnNlcnZhYmxlPFF1ZXJ5UGFyYW1zPEFjdG9yPj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFF1ZXJ5UGFyYW1zJCgpO1xuICB9XG5cbiAgZ2V0U2VhcmNoVGVybSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5nZXRTZWFyY2hUZXJtJCgpO1xuICB9XG5cbiAgLy8gU2VhcmNoIGhhbmRsaW5nXG4gIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YmplY3QubmV4dCh0ZXJtKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RhdGUuc2V0U2VhcmNoVGVybShzZWFyY2hUZXJtKTtcbiAgICB0aGlzLnN0YXRlLnJlc2V0UGFnaW5hdGlvbigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcodHJ1ZSk7XG4gICAgICBpZiAoc2VhcmNoVGVybS50cmltKCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkUmVxdWVzdHNXaXRoUGFyYW0oc2VhcmNoVGVybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRSZXF1ZXN0cygpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTZWFyY2ggZmFpbGVkOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFVwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaWx0ZXIoZmlsdGVyUGFyYW1zOiBJRGF0YUZpbHRlcltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdGF0ZS5yZXNldFBhZ2luYXRpb24oKTtcbiAgICB0aGlzLnN0YXRlLnNldEZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xuICB9XG5cbiAgYWRkTmV3UmVxdWVzdCh0YXNrOiBBY3Rvcikge1xuICAgIHRoaXMuc3RhdGUuYWRkUmVxdWVzdCh0YXNrKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRSZXF1ZXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuc3RhdGUuZ2V0UXVlcnlQYXJhbXNWYWx1ZSgpO1xuXG4gICAgICBjb25zdCByZXF1ZXN0cyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXREYXRhKFxuICAgICAgICBwYXJhbXMuc2tpcCxcbiAgICAgICAgcGFyYW1zLmxpbWl0LFxuICAgICAgICBwYXJhbXMuc29ydFBhcmFtIHx8ICdjcmVhdGVkRGF0ZScsXG4gICAgICAgIHBhcmFtcy5zb3J0T3JkZXJcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUuc2V0UmVxdWVzdHMocmVxdWVzdHMuUmVzdWx0KTtcbiAgICAgIHRoaXMuc3RhdGUudXBkYXRlUXVlcnlQYXJhbXMoeyBza2lwOiByZXF1ZXN0cy5Ta2lwIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCByZXF1ZXN0czonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZFJlcXVlc3RzV2l0aFBhcmFtKHBhcmFtOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuc3RhdGUuZ2V0UXVlcnlQYXJhbXNWYWx1ZSgpO1xuXG4gICAgICBjb25zdCByZXF1ZXN0cyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRBY3RvcldpdGhQYXJhbShcbiAgICAgICAgcGFyYW0sXG4gICAgICAgIHBhcmFtcy5za2lwLFxuICAgICAgICBwYXJhbXMubGltaXQsXG4gICAgICAgIHBhcmFtcy5zb3J0UGFyYW0gfHwgJ0NyZWF0ZWREYXRlJyxcbiAgICAgICAgcGFyYW1zLnNvcnRPcmRlclxuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0ZS5zZXRSZXF1ZXN0cyhyZXF1ZXN0cy5SZXN1bHQpO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVRdWVyeVBhcmFtcyh7IHNraXA6IHJlcXVlc3RzLlNraXAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHJlcXVlc3RzIHdpdGggcGFyYW06JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVF1ZXJ5UGFyYW1zKHBhcmFtczogUGFydGlhbDxRdWVyeVBhcmFtczxBY3Rvcj4+KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS51cGRhdGVRdWVyeVBhcmFtcyhwYXJhbXMpO1xuICAgIC8vIHRoaXMubG9hZFJlcXVlc3RzKCk7XG4gIH1cblxuICBhc3luYyBhZGRSZXF1ZXN0KHJlcXVlc3Q6IFBhcnRpYWw8QWN0b3I+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCBuZXdSZXF1ZXN0ID0geyAuLi5yZXF1ZXN0LCBBY3RvckZvcm1zOiBbXSB9IGFzIEFjdG9yO1xuICAgICAgLy8gdGhpcy5zdGF0ZS5hZGRSZXF1ZXN0KG5ld1JlcXVlc3QpO1xuXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2Uuc2F2ZUFjdG9ycyhbbmV3UmVxdWVzdF0pO1xuICAgICAgdGhpcy5zdGF0ZS5yZXNldFBhZ2luYXRpb24oKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZFJlcXVlc3RzKCk7IC8vIFJlbG9hZCB0byBnZXQgc2VydmVyLXNpZGUgY2hhbmdlc1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gYWRkIHJlcXVlc3Q6JywgZXJyb3IpO1xuICAgICAgdGhpcy5zdGF0ZS5yZW1vdmVSZXF1ZXN0KHJlcXVlc3QuQ29kZSEpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVJlcXVlc3QocmVxdWVzdDogQWN0b3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zYXZlQWN0b3JzKFtyZXF1ZXN0XSk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVJlcXVlc3QocmVxdWVzdCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byB1cGRhdGUgcmVxdWVzdDonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTG9hZCBtb3JlIGhhbmRsaW5nXG4gIGFzeW5jIGxvYWRNb3JlKHF1ZXVlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnN0YXRlLmdldFF1ZXJ5UGFyYW1zVmFsdWUoKTtcbiAgICAgIC8vIGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnN0YXRlLmdldFNlYXJjaFRlcm1WYWx1ZSgpO1xuICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IGZhbHNlO1xuXG4gICAgICAvLyBVcGRhdGUgc2tpcCB2YWx1ZVxuICAgICAgY29uc3QgbmV3U2tpcCA9IGN1cnJlbnRQYXJhbXMuc2tpcCArIGN1cnJlbnRQYXJhbXMubGltaXQ7XG5cbiAgICAgIC8vIExvYWQgYW5kIGFwcGVuZCBkYXRhXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXREYXRhKFxuICAgICAgICBjdXJyZW50UGFyYW1zLnNraXAsXG4gICAgICAgIGN1cnJlbnRQYXJhbXMubGltaXQsXG4gICAgICAgIGN1cnJlbnRQYXJhbXMuc29ydFBhcmFtIHx8ICdjcmVhdGVkRGF0ZScsXG4gICAgICAgIGN1cnJlbnRQYXJhbXMuc29ydE9yZGVyXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlLmFwcGVuZFJlcXVlc3RzKHJlc3BvbnNlLlJlc3VsdCk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgc2tpcDogbmV3U2tpcCxcbiAgICAgICAgbGltaXQ6IGN1cnJlbnRQYXJhbXMubGltaXQsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignTG9hZCBtb3JlIGZhaWxlZDonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTG9hZCBtb3JlIGhhbmRsaW5nXG4gIGFzeW5jIGxvYWREYXRhKHNraXA6IG51bWJlciwgbGltaXQ6IG51bWJlcik6IFByb21pc2U8QWN0b3JbXSB8IHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnN0YXRlLmdldFF1ZXJ5UGFyYW1zVmFsdWUoKTtcblxuICAgICAgLy8gTG9hZCBhbmQgYXBwZW5kIGRhdGFcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldERhdGEoXG4gICAgICAgIHNraXAsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICAnQ3JlYXRlZERhdGUnLFxuICAgICAgICBTb3J0RGlyZWN0aW9uLkRlc2NcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZS5SZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvYWQgbW9yZSBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0VXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRUYWdzKFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAnQ3JlYXRlZERhdGUnLFxuICAgICAgICBTb3J0RGlyZWN0aW9uLkRlc2NcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUuc2V0VGFncyhyZXNwb25zZS5SZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCByZXF1ZXN0czonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgIH1cbiAgfVxufVxuIl19