vcomply-workflow-engine 3.7.9 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +8 -8
  2. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +82 -57
  3. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +1 -1
  4. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +9 -5
  5. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +10 -6
  6. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +11 -7
  7. package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +46 -28
  8. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +135 -103
  9. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +31 -26
  10. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +82 -52
  11. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +3 -3
  12. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +68 -42
  13. package/esm2022/lib/workflow-services/add-risk.service.mjs +21 -14
  14. package/esm2022/lib/workflow-services/common-workflow-services/compliance-common.service.mjs +51 -0
  15. package/esm2022/lib/workflow-services/common-workflow-services/organization-common.service.mjs +92 -0
  16. package/esm2022/lib/workflow-services/common-workflow-services/risk-common.service.mjs +69 -0
  17. package/esm2022/lib/workflow-services/log-issue.service.mjs +17 -7
  18. package/esm2022/lib/workflow-services/policy.service.mjs +14 -2
  19. package/fesm2022/vcomply-workflow-engine.mjs +557 -205
  20. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  21. package/lib/log-an-issue/log-an-issue.component.d.ts +7 -1
  22. package/lib/sharedComponents/category-list/category-list.component.d.ts +2 -1
  23. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +2 -1
  24. package/lib/sharedComponents/radio-list/radio-list.component.d.ts +2 -1
  25. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +6 -1
  26. package/lib/workflow-compliance/workflow-compliance.component.d.ts +7 -1
  27. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +3 -1
  28. package/lib/workflow-policy/workflow-policy.component.d.ts +8 -1
  29. package/lib/workflow-risk/workflow-risk.component.d.ts +9 -3
  30. package/lib/workflow-services/add-risk.service.d.ts +7 -4
  31. package/lib/workflow-services/common-workflow-services/compliance-common.service.d.ts +16 -0
  32. package/lib/workflow-services/common-workflow-services/organization-common.service.d.ts +24 -0
  33. package/lib/workflow-services/common-workflow-services/risk-common.service.d.ts +20 -0
  34. package/lib/workflow-services/log-issue.service.d.ts +2 -1
  35. package/lib/workflow-services/policy.service.d.ts +3 -1
  36. package/package.json +1 -1
@@ -5,10 +5,11 @@ import * as i2 from "@angular/common";
5
5
  import * as i3 from "../../formgroup/cs-radio/cs-radio.component";
6
6
  import * as i4 from "../../ui-kit/tooltip/tooltip.directive";
7
7
  import * as i5 from "../no-data/no-data.component";
8
- import * as i6 from "../floating-bar/floating-bar.component";
9
- import * as i7 from "../../pipes/data-type.pipe";
10
- import * as i8 from "../../pipes/list-mapper.pipe";
11
- import * as i9 from "../../pipes/search.pipe";
8
+ import * as i6 from "../v-loader/loader-inline/loader-inline.component";
9
+ import * as i7 from "../floating-bar/floating-bar.component";
10
+ import * as i8 from "../../pipes/data-type.pipe";
11
+ import * as i9 from "../../pipes/list-mapper.pipe";
12
+ import * as i10 from "../../pipes/search.pipe";
12
13
  export class RadioListComponent {
13
14
  constructor() {
14
15
  this.itemsList = [];
@@ -19,6 +20,7 @@ export class RadioListComponent {
19
20
  this.twoColumn = false;
20
21
  this.closeList = new EventEmitter();
21
22
  this.saveList = new EventEmitter();
23
+ this.loader = false;
22
24
  this.animation = true;
23
25
  this.searchItem = '';
24
26
  }
@@ -52,11 +54,11 @@ export class RadioListComponent {
52
54
  return array.map((a) => a[identifierKey]);
53
55
  }
54
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioListComponent, selector: "app-radio-list", inputs: { itemsList: "itemsList", selectedItems: "selectedItems", identifierKey: "identifierKey", displayKey: "displayKey", tooltipKey: "tooltipKey", config: "config", twoColumn: "twoColumn" }, outputs: { closeList: "closeList", saveList: "saveList" }, viewQueries: [{ propertyName: "listBlock", first: true, predicate: ["listBlock"], descendants: true }], ngImport: i0, template: "<div class=\"radio-list\" [class.animate]=\"animation\">\r\n <div class=\"radio-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">{{config?.panelTitle}}</div>\r\n <!-- <button class=\"radio-list-close\">\r\n <i class=\"icons\" (click)=\"close()\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"radio-list-body\">\r\n <div class=\"search-block vx-mb-2\" *ngIf=\"config?.searchEnabled\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [placeholder]=\"config?.searchPlaceholder\" [(ngModel)]=\"searchItem\" />\r\n </div>\r\n <ng-container *ngIf=\"(itemsList | search:searchItem:displayKey) as searchList\">\r\n <div class=\"categories vx-mb-4\" *ngIf=\"searchList?.length > 0\">\r\n <ul [class.two-column]=\"twoColumn\" *ngIf=\"searchList?.length > 0\">\r\n <li *ngFor=\"let item of searchList\">\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) !== 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [name]=\"'rx-category'\" [checked]=\"selectedItems.includes(item[identifierKey])\"\r\n [appTooltip]=\"tooltipKey ? item[tooltipKey]: item[displayKey]\" placement=\"bottom-left\"\r\n delay=\"0\" [tooltipMandatory]=\"true\">\r\n {{item[displayKey]}}\r\n </app-cs-radio>\r\n </ng-container>\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) === 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [checked]=\"selectedItems.includes(item[identifierKey])\">\r\n\r\n <ul class=\"category-within-list\" #listBlock>\r\n <li *ngFor=\"let child of item[displayKey]\" [style.max-width.px]=\"blockWidth / item[displayKey].length\">\r\n <span [appTooltip]=\"child\" placement=\"bottom-left\" delay=\"0\">{{child}}</span>\r\n </li>\r\n </ul>\r\n </app-cs-radio>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n <app-no-data *ngIf=\"searchList?.length === 0\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"config?.noDataText?.length > 0 ? config?.noDataText:'No data to display'\"></app-no-data>\r\n </ng-container>\r\n\r\n <app-floating-bar [selectedData]=\"selectedItems|listMapper:itemsList:identifierKey\" [displayElementKey]=\"displayKey\"\r\n [singularText]=\"config?.floatingTextSingular\"\r\n [pluralText]=\"config?.floatingTextPlural ?config?.floatingTextPlural:'Users selected'\"\r\n (closeEvent)=\"save()\"\r\n (closeList)=\"close()\" (deleteEvent)=\"deleteItem($event)\"\r\n [isDisabled]=\"selectedItems.length === 0 || itemsList.length === 0 \">\r\n </app-floating-bar>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .radio-list{position:fixed;inset:0 500px 0 0}::ng-deep .radio-list:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .radio-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .radio-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .radio-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .radio-list-body .search-block{position:relative}::ng-deep .radio-list-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .radio-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .radio-list-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .radio-list-body .categories{height:calc(100vh - 224px);overflow:hidden;overflow-y:auto}::ng-deep .radio-list-body .categories ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li{padding:0 0 1rem;list-style:none}::ng-deep .radio-list-body .categories ul li app-cs-radio{display:flex}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item{width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value{width:100%;color:#161b2f;font-size:12px;font-weight:400;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list{display:flex;max-width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li{display:block;padding:0 8px;position:relative;max-width:50%;width:auto}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:after{content:\">\";position:absolute;top:0;right:-3px;color:#747576;font-size:13px}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#747576}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type:after{display:none}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type span{color:#34aa44}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type{padding-left:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type span{color:#1e5dd3}::ng-deep .radio-list-body .categories ul.two-column{display:flex;flex-wrap:wrap;align-items:flex-start}::ng-deep .radio-list-body .categories ul.two-column li{width:50%;padding-right:20px}::ng-deep .radio-list-body app-no-data .no-data-wrapper{height:calc(100% - 100px)!important}::ng-deep .radio-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i6.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "pipe", type: i7.DataTypePipe, name: "dataType" }, { kind: "pipe", type: i8.ListMapperPipe, name: "listMapper" }, { kind: "pipe", type: i9.SearchPipe, name: "search" }] }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioListComponent, selector: "app-radio-list", inputs: { itemsList: "itemsList", selectedItems: "selectedItems", identifierKey: "identifierKey", displayKey: "displayKey", tooltipKey: "tooltipKey", config: "config", twoColumn: "twoColumn", loader: "loader" }, outputs: { closeList: "closeList", saveList: "saveList" }, viewQueries: [{ propertyName: "listBlock", first: true, predicate: ["listBlock"], descendants: true }], ngImport: i0, template: "<div class=\"radio-list\" [class.animate]=\"animation\">\r\n <div class=\"radio-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">{{config?.panelTitle}}</div>\r\n <!-- <button class=\"radio-list-close\">\r\n <i class=\"icons\" (click)=\"close()\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"radio-list-body\">\r\n <div class=\"search-block vx-mb-2\" *ngIf=\"config?.searchEnabled\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [placeholder]=\"config?.searchPlaceholder\" [(ngModel)]=\"searchItem\" />\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <ng-container *ngIf=\"(itemsList | search:searchItem:displayKey) as searchList\">\r\n <div class=\"categories vx-mb-4\" *ngIf=\"searchList?.length > 0\">\r\n <ul [class.two-column]=\"twoColumn\" *ngIf=\"searchList?.length > 0\">\r\n <li *ngFor=\"let item of searchList\">\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) !== 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [name]=\"'rx-category'\" [checked]=\"selectedItems.includes(item[identifierKey])\"\r\n [appTooltip]=\"tooltipKey ? item[tooltipKey]: item[displayKey]\" placement=\"bottom-left\"\r\n delay=\"0\" [tooltipMandatory]=\"true\">\r\n {{item[displayKey]}}\r\n </app-cs-radio>\r\n </ng-container>\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) === 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [checked]=\"selectedItems.includes(item[identifierKey])\">\r\n\r\n <ul class=\"category-within-list\" #listBlock>\r\n <li *ngFor=\"let child of item[displayKey]\" [style.max-width.px]=\"blockWidth / item[displayKey].length\">\r\n <span [appTooltip]=\"child\" placement=\"bottom-left\" delay=\"0\">{{child}}</span>\r\n </li>\r\n </ul>\r\n </app-cs-radio>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n <app-no-data *ngIf=\"searchList?.length === 0 && !loader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"config?.noDataText?.length > 0 ? config?.noDataText:'No data to display'\"></app-no-data>\r\n </ng-container>\r\n\r\n <app-floating-bar *ngIf=\"!loader\" [selectedData]=\"selectedItems|listMapper:itemsList:identifierKey\" [displayElementKey]=\"displayKey\"\r\n [singularText]=\"config?.floatingTextSingular\"\r\n [pluralText]=\"config?.floatingTextPlural ?config?.floatingTextPlural:'Users selected'\"\r\n (closeEvent)=\"save()\"\r\n (closeList)=\"close()\" (deleteEvent)=\"deleteItem($event)\"\r\n [isDisabled]=\"selectedItems.length === 0 || itemsList.length === 0 \">\r\n </app-floating-bar>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .radio-list{position:fixed;inset:0 500px 0 0}::ng-deep .radio-list:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .radio-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .radio-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .radio-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .radio-list-body .search-block{position:relative}::ng-deep .radio-list-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .radio-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .radio-list-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .radio-list-body .categories{height:calc(100vh - 224px);overflow:hidden;overflow-y:auto}::ng-deep .radio-list-body .categories ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li{padding:0 0 1rem;list-style:none}::ng-deep .radio-list-body .categories ul li app-cs-radio{display:flex}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item{width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value{width:100%;color:#161b2f;font-size:12px;font-weight:400;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list{display:flex;max-width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li{display:block;padding:0 8px;position:relative;max-width:50%;width:auto}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:after{content:\">\";position:absolute;top:0;right:-3px;color:#747576;font-size:13px}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#747576}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type:after{display:none}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type span{color:#34aa44}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type{padding-left:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type span{color:#1e5dd3}::ng-deep .radio-list-body .categories ul.two-column{display:flex;flex-wrap:wrap;align-items:flex-start}::ng-deep .radio-list-body .categories ul.two-column li{width:50%;padding-right:20px}::ng-deep .radio-list-body app-no-data .no-data-wrapper{height:calc(100% - 100px)!important}::ng-deep .radio-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i6.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i7.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "pipe", type: i8.DataTypePipe, name: "dataType" }, { kind: "pipe", type: i9.ListMapperPipe, name: "listMapper" }, { kind: "pipe", type: i10.SearchPipe, name: "search" }] }); }
56
58
  }
57
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioListComponent, decorators: [{
58
60
  type: Component,
59
- args: [{ selector: 'app-radio-list', template: "<div class=\"radio-list\" [class.animate]=\"animation\">\r\n <div class=\"radio-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">{{config?.panelTitle}}</div>\r\n <!-- <button class=\"radio-list-close\">\r\n <i class=\"icons\" (click)=\"close()\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"radio-list-body\">\r\n <div class=\"search-block vx-mb-2\" *ngIf=\"config?.searchEnabled\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [placeholder]=\"config?.searchPlaceholder\" [(ngModel)]=\"searchItem\" />\r\n </div>\r\n <ng-container *ngIf=\"(itemsList | search:searchItem:displayKey) as searchList\">\r\n <div class=\"categories vx-mb-4\" *ngIf=\"searchList?.length > 0\">\r\n <ul [class.two-column]=\"twoColumn\" *ngIf=\"searchList?.length > 0\">\r\n <li *ngFor=\"let item of searchList\">\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) !== 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [name]=\"'rx-category'\" [checked]=\"selectedItems.includes(item[identifierKey])\"\r\n [appTooltip]=\"tooltipKey ? item[tooltipKey]: item[displayKey]\" placement=\"bottom-left\"\r\n delay=\"0\" [tooltipMandatory]=\"true\">\r\n {{item[displayKey]}}\r\n </app-cs-radio>\r\n </ng-container>\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) === 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [checked]=\"selectedItems.includes(item[identifierKey])\">\r\n\r\n <ul class=\"category-within-list\" #listBlock>\r\n <li *ngFor=\"let child of item[displayKey]\" [style.max-width.px]=\"blockWidth / item[displayKey].length\">\r\n <span [appTooltip]=\"child\" placement=\"bottom-left\" delay=\"0\">{{child}}</span>\r\n </li>\r\n </ul>\r\n </app-cs-radio>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n <app-no-data *ngIf=\"searchList?.length === 0\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"config?.noDataText?.length > 0 ? config?.noDataText:'No data to display'\"></app-no-data>\r\n </ng-container>\r\n\r\n <app-floating-bar [selectedData]=\"selectedItems|listMapper:itemsList:identifierKey\" [displayElementKey]=\"displayKey\"\r\n [singularText]=\"config?.floatingTextSingular\"\r\n [pluralText]=\"config?.floatingTextPlural ?config?.floatingTextPlural:'Users selected'\"\r\n (closeEvent)=\"save()\"\r\n (closeList)=\"close()\" (deleteEvent)=\"deleteItem($event)\"\r\n [isDisabled]=\"selectedItems.length === 0 || itemsList.length === 0 \">\r\n </app-floating-bar>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .radio-list{position:fixed;inset:0 500px 0 0}::ng-deep .radio-list:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .radio-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .radio-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .radio-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .radio-list-body .search-block{position:relative}::ng-deep .radio-list-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .radio-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .radio-list-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .radio-list-body .categories{height:calc(100vh - 224px);overflow:hidden;overflow-y:auto}::ng-deep .radio-list-body .categories ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li{padding:0 0 1rem;list-style:none}::ng-deep .radio-list-body .categories ul li app-cs-radio{display:flex}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item{width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value{width:100%;color:#161b2f;font-size:12px;font-weight:400;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list{display:flex;max-width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li{display:block;padding:0 8px;position:relative;max-width:50%;width:auto}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:after{content:\">\";position:absolute;top:0;right:-3px;color:#747576;font-size:13px}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#747576}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type:after{display:none}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type span{color:#34aa44}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type{padding-left:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type span{color:#1e5dd3}::ng-deep .radio-list-body .categories ul.two-column{display:flex;flex-wrap:wrap;align-items:flex-start}::ng-deep .radio-list-body .categories ul.two-column li{width:50%;padding-right:20px}::ng-deep .radio-list-body app-no-data .no-data-wrapper{height:calc(100% - 100px)!important}::ng-deep .radio-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
61
+ args: [{ selector: 'app-radio-list', template: "<div class=\"radio-list\" [class.animate]=\"animation\">\r\n <div class=\"radio-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">{{config?.panelTitle}}</div>\r\n <!-- <button class=\"radio-list-close\">\r\n <i class=\"icons\" (click)=\"close()\">&#xe90d;</i>\r\n </button> -->\r\n </div>\r\n\r\n <div class=\"radio-list-body\">\r\n <div class=\"search-block vx-mb-2\" *ngIf=\"config?.searchEnabled\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [placeholder]=\"config?.searchPlaceholder\" [(ngModel)]=\"searchItem\" />\r\n </div>\r\n <app-loader-inline *ngIf=\"loader\"></app-loader-inline>\r\n <ng-container *ngIf=\"(itemsList | search:searchItem:displayKey) as searchList\">\r\n <div class=\"categories vx-mb-4\" *ngIf=\"searchList?.length > 0\">\r\n <ul [class.two-column]=\"twoColumn\" *ngIf=\"searchList?.length > 0\">\r\n <li *ngFor=\"let item of searchList\">\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) !== 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [name]=\"'rx-category'\" [checked]=\"selectedItems.includes(item[identifierKey])\"\r\n [appTooltip]=\"tooltipKey ? item[tooltipKey]: item[displayKey]\" placement=\"bottom-left\"\r\n delay=\"0\" [tooltipMandatory]=\"true\">\r\n {{item[displayKey]}}\r\n </app-cs-radio>\r\n </ng-container>\r\n <ng-container *ngIf=\"(item[displayKey]|dataType) === 'object' \">\r\n <app-cs-radio [name]=\"'radio-selector'\" (checkedEvent)=\"selectItem(item[identifierKey])\"\r\n [checked]=\"selectedItems.includes(item[identifierKey])\">\r\n\r\n <ul class=\"category-within-list\" #listBlock>\r\n <li *ngFor=\"let child of item[displayKey]\" [style.max-width.px]=\"blockWidth / item[displayKey].length\">\r\n <span [appTooltip]=\"child\" placement=\"bottom-left\" delay=\"0\">{{child}}</span>\r\n </li>\r\n </ul>\r\n </app-cs-radio>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n <app-no-data *ngIf=\"searchList?.length === 0 && !loader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"config?.noDataText?.length > 0 ? config?.noDataText:'No data to display'\"></app-no-data>\r\n </ng-container>\r\n\r\n <app-floating-bar *ngIf=\"!loader\" [selectedData]=\"selectedItems|listMapper:itemsList:identifierKey\" [displayElementKey]=\"displayKey\"\r\n [singularText]=\"config?.floatingTextSingular\"\r\n [pluralText]=\"config?.floatingTextPlural ?config?.floatingTextPlural:'Users selected'\"\r\n (closeEvent)=\"save()\"\r\n (closeList)=\"close()\" (deleteEvent)=\"deleteItem($event)\"\r\n [isDisabled]=\"selectedItems.length === 0 || itemsList.length === 0 \">\r\n </app-floating-bar>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .radio-list{position:fixed;inset:0 500px 0 0}::ng-deep .radio-list:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .radio-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .radio-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .radio-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .radio-list-body .search-block{position:relative}::ng-deep .radio-list-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .radio-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .radio-list-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .radio-list-body .categories{height:calc(100vh - 224px);overflow:hidden;overflow-y:auto}::ng-deep .radio-list-body .categories ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li{padding:0 0 1rem;list-style:none}::ng-deep .radio-list-body .categories ul li app-cs-radio{display:flex}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item{width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value{width:100%;color:#161b2f;font-size:12px;font-weight:400;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul{padding:0;margin:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list{display:flex;max-width:100%}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li{display:block;padding:0 8px;position:relative;max-width:50%;width:auto}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:after{content:\">\";position:absolute;top:0;right:-3px;color:#747576;font-size:13px}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#747576}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type:after{display:none}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:last-of-type span{color:#34aa44}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type{padding-left:0}::ng-deep .radio-list-body .categories ul li app-cs-radio label.radio-item span.value ul.category-within-list li:first-of-type span{color:#1e5dd3}::ng-deep .radio-list-body .categories ul.two-column{display:flex;flex-wrap:wrap;align-items:flex-start}::ng-deep .radio-list-body .categories ul.two-column li{width:50%;padding-right:20px}::ng-deep .radio-list-body app-no-data .no-data-wrapper{height:calc(100% - 100px)!important}::ng-deep .radio-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
60
62
  }], ctorParameters: function () { return []; }, propDecorators: { listBlock: [{
61
63
  type: ViewChild,
62
64
  args: ['listBlock', { static: false }]
@@ -78,5 +80,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
78
80
  type: Output
79
81
  }], saveList: [{
80
82
  type: Output
83
+ }], loader: [{
84
+ type: Input
81
85
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBT3JILE1BQU0sT0FBTyxrQkFBa0I7SUFjN0I7UUFaUyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVBLENBQUM7SUFFakIsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsdUJBQXVCO0lBRXpCLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQy9ELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsdUJBQXVCO0lBQ3pCLENBQUM7SUFHRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QsU0FBUyxDQUFDLEtBQVUsRUFBRSxhQUFrQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBbkRVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDJaQ1AvQix1Z0dBbURBOzs0RkQ1Q2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjswRUFLZ0IsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUMvQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yYWRpby1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tbGlzdC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbGlzdEJsb2NrJyx7IHN0YXRpYzogZmFsc2UgfSkgbGlzdEJsb2NrITogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBpdGVtc0xpc3Q6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlkZW50aWZpZXJLZXkgPSAnJztcclxuICBASW5wdXQoKSBkaXNwbGF5S2V5ID0gJyc7XHJcbiAgQElucHV0KCkgdG9vbHRpcEtleSA9ICcnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZyAhOiBhbnk7XHJcbiAgQElucHV0KCkgdHdvQ29sdW1uID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGNsb3NlTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2F2ZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcclxuICBzZWFyY2hJdGVtID0gJyc7XHJcbiAgYmxvY2tXaWR0aDogYW55O1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5hcnJheVRvSWQodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLmlkZW50aWZpZXJLZXkpO1xyXG4gICAgLy8gdGhpcy5yZXJlbmRlckxpc3QoKTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmJsb2NrV2lkdGggPSB0aGlzLmxpc3RCbG9jaz8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICB9XHJcbiAgZGVsZXRlSXRlbShpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgLy8gdGhpcy5yZXJlbmRlckxpc3QoKTtcclxuICB9XHJcblxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5zYXZlTGlzdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2VMaXN0LmVtaXQoKTtcclxuICB9XHJcblxyXG5cclxuICBhcnJheVRvSWQoYXJyYXk6IGFueSwgaWRlbnRpZmllcktleTogYW55KSB7XHJcbiAgICByZXR1cm4gYXJyYXkubWFwKChhOiBhbnkpID0+IGFbaWRlbnRpZmllcktleV0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmFkaW8tbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyYWRpby1saXN0LWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPnt7Y29uZmlnPy5wYW5lbFRpdGxlfX08L2Rpdj5cclxuICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cInJhZGlvLWxpc3QtY2xvc2VcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJjbG9zZSgpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICA8L2J1dHRvbj4gLS0+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyYWRpby1saXN0LWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiICpuZ0lmPVwiY29uZmlnPy5zZWFyY2hFbmFibGVkXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImNvbmZpZz8uc2VhcmNoUGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW1zTGlzdCB8IHNlYXJjaDpzZWFyY2hJdGVtOmRpc3BsYXlLZXkpIGFzIHNlYXJjaExpc3RcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMgdngtbWItNFwiICpuZ0lmPVwic2VhcmNoTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDx1bCBbY2xhc3MudHdvLWNvbHVtbl09XCJ0d29Db2x1bW5cIiAqbmdJZj1cInNlYXJjaExpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWFyY2hMaXN0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbVtkaXNwbGF5S2V5XXxkYXRhVHlwZSkgIT09ICdvYmplY3QnIFwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JhZGlvLXNlbGVjdG9yJ1wiIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbShpdGVtW2lkZW50aWZpZXJLZXldKVwiXHJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCIncngtY2F0ZWdvcnknXCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW2lkZW50aWZpZXJLZXldKVwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ0b29sdGlwS2V5ID8gaXRlbVt0b29sdGlwS2V5XTogaXRlbVtkaXNwbGF5S2V5XVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIHt7aXRlbVtkaXNwbGF5S2V5XX19XHJcbiAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW1bZGlzcGxheUtleV18ZGF0YVR5cGUpID09PSAnb2JqZWN0JyBcIj5cclxuICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidyYWRpby1zZWxlY3RvcidcIiAoY2hlY2tlZEV2ZW50KT1cInNlbGVjdEl0ZW0oaXRlbVtpZGVudGlmaWVyS2V5XSlcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW2lkZW50aWZpZXJLZXldKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNhdGVnb3J5LXdpdGhpbi1saXN0XCIgI2xpc3RCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtW2Rpc3BsYXlLZXldXCIgW3N0eWxlLm1heC13aWR0aC5weF09XCJibG9ja1dpZHRoIC8gaXRlbVtkaXNwbGF5S2V5XS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXBwVG9vbHRpcF09XCJjaGlsZFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCI+e3tjaGlsZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJzZWFyY2hMaXN0Py5sZW5ndGggPT09IDBcIiBbbm9EYXRhSW1hZ2VdPVwiJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zZWFyY2gtZGF0YS5zdmcnXCIgIFtub0RhdGFUZXh0XT1cImNvbmZpZz8ubm9EYXRhVGV4dD8ubGVuZ3RoID4gMCA/IGNvbmZpZz8ubm9EYXRhVGV4dDonTm8gZGF0YSB0byBkaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YXBwLWZsb2F0aW5nLWJhciBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkSXRlbXN8bGlzdE1hcHBlcjppdGVtc0xpc3Q6aWRlbnRpZmllcktleVwiIFtkaXNwbGF5RWxlbWVudEtleV09XCJkaXNwbGF5S2V5XCJcclxuICAgIFtzaW5ndWxhclRleHRdPVwiY29uZmlnPy5mbG9hdGluZ1RleHRTaW5ndWxhclwiXHJcbiAgICBbcGx1cmFsVGV4dF09XCJjb25maWc/LmZsb2F0aW5nVGV4dFBsdXJhbCA/Y29uZmlnPy5mbG9hdGluZ1RleHRQbHVyYWw6J1VzZXJzIHNlbGVjdGVkJ1wiXHJcbiAgICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIlxyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIiAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgW2lzRGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgfHwgaXRlbXNMaXN0Lmxlbmd0aCA9PT0gMCBcIj5cclxuICAgIDwvYXBwLWZsb2F0aW5nLWJhcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQU9ySCxNQUFNLE9BQU8sa0JBQWtCO0lBZTdCO1FBYlMsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVBLENBQUM7SUFFakIsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsdUJBQXVCO0lBRXpCLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQy9ELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsdUJBQXVCO0lBQ3pCLENBQUM7SUFHRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QsU0FBUyxDQUFDLEtBQVUsRUFBRSxhQUFrQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBcERVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZhQ1AvQixvbUdBb0RBOzs0RkQ3Q2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjswRUFLZ0IsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUMvQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmFkaW8tbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLWxpc3QuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RCbG9jaycseyBzdGF0aWM6IGZhbHNlIH0pIGxpc3RCbG9jayE6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgaXRlbXNMaXN0OiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBpZGVudGlmaWVyS2V5ID0gJyc7XHJcbiAgQElucHV0KCkgZGlzcGxheUtleSA9ICcnO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBLZXkgPSAnJztcclxuICBASW5wdXQoKSBjb25maWcgITogYW55O1xyXG4gIEBJbnB1dCgpIHR3b0NvbHVtbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNhdmVMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGlvbiA9IHRydWU7XHJcbiAgc2VhcmNoSXRlbSA9ICcnO1xyXG4gIGJsb2NrV2lkdGg6IGFueTtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMzAwKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuYXJyYXlUb0lkKHRoaXMuc2VsZWN0ZWRJdGVtcywgdGhpcy5pZGVudGlmaWVyS2V5KTtcclxuICAgIC8vIHRoaXMucmVyZW5kZXJMaXN0KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCl7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ibG9ja1dpZHRoID0gdGhpcy5saXN0QmxvY2s/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgfVxyXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIC8vIHRoaXMucmVyZW5kZXJMaXN0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuc2F2ZUxpc3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlTGlzdC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYXlUb0lkKGFycmF5OiBhbnksIGlkZW50aWZpZXJLZXk6IGFueSkge1xyXG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoYTogYW55KSA9PiBhW2lkZW50aWZpZXJLZXldKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJhZGlvLWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuICA8ZGl2IGNsYXNzPVwicmFkaW8tbGlzdC1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57e2NvbmZpZz8ucGFuZWxUaXRsZX19PC9kaXY+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJyYWRpby1saXN0LWNsb3NlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiY2xvc2UoKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgPC9idXR0b24+IC0tPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicmFkaW8tbGlzdC1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTJcIiAqbmdJZj1cImNvbmZpZz8uc2VhcmNoRW5hYmxlZFwiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJjb25maWc/LnNlYXJjaFBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hJdGVtXCIgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbXNMaXN0IHwgc2VhcmNoOnNlYXJjaEl0ZW06ZGlzcGxheUtleSkgYXMgc2VhcmNoTGlzdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyB2eC1tYi00XCIgKm5nSWY9XCJzZWFyY2hMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHVsIFtjbGFzcy50d28tY29sdW1uXT1cInR3b0NvbHVtblwiICpuZ0lmPVwic2VhcmNoTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaExpc3RcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpdGVtW2Rpc3BsYXlLZXldfGRhdGFUeXBlKSAhPT0gJ29iamVjdCcgXCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCIncmFkaW8tc2VsZWN0b3InXCIgKGNoZWNrZWRFdmVudCk9XCJzZWxlY3RJdGVtKGl0ZW1baWRlbnRpZmllcktleV0pXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidyeC1jYXRlZ29yeSdcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW1baWRlbnRpZmllcktleV0pXCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInRvb2x0aXBLZXkgPyBpdGVtW3Rvb2x0aXBLZXldOiBpdGVtW2Rpc3BsYXlLZXldXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAge3tpdGVtW2Rpc3BsYXlLZXldfX1cclxuICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbVtkaXNwbGF5S2V5XXxkYXRhVHlwZSkgPT09ICdvYmplY3QnIFwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3JhZGlvLXNlbGVjdG9yJ1wiIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbShpdGVtW2lkZW50aWZpZXJLZXldKVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW1baWRlbnRpZmllcktleV0pXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY2F0ZWdvcnktd2l0aGluLWxpc3RcIiAjbGlzdEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW1bZGlzcGxheUtleV1cIiBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImJsb2NrV2lkdGggLyBpdGVtW2Rpc3BsYXlLZXldLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFthcHBUb29sdGlwXT1cImNoaWxkXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIj57e2NoaWxkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cInNlYXJjaExpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXCIgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1wiICBbbm9EYXRhVGV4dF09XCJjb25maWc/Lm5vRGF0YVRleHQ/Lmxlbmd0aCA+IDAgPyBjb25maWc/Lm5vRGF0YVRleHQ6J05vIGRhdGEgdG8gZGlzcGxheSdcIj48L2FwcC1uby1kYXRhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGFwcC1mbG9hdGluZy1iYXIgKm5nSWY9XCIhbG9hZGVyXCIgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZEl0ZW1zfGxpc3RNYXBwZXI6aXRlbXNMaXN0OmlkZW50aWZpZXJLZXlcIiBbZGlzcGxheUVsZW1lbnRLZXldPVwiZGlzcGxheUtleVwiXHJcbiAgICBbc2luZ3VsYXJUZXh0XT1cImNvbmZpZz8uZmxvYXRpbmdUZXh0U2luZ3VsYXJcIlxyXG4gICAgW3BsdXJhbFRleHRdPVwiY29uZmlnPy5mbG9hdGluZ1RleHRQbHVyYWwgP2NvbmZpZz8uZmxvYXRpbmdUZXh0UGx1cmFsOidVc2VycyBzZWxlY3RlZCdcIlxyXG4gICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCJcclxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCIgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUl0ZW0oJGV2ZW50KVwiXHJcbiAgICAgIFtpc0Rpc2FibGVkXT1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwIHx8IGl0ZW1zTGlzdC5sZW5ndGggPT09IDAgXCI+XHJcbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=