@c8y/ngx-components 1017.0.8 → 1017.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/esm2020/actility-device-registration/actility-device-registration.component.mjs +3 -3
  2. package/esm2020/context-dashboard/context-dashboard.component.mjs +3 -3
  3. package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
  4. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +43 -51
  5. package/esm2020/context-dashboard/widget-preview.component.mjs +3 -3
  6. package/esm2020/core/authentication/sms-challenge.component.mjs +3 -3
  7. package/esm2020/core/authentication/totp-challenge.component.mjs +3 -3
  8. package/esm2020/core/breadcrumb/breadcrumb-outlet.component.mjs +3 -3
  9. package/esm2020/core/dashboard/dashboard-child.component.mjs +3 -3
  10. package/esm2020/core/dashboard/widget-time-context.component.mjs +3 -3
  11. package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
  12. package/esm2020/core/date-picker/date-picker.component.mjs +3 -3
  13. package/esm2020/core/drop-area/drop-area.component.mjs +3 -3
  14. package/esm2020/core/file-picker/file-picker.component.mjs +3 -3
  15. package/esm2020/core/header/application/app-switcher.component.mjs +3 -3
  16. package/esm2020/core/login/credentials.component.mjs +3 -3
  17. package/esm2020/core/login/login.component.mjs +3 -3
  18. package/esm2020/core/modal/modal.component.mjs +3 -3
  19. package/esm2020/core/select/typeahead.component.mjs +3 -3
  20. package/esm2020/device-grid/columns/alarms.cell-renderer.component.mjs +3 -3
  21. package/esm2020/loriot-device-registration/loriot-device-registration-button.component.mjs +3 -1
  22. package/esm2020/loriot-device-registration/loriot-device-registration.component.mjs +3 -3
  23. package/esm2020/operations/bulk-operations-list/bulk-operations-list.component.mjs +3 -3
  24. package/esm2020/operations/operations-list/operations-list-item.component.mjs +3 -3
  25. package/esm2020/operations/operations-list/operations-list.component.mjs +3 -3
  26. package/esm2020/register-device/bulk/bulk-device-registration-modal.component.mjs +3 -3
  27. package/esm2020/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.mjs +3 -3
  28. package/esm2020/register-device/extensible/single/extensible-device-registration-modal.component.mjs +3 -3
  29. package/esm2020/register-device/general/general-device-registration.component.mjs +3 -3
  30. package/esm2020/repository/software/device-tab/device-software-list.component.mjs +3 -3
  31. package/esm2020/repository/software/device-tab/installed-software.component.mjs +3 -3
  32. package/esm2020/repository/software/list/add-software-modal.component.mjs +3 -3
  33. package/esm2020/sigfox-device-registration/sigfox-device-registration.component.mjs +3 -3
  34. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs +2 -2
  35. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  36. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +48 -56
  37. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  38. package/fesm2015/c8y-ngx-components-device-grid.mjs +2 -2
  39. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  40. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  41. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  42. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  43. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  44. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs +4 -4
  45. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  46. package/fesm2015/c8y-ngx-components-register-device.mjs +8 -8
  47. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  48. package/fesm2015/c8y-ngx-components-repository-software.mjs +6 -6
  49. package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
  50. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  51. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  52. package/fesm2015/c8y-ngx-components.mjs +28 -28
  53. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  54. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs +2 -2
  55. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  56. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +48 -56
  57. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  58. package/fesm2020/c8y-ngx-components-device-grid.mjs +2 -2
  59. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  60. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  61. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  62. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  63. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  64. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs +4 -4
  65. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  66. package/fesm2020/c8y-ngx-components-register-device.mjs +8 -8
  67. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  68. package/fesm2020/c8y-ngx-components-repository-software.mjs +6 -6
  69. package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
  70. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  71. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  72. package/fesm2020/c8y-ngx-components.mjs +28 -28
  73. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  74. package/locales/locales.pot +6 -9
  75. package/package.json +2 -2
@@ -36,11 +36,11 @@ export class DatePickerComponent {
36
36
  }
37
37
  }
38
38
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }] });
39
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }] });
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, decorators: [{
41
41
  type: Component,
42
- args: [{ selector: 'c8y-date-picker', template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
42
+ args: [{ selector: 'c8y-date-picker', template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
43
43
  }], propDecorators: { onDateSelected: [{
44
44
  type: Output
45
45
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS1ksbUJBQWMsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTRCMUU7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDaEMsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Z0hBNUJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNHQ1JoQyx1L0ZBc0ZBOzJGRDlFYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUlqQixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGlja2VkRGF0ZXMgfSBmcm9tICcuL2RhdGUtcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8UGlja2VkRGF0ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xuICBmZ0RhdGVQaWNrZXI6IEZvcm1Hcm91cDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlciA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF0ZVRvOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyKCkge1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmZnRGF0ZVBpY2tlci52YWx1ZSk7XG4gICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICB0aGlzLmRhdGVUbyA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWU7XG4gIH1cblxuICBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlci5zZXRWYWx1ZSh7XG4gICAgICBkYXRlRnJvbTogbnVsbCxcbiAgICAgIGRhdGVUbzogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmRhdGVGcm9tID0gbnVsbDtcbiAgICB0aGlzLmRhdGVUbyA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZHJvcGRvd25cbiAgY2xhc3M9XCJjOHktY2hpbGQtYXNzZXRzLXNlbGVjdG9yIGRyb3Bkb3duXCJcbiAgI2RhdGVmaWx0ZXI9XCJicy1kcm9wZG93blwiXG4gIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0XCJcbiAgW2luc2lkZUNsaWNrXT1cInRydWVcIlxuPlxuICA8YnV0dG9uXG4gICAgaWQ9XCJkYXRlLXJhbmdlXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHRpdGxlPVwie3sgJ0RhdGUgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlIGQtZmxleCBhLWktY2VudGVyIGM4eS1kcm9wZG93blwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiY2FsZW5kYXItb1wiIGNsYXNzPVwibS1yLTQgdGV4dC1wcmltYXJ5XCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlRnJvbVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIj57eyAnRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIHt7IGRhdGVGcm9tIHwgZGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlVG9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAge3sgZGF0ZVRvIHwgZGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0ZUZyb20gJiYgIWRhdGVUb1wiPlxuICAgICAgICB7eyAnRmlsdGVyIGJ5IGRhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgIGlkPVwiZHJvcGRvd24tZGF0ZS1yYW5nZVwiXG4gICAgKmRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRhdGUtcmFuZ2VcIlxuICA+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmZ0RhdGVQaWNrZXJcIiBjbGFzcz1cImRyb3Bkb3duLWZvcm1cIj5cbiAgICAgIDxzcGFuIGZvcj1cImRhdGVGcm9tXCIgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBtLWItNFwiIHRyYW5zbGF0ZT5EYXRlIGZyb208L3NwYW4+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJkYXRlcGlja2VyIGQtYmxvY2sgbS1iLTE2XCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMnB4XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwiZGF0ZUZyb21cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVGcm9tXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmaXQtdyB0ZXh0LWxlZnRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0RhdGUgZnJvbScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgIFttYXhEYXRlXT1cImRhdGVUb1wiXG4gICAgICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwiZGF0ZUZyb20gPSAkZXZlbnRcIlxuICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIHJldHVybkZvY3VzVG9JbnB1dDogdHJ1ZSB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8c3BhbiBmb3I9XCJkYXRlVG9cIiBjbGFzcz1cInRleHQtbWVkaXVtIG0tYi00XCIgdHJhbnNsYXRlPkRhdGUgdG88L3NwYW4+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJkYXRlcGlja2VyIG0tbC0wIGQtYmxvY2tcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDMycHhcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImRhdGVUb1wiXG4gICAgICAgICAgaWQ9XCJkYXRlVG9cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVUb1wiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZml0LXcgdGV4dC1sZWZ0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIHRvJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgW21pbkRhdGVdPVwiZGF0ZUZyb21cIlxuICAgICAgICAgIChic1ZhbHVlQ2hhbmdlKT1cImRhdGVUbyA9ICRldmVudFwiXG4gICAgICAgICAgW2JzQ29uZmlnXT1cInsgY3VzdG9tVG9kYXlDbGFzczogJ3RvZGF5JywgcmV0dXJuRm9jdXNUb0lucHV0OiB0cnVlIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLXQtMjRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHRpdGxlPVwie3sgJ0NsZWFyIHNlbGVjdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKCk7IGRhdGVmaWx0ZXIuaXNPcGVuID0gIWRhdGVmaWx0ZXIuaXNPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdDbGVhcmBzZWxlY3Rpb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZSAmJiAhZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0FwcGx5IHNlbGVjdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbHRlcigpOyBkYXRlZmlsdGVyLmlzT3BlbiA9ICFkYXRlZmlsdGVyLmlzT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQXBwbHlgc2VsZWN0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS1ksbUJBQWMsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTRCMUU7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDaEMsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Z0hBNUJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNHQ1JoQyxtaEdBdUZBOzJGRC9FYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUlqQixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGlja2VkRGF0ZXMgfSBmcm9tICcuL2RhdGUtcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8UGlja2VkRGF0ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xuICBmZ0RhdGVQaWNrZXI6IEZvcm1Hcm91cDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlciA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF0ZVRvOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyKCkge1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmZnRGF0ZVBpY2tlci52YWx1ZSk7XG4gICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICB0aGlzLmRhdGVUbyA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWU7XG4gIH1cblxuICBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlci5zZXRWYWx1ZSh7XG4gICAgICBkYXRlRnJvbTogbnVsbCxcbiAgICAgIGRhdGVUbzogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmRhdGVGcm9tID0gbnVsbDtcbiAgICB0aGlzLmRhdGVUbyA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZHJvcGRvd25cbiAgY2xhc3M9XCJjOHktY2hpbGQtYXNzZXRzLXNlbGVjdG9yIGRyb3Bkb3duXCJcbiAgI2RhdGVmaWx0ZXI9XCJicy1kcm9wZG93blwiXG4gIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0XCJcbiAgW2luc2lkZUNsaWNrXT1cInRydWVcIlxuPlxuICA8YnV0dG9uXG4gICAgaWQ9XCJkYXRlLXJhbmdlXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHRpdGxlPVwie3sgJ0RhdGUgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlIGQtZmxleCBhLWktY2VudGVyIGM4eS1kcm9wZG93blwiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyLW9cIiBjbGFzcz1cIm0tci00IHRleHQtcHJpbWFyeVwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0ZUZyb21cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB7eyBkYXRlRnJvbSB8IGRhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0ZVRvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbFwiPnt7ICdUb2BkYXRlYCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIHt7IGRhdGVUbyB8IGRhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWRhdGVGcm9tICYmICFkYXRlVG9cIj5cbiAgICAgICAge3sgJ0ZpbHRlciBieSBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICBpZD1cImRyb3Bkb3duLWRhdGUtcmFuZ2VcIlxuICAgICpkcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkYXRlLXJhbmdlXCJcbiAgPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmdEYXRlUGlja2VyXCIgY2xhc3M9XCJkcm9wZG93bi1mb3JtXCI+XG4gICAgICA8c3BhbiBmb3I9XCJkYXRlRnJvbVwiIGNsYXNzPVwidGV4dC1tZWRpdW0gbS1iLTRcIiB0cmFuc2xhdGU+RGF0ZSBmcm9tPC9zcGFuPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZGF0ZXBpY2tlciBkLWJsb2NrIG0tYi0xNlwiIHN0eWxlPVwibWF4LWhlaWdodDogMzJweFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cImRhdGVGcm9tXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlRnJvbVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZml0LXcgdGV4dC1sZWZ0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIGZyb20nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgICBbbWF4RGF0ZV09XCJkYXRlVG9cIlxuICAgICAgICAgIChic1ZhbHVlQ2hhbmdlKT1cImRhdGVGcm9tID0gJGV2ZW50XCJcbiAgICAgICAgICBbYnNDb25maWddPVwieyBjdXN0b21Ub2RheUNsYXNzOiAndG9kYXknLCByZXR1cm5Gb2N1c1RvSW5wdXQ6IHRydWUgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPHNwYW4gZm9yPVwiZGF0ZVRvXCIgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBtLWItNFwiIHRyYW5zbGF0ZT5EYXRlIHRvPC9zcGFuPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZGF0ZXBpY2tlciBtLWwtMCBkLWJsb2NrXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMnB4XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRlVG9cIlxuICAgICAgICAgIGlkPVwiZGF0ZVRvXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlVG9cIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZpdC13IHRleHQtbGVmdFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRGF0ZSB0bycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgIFttaW5EYXRlXT1cImRhdGVGcm9tXCJcbiAgICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJkYXRlVG8gPSAkZXZlbnRcIlxuICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIHJldHVybkZvY3VzVG9JbnB1dDogdHJ1ZSB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8ZGl2IGNsYXNzPVwicC10LTI0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0aXRsZT1cInt7ICdDbGVhciBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJjbGVhckZpbHRlcigpOyBkYXRlZmlsdGVyLmlzT3BlbiA9ICFkYXRlZmlsdGVyLmlzT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQ2xlYXJgc2VsZWN0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZnRGF0ZVBpY2tlci5nZXQoJ2RhdGVGcm9tJykudmFsdWUgJiYgIWZnRGF0ZVBpY2tlci5nZXQoJ2RhdGVUbycpLnZhbHVlXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoKTsgZGF0ZWZpbHRlci5pc09wZW4gPSAhZGF0ZWZpbHRlci5pc09wZW5cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0FwcGx5YHNlbGVjdGlvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -283,10 +283,10 @@ export class DropAreaComponent {
283
283
  }
284
284
  }
285
285
  DropAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FilesService }, { token: i2.TranslateService }, { token: i3.BytesPipe }], target: i0.ɵɵFactoryTarget.Component });
286
- DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
286
+ DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
287
287
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, decorators: [{
288
288
  type: Component,
289
- args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n" }]
289
+ args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n" }]
290
290
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FilesService }, { type: i2.TranslateService }, { type: i3.BytesPipe }]; }, propDecorators: { formControl: [{
291
291
  type: Input
292
292
  }], title: [{
@@ -335,4 +335,4 @@ var ReadAsType;
335
335
  ReadAsType[ReadAsType["ARRAY_BUFFER"] = 2] = "ARRAY_BUFFER";
336
336
  ReadAsType[ReadAsType["BINARY_STRING"] = 3] = "BINARY_STRING";
337
337
  })(ReadAsType || (ReadAsType = {}));
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFzRDVCLFlBQ1UsRUFBcUIsRUFDckIsWUFBMEIsRUFDMUIsU0FBMkIsRUFDM0IsS0FBZ0I7UUFIaEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXhEakIsVUFBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFD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QUFFO2dCQUNJLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVdEMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzUm5DLElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFJLENBQUE7SUFDSixtREFBUSxDQUFBO0lBQ1IsMkRBQVksQ0FBQTtJQUNaLDZEQUFhLENBQUE7QUFDZixDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIG1hcCwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcblxuICBAVmlld0NoaWxkKCdhcmVhJywgeyBzdGF0aWM6IHRydWUgfSkgYXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnem9uZScsIHsgc3RhdGljOiBmYWxzZSB9KSB6b25lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBieXRlczogQnl0ZXNQaXBlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2NlcHRlZEV4dHMgPSB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLm1hcCh0ID0+IGAuJHt0fWApO1xuICAgIHRoaXMuYWx3YXlzU2hvdyA9IHRoaXMuYWx3YXlzU2hvdyB8fCB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG5cbiAgICBpZiAodGhpcy5maWxlcyAmJiB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJiB0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKHRoaXMuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzdHlsZSBvZiB0aGUgZHJvcCB6b25lIGVsZW1lbnQgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB0aGlzLm9uT3ZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIGNvbXB1dGVyIGJyb3dzZXIgd2l0aCBmaWxlcyB0byBkcm9wIGludG8gZHJvcC1hcmVhIHpvbmUuXG4gICAqL1xuICBzaG93UGlja2VyKCRldmVudD8pOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIG9uIG92ZXIgZHJvcCBhcmVhLCBidXQgbm90IGRyb3BwZWQuXG4gICAqL1xuICBvbk92ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Zlcikge1xuICAgICAgdGhpcy5pc092ZXIgPSB0cnVlO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBkcm9wcGVkLlxuICAgKi9cbiAgb25QaWNrKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC50YXJnZXQuZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBmaWxlIHdoZW4gaXQgaXMgZHJvcHBlZCBpbnRvIGRyb3AtYXJlYS5cbiAgICovXG4gIG9uRHJvcCgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgY29uZGl0aW9uIHdoYXQgc2hvdWxkIGJlIGRpc3BsYXllZDogZHJvcC1hcmVhIHpvbmUgb3IgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgc2hvdWxkU2hvd0ZpbGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiZcbiAgICAgICF0aGlzLmZvcmNlSGlkZUxpc3QgJiZcbiAgICAgIHRoaXMuYWx3YXlzU2hvdyAmJlxuICAgICAgIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSAmJlxuICAgICAgIXRoaXMuaGFzRW1wdHlGaWxlcygpICYmXG4gICAgICAhdGhpcy5pc1Rvb01hbnlGaWxlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIHBpY2tlZCBvdmVyIHdlYiBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHN0b3BEcmFnZ2luZygpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB0aGlzLmlzT3ZlciA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBmaWxlcyBhbHJlYWR5IGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBvbkRlbGV0ZSgpIHtcbiAgICBkZWxldGUgdGhpcy5maWxlcztcbiAgICBkZWxldGUgdGhpcy5maWxlc05hbWVTdHJpbmc7XG4gICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KG51bGwpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWVMZW5ndGggPSB0aGlzLmZpbGVzU2VydmljZS5jaGVja01heExlbmd0aChmaWxlcyk7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWVMZW5ndGgpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXZlVmFsaWRUeXBlcyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXMsIHRoaXMuYWNjZXB0KTtcbiAgICBpZiAoIWhhdmVWYWxpZFR5cGVzKSB7XG4gICAgICB0aGlzLm9uRmlsZUludmFsaWRUeXBlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcyk7XG4gICAgaWYgKCFoYXZlVmFsaWRTaXplcykge1xuICAgICAgYXdhaXQgdGhpcy5vbkZpbGVJbnZhbGlkU2l6ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZXMgPSBmaWxlcztcbiAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKGZpbGVzKTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNUb29NYW55RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgdG9vTWFueUZpbGVzOiB0cnVlIH0pO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUb28gbWFueSBmaWxlcyBzZWxlY3RlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNFbXB0eUZpbGVzKCkpIHtcbiAgICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGVtcHR5RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ0ZpbGUgbXVzdCBub3QgYmUgZW1wdHksIHNlbGVjdCBhbm90aGVyIG9uZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10gPSB0aGlzLmNvbXBvc2UoZmlsZXMpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5vbkNoYW5nZShkcm9wcGVkRmlsZXMpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUludmFsaWROYW1lTGVuZ3RoKCkge1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkTmFtZUxlbmd0aDogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RoZSBmaWxlbmFtZSBpcyB0b28gbG9uZy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZFR5cGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWRUeXBlOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlSW52YWxpZFNpemUoKSB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpKTtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFNpemU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXM6IEZpbGVMaXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWFwKGZpbGVzLCAoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBcnJheUVtcHR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Rvb01hbnlGaWxlcygpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsICdmaWxlcy5sZW5ndGgnLCAwKSA+IHRoaXMubWF4QWxsb3dlZEZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVzQW5PYmplY3RPckFycmF5KCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5maWxlcyA9PT0gJ29iamVjdCc7XG4gIH1cblxuICBwcml2YXRlIGhhc0VtcHR5RmlsZXMoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNBbnlGaWxlRW1wdHkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlGaWxlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoQXJyYXkuZnJvbSh0aGlzLmZpbGVzKSwgWydzaXplJywgMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5lcnJvck1lc3NhZ2U7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KCRldmVudD8pIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2UoZmlsZXM6IEZpbGVMaXN0KTogRHJvcHBlZEZpbGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpLm1hcChmaWxlID0+ICh7XG4gICAgICBmaWxlLFxuICAgICAgcmVhZEFzSnNvbjogYXN5bmMgKCkgPT4gSlNPTi5wYXJzZShhd2FpdCB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSksXG4gICAgICByZWFkQXNUZXh0OiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSxcbiAgICAgIHJlYWRBc0FycmF5QnVmZmVyOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5BUlJBWV9CVUZGRVIpLFxuICAgICAgcmVhZEFzQmluYXJ5U3RyaW5nOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HKSxcbiAgICAgIHJlYWRBc0RhdGFVUkw6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkRBVEFfVVJMKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZChmaWxlLCB0eXBlOiBSZWFkQXNUeXBlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5URVhUOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUjoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQklOQVJZX1NUUklORzoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkRBVEFfVVJMOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB0aGlzLm9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmIChyZWFkZXIucmVhZHlTdGF0ZSAhPT0gMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVhZGVyLmVycm9yKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKTtcbiAgICB9XG4gICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRGaWxlIHtcbiAgZmlsZTogRmlsZTtcbiAgcmVhZEFzVGV4dCgpO1xuICByZWFkQXNBcnJheUJ1ZmZlcigpO1xuICByZWFkQXNCaW5hcnlTdHJpbmcoKTtcbiAgcmVhZEFzRGF0YVVSTCgpO1xuICByZWFkQXNKc29uKCk7XG59XG5cbmVudW0gUmVhZEFzVHlwZSB7XG4gIFRFWFQsXG4gIERBVEFfVVJMLFxuICBBUlJBWV9CVUZGRVIsXG4gIEJJTkFSWV9TVFJJTkdcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cIiFzaG91bGRTaG93RmlsZXNMaXN0KClcIlxuICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3JzJzogZXJyb3JzIH1cIlxuICBbc3R5bGUucG9pbnRlckV2ZW50c109XCJsb2FkaW5nID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAoY2xpY2spPVwic2hvd1BpY2tlcigkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggcC00IGZsZXgtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNTAlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+PC9kaXY+XG4gICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04XCI+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhbHdheXNTaG93ICYmIGNsaWNrVG9PcGVuXCIgdHJhbnNsYXRlPjwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcnNcIiBjbGFzcz1cImhhcy1lcnJvcnNcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmVlZGJhY2stbWVzc2FnZVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImRyb3Atem9uZVwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICB0YWJpbmRleD1cIjBcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiPlxuICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgIDxzdHJvbmc+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L3A+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSBtLTBcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDgwJVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lciBwLXJlbGF0aXZlIG0tMFwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0MlwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3QzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDRcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0NVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHAtNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00XCI+XG4gICAgICA8aSBjOHlJY29uPVwiZmlsZS1vXCIgY2xhc3M9XCJtLXItOFwiPjwvaT5cbiAgICAgIDxzcGFuIHRpdGxlPVwie3sgZmlsZXNOYW1lU3RyaW5nIH19XCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgIHt7IGZpbGVzTmFtZVN0cmluZyB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxpbnB1dFxuICAjcGlja2VyXG4gICpuZ0lmPVwiY2xpY2tUb09wZW5cIlxuICAoY2hhbmdlKT1cIm9uUGljaygkZXZlbnQpXCJcbiAgKGNsaWNrKT1cInBpY2tlci5mb2N1cygpXCJcbiAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgdHlwZT1cImZpbGVcIlxuICBjbGFzcz1cImhpZGRlblwiXG4vPlxuPGRpdiAjYXJlYSBbaGlkZGVuXT1cImlzT3ZlciB8fCBsb2FkaW5nXCIgKGRyYWdvdmVyKT1cInRvZ2dsZSgpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFzRDVCLFlBQ1UsRUFBcUIsRUFDckIsWUFBMEIsRUFDMUIsU0FBMkIsRUFDM0IsS0FBZ0I7UUFIaEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXhEakIsVUFBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFD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QUFFO2dCQUNJLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVdEMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzUm5DLElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFJLENBQUE7SUFDSixtREFBUSxDQUFBO0lBQ1IsMkRBQVksQ0FBQTtJQUNaLDZEQUFhLENBQUE7QUFDZixDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIG1hcCwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcblxuICBAVmlld0NoaWxkKCdhcmVhJywgeyBzdGF0aWM6IHRydWUgfSkgYXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnem9uZScsIHsgc3RhdGljOiBmYWxzZSB9KSB6b25lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBieXRlczogQnl0ZXNQaXBlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2NlcHRlZEV4dHMgPSB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLm1hcCh0ID0+IGAuJHt0fWApO1xuICAgIHRoaXMuYWx3YXlzU2hvdyA9IHRoaXMuYWx3YXlzU2hvdyB8fCB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG5cbiAgICBpZiAodGhpcy5maWxlcyAmJiB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJiB0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKHRoaXMuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzdHlsZSBvZiB0aGUgZHJvcCB6b25lIGVsZW1lbnQgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB0aGlzLm9uT3ZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIGNvbXB1dGVyIGJyb3dzZXIgd2l0aCBmaWxlcyB0byBkcm9wIGludG8gZHJvcC1hcmVhIHpvbmUuXG4gICAqL1xuICBzaG93UGlja2VyKCRldmVudD8pOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIG9uIG92ZXIgZHJvcCBhcmVhLCBidXQgbm90IGRyb3BwZWQuXG4gICAqL1xuICBvbk92ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Zlcikge1xuICAgICAgdGhpcy5pc092ZXIgPSB0cnVlO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBkcm9wcGVkLlxuICAgKi9cbiAgb25QaWNrKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC50YXJnZXQuZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBmaWxlIHdoZW4gaXQgaXMgZHJvcHBlZCBpbnRvIGRyb3AtYXJlYS5cbiAgICovXG4gIG9uRHJvcCgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgY29uZGl0aW9uIHdoYXQgc2hvdWxkIGJlIGRpc3BsYXllZDogZHJvcC1hcmVhIHpvbmUgb3IgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgc2hvdWxkU2hvd0ZpbGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiZcbiAgICAgICF0aGlzLmZvcmNlSGlkZUxpc3QgJiZcbiAgICAgIHRoaXMuYWx3YXlzU2hvdyAmJlxuICAgICAgIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSAmJlxuICAgICAgIXRoaXMuaGFzRW1wdHlGaWxlcygpICYmXG4gICAgICAhdGhpcy5pc1Rvb01hbnlGaWxlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIHBpY2tlZCBvdmVyIHdlYiBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHN0b3BEcmFnZ2luZygpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB0aGlzLmlzT3ZlciA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBmaWxlcyBhbHJlYWR5IGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBvbkRlbGV0ZSgpIHtcbiAgICBkZWxldGUgdGhpcy5maWxlcztcbiAgICBkZWxldGUgdGhpcy5maWxlc05hbWVTdHJpbmc7XG4gICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KG51bGwpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWVMZW5ndGggPSB0aGlzLmZpbGVzU2VydmljZS5jaGVja01heExlbmd0aChmaWxlcyk7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWVMZW5ndGgpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXZlVmFsaWRUeXBlcyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXMsIHRoaXMuYWNjZXB0KTtcbiAgICBpZiAoIWhhdmVWYWxpZFR5cGVzKSB7XG4gICAgICB0aGlzLm9uRmlsZUludmFsaWRUeXBlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcyk7XG4gICAgaWYgKCFoYXZlVmFsaWRTaXplcykge1xuICAgICAgYXdhaXQgdGhpcy5vbkZpbGVJbnZhbGlkU2l6ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZXMgPSBmaWxlcztcbiAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKGZpbGVzKTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNUb29NYW55RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgdG9vTWFueUZpbGVzOiB0cnVlIH0pO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUb28gbWFueSBmaWxlcyBzZWxlY3RlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNFbXB0eUZpbGVzKCkpIHtcbiAgICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGVtcHR5RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ0ZpbGUgbXVzdCBub3QgYmUgZW1wdHksIHNlbGVjdCBhbm90aGVyIG9uZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10gPSB0aGlzLmNvbXBvc2UoZmlsZXMpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5vbkNoYW5nZShkcm9wcGVkRmlsZXMpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUludmFsaWROYW1lTGVuZ3RoKCkge1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkTmFtZUxlbmd0aDogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RoZSBmaWxlbmFtZSBpcyB0b28gbG9uZy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZFR5cGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWRUeXBlOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlSW52YWxpZFNpemUoKSB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpKTtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFNpemU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXM6IEZpbGVMaXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWFwKGZpbGVzLCAoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBcnJheUVtcHR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Rvb01hbnlGaWxlcygpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsICdmaWxlcy5sZW5ndGgnLCAwKSA+IHRoaXMubWF4QWxsb3dlZEZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVzQW5PYmplY3RPckFycmF5KCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5maWxlcyA9PT0gJ29iamVjdCc7XG4gIH1cblxuICBwcml2YXRlIGhhc0VtcHR5RmlsZXMoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNBbnlGaWxlRW1wdHkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlGaWxlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoQXJyYXkuZnJvbSh0aGlzLmZpbGVzKSwgWydzaXplJywgMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5lcnJvck1lc3NhZ2U7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KCRldmVudD8pIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2UoZmlsZXM6IEZpbGVMaXN0KTogRHJvcHBlZEZpbGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpLm1hcChmaWxlID0+ICh7XG4gICAgICBmaWxlLFxuICAgICAgcmVhZEFzSnNvbjogYXN5bmMgKCkgPT4gSlNPTi5wYXJzZShhd2FpdCB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSksXG4gICAgICByZWFkQXNUZXh0OiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSxcbiAgICAgIHJlYWRBc0FycmF5QnVmZmVyOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5BUlJBWV9CVUZGRVIpLFxuICAgICAgcmVhZEFzQmluYXJ5U3RyaW5nOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HKSxcbiAgICAgIHJlYWRBc0RhdGFVUkw6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkRBVEFfVVJMKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZChmaWxlLCB0eXBlOiBSZWFkQXNUeXBlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5URVhUOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUjoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQklOQVJZX1NUUklORzoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkRBVEFfVVJMOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB0aGlzLm9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmIChyZWFkZXIucmVhZHlTdGF0ZSAhPT0gMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVhZGVyLmVycm9yKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKTtcbiAgICB9XG4gICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRGaWxlIHtcbiAgZmlsZTogRmlsZTtcbiAgcmVhZEFzVGV4dCgpO1xuICByZWFkQXNBcnJheUJ1ZmZlcigpO1xuICByZWFkQXNCaW5hcnlTdHJpbmcoKTtcbiAgcmVhZEFzRGF0YVVSTCgpO1xuICByZWFkQXNKc29uKCk7XG59XG5cbmVudW0gUmVhZEFzVHlwZSB7XG4gIFRFWFQsXG4gIERBVEFfVVJMLFxuICBBUlJBWV9CVUZGRVIsXG4gIEJJTkFSWV9TVFJJTkdcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cIiFzaG91bGRTaG93RmlsZXNMaXN0KClcIlxuICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3JzJzogZXJyb3JzIH1cIlxuICBbc3R5bGUucG9pbnRlckV2ZW50c109XCJsb2FkaW5nID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAoY2xpY2spPVwic2hvd1BpY2tlcigkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggcC00IGZsZXgtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNTAlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+PC9kaXY+XG4gICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04XCI+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhbHdheXNTaG93ICYmIGNsaWNrVG9PcGVuXCIgdHJhbnNsYXRlPjwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcnNcIiBjbGFzcz1cImhhcy1lcnJvcnNcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmVlZGJhY2stbWVzc2FnZVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImRyb3Atem9uZVwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICB0YWJpbmRleD1cIjBcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiPlxuICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgIDxzdHJvbmc+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L3A+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSBtLTBcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDgwJVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxuICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICBhcmlhLXZhbHVlbm93PVwiMFwiXG4gICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJwcm9ncmVzcyArICclJ1wiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXIgcC1yZWxhdGl2ZSBtLTBcIiAqbmdJZj1cInByb2dyZXNzID09PSAtMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0M1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiZmlsZS1wbGFjZWhvbGRlciBwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHAtNFwiPlxuICAgICAgPGkgYzh5SWNvbj1cImZpbGUtb1wiIGNsYXNzPVwibS1yLThcIj48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGZpbGVzTmFtZVN0cmluZyB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBmaWxlc05hbWVTdHJpbmcgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IGJ0bi1kb3QtLWRhbmdlciBzaG93T25Ib3ZlciBtLWwtYXV0b1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGxhYmVsIGZvcj1cImZpbGVcIiBjbGFzcz1cInNyLW9ubHlcIj57eyAnU2VsZWN0IGZpbGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbjxpbnB1dFxuICAjcGlja2VyXG4gICpuZ0lmPVwiY2xpY2tUb09wZW5cIlxuICAoY2hhbmdlKT1cIm9uUGljaygkZXZlbnQpXCJcbiAgKGNsaWNrKT1cInBpY2tlci5mb2N1cygpXCJcbiAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgdHlwZT1cImZpbGVcIlxuICBjbGFzcz1cImhpZGRlblwiXG4gIGlkPVwiZmlsZVwiXG4vPlxuPGRpdiAjYXJlYSBbaGlkZGVuXT1cImlzT3ZlciB8fCBsb2FkaW5nXCIgKGRyYWdvdmVyKT1cInRvZ2dsZSgpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -82,10 +82,10 @@ export class FilePickerComponent {
82
82
  }
83
83
  }
84
84
  FilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] });
85
+ FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] });
86
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, decorators: [{
87
87
  type: Component,
88
- args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
88
+ args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
89
89
  }], propDecorators: { dropArea: [{
90
90
  type: ViewChild,
91
91
  args: [DropAreaComponent, { static: true }]
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
104
104
  }], fileUrlPopover: [{
105
105
  type: Input
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFHcEM7Ozs7Ozs7Ozs7O0dBV0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBTVksa0JBQWEsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFpQyxjQUFjLENBQUM7UUFHNUQsV0FBTSxHQUFxQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQWlFekQ7SUF4REM7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsWUFBMkI7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxTQUFTO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLE1BQU07UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dIQXZFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4VEFDbkIsaUJBQWlCLDhEQ3hCOUIsMG5FQTBFQTsyRkRuRGEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjs4QkFJcUIsUUFBUTtzQkFBdkQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wcGVkRmlsZSwgRHJvcEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wLWFyZWEvZHJvcC1hcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZWRGaWxlcyB9IGZyb20gJy4vZmlsZS1waWNrZXIubW9kZWwnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGaWxlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9maWxlLXBpY2tlci1jb25maWcubW9kZWwnO1xuXG4vKipcbiAqIFVzZXIgY2FuIHVwbG9hZCBhIGJpbmFyeSBkaXJlY3RseSBvciB1c2UgYW4gVVJMLlxuICpcbiAqICMjIFVzYWdlIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdj5cbiAqIDxjOHktZmlsZS1waWNrZXIgW21heEFsbG93ZWRGaWxlc109XCIxXCIgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIj5cbiAqIDwvYzh5LWZpbGUtcGlja2VyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKERyb3BBcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wQXJlYTogRHJvcEFyZWFDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBvbkZpbGVzUGlja2VkOiBFdmVudEVtaXR0ZXI8UGlja2VkRmlsZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXM6IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKSB1cGxvYWRDaG9pY2U6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcgPSAndXBsb2FkQmluYXJ5JztcbiAgQElucHV0KCkgZmlsZVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlQmluYXJ5OiBEcm9wcGVkRmlsZTtcbiAgQElucHV0KCkgY29uZmlnOiBGaWxlUGlja2VyQ29uZmlnID0geyBtYXhsZW5ndGg6IDIwNDggfTtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBpbiBhIHBvcG92ZXIuXG4gICAqL1xuICBASW5wdXQoKSBmaWxlVXJsUG9wb3Zlcjogc3RyaW5nO1xuXG4gIGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXTtcbiAgcHJpdmF0ZSBmaWxlVG9TYXZlOiBQaWNrZWRGaWxlcztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUJpbmFyeSkge1xuICAgICAgdGhpcy5kcm9wcGVkRmlsZXMgPSBbdGhpcy5maWxlQmluYXJ5XTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGJ5IGRyb3BwZWQgZmlsZSBpbiBjb21wb25lbnQgYW5kIHBhc3MgaXQgaW50byBkcm9wLWFyZWEgY29tcG9uZW50LlxuICAgKi9cbiAgb25GaWxlRHJvcHBlZChkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10pOiB2b2lkIHtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh7XG4gICAgICBkcm9wcGVkRmlsZXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGNoYW5nZXMgdXBsb2FkIGNob2ljZSwgZnJvbSB1cGxvYWQgdXJsIHRvIHVwbG9hZCBiaW5hcnkuXG4gICAqL1xuICBjbGVhcklucHV0RnJvbVVybCgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5maWxlVXJsO1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgY2hhbmdlcyB1cGxvYWQgY2hvaWNlLCB0byBhdm9pZCBjdW11bGF0aW9uIG9mIGRyb3BwZWRGaWxlcy5cbiAgICovXG4gIGNsZWFyU2VsZWN0ZWRGaWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3BBcmVhLm9uRGVsZXRlKCk7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgZHJvcHBlZEZpbGVzOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBwdXRzIGJpbmFyeSdzIHVybCB0byB1cGxvYWQuXG4gICAqL1xuICBvbkZpbGVVcmxDaGFuZ2UodXJsU3RyKTogdm9pZCB7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgdXJsOiB1cmxTdHJcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIHBvcG92ZXIgdG8gZGlzcGxheS5cbiAgICovXG4gIGlzUG9wb3ZlclVzZWQoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuZmlsZVVybFBvcG92ZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgdGl0bGU9XCJ7eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRCaW5hcnlcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dEZyb21VcmwoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxsYWJlbCB0aXRsZT1cInt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZSBtLWwtOFwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZEZpbGVzKClcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPlxuICAgICAge3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNQb3BvdmVyVXNlZCgpXCJcbiAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBwb3BvdmVyPVwie3sgZmlsZVVybFBvcG92ZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiJ3F1ZXN0aW9uLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkQmluYXJ5J1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8Yzh5LWRyb3AtYXJlYVxuICAgICAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuICAgICAgKGRyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgIFt0aXRsZV09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW21heEFsbG93ZWRGaWxlc109XCJtYXhBbGxvd2VkRmlsZXNcIlxuICAgICAgW2ZpbGVzXT1cImRyb3BwZWRGaWxlc1wiXG4gICAgPjwvYzh5LWRyb3AtYXJlYT5cbiAgPC9jOHktZm9ybS1ncm91cD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkVXJsJ1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS1iLTQgcC1iLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImdsb2JlXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cImZpbGVVcmxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZVVybFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWxlVXJsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGh0dHA6Ly9leGFtcGxlLmNvbS9iaW5hcnkuemlwXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyBjb25maWcubWF4bGVuZ3RoIH19XCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFHcEM7Ozs7Ozs7Ozs7O0dBV0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBTVksa0JBQWEsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFpQyxjQUFjLENBQUM7UUFHNUQsV0FBTSxHQUFxQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQWlFekQ7SUF4REM7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsWUFBMkI7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxTQUFTO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLE1BQU07UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dIQXZFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4VEFDbkIsaUJBQWlCLDhEQ3hCOUIsa3NFQTJFQTsyRkRwRGEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjs4QkFJcUIsUUFBUTtzQkFBdkQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wcGVkRmlsZSwgRHJvcEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wLWFyZWEvZHJvcC1hcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZWRGaWxlcyB9IGZyb20gJy4vZmlsZS1waWNrZXIubW9kZWwnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGaWxlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9maWxlLXBpY2tlci1jb25maWcubW9kZWwnO1xuXG4vKipcbiAqIFVzZXIgY2FuIHVwbG9hZCBhIGJpbmFyeSBkaXJlY3RseSBvciB1c2UgYW4gVVJMLlxuICpcbiAqICMjIFVzYWdlIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdj5cbiAqIDxjOHktZmlsZS1waWNrZXIgW21heEFsbG93ZWRGaWxlc109XCIxXCIgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIj5cbiAqIDwvYzh5LWZpbGUtcGlja2VyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKERyb3BBcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wQXJlYTogRHJvcEFyZWFDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBvbkZpbGVzUGlja2VkOiBFdmVudEVtaXR0ZXI8UGlja2VkRmlsZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXM6IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKSB1cGxvYWRDaG9pY2U6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcgPSAndXBsb2FkQmluYXJ5JztcbiAgQElucHV0KCkgZmlsZVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlQmluYXJ5OiBEcm9wcGVkRmlsZTtcbiAgQElucHV0KCkgY29uZmlnOiBGaWxlUGlja2VyQ29uZmlnID0geyBtYXhsZW5ndGg6IDIwNDggfTtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBpbiBhIHBvcG92ZXIuXG4gICAqL1xuICBASW5wdXQoKSBmaWxlVXJsUG9wb3Zlcjogc3RyaW5nO1xuXG4gIGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXTtcbiAgcHJpdmF0ZSBmaWxlVG9TYXZlOiBQaWNrZWRGaWxlcztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUJpbmFyeSkge1xuICAgICAgdGhpcy5kcm9wcGVkRmlsZXMgPSBbdGhpcy5maWxlQmluYXJ5XTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGJ5IGRyb3BwZWQgZmlsZSBpbiBjb21wb25lbnQgYW5kIHBhc3MgaXQgaW50byBkcm9wLWFyZWEgY29tcG9uZW50LlxuICAgKi9cbiAgb25GaWxlRHJvcHBlZChkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10pOiB2b2lkIHtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh7XG4gICAgICBkcm9wcGVkRmlsZXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGNoYW5nZXMgdXBsb2FkIGNob2ljZSwgZnJvbSB1cGxvYWQgdXJsIHRvIHVwbG9hZCBiaW5hcnkuXG4gICAqL1xuICBjbGVhcklucHV0RnJvbVVybCgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5maWxlVXJsO1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgY2hhbmdlcyB1cGxvYWQgY2hvaWNlLCB0byBhdm9pZCBjdW11bGF0aW9uIG9mIGRyb3BwZWRGaWxlcy5cbiAgICovXG4gIGNsZWFyU2VsZWN0ZWRGaWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3BBcmVhLm9uRGVsZXRlKCk7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgZHJvcHBlZEZpbGVzOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBwdXRzIGJpbmFyeSdzIHVybCB0byB1cGxvYWQuXG4gICAqL1xuICBvbkZpbGVVcmxDaGFuZ2UodXJsU3RyKTogdm9pZCB7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgdXJsOiB1cmxTdHJcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIHBvcG92ZXIgdG8gZGlzcGxheS5cbiAgICovXG4gIGlzUG9wb3ZlclVzZWQoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuZmlsZVVybFBvcG92ZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgdGl0bGU9XCJ7eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRCaW5hcnlcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dEZyb21VcmwoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxsYWJlbCB0aXRsZT1cInt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZSBtLWwtOFwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZEZpbGVzKClcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPlxuICAgICAge3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNQb3BvdmVyVXNlZCgpXCJcbiAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBwb3BvdmVyPVwie3sgZmlsZVVybFBvcG92ZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiJ3F1ZXN0aW9uLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkQmluYXJ5J1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8Yzh5LWRyb3AtYXJlYVxuICAgICAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuICAgICAgKGRyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgIFt0aXRsZV09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW21heEFsbG93ZWRGaWxlc109XCJtYXhBbGxvd2VkRmlsZXNcIlxuICAgICAgW2ZpbGVzXT1cImRyb3BwZWRGaWxlc1wiXG4gICAgPjwvYzh5LWRyb3AtYXJlYT5cbiAgPC9jOHktZm9ybS1ncm91cD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkVXJsJ1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS1iLTQgcC1iLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImdsb2JlXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cImZpbGVVcmxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZVVybFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWxlVXJsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGh0dHA6Ly9leGFtcGxlLmNvbS9iaW5hcnkuemlwXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyBjb25maWcubWF4bGVuZ3RoIH19XCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
@@ -19,9 +19,9 @@ export class AppSwitcherComponent {
19
19
  }
20
20
  }
21
21
  AppSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, deps: [{ token: i1.AppSwitcherService }], target: i0.ɵɵFactoryTarget.Component });
22
- AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div class=\"app-switcher-dropdown\" dropdown #appSwitcherDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\">\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div *ngIf=\"!(switcherService.finishedLoading$ | async)\" class=\"d-flex a-i-center j-c-center p-4\">\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i11.AppHrefPipe, name: "appHref" }, { kind: "pipe", type: i12.IsActiveAppPipe, name: "isActiveApp" }] });
22
+ AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i11.AppHrefPipe, name: "appHref" }, { kind: "pipe", type: i12.IsActiveAppPipe, name: "isActiveApp" }] });
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'c8y-app-switcher', template: "<div class=\"app-switcher-dropdown\" dropdown #appSwitcherDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\">\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div *ngIf=\"!(switcherService.finishedLoading$ | async)\" class=\"d-flex a-i-center j-c-center p-4\">\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n" }]
25
+ args: [{ selector: 'c8y-app-switcher', template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n" }]
26
26
  }], ctorParameters: function () { return [{ type: i1.AppSwitcherService }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci9hcHBsaWNhdGlvbi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFLNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixlQUFtQztRQUFuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7SUFBRyxDQUFDOztpSEFEL0Msb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDTmpDLDJxRUFxREE7MkZEL0NhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN3aXRjaGVyU2VydmljZSB9IGZyb20gJy4vYXBwLXN3aXRjaGVyLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFwcC1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFN3aXRjaGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHN3aXRjaGVyU2VydmljZTogQXBwU3dpdGNoZXJTZXJ2aWNlKSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93blwiIGRyb3Bkb3duICNhcHBTd2l0Y2hlckRyb3Bkb3duPVwiYnMtZHJvcGRvd25cIiBbY2RrVHJhcEZvY3VzXT1cImFwcFN3aXRjaGVyRHJvcGRvd24uaXNPcGVuXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBjOHktZHJvcGRvd24gZHJvcGRvd24tdG9nZ2xlXCJcbiAgICBpZD1cImFwcFN3aXRjaGVyRHJvcGRvd25cIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgdGl0bGU9XCJ7eyAnQXBwbGljYXRpb24gc3dpdGNoZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJ0aFwiIGNsYXNzPVwiaWNvbi0yeFwiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICAqZHJvcGRvd25NZW51XG4gICAgY2xhc3M9XCJhcHAtc3dpdGNoZXItZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51XCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhcHBTd2l0Y2hlckRyb3Bkb3duXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cIiEoc3dpdGNoZXJTZXJ2aWNlLmZpbmlzaGVkTG9hZGluZyQgfCBhc3luYylcIiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGotYy1jZW50ZXIgcC00XCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3dpdGNoZXJTZXJ2aWNlLm9uZUNsb3VkQXBwcyQgfCBhc3luYyBhcyBvbmVDbG91ZEFwcHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc3dpdGNoZXItc2FnY2xvdWRcIiAqbmdJZj1cIm9uZUNsb3VkQXBwcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgdGl0bGU9XCJ7eyBhcHAubmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19XCJcbiAgICAgICAgICBjbGFzcz1cImFwcExpbmtcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHAgb2Ygb25lQ2xvdWRBcHBzXCJcbiAgICAgICAgICBbaHJlZl09XCJhcHAgfCBhcHBIcmVmXCJcbiAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIidhcHBTd2l0Y2hlZCdcIlxuICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgYXBwbGljYXRpb25OYW1lOiBhcHAgJiYgYXBwLm5hbWUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWFwcC1pY29uIFthcHBdPVwiYXBwXCIgW25hbWVdPVwiYXBwLm5hbWVcIiBbY29udGV4dFBhdGhdPVwiYXBwLmNvbnRleHRQYXRoXCI+PC9jOHktYXBwLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlLXdyYXBcIj57eyBhcHAgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFwcC1zd2l0Y2hlclwiICpuZ0lmPVwic3dpdGNoZXJTZXJ2aWNlLmFwcHMkIHwgYXN5bmMgYXMgYXBwc1wiPlxuICAgICAgPGFcbiAgICAgICAgdGl0bGU9XCJ7eyBhcHAubmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19XCJcbiAgICAgICAgY2xhc3M9XCJhcHBMaW5rXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGFwcCB8IGlzQWN0aXZlQXBwIHwgYXN5bmMpID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhcHAgb2YgYXBwc1wiXG4gICAgICAgIFtocmVmXT1cImFwcCB8IGFwcEhyZWZcIlxuICAgICAgICBbcmVsXT1cImFwcC50eXBlID09PSAnRVhURVJOQUwnID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogJydcIlxuICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICBbYWN0aW9uTmFtZV09XCInYXBwU3dpdGNoZWQnXCJcbiAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBhcHBsaWNhdGlvbk5hbWU6IGFwcCAmJiBhcHAubmFtZSB9XCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1hcHAtaWNvbiBbYXBwXT1cImFwcFwiIFtuYW1lXT1cImFwcC5uYW1lXCIgW2NvbnRleHRQYXRoXT1cImFwcC5jb250ZXh0UGF0aFwiPjwvYzh5LWFwcC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiPnt7IGFwcCB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci9hcHBsaWNhdGlvbi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFLNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixlQUFtQztRQUFuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7SUFBRyxDQUFDOztpSEFEL0Msb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDTmpDLGd3RUFpRUE7MkZEM0RhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN3aXRjaGVyU2VydmljZSB9IGZyb20gJy4vYXBwLXN3aXRjaGVyLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFwcC1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFN3aXRjaGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHN3aXRjaGVyU2VydmljZTogQXBwU3dpdGNoZXJTZXJ2aWNlKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93blwiXG4gIGRyb3Bkb3duXG4gICNhcHBTd2l0Y2hlckRyb3Bkb3duPVwiYnMtZHJvcGRvd25cIlxuICBbY2RrVHJhcEZvY3VzXT1cImFwcFN3aXRjaGVyRHJvcGRvd24uaXNPcGVuXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwibWFpbi1oZWFkZXItYnV0dG9uIGM4eS1kcm9wZG93biBkcm9wZG93bi10b2dnbGVcIlxuICAgIGlkPVwiYXBwU3dpdGNoZXJEcm9wZG93blwiXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICB0aXRsZT1cInt7ICdBcHBsaWNhdGlvbiBzd2l0Y2hlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInRoXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgICpkcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImFwcFN3aXRjaGVyRHJvcGRvd25cIlxuICAgIHJvbGU9XCJncm91cFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiEoc3dpdGNoZXJTZXJ2aWNlLmZpbmlzaGVkTG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBqLWMtY2VudGVyIHAtNFwiXG4gICAgPlxuICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN3aXRjaGVyU2VydmljZS5vbmVDbG91ZEFwcHMkIHwgYXN5bmMgYXMgb25lQ2xvdWRBcHBzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLXN3aXRjaGVyLXNhZ2Nsb3VkXCIgKm5nSWY9XCJvbmVDbG91ZEFwcHMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8YVxuICAgICAgICAgIHRpdGxlPVwie3sgYXBwLm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fVwiXG4gICAgICAgICAgY2xhc3M9XCJhcHBMaW5rXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBwIG9mIG9uZUNsb3VkQXBwc1wiXG4gICAgICAgICAgW2hyZWZdPVwiYXBwIHwgYXBwSHJlZlwiXG4gICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICBbYWN0aW9uTmFtZV09XCInYXBwU3dpdGNoZWQnXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGFwcGxpY2F0aW9uTmFtZTogYXBwICYmIGFwcC5uYW1lIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1hcHAtaWNvblxuICAgICAgICAgICAgW2FwcF09XCJhcHBcIlxuICAgICAgICAgICAgW25hbWVdPVwiYXBwLm5hbWVcIlxuICAgICAgICAgICAgW2NvbnRleHRQYXRoXT1cImFwcC5jb250ZXh0UGF0aFwiXG4gICAgICAgICAgPjwvYzh5LWFwcC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCI+e3sgYXBwIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtc3dpdGNoZXJcIiAqbmdJZj1cInN3aXRjaGVyU2VydmljZS5hcHBzJCB8IGFzeW5jIGFzIGFwcHNcIj5cbiAgICAgIDxhXG4gICAgICAgIHRpdGxlPVwie3sgYXBwLm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fVwiXG4gICAgICAgIGNsYXNzPVwiYXBwTGlua1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihhcHAgfCBpc0FjdGl2ZUFwcCB8IGFzeW5jKSA/ICdhY3RpdmUnIDogJydcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgYXBwIG9mIGFwcHNcIlxuICAgICAgICBbaHJlZl09XCJhcHAgfCBhcHBIcmVmXCJcbiAgICAgICAgW3JlbF09XCJhcHAudHlwZSA9PT0gJ0VYVEVSTkFMJyA/ICdub29wZW5lciBub3JlZmVycmVyJyA6ICcnXCJcbiAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2FwcFN3aXRjaGVkJ1wiXG4gICAgICAgIFthY3Rpb25EYXRhXT1cInsgYXBwbGljYXRpb25OYW1lOiBhcHAgJiYgYXBwLm5hbWUgfVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktYXBwLWljb24gW2FwcF09XCJhcHBcIiBbbmFtZV09XCJhcHAubmFtZVwiIFtjb250ZXh0UGF0aF09XCJhcHAuY29udGV4dFBhdGhcIj48L2M4eS1hcHAtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlLXdyYXBcIj57eyBhcHAgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==