mmhglobal-dynamicform 2.44.0 → 2.44.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -1
- package/esm2020/lib/zchip/zchip.component.mjs +36 -9
- package/esm2020/lib/zslider/zslider.component.mjs +67 -26
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +162 -42
- package/fesm2015/mmhglobal-dynamicform.mjs +397 -202
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +389 -201
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/zchip/zchip.component.d.ts +8 -0
- package/lib/zslider/zslider.component.d.ts +7 -4
- package/lib/ztexteditor/ztexteditor.component.d.ts +20 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,55 @@
|
|
|
3
3
|
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
|
|
4
4
|
|
|
5
5
|
## Changelog
|
|
6
|
-
###
|
|
6
|
+
### 2.44.1
|
|
7
|
+
- [ztexteditor]
|
|
8
|
+
- Updated default Enter key behavior.
|
|
9
|
+
- `Enter` now inserts a line break (`<br>`) by default.
|
|
10
|
+
- `Shift + Enter` continues to insert a line break (`<br>`).
|
|
11
|
+
- To restore the original paragraph behavior (`<p>`), in the field element property set: `EnterKeyBehavior: 'paragraph'`
|
|
12
|
+
|
|
13
|
+
- Added configurable paste symbol normalization for content copied from email, Microsoft Word, Excel, and similar sources.
|
|
14
|
+
- Supports normalization for dash variants, smart quotes, non-breaking spaces, ellipsis, and common HTML entities.
|
|
15
|
+
- Can be disabled or customized through:
|
|
16
|
+
```json
|
|
17
|
+
SymbolNormalization: {
|
|
18
|
+
Enabled: true,
|
|
19
|
+
NormalizeDash: true,
|
|
20
|
+
NormalizeQuotes: true,
|
|
21
|
+
NormalizeSpaces: true,
|
|
22
|
+
NormalizeEllipsis: true,
|
|
23
|
+
NormalizeHtmlEntities: true,
|
|
24
|
+
CustomReplacements: [
|
|
25
|
+
{ From: '•', To: '-' }
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- Added `PasteCleanupSettings` as a clearer property for Kendo Editor paste cleanup configuration.
|
|
31
|
+
- Existing `Options` behavior is still supported as a backward-compatible fallback.
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
PasteCleanupSettings: {
|
|
35
|
+
removeMsClasses: true,
|
|
36
|
+
removeMsStyles: true,
|
|
37
|
+
removeInvalidHTML: true
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
- Updated image compression behavior.
|
|
42
|
+
- If compression is enabled but the image is below the minimum compression size, the original image is inserted instead of being skipped.
|
|
43
|
+
|
|
44
|
+
- Standardized toolbar ordering between `basic` and `full`.
|
|
45
|
+
|
|
46
|
+
- [zchip]
|
|
47
|
+
- Bug fix: Make `setData` support datasource replacement.
|
|
48
|
+
Previously, `setData` always ignored its parameter and re-evaluated selection state
|
|
49
|
+
from `zModel`, making it impossible for callers to replace the chip list dynamically.
|
|
50
|
+
`setData` now operates in two modes:
|
|
51
|
+
- **Data provided** → replaces `this.dataSource` directly (datasource replacement)
|
|
52
|
+
- **Null / undefined** → re-evaluates Selected flags from `group.zModel` (selection refresh)
|
|
53
|
+
- Enhancement: Added `InputFieldAddOns` support (top / bottom / left / right positions), consistent with `zlabel`.
|
|
54
|
+
- Enhancement: Added `ReadOnly` support — when `componentProperties.isReadOnly` or `componentProperties.isReadOnlyField` evaluates to true, chip selection and click events are disabled.
|
|
7
55
|
|
|
8
56
|
### 2.44.0
|
|
9
57
|
- [zslider]
|
|
@@ -12,16 +12,18 @@ import * as i1 from "../services/zcomponent.service";
|
|
|
12
12
|
import * as i2 from "mmhglobal-zcore";
|
|
13
13
|
import * as i3 from "@progress/kendo-angular-buttons";
|
|
14
14
|
import * as i4 from "@fortawesome/angular-fontawesome";
|
|
15
|
-
import * as i5 from "
|
|
16
|
-
import * as i6 from "@angular/
|
|
17
|
-
import * as i7 from "@angular/
|
|
18
|
-
import * as i8 from "@
|
|
19
|
-
import * as i9 from "
|
|
15
|
+
import * as i5 from "../embed-components/input-field-addons/input-field-addons.component";
|
|
16
|
+
import * as i6 from "@angular/common";
|
|
17
|
+
import * as i7 from "@angular/forms";
|
|
18
|
+
import * as i8 from "@angular/flex-layout/extended";
|
|
19
|
+
import * as i9 from "@progress/kendo-angular-tooltip";
|
|
20
|
+
import * as i10 from "../pipe/htmlSanitize.pipe";
|
|
20
21
|
export class ZChipComponent extends InputFieldBase {
|
|
21
22
|
constructor(componentService, fontAweSomeService) {
|
|
22
23
|
super(componentService);
|
|
23
24
|
this.componentService = componentService;
|
|
24
25
|
this.fontAweSomeService = fontAweSomeService;
|
|
26
|
+
this.inputFieldAddOn = { top: {}, left: {}, right: {}, bottom: {} };
|
|
25
27
|
}
|
|
26
28
|
ngOnInit() {
|
|
27
29
|
super.initComponent().pipe(tap(() => {
|
|
@@ -29,11 +31,26 @@ export class ZChipComponent extends InputFieldBase {
|
|
|
29
31
|
if (this.dataSource && this.dataSource.length > 0) {
|
|
30
32
|
this.setupDataSourceByzModel();
|
|
31
33
|
}
|
|
34
|
+
this.setupAddOnValue();
|
|
32
35
|
})).subscribe();
|
|
33
36
|
}
|
|
37
|
+
setupAddOnValue(addOns) {
|
|
38
|
+
const inputFieldAddOnGroupValue = ZComponentHelper.getGroupValue(addOns || this.data.InputFieldAddOns, this.group);
|
|
39
|
+
const addOnValue = inputFieldAddOnGroupValue || addOns || this.data.InputFieldAddOns;
|
|
40
|
+
if (addOnValue && Array.isArray(addOnValue)) {
|
|
41
|
+
for (const key of Object.keys(this.inputFieldAddOn)) {
|
|
42
|
+
this.inputFieldAddOn[key] = addOnValue.find(i => i.Position === key);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
34
46
|
ngAfterViewInit() {
|
|
35
47
|
this.componentService.decrementComponentCounterForField(this.data);
|
|
36
48
|
}
|
|
49
|
+
get isReadOnly() {
|
|
50
|
+
return !!this.componentProperties.isReadOnlyField
|
|
51
|
+
? this.group[this.componentProperties.isReadOnlyField]
|
|
52
|
+
: this.componentProperties.isReadOnly;
|
|
53
|
+
}
|
|
37
54
|
setupDataSource() {
|
|
38
55
|
if (!this.data.DataSource) {
|
|
39
56
|
console.error("No data source found for zchip");
|
|
@@ -57,7 +74,17 @@ export class ZChipComponent extends InputFieldBase {
|
|
|
57
74
|
}
|
|
58
75
|
}
|
|
59
76
|
setData(data) {
|
|
60
|
-
|
|
77
|
+
if (data !== undefined && data !== null) {
|
|
78
|
+
// Datasource replacement mode: caller provides a new chip array directly.
|
|
79
|
+
// Used when the chip list itself changes
|
|
80
|
+
this.dataSource = data;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Selection-refresh mode: chip list stays the same, only re-evaluate which chips
|
|
84
|
+
// are marked Selected based on the current group.zModel[data.Value].
|
|
85
|
+
this.setupDataSourceByzModel();
|
|
86
|
+
}
|
|
87
|
+
// Spread into a new array reference so Angular detects the change and re-renders.
|
|
61
88
|
this.dataSource = [...this.dataSource];
|
|
62
89
|
// Need to set in this way as the chips are QueryList
|
|
63
90
|
if (this.chipList && this.chipList.chips && this.chipList.chips.length > 0) {
|
|
@@ -108,12 +135,12 @@ export class ZChipComponent extends InputFieldBase {
|
|
|
108
135
|
}
|
|
109
136
|
}
|
|
110
137
|
ZChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZChipComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
ZChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZChipComponent, selector: "app-zchip", viewQueries: [{ propertyName: "chipList", first: true, predicate: ChipListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n <div
|
|
138
|
+
ZChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZChipComponent, selector: "app-zchip", viewQueries: [{ propertyName: "chipList", first: true, predicate: ChipListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n <div class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\"\r\n *ngIf=\"!data.InputFieldAddOns || data.InputFieldAddOns.length <= 0\">\r\n <div kendoTooltip>\r\n <kendo-chip-list [selection]=\"isReadOnly ? 'none' : (data.Multiple ? 'multiple' : 'single')\"\r\n [style.pointer-events]=\"isReadOnly ? 'none' : 'auto'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n class=\"e1tag-style5\"></div>\r\n <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n </div>\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n </div>\r\n <div class=\"label-div-container e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n *ngIf=\"data.InputFieldAddOns && data.InputFieldAddOns.length > 0\">\r\n <div class=\"addon-top-row\" *ngIf=\"inputFieldAddOn.top\">\r\n <app-input-field-addons class=\"addon-top e1tag-style4\" [position]=\"'top'\" [addOn]=\"inputFieldAddOn.top\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n <div class=\"content-withaddon-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <app-input-field-addons class=\"addon-left e1tag-style4\" [position]=\"'left'\" [addOn]=\"inputFieldAddOn.left\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n <div kendoTooltip>\r\n <kendo-chip-list [selection]=\"isReadOnly ? 'none' : (data.Multiple ? 'multiple' : 'single')\"\r\n [style.pointer-events]=\"isReadOnly ? 'none' : 'auto'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n class=\"e1tag-style5\"></div>\r\n <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n </div>\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n <app-input-field-addons class=\"addon-right e1tag-style4\" [position]=\"'right'\" [addOn]=\"inputFieldAddOn.right\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n <div class=\"addon-bottom-row\" *ngIf=\"inputFieldAddOn.bottom\">\r\n <app-input-field-addons class=\"addon-bottom e1tag-style4\" [position]=\"'bottom'\" [addOn]=\"inputFieldAddOn.bottom\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-chip-list .k-chip-filled,:host ::ng-deep kendo-chip-list .k-chip{background:white;border:1px solid #d1d1d1}:host ::ng-deep kendo-chip-list .k-chip-filled.k-selected,:host ::ng-deep kendo-chip-list .k-chip.k-selected{background:rgba(var(--ion-color-primary-rgb),.2);color:#000;box-shadow:0 0 1px 1px rgba(var(--ion-color-primary-rgb),1)}.e1-chip-content-container{display:flex;gap:5px;margin:2px 4px}.label-div-container{width:100%}.addon-top-row,.addon-bottom-row{display:block}.content-withaddon-container{display:flex;align-items:center;gap:5px}\n"], components: [{ type: i3.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size"], outputs: ["selectedChange", "remove"] }, { type: i3.ChipComponent, selector: "kendo-chip", inputs: ["label", "icon", "iconClass", "avatarClass", "selected", "removable", "removeIcon", "disabled", "size", "rounded", "fillMode", "themeColor"], outputs: ["remove", "contentClick"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.InputFieldAddOnsComponent, selector: "app-input-field-addons", inputs: ["position", "addOn"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i9.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": i10.HtmlSanitizePipe } });
|
|
112
139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZChipComponent, decorators: [{
|
|
113
140
|
type: Component,
|
|
114
|
-
args: [{ selector: 'app-zchip', template: "<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n <div
|
|
141
|
+
args: [{ selector: 'app-zchip', template: "<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n <div class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\"\r\n *ngIf=\"!data.InputFieldAddOns || data.InputFieldAddOns.length <= 0\">\r\n <div kendoTooltip>\r\n <kendo-chip-list [selection]=\"isReadOnly ? 'none' : (data.Multiple ? 'multiple' : 'single')\"\r\n [style.pointer-events]=\"isReadOnly ? 'none' : 'auto'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n class=\"e1tag-style5\"></div>\r\n <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n </div>\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n </div>\r\n <div class=\"label-div-container e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n *ngIf=\"data.InputFieldAddOns && data.InputFieldAddOns.length > 0\">\r\n <div class=\"addon-top-row\" *ngIf=\"inputFieldAddOn.top\">\r\n <app-input-field-addons class=\"addon-top e1tag-style4\" [position]=\"'top'\" [addOn]=\"inputFieldAddOn.top\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n <div class=\"content-withaddon-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <app-input-field-addons class=\"addon-left e1tag-style4\" [position]=\"'left'\" [addOn]=\"inputFieldAddOn.left\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n <div kendoTooltip>\r\n <kendo-chip-list [selection]=\"isReadOnly ? 'none' : (data.Multiple ? 'multiple' : 'single')\"\r\n [style.pointer-events]=\"isReadOnly ? 'none' : 'auto'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n class=\"e1tag-style5\"></div>\r\n <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n </div>\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n <app-input-field-addons class=\"addon-right e1tag-style4\" [position]=\"'right'\" [addOn]=\"inputFieldAddOn.right\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n <div class=\"addon-bottom-row\" *ngIf=\"inputFieldAddOn.bottom\">\r\n <app-input-field-addons class=\"addon-bottom e1tag-style4\" [position]=\"'bottom'\" [addOn]=\"inputFieldAddOn.bottom\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-chip-list .k-chip-filled,:host ::ng-deep kendo-chip-list .k-chip{background:white;border:1px solid #d1d1d1}:host ::ng-deep kendo-chip-list .k-chip-filled.k-selected,:host ::ng-deep kendo-chip-list .k-chip.k-selected{background:rgba(var(--ion-color-primary-rgb),.2);color:#000;box-shadow:0 0 1px 1px rgba(var(--ion-color-primary-rgb),1)}.e1-chip-content-container{display:flex;gap:5px;margin:2px 4px}.label-div-container{width:100%}.addon-top-row,.addon-bottom-row{display:block}.content-withaddon-container{display:flex;align-items:center;gap:5px}\n"] }]
|
|
115
142
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { chipList: [{
|
|
116
143
|
type: ViewChild,
|
|
117
144
|
args: [ChipListComponent]
|
|
118
145
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFjLGdCQUFnQixFQUE2QyxNQUFNLGlCQUFpQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQVNwRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFJaEQsWUFDUyxnQkFBbUMsRUFDbkMsa0JBQXNDO1FBRTdDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBSGpCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUcvQyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakQsSUFBSSxD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RSxTQUFTO2dCQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQ3pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDOUMsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFTO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7MkdBN0dVLGNBQWM7K0ZBQWQsY0FBYywyRkFDZCxpQkFBaUIsdUVDdEI5QixrbURBc0JBOzJGRERhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVzt5SUFNZ0IsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgRm9udEF3ZVNvbWVTZXJ2aWNlIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuaW1wb3J0IHsgQ2hpcExpc3RDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItYnV0dG9uc1wiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpjaGlwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vemNoaXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pjaGlwLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWkNoaXBDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChDaGlwTGlzdENvbXBvbmVudCkgcHVibGljIGNoaXBMaXN0OiBDaGlwTGlzdENvbXBvbmVudDtcclxuICBwdWJsaWMgZGF0YVNvdXJjZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZm9udEF3ZVNvbWVTZXJ2aWNlOiBGb250QXdlU29tZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHVwRGF0YVNvdXJjZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgJiYgdGhpcy5kYXRhU291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2V0dXBEYXRhU291cmNlQnl6TW9kZWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldHVwRGF0YVNvdXJjZSgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhLkRhdGFTb3VyY2UpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIk5vIGRhdGEgc291cmNlIGZvdW5kIGZvciB6Y2hpcFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YS5EYXRhU291cmNlO1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuRGF0YVNvdXJjZSA9PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGEuRGF0YVNvdXJjZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLkRhdGFTb3VyY2UsIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFTb3VyY2VCeXpNb2RlbCgpIHtcclxuICAgIGNvbnN0IG1vZGVsRGF0YSA9IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBpZiAoIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkobW9kZWxEYXRhKSkge1xyXG4gICAgICBjb25zdCBtb2RlbFZhbHVlS2V5TGlzdCA9IG1vZGVsRGF0YS5tYXAoeCA9PiB4LkxhYmVsKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICBpdGVtLlNlbGVjdGVkID0gbW9kZWxWYWx1ZUtleUxpc3QuaW5jbHVkZXMoaXRlbS5MYWJlbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCh4ID0+IHguU2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuc2V0dXBEYXRhU291cmNlQnl6TW9kZWwoKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IFsuLi50aGlzLmRhdGFTb3VyY2VdO1xyXG5cclxuICAgIC8vIE5lZWQgdG8gc2V0IGluIHRoaXMgd2F5IGFzIHRoZSBjaGlwcyBhcmUgUXVlcnlMaXN0XHJcbiAgICBpZiAodGhpcy5jaGlwTGlzdCAmJiB0aGlzLmNoaXBMaXN0LmNoaXBzICYmIHRoaXMuY2hpcExpc3QuY2hpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaXAgb2YgdGhpcy5jaGlwTGlzdC5jaGlwcykge1xyXG4gICAgICAgIGNoaXAuc2VsZWN0ZWQgPSAhIXRoaXMuZGF0YVNvdXJjZVtpbmRleF0/LlNlbGVjdGVkIHx8IGZhbHNlO1xyXG4gICAgICAgIGluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldHVwRGF0YVNvdXJjZUZvckljb25DaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBEYXRhU291cmNlRm9ySWNvbkNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGFbJ0NoYW5nZUljb25VcG9uU2VsZWN0ZWQnXSkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCB4IG9mIHRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgeC5fSWNvbiA9IHguSWNvbjtcclxuICAgICAgICAgIHguSWNvbiA9ICEheC5TZWxlY3RlZCA/IHguU2VsZWN0ZWRJY29uIDogeC5fSWNvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBFdmVudHNcclxuICBwdWJsaWMgY2hpcExpc3RDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0ZWRDaGlwSW5kZXhlczogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENoaXBzID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcigoeCwgaSkgPT4gc2VsZWN0ZWRDaGlwSW5kZXhlcy5pbmNsdWRlcyhpKSk7XHJcbiAgICBpZiAodGhpcy5kYXRhWydDaGFuZ2VJY29uVXBvblNlbGVjdGVkJ10pIHtcclxuICAgICAgZm9yIChjb25zdCBjaGlwIG9mIHNlbGVjdGVkQ2hpcHMpIHtcclxuICAgICAgICBjaGlwLkljb24gPSBjaGlwLlNlbGVjdGVkSWNvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgbm90U2VsZWN0ZWRDaGlwcyA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoKHgsIGkpID0+ICFzZWxlY3RlZENoaXBJbmRleGVzLmluY2x1ZGVzKGkpKTtcclxuICAgICAgZm9yIChjb25zdCBjaGlwIG9mIG5vdFNlbGVjdGVkQ2hpcHMpIHtcclxuICAgICAgICBjaGlwLkljb24gPSB0aGlzLmRhdGFTb3VyY2UuZmluZCh4ID0+IHguTGFiZWwgPT09IGNoaXAuTGFiZWwpLl9JY29uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgc2VsZWN0ZWRDaGlwcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW91c2VvdmVyKGV2ZW50OiBhbnksIGNoaXA6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkhvdmVyKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgICB0eXBlOiBcIm9uSG92ZXJcIixcclxuICAgICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5PbkhvdmVyLFxyXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMuZGF0YVNvdXJjZSwgc2VsZWN0ZWRJdGVtOiBjaGlwLCBmaWVsZDogdGhpcy5kYXRhIH1cclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUmVtb3ZlKGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmRhdGFTb3VyY2UuZmluZEluZGV4KChjKSA9PiBjLkxhYmVsID09PSBjaGlwLkxhYmVsKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZTF0YWctc3R5bGVcIlxyXG4gICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCJcclxuICBbbmdDbGFzc109XCJnZXRDbGFzcyhmb3JtLCBkYXRhKVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBrZW5kb1Rvb2x0aXAgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxrZW5kby1jaGlwLWxpc3QgW3NlbGVjdGlvbl09XCJkYXRhLk11bHRpcGxlID8gJ211bHRpcGxlJyA6ICdzaW5nbGUnXCJcclxuICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImNoaXBMaXN0Q2hhbmdlU2VsZWN0aW9uKCRldmVudClcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIlxyXG4gICAgICBjbGFzcz1cImUxdGFnLXN0eWxlMlwiPlxyXG4gICAgICA8a2VuZG8tY2hpcCAqbmdGb3I9XCJsZXQgY2hpcCBvZiBkYXRhU291cmNlXCIgW3NlbGVjdGVkXT1cImNoaXAuU2VsZWN0ZWRcIiBbbmdDbGFzc109XCJjaGlwLkNsYXNzXCJcclxuICAgICAgICBbcmVtb3ZhYmxlXT1cImNoaXAuUmVtb3ZhYmxlXCIgKHJlbW92ZSk9XCJvblJlbW92ZShjaGlwKVwiXHJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZW92ZXIoJGV2ZW50LCBjaGlwKVwiIChjb250ZW50Q2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBjaGlwKVwiXHJcbiAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZTEtY2hpcC1jb250ZW50LWNvbnRhaW5lciBlMXRhZy1zdHlsZTRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGlwLkxhYmVsXCIgW2lubmVySFRNTF09XCJjaGlwLkxhYmVsIHwgaHRtbFNhbml0aXplXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIj48L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNoaXAuTGFiZWxcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPnt7Y2hpcC5MYWJlbH19PC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGZhLWljb24gKm5nSWY9XCJjaGlwLkljb25cIiBbaWNvbl09XCJnZXRGb250QXdlc29tZShjaGlwLkljb24sIGZvbnRBd2VTb21lU2VydmljZSlcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTZcIiBjbGFzcz1cImUxdGFnLXN0eWxlNlwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9rZW5kby1jaGlwPlxyXG4gICAgPC9rZW5kby1jaGlwLWxpc3Q+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFjLGdCQUFnQixFQUE2QyxNQUFNLGlCQUFpQixDQUFDO0FBRTFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBS2hELFlBQ1MsZ0JBQW1DLEVBQ25DLGtCQUFzQztRQUU3QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFKeEMsb0JBQWUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQU90RSxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJ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LEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUN6QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQzlDLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsSUFBUztRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7OzJHQXhJVSxjQUFjOytGQUFkLGNBQWMsMkZBQ2QsaUJBQWlCLHVFQ3ZCOUIsKzBKQW9FQTsyRkQ5Q2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXO3lJQU1nQixRQUFRO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBGb250QXdlU29tZVNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ2hpcExpc3RDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItYnV0dG9uc1wiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpjaGlwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vemNoaXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pjaGlwLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWkNoaXBDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChDaGlwTGlzdENvbXBvbmVudCkgcHVibGljIGNoaXBMaXN0OiBDaGlwTGlzdENvbXBvbmVudDtcclxuICBwdWJsaWMgZGF0YVNvdXJjZTtcclxuICBwdWJsaWMgaW5wdXRGaWVsZEFkZE9uID0geyB0b3A6IHt9LCBsZWZ0OiB7fSwgcmlnaHQ6IHt9LCBib3R0b206IHt9IH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR1cERhdGFTb3VyY2UoKTtcclxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlICYmIHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNldHVwRGF0YVNvdXJjZUJ5ek1vZGVsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBBZGRPblZhbHVlKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEFkZE9uVmFsdWUoYWRkT25zPzogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dEZpZWxkQWRkT25Hcm91cFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKGFkZE9ucyB8fCB0aGlzLmRhdGEuSW5wdXRGaWVsZEFkZE9ucyBhcyBhbnksIHRoaXMuZ3JvdXApO1xyXG4gICAgY29uc3QgYWRkT25WYWx1ZSA9IGlucHV0RmllbGRBZGRPbkdyb3VwVmFsdWUgfHwgYWRkT25zIHx8IHRoaXMuZGF0YS5JbnB1dEZpZWxkQWRkT25zO1xyXG4gICAgaWYgKGFkZE9uVmFsdWUgJiYgQXJyYXkuaXNBcnJheShhZGRPblZhbHVlKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmlucHV0RmllbGRBZGRPbikpIHtcclxuICAgICAgICB0aGlzLmlucHV0RmllbGRBZGRPbltrZXldID0gYWRkT25WYWx1ZS5maW5kKGkgPT4gaS5Qb3NpdGlvbiA9PT0ga2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUmVhZE9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXHJcbiAgICAgID8gKHRoaXMuZ3JvdXAgYXMgYW55KVt0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXVxyXG4gICAgICA6IHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldHVwRGF0YVNvdXJjZSgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhLkRhdGFTb3VyY2UpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIk5vIGRhdGEgc291cmNlIGZvdW5kIGZvciB6Y2hpcFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YS5EYXRhU291cmNlO1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuRGF0YVNvdXJjZSA9PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGEuRGF0YVNvdXJjZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLkRhdGFTb3VyY2UsIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFTb3VyY2VCeXpNb2RlbCgpIHtcclxuICAgIGNvbnN0IG1vZGVsRGF0YSA9IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBpZiAoIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkobW9kZWxEYXRhKSkge1xyXG4gICAgICBjb25zdCBtb2RlbFZhbHVlS2V5TGlzdCA9IG1vZGVsRGF0YS5tYXAoeCA9PiB4LkxhYmVsKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICBpdGVtLlNlbGVjdGVkID0gbW9kZWxWYWx1ZUtleUxpc3QuaW5jbHVkZXMoaXRlbS5MYWJlbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCh4ID0+IHguU2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQgJiYgZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAvLyBEYXRhc291cmNlIHJlcGxhY2VtZW50IG1vZGU6IGNhbGxlciBwcm92aWRlcyBhIG5ldyBjaGlwIGFycmF5IGRpcmVjdGx5LlxyXG4gICAgICAvLyBVc2VkIHdoZW4gdGhlIGNoaXAgbGlzdCBpdHNlbGYgY2hhbmdlc1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU2VsZWN0aW9uLXJlZnJlc2ggbW9kZTogY2hpcCBsaXN0IHN0YXlzIHRoZSBzYW1lLCBvbmx5IHJlLWV2YWx1YXRlIHdoaWNoIGNoaXBzXHJcbiAgICAgIC8vIGFyZSBtYXJrZWQgU2VsZWN0ZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgZ3JvdXAuek1vZGVsW2RhdGEuVmFsdWVdLlxyXG4gICAgICB0aGlzLnNldHVwRGF0YVNvdXJjZUJ5ek1vZGVsKCk7XHJcbiAgICB9XHJcbiAgICAvLyBTcHJlYWQgaW50byBhIG5ldyBhcnJheSByZWZlcmVuY2Ugc28gQW5ndWxhciBkZXRlY3RzIHRoZSBjaGFuZ2UgYW5kIHJlLXJlbmRlcnMuXHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBbLi4udGhpcy5kYXRhU291cmNlXTtcclxuXHJcbiAgICAvLyBOZWVkIHRvIHNldCBpbiB0aGlzIHdheSBhcyB0aGUgY2hpcHMgYXJlIFF1ZXJ5TGlzdFxyXG4gICAgaWYgKHRoaXMuY2hpcExpc3QgJiYgdGhpcy5jaGlwTGlzdC5jaGlwcyAmJiB0aGlzLmNoaXBMaXN0LmNoaXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgZm9yIChjb25zdCBjaGlwIG9mIHRoaXMuY2hpcExpc3QuY2hpcHMpIHtcclxuICAgICAgICBjaGlwLnNlbGVjdGVkID0gISF0aGlzLmRhdGFTb3VyY2VbaW5kZXhdPy5TZWxlY3RlZCB8fCBmYWxzZTtcclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXR1cERhdGFTb3VyY2VGb3JJY29uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRGF0YVNvdXJjZUZvckljb25DaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhWydDaGFuZ2VJY29uVXBvblNlbGVjdGVkJ10pIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlKSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgeCBvZiB0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgIHguX0ljb24gPSB4Lkljb247XHJcbiAgICAgICAgICB4Lkljb24gPSAhIXguU2VsZWN0ZWQgPyB4LlNlbGVjdGVkSWNvbiA6IHguX0ljb247XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gRXZlbnRzXHJcbiAgcHVibGljIGNoaXBMaXN0Q2hhbmdlU2VsZWN0aW9uKHNlbGVjdGVkQ2hpcEluZGV4ZXM6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlwcyA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoKHgsIGkpID0+IHNlbGVjdGVkQ2hpcEluZGV4ZXMuaW5jbHVkZXMoaSkpO1xyXG4gICAgaWYgKHRoaXMuZGF0YVsnQ2hhbmdlSWNvblVwb25TZWxlY3RlZCddKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpcCBvZiBzZWxlY3RlZENoaXBzKSB7XHJcbiAgICAgICAgY2hpcC5JY29uID0gY2hpcC5TZWxlY3RlZEljb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5vdFNlbGVjdGVkQ2hpcHMgPSB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKCh4LCBpKSA9PiAhc2VsZWN0ZWRDaGlwSW5kZXhlcy5pbmNsdWRlcyhpKSk7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpcCBvZiBub3RTZWxlY3RlZENoaXBzKSB7XHJcbiAgICAgICAgY2hpcC5JY29uID0gdGhpcy5kYXRhU291cmNlLmZpbmQoeCA9PiB4LkxhYmVsID09PSBjaGlwLkxhYmVsKS5fSWNvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN1cGVyLm9uQ2hhbmdlKG51bGwsIHNlbGVjdGVkQ2hpcHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdXNlb3ZlcihldmVudDogYW55LCBjaGlwOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuT25Ib3Zlcikge1xyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogXCJvbkhvdmVyXCIsXHJcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmRhdGEuT25Ib3ZlcixcclxuICAgICAgICBkYXRhOiB7IHZhbHVlOiB0aGlzLmRhdGFTb3VyY2UsIHNlbGVjdGVkSXRlbTogY2hpcCwgZmllbGQ6IHRoaXMuZGF0YSB9XHJcbiAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlbW92ZShjaGlwOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhU291cmNlLmZpbmRJbmRleCgoYykgPT4gYy5MYWJlbCA9PT0gY2hpcC5MYWJlbCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImUxdGFnLXN0eWxlXCJcclxuICAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3MoZm9ybSwgZGF0YSlcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgKm5nSWY9XCIhZGF0YS5JbnB1dEZpZWxkQWRkT25zIHx8IGRhdGEuSW5wdXRGaWVsZEFkZE9ucy5sZW5ndGggPD0gMFwiPlxyXG4gICAgPGRpdiBrZW5kb1Rvb2x0aXA+XHJcbiAgICAgIDxrZW5kby1jaGlwLWxpc3QgW3NlbGVjdGlvbl09XCJpc1JlYWRPbmx5ID8gJ25vbmUnIDogKGRhdGEuTXVsdGlwbGUgPyAnbXVsdGlwbGUnIDogJ3NpbmdsZScpXCJcclxuICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaXNSZWFkT25seSA/ICdub25lJyA6ICdhdXRvJ1wiXHJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImNoaXBMaXN0Q2hhbmdlU2VsZWN0aW9uKCRldmVudClcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIlxyXG4gICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGUyXCI+XHJcbiAgICAgICAgPGtlbmRvLWNoaXAgKm5nRm9yPVwibGV0IGNoaXAgb2YgZGF0YVNvdXJjZVwiIFtzZWxlY3RlZF09XCJjaGlwLlNlbGVjdGVkXCIgW25nQ2xhc3NdPVwiY2hpcC5DbGFzc1wiXHJcbiAgICAgICAgICBbcmVtb3ZhYmxlXT1cImNoaXAuUmVtb3ZhYmxlXCIgKHJlbW92ZSk9XCJvblJlbW92ZShjaGlwKVwiXHJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlb3ZlcigkZXZlbnQsIGNoaXApXCIgKGNvbnRlbnRDbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGNoaXApXCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZTEtY2hpcC1jb250ZW50LWNvbnRhaW5lciBlMXRhZy1zdHlsZTRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNoaXAuTGFiZWxcIiBbaW5uZXJIVE1MXT1cImNoaXAuTGFiZWwgfCBodG1sU2FuaXRpemVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGU1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiY2hpcC5JY29uXCIgW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoY2hpcC5JY29uLCBmb250QXdlU29tZVNlcnZpY2UpXCJcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTZcIiBjbGFzcz1cImUxdGFnLXN0eWxlNlwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwva2VuZG8tY2hpcD5cclxuICAgICAgPC9rZW5kby1jaGlwLWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibGFiZWwtZGl2LWNvbnRhaW5lciBlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIlxyXG4gICAgKm5nSWY9XCJkYXRhLklucHV0RmllbGRBZGRPbnMgJiYgZGF0YS5JbnB1dEZpZWxkQWRkT25zLmxlbmd0aCA+IDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGRvbi10b3Atcm93XCIgKm5nSWY9XCJpbnB1dEZpZWxkQWRkT24udG9wXCI+XHJcbiAgICAgIDxhcHAtaW5wdXQtZmllbGQtYWRkb25zIGNsYXNzPVwiYWRkb24tdG9wIGUxdGFnLXN0eWxlNFwiIFtwb3NpdGlvbl09XCIndG9wJ1wiIFthZGRPbl09XCJpbnB1dEZpZWxkQWRkT24udG9wXCJcclxuICAgICAgICBbZGF0YV09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFtjb250YWluZXJGaWVsZF09XCJjb250YWluZXJGaWVsZFwiXHJcbiAgICAgICAgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICA8L2FwcC1pbnB1dC1maWVsZC1hZGRvbnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXdpdGhhZGRvbi1jb250YWluZXIgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICAgIDxhcHAtaW5wdXQtZmllbGQtYWRkb25zIGNsYXNzPVwiYWRkb24tbGVmdCBlMXRhZy1zdHlsZTRcIiBbcG9zaXRpb25dPVwiJ2xlZnQnXCIgW2FkZE9uXT1cImlucHV0RmllbGRBZGRPbi5sZWZ0XCJcclxuICAgICAgICBbZGF0YV09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFtjb250YWluZXJGaWVsZF09XCJjb250YWluZXJGaWVsZFwiXHJcbiAgICAgICAgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICA8L2FwcC1pbnB1dC1maWVsZC1hZGRvbnM+XHJcbiAgICAgIDxkaXYga2VuZG9Ub29sdGlwPlxyXG4gICAgICAgIDxrZW5kby1jaGlwLWxpc3QgW3NlbGVjdGlvbl09XCJpc1JlYWRPbmx5ID8gJ25vbmUnIDogKGRhdGEuTXVsdGlwbGUgPyAnbXVsdGlwbGUnIDogJ3NpbmdsZScpXCJcclxuICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaXNSZWFkT25seSA/ICdub25lJyA6ICdhdXRvJ1wiXHJcbiAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiY2hpcExpc3RDaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiXHJcbiAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlMlwiPlxyXG4gICAgICAgICAgPGtlbmRvLWNoaXAgKm5nRm9yPVwibGV0IGNoaXAgb2YgZGF0YVNvdXJjZVwiIFtzZWxlY3RlZF09XCJjaGlwLlNlbGVjdGVkXCIgW25nQ2xhc3NdPVwiY2hpcC5DbGFzc1wiXHJcbiAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiY2hpcC5SZW1vdmFibGVcIiAocmVtb3ZlKT1cIm9uUmVtb3ZlKGNoaXApXCJcclxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZW92ZXIoJGV2ZW50LCBjaGlwKVwiIChjb250ZW50Q2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBjaGlwKVwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlMS1jaGlwLWNvbnRlbnQtY29udGFpbmVyIGUxdGFnLXN0eWxlNFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGlwLkxhYmVsXCIgW2lubmVySFRNTF09XCJjaGlwLkxhYmVsIHwgaHRtbFNhbml0aXplXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGU1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gKm5nSWY9XCJjaGlwLkljb25cIiBbaWNvbl09XCJnZXRGb250QXdlc29tZShjaGlwLkljb24sIGZvbnRBd2VTb21lU2VydmljZSlcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTZcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9rZW5kby1jaGlwPlxyXG4gICAgICAgIDwva2VuZG8tY2hpcC1saXN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1pbnB1dC1maWVsZC1hZGRvbnMgY2xhc3M9XCJhZGRvbi1yaWdodCBlMXRhZy1zdHlsZTRcIiBbcG9zaXRpb25dPVwiJ3JpZ2h0J1wiIFthZGRPbl09XCJpbnB1dEZpZWxkQWRkT24ucmlnaHRcIlxyXG4gICAgICAgIFtkYXRhXT1cImRhdGFcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCJcclxuICAgICAgICBbY29tcG9uZW50UHJvcGVydGllc109XCJjb21wb25lbnRQcm9wZXJ0aWVzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+XHJcbiAgICAgIDwvYXBwLWlucHV0LWZpZWxkLWFkZG9ucz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZG9uLWJvdHRvbS1yb3dcIiAqbmdJZj1cImlucHV0RmllbGRBZGRPbi5ib3R0b21cIj5cclxuICAgICAgPGFwcC1pbnB1dC1maWVsZC1hZGRvbnMgY2xhc3M9XCJhZGRvbi1ib3R0b20gZTF0YWctc3R5bGU0XCIgW3Bvc2l0aW9uXT1cIidib3R0b20nXCIgW2FkZE9uXT1cImlucHV0RmllbGRBZGRPbi5ib3R0b21cIlxyXG4gICAgICAgIFtkYXRhXT1cImRhdGFcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCJcclxuICAgICAgICBbY29tcG9uZW50UHJvcGVydGllc109XCJjb21wb25lbnRQcm9wZXJ0aWVzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+XHJcbiAgICAgIDwvYXBwLWlucHV0LWZpZWxkLWFkZG9ucz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -3,7 +3,6 @@ import { Component, Input } from '@angular/core';
|
|
|
3
3
|
/********** Component & Service **********/
|
|
4
4
|
import { InputFieldBase } from '../components/inputfieldbase.component';
|
|
5
5
|
import { ZComponentHelper } from "mmhglobal-zcore";
|
|
6
|
-
import { Validators } from '@angular/forms';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "../services/zcomponent.service";
|
|
9
8
|
import * as i2 from "@progress/kendo-angular-inputs";
|
|
@@ -26,6 +25,27 @@ export class ZsliderComponent extends InputFieldBase {
|
|
|
26
25
|
ngOnInit() {
|
|
27
26
|
super.setupInnerField();
|
|
28
27
|
this.setInitPropertyValue();
|
|
28
|
+
// Wrap setRequire to re-add min/max validators after the base resets all validators via setValidators()
|
|
29
|
+
const originalSetRequire = this.setRequire;
|
|
30
|
+
this.setRequire = (status) => {
|
|
31
|
+
originalSetRequire(status);
|
|
32
|
+
this.addMinAndMaxValidator();
|
|
33
|
+
};
|
|
34
|
+
// Initialize FormControl disabled state programmatically (avoids [disabled] Angular warning)
|
|
35
|
+
this._cachedReadOnlyState = this.getReadOnlyState();
|
|
36
|
+
if (this._cachedReadOnlyState) {
|
|
37
|
+
this.form?.controls[this.data.Value]?.disable();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ngDoCheck() {
|
|
41
|
+
const currentReadOnly = this.getReadOnlyState();
|
|
42
|
+
if (currentReadOnly !== this._cachedReadOnlyState) {
|
|
43
|
+
this._cachedReadOnlyState = currentReadOnly;
|
|
44
|
+
const fc = this.form?.controls[this.data.Value];
|
|
45
|
+
if (fc) {
|
|
46
|
+
currentReadOnly ? fc.disable() : fc.enable();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
29
49
|
}
|
|
30
50
|
ngOnDestroy() {
|
|
31
51
|
this.removeMinAndMaxValidator();
|
|
@@ -33,6 +53,11 @@ export class ZsliderComponent extends InputFieldBase {
|
|
|
33
53
|
ngAfterViewInit() {
|
|
34
54
|
this.componentService.decrementComponentCounterForField(this.data);
|
|
35
55
|
}
|
|
56
|
+
getReadOnlyState() {
|
|
57
|
+
return !!this.componentProperties?.isReadOnlyField
|
|
58
|
+
? !!this.group[this.componentProperties.isReadOnlyField]
|
|
59
|
+
: !!this.componentProperties?.isReadOnly;
|
|
60
|
+
}
|
|
36
61
|
setMinValue(newValue) {
|
|
37
62
|
this.minValue = newValue;
|
|
38
63
|
// mark this control as touched to trigger for validation
|
|
@@ -85,34 +110,50 @@ export class ZsliderComponent extends InputFieldBase {
|
|
|
85
110
|
this.addMinAndMaxValidator();
|
|
86
111
|
}
|
|
87
112
|
addMinAndMaxValidator() {
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
113
|
+
const control = this.form?.controls[this.data.Value];
|
|
114
|
+
if (control) {
|
|
115
|
+
// Remove existing references first to prevent duplicates on re-add (e.g. after setRequire resets validators)
|
|
116
|
+
if (this.minValidator) {
|
|
117
|
+
control.removeValidators(this.minValidator);
|
|
118
|
+
}
|
|
119
|
+
if (this.maxValidator) {
|
|
120
|
+
control.removeValidators(this.maxValidator);
|
|
121
|
+
}
|
|
122
|
+
if (this.minValue != undefined) {
|
|
123
|
+
const min = Number(this.minValue);
|
|
124
|
+
// Use minError key (not Angular's 'min') so getErrorMessageByErrorType produces the correct message
|
|
125
|
+
this.minValidator = (c) => {
|
|
126
|
+
const v = c.value;
|
|
127
|
+
if (v === null || v === undefined || v === '')
|
|
128
|
+
return null;
|
|
129
|
+
return Number(v) < min ? { minError: { minValue: min } } : null;
|
|
130
|
+
};
|
|
131
|
+
control.addValidators(this.minValidator);
|
|
101
132
|
}
|
|
133
|
+
if (this.maxValue != undefined) {
|
|
134
|
+
const max = Number(this.maxValue);
|
|
135
|
+
// Use maxError key (not Angular's 'max') so getErrorMessageByErrorType produces the correct message
|
|
136
|
+
this.maxValidator = (c) => {
|
|
137
|
+
const v = c.value;
|
|
138
|
+
if (v === null || v === undefined || v === '')
|
|
139
|
+
return null;
|
|
140
|
+
return Number(v) > max ? { maxError: { maxValue: max } } : null;
|
|
141
|
+
};
|
|
142
|
+
control.addValidators(this.maxValidator);
|
|
143
|
+
}
|
|
144
|
+
control.updateValueAndValidity();
|
|
102
145
|
}
|
|
103
146
|
}
|
|
104
147
|
removeMinAndMaxValidator() {
|
|
105
|
-
this.minValue =
|
|
106
|
-
this.maxValue =
|
|
148
|
+
this.minValue = undefined;
|
|
149
|
+
this.maxValue = undefined;
|
|
107
150
|
const control = this.form?.controls[this.data.Value];
|
|
108
151
|
if (control) {
|
|
109
|
-
if (this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
control.removeValidators(this.maxValidator);
|
|
115
|
-
}
|
|
152
|
+
if (control.hasValidator(this.minValidator)) {
|
|
153
|
+
control.removeValidators(this.minValidator);
|
|
154
|
+
}
|
|
155
|
+
if (control.hasValidator(this.maxValidator)) {
|
|
156
|
+
control.removeValidators(this.maxValidator);
|
|
116
157
|
}
|
|
117
158
|
control.updateValueAndValidity();
|
|
118
159
|
}
|
|
@@ -126,10 +167,10 @@ export class ZsliderComponent extends InputFieldBase {
|
|
|
126
167
|
}
|
|
127
168
|
}
|
|
128
169
|
ZsliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZsliderComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
-
ZsliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZsliderComponent, selector: "app-zslider", inputs: { data: "data", group: "group", form: "form" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zslider-container e1tag-style\" [style]=\"componentProperties.style.style\"\r\n
|
|
170
|
+
ZsliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZsliderComponent, selector: "app-zslider", inputs: { data: "data", group: "group", form: "form" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zslider-container e1tag-style\" [style]=\"componentProperties.style.style\"\r\n [class.has-error-with-tick]=\"tickPlacement !== 'none' && hasError\">\r\n <div style=\"display: flex; width: 100%;\">\r\n <kendo-slider #orientation [id]=\"data.Name\" [formControlName]=\"data.Value\" [vertical]=\"sliderData?.IsVertical\"\r\n [min]=\"minValue\" [max]=\"maxValue\" [smallStep]=\"smallStep\" [largeStep]=\"largeStep\" [tickPlacement]=\"tickPlacement\"\r\n [showButtons]=\"sliderData?.ShowButtons\"\r\n (valueChange)=\"onChange(null, $event)\" [style]=\"componentProperties?.style?.style1\" class=\"e1tag-style1\">\r\n </kendo-slider> \r\n\r\n <kendo-numerictextbox [formControlName]=\"data.Value\" [min]=\"minValue\" [max]=\"maxValue\"\r\n [spinners]=\"data.ShowSpinners\" [step]=\"data.StepValue\"\r\n (valueChange)=\"onChange(null, $event)\" style=\"width: 30%;\">\r\n </kendo-numerictextbox>\r\n </div>\r\n</div>\r\n", styles: [".has-error-with-tick{padding-bottom:25px}\n"], components: [{ type: i2.SliderComponent, selector: "kendo-slider", inputs: ["focusableId", "dragHandleTitle", "incrementTitle", "animate", "decrementTitle", "showButtons", "value", "tabIndex"], exportAs: ["kendoSlider"] }, { type: i2.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
130
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZsliderComponent, decorators: [{
|
|
131
172
|
type: Component,
|
|
132
|
-
args: [{ selector: 'app-zslider', template: "<div [formGroup]=\"form\" class=\"zslider-container e1tag-style\" [style]=\"componentProperties.style.style\"\r\n
|
|
173
|
+
args: [{ selector: 'app-zslider', template: "<div [formGroup]=\"form\" class=\"zslider-container e1tag-style\" [style]=\"componentProperties.style.style\"\r\n [class.has-error-with-tick]=\"tickPlacement !== 'none' && hasError\">\r\n <div style=\"display: flex; width: 100%;\">\r\n <kendo-slider #orientation [id]=\"data.Name\" [formControlName]=\"data.Value\" [vertical]=\"sliderData?.IsVertical\"\r\n [min]=\"minValue\" [max]=\"maxValue\" [smallStep]=\"smallStep\" [largeStep]=\"largeStep\" [tickPlacement]=\"tickPlacement\"\r\n [showButtons]=\"sliderData?.ShowButtons\"\r\n (valueChange)=\"onChange(null, $event)\" [style]=\"componentProperties?.style?.style1\" class=\"e1tag-style1\">\r\n </kendo-slider> \r\n\r\n <kendo-numerictextbox [formControlName]=\"data.Value\" [min]=\"minValue\" [max]=\"maxValue\"\r\n [spinners]=\"data.ShowSpinners\" [step]=\"data.StepValue\"\r\n (valueChange)=\"onChange(null, $event)\" style=\"width: 30%;\">\r\n </kendo-numerictextbox>\r\n </div>\r\n</div>\r\n", styles: [".has-error-with-tick{padding-bottom:25px}\n"] }]
|
|
133
174
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { data: [{
|
|
134
175
|
type: Input
|
|
135
176
|
}], group: [{
|
|
@@ -137,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
137
178
|
}], form: [{
|
|
138
179
|
type: Input
|
|
139
180
|
}] } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96c2xpZGVyL3pzbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNsaWRlci96c2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHcEUsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBQWMsZ0JBQWdCLEVBQXFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEcsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU92RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBYztJQW9CbEQsWUFDUyxnQkFBbUM7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQVhyQyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBR2IsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUN2QixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQU12QixDQUFDO0lBbkJELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQW9DLENBQUM7SUFDbkQsQ0FBQztJQW1CRCxRQUFRO1FBQ04sS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FB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QyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4RixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0YsQ0FBQzs7NkdBaEpVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLGtJQ2Y3Qiw0dkNBZ0JNOzJGRERPLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhO3dHQUtkLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JvdXAsIHpTbGlkZXJQcm9wZXJ0aWVzIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16c2xpZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venNsaWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4venNsaWRlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWnNsaWRlckNvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgZ2V0IHNsaWRlckRhdGEoKTogelNsaWRlclByb3BlcnRpZXMge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSBhcyB1bmtub3duIGFzIHpTbGlkZXJQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBpbnB1dE1vZGUgPSBcImRlY2ltYWxcIjtcclxuICBwdWJsaWMgbWluVmFsdWUgPSAwO1xyXG4gIHB1YmxpYyBtYXhWYWx1ZSA9IDA7XHJcbiAgcHJpdmF0ZSBtaW5WYWxpZGF0b3I7XHJcbiAgcHJpdmF0ZSBtYXhWYWxpZGF0b3I7XHJcbiAgcHVibGljIHNtYWxsU3RlcCA9IDE7XHJcbiAgcHVibGljIGxhcmdlU3RlcCA9IDU7XHJcbiAgcHVibGljIHRpY2tQbGFjZW1lbnQgPSAnYm90aCc7XHJcbiAgcHVibGljIHNsaWRlcnZhbHVlID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5zZXR1cElubmVyRmllbGQoKTtcclxuICAgIHRoaXMuc2V0SW5pdFByb3BlcnR5VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZW1vdmVNaW5BbmRNYXhWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIHNldE1pblZhbHVlKG5ld1ZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWluVmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAvLyBtYXJrIHRoaXMgY29udHJvbCBhcyB0b3VjaGVkIHRvIHRyaWdnZXIgZm9yIHZhbGlkYXRpb25cclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TWF4VmFsdWUobmV3VmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5tYXhWYWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIC8vIG1hcmsgdGhpcyBjb250cm9sIGFzIHRvdWNoZWQgdG8gdHJpZ2dlciBmb3IgdmFsaWRhdGlvblxyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRQcm9wZXJ0eVZhbHVlKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuTWluVmFsdWUgPT0gJ3N0cmluZycgJiYgKHRoaXMuZGF0YS5NaW5WYWx1ZSBhcyBhbnkpLnRvU3RyaW5nKCkuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgdGhpcy5taW5WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSgodGhpcy5kYXRhLk1pblZhbHVlIGFzIGFueSkudG9TdHJpbmcoKSwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5taW5WYWx1ZSA9IHRoaXMuZGF0YS5NaW5WYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZGF0YS5NYXhWYWx1ZSA9PSAnc3RyaW5nJyAmJiAodGhpcy5kYXRhLk1heFZhbHVlIGFzIGFueSkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLm1heFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKCh0aGlzLmRhdGEuTWF4VmFsdWUgYXMgYW55KS50b1N0cmluZygpLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1heFZhbHVlID0gdGhpcy5kYXRhLk1heFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5zbGlkZXJEYXRhLlNtYWxsU3RlcCA9PSAnc3RyaW5nJyAmJiAodGhpcy5zbGlkZXJEYXRhLlNtYWxsU3RlcCBhcyBhbnkpLnRvU3RyaW5nKCkuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgdGhpcy5zbWFsbFN0ZXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoKHRoaXMuc2xpZGVyRGF0YS5TbWFsbFN0ZXAgYXMgYW55KS50b1N0cmluZygpLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNtYWxsU3RlcCA9IHRoaXMuc2xpZGVyRGF0YS5TbWFsbFN0ZXA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFsbFN0ZXAgPD0gMCB8fCBaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KHRoaXMuc21hbGxTdGVwKSkge1xyXG4gICAgICB0aGlzLnNtYWxsU3RlcCA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNsaWRlckRhdGEuTGFyZ2VTdGVwID09ICdzdHJpbmcnICYmICh0aGlzLnNsaWRlckRhdGEuTGFyZ2VTdGVwIGFzIGFueSkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLmxhcmdlU3RlcCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSgodGhpcy5zbGlkZXJEYXRhLkxhcmdlU3RlcCBhcyBhbnkpLnRvU3RyaW5nKCksIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubGFyZ2VTdGVwID0gdGhpcy5zbGlkZXJEYXRhLkxhcmdlU3RlcDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxhcmdlU3RlcCA8PSAwIHx8IFpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkodGhpcy5sYXJnZVN0ZXApKSB7XHJcbiAgICAgIHRoaXMubGFyZ2VTdGVwID0gNTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbGlkZXJEYXRhLlRpY2tQbGFjZW1lbnQgJiYgKHRoaXMuc2xpZGVyRGF0YS5UaWNrUGxhY2VtZW50IGFzIGFueSkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLnRpY2tQbGFjZW1lbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoKHRoaXMuc2xpZGVyRGF0YS5UaWNrUGxhY2VtZW50IGFzIGFueSkudG9TdHJpbmcoKSwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50aWNrUGxhY2VtZW50ID0gdGhpcy5zbGlkZXJEYXRhLlRpY2tQbGFjZW1lbnQgfHwgJ2JvdGgnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkTWluQW5kTWF4VmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZE1pbkFuZE1heFZhbGlkYXRvcigpIHtcclxuICAgIC8vIFNldHVwIGZvcm0gdmFsaWRhdG9yIGZvciBpb25pYyBjb21wb25lbnRzIG9ubHkgKEtlbmRvIGNvbXBvbmVudCB3aWxsIGJlIGF1dG8gc2V0dXApXHJcbiAgICBpZiAodGhpcy5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLm1pblZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWluKE51bWJlcih0aGlzLm1pblZhbHVlKSk7XHJcbiAgICAgICAgICBjb250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5taW5WYWxpZGF0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4VmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLm1heFZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWF4KE51bWJlcih0aGlzLm1heFZhbHVlKSk7XHJcbiAgICAgICAgICBjb250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5tYXhWYWxpZGF0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVNaW5BbmRNYXhWYWxpZGF0b3IoKSB7XHJcbiAgICB0aGlzLm1pblZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMubWF4VmFsdWUgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBpZiAodGhpcy5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuaGFzVmFsaWRhdG9yKHRoaXMubWluVmFsaWRhdG9yKSkge1xyXG4gICAgICAgICAgY29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKHRoaXMubWluVmFsaWRhdG9yKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbnRyb2wuaGFzVmFsaWRhdG9yKHRoaXMubWF4VmFsaWRhdG9yKSkge1xyXG4gICAgICAgICAgY29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKHRoaXMubWF4VmFsaWRhdG9yKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5WYWx1ZSB8fCAhdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV0pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgcmV0dXJuICFjb250cm9sLnZhbGlkICYmICFjb250cm9sLnVudG91Y2hlZCAmJiAhY29udHJvbC5kaXNhYmxlZCAmJiAhdGhpcy5mb3JtLnVudG91Y2hlZDtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6c2xpZGVyLWNvbnRhaW5lciBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCJcclxuICBbY2xhc3MuaGFzLWVycm9yLXdpdGgtdGlja109XCJ0aWNrUGxhY2VtZW50ICE9PSAnbm9uZScgJiYgaGFzRXJyb3JcIj5cclxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgIHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgPGtlbmRvLXNsaWRlciAjb3JpZW50YXRpb24gW2lkXT1cImRhdGEuTmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiIFt2ZXJ0aWNhbF09XCJzbGlkZXJEYXRhPy5Jc1ZlcnRpY2FsXCJcclxuICAgICAgW21pbl09XCJtaW5WYWx1ZVwiIFttYXhdPVwibWF4VmFsdWVcIiBbc21hbGxTdGVwXT1cInNtYWxsU3RlcFwiIFtsYXJnZVN0ZXBdPVwibGFyZ2VTdGVwXCIgW3RpY2tQbGFjZW1lbnRdPVwidGlja1BsYWNlbWVudFwiXHJcbiAgICAgIFtzaG93QnV0dG9uc109XCJzbGlkZXJEYXRhPy5TaG93QnV0dG9uc1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UobnVsbCwgJGV2ZW50KVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzPy5zdHlsZT8uc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj5cclxuICAgIDwva2VuZG8tc2xpZGVyPiZuYnNwO1xyXG5cclxuICAgIDxrZW5kby1udW1lcmljdGV4dGJveCBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiXHJcbiAgICAgIFtzcGlubmVyc109XCJkYXRhLlNob3dTcGlubmVyc1wiIFtzdGVwXT1cImRhdGEuU3RlcFZhbHVlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZShudWxsLCAkZXZlbnQpXCIgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPlxyXG4gICAgPC9rZW5kby1udW1lcmljdGV4dGJveD5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96c2xpZGVyL3pzbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNsaWRlci96c2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFXLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0UsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBQWMsZ0JBQWdCLEVBQXFDLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBUWxHLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBcUJsRCxZQUNTLGdCQUFtQztRQUUxQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUZqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBWnJDLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsYUFBUSxHQUF1QixDQUFDLENBQUM7UUFDakMsYUFBUSxHQUF1QixDQUFDLENBQUM7UUFHakMsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUN2QixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQU92QixDQUFDO0lBcEJELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQW9DLENBQUM7SUFDbkQsQ0FBQztJQW9CRCxRQUFRO1FBQ04sS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLHdHQUF3RztRQUN4RyxN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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0YsQ0FBQzs7NkdBN0xVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLGtJQ2Y3QixtakNBZUE7MkZEQWEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7d0dBS2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaRmllbGQsIFpHcm91cCwgelNsaWRlclByb3BlcnRpZXMgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenNsaWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pzbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pzbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpzbGlkZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrIHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGdldCBzbGlkZXJEYXRhKCk6IHpTbGlkZXJQcm9wZXJ0aWVzIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEgYXMgdW5rbm93biBhcyB6U2xpZGVyUHJvcGVydGllcztcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaW5wdXRNb2RlID0gXCJkZWNpbWFsXCI7XHJcbiAgcHVibGljIG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPSAwO1xyXG4gIHB1YmxpYyBtYXhWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcclxuICBwcml2YXRlIG1pblZhbGlkYXRvcjtcclxuICBwcml2YXRlIG1heFZhbGlkYXRvcjtcclxuICBwdWJsaWMgc21hbGxTdGVwID0gMTtcclxuICBwdWJsaWMgbGFyZ2VTdGVwID0gNTtcclxuICBwdWJsaWMgdGlja1BsYWNlbWVudCA9ICdib3RoJztcclxuICBwdWJsaWMgc2xpZGVydmFsdWUgPSAwO1xyXG4gIHByaXZhdGUgX2NhY2hlZFJlYWRPbmx5U3RhdGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICB0aGlzLnNldEluaXRQcm9wZXJ0eVZhbHVlKCk7XHJcblxyXG4gICAgLy8gV3JhcCBzZXRSZXF1aXJlIHRvIHJlLWFkZCBtaW4vbWF4IHZhbGlkYXRvcnMgYWZ0ZXIgdGhlIGJhc2UgcmVzZXRzIGFsbCB2YWxpZGF0b3JzIHZpYSBzZXRWYWxpZGF0b3JzKClcclxuICAgIGNvbnN0IG9yaWdpbmFsU2V0UmVxdWlyZSA9IHRoaXMuc2V0UmVxdWlyZTtcclxuICAgIHRoaXMuc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgICAgb3JpZ2luYWxTZXRSZXF1aXJlKHN0YXR1cyk7XHJcbiAgICAgIHRoaXMuYWRkTWluQW5kTWF4VmFsaWRhdG9yKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgRm9ybUNvbnRyb2wgZGlzYWJsZWQgc3RhdGUgcHJvZ3JhbW1hdGljYWxseSAoYXZvaWRzIFtkaXNhYmxlZF0gQW5ndWxhciB3YXJuaW5nKVxyXG4gICAgdGhpcy5fY2FjaGVkUmVhZE9ubHlTdGF0ZSA9IHRoaXMuZ2V0UmVhZE9ubHlTdGF0ZSgpO1xyXG4gICAgaWYgKHRoaXMuX2NhY2hlZFJlYWRPbmx5U3RhdGUpIHtcclxuICAgICAgdGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdPy5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBjb25zdCBjdXJyZW50UmVhZE9ubHkgPSB0aGlzLmdldFJlYWRPbmx5U3RhdGUoKTtcclxuICAgIGlmIChjdXJyZW50UmVhZE9ubHkgIT09IHRoaXMuX2NhY2hlZFJlYWRPbmx5U3RhdGUpIHtcclxuICAgICAgdGhpcy5fY2FjaGVkUmVhZE9ubHlTdGF0ZSA9IGN1cnJlbnRSZWFkT25seTtcclxuICAgICAgY29uc3QgZmMgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICAgIGlmIChmYykge1xyXG4gICAgICAgIGN1cnJlbnRSZWFkT25seSA/IGZjLmRpc2FibGUoKSA6IGZjLmVuYWJsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVtb3ZlTWluQW5kTWF4VmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlYWRPbmx5U3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmNvbXBvbmVudFByb3BlcnRpZXM/LmlzUmVhZE9ubHlGaWVsZFxyXG4gICAgICA/ICEhdGhpcy5ncm91cFt0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXVxyXG4gICAgICA6ICEhdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzPy5pc1JlYWRPbmx5O1xyXG4gIH1cclxuXHJcbiAgc2V0TWluVmFsdWUobmV3VmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5taW5WYWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIC8vIG1hcmsgdGhpcyBjb250cm9sIGFzIHRvdWNoZWQgdG8gdHJpZ2dlciBmb3IgdmFsaWRhdGlvblxyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNYXhWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heFZhbHVlID0gbmV3VmFsdWU7XHJcblxyXG4gICAgLy8gbWFyayB0aGlzIGNvbnRyb2wgYXMgdG91Y2hlZCB0byB0cmlnZ2VyIGZvciB2YWxpZGF0aW9uXHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdFByb3BlcnR5VmFsdWUoKSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZGF0YS5NaW5WYWx1ZSA9PSAnc3RyaW5nJyAmJiAodGhpcy5kYXRhLk1pblZhbHVlIGFzIGFueSkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLm1pblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKCh0aGlzLmRhdGEuTWluVmFsdWUgYXMgYW55KS50b1N0cmluZygpLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1pblZhbHVlID0gdGhpcy5kYXRhLk1pblZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhLk1heFZhbHVlID09ICdzdHJpbmcnICYmICh0aGlzLmRhdGEuTWF4VmFsdWUgYXMgYW55KS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHRoaXMubWF4VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoKHRoaXMuZGF0YS5NYXhWYWx1ZSBhcyBhbnkpLnRvU3RyaW5nKCksIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubWF4VmFsdWUgPSB0aGlzLmRhdGEuTWF4VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNsaWRlckRhdGEuU21hbGxTdGVwID09ICdzdHJpbmcnICYmICh0aGlzLnNsaWRlckRhdGEuU21hbGxTdGVwIGFzIGFueSkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICB0aGlzLnNtYWxsU3RlcCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSgodGhpcy5zbGlkZXJEYXRhLlNtYWxsU3RlcCBhcyBhbnkpLnRvU3RyaW5nKCksIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc21hbGxTdGVwID0gdGhpcy5zbGlkZXJEYXRhLlNtYWxsU3RlcDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYWxsU3RlcCA8PSAwIHx8IFpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkodGhpcy5zbWFsbFN0ZXApKSB7XHJcbiAgICAgIHRoaXMuc21hbGxTdGVwID0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuc2xpZGVyRGF0YS5MYXJnZVN0ZXAgPT0gJ3N0cmluZycgJiYgKHRoaXMuc2xpZGVyRGF0YS5MYXJnZVN0ZXAgYXMgYW55KS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHRoaXMubGFyZ2VTdGVwID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKCh0aGlzLnNsaWRlckRhdGEuTGFyZ2VTdGVwIGFzIGFueSkudG9TdHJpbmcoKSwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5sYXJnZVN0ZXAgPSB0aGlzLnNsaWRlckRhdGEuTGFyZ2VTdGVwO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGFyZ2VTdGVwIDw9IDAgfHwgWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eSh0aGlzLmxhcmdlU3RlcCkpIHtcclxuICAgICAgdGhpcy5sYXJnZVN0ZXAgPSA1O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNsaWRlckRhdGEuVGlja1BsYWNlbWVudCAmJiAodGhpcy5zbGlkZXJEYXRhLlRpY2tQbGFjZW1lbnQgYXMgYW55KS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHRoaXMudGlja1BsYWNlbWVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSgodGhpcy5zbGlkZXJEYXRhLlRpY2tQbGFjZW1lbnQgYXMgYW55KS50b1N0cmluZygpLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRpY2tQbGFjZW1lbnQgPSB0aGlzLnNsaWRlckRhdGEuVGlja1BsYWNlbWVudCB8fCAnYm90aCc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRNaW5BbmRNYXhWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkTWluQW5kTWF4VmFsaWRhdG9yKCkge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIC8vIFJlbW92ZSBleGlzdGluZyByZWZlcmVuY2VzIGZpcnN0IHRvIHByZXZlbnQgZHVwbGljYXRlcyBvbiByZS1hZGQgKGUuZy4gYWZ0ZXIgc2V0UmVxdWlyZSByZXNldHMgdmFsaWRhdG9ycylcclxuICAgICAgaWYgKHRoaXMubWluVmFsaWRhdG9yKSB7XHJcbiAgICAgICAgY29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKHRoaXMubWluVmFsaWRhdG9yKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tYXhWYWxpZGF0b3IpIHtcclxuICAgICAgICBjb250cm9sLnJlbW92ZVZhbGlkYXRvcnModGhpcy5tYXhWYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5taW5WYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBtaW4gPSBOdW1iZXIodGhpcy5taW5WYWx1ZSk7XHJcbiAgICAgICAgLy8gVXNlIG1pbkVycm9yIGtleSAobm90IEFuZ3VsYXIncyAnbWluJykgc28gZ2V0RXJyb3JNZXNzYWdlQnlFcnJvclR5cGUgcHJvZHVjZXMgdGhlIGNvcnJlY3QgbWVzc2FnZVxyXG4gICAgICAgIHRoaXMubWluVmFsaWRhdG9yID0gKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgICAgIGNvbnN0IHYgPSBjLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09ICcnKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIodikgPCBtaW4gPyB7IG1pbkVycm9yOiB7IG1pblZhbHVlOiBtaW4gfSB9IDogbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnRyb2wuYWRkVmFsaWRhdG9ycyh0aGlzLm1pblZhbGlkYXRvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm1heFZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG1heCA9IE51bWJlcih0aGlzLm1heFZhbHVlKTtcclxuICAgICAgICAvLyBVc2UgbWF4RXJyb3Iga2V5IChub3QgQW5ndWxhcidzICdtYXgnKSBzbyBnZXRFcnJvck1lc3NhZ2VCeUVycm9yVHlwZSBwcm9kdWNlcyB0aGUgY29ycmVjdCBtZXNzYWdlXHJcbiAgICAgICAgdGhpcy5tYXhWYWxpZGF0b3IgPSAoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdiA9IGMudmFsdWU7XHJcbiAgICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuIE51bWJlcih2KSA+IG1heCA/IHsgbWF4RXJyb3I6IHsgbWF4VmFsdWU6IG1heCB9IH0gOiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMubWF4VmFsaWRhdG9yKTtcclxuICAgICAgfVxyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTWluQW5kTWF4VmFsaWRhdG9yKCkge1xyXG4gICAgdGhpcy5taW5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubWF4VmFsdWUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIGlmIChjb250cm9sLmhhc1ZhbGlkYXRvcih0aGlzLm1pblZhbGlkYXRvcikpIHtcclxuICAgICAgICBjb250cm9sLnJlbW92ZVZhbGlkYXRvcnModGhpcy5taW5WYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmhhc1ZhbGlkYXRvcih0aGlzLm1heFZhbGlkYXRvcikpIHtcclxuICAgICAgICBjb250cm9sLnJlbW92ZVZhbGlkYXRvcnModGhpcy5tYXhWYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLlZhbHVlIHx8ICF0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICByZXR1cm4gIWNvbnRyb2wudmFsaWQgJiYgIWNvbnRyb2wudW50b3VjaGVkICYmICFjb250cm9sLmRpc2FibGVkICYmICF0aGlzLmZvcm0udW50b3VjaGVkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwienNsaWRlci1jb250YWluZXIgZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiXHJcbiAgICAgW2NsYXNzLmhhcy1lcnJvci13aXRoLXRpY2tdPVwidGlja1BsYWNlbWVudCAhPT0gJ25vbmUnICYmIGhhc0Vycm9yXCI+XHJcbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7ICB3aWR0aDogMTAwJTtcIj5cclxuICAgIDxrZW5kby1zbGlkZXIgI29yaWVudGF0aW9uIFtpZF09XCJkYXRhLk5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbdmVydGljYWxdPVwic2xpZGVyRGF0YT8uSXNWZXJ0aWNhbFwiXHJcbiAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluVmFsdWVcIiBbbWF4XT1cIm1heFZhbHVlXCIgW3NtYWxsU3RlcF09XCJzbWFsbFN0ZXBcIiBbbGFyZ2VTdGVwXT1cImxhcmdlU3RlcFwiIFt0aWNrUGxhY2VtZW50XT1cInRpY2tQbGFjZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0J1dHRvbnNdPVwic2xpZGVyRGF0YT8uU2hvd0J1dHRvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UobnVsbCwgJGV2ZW50KVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzPy5zdHlsZT8uc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj5cclxuICAgIDwva2VuZG8tc2xpZGVyPiZuYnNwO1xyXG5cclxuICAgIDxrZW5kby1udW1lcmljdGV4dGJveCBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NwaW5uZXJzXT1cImRhdGEuU2hvd1NwaW5uZXJzXCIgW3N0ZXBdPVwiZGF0YS5TdGVwVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZShudWxsLCAkZXZlbnQpXCIgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPlxyXG4gICAgPC9rZW5kby1udW1lcmljdGV4dGJveD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|