nuxeo-development-framework 5.1.8 → 5.2.0

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 (25) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +30 -18
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +2 -2
  4. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +2 -2
  5. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +2 -2
  6. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +2 -2
  7. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +2 -2
  8. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +2 -2
  9. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +2 -2
  10. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +2 -2
  11. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +2 -2
  12. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +2 -2
  13. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +11 -3
  14. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +2 -2
  15. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +4 -2
  16. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +5 -3
  17. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +1 -1
  18. package/esm2015/lib/components/select/select/select.component.js +2 -2
  19. package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
  20. package/fesm2015/nuxeo-development-framework.js +30 -18
  21. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  22. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +2 -1
  23. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +2 -1
  24. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +2 -1
  25. package/package.json +1 -1
@@ -64,6 +64,7 @@ export class TreeviewSelectComponent {
64
64
  /** use outside custom function instead of the iner function */
65
65
  this.useCustomAddEditAction = false;
66
66
  this.disabled = false;
67
+ this.selectDepChildren = true;
67
68
  this.actionClicked = new EventEmitter();
68
69
  this.arabic = false;
69
70
  this.onDestroy$ = new Subject();
@@ -171,7 +172,12 @@ export class TreeviewSelectComponent {
171
172
  }
172
173
  selectMultiple(e, item) {
173
174
  this.selectedParentWithChild = [];
174
- this.getChildernValues(item);
175
+ if (!this.selectDepChildren) {
176
+ this.selectedParentWithChild.push(item.value);
177
+ }
178
+ else {
179
+ this.getChildernValues(item);
180
+ }
175
181
  if (e) {
176
182
  this.multipleSelection = this.multipleSelection.concat(this.selectedParentWithChild);
177
183
  }
@@ -281,7 +287,7 @@ export class TreeviewSelectComponent {
281
287
  }
282
288
  }
283
289
  TreeviewSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TreeviewSelectComponent, deps: [{ token: i1.TreeviewI18n }, { token: i2.TranslationService }, { token: i3.DepartmentApiService }, { token: i4.DepartmentManagementService }, { token: i5.RolesService }, { token: i6.NuxeoService }, { token: i7.GlobalAdminService }], target: i0.ɵɵFactoryTarget.Component });
284
- TreeviewSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TreeviewSelectComponent, selector: "app-dynamic-form-treeview-select", inputs: { treeview: "treeview", treeViewAsFormControl: "treeViewAsFormControl", config: "config", items: "items", value: "value", multiple: "multiple", defaultSelect: "defaultSelect", pp_departmentNestedTree: "pp_departmentNestedTree", useCustomAddEditAction: "useCustomAddEditAction", customPrefix: "customPrefix", customParentProperty: "customParentProperty", placeholder: "placeholder", defaultSelection: "defaultSelection", displayDepTypee: "displayDepTypee", disabled: "disabled", displayIsAllowRecExternal: "displayIsAllowRecExternal", fixedParentNode: "fixedParentNode" }, outputs: { valueChange: "valueChange", plusClicked: "plusClicked", actionClicked: "actionClicked" }, providers: [{ provide: TreeviewI18n, useClass: DropdownTreeviewSelectI18n }], viewQueries: [{ propertyName: "dropdownTreeviewComponent", first: true, predicate: DropdownTreeviewComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template\r\n #itemTemplate\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n>\r\n <!-- single -->\r\n <div *ngIf=\"!treeview && !multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <!-- <label class=\"form-check-label\" (click)=\"select(item)\">{{\r\n item.text\r\n }}</label> -->\r\n <label *ngIf=\"item.disabled\" class=\"form-check-label\">{{\r\n item.text\r\n }}</label>\r\n <label\r\n *ngIf=\"!item.disabled\"\r\n class=\"form-check-label\"\r\n (click)=\"select(item)\"\r\n >{{ item.text }}</label\r\n >\r\n </div>\r\n </div>\r\n <!-- Multiple -->\r\n <div *ngIf=\"!treeview && multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <!-- <input\r\n class=\"multiple-checkBox\"\r\n type=\"checkbox\"\r\n [checked]=\"multipleSelection.includes(item.value)\"\r\n (change)=\"selectMultiple($event.target.checked, item)\"\r\n />\r\n\r\n <label class=\"form-check-label\">{{ item.text }}</label> -->\r\n <div class=\"multiple-treeview\">\r\n <mat-checkbox\r\n [checked]=\"isItemSelected(item)\"\r\n (change)=\"selectMultiple($event.checked, item)\"\r\n >\r\n <span> {{ item.text }} </span>\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- treeView -->\r\n <div *ngIf=\"treeview && !treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n (mouseenter)=\"hoverField.style.display = 'flex'\"\r\n (mouseleave)=\"hoverField.style.display = 'none'\"\r\n class=\"text-nowrap row-item treeview-row\"\r\n [ngClass]=\"{\r\n selected: item.value == selectedItem,\r\n treeParentNode: item.value === fixedParentNode?.value\r\n }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\">\r\n <ng-conteiner *ngIf=\"item.value != fixedParentNode?.value\">{{\r\n item.text\r\n }}</ng-conteiner>\r\n <ng-conteiner *ngIf=\"item.value === fixedParentNode?.value\">{{\r\n item.text | translate\r\n }}</ng-conteiner>\r\n <span #hoverField class=\"hoverField\">\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{ 'department_management.form.edit' | translate }}\"\r\n (click)=\"onAction($event, 'update', item)\"\r\n >\r\n <li class=\"bi bi-pencil\"></li>\r\n </span>\r\n\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{\r\n 'department_management.form.toolTip_message' | translate\r\n }}\"\r\n (click)=\"onAction($event, 'add', item)\"\r\n >\r\n <li class=\"bi bi-plus\"></li>\r\n </span>\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n <!-- treeView as form control -->\r\n <div *ngIf=\"treeview && treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n class=\"text-nowrap row-item treeview-row-form-control\"\r\n [ngClass]=\"{ 'selected-form-control': item.value == selectedItem }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\"\r\n >{{ item.text }}\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #headerTemplate\r\n let-config=\"config\"\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n let-onFilterTextChange=\"onFilterTextChange\"\r\n>\r\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\r\n <div class=\"col-12\">\r\n <input\r\n class=\"form-control\"\r\n type=\"text\"\r\n [placeholder]=\"i18n.getFilterPlaceholder(placeholder)\"\r\n [(ngModel)]=\"filterText\"\r\n (ngModelChange)=\"onFilterTextChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row\">\r\n <div class=\"col-12\">\r\n <label *ngIf=\"config.hasAllCheckBox\" (click)=\"select(item)\">\r\n <strong>{{ i18n.getAllCheckboxText() }}</strong>\r\n </label>\r\n <label\r\n *ngIf=\"config.hasCollapseExpand\"\r\n class=\"float-right\"\r\n (click)=\"onCollapseExpand()\"\r\n >\r\n <i\r\n [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span *ngSwitchCase=\"true\" class=\"bi bi-arrows-angle-expand\"></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-arrows-angle-contract\"\r\n ></span>\r\n </i>\r\n </label>\r\n </div>\r\n </div>\r\n <a *ngIf=\"defaultSelect\" class=\"select-default\" (click)=\"selectDefault()\">{{\r\n \"department_management.selectDefault\" | translate\r\n }}</a>\r\n <div\r\n *ngIf=\"config.hasDivider\"\r\n class=\"dropdown-divider\"\r\n [ngClass]=\"{ 'dropdown-divider-noMargin': defaultSelect }\"\r\n ></div>\r\n</ng-template>\r\n\r\n<ng-container *ngIf=\"!treeview && !multiple\">\r\n <div class=\"dropdown-wrapper\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview>\r\n <div class=\"disable-effect\" *ngIf=\"disabled\"></div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!treeview && multiple\">\r\n <div class=\"multiple-tree-view dropdown-wrapper\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview>\r\n <div class=\"disable-effect\" *ngIf=\"disabled\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"treeview && !treeViewAsFormControl\">\r\n <div class=\"tree-view\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"treeview && treeViewAsFormControl\">\r\n <div class=\"tree-view-form-control\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.caret-icon{color:#6c757d;font-size:14px}.dropdown-wrapper{position:relative}.dropdown-wrapper .disable-effect{position:absolute;top:0;bottom:0;left:0;right:0;z-index:99}.multiple-treeview .mat-checkbox-ripple .mat-ripple-element,.multiple-treeview .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.multiple-treeview .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.multiple-treeview mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.form-check-label-treeview{display:flex;align-items:center;justify-content:space-between;width:100%}.form-check-label-treeview .hoverField{display:none;align-items:center;text-align:center}.form-check-label-treeview .hoverField span{display:flex;align-items:center;justify-content:center;margin:0 3px;border:none;background-color:snow;background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:30px;width:30px;color:#fff;border-radius:5px;list-style:none;margin-inline-end:4px}.form-check-label-treeview .hoverField span .bi-plus{font-size:28px;display:flex;justify-content:center}.form-check-label-treeview .hoverField .add-btn{width:164px;padding:1px;display:flex;justify-content:center;align-items:center;font-size:13px;background-color:#0dbab5;border-radius:5px;border:0;color:#fff;--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.form-check-label-treeview .hoverField .plus-btn{display:flex;font-size:28px;align-items:center}.selected{background-color:#f5f6f8}.selected .hoverField{display:flex!important}.selected-form-control{background-color:#d9dce2}.selected-form-control .hoverField{display:flex!important}.treeview-item .row-item{display:flex;align-items:center;padding:5px 10px}.treeview-item .row-item .multiple-checkBox{margin-inline-start:4px;margin-inline-end:4px}.treeview-item .active{background-color:#f5f6f8}.treeview-row{display:flex;align-items:center}.treeview-row:hover{background-color:#f5f6f8}.treeview-row-form-control{display:flex;align-items:center}.treeview-row-form-control:hover{background-color:#d9dce2}label{margin-bottom:0;cursor:pointer}.bi{cursor:pointer;margin-right:.3rem}ngx-treeview .treeview-container{max-height:200px!important;overflow-x:hidden;scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-y:auto}ngx-treeview .select-default{display:flex;justify-content:start;font-size:13px;cursor:pointer;margin-bottom:3px;margin-top:4px}ngx-treeview .dropdown-divider-noMargin{margin-top:0!important}.tree-view ngx-treeview .treeview-container{max-height:500px!important;overflow-x:hidden}.tree-view-form-control ngx-treeview .treeview-container{max-height:300px!important;overflow-x:hidden}ngx-dropdown-treeview .dropdown .dropdown-menu{margin-top:0!important;width:100%}ngx-dropdown-treeview .dropdown .btn-outline-secondary{background-color:#8f98aa1a;border:none!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:hover{color:#6c757d!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:focus{box-shadow:none!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:active{background-color:#8f98aa1a!important;border:none!important;color:#6c757d!important}ngx-dropdown-treeview .dropdown:after{position:static!important}ngx-dropdown-treeview .show .dropdown-toggle{background-color:#8f98aa1a!important;border:none!important;color:#6c757d!important}.rtl .treeview-item .treeview-item{margin-right:2rem!important;margin-left:0!important}.rtl .row-all .col-12{text-align:right}.rtl .row-all .col-12 .pull-right{float:left!important}.rtl .form-check.form-check-inline{margin-right:0!important}.rtl .btn.dropdown-toggle{margin-right:0!important}.rtl .dropdown-menu:not(ngb-datepicker){right:0px;left:unset}.rtl .dropdown :after{margin-top:.6rem;left:.6rem;right:unset!important}.rtl ngx-treeview-item{text-align:right;direction:rtl}@media (min-width: 576px){.rtl .form-inline .form-check-input{margin:3px}}.rtl .form-inline .form-check-input{margin:3px;position:inherit}.rtl .dropdown button{text-align:right!important;direction:rtl}.rtl .fa.fa-caret-right{transform:rotate(180deg)}\n"], components: [{ type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i1.DropdownTreeviewComponent, selector: "ngx-dropdown-treeview", inputs: ["buttonClass", "config", "headerTemplate", "itemTemplate", "items"], outputs: ["selectedChange", "filterChange"] }, { type: i1.TreeviewComponent, selector: "ngx-treeview", inputs: ["config", "headerTemplate", "itemTemplate", "items"], outputs: ["selectedChange", "filterChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
290
+ TreeviewSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TreeviewSelectComponent, selector: "app-dynamic-form-treeview-select", inputs: { treeview: "treeview", treeViewAsFormControl: "treeViewAsFormControl", config: "config", items: "items", value: "value", multiple: "multiple", defaultSelect: "defaultSelect", pp_departmentNestedTree: "pp_departmentNestedTree", useCustomAddEditAction: "useCustomAddEditAction", customPrefix: "customPrefix", customParentProperty: "customParentProperty", placeholder: "placeholder", defaultSelection: "defaultSelection", displayDepTypee: "displayDepTypee", disabled: "disabled", selectDepChildren: "selectDepChildren", displayIsAllowRecExternal: "displayIsAllowRecExternal", fixedParentNode: "fixedParentNode" }, outputs: { valueChange: "valueChange", plusClicked: "plusClicked", actionClicked: "actionClicked" }, providers: [{ provide: TreeviewI18n, useClass: DropdownTreeviewSelectI18n }], viewQueries: [{ propertyName: "dropdownTreeviewComponent", first: true, predicate: DropdownTreeviewComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template\r\n #itemTemplate\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n>\r\n <!-- single -->\r\n <div *ngIf=\"!treeview && !multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <!-- <label class=\"form-check-label\" (click)=\"select(item)\">{{\r\n item.text\r\n }}</label> -->\r\n <label *ngIf=\"item.disabled\" class=\"form-check-label\">{{\r\n item.text\r\n }}</label>\r\n <label\r\n *ngIf=\"!item.disabled\"\r\n class=\"form-check-label\"\r\n (click)=\"select(item)\"\r\n >{{ item.text }}</label\r\n >\r\n </div>\r\n </div>\r\n <!-- Multiple -->\r\n <div *ngIf=\"!treeview && multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <!-- <input\r\n class=\"multiple-checkBox\"\r\n type=\"checkbox\"\r\n [checked]=\"multipleSelection.includes(item.value)\"\r\n (change)=\"selectMultiple($event.target.checked, item)\"\r\n />\r\n\r\n <label class=\"form-check-label\">{{ item.text }}</label> -->\r\n <div class=\"multiple-treeview\">\r\n <mat-checkbox\r\n [checked]=\"isItemSelected(item)\"\r\n (change)=\"selectMultiple($event.checked, item)\"\r\n >\r\n <span> {{ item.text }} </span>\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- treeView -->\r\n <div *ngIf=\"treeview && !treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n (mouseenter)=\"hoverField.style.display = 'flex'\"\r\n (mouseleave)=\"hoverField.style.display = 'none'\"\r\n class=\"text-nowrap row-item treeview-row\"\r\n [ngClass]=\"{\r\n selected: item.value == selectedItem,\r\n treeParentNode: item.value === fixedParentNode?.value\r\n }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\">\r\n <ng-conteiner *ngIf=\"item.value != fixedParentNode?.value\">{{\r\n item.text\r\n }}</ng-conteiner>\r\n <ng-conteiner *ngIf=\"item.value === fixedParentNode?.value\">{{\r\n item.text | translate\r\n }}</ng-conteiner>\r\n <span #hoverField class=\"hoverField\">\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{ 'department_management.form.edit' | translate }}\"\r\n (click)=\"onAction($event, 'update', item)\"\r\n >\r\n <li class=\"bi bi-pencil\"></li>\r\n </span>\r\n\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{\r\n 'department_management.form.toolTip_message' | translate\r\n }}\"\r\n (click)=\"onAction($event, 'add', item)\"\r\n >\r\n <li class=\"bi bi-plus\"></li>\r\n </span>\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n <!-- treeView as form control -->\r\n <div *ngIf=\"treeview && treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n class=\"text-nowrap row-item treeview-row-form-control\"\r\n [ngClass]=\"{ 'selected-form-control': item.value == selectedItem }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\"\r\n >{{ item.text }}\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #headerTemplate\r\n let-config=\"config\"\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n let-onFilterTextChange=\"onFilterTextChange\"\r\n>\r\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\r\n <div class=\"col-12\">\r\n <input\r\n class=\"form-control\"\r\n type=\"text\"\r\n [placeholder]=\"i18n.getFilterPlaceholder(placeholder)\"\r\n [(ngModel)]=\"filterText\"\r\n (ngModelChange)=\"onFilterTextChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row\">\r\n <div class=\"col-12\">\r\n <label *ngIf=\"config.hasAllCheckBox\" (click)=\"select(item)\">\r\n <strong>{{ i18n.getAllCheckboxText() }}</strong>\r\n </label>\r\n <label\r\n *ngIf=\"config.hasCollapseExpand\"\r\n class=\"float-right\"\r\n (click)=\"onCollapseExpand()\"\r\n >\r\n <i\r\n [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span *ngSwitchCase=\"true\" class=\"bi bi-arrows-angle-expand\"></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-arrows-angle-contract\"\r\n ></span>\r\n </i>\r\n </label>\r\n </div>\r\n </div>\r\n <a *ngIf=\"defaultSelect\" class=\"select-default\" (click)=\"selectDefault()\">{{\r\n \"department_management.selectDefault\" | translate\r\n }}</a>\r\n <div\r\n *ngIf=\"config.hasDivider\"\r\n class=\"dropdown-divider\"\r\n [ngClass]=\"{ 'dropdown-divider-noMargin': defaultSelect }\"\r\n ></div>\r\n</ng-template>\r\n\r\n<ng-container *ngIf=\"!treeview && !multiple\">\r\n <div class=\"dropdown-wrapper\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview>\r\n <div class=\"disable-effect\" *ngIf=\"disabled\"></div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!treeview && multiple\">\r\n <div class=\"multiple-tree-view dropdown-wrapper\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview>\r\n <div class=\"disable-effect\" *ngIf=\"disabled\"></div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"treeview && !treeViewAsFormControl\">\r\n <div class=\"tree-view\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"treeview && treeViewAsFormControl\">\r\n <div class=\"tree-view-form-control\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.caret-icon{color:#6c757d;font-size:14px}.dropdown-wrapper{position:relative}.dropdown-wrapper .disable-effect{position:absolute;top:0;bottom:0;left:0;right:0;z-index:99}.multiple-treeview .mat-checkbox-ripple .mat-ripple-element,.multiple-treeview .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.multiple-treeview .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.multiple-treeview mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.form-check-label-treeview{display:flex;align-items:center;justify-content:space-between;width:100%}.form-check-label-treeview .hoverField{display:none;align-items:center;text-align:center}.form-check-label-treeview .hoverField span{display:flex;align-items:center;justify-content:center;margin:0 3px;border:none;background-color:snow;background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:30px;width:30px;color:#fff;border-radius:5px;list-style:none;margin-inline-end:4px}.form-check-label-treeview .hoverField span .bi-plus{font-size:28px;display:flex;justify-content:center}.form-check-label-treeview .hoverField .add-btn{width:164px;padding:1px;display:flex;justify-content:center;align-items:center;font-size:13px;background-color:#0dbab5;border-radius:5px;border:0;color:#fff;--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.form-check-label-treeview .hoverField .plus-btn{display:flex;font-size:28px;align-items:center}.selected{background-color:#f5f6f8}.selected .hoverField{display:flex!important}.selected-form-control{background-color:#d9dce2}.selected-form-control .hoverField{display:flex!important}.treeview-item .row-item{display:flex;align-items:center;padding:5px 10px}.treeview-item .row-item .multiple-checkBox{margin-inline-start:4px;margin-inline-end:4px}.treeview-item .active{background-color:#f5f6f8}.treeview-row{display:flex;align-items:center}.treeview-row:hover{background-color:#f5f6f8}.treeview-row-form-control{display:flex;align-items:center}.treeview-row-form-control:hover{background-color:#d9dce2}label{margin-bottom:0;cursor:pointer}.bi{cursor:pointer;margin-right:.3rem}ngx-treeview .treeview-container{max-height:200px!important;overflow-x:hidden;scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-y:auto}ngx-treeview .select-default{display:flex;justify-content:start;font-size:13px;cursor:pointer;margin-bottom:3px;margin-top:4px}ngx-treeview .dropdown-divider-noMargin{margin-top:0!important}.tree-view ngx-treeview .treeview-container{max-height:500px!important;overflow-x:hidden}.tree-view-form-control ngx-treeview .treeview-container{max-height:300px!important;overflow-x:hidden}ngx-dropdown-treeview .dropdown .dropdown-menu{margin-top:0!important;width:100%}ngx-dropdown-treeview .dropdown .btn-outline-secondary{background-color:#8f98aa1a;border:none!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:hover{color:#6c757d!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:focus{box-shadow:none!important}ngx-dropdown-treeview .dropdown .btn-outline-secondary:active{background-color:#8f98aa1a!important;border:none!important;color:#6c757d!important}ngx-dropdown-treeview .dropdown:after{position:static!important}ngx-dropdown-treeview .show .dropdown-toggle{background-color:#8f98aa1a!important;border:none!important;color:#6c757d!important}.rtl .treeview-item .treeview-item{margin-right:2rem!important;margin-left:0!important}.rtl .row-all .col-12{text-align:right}.rtl .row-all .col-12 .pull-right{float:left!important}.rtl .form-check.form-check-inline{margin-right:0!important}.rtl .btn.dropdown-toggle{margin-right:0!important}.rtl .dropdown-menu:not(ngb-datepicker){right:0px;left:unset}.rtl .dropdown :after{margin-top:.6rem;left:.6rem;right:unset!important}.rtl ngx-treeview-item{text-align:right;direction:rtl}@media (min-width: 576px){.rtl .form-inline .form-check-input{margin:3px}}.rtl .form-inline .form-check-input{margin:3px;position:inherit}.rtl .dropdown button{text-align:right!important;direction:rtl}.rtl .fa.fa-caret-right{transform:rotate(180deg)}\n"], components: [{ type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i1.DropdownTreeviewComponent, selector: "ngx-dropdown-treeview", inputs: ["buttonClass", "config", "headerTemplate", "itemTemplate", "items"], outputs: ["selectedChange", "filterChange"] }, { type: i1.TreeviewComponent, selector: "ngx-treeview", inputs: ["config", "headerTemplate", "itemTemplate", "items"], outputs: ["selectedChange", "filterChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
285
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TreeviewSelectComponent, decorators: [{
286
292
  type: Component,
287
293
  args: [{
@@ -325,6 +331,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
325
331
  type: Input
326
332
  }], disabled: [{
327
333
  type: Input
334
+ }], selectDepChildren: [{
335
+ type: Input
328
336
  }], displayIsAllowRecExternal: [{
329
337
  type: Input
330
338
  }], actionClicked: [{
@@ -335,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
335
343
  }], fixedParentNode: [{
336
344
  type: Input
337
345
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJlZXZpZXctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC9kcm9wZG93bi10cmVldmlldy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdHJlZXZpZXctc2VsZWN0L2R5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBRVQsaUJBQWlCLEdBR2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUNMLFlBQVksRUFFWixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJN0UsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUN0Qzs7Ozs7Ozs7Ozs7Ozs7O0dB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QU0sRUFBRSxLQUFLLEVBQUU7Z0JBTTlDLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBpc05pbCB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHtcclxuICBUcmVldmlld0kxOG4sXHJcbiAgVHJlZXZpZXdJdGVtLFxyXG4gIFRyZWV2aWV3Q29uZmlnLFxyXG4gIERyb3Bkb3duVHJlZXZpZXdDb21wb25lbnQsXHJcbiAgVHJlZXZpZXdIZWxwZXIsXHJcbn0gZnJvbSBcIm5neC10cmVldmlld1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZXBhcnRtZW50TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtLWRlcGFydG1lbnQvc2VydmljZXMvZGVwYXJ0bWVudC1tYW5hZ2VtZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGVwYXJ0bWVudEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtLWRlcGFydG1lbnQvc2VydmljZXMvZGVwYXJ0bWVudC1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wZG93blRyZWV2aWV3U2VsZWN0STE4biB9IGZyb20gXCIuL2Ryb3Bkb3duLXRyZWV2aWV3LXNlbGVjdC1pMThuXCI7XHJcbmltcG9ydCB7IFJvbGVzU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3JvbGVzL3JvbGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxBZG1pblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1hZG1pbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCBfZmluZCBmcm9tICdsb2Rhc2gvZmluZCc7XHJcbmltcG9ydCBfaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XHJcbi8qKlxyXG4gKiBBIHRyZWUgdmlldyBzZWxlY3RvciBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBpbiByZWFjdGl2ZSBhbmQgdGVtcGxhdGUgZHJpdmVuIGZvcm1zLFxyXG4gKiBpdCBjYW4gYmUgYSBmbGF0IHRyZWUgb3IgYSBkcm9wZG93blxyXG4gKiBAdGl0bGVcclxuICogVHJlZSB2aWV3IHNlbGVjdG9yXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxhcHAtZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdFxyXG4gKiBbdHJlZXZpZXddPVwiZmFsc2VcIlxyXG4gKiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gKiBbaXRlbXNdPVwiaXRlbXNUcmVlXCJcclxuICogKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAqIFsodmFsdWUpXT1cInNlbGVjdGVkVmFsdWVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLWR5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3Q+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9keW5hbWljLWZvcm0tdHJlZXZpZXctc2VsZWN0LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUcmVldmlld0kxOG4sIHVzZUNsYXNzOiBEcm9wZG93blRyZWV2aWV3U2VsZWN0STE4biB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWV2aWV3U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgbXVsdGlwbGVTZWxlY3Rpb24gPSBbXTtcclxuICBzZWxlY3RlZEl0ZW07XHJcbiAgc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGQgPSBbXTtcclxuICBzaG93UGx1cyA9IGZhbHNlO1xyXG4gIHByZVNlbGVjdGVkID0gW107XHJcbiAgbXlEZXBhcnRtZW50OiBhbnk7XHJcbiAgLyoqIGlzIHRyZWUgVmlldyBvciBkcm9wZG93biB2aWV3ICovXHJcbiAgQElucHV0KClcclxuICB0cmVldmlldyA9IGZhbHNlO1xyXG4gIC8qKiB1c2UgdHJlZSB2aWV3IGluc2lkZSBmb3JtICovXHJcbiAgQElucHV0KClcclxuICB0cmVlVmlld0FzRm9ybUNvbnRyb2wgPSBmYWxzZTtcclxuICAvKiogQ29uZmlnIG9iamVjdCAqL1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogVHJlZXZpZXdDb25maWc7XHJcbiAgLyoqIEl0ZW1zIHRyZWUgKi9cclxuICBASW5wdXQoKSBpdGVtczogVHJlZXZpZXdJdGVtW107XHJcbiAgLyoqIFNlbGVjdGVkIHZhbHVlICovXHJcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcclxuICAvKiogY2FuIHNlbGVjdCBtdWx0aXBsZSAqL1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIGV2ZW50IGVtaXR0ZWQgb24gdmFsdWUgY2hhbmdlICovXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLyoqIGV2ZW50IGVtaXR0ZWQgb24gcGx1cyBidXR0b24gY2xpY2tlZCAoZm9yIGRlcGFydG1lbnQgbWFuYWdlbWVudCkgKi9cclxuICBAT3V0cHV0KCkgcGx1c0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvKiogZXZlbnQgZW1pdHRlZCBvbiBwbHVzIGJ1dHRvbiBjbGlja2VkIChmb3IgZGVwYXJ0bWVudCBtYW5hZ2VtZW50KSAqL1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTZWxlY3QgPSBmYWxzZTtcclxuICAvKiogY3VzdG9tIHBhZ2UgcHJvdmlkZXIgdG8gZ2V0IGRlcGFydG1lbnQgbmVzdGVkIHRyZWUgZnJvbSBpdCBjYW4gYmUgcGFzc2VkIGZyb20gb3V0c2lkZSBvciBub3QgcGFzc2VkIGFuZCB1c2UgdGhlIGRlZnVsdGUgdmFsdWUgKi9cclxuICBASW5wdXQoKSBwcF9kZXBhcnRtZW50TmVzdGVkVHJlZTtcclxuICAvKiogdXNlIG91dHNpZGUgY3VzdG9tIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGluZXIgZnVuY3Rpb24gICovXHJcbiAgQElucHV0KCkgdXNlQ3VzdG9tQWRkRWRpdEFjdGlvbiA9IGZhbHNlO1xyXG4gIC8qKiBjdXN0b20gcHJlZml4IHRvIGJlIHVzZWQgZm9yIGFkYXB0aW5nIGRhdGEgY29taW5nIGZyb20gYXBpICovXHJcbiAgQElucHV0KCkgY3VzdG9tUHJlZml4O1xyXG4gIC8qKiBjdXN0b20gcGFyZW50IHByb3BlcnR5IG5hbWUgdG8gYmUgcGFzc2VkIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50ICovXHJcbiAgQElucHV0KCkgY3VzdG9tUGFyZW50UHJvcGVydHk7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI7XHJcbiAgQElucHV0KCkgZGVmYXVsdFNlbGVjdGlvbjogc3RyaW5nO1xyXG4gIC8qKiBkaXNwbGF5IGlucHV0IERlcFR5cGVlIGluIGFkZCBkaWFsb2cgb2YgZGVwYXJ0ZW1lbnQgKi9cclxuICBASW5wdXQoKSBkaXNwbGF5RGVwVHlwZWU7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheUlzQWxsb3dSZWNFeHRlcm5hbDtcclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25UcmVldmlld0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZHJvcGRvd25UcmVldmlld0NvbXBvbmVudDogRHJvcGRvd25UcmVldmlld0NvbXBvbmVudDtcclxuICBmaWx0ZXJUZXh0OiBzdHJpbmc7XHJcbiAgYXJhYmljID0gZmFsc2U7XHJcbiAgbGFuZ3VhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBvbkRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBmaXhlZFBhcmVudE5vZGU6IHsgdGV4dDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH07XHJcbiAgcHJpdmF0ZSBkcm9wZG93blRyZWV2aWV3U2VsZWN0STE4bjogRHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG47XHJcblxyXG4gIC8vIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgaW4gdHdvIHBsYWNlcyB0aGUgZmxhZyBpcyB0aGlzLnRyZWV2aWV3XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGkxOG46IFRyZWV2aWV3STE4bixcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVwYXJ0bWVudEFwaVNlcnZpY2U6IERlcGFydG1lbnRBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXBhcnRtZW50TWFuYWdtZW50OiBEZXBhcnRtZW50TWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvbGVzU2VydmljZTogUm9sZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsQWRtaW46IEdsb2JhbEFkbWluU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jb25maWcgPSBUcmVldmlld0NvbmZpZy5jcmVhdGUoe1xyXG4gICAgICBoYXNBbGxDaGVja0JveDogZmFsc2UsXHJcbiAgICAgIGhhc0NvbGxhcHNlRXhwYW5kOiBmYWxzZSxcclxuICAgICAgaGFzRmlsdGVyOiB0cnVlLFxyXG4gICAgICBtYXhIZWlnaHQ6IDIwMCxcclxuICAgICAgZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4gPSBpMThuIGFzIERyb3Bkb3duVHJlZXZpZXdTZWxlY3RJMThuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdTZWxlY3RJMThuLnNldERlZmF1bHRTZWxlY3Rpb24odGhpcy5kZWZhdWx0U2VsZWN0aW9uKTtcclxuICAgIHRoaXMudHJhbnNsYXRpb24uaXNBcmFiaWNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYXJhYmljID0gcmVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMudHJlZXZpZXcpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy50cmVldmlldyAmJiAhdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAvLyB0aGlzLiBmdW5jdGlvbiBpcyB0byBzZXQgdWkgd2l0aCBwcmUgc2VsZWN0ZWQgdmFsdWVcclxuICAgICAgLy8gZGVsYXkgdG8gbWFrZSBzdXJlIHRoYXQgcGFnZSBnZXQgdGhlIHZhbHVlIGFuZCBzZW5kIGl0IHRvIGhlcmVcclxuICAgICAgLy8gd2UgdXNlIHRoZSB2YWx1ZSBzZW50IHRvIGhlcmUgYW5kIHNlYXJjaCBmb3IgaXRzIGl0ZW0gb24gb3VyIGl0ZW1zIGFuZCBzZXQgaXQgYXMgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnNldFByZVNlbGV0ZWRJdGVtKGl0ZW0sIHRoaXMudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMudHJlZXZpZXcgJiZcclxuICAgICAgdGhpcy5tdWx0aXBsZSAmJlxyXG4gICAgICB0aGlzLnZhbHVlICYmXHJcbiAgICAgIHRoaXMudmFsdWUubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIC8vIHRoaXMucHJlU2VsZWN0ZWQgPSB0aGlzLnZhbHVlO1xyXG4gICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdGhpcy52YWx1ZTtcclxuICAgICAgdGhpcy5kcm9wZG93blRyZWV2aWV3U2VsZWN0STE4bi5zZWxlY3Rpb25MZW5ndGggPVxyXG4gICAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubGVuZ3RoO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdDb21wb25lbnQub25TZWxlY3RlZENoYW5nZShbXHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5sZW5ndGgsXHJcbiAgICAgIF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UHJlU2VsZXRlZEl0ZW0oaXRlbSwgY29tcGFyZVdpdGhWYWx1ZSkge1xyXG4gICAgaWYgKChpdGVtLnZhbHVlID09PSBjb21wYXJlV2l0aFZhbHVlKSB8fCAoaXRlbS52YWx1ZS50aXRsZSA9PT0gY29tcGFyZVdpdGhWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QoaXRlbSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpdGVtLmludGVybmFsQ2hpbGRyZW4pIHtcclxuICAgICAgICBpdGVtLmludGVybmFsQ2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRQcmVTZWxldGVkSXRlbShjaGlsZCwgY29tcGFyZVdpdGhWYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdERlZmF1bHQoKSB7XHJcbiAgICBsZXQgb3B0aW9uID0ge1xyXG4gICAgICAnaXNHbG9iYWxBZG1pbic6IHRoaXMuZ2xvYmFsQWRtaW4uaXNHbG9iYWxBZG1pbixcclxuICAgICAgJ2FjdGl2ZVRlbmFudCc6IHRoaXMuZ2xvYmFsQWRtaW4uYWN0aXZlVGVuYW50LFxyXG4gICAgICAndGVuYW50SWQnOiB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWRcclxuICAgIH07XHJcbiAgICB0aGlzLm15RGVwYXJ0bWVudCA9IHRoaXMucm9sZXNTZXJ2aWNlLmdldFVzZXJEZXBhcnRtZW50KFxyXG4gICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLFxyXG4gICAgICAnY3RzX3JvbGVfJyxcclxuICAgICAgb3B0aW9uXHJcbiAgICApO1xyXG4gICAgdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgdGhpcy5zZXRQcmVTZWxldGVkSXRlbShpdGVtLCB0aGlzLm15RGVwYXJ0bWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2VsZWN0KGl0ZW06IFRyZWV2aWV3SXRlbSk6IHZvaWQge1xyXG4gICAgLy8gaWYgKCFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkSXRlbSgpOiB2b2lkIHtcclxuICAgIGlmICghaXNOaWwodGhpcy5pdGVtcykpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gVHJlZXZpZXdIZWxwZXIuZmluZEl0ZW1Jbkxpc3QoXHJcbiAgICAgICAgdGhpcy5pdGVtcyxcclxuICAgICAgICB0aGlzLnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RJdGVtKGl0ZW06IFRyZWV2aWV3SXRlbSk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGljaygpO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4uc2VsZWN0ZWRJdGVtICE9PSBpdGVtKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4uc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgaWYgKHRoaXMuZHJvcGRvd25UcmVldmlld0NvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25UcmVldmlld0NvbXBvbmVudC5vblNlbGVjdGVkQ2hhbmdlKFtpdGVtXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZXZpZXcpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbS52YWx1ZTtcclxuICAgICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChpdGVtLnZhbHVlLnRpdGxlKTtcclxuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGl0ZW0udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RNdWx0aXBsZShlLCBpdGVtOiBUcmVldmlld0l0ZW0pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGQgPSBbXTtcclxuICAgIHRoaXMuZ2V0Q2hpbGRlcm5WYWx1ZXMoaXRlbSk7XHJcbiAgICBpZiAoZSkge1xyXG4gICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5jb25jYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudFdpdGhDaGlsZFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tdWx0aXBsZVNlbGVjdGlvbiA9IHRoaXMubXVsdGlwbGVTZWxlY3Rpb24uZmlsdGVyKChlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGQuaW5kZXhPZihlKSA8IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4uc2VsZWN0aW9uTGVuZ3RoID1cclxuICAgICAgdGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5sZW5ndGg7XHJcbiAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdDb21wb25lbnQub25TZWxlY3RlZENoYW5nZShbXHJcbiAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubGVuZ3RoLFxyXG4gICAgXSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tdWx0aXBsZVNlbGVjdGlvbik7XHJcbiAgfVxyXG4gIGdldENoaWxkZXJuVmFsdWVzKGl0ZW06IFRyZWV2aWV3SXRlbSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmVudFdpdGhDaGlsZC5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGlsZGVyblZhbHVlcyhpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgb25QbHVzQ2xpY2tlZChlOiBNb3VzZUV2ZW50LCBpdGVtOiBUcmVldmlld0l0ZW0pOiB2b2lkIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICB0aGlzLnBsdXNDbGlja2VkLmVtaXQoaXRlbS52YWx1ZS51aWQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBlICBjbGljayBldmVudFxyXG4gICAqIEBwYXJhbSBhY3Rpb24gbmFtZSBvZiBhY3Rpb24gKGFkZCAsIHVwZGF0ZSlcclxuICAgKiBAcGFyYW0gaXRlbSBUcmVldmlld0l0ZW1cclxuICAgKi9cclxuICBvbkFjdGlvbihlOiBNb3VzZUV2ZW50LCBhY3Rpb246IHN0cmluZywgaXRlbTogVHJlZXZpZXdJdGVtKSB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGl0ZW0pIHtcclxuICAgICAgaWYgKGFjdGlvbiA9PT0gXCJhZGRcIikge1xyXG4gICAgICAgIC8vIGVtaXQgYWN0aW9uIHRvIG91dHNpZGUgdG8gZXhlY3V0ZSBmdW5jdGlvbiBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudCBcclxuICAgICAgICBpZiAodGhpcy51c2VDdXN0b21BZGRFZGl0QWN0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICBpdGVtOiBpdGVtXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kZXBhcnRtZW50TWFuYWdtZW50XHJcbiAgICAgICAgICAgIC5vcGVuRm9ybURpYWxvZyhpdGVtLnZhbHVlLnVpZCwgZmFsc2UsIHRoaXMuZGlzcGxheUlzQWxsb3dSZWNFeHRlcm5hbCwgdGhpcy5kaXNwbGF5RGVwVHlwZWUsIGl0ZW0udmFsdWUudGl0bGUsIGl0ZW0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChhY3Rpb24gPT09IFwidXBkYXRlXCIpIHtcclxuICAgICAgICBpZiAodGhpcy51c2VDdXN0b21BZGRFZGl0QWN0aW9uKSB7XHJcbiAgICAgICAgICAvLyBlbWl0IGFjdGlvbiB0byBvdXRzaWRlIHRvIGV4ZWN1dGUgZnVuY3Rpb24gZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQgXHJcbiAgICAgICAgICB0aGlzLmFjdGlvbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICBpdGVtOiBpdGVtXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kZXBhcnRtZW50TWFuYWdtZW50XHJcbiAgICAgICAgICAgIC5vcGVuRm9ybURpYWxvZyhpdGVtLnZhbHVlLnVpZCwgdHJ1ZSwgdGhpcy5kaXNwbGF5SXNBbGxvd1JlY0V4dGVybmFsLCB0aGlzLmRpc3BsYXlEZXBUeXBlZSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy51cGRhdGUoaXRlbSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZXBhcnRtZW50QXBpU2VydmljZS5nZXREZXBhcnRtZW50VHJlZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5kZXBhcnRtZW50QXBpU2VydmljZS5yZWN1cnNpdmVGaWxsKFxyXG4gICAgICAgICAgICAgICAgICByZXMuZW50cmllcyxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21QcmVmaXgpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqZHVlIHRvIHRoZSBidXNpbmVzcyByZXF1aXJlbWVudHMgd2hpY2ggc3RhdGVkIHRoYXQgbW9yZSB0aGFuIDMgbGV2ZWxzIHdpbGwgZXhpc3RlZCB0aGUgY3VycmVudCBhcGkgc3VwcG9ydCBvbmx5IDMgbGV2ZWxzIHNvICp3ZSBoYXZlIHRvIGluamVjdCAzIG5ldyBsZXZlbHMgb24gZWFjaCB0cmVlIGVuZFxyXG4gICAqIEBwYXJhbSBpdGVtIFRyZWV2aWV3SXRlbVxyXG4gICAqL1xyXG4gIG9uQ29sbGFwc2VkKGl0ZW06IFRyZWV2aWV3SXRlbSkge1xyXG4gICAgaXRlbS5jb2xsYXBzZWQgPSAhaXRlbS5jb2xsYXBzZWQ7XHJcbiAgICBpZiAoaXRlbS52YWx1ZS5sZXZlbCA9PT0gMikge1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlXHJcbiAgICAgICAgLmdldERlcGFydG1lbnROZXN0ZWRUcmVlKFxyXG4gICAgICAgICAgaXRlbS52YWx1ZS50aXRsZSxcclxuICAgICAgICAgIHRoaXMucHBfZGVwYXJ0bWVudE5lc3RlZFRyZWUgPyB0aGlzLnBwX2RlcGFydG1lbnROZXN0ZWRUcmVlIDogJ1BQX0RlcGFydG1lbnQnLFxyXG4gICAgICAgICAgdGhpcy5jdXN0b21QYXJlbnRQcm9wZXJ0eSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5kZXBhcnRtZW50QXBpU2VydmljZS5yZWN1cnNpdmVGaWxsKFxyXG4gICAgICAgICAgICAgIHJlcy5lbnRyaWVzLFxyXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHRoaXMuY3VzdG9tUHJlZml4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4geyB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICpkdWUgdG8gdGhlIGJ1c2luZXNzIHJlcXVpcmVtZW50cyB3aGljaCBzdGF0ZWQgdGhhdCBtb3JlIHRoYW4gMyBsZXZlbHMgd2lsbCBleGlzdGVkIHRoZSBjdXJyZW50IGFwaSBzdXBwb3J0IG9ubHkgMyBsZXZlbHMgc28gKndlIGhhdmUgdG8gaW5qZWN0IDMgbmV3IGxldmVscyBvbiBlYWNoIHRyZWUgZW5kXHJcbiAgICogQHBhcmFtIGl0ZW0gVHJlZXZpZXdJdGVtXHJcbiAgICovXHJcbiAgdXBkYXRlKGl0ZW0pIHtcclxuICAgIHRoaXMuZGVwYXJ0bWVudEFwaVNlcnZpY2VcclxuICAgICAgLmdldERlcGFydG1lbnROZXN0ZWRUcmVlKFxyXG4gICAgICAgIGl0ZW0udmFsdWUudGl0bGUsXHJcbiAgICAgICAgdGhpcy5wcF9kZXBhcnRtZW50TmVzdGVkVHJlZSA/IHRoaXMucHBfZGVwYXJ0bWVudE5lc3RlZFRyZWUgOiAnUFBfRGVwYXJ0bWVudCcsXHJcbiAgICAgICAgdGhpcy5jdXN0b21QYXJlbnRQcm9wZXJ0eSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuZGVwYXJ0bWVudEFwaVNlcnZpY2UucmVjdXJzaXZlRmlsbChcclxuICAgICAgICAgICAgZGF0YS5lbnRyaWVzLFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbVByZWZpeFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNJdGVtU2VsZWN0ZWQoaXRlbSkge1xyXG4gICAgcmV0dXJuIF9maW5kKHRoaXMubXVsdGlwbGVTZWxlY3Rpb24sIChxKSA9PiBfaXNFcXVhbChxLCBpdGVtLnZhbHVlKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZVxyXG4gICNpdGVtVGVtcGxhdGVcclxuICBsZXQtaXRlbT1cIml0ZW1cIlxyXG4gIGxldC1vbkNvbGxhcHNlRXhwYW5kPVwib25Db2xsYXBzZUV4cGFuZFwiXHJcbiAgbGV0LW9uQ2hlY2tlZENoYW5nZT1cIm9uQ2hlY2tlZENoYW5nZVwiXHJcbj5cclxuICA8IS0tIHNpbmdsZSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiIXRyZWV2aWV3ICYmICFtdWx0aXBsZVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInRleHQtbm93cmFwIHJvdy1pdGVtXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGl0ZW0udmFsdWUgPT09IHRoaXMudmFsdWUgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuXCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2xsYXBzZUV4cGFuZCgpXCJcclxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgIFtuZ1N3aXRjaF09XCJpdGVtLmNvbGxhcHNlZFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC17eyBhcmFiaWMgPyAnbGVmdCcgOiAncmlnaHQnIH19LWZpbGwgY2FyZXQtaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtZG93bi1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvaT5cclxuICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiPnt7XHJcbiAgICAgICAgaXRlbS50ZXh0XHJcbiAgICAgIH19PC9sYWJlbD4gLS0+XHJcbiAgICAgIDxsYWJlbCAqbmdJZj1cIml0ZW0uZGlzYWJsZWRcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj57e1xyXG4gICAgICAgIGl0ZW0udGV4dFxyXG4gICAgICB9fTwvbGFiZWw+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgICpuZ0lmPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiXHJcbiAgICAgICAgPnt7IGl0ZW0udGV4dCB9fTwvbGFiZWxcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBNdWx0aXBsZSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiIXRyZWV2aWV3ICYmIG11bHRpcGxlXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGV4dC1ub3dyYXAgcm93LWl0ZW1cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaXRlbS52YWx1ZSA9PT0gdGhpcy52YWx1ZSB9XCJcclxuICAgID5cclxuICAgICAgPGlcclxuICAgICAgICAqbmdJZj1cIml0ZW0uY2hpbGRyZW5cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNvbGxhcHNlRXhwYW5kKClcIlxyXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgW25nU3dpdGNoXT1cIml0ZW0uY29sbGFwc2VkXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJpIGJpLWNhcmV0LXt7IGFyYWJpYyA/ICdsZWZ0JyA6ICdyaWdodCcgfX0tZmlsbCBjYXJldC1pY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC1kb3duLWZpbGwgY2FyZXQtaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9pPlxyXG4gICAgICA8IS0tIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwibXVsdGlwbGUtY2hlY2tCb3hcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwibXVsdGlwbGVTZWxlY3Rpb24uaW5jbHVkZXMoaXRlbS52YWx1ZSlcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwic2VsZWN0TXVsdGlwbGUoJGV2ZW50LnRhcmdldC5jaGVja2VkLCBpdGVtKVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+e3sgaXRlbS50ZXh0IH19PC9sYWJlbD4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXBsZS10cmVldmlld1wiPlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgIFtjaGVja2VkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0TXVsdGlwbGUoJGV2ZW50LmNoZWNrZWQsIGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3Bhbj4ge3sgaXRlbS50ZXh0IH19IDwvc3Bhbj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIHRyZWVWaWV3IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJ0cmVldmlldyAmJiAhdHJlZVZpZXdBc0Zvcm1Db250cm9sXCIgY2xhc3M9XCJ0cmVlLXZpZXctY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyRmllbGQuc3R5bGUuZGlzcGxheSA9ICdmbGV4J1wiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyRmllbGQuc3R5bGUuZGlzcGxheSA9ICdub25lJ1wiXHJcbiAgICAgIGNsYXNzPVwidGV4dC1ub3dyYXAgcm93LWl0ZW0gdHJlZXZpZXctcm93XCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIHNlbGVjdGVkOiBpdGVtLnZhbHVlID09IHNlbGVjdGVkSXRlbSxcclxuICAgICAgICB0cmVlUGFyZW50Tm9kZTogaXRlbS52YWx1ZSA9PT0gZml4ZWRQYXJlbnROb2RlPy52YWx1ZVxyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGlcclxuICAgICAgICAqbmdJZj1cIml0ZW0uY2hpbGRyZW5cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNvbGxhcHNlZChpdGVtKVwiXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICBbbmdTd2l0Y2hdPVwiaXRlbS5jb2xsYXBzZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQte3sgYXJhYmljID8gJ2xlZnQnIDogJ3JpZ2h0JyB9fS1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC1kb3duLWZpbGwgY2FyZXQtaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9pPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsLXRyZWV2aWV3XCIgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiPlxyXG4gICAgICAgIDxuZy1jb250ZWluZXIgKm5nSWY9XCJpdGVtLnZhbHVlICE9IGZpeGVkUGFyZW50Tm9kZT8udmFsdWVcIj57e1xyXG4gICAgICAgICAgaXRlbS50ZXh0XHJcbiAgICAgICAgfX08L25nLWNvbnRlaW5lcj5cclxuICAgICAgICA8bmctY29udGVpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZSA9PT0gZml4ZWRQYXJlbnROb2RlPy52YWx1ZVwiPnt7XHJcbiAgICAgICAgICBpdGVtLnRleHQgfCB0cmFuc2xhdGVcclxuICAgICAgICB9fTwvbmctY29udGVpbmVyPlxyXG4gICAgICAgIDxzcGFuICNob3ZlckZpZWxkIGNsYXNzPVwiaG92ZXJGaWVsZFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnZGVwYXJ0bWVudF9tYW5hZ2VtZW50LmZvcm0uZWRpdCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAndXBkYXRlJywgaXRlbSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiaSBiaS1wZW5jaWxcIj48L2xpPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3tcclxuICAgICAgICAgICAgICAnZGVwYXJ0bWVudF9tYW5hZ2VtZW50LmZvcm0udG9vbFRpcF9tZXNzYWdlJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbigkZXZlbnQsICdhZGQnLCBpdGVtKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImJpIGJpLXBsdXNcIj48L2xpPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gdHJlZVZpZXcgYXMgZm9ybSBjb250cm9sIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJ0cmVldmlldyAmJiB0cmVlVmlld0FzRm9ybUNvbnRyb2xcIiBjbGFzcz1cInRyZWUtdmlldy1jb250YWluZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0ZXh0LW5vd3JhcCByb3ctaXRlbSB0cmVldmlldy1yb3ctZm9ybS1jb250cm9sXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtZm9ybS1jb250cm9sJzogaXRlbS52YWx1ZSA9PSBzZWxlY3RlZEl0ZW0gfVwiXHJcbiAgICA+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuXCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2xsYXBzZWQoaXRlbSlcIlxyXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgW25nU3dpdGNoXT1cIml0ZW0uY29sbGFwc2VkXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJpIGJpLWNhcmV0LXt7IGFyYWJpYyA/ICdsZWZ0JyA6ICdyaWdodCcgfX0tZmlsbCBjYXJldC1pY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtZG93bi1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvaT5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbC10cmVldmlld1wiIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIlxyXG4gICAgICAgID57eyBpdGVtLnRleHQgfX1cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGVcclxuICAjaGVhZGVyVGVtcGxhdGVcclxuICBsZXQtY29uZmlnPVwiY29uZmlnXCJcclxuICBsZXQtaXRlbT1cIml0ZW1cIlxyXG4gIGxldC1vbkNvbGxhcHNlRXhwYW5kPVwib25Db2xsYXBzZUV4cGFuZFwiXHJcbiAgbGV0LW9uQ2hlY2tlZENoYW5nZT1cIm9uQ2hlY2tlZENoYW5nZVwiXHJcbiAgbGV0LW9uRmlsdGVyVGV4dENoYW5nZT1cIm9uRmlsdGVyVGV4dENoYW5nZVwiXHJcbj5cclxuICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmhhc0ZpbHRlclwiIGNsYXNzPVwicm93IHJvdy1maWx0ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi5nZXRGaWx0ZXJQbGFjZWhvbGRlcihwbGFjZWhvbGRlcilcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJUZXh0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImNvbmZpZy5oYXNBbGxDaGVja0JveCB8fCBjb25maWcuaGFzQ29sbGFwc2VFeHBhbmRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICA8bGFiZWwgKm5nSWY9XCJjb25maWcuaGFzQWxsQ2hlY2tCb3hcIiAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCI+XHJcbiAgICAgICAgPHN0cm9uZz57eyBpMThuLmdldEFsbENoZWNrYm94VGV4dCgpIH19PC9zdHJvbmc+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgICpuZ0lmPVwiY29uZmlnLmhhc0NvbGxhcHNlRXhwYW5kXCJcclxuICAgICAgICBjbGFzcz1cImZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2xsYXBzZUV4cGFuZCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpXHJcbiAgICAgICAgICBbdGl0bGVdPVwiaTE4bi5nZXRUb29sdGlwQ29sbGFwc2VFeHBhbmRUZXh0KGl0ZW0uY29sbGFwc2VkKVwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cIml0ZW0uY29sbGFwc2VkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNsYXNzPVwiYmkgYmktYXJyb3dzLWFuZ2xlLWV4cGFuZFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktYXJyb3dzLWFuZ2xlLWNvbnRyYWN0XCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9pPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGEgKm5nSWY9XCJkZWZhdWx0U2VsZWN0XCIgY2xhc3M9XCJzZWxlY3QtZGVmYXVsdFwiIChjbGljayk9XCJzZWxlY3REZWZhdWx0KClcIj57e1xyXG4gICAgXCJkZXBhcnRtZW50X21hbmFnZW1lbnQuc2VsZWN0RGVmYXVsdFwiIHwgdHJhbnNsYXRlXHJcbiAgfX08L2E+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJjb25maWcuaGFzRGl2aWRlclwiXHJcbiAgICBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnZHJvcGRvd24tZGl2aWRlci1ub01hcmdpbic6IGRlZmF1bHRTZWxlY3QgfVwiXHJcbiAgPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cmVldmlldyAmJiAhbXVsdGlwbGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiPlxyXG4gICAgPG5neC1kcm9wZG93bi10cmVldmlld1xyXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgID5cclxuICAgIDwvbmd4LWRyb3Bkb3duLXRyZWV2aWV3PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpc2FibGUtZWZmZWN0XCIgKm5nSWY9XCJkaXNhYmxlZFwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cmVldmlldyAmJiBtdWx0aXBsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtdWx0aXBsZS10cmVlLXZpZXcgZHJvcGRvd24td3JhcHBlclwiPlxyXG4gICAgPG5neC1kcm9wZG93bi10cmVldmlld1xyXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgID5cclxuICAgIDwvbmd4LWRyb3Bkb3duLXRyZWV2aWV3PlxyXG4gICAgPGRpdiBjbGFzcz1cImRpc2FibGUtZWZmZWN0XCIgKm5nSWY9XCJkaXNhYmxlZFwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmVldmlldyAmJiAhdHJlZVZpZXdBc0Zvcm1Db250cm9sXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRyZWUtdmlld1wiPlxyXG4gICAgPG5neC10cmVldmlld1xyXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgID5cclxuICAgIDwvbmd4LXRyZWV2aWV3PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyZWV2aWV3ICYmIHRyZWVWaWV3QXNGb3JtQ29udHJvbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cmVlLXZpZXctZm9ybS1jb250cm9sXCI+XHJcbiAgICA8bmd4LXRyZWV2aWV3XHJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcclxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxyXG4gICAgPlxyXG4gICAgPC9uZ3gtdHJlZXZpZXc+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJlZXZpZXctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC9kcm9wZG93bi10cmVldmlldy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdHJlZXZpZXctc2VsZWN0L2R5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBRVQsaUJBQWlCLEdBR2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUNMLFlBQVksRUFFWixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJN0UsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUN0Qzs7Ozs7Ozs7Ozs7Ozs7O0dB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Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFFUCx5QkFBeUI7c0JBRHhCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU05QyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgaXNOaWwgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7XHJcbiAgVHJlZXZpZXdJMThuLFxyXG4gIFRyZWV2aWV3SXRlbSxcclxuICBUcmVldmlld0NvbmZpZyxcclxuICBEcm9wZG93blRyZWV2aWV3Q29tcG9uZW50LFxyXG4gIFRyZWV2aWV3SGVscGVyLFxyXG59IGZyb20gXCJuZ3gtdHJlZXZpZXdcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGVwYXJ0bWVudE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtbWFuYWdlbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlcGFydG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4gfSBmcm9tIFwiLi9kcm9wZG93bi10cmVldmlldy1zZWxlY3QtaTE4blwiO1xyXG5pbXBvcnQgeyBSb2xlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9yb2xlcy9yb2xlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsQWRtaW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9nbG9iYWwtYWRtaW4uc2VydmljZVwiO1xyXG5pbXBvcnQgX2ZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnO1xyXG5pbXBvcnQgX2lzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xyXG4vKipcclxuICogQSB0cmVlIHZpZXcgc2VsZWN0b3IgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgaW4gcmVhY3RpdmUgYW5kIHRlbXBsYXRlIGRyaXZlbiBmb3JtcyxcclxuICogaXQgY2FuIGJlIGEgZmxhdCB0cmVlIG9yIGEgZHJvcGRvd25cclxuICogQHRpdGxlXHJcbiAqIFRyZWUgdmlldyBzZWxlY3RvclxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8YXBwLWR5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3RcclxuICogW3RyZWV2aWV3XT1cImZhbHNlXCJcclxuICogW211bHRpcGxlXT1cImZhbHNlXCJcclxuICogW2l0ZW1zXT1cIml0ZW1zVHJlZVwiXHJcbiAqICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gKiBbKHZhbHVlKV09XCJzZWxlY3RlZFZhbHVlXCJcclxuICogPlxyXG4gKiA8L2FwcC1keW5hbWljLWZvcm0tdHJlZXZpZXctc2VsZWN0PlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWR5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3RcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3QuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVHJlZXZpZXdJMThuLCB1c2VDbGFzczogRHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4gfV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVldmlld1NlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIG11bHRpcGxlU2VsZWN0aW9uID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtO1xyXG4gIHNlbGVjdGVkUGFyZW50V2l0aENoaWxkID0gW107XHJcbiAgc2hvd1BsdXMgPSBmYWxzZTtcclxuICBwcmVTZWxlY3RlZCA9IFtdO1xyXG4gIG15RGVwYXJ0bWVudDogYW55O1xyXG4gIC8qKiBpcyB0cmVlIFZpZXcgb3IgZHJvcGRvd24gdmlldyAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgdHJlZXZpZXcgPSBmYWxzZTtcclxuICAvKiogdXNlIHRyZWUgdmlldyBpbnNpZGUgZm9ybSAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgdHJlZVZpZXdBc0Zvcm1Db250cm9sID0gZmFsc2U7XHJcbiAgLyoqIENvbmZpZyBvYmplY3QgKi9cclxuICBASW5wdXQoKSBjb25maWc6IFRyZWV2aWV3Q29uZmlnO1xyXG4gIC8qKiBJdGVtcyB0cmVlICovXHJcbiAgQElucHV0KCkgaXRlbXM6IFRyZWV2aWV3SXRlbVtdO1xyXG4gIC8qKiBTZWxlY3RlZCB2YWx1ZSAqL1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XHJcbiAgLyoqIGNhbiBzZWxlY3QgbXVsdGlwbGUgKi9cclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBldmVudCBlbWl0dGVkIG9uIHZhbHVlIGNoYW5nZSAqL1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8qKiBldmVudCBlbWl0dGVkIG9uIHBsdXMgYnV0dG9uIGNsaWNrZWQgKGZvciBkZXBhcnRtZW50IG1hbmFnZW1lbnQpICovXHJcbiAgQE91dHB1dCgpIHBsdXNDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLyoqIGV2ZW50IGVtaXR0ZWQgb24gcGx1cyBidXR0b24gY2xpY2tlZCAoZm9yIGRlcGFydG1lbnQgbWFuYWdlbWVudCkgKi9cclxuICBASW5wdXQoKSBkZWZhdWx0U2VsZWN0ID0gZmFsc2U7XHJcbiAgLyoqIGN1c3RvbSBwYWdlIHByb3ZpZGVyIHRvIGdldCBkZXBhcnRtZW50IG5lc3RlZCB0cmVlIGZyb20gaXQgY2FuIGJlIHBhc3NlZCBmcm9tIG91dHNpZGUgb3Igbm90IHBhc3NlZCBhbmQgdXNlIHRoZSBkZWZ1bHRlIHZhbHVlICovXHJcbiAgQElucHV0KCkgcHBfZGVwYXJ0bWVudE5lc3RlZFRyZWU7XHJcbiAgLyoqIHVzZSBvdXRzaWRlIGN1c3RvbSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBpbmVyIGZ1bmN0aW9uICAqL1xyXG4gIEBJbnB1dCgpIHVzZUN1c3RvbUFkZEVkaXRBY3Rpb24gPSBmYWxzZTtcclxuICAvKiogY3VzdG9tIHByZWZpeCB0byBiZSB1c2VkIGZvciBhZGFwdGluZyBkYXRhIGNvbWluZyBmcm9tIGFwaSAqL1xyXG4gIEBJbnB1dCgpIGN1c3RvbVByZWZpeDtcclxuICAvKiogY3VzdG9tIHBhcmVudCBwcm9wZXJ0eSBuYW1lIHRvIGJlIHBhc3NlZCBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudCAqL1xyXG4gIEBJbnB1dCgpIGN1c3RvbVBhcmVudFByb3BlcnR5O1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTZWxlY3Rpb246IHN0cmluZztcclxuICAvKiogZGlzcGxheSBpbnB1dCBEZXBUeXBlZSBpbiBhZGQgZGlhbG9nIG9mIGRlcGFydGVtZW50ICovXHJcbiAgQElucHV0KCkgZGlzcGxheURlcFR5cGVlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VsZWN0RGVwQ2hpbGRyZW49dHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheUlzQWxsb3dSZWNFeHRlcm5hbDtcclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25UcmVldmlld0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZHJvcGRvd25UcmVldmlld0NvbXBvbmVudDogRHJvcGRvd25UcmVldmlld0NvbXBvbmVudDtcclxuICBmaWx0ZXJUZXh0OiBzdHJpbmc7XHJcbiAgYXJhYmljID0gZmFsc2U7XHJcbiAgbGFuZ3VhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBvbkRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBmaXhlZFBhcmVudE5vZGU6IHsgdGV4dDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH07XHJcbiAgcHJpdmF0ZSBkcm9wZG93blRyZWV2aWV3U2VsZWN0STE4bjogRHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG47XHJcblxyXG4gIC8vIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgaW4gdHdvIHBsYWNlcyB0aGUgZmxhZyBpcyB0aGlzLnRyZWV2aWV3XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGkxOG46IFRyZWV2aWV3STE4bixcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVwYXJ0bWVudEFwaVNlcnZpY2U6IERlcGFydG1lbnRBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXBhcnRtZW50TWFuYWdtZW50OiBEZXBhcnRtZW50TWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvbGVzU2VydmljZTogUm9sZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsQWRtaW46IEdsb2JhbEFkbWluU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jb25maWcgPSBUcmVldmlld0NvbmZpZy5jcmVhdGUoe1xyXG4gICAgICBoYXNBbGxDaGVja0JveDogZmFsc2UsXHJcbiAgICAgIGhhc0NvbGxhcHNlRXhwYW5kOiBmYWxzZSxcclxuICAgICAgaGFzRmlsdGVyOiB0cnVlLFxyXG4gICAgICBtYXhIZWlnaHQ6IDIwMCxcclxuICAgICAgZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4gPSBpMThuIGFzIERyb3Bkb3duVHJlZXZpZXdTZWxlY3RJMThuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdTZWxlY3RJMThuLnNldERlZmF1bHRTZWxlY3Rpb24odGhpcy5kZWZhdWx0U2VsZWN0aW9uKTtcclxuICAgIHRoaXMudHJhbnNsYXRpb24uaXNBcmFiaWNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYXJhYmljID0gcmVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMudHJlZXZpZXcpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW0oKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy50cmVldmlldyAmJiAhdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAvLyB0aGlzLiBmdW5jdGlvbiBpcyB0byBzZXQgdWkgd2l0aCBwcmUgc2VsZWN0ZWQgdmFsdWVcclxuICAgICAgLy8gZGVsYXkgdG8gbWFrZSBzdXJlIHRoYXQgcGFnZSBnZXQgdGhlIHZhbHVlIGFuZCBzZW5kIGl0IHRvIGhlcmVcclxuICAgICAgLy8gd2UgdXNlIHRoZSB2YWx1ZSBzZW50IHRvIGhlcmUgYW5kIHNlYXJjaCBmb3IgaXRzIGl0ZW0gb24gb3VyIGl0ZW1zIGFuZCBzZXQgaXQgYXMgdGhlIHNlbGVjdGVkIGl0ZW1cclxuICAgICAgdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnNldFByZVNlbGV0ZWRJdGVtKGl0ZW0sIHRoaXMudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMudHJlZXZpZXcgJiZcclxuICAgICAgdGhpcy5tdWx0aXBsZSAmJlxyXG4gICAgICB0aGlzLnZhbHVlICYmXHJcbiAgICAgIHRoaXMudmFsdWUubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIC8vIHRoaXMucHJlU2VsZWN0ZWQgPSB0aGlzLnZhbHVlO1xyXG4gICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdGhpcy52YWx1ZTtcclxuICAgICAgdGhpcy5kcm9wZG93blRyZWV2aWV3U2VsZWN0STE4bi5zZWxlY3Rpb25MZW5ndGggPVxyXG4gICAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubGVuZ3RoO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdDb21wb25lbnQub25TZWxlY3RlZENoYW5nZShbXHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5sZW5ndGgsXHJcbiAgICAgIF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UHJlU2VsZXRlZEl0ZW0oaXRlbSwgY29tcGFyZVdpdGhWYWx1ZSkge1xyXG4gICAgaWYgKChpdGVtLnZhbHVlID09PSBjb21wYXJlV2l0aFZhbHVlKSB8fCAoaXRlbS52YWx1ZS50aXRsZSA9PT0gY29tcGFyZVdpdGhWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZWxlY3QoaXRlbSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpdGVtLmludGVybmFsQ2hpbGRyZW4pIHtcclxuICAgICAgICBpdGVtLmludGVybmFsQ2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRQcmVTZWxldGVkSXRlbShjaGlsZCwgY29tcGFyZVdpdGhWYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdERlZmF1bHQoKSB7XHJcbiAgICBsZXQgb3B0aW9uID0ge1xyXG4gICAgICAnaXNHbG9iYWxBZG1pbic6IHRoaXMuZ2xvYmFsQWRtaW4uaXNHbG9iYWxBZG1pbixcclxuICAgICAgJ2FjdGl2ZVRlbmFudCc6IHRoaXMuZ2xvYmFsQWRtaW4uYWN0aXZlVGVuYW50LFxyXG4gICAgICAndGVuYW50SWQnOiB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudGVuYW50SWRcclxuICAgIH07XHJcbiAgICB0aGlzLm15RGVwYXJ0bWVudCA9IHRoaXMucm9sZXNTZXJ2aWNlLmdldFVzZXJEZXBhcnRtZW50KFxyXG4gICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLFxyXG4gICAgICAnY3RzX3JvbGVfJyxcclxuICAgICAgb3B0aW9uXHJcbiAgICApO1xyXG4gICAgdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgdGhpcy5zZXRQcmVTZWxldGVkSXRlbShpdGVtLCB0aGlzLm15RGVwYXJ0bWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2VsZWN0KGl0ZW06IFRyZWV2aWV3SXRlbSk6IHZvaWQge1xyXG4gICAgLy8gaWYgKCFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkSXRlbSgpOiB2b2lkIHtcclxuICAgIGlmICghaXNOaWwodGhpcy5pdGVtcykpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gVHJlZXZpZXdIZWxwZXIuZmluZEl0ZW1Jbkxpc3QoXHJcbiAgICAgICAgdGhpcy5pdGVtcyxcclxuICAgICAgICB0aGlzLnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RJdGVtKGl0ZW06IFRyZWV2aWV3SXRlbSk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGljaygpO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4uc2VsZWN0ZWRJdGVtICE9PSBpdGVtKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25UcmVldmlld1NlbGVjdEkxOG4uc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgaWYgKHRoaXMuZHJvcGRvd25UcmVldmlld0NvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25UcmVldmlld0NvbXBvbmVudC5vblNlbGVjdGVkQ2hhbmdlKFtpdGVtXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZXZpZXcpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbS52YWx1ZTtcclxuICAgICAgICAgIC8vIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChpdGVtLnZhbHVlLnRpdGxlKTtcclxuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGl0ZW0udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RNdWx0aXBsZShlLCBpdGVtOiBUcmVldmlld0l0ZW0pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGQgPSBbXTtcclxuICAgIGlmKCF0aGlzLnNlbGVjdERlcENoaWxkcmVuKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudFdpdGhDaGlsZC5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgfWVsc2V7XHJcbiAgICB0aGlzLmdldENoaWxkZXJuVmFsdWVzKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGUpIHtcclxuICAgICAgdGhpcy5tdWx0aXBsZVNlbGVjdGlvbiA9IHRoaXMubXVsdGlwbGVTZWxlY3Rpb24uY29uY2F0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPSB0aGlzLm11bHRpcGxlU2VsZWN0aW9uLmZpbHRlcigoZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUGFyZW50V2l0aENoaWxkLmluZGV4T2YoZSkgPCAwO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duVHJlZXZpZXdTZWxlY3RJMThuLnNlbGVjdGlvbkxlbmd0aCA9XHJcbiAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubGVuZ3RoO1xyXG4gICAgdGhpcy5kcm9wZG93blRyZWV2aWV3Q29tcG9uZW50Lm9uU2VsZWN0ZWRDaGFuZ2UoW1xyXG4gICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uLmxlbmd0aCxcclxuICAgIF0pO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMubXVsdGlwbGVTZWxlY3Rpb24pO1xyXG4gIH1cclxuICBnZXRDaGlsZGVyblZhbHVlcyhpdGVtOiBUcmVldmlld0l0ZW0pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRXaXRoQ2hpbGQucHVzaChpdGVtLnZhbHVlKTtcclxuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRlcm5WYWx1ZXMoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHJldHVybjtcclxuICB9XHJcblxyXG4gIG9uUGx1c0NsaWNrZWQoZTogTW91c2VFdmVudCwgaXRlbTogVHJlZXZpZXdJdGVtKTogdm9pZCB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy5wbHVzQ2xpY2tlZC5lbWl0KGl0ZW0udmFsdWUudWlkKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZSAgY2xpY2sgZXZlbnRcclxuICAgKiBAcGFyYW0gYWN0aW9uIG5hbWUgb2YgYWN0aW9uIChhZGQgLCB1cGRhdGUpXHJcbiAgICogQHBhcmFtIGl0ZW0gVHJlZXZpZXdJdGVtXHJcbiAgICovXHJcbiAgb25BY3Rpb24oZTogTW91c2VFdmVudCwgYWN0aW9uOiBzdHJpbmcsIGl0ZW06IFRyZWV2aWV3SXRlbSkge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIGlmIChhY3Rpb24gPT09IFwiYWRkXCIpIHtcclxuICAgICAgICAvLyBlbWl0IGFjdGlvbiB0byBvdXRzaWRlIHRvIGV4ZWN1dGUgZnVuY3Rpb24gZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQgXHJcbiAgICAgICAgaWYgKHRoaXMudXNlQ3VzdG9tQWRkRWRpdEFjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICAgICAgaXRlbTogaXRlbVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGVwYXJ0bWVudE1hbmFnbWVudFxyXG4gICAgICAgICAgICAub3BlbkZvcm1EaWFsb2coaXRlbS52YWx1ZS51aWQsIGZhbHNlLCB0aGlzLmRpc3BsYXlJc0FsbG93UmVjRXh0ZXJuYWwsIHRoaXMuZGlzcGxheURlcFR5cGVlLCBpdGVtLnZhbHVlLnRpdGxlLCBpdGVtKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZShpdGVtKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYWN0aW9uID09PSBcInVwZGF0ZVwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlQ3VzdG9tQWRkRWRpdEFjdGlvbikge1xyXG4gICAgICAgICAgLy8gZW1pdCBhY3Rpb24gdG8gb3V0c2lkZSB0byBleGVjdXRlIGZ1bmN0aW9uIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50IFxyXG4gICAgICAgICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICAgICAgaXRlbTogaXRlbVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGVwYXJ0bWVudE1hbmFnbWVudFxyXG4gICAgICAgICAgICAub3BlbkZvcm1EaWFsb2coaXRlbS52YWx1ZS51aWQsIHRydWUsIHRoaXMuZGlzcGxheUlzQWxsb3dSZWNFeHRlcm5hbCwgdGhpcy5kaXNwbGF5RGVwVHlwZWUpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMudXBkYXRlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGVwYXJ0bWVudEFwaVNlcnZpY2UuZ2V0RGVwYXJ0bWVudFRyZWUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZGVwYXJ0bWVudEFwaVNlcnZpY2UucmVjdXJzaXZlRmlsbChcclxuICAgICAgICAgICAgICAgICAgcmVzLmVudHJpZXMsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tUHJlZml4KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKmR1ZSB0byB0aGUgYnVzaW5lc3MgcmVxdWlyZW1lbnRzIHdoaWNoIHN0YXRlZCB0aGF0IG1vcmUgdGhhbiAzIGxldmVscyB3aWxsIGV4aXN0ZWQgdGhlIGN1cnJlbnQgYXBpIHN1cHBvcnQgb25seSAzIGxldmVscyBzbyAqd2UgaGF2ZSB0byBpbmplY3QgMyBuZXcgbGV2ZWxzIG9uIGVhY2ggdHJlZSBlbmRcclxuICAgKiBAcGFyYW0gaXRlbSBUcmVldmlld0l0ZW1cclxuICAgKi9cclxuICBvbkNvbGxhcHNlZChpdGVtOiBUcmVldmlld0l0ZW0pIHtcclxuICAgIGl0ZW0uY29sbGFwc2VkID0gIWl0ZW0uY29sbGFwc2VkO1xyXG4gICAgaWYgKGl0ZW0udmFsdWUubGV2ZWwgPT09IDIpIHtcclxuICAgICAgdGhpcy5kZXBhcnRtZW50QXBpU2VydmljZVxyXG4gICAgICAgIC5nZXREZXBhcnRtZW50TmVzdGVkVHJlZShcclxuICAgICAgICAgIGl0ZW0udmFsdWUudGl0bGUsXHJcbiAgICAgICAgICB0aGlzLnBwX2RlcGFydG1lbnROZXN0ZWRUcmVlID8gdGhpcy5wcF9kZXBhcnRtZW50TmVzdGVkVHJlZSA6ICdQUF9EZXBhcnRtZW50JyxcclxuICAgICAgICAgIHRoaXMuY3VzdG9tUGFyZW50UHJvcGVydHkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuZGVwYXJ0bWVudEFwaVNlcnZpY2UucmVjdXJzaXZlRmlsbChcclxuICAgICAgICAgICAgICByZXMuZW50cmllcyxcclxuICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB0aGlzLmN1c3RvbVByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqZHVlIHRvIHRoZSBidXNpbmVzcyByZXF1aXJlbWVudHMgd2hpY2ggc3RhdGVkIHRoYXQgbW9yZSB0aGFuIDMgbGV2ZWxzIHdpbGwgZXhpc3RlZCB0aGUgY3VycmVudCBhcGkgc3VwcG9ydCBvbmx5IDMgbGV2ZWxzIHNvICp3ZSBoYXZlIHRvIGluamVjdCAzIG5ldyBsZXZlbHMgb24gZWFjaCB0cmVlIGVuZFxyXG4gICAqIEBwYXJhbSBpdGVtIFRyZWV2aWV3SXRlbVxyXG4gICAqL1xyXG4gIHVwZGF0ZShpdGVtKSB7XHJcbiAgICB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlXHJcbiAgICAgIC5nZXREZXBhcnRtZW50TmVzdGVkVHJlZShcclxuICAgICAgICBpdGVtLnZhbHVlLnRpdGxlLFxyXG4gICAgICAgIHRoaXMucHBfZGVwYXJ0bWVudE5lc3RlZFRyZWUgPyB0aGlzLnBwX2RlcGFydG1lbnROZXN0ZWRUcmVlIDogJ1BQX0RlcGFydG1lbnQnLFxyXG4gICAgICAgIHRoaXMuY3VzdG9tUGFyZW50UHJvcGVydHkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSB0aGlzLmRlcGFydG1lbnRBcGlTZXJ2aWNlLnJlY3Vyc2l2ZUZpbGwoXHJcbiAgICAgICAgICAgIGRhdGEuZW50cmllcyxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21QcmVmaXhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7IH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW0pIHtcclxuICAgIHJldHVybiBfZmluZCh0aGlzLm11bHRpcGxlU2VsZWN0aW9uLCAocSkgPT4gX2lzRXF1YWwocSwgaXRlbS52YWx1ZSkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGVcclxuICAjaXRlbVRlbXBsYXRlXHJcbiAgbGV0LWl0ZW09XCJpdGVtXCJcclxuICBsZXQtb25Db2xsYXBzZUV4cGFuZD1cIm9uQ29sbGFwc2VFeHBhbmRcIlxyXG4gIGxldC1vbkNoZWNrZWRDaGFuZ2U9XCJvbkNoZWNrZWRDaGFuZ2VcIlxyXG4+XHJcbiAgPCEtLSBzaW5nbGUgLS0+XHJcbiAgPGRpdiAqbmdJZj1cIiF0cmVldmlldyAmJiAhbXVsdGlwbGVcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0ZXh0LW5vd3JhcCByb3ctaXRlbVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpdGVtLnZhbHVlID09PSB0aGlzLnZhbHVlIH1cIlxyXG4gICAgPlxyXG4gICAgICA8aVxyXG4gICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29sbGFwc2VFeHBhbmQoKVwiXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICBbbmdTd2l0Y2hdPVwiaXRlbS5jb2xsYXBzZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQte3sgYXJhYmljID8gJ2xlZnQnIDogJ3JpZ2h0JyB9fS1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJpIGJpLWNhcmV0LWRvd24tZmlsbCBjYXJldC1pY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2k+XHJcbiAgICAgIDwhLS0gPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIj57e1xyXG4gICAgICAgIGl0ZW0udGV4dFxyXG4gICAgICB9fTwvbGFiZWw+IC0tPlxyXG4gICAgICA8bGFiZWwgKm5nSWY9XCJpdGVtLmRpc2FibGVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+e3tcclxuICAgICAgICBpdGVtLnRleHRcclxuICAgICAgfX08L2xhYmVsPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICAqbmdJZj1cIiFpdGVtLmRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIlxyXG4gICAgICAgID57eyBpdGVtLnRleHQgfX08L2xhYmVsXHJcbiAgICAgID5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gTXVsdGlwbGUgLS0+XHJcbiAgPGRpdiAqbmdJZj1cIiF0cmVldmlldyAmJiBtdWx0aXBsZVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInRleHQtbm93cmFwIHJvdy1pdGVtXCJcclxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGl0ZW0udmFsdWUgPT09IHRoaXMudmFsdWUgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuXCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2xsYXBzZUV4cGFuZCgpXCJcclxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgIFtuZ1N3aXRjaF09XCJpdGVtLmNvbGxhcHNlZFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC17eyBhcmFiaWMgPyAnbGVmdCcgOiAncmlnaHQnIH19LWZpbGwgY2FyZXQtaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtZG93bi1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvaT5cclxuICAgICAgPCEtLSA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cIm11bHRpcGxlLWNoZWNrQm94XCJcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cIm11bHRpcGxlU2VsZWN0aW9uLmluY2x1ZGVzKGl0ZW0udmFsdWUpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInNlbGVjdE11bHRpcGxlKCRldmVudC50YXJnZXQuY2hlY2tlZCwgaXRlbSlcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPnt7IGl0ZW0udGV4dCB9fTwvbGFiZWw+IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtdHJlZXZpZXdcIj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdE11bHRpcGxlKCRldmVudC5jaGVja2VkLCBpdGVtKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4+IHt7IGl0ZW0udGV4dCB9fSA8L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSB0cmVlVmlldyAtLT5cclxuICA8ZGl2ICpuZ0lmPVwidHJlZXZpZXcgJiYgIXRyZWVWaWV3QXNGb3JtQ29udHJvbFwiIGNsYXNzPVwidHJlZS12aWV3LWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAobW91c2VlbnRlcik9XCJob3ZlckZpZWxkLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJob3ZlckZpZWxkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcIlxyXG4gICAgICBjbGFzcz1cInRleHQtbm93cmFwIHJvdy1pdGVtIHRyZWV2aWV3LXJvd1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICBzZWxlY3RlZDogaXRlbS52YWx1ZSA9PSBzZWxlY3RlZEl0ZW0sXHJcbiAgICAgICAgdHJlZVBhcmVudE5vZGU6IGl0ZW0udmFsdWUgPT09IGZpeGVkUGFyZW50Tm9kZT8udmFsdWVcclxuICAgICAgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxpXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuXCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2xsYXBzZWQoaXRlbSlcIlxyXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgW25nU3dpdGNoXT1cIml0ZW0uY29sbGFwc2VkXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJpIGJpLWNhcmV0LXt7IGFyYWJpYyA/ICdsZWZ0JyA6ICdyaWdodCcgfX0tZmlsbCBjYXJldC1pY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtZG93bi1maWxsIGNhcmV0LWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvaT5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbC10cmVldmlld1wiIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIj5cclxuICAgICAgICA8bmctY29udGVpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZSAhPSBmaXhlZFBhcmVudE5vZGU/LnZhbHVlXCI+e3tcclxuICAgICAgICAgIGl0ZW0udGV4dFxyXG4gICAgICAgIH19PC9uZy1jb250ZWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRlaW5lciAqbmdJZj1cIml0ZW0udmFsdWUgPT09IGZpeGVkUGFyZW50Tm9kZT8udmFsdWVcIj57e1xyXG4gICAgICAgICAgaXRlbS50ZXh0IHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX08L25nLWNvbnRlaW5lcj5cclxuICAgICAgICA8c3BhbiAjaG92ZXJGaWVsZCBjbGFzcz1cImhvdmVyRmllbGRcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ2RlcGFydG1lbnRfbWFuYWdlbWVudC5mb3JtLmVkaXQnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgJ3VwZGF0ZScsIGl0ZW0pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiYmkgYmktcGVuY2lsXCI+PC9saT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7XHJcbiAgICAgICAgICAgICAgJ2RlcGFydG1lbnRfbWFuYWdlbWVudC5mb3JtLnRvb2xUaXBfbWVzc2FnZScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAnYWRkJywgaXRlbSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiaSBiaS1wbHVzXCI+PC9saT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIHRyZWVWaWV3IGFzIGZvcm0gY29udHJvbCAtLT5cclxuICA8ZGl2ICpuZ0lmPVwidHJlZXZpZXcgJiYgdHJlZVZpZXdBc0Zvcm1Db250cm9sXCIgY2xhc3M9XCJ0cmVlLXZpZXctY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGV4dC1ub3dyYXAgcm93LWl0ZW0gdHJlZXZpZXctcm93LWZvcm0tY29udHJvbFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWZvcm0tY29udHJvbCc6IGl0ZW0udmFsdWUgPT0gc2VsZWN0ZWRJdGVtIH1cIlxyXG4gICAgPlxyXG4gICAgICA8aVxyXG4gICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29sbGFwc2VkKGl0ZW0pXCJcclxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgIFtuZ1N3aXRjaF09XCJpdGVtLmNvbGxhcHNlZFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC17eyBhcmFiaWMgPyAnbGVmdCcgOiAncmlnaHQnIH19LWZpbGwgY2FyZXQtaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJpIGJpLWNhcmV0LWRvd24tZmlsbCBjYXJldC1pY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2k+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwtdHJlZXZpZXdcIiAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcclxuICAgICAgICA+e3sgaXRlbS50ZXh0IH19XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2hlYWRlclRlbXBsYXRlXHJcbiAgbGV0LWNvbmZpZz1cImNvbmZpZ1wiXHJcbiAgbGV0LWl0ZW09XCJpdGVtXCJcclxuICBsZXQtb25Db2xsYXBzZUV4cGFuZD1cIm9uQ29sbGFwc2VFeHBhbmRcIlxyXG4gIGxldC1vbkNoZWNrZWRDaGFuZ2U9XCJvbkNoZWNrZWRDaGFuZ2VcIlxyXG4gIGxldC1vbkZpbHRlclRleHRDaGFuZ2U9XCJvbkZpbHRlclRleHRDaGFuZ2VcIlxyXG4+XHJcbiAgPGRpdiAqbmdJZj1cImNvbmZpZy5oYXNGaWx0ZXJcIiBjbGFzcz1cInJvdyByb3ctZmlsdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4uZ2V0RmlsdGVyUGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlclRleHRcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyVGV4dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJjb25maWcuaGFzQWxsQ2hlY2tCb3ggfHwgY29uZmlnLmhhc0NvbGxhcHNlRXhwYW5kXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwiY29uZmlnLmhhc0FsbENoZWNrQm94XCIgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiPlxyXG4gICAgICAgIDxzdHJvbmc+e3sgaTE4bi5nZXRBbGxDaGVja2JveFRleHQoKSB9fTwvc3Ryb25nPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICAqbmdJZj1cImNvbmZpZy5oYXNDb2xsYXBzZUV4cGFuZFwiXHJcbiAgICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29sbGFwc2VFeHBhbmQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgW3RpdGxlXT1cImkxOG4uZ2V0VG9vbHRpcENvbGxhcHNlRXhwYW5kVGV4dChpdGVtLmNvbGxhcHNlZClcIlxyXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgIFtuZ1N3aXRjaF09XCJpdGVtLmNvbGxhcHNlZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cInRydWVcIiBjbGFzcz1cImJpIGJpLWFycm93cy1hbmdsZS1leHBhbmRcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJpIGJpLWFycm93cy1hbmdsZS1jb250cmFjdFwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvaT5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxhICpuZ0lmPVwiZGVmYXVsdFNlbGVjdFwiIGNsYXNzPVwic2VsZWN0LWRlZmF1bHRcIiAoY2xpY2spPVwic2VsZWN0RGVmYXVsdCgpXCI+e3tcclxuICAgIFwiZGVwYXJ0bWVudF9tYW5hZ2VtZW50LnNlbGVjdERlZmF1bHRcIiB8IHRyYW5zbGF0ZVxyXG4gIH19PC9hPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiY29uZmlnLmhhc0RpdmlkZXJcIlxyXG4gICAgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ2Ryb3Bkb3duLWRpdmlkZXItbm9NYXJnaW4nOiBkZWZhdWx0U2VsZWN0IH1cIlxyXG4gID48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhdHJlZXZpZXcgJiYgIW11bHRpcGxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIj5cclxuICAgIDxuZ3gtZHJvcGRvd24tdHJlZXZpZXdcclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICBbaXRlbXNdPVwiaXRlbXNcIlxyXG4gICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICA+XHJcbiAgICA8L25neC1kcm9wZG93bi10cmVldmlldz5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNhYmxlLWVmZmVjdFwiICpuZ0lmPVwiZGlzYWJsZWRcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhdHJlZXZpZXcgJiYgbXVsdGlwbGVcIj5cclxuICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtdHJlZS12aWV3IGRyb3Bkb3duLXdyYXBwZXJcIj5cclxuICAgIDxuZ3gtZHJvcGRvd24tdHJlZXZpZXdcclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICBbaXRlbXNdPVwiaXRlbXNcIlxyXG4gICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICA+XHJcbiAgICA8L25neC1kcm9wZG93bi10cmVldmlldz5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNhYmxlLWVmZmVjdFwiICpuZ0lmPVwiZGlzYWJsZWRcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwidHJlZXZpZXcgJiYgIXRyZWVWaWV3QXNGb3JtQ29udHJvbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cmVlLXZpZXdcIj5cclxuICAgIDxuZ3gtdHJlZXZpZXdcclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICBbaXRlbXNdPVwiaXRlbXNcIlxyXG4gICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICA+XHJcbiAgICA8L25neC10cmVldmlldz5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmVldmlldyAmJiB0cmVlVmlld0FzRm9ybUNvbnRyb2xcIj5cclxuICA8ZGl2IGNsYXNzPVwidHJlZS12aWV3LWZvcm0tY29udHJvbFwiPlxyXG4gICAgPG5neC10cmVldmlld1xyXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgID5cclxuICAgIDwvbmd4LXRyZWV2aWV3PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -130,7 +130,7 @@ export class DynamicFormVocabularyItemComponent {
130
130
  }
131
131
  }
132
132
  DynamicFormVocabularyItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormVocabularyItemComponent, deps: [{ token: i1.VocabularyApiService }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
133
- DynamicFormVocabularyItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormVocabularyItemComponent, selector: "app-dynamic-form-vocabulary-item", inputs: { onlyIds: "onlyIds", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", disabled: "disabled", vocabularyType: "vocabularyType", label: "label", cacheable: "cacheable", shwoAllValues: "shwoAllValues" }, outputs: { onSelecting: "onSelecting" }, viewQueries: [{ propertyName: "DynamicFormSelectItemComponent", first: true, predicate: DynamicFormSelectItemComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<app-dynamic-form-selectitem\r\n [voc]=\"true\"\r\n [vocId]=\"vocabularyType\"\r\n [data]=\"data\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [disabled]=\"disabled\"\r\n [hideSelectedItems]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (onSelectItems)=\"getSelecteditems($event)\"\r\n [(ngModel)]=\"selection\"\r\n></app-dynamic-form-selectitem>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ label | translate }} {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n", styles: [""], components: [{ type: i3.DynamicFormSelectItemComponent, selector: "app-dynamic-form-selectitem", inputs: ["label", "bindValue", "bindLabel", "data", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "disabled", "clear", "voc", "vocId", "loading"], outputs: ["onSelectItems"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i6.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
133
+ DynamicFormVocabularyItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormVocabularyItemComponent, selector: "app-dynamic-form-vocabulary-item", inputs: { onlyIds: "onlyIds", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", disabled: "disabled", vocabularyType: "vocabularyType", label: "label", cacheable: "cacheable", shwoAllValues: "shwoAllValues" }, outputs: { onSelecting: "onSelecting" }, viewQueries: [{ propertyName: "DynamicFormSelectItemComponent", first: true, predicate: DynamicFormSelectItemComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger mx-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<app-dynamic-form-selectitem\r\n [voc]=\"true\"\r\n [vocId]=\"vocabularyType\"\r\n [data]=\"data\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [disabled]=\"disabled\"\r\n [hideSelectedItems]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (onSelectItems)=\"getSelecteditems($event)\"\r\n [(ngModel)]=\"selection\"\r\n></app-dynamic-form-selectitem>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ label | translate }} {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n", styles: [""], components: [{ type: i3.DynamicFormSelectItemComponent, selector: "app-dynamic-form-selectitem", inputs: ["label", "bindValue", "bindLabel", "data", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "disabled", "clear", "voc", "vocId", "loading"], outputs: ["onSelectItems"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i6.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
134
134
  __decorate([
135
135
  Cacheable({
136
136
  maxCacheCount: 1000,
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
182
182
  }], onSelecting: [{
183
183
  type: Output
184
184
  }], getCacheableVocabularyList: [] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFFOUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFPSCxNQUFNLE9BQU8sa0NBQWtDO0lBb0Q5QyxZQUNTLGFBQW1DLEVBQ25DLEtBQXdCLEVBQ0wsT0FBa0I7UUFGckMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ0wsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQW5EOUMsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNELFlBQU8s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XG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T3B0aW9uYWwsXHJcblx0T3V0cHV0LFxyXG5cdFNlbGYsXHJcblx0Vmlld0NoaWxkLFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVm9jYWJ1bGFyeUFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi92b2NhYnVsYXJ5L3NlcnZpY2VzL3ZvY2FidWxhcnktYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYWNoZWFibGUsIExvY2FsU3RvcmFnZVN0cmF0ZWd5IH0gZnJvbSAndHMtY2FjaGVhYmxlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIHZvY2FidWxhcnkgZHJvcGRvd24gaW5wdXQgaW50ZWdyYXRlZCB3aXRoIG51eGVvIHZvY2FidWxhcnkgQVBJLFxyXG4gKiB0aGF0IGNhbiBiZSB1c2VkIGluc2lkZSByZWFjdGl2ZSBvciB0ZW1wbGF0ZSBkcml2ZW4gZm9ybXNcclxuICogQHRpdGxlXHJcbiAqIHZvY2FidWxhcnkgZHJvcGRvd25cclxuICogQGV4YW1wbGVcclxuICogPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAqICAgW2xhYmVsXT1cIidQQVRILlRPLkxBQkVMLlRSQU5TTEFUSU9OJ1wiXHJcbiAqICAgW2JpbmRMYWJlbF09XCInYmluZExhYmVsUHJvcGVydHlOYW1lJ1wiXHJcbiAqICAgW2JpbmRWYWx1ZV09XCInYmluZFZhbHVlUHJvcGVydHlOYW1lJ1wiXHJcbiAqICAgcGxhY2Vob2xkZXI9XCInUEFUSC5UTy5QTEFDRUhPTERFUi5UUkFOU0xBVElPTidcIlxyXG4gKiAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAqICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gKiAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gKiAgIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJmYWxzZVwiXHJcbiAqICAgW3ZvY2FidWxhcnlUeXBlXT1cIidWb2NhYnVsYXJ5S2V5J1wiXHJcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udHJvbE5hbWVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLWR5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtVm9jYWJ1bGFyeUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QFZpZXdDaGlsZChEeW5hbWljRm9ybVNlbGVjdEl0ZW1Db21wb25lbnQpXHJcblx0RHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50OiBEeW5hbWljRm9ybVNlbGVjdEl0ZW1Db21wb25lbnQ7XHJcblxyXG5cdGRhdGEgPSBbXTtcclxuXHRASW5wdXQoKSBvbmx5SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cdC8qKiBCaW5kIHZhbHVlIHRvIHByb3BlcnR5IG5hbWUgKi9cclxuXHRASW5wdXQoKSBiaW5kVmFsdWU7XHJcblx0LyoqIEJpbmQgbGFiZWwgdG8gcHJvcGVydHkgbmFtZSAqL1xyXG5cdEBJbnB1dCgpIGJpbmRMYWJlbDtcclxuXHQvKiogUGxhY2Vob2xkZXIgc3RyaW5nICovXHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI7XHJcblx0LyoqIENhbiBzZWxlY3QgbXVsdGlwbGUgKi9cclxuXHRASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG5cdC8qKiBJcyBzZWFyY2hhYmxlICovXHJcblx0QElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XHJcblx0LyoqIFNob3VsZCBjbG9zZSBvbiBzZWxlY3QgKi9cclxuXHRASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHQvKiogU2hvdWxkIGhpZGUgc2VsZWN0ZWQgaXRlbXMgKi9cclxuXHRASW5wdXQoKSBoaWRlU2VsZWN0ZWRJdGVtcyA9IGZhbHNlO1xyXG5cdC8qKiBpcyBkaXNhYmxlZCAqL1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblx0LyoqIFZvY2FidWxhcnkgbGlzdCBBUEkgS2V5ICovXHJcblx0QElucHV0KCkgdm9jYWJ1bGFyeVR5cGUgPSAnJztcclxuXHQvKiogRmllbGQgTGFiZWwgKi9cclxuXHRASW5wdXQoKSBsYWJlbDtcclxuXHRASW5wdXQoKSBjYWNoZWFibGUgPSB0cnVlO1xyXG5cdEBJbnB1dCgpIHNod29BbGxWYWx1ZXMgPSB0cnVlO1xyXG5cdC8qKiBFdmVudCBlbWl0dGVkIG9uIHZhbHVlIGlzIHNlbGVjdGVkICovXHJcblx0QE91dHB1dCgpIG9uU2VsZWN0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdGxvYWRpbmcgPSBmYWxzZTtcclxuXHRzZWxlY3Rpb247XHJcblxyXG5cdC8vIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdmFsdWUgYWNjZXNzb3JcclxuXHRwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cdHZhbGlkYXRlRm46IGFueSA9ICgpID0+IHt9O1xyXG5cdHB1YmxpYyBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHtcclxuXHRcdC8qRW1wdHkqL1xyXG5cdH07XHJcblx0cHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcclxuXHRcdGlmICghdGhpcy5jb250cm9sKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB7IGRpcnR5LCB0b3VjaGVkIH0gPSB0aGlzLmNvbnRyb2w7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuaW52YWxpZCA/IGRpcnR5IHx8IHRvdWNoZWQgOiBmYWxzZTtcclxuXHR9XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZvY2FidWxhcnlBcGk6IFZvY2FidWxhcnlBcGlTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2xcclxuXHQpIHtcclxuXHRcdHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMudm9jYWJ1bGFyeVR5cGUpIHtcclxuXHRcdFx0dGhpcy5nZXRMaXNPZk9wdGlvbnModGhpcy52b2NhYnVsYXJ5VHlwZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXRMaXNPZk9wdGlvbnModHlwZSkge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdGNvbnN0IGNhbGxBcGkgPSB0aGlzLmNhY2hlYWJsZSA/IHRoaXMuZ2V0Q2FjaGVhYmxlVm9jYWJ1bGFyeUxpc3QodHlwZSkgOiB0aGlzLmdldFZvY2FidWxhcnlMaXN0KHR5cGUpO1xyXG5cdFx0Y2FsbEFwaS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdGlmICh0aGlzLm9ubHlJZHM/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdHJlcyA9IHJlcy5maWx0ZXIoKHEpID0+IHRoaXMub25seUlkcy5pbmNsdWRlcyhxLmlkKSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuZGF0YSA9ICF0aGlzLnNod29BbGxWYWx1ZXNcclxuXHRcdFx0XHQ/IHJlcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlkLmluY2x1ZGVzKCdhcmNoaXZlZCcpICYmICFpdGVtLmlkLmluY2x1ZGVzKCdkcmFmdCcpKVxyXG5cdFx0XHRcdDogcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5vYnNvbGV0ZSA9PT0gMCk7XHJcblx0XHRcdHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRAQ2FjaGVhYmxlKHtcclxuXHRcdG1heENhY2hlQ291bnQ6IDEwMDAsXHJcblx0XHRzdG9yYWdlU3RyYXRlZ3k6IExvY2FsU3RvcmFnZVN0cmF0ZWd5LFxyXG5cdFx0bWF4QWdlOiAyMDAwMFxyXG5cdH0pXHJcblx0Z2V0Q2FjaGVhYmxlVm9jYWJ1bGFyeUxpc3QodHlwZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMudm9jYWJ1bGFyeUFwaS5nZXRWb2NhYnVsYXJ5TGlzdCh0eXBlKTtcclxuXHR9XHJcblxyXG5cdGdldFZvY2FidWxhcnlMaXN0KHR5cGUpIHtcclxuXHRcdHJldHVybiB0aGlzLnZvY2FidWxhcnlBcGkuZ2V0Vm9jYWJ1bGFyeUxpc3QodHlwZSk7XHJcblx0fVxyXG5cdGdldFNlbGVjdGVkaXRlbXMoc2VsZWN0ZWRJdGVtcykge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3Rpb24pO1xyXG5cdFx0dGhpcy5vblNlbGVjdGluZy5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdHdyaXRlVmFsdWUodmFsdWUpIHtcclxuXHRcdC8vIGlmICh2YWx1ZSkgeyByZW1vdmVkIHRvIGFsbG93IHJlc2V0aW5nIHVpIHdoZW4gcmVzZXR0aW5nIGZvcm1cclxuXHRcdHRoaXMuc2VsZWN0aW9uID0gdmFsdWU7XHJcblx0XHQvLyB9XHJcblx0fVxyXG5cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoZWQgPSBmbjtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcblx0XHRyZXR1cm4gdGhpcy52YWxpZGF0ZUZuKGMpO1xyXG5cdH1cclxuXHRpc1JlcXVpcmVkKCkge1xyXG5cdFx0aWYgKCF0aGlzLmNvbnRyb2wgfHwgIXRoaXMuY29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgdmFsaWRhdG9yID0gdGhpcy5jb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XHJcblx0XHRyZXR1cm4gdmFsaWRhdG9yICYmIHZhbGlkYXRvci5yZXF1aXJlZDtcclxuXHR9XHJcblx0aGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2hvd0Vycm9yO1xyXG5cdH1cclxuXHRyZXNldCgpIHtcclxuXHRcdHRoaXMuRHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50LnJlc2V0KCk7XHJcblx0fVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzZWxlY3QtbGFiZWxcIlxyXG4gICAgICA+e3sgbGFiZWwgfCB0cmFuc2xhdGVcclxuICAgICAgfX08c3BhbiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbS0xXCI+Kjwvc3Bhbj48L2xhYmVsXHJcbiAgICA+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48YXBwLWR5bmFtaWMtZm9ybS1zZWxlY3RpdGVtXHJcbiAgW3ZvY109XCJ0cnVlXCJcclxuICBbdm9jSWRdPVwidm9jYWJ1bGFyeVR5cGVcIlxyXG4gIFtkYXRhXT1cImRhdGFcIlxyXG4gIFtiaW5kTGFiZWxdPVwiYmluZExhYmVsXCJcclxuICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZVwiXHJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gIFtjbG9zZU9uU2VsZWN0XT1cImNsb3NlT25TZWxlY3RcIlxyXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImhpZGVTZWxlY3RlZEl0ZW1zXCJcclxuICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAob25TZWxlY3RJdGVtcyk9XCJnZXRTZWxlY3RlZGl0ZW1zKCRldmVudClcIlxyXG4gIFsobmdNb2RlbCldPVwic2VsZWN0aW9uXCJcclxuPjwvYXBwLWR5bmFtaWMtZm9ybS1zZWxlY3RpdGVtPlxyXG48bWF0LWVycm9yXHJcbiAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLWVycm9yLSdcIlxyXG4gIGNsYXNzPVwiYXBwLXRleHRpdGVtLWVkaXRhYmxlLWVycm9yXCJcclxuICAqbmdJZj1cImhhc0Vycm9ycygpXCJcclxuPlxyXG4gIDx1bD5cclxuICAgIDxsaSAqbmdJZj1cImNvbnRyb2wuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19IHt7IFwiVkFMSURBVE9SUy5SRVFVSVJFRFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvbWF0LWVycm9yPlxyXG4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFFOUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFPSCxNQUFNLE9BQU8sa0NBQWtDO0lBb0Q5QyxZQUNTLGFBQW1DLEVBQ25DLEtBQXdCLEVBQ0wsT0FBa0I7UUFGckMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ0wsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQW5EOUMsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNELFlBQU8s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XG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T3B0aW9uYWwsXHJcblx0T3V0cHV0LFxyXG5cdFNlbGYsXHJcblx0Vmlld0NoaWxkLFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVm9jYWJ1bGFyeUFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi92b2NhYnVsYXJ5L3NlcnZpY2VzL3ZvY2FidWxhcnktYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYWNoZWFibGUsIExvY2FsU3RvcmFnZVN0cmF0ZWd5IH0gZnJvbSAndHMtY2FjaGVhYmxlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIHZvY2FidWxhcnkgZHJvcGRvd24gaW5wdXQgaW50ZWdyYXRlZCB3aXRoIG51eGVvIHZvY2FidWxhcnkgQVBJLFxyXG4gKiB0aGF0IGNhbiBiZSB1c2VkIGluc2lkZSByZWFjdGl2ZSBvciB0ZW1wbGF0ZSBkcml2ZW4gZm9ybXNcclxuICogQHRpdGxlXHJcbiAqIHZvY2FidWxhcnkgZHJvcGRvd25cclxuICogQGV4YW1wbGVcclxuICogPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAqICAgW2xhYmVsXT1cIidQQVRILlRPLkxBQkVMLlRSQU5TTEFUSU9OJ1wiXHJcbiAqICAgW2JpbmRMYWJlbF09XCInYmluZExhYmVsUHJvcGVydHlOYW1lJ1wiXHJcbiAqICAgW2JpbmRWYWx1ZV09XCInYmluZFZhbHVlUHJvcGVydHlOYW1lJ1wiXHJcbiAqICAgcGxhY2Vob2xkZXI9XCInUEFUSC5UTy5QTEFDRUhPTERFUi5UUkFOU0xBVElPTidcIlxyXG4gKiAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAqICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gKiAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gKiAgIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJmYWxzZVwiXHJcbiAqICAgW3ZvY2FidWxhcnlUeXBlXT1cIidWb2NhYnVsYXJ5S2V5J1wiXHJcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udHJvbE5hbWVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLWR5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtVm9jYWJ1bGFyeUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QFZpZXdDaGlsZChEeW5hbWljRm9ybVNlbGVjdEl0ZW1Db21wb25lbnQpXHJcblx0RHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50OiBEeW5hbWljRm9ybVNlbGVjdEl0ZW1Db21wb25lbnQ7XHJcblxyXG5cdGRhdGEgPSBbXTtcclxuXHRASW5wdXQoKSBvbmx5SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cdC8qKiBCaW5kIHZhbHVlIHRvIHByb3BlcnR5IG5hbWUgKi9cclxuXHRASW5wdXQoKSBiaW5kVmFsdWU7XHJcblx0LyoqIEJpbmQgbGFiZWwgdG8gcHJvcGVydHkgbmFtZSAqL1xyXG5cdEBJbnB1dCgpIGJpbmRMYWJlbDtcclxuXHQvKiogUGxhY2Vob2xkZXIgc3RyaW5nICovXHJcblx0QElucHV0KCkgcGxhY2Vob2xkZXI7XHJcblx0LyoqIENhbiBzZWxlY3QgbXVsdGlwbGUgKi9cclxuXHRASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG5cdC8qKiBJcyBzZWFyY2hhYmxlICovXHJcblx0QElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XHJcblx0LyoqIFNob3VsZCBjbG9zZSBvbiBzZWxlY3QgKi9cclxuXHRASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHQvKiogU2hvdWxkIGhpZGUgc2VsZWN0ZWQgaXRlbXMgKi9cclxuXHRASW5wdXQoKSBoaWRlU2VsZWN0ZWRJdGVtcyA9IGZhbHNlO1xyXG5cdC8qKiBpcyBkaXNhYmxlZCAqL1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblx0LyoqIFZvY2FidWxhcnkgbGlzdCBBUEkgS2V5ICovXHJcblx0QElucHV0KCkgdm9jYWJ1bGFyeVR5cGUgPSAnJztcclxuXHQvKiogRmllbGQgTGFiZWwgKi9cclxuXHRASW5wdXQoKSBsYWJlbDtcclxuXHRASW5wdXQoKSBjYWNoZWFibGUgPSB0cnVlO1xyXG5cdEBJbnB1dCgpIHNod29BbGxWYWx1ZXMgPSB0cnVlO1xyXG5cdC8qKiBFdmVudCBlbWl0dGVkIG9uIHZhbHVlIGlzIHNlbGVjdGVkICovXHJcblx0QE91dHB1dCgpIG9uU2VsZWN0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdGxvYWRpbmcgPSBmYWxzZTtcclxuXHRzZWxlY3Rpb247XHJcblxyXG5cdC8vIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdmFsdWUgYWNjZXNzb3JcclxuXHRwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cdHZhbGlkYXRlRm46IGFueSA9ICgpID0+IHt9O1xyXG5cdHB1YmxpYyBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHtcclxuXHRcdC8qRW1wdHkqL1xyXG5cdH07XHJcblx0cHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcclxuXHRcdGlmICghdGhpcy5jb250cm9sKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB7IGRpcnR5LCB0b3VjaGVkIH0gPSB0aGlzLmNvbnRyb2w7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuaW52YWxpZCA/IGRpcnR5IHx8IHRvdWNoZWQgOiBmYWxzZTtcclxuXHR9XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZvY2FidWxhcnlBcGk6IFZvY2FidWxhcnlBcGlTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2xcclxuXHQpIHtcclxuXHRcdHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMudm9jYWJ1bGFyeVR5cGUpIHtcclxuXHRcdFx0dGhpcy5nZXRMaXNPZk9wdGlvbnModGhpcy52b2NhYnVsYXJ5VHlwZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXRMaXNPZk9wdGlvbnModHlwZSkge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdGNvbnN0IGNhbGxBcGkgPSB0aGlzLmNhY2hlYWJsZSA/IHRoaXMuZ2V0Q2FjaGVhYmxlVm9jYWJ1bGFyeUxpc3QodHlwZSkgOiB0aGlzLmdldFZvY2FidWxhcnlMaXN0KHR5cGUpO1xyXG5cdFx0Y2FsbEFwaS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdGlmICh0aGlzLm9ubHlJZHM/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdHJlcyA9IHJlcy5maWx0ZXIoKHEpID0+IHRoaXMub25seUlkcy5pbmNsdWRlcyhxLmlkKSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuZGF0YSA9ICF0aGlzLnNod29BbGxWYWx1ZXNcclxuXHRcdFx0XHQ/IHJlcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlkLmluY2x1ZGVzKCdhcmNoaXZlZCcpICYmICFpdGVtLmlkLmluY2x1ZGVzKCdkcmFmdCcpKVxyXG5cdFx0XHRcdDogcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5vYnNvbGV0ZSA9PT0gMCk7XHJcblx0XHRcdHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRAQ2FjaGVhYmxlKHtcclxuXHRcdG1heENhY2hlQ291bnQ6IDEwMDAsXHJcblx0XHRzdG9yYWdlU3RyYXRlZ3k6IExvY2FsU3RvcmFnZVN0cmF0ZWd5LFxyXG5cdFx0bWF4QWdlOiAyMDAwMFxyXG5cdH0pXHJcblx0Z2V0Q2FjaGVhYmxlVm9jYWJ1bGFyeUxpc3QodHlwZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMudm9jYWJ1bGFyeUFwaS5nZXRWb2NhYnVsYXJ5TGlzdCh0eXBlKTtcclxuXHR9XHJcblxyXG5cdGdldFZvY2FidWxhcnlMaXN0KHR5cGUpIHtcclxuXHRcdHJldHVybiB0aGlzLnZvY2FidWxhcnlBcGkuZ2V0Vm9jYWJ1bGFyeUxpc3QodHlwZSk7XHJcblx0fVxyXG5cdGdldFNlbGVjdGVkaXRlbXMoc2VsZWN0ZWRJdGVtcykge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3Rpb24pO1xyXG5cdFx0dGhpcy5vblNlbGVjdGluZy5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdHdyaXRlVmFsdWUodmFsdWUpIHtcclxuXHRcdC8vIGlmICh2YWx1ZSkgeyByZW1vdmVkIHRvIGFsbG93IHJlc2V0aW5nIHVpIHdoZW4gcmVzZXR0aW5nIGZvcm1cclxuXHRcdHRoaXMuc2VsZWN0aW9uID0gdmFsdWU7XHJcblx0XHQvLyB9XHJcblx0fVxyXG5cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoZWQgPSBmbjtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcblx0XHRyZXR1cm4gdGhpcy52YWxpZGF0ZUZuKGMpO1xyXG5cdH1cclxuXHRpc1JlcXVpcmVkKCkge1xyXG5cdFx0aWYgKCF0aGlzLmNvbnRyb2wgfHwgIXRoaXMuY29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgdmFsaWRhdG9yID0gdGhpcy5jb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XHJcblx0XHRyZXR1cm4gdmFsaWRhdG9yICYmIHZhbGlkYXRvci5yZXF1aXJlZDtcclxuXHR9XHJcblx0aGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuc2hvd0Vycm9yO1xyXG5cdH1cclxuXHRyZXNldCgpIHtcclxuXHRcdHRoaXMuRHluYW1pY0Zvcm1TZWxlY3RJdGVtQ29tcG9uZW50LnJlc2V0KCk7XHJcblx0fVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzZWxlY3QtbGFiZWxcIlxyXG4gICAgICA+e3sgbGFiZWwgfCB0cmFuc2xhdGVcclxuICAgICAgfX08c3BhbiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXgtMVwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPGFwcC1keW5hbWljLWZvcm0tc2VsZWN0aXRlbVxyXG4gIFt2b2NdPVwidHJ1ZVwiXHJcbiAgW3ZvY0lkXT1cInZvY2FidWxhcnlUeXBlXCJcclxuICBbZGF0YV09XCJkYXRhXCJcclxuICBbYmluZExhYmVsXT1cImJpbmRMYWJlbFwiXHJcbiAgW2JpbmRWYWx1ZV09XCJiaW5kVmFsdWVcIlxyXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcclxuICBbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcclxuICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtoaWRlU2VsZWN0ZWRJdGVtc109XCJoaWRlU2VsZWN0ZWRJdGVtc1wiXHJcbiAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgKG9uU2VsZWN0SXRlbXMpPVwiZ2V0U2VsZWN0ZWRpdGVtcygkZXZlbnQpXCJcclxuICBbKG5nTW9kZWwpXT1cInNlbGVjdGlvblwiXHJcbj48L2FwcC1keW5hbWljLWZvcm0tc2VsZWN0aXRlbT5cclxuPG1hdC1lcnJvclxyXG4gIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1lcnJvci0nXCJcclxuICBjbGFzcz1cImFwcC10ZXh0aXRlbS1lZGl0YWJsZS1lcnJvclwiXHJcbiAgKm5nSWY9XCJoYXNFcnJvcnMoKVwiXHJcbj5cclxuICA8dWw+XHJcbiAgICA8bGkgKm5nSWY9XCJjb250cm9sLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fSB7eyBcIlZBTElEQVRPUlMuUkVRVUlSRURcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG48L21hdC1lcnJvcj5cclxuIl19
@@ -96,7 +96,7 @@ export class GregorianDatepickerComponent {
96
96
  }
97
97
  }
98
98
  GregorianDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GregorianDatepickerComponent, deps: [{ token: i1.NgbCalendar }, { token: i1.NgbDateParserFormatter }], target: i0.ɵɵFactoryTarget.Component });
99
- GregorianDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GregorianDatepickerComponent, selector: "gregorian-date-picker", inputs: { selectedDate: "selectedDate", readonly: "readonly", isRequired: "isRequired", disabled: "disabled", min: "min", max: "max", name: "name", range: "range", vertical: "vertical", emitOnBlur: "emitOnBlur", placeHolder: "placeHolder" }, outputs: { selectedDateChange: "selectedDateChange" }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["d"], descendants: true }], ngImport: i0, template: "<div provideParentForm>\r\n\t<input\r\n\t\tclass=\"form-control\"\r\n\t\t[ngClass]=\"{ hidden: range, 'input-filled': selectedDate }\"\r\n\t\t[ngModel]=\"!range && selectedDate\"\r\n\t\t(ngModelChange)=\"!range && (selectedDate = $event)\"\r\n\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\tngbDatepicker\r\n\t\t(click)=\"d.toggle()\"\r\n\t\t(keyup.enter)=\"openDatePicker()\"\r\n\t\t(dateSelect)=\"onDateSelection($event)\"\r\n\t\t#d=\"ngbDatepicker\"\r\n\t\tfirstDayOfWeek=\"7\"\r\n\t\t[readonly]=\"readonly\"\r\n\t\t[autoClose]=\"range ? 'outside' : true\"\r\n\t\t[minDate]=\"min\"\r\n\t\t[maxDate]=\"max\"\r\n\t\t[required]=\"isRequired\"\r\n\t\t[displayMonths]=\"range ? 2 : 1\"\r\n\t\t[name]=\"name\"\r\n\t\t[startDate]=\"range ? selectedDate.from! : selectedDate!\"\r\n\t\t[dayTemplate]=\"t\"\r\n\t\t(blur)=\"onBlur()\"\r\n\t\t[footerTemplate]=\"footerTemplate\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\tcontainer=\"body\"\r\n\t/>\r\n\t<ng-container *ngIf=\"range\">\r\n\t\t<div class=\"form-group ranger\" [ngClass]=\"{ vertical: vertical }\">\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<input\r\n\t\t\t\t\t#dpFromDate\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t(click)=\"d.toggle()\"\r\n\t\t\t\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\t\t\t\tname=\"dpFromDate\"\r\n\t\t\t\t\t[value]=\"formatter.format(selectedDate.from)\"\r\n\t\t\t\t\t(input)=\"fromDate = validateInput(selectedDate.from, dpFromDate.value)\"\r\n\t\t\t\t/>\r\n\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t<button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n\t\t\t\t\t\t<i class=\"bi bi-calendar-week icon\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"form-group ranger\" [ngClass]=\"{ vertical: vertical }\">\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<input\r\n\t\t\t\t\t#dpToDate\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t(click)=\"d.toggle()\"\r\n\t\t\t\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\t\t\t\tname=\"dpToDate\"\r\n\t\t\t\t\t[value]=\"formatter.format(selectedDate.to)\"\r\n\t\t\t\t\t(input)=\"selectedDate.to = validateInput(selectedDate.to, dpToDate.value)\"\r\n\t\t\t\t/>\r\n\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t<button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n\t\t\t\t\t\t<i class=\"bi bi-calendar-week icon\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</div>\r\n<ng-template #t let-date let-focused=\"focused\">\r\n\t<span\r\n\t\tclass=\"custom-day\"\r\n\t\t[class.focused]=\"focused || isToday(date)\"\r\n\t\t[class.range]=\"isRange(date) || isSelectedDate(date)\"\r\n\t\t[class.faded]=\"isHovered(date) || (isInside(date) && range)\"\r\n\t\t(mouseenter)=\"hoveredDate = date\"\r\n\t\t(mouseleave)=\"hoveredDate = null\"\r\n\t>\r\n\t\t{{ date.day }}\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n\t<hr class=\"my-0\" />\r\n\t<button class=\"btn btn-secondary btn-sm m-2 float-right\" type=\"button\" (click)=\"d.close()\">\r\n\t\t{{ 'BUTTONS.CLOSE' | translate }}\r\n\t</button>\r\n\t<button class=\"btn btn-primary btn-sm m-2 float-left\" type=\"button\" (click)=\"clear()\">\r\n\t\t{{ 'BUTTONS.CLEAR' | translate }}\r\n\t</button>\r\n</ng-template>\r\n", styles: [".date-input-container{position:relative}.date-input-container .date-input-wrapper{position:absolute;width:100%;height:100%;z-index:999999}.hijriInput{border-top-left-radius:0;border-bottom-left-radius:0}.input-filled{border-color:#1a96c6!important}.ngb-dp-weekday{width:2.1rem!important}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#0275d8;color:#fff}.custom-day.faded{background-color:#0275d880}.ranger{width:calc(50% - 5px);margin:0 2px;float:left}.ranger.vertical{width:calc(100% - 5px);margin:8px 2px}.ranger.vertical:nth-child(2){margin-top:0}.ranger.vertical:last-child{margin-bottom:0}.rtl .custom-select{background:#ffffff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") left .75rem center/8px 10px no-repeat}.rtl .ngb-dp-arrow-btn{transform:rotate(180deg)}.rtl .ranger{float:right}\n"], directives: [{ type: i2.ProvideParentFormDirective, selector: "[provideParentForm]" }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekdays", "showWeekNumbers", "startDate", "container", "positionTarget"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i5.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
99
+ GregorianDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GregorianDatepickerComponent, selector: "gregorian-date-picker", inputs: { selectedDate: "selectedDate", readonly: "readonly", isRequired: "isRequired", disabled: "disabled", min: "min", max: "max", name: "name", range: "range", vertical: "vertical", emitOnBlur: "emitOnBlur", containerName: "containerName", placeHolder: "placeHolder" }, outputs: { selectedDateChange: "selectedDateChange" }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["d"], descendants: true }], ngImport: i0, template: "<div provideParentForm>\r\n\t<input\r\n\t\tclass=\"form-control\"\r\n\t\t[ngClass]=\"{ hidden: range, 'input-filled': selectedDate }\"\r\n\t\t[ngModel]=\"!range && selectedDate\"\r\n\t\t(ngModelChange)=\"!range && (selectedDate = $event)\"\r\n\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\tngbDatepicker\r\n\t\t(click)=\"d.toggle()\"\r\n\t\t(keyup.enter)=\"openDatePicker()\"\r\n\t\t(dateSelect)=\"onDateSelection($event)\"\r\n\t\t#d=\"ngbDatepicker\"\r\n\t\tfirstDayOfWeek=\"7\"\r\n\t\t[readonly]=\"readonly\"\r\n\t\t[autoClose]=\"range ? 'outside' : true\"\r\n\t\t[minDate]=\"min\"\r\n\t\t[maxDate]=\"max\"\r\n\t\t[required]=\"isRequired\"\r\n\t\t[displayMonths]=\"range ? 2 : 1\"\r\n\t\t[name]=\"name\"\r\n\t\t[startDate]=\"range ? selectedDate.from! : selectedDate!\"\r\n\t\t[dayTemplate]=\"t\"\r\n\t\t(blur)=\"onBlur()\"\r\n\t\t[footerTemplate]=\"footerTemplate\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[container]=\"containerName\"\r\n\t/>\r\n\t<ng-container *ngIf=\"range\">\r\n\t\t<div class=\"form-group ranger\" [ngClass]=\"{ vertical: vertical }\">\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<input\r\n\t\t\t\t\t#dpFromDate\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t(click)=\"d.toggle()\"\r\n\t\t\t\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\t\t\t\tname=\"dpFromDate\"\r\n\t\t\t\t\t[value]=\"formatter.format(selectedDate.from)\"\r\n\t\t\t\t\t(input)=\"fromDate = validateInput(selectedDate.from, dpFromDate.value)\"\r\n\t\t\t\t/>\r\n\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t<button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n\t\t\t\t\t\t<i class=\"bi bi-calendar-week icon\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"form-group ranger\" [ngClass]=\"{ vertical: vertical }\">\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<input\r\n\t\t\t\t\t#dpToDate\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t(click)=\"d.toggle()\"\r\n\t\t\t\t\t[placeholder]=\"placeHolder ? placeHolder : 'd/M/yyyy'\"\r\n\t\t\t\t\tname=\"dpToDate\"\r\n\t\t\t\t\t[value]=\"formatter.format(selectedDate.to)\"\r\n\t\t\t\t\t(input)=\"selectedDate.to = validateInput(selectedDate.to, dpToDate.value)\"\r\n\t\t\t\t/>\r\n\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t<button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n\t\t\t\t\t\t<i class=\"bi bi-calendar-week icon\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</div>\r\n<ng-template #t let-date let-focused=\"focused\">\r\n\t<span\r\n\t\tclass=\"custom-day\"\r\n\t\t[class.focused]=\"focused || isToday(date)\"\r\n\t\t[class.range]=\"isRange(date) || isSelectedDate(date)\"\r\n\t\t[class.faded]=\"isHovered(date) || (isInside(date) && range)\"\r\n\t\t(mouseenter)=\"hoveredDate = date\"\r\n\t\t(mouseleave)=\"hoveredDate = null\"\r\n\t>\r\n\t\t{{ date.day }}\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n\t<hr class=\"my-0\" />\r\n\t<button class=\"btn btn-secondary btn-sm m-2 float-right\" type=\"button\" (click)=\"d.close()\">\r\n\t\t{{ 'BUTTONS.CLOSE' | translate }}\r\n\t</button>\r\n\t<button class=\"btn btn-primary btn-sm m-2 float-left\" type=\"button\" (click)=\"clear()\">\r\n\t\t{{ 'BUTTONS.CLEAR' | translate }}\r\n\t</button>\r\n</ng-template>\r\n", styles: [".date-input-container{position:relative}.date-input-container .date-input-wrapper{position:absolute;width:100%;height:100%;z-index:999999}.hijriInput{border-top-left-radius:0;border-bottom-left-radius:0}.input-filled{border-color:#1a96c6!important}.ngb-dp-weekday{width:2.1rem!important}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#0275d8;color:#fff}.custom-day.faded{background-color:#0275d880}.ranger{width:calc(50% - 5px);margin:0 2px;float:left}.ranger.vertical{width:calc(100% - 5px);margin:8px 2px}.ranger.vertical:nth-child(2){margin-top:0}.ranger.vertical:last-child{margin-bottom:0}.rtl .custom-select{background:#ffffff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") left .75rem center/8px 10px no-repeat}.rtl .ngb-dp-arrow-btn{transform:rotate(180deg)}.rtl .ranger{float:right}\n"], directives: [{ type: i2.ProvideParentFormDirective, selector: "[provideParentForm]" }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekdays", "showWeekNumbers", "startDate", "container", "positionTarget"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i5.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
100
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GregorianDatepickerComponent, decorators: [{
101
101
  type: Component,
102
102
  args: [{
@@ -130,7 +130,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
130
130
  type: Input
131
131
  }], emitOnBlur: [{
132
132
  type: Input
133
+ }], containerName: [{
134
+ type: Input
133
135
  }], placeHolder: [{
134
136
  type: Input
135
137
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZ29yaWFuLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBZSxPQUFPLEVBQXlDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFRekcsTUFBTSxPQUFPLDRCQUE0QjtJQW9CeEMsWUFDUSxRQUFxQixFQUNyQixTQUFpQztRQURqQyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBbEIvQix1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlqQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQVNsQyxnREFBZ0Q7SUFDakQsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFhO1FBQ3RCLE9BQU8sQ0FDTixJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDdEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYTtRQUNyQixPQUFPLENBQ04sSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FDTixJQUFJLENBQUMsWUFBWTtnQkFDakIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUNuQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdEIsQ0FBQztTQUNGO2FBQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFJO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQUk7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzthQUM5QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQzlCO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDaEQ7U0FDRDthQUFNO1lBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEQ7SUFDRixDQUFDO0lBQ0QsYUFBYSxDQUFDLFlBQTRCLEVBQUUsS0FBYTtRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNwRyxDQUFDO0lBQ0QsTUFBTTtRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztJQUNGLENBQUM7SUFDRCxjQUFjO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsRUFBRTtZQUNoRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3pCO2FBQU07WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO0lBQ0YsQ0FBQztJQUNELEtBQUs7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7MEhBdkdXLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLHVjQ1R6QyxnekdBd0ZBOzRGRC9FYSw0QkFBNEI7a0JBTnhDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ3JELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUNyQzt1SUFFZ0IsVUFBVTtzQkFBekIsU0FBUzt1QkFBQyxHQUFHO2dCQUVMLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdncmVnb3JpYW4tZGF0ZS1waWNrZXInLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ncmVnb3JpYW4tZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZ3JlZ29yaWFuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JlZ29yaWFuRGF0ZXBpY2tlckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnZCcpIGRhdGVQaWNrZXI6IGFueTtcclxuXHJcblx0QElucHV0KCkgc2VsZWN0ZWREYXRlOiBhbnk7XHJcblx0QE91dHB1dCgpIHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcblx0QElucHV0KCkgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblx0QElucHV0KCkgbWluOiBOZ2JEYXRlU3RydWN0O1xyXG5cdEBJbnB1dCgpIG1heDogTmdiRGF0ZVN0cnVjdDtcclxuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcblx0QElucHV0KCkgcmFuZ2UgPSBmYWxzZTtcclxuXHRASW5wdXQoKSB2ZXJ0aWNhbCA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGVtaXRPbkJsdXIgPSB0cnVlO1xyXG5cdGhvdmVyZWREYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcblx0ZnJvbURhdGU7XHJcblx0dG9EYXRlO1xyXG5cdEBJbnB1dCgpIHBsYWNlSG9sZGVyOiBzdHJpbmc7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGNhbGVuZGFyOiBOZ2JDYWxlbmRhcixcclxuXHRcdHB1YmxpYyBmb3JtYXR0ZXI6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXJcclxuXHQpIHtcclxuXHRcdC8vIHRoaXMuc2VsZWN0ZWREYXRlLmZyb20gPSBjYWxlbmRhci5nZXRUb2RheSgpO1xyXG5cdH1cclxuXHJcblx0aXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlICYmXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlLmZyb20gJiZcclxuXHRcdFx0IXRoaXMuc2VsZWN0ZWREYXRlLnRvICYmXHJcblx0XHRcdHRoaXMuaG92ZXJlZERhdGUgJiZcclxuXHRcdFx0ZGF0ZS5hZnRlcih0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tKSAmJlxyXG5cdFx0XHRkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlICYmXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlLnRvICYmXHJcblx0XHRcdGRhdGUuYWZ0ZXIodGhpcy5zZWxlY3RlZERhdGUuZnJvbSkgJiZcclxuXHRcdFx0ZGF0ZS5iZWZvcmUodGhpcy5zZWxlY3RlZERhdGUudG8pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0aXNSYW5nZShkYXRlOiBOZ2JEYXRlKSB7XHJcblx0XHRpZiAodGhpcy5yYW5nZSkge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlICYmXHJcblx0XHRcdFx0KGRhdGUuZXF1YWxzKHRoaXMuc2VsZWN0ZWREYXRlLmZyb20pIHx8XHJcblx0XHRcdFx0XHQodGhpcy5zZWxlY3RlZERhdGUudG8gJiYgZGF0ZS5lcXVhbHModGhpcy5zZWxlY3RlZERhdGUudG8pKSB8fFxyXG5cdFx0XHRcdFx0dGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG5cdFx0XHRcdFx0dGhpcy5pc0hvdmVyZWQoZGF0ZSkpXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cdGlzU2VsZWN0ZWREYXRlKGRhdGUpIHtcclxuXHRcdHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZSAmJiAhdGhpcy5yYW5nZSAmJiBkYXRlLmVxdWFscyh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcblx0fVxyXG5cdGlzVG9kYXkoZGF0ZSkge1xyXG5cdFx0cmV0dXJuIGRhdGUuZXF1YWxzKHRoaXMuY2FsZW5kYXIuZ2V0VG9kYXkoKSk7XHJcblx0fVxyXG5cdG9uRGF0ZVNlbGVjdGlvbihkYXRlKSB7XHJcblx0XHRpZiAodGhpcy5yYW5nZSkge1xyXG5cdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWREYXRlLmZyb20gJiYgIXRoaXMuc2VsZWN0ZWREYXRlLnRvKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZERhdGUuZnJvbSA9IGRhdGU7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGUuZnJvbSAmJiAhdGhpcy5zZWxlY3RlZERhdGUudG8gJiYgZGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuc2VsZWN0ZWREYXRlLmZyb20pKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZERhdGUudG8gPSBkYXRlO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlLnRvID0gbnVsbDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tID0gZGF0ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZERhdGUuZnJvbSAmJiB0aGlzLnNlbGVjdGVkRGF0ZS50bykge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuXHRcdH1cclxuXHR9XHJcblx0dmFsaWRhdGVJbnB1dChjdXJyZW50VmFsdWU6IE5nYkRhdGUgfCBudWxsLCBpbnB1dDogc3RyaW5nKTogTmdiRGF0ZSB8IG51bGwge1xyXG5cdFx0Y29uc3QgcGFyc2VkID0gdGhpcy5mb3JtYXR0ZXIucGFyc2UoaW5wdXQpO1xyXG5cdFx0cmV0dXJuIHBhcnNlZCAmJiB0aGlzLmNhbGVuZGFyLmlzVmFsaWQoTmdiRGF0ZS5mcm9tKHBhcnNlZCkpID8gTmdiRGF0ZS5mcm9tKHBhcnNlZCkgOiBjdXJyZW50VmFsdWU7XHJcblx0fVxyXG5cdG9uQmx1cigpIHtcclxuXHRcdGlmICghdGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5lbWl0T25CbHVyKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQobnVsbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdG9wZW5EYXRlUGlja2VyKCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWREYXRlID09IG51bGwgfHwgdGhpcy5zZWxlY3RlZERhdGUgPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRoaXMuZGF0ZVBpY2tlci50b2dnbGUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRjbGVhcigpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5yYW5nZSA/IHsgZnJvbTogdW5kZWZpbmVkLCB0bzogdW5kZWZpbmVkIH0gOiB1bmRlZmluZWQ7XHJcblx0XHR0aGlzLmRhdGVQaWNrZXIuY2xvc2UoKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQobnVsbCk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgcHJvdmlkZVBhcmVudEZvcm0+XHJcblx0PGlucHV0XHJcblx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRbbmdDbGFzc109XCJ7IGhpZGRlbjogcmFuZ2UsICdpbnB1dC1maWxsZWQnOiBzZWxlY3RlZERhdGUgfVwiXHJcblx0XHRbbmdNb2RlbF09XCIhcmFuZ2UgJiYgc2VsZWN0ZWREYXRlXCJcclxuXHRcdChuZ01vZGVsQ2hhbmdlKT1cIiFyYW5nZSAmJiAoc2VsZWN0ZWREYXRlID0gJGV2ZW50KVwiXHJcblx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIgPyBwbGFjZUhvbGRlciA6ICdkL00veXl5eSdcIlxyXG5cdFx0bmdiRGF0ZXBpY2tlclxyXG5cdFx0KGNsaWNrKT1cImQudG9nZ2xlKClcIlxyXG5cdFx0KGtleXVwLmVudGVyKT1cIm9wZW5EYXRlUGlja2VyKClcIlxyXG5cdFx0KGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIlxyXG5cdFx0I2Q9XCJuZ2JEYXRlcGlja2VyXCJcclxuXHRcdGZpcnN0RGF5T2ZXZWVrPVwiN1wiXHJcblx0XHRbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG5cdFx0W2F1dG9DbG9zZV09XCJyYW5nZSA/ICdvdXRzaWRlJyA6IHRydWVcIlxyXG5cdFx0W21pbkRhdGVdPVwibWluXCJcclxuXHRcdFttYXhEYXRlXT1cIm1heFwiXHJcblx0XHRbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXHJcblx0XHRbZGlzcGxheU1vbnRoc109XCJyYW5nZSA/IDIgOiAxXCJcclxuXHRcdFtuYW1lXT1cIm5hbWVcIlxyXG5cdFx0W3N0YXJ0RGF0ZV09XCJyYW5nZSA/IHNlbGVjdGVkRGF0ZS5mcm9tISA6IHNlbGVjdGVkRGF0ZSFcIlxyXG5cdFx0W2RheVRlbXBsYXRlXT1cInRcIlxyXG5cdFx0KGJsdXIpPVwib25CbHVyKClcIlxyXG5cdFx0W2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuXHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcblx0XHRjb250YWluZXI9XCJib2R5XCJcclxuXHQvPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJyYW5nZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcmFuZ2VyXCIgW25nQ2xhc3NdPVwieyB2ZXJ0aWNhbDogdmVydGljYWwgfVwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuXHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdCNkcEZyb21EYXRlXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZC50b2dnbGUoKVwiXHJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIgPyBwbGFjZUhvbGRlciA6ICdkL00veXl5eSdcIlxyXG5cdFx0XHRcdFx0bmFtZT1cImRwRnJvbURhdGVcIlxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdHRlci5mb3JtYXQoc2VsZWN0ZWREYXRlLmZyb20pXCJcclxuXHRcdFx0XHRcdChpbnB1dCk9XCJmcm9tRGF0ZSA9IHZhbGlkYXRlSW5wdXQoc2VsZWN0ZWREYXRlLmZyb20sIGRwRnJvbURhdGUudmFsdWUpXCJcclxuXHRcdFx0XHQvPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImQudG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktY2FsZW5kYXItd2VlayBpY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByYW5nZXJcIiBbbmdDbGFzc109XCJ7IHZlcnRpY2FsOiB2ZXJ0aWNhbCB9XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG5cdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0I2RwVG9EYXRlXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZC50b2dnbGUoKVwiXHJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIgPyBwbGFjZUhvbGRlciA6ICdkL00veXl5eSdcIlxyXG5cdFx0XHRcdFx0bmFtZT1cImRwVG9EYXRlXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHNlbGVjdGVkRGF0ZS50bylcIlxyXG5cdFx0XHRcdFx0KGlucHV0KT1cInNlbGVjdGVkRGF0ZS50byA9IHZhbGlkYXRlSW5wdXQoc2VsZWN0ZWREYXRlLnRvLCBkcFRvRGF0ZS52YWx1ZSlcIlxyXG5cdFx0XHRcdC8+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1jYWxlbmRhci13ZWVrIGljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjdCBsZXQtZGF0ZSBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuXHQ8c3BhblxyXG5cdFx0Y2xhc3M9XCJjdXN0b20tZGF5XCJcclxuXHRcdFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWQgfHwgaXNUb2RheShkYXRlKVwiXHJcblx0XHRbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKSB8fCBpc1NlbGVjdGVkRGF0ZShkYXRlKVwiXHJcblx0XHRbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IChpc0luc2lkZShkYXRlKSAmJiByYW5nZSlcIlxyXG5cdFx0KG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuXHRcdChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiXHJcblx0PlxyXG5cdFx0e3sgZGF0ZS5kYXkgfX1cclxuXHQ8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG5cdDxociBjbGFzcz1cIm15LTBcIiAvPlxyXG5cdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gbS0yIGZsb2F0LXJpZ2h0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkLmNsb3NlKClcIj5cclxuXHRcdHt7ICdCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVxyXG5cdDwvYnV0dG9uPlxyXG5cdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG0tMiBmbG9hdC1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhcigpXCI+XHJcblx0XHR7eyAnQlVUVE9OUy5DTEVBUicgfCB0cmFuc2xhdGUgfX1cclxuXHQ8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZ29yaWFuLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBZSxPQUFPLEVBQXlDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFRekcsTUFBTSxPQUFPLDRCQUE0QjtJQXFCeEMsWUFDUSxRQUFxQixFQUNyQixTQUFpQztRQURqQyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBbkIvQix1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUlqQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsYUFBUSxHQUFHLEtB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cEMsQ0FBQzs7MEhBeEdXLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLHVlQ1R6QywyekdBd0ZBOzRGRC9FYSw0QkFBNEI7a0JBTnhDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ3JELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUNyQzt1SUFFZ0IsVUFBVTtzQkFBekIsU0FBUzt1QkFBQyxHQUFHO2dCQUVMLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGUsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVTdHJ1Y3QgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2dyZWdvcmlhbi1kYXRlLXBpY2tlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2dyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9ncmVnb3JpYW4tZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmVnb3JpYW5EYXRlcGlja2VyQ29tcG9uZW50IHtcclxuXHRAVmlld0NoaWxkKCdkJykgZGF0ZVBpY2tlcjogYW55O1xyXG5cclxuXHRASW5wdXQoKSBzZWxlY3RlZERhdGU6IGFueTtcclxuXHRAT3V0cHV0KCkgc2VsZWN0ZWREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0QElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBpc1JlcXVpcmVkID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBtaW46IE5nYkRhdGVTdHJ1Y3Q7XHJcblx0QElucHV0KCkgbWF4OiBOZ2JEYXRlU3RydWN0O1xyXG5cdEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuXHRASW5wdXQoKSByYW5nZSA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHZlcnRpY2FsID0gZmFsc2U7XHJcblx0QElucHV0KCkgZW1pdE9uQmx1ciA9IHRydWU7XHJcblx0QElucHV0KCkgY29udGFpbmVyTmFtZTtcclxuXHRob3ZlcmVkRGF0ZTogTmdiRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cdGZyb21EYXRlO1xyXG5cdHRvRGF0ZTtcclxuXHRASW5wdXQoKSBwbGFjZUhvbGRlcjogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsXHJcblx0XHRwdWJsaWMgZm9ybWF0dGVyOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyXHJcblx0KSB7XHJcblx0XHQvLyB0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tID0gY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHR9XHJcblxyXG5cdGlzSG92ZXJlZChkYXRlOiBOZ2JEYXRlKSB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZSAmJlxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tICYmXHJcblx0XHRcdCF0aGlzLnNlbGVjdGVkRGF0ZS50byAmJlxyXG5cdFx0XHR0aGlzLmhvdmVyZWREYXRlICYmXHJcblx0XHRcdGRhdGUuYWZ0ZXIodGhpcy5zZWxlY3RlZERhdGUuZnJvbSkgJiZcclxuXHRcdFx0ZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRpc0luc2lkZShkYXRlOiBOZ2JEYXRlKSB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZSAmJlxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZS50byAmJlxyXG5cdFx0XHRkYXRlLmFmdGVyKHRoaXMuc2VsZWN0ZWREYXRlLmZyb20pICYmXHJcblx0XHRcdGRhdGUuYmVmb3JlKHRoaXMuc2VsZWN0ZWREYXRlLnRvKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZSAmJlxyXG5cdFx0XHRcdChkYXRlLmVxdWFscyh0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tKSB8fFxyXG5cdFx0XHRcdFx0KHRoaXMuc2VsZWN0ZWREYXRlLnRvICYmIGRhdGUuZXF1YWxzKHRoaXMuc2VsZWN0ZWREYXRlLnRvKSkgfHxcclxuXHRcdFx0XHRcdHRoaXMuaXNJbnNpZGUoZGF0ZSkgfHxcclxuXHRcdFx0XHRcdHRoaXMuaXNIb3ZlcmVkKGRhdGUpKVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRpc1NlbGVjdGVkRGF0ZShkYXRlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5zZWxlY3RlZERhdGUgJiYgIXRoaXMucmFuZ2UgJiYgZGF0ZS5lcXVhbHModGhpcy5zZWxlY3RlZERhdGUpO1xyXG5cdH1cclxuXHRpc1RvZGF5KGRhdGUpIHtcclxuXHRcdHJldHVybiBkYXRlLmVxdWFscyh0aGlzLmNhbGVuZGFyLmdldFRvZGF5KCkpO1xyXG5cdH1cclxuXHRvbkRhdGVTZWxlY3Rpb24oZGF0ZSkge1xyXG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcclxuXHRcdFx0aWYgKCF0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tICYmICF0aGlzLnNlbGVjdGVkRGF0ZS50bykge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlLmZyb20gPSBkYXRlO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlLmZyb20gJiYgIXRoaXMuc2VsZWN0ZWREYXRlLnRvICYmIGRhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLnNlbGVjdGVkRGF0ZS5mcm9tKSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlLnRvID0gZGF0ZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZS50byA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZERhdGUuZnJvbSA9IGRhdGU7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWREYXRlLmZyb20gJiYgdGhpcy5zZWxlY3RlZERhdGUudG8pIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuXHRcdGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuXHRcdHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKSA/IE5nYkRhdGUuZnJvbShwYXJzZWQpIDogY3VycmVudFZhbHVlO1xyXG5cdH1cclxuXHRvbkJsdXIoKSB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuZW1pdE9uQmx1cikge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRvcGVuRGF0ZVBpY2tlcigpIHtcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkRGF0ZSA9PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWREYXRlID09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aGlzLmRhdGVQaWNrZXIudG9nZ2xlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmRhdGVQaWNrZXIuY2xvc2UoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Y2xlYXIoKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMucmFuZ2UgPyB7IGZyb206IHVuZGVmaW5lZCwgdG86IHVuZGVmaW5lZCB9IDogdW5kZWZpbmVkO1xyXG5cdFx0dGhpcy5kYXRlUGlja2VyLmNsb3NlKCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KG51bGwpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2IHByb3ZpZGVQYXJlbnRGb3JtPlxyXG5cdDxpbnB1dFxyXG5cdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG5cdFx0W25nQ2xhc3NdPVwieyBoaWRkZW46IHJhbmdlLCAnaW5wdXQtZmlsbGVkJzogc2VsZWN0ZWREYXRlIH1cIlxyXG5cdFx0W25nTW9kZWxdPVwiIXJhbmdlICYmIHNlbGVjdGVkRGF0ZVwiXHJcblx0XHQobmdNb2RlbENoYW5nZSk9XCIhcmFuZ2UgJiYgKHNlbGVjdGVkRGF0ZSA9ICRldmVudClcIlxyXG5cdFx0W3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyID8gcGxhY2VIb2xkZXIgOiAnZC9NL3l5eXknXCJcclxuXHRcdG5nYkRhdGVwaWNrZXJcclxuXHRcdChjbGljayk9XCJkLnRvZ2dsZSgpXCJcclxuXHRcdChrZXl1cC5lbnRlcik9XCJvcGVuRGF0ZVBpY2tlcigpXCJcclxuXHRcdChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuXHRcdCNkPVwibmdiRGF0ZXBpY2tlclwiXHJcblx0XHRmaXJzdERheU9mV2Vlaz1cIjdcIlxyXG5cdFx0W3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuXHRcdFthdXRvQ2xvc2VdPVwicmFuZ2UgPyAnb3V0c2lkZScgOiB0cnVlXCJcclxuXHRcdFttaW5EYXRlXT1cIm1pblwiXHJcblx0XHRbbWF4RGF0ZV09XCJtYXhcIlxyXG5cdFx0W3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxyXG5cdFx0W2Rpc3BsYXlNb250aHNdPVwicmFuZ2UgPyAyIDogMVwiXHJcblx0XHRbbmFtZV09XCJuYW1lXCJcclxuXHRcdFtzdGFydERhdGVdPVwicmFuZ2UgPyBzZWxlY3RlZERhdGUuZnJvbSEgOiBzZWxlY3RlZERhdGUhXCJcclxuXHRcdFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuXHRcdChibHVyKT1cIm9uQmx1cigpXCJcclxuXHRcdFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcblx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG5cdFx0W2NvbnRhaW5lcl09XCJjb250YWluZXJOYW1lXCJcclxuXHQvPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJyYW5nZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcmFuZ2VyXCIgW25nQ2xhc3NdPVwieyB2ZXJ0aWNhbDogdmVydGljYWwgfVwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuXHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdCNkcEZyb21EYXRlXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZC50b2dnbGUoKVwiXHJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIgPyBwbGFjZUhvbGRlciA6ICdkL00veXl5eSdcIlxyXG5cdFx0XHRcdFx0bmFtZT1cImRwRnJvbURhdGVcIlxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdHRlci5mb3JtYXQoc2VsZWN0ZWREYXRlLmZyb20pXCJcclxuXHRcdFx0XHRcdChpbnB1dCk9XCJmcm9tRGF0ZSA9IHZhbGlkYXRlSW5wdXQoc2VsZWN0ZWREYXRlLmZyb20sIGRwRnJvbURhdGUudmFsdWUpXCJcclxuXHRcdFx0XHQvPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImQudG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktY2FsZW5kYXItd2VlayBpY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByYW5nZXJcIiBbbmdDbGFzc109XCJ7IHZlcnRpY2FsOiB2ZXJ0aWNhbCB9XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG5cdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0I2RwVG9EYXRlXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZC50b2dnbGUoKVwiXHJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIgPyBwbGFjZUhvbGRlciA6ICdkL00veXl5eSdcIlxyXG5cdFx0XHRcdFx0bmFtZT1cImRwVG9EYXRlXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHNlbGVjdGVkRGF0ZS50bylcIlxyXG5cdFx0XHRcdFx0KGlucHV0KT1cInNlbGVjdGVkRGF0ZS50byA9IHZhbGlkYXRlSW5wdXQoc2VsZWN0ZWREYXRlLnRvLCBkcFRvRGF0ZS52YWx1ZSlcIlxyXG5cdFx0XHRcdC8+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1jYWxlbmRhci13ZWVrIGljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjdCBsZXQtZGF0ZSBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuXHQ8c3BhblxyXG5cdFx0Y2xhc3M9XCJjdXN0b20tZGF5XCJcclxuXHRcdFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWQgfHwgaXNUb2RheShkYXRlKVwiXHJcblx0XHRbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKSB8fCBpc1NlbGVjdGVkRGF0ZShkYXRlKVwiXHJcblx0XHRbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IChpc0luc2lkZShkYXRlKSAmJiByYW5nZSlcIlxyXG5cdFx0KG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuXHRcdChtb3VzZWxlYXZlKT1cImhvdmVyZWREYXRlID0gbnVsbFwiXHJcblx0PlxyXG5cdFx0e3sgZGF0ZS5kYXkgfX1cclxuXHQ8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG5cdDxociBjbGFzcz1cIm15LTBcIiAvPlxyXG5cdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gbS0yIGZsb2F0LXJpZ2h0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkLmNsb3NlKClcIj5cclxuXHRcdHt7ICdCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVxyXG5cdDwvYnV0dG9uPlxyXG5cdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG0tMiBmbG9hdC1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhcigpXCI+XHJcblx0XHR7eyAnQlVUVE9OUy5DTEVBUicgfCB0cmFuc2xhdGUgfX1cclxuXHQ8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19